Y29tbWl0IGY5ODYzMjVkZDU2OWZhZWFlYzQxODZmNjc4ZDExMzUwNWM1YzQ4MjgKQXV0aG9yOiBSb24gTWFkcmlkIDxyb25fbWFkcmlkQHNiY2dsb2JhbC5uZXQ+CkRhdGU6CVR1ZSBKdW4gMSAxNzowMDo0OSAyMDEwIC0wNzAwCgogICAgVXBkYXRlIFNJQ1JMX1VTQkRSIHRvIHJlZmxlY3QgNCBkaWZmZXJlbnQgc2V0dGluZ3MKCiAgICBUaGlzIHBhdGNoIGNoYW5nZWQgdGhlIFNJQ1JMX1VTQkRSIGRlZmluZSB0byByZWZsZWN0IHRoZSA0IGRpZmZlcmVudCBiaXQKICAgIHNldHRpbmdzIGZvciB0aGlzIHR3by1iaXQgZmllbGQuICBUaGUgZm91ciBkaWZmZXJlbnQgb3B0aW9ucyBhcmUgJzAwJywgJzAxJywKICAgICcxMCcsIGFuZCAnMTEnLiAgVGhpcyBwYXRjaCBhbHNvIGNvcnJlY3RzIHRoZSBjb25maWcgZmlsZSBmb3IgU0lNUEM4MzEzIGFuZAogICAgTVBDODMxM0VSREIgZm9yIHRoZSBhcHByb3ByaWF0ZSBmaWVsZHMuICBUaGlzIGNoYW5nZSBvbmx5IGFmZmVjdHMgdGhlIE1QQzgzMTMKICAgIGNwdS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSb24gTWFkcmlkIDxyb25fbWFkcmlkQHNiY2dsb2JhbC5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDMwNTdjNmJlNWVmZGE3ODFhNzJjYTA0NDMyZTBhNGVkNmU2NzAwMzAKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgQXByIDIzIDEyOjIwOjExIDIwMTAgLTA1MDAKCiAgICBmZHRfc3VwcG9ydDogYWRkIGVudHJ5IGZvciBzZWMzLjEgYW5kIGZpeCBzZWMzLjMKCiAgICBBZGQgc2VjMy4xIGgvdyBnZW9tZXRyeSBmb3IgZmR0IG5vZGUgZml4dXBzLgoKICAgIEFsc28sIHRlY2huaWNhbGx5LCB3aGlsc3QgU0VDIHYzLjMgaC93IGhvbm91cnMgdGhlIHRsc19zc2xfc3RyZWFtIGRlc2NyaXB0b3IKICAgIHR5cGUsIGl0IGxhY2tzIHRoZSBBUkM0IGFsZ29yaXRobSBleGVjdXRpb24gdW5pdCByZXF1aXJlZCB0byBiZSBhYmxlCiAgICB0byBleGVjdXRlIGFueXRoaW5nIG1lYW5pbmdmdWwgd2l0aCBpdC4gIENoYW5nZSB0aGUgbm9kZSB0byBhZ3JlZSB3aXRoCiAgICB0aGUgZG9jdW1lbnRhdGlvbiB0aGF0IGRlY2xhcmVzIHRoYXQgdGhlIHNlYzMuMyByZWFsbHkgZG9lc24ndCBoYXZlIHN1Y2gKICAgIGEgZGVzY3JpcHRvciB0eXBlLgoKICAgIFJlcG9ydGVkLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNWY0ZDM2ODI1YTAyOGUzMDBiN2Q1NmE1NjZkMmNmODQ0MThiN2E2OApBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBNYXkgMjAgMTE6MTY6MTYgMjAxMCAtMDUwMAoKICAgIGZzbDogcmVuYW1lICdkbWEnIHRvICdicmRjZmcxJyBpbiB0aGUgbmdQSVhJUyBzdHJ1Y3R1cmUKCiAgICBUaGUgbmdQSVhJUyBpcyBhIGJvYXJkLXNwZWNpZmljIEZQR0EsIGJ1dCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgcmVnaXN0ZXJzCiAgICBpcyBtb3N0bHkgY29uc2lzdGVudC4gIE9uIGJvYXJkcyB3aGVyZSBpdCBtYXR0ZXIsIHJlZ2lzdGVyIDkgaXMgY2FsbGVkCiAgICAnYnJkY2ZnMScgaW5zdGVhZCBvZiAnZG1hJywgc28gcmVuYW1lIHRoZSB2YXJpYWJsZSBpbiB0aGUgbmdwaXhpc190CiAgICBkZWZpbml0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDZlMzdhMDQ0MDc2ODk2YmE4OGIwZDYzMTZmYWRkNDkyMDMyYzUxOTMKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTWF5IDIwIDEyOjQ1OjM5IDIwMTAgLTA1MDAKCiAgICBmc2wvODV4eDogYWRkIGNsa2R2ZHIgYW5kIHBtdXhjcjIgdG8gZ2xvYmFsIHV0aWxpdGllcyBzdHJ1Y3R1cmUgZGVmaW5pdGlvbgoKICAgIEFkZCB0aGUgJ2Nsa2R2ZHInIGFuZCAncG11eGNyMicgcmVnaXN0ZXJzIHRvIHRoZSA4NXh4IGRlZmluaXRpb24gb2YKICAgIHN0cnVjdCBjY3NyX2d1ci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAzOWMyMDk1NDZhYjViMTFjYTY0MTBjNWNjNTdkY2JmNDU3ZTUwODAwCkF1dGhvcjogVG9tIDxUb21AYnVtYmxlY293LmNvbT4KRGF0ZToJRnJpIE1heSAyOCAxMzoyMzoxNiAyMDEwIC0wNTAwCgogICAgQVJNIFVwZGF0ZSBtYWNoLXR5cGVzCgogICAgRmV0Y2hlZCBmcm9tIGh0dHA6Ly93d3cuYXJtLmxpbnV4Lm9yZy51ay9kZXZlbG9wZXIvbWFjaGluZXMvZG93bmxvYWQucGhwCiAgICBBbmQgYnVpbHQgd2l0aAoKICAgIHJlcG8gaHR0cDovL2Z0cC5hcm0ubGludXgub3JnLnVrL3B1Yi9saW51eC9hcm0va2VybmVsL2dpdC1jdXIvbGludXgtMi42LWFybQogICAgY29tbWl0IDNkZWZiMjQ3NjE2NjQ0NTk4MmE5MGMxMmQzM2Y4OTQ3ZTc1NDc2YzQKCiAgICBTaWduZWQtb2ZmLWJ5OiBUb20gPFRvbUBidW1ibGVjb3cuY29tPgoKY29tbWl0IDU1MWJkOTQ3YmQ2Zjk4MmZhMzhkZGU4NDA1NzZlYmE1MjM0NjE2MGMKQXV0aG9yOiBUb20gPFRvbUBidW1ibGVjb3cuY29tPgpEYXRlOglTdW4gTWF5IDkgMTY6NTg6MTEgMjAxMCAtMDUwMAoKICAgIEFSTSBVcGRhdGUgbWFjaC10eXBlcwoKICAgIEZldGNoZWQgZnJvbSBodHRwOi8vd3d3LmFybS5saW51eC5vcmcudWsvZGV2ZWxvcGVyL21hY2hpbmVzL2Rvd25sb2FkLnBocAogICAgQW5kIGJ1aWx0IHdpdGgKCiAgICByZXBvIGh0dHA6Ly9mdHAuYXJtLmxpbnV4Lm9yZy51ay9wdWIvbGludXgvYXJtL2tlcm5lbC9naXQtY3VyL2xpbnV4LTIuNi1hcm0KICAgIGNvbW1pdCAyNTdkYWI4MTQxM2IzMWI4NjQ4YmVjZmUxMTU4NmIzYTQxZTVjMjlhCgogICAgU2lnbmVkLW9mZi1ieTogVG9tIDxUb21AYnVtYmxlY293LmNvbT4KCmNvbW1pdCAxMTE3Y2JmMmFkYWM1OTA1MGFmMTc1MWFmNmM2YTUyNGFmYTVjM2VmCkF1dGhvcjogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgpEYXRlOglGcmkgTWF5IDI4IDEwOjU2OjUwIDIwMTAgKzA4MDAKCiAgICBuaW9zOiByZW1vdmUgbmlvcy0zMiBhcmNoCgogICAgVGhlIG5pb3MtMzIgYXJjaCBpcyBvYnNvbGV0ZSBhbmQgYnJva2VuLiBTbyBpdCBpcyByZW1vdmVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KCmNvbW1pdCA2ODAzMzM2YzlmMjFiYTQyOGY1YzFiMWNmODI1YmJiYWMwYTc2MmU1CkF1dGhvcjogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgpEYXRlOglGcmkgTWF5IDIxIDExOjA4OjAyIDIwMTAgKzA4MDAKCiAgICBuaW9zMjogYWxsb3cgU1RBTkRBTE9ORV9MT0FEX0FERFIgb3ZlcnJpZGluZwoKICAgIFRoaXMgcGF0Y2ggYWxsb3dzIHVzZXJzIHRvIG92ZXJyaWRlIGRlZmF1bHQgU1RBTkRBTE9ORV9MT0FEX0FERFIuCiAgICBUaGUgZ2NjbGliZGlyIHBhdGggd2FzIGR1cGxpY2F0ZWQgaW4gdGhlIHN0YW5kYWxvbmUgTWFrZWZpbGUgYW5kCiAgICBjYW4gYmUgcmVtb3ZlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KCmNvbW1pdCA4ZDUyZWE2ZGI0ODRjNjg5YTc1ZWY4YTM2YTRlNTI1NzUzYjhmMDc4CkF1dGhvcjogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgpEYXRlOglTYXQgTWF5IDE1IDA2OjAwOjA1IDIwMTAgKzA4MDAKCiAgICBuaW9zMjogZml4IGRpdjY0IGlzc3VlIGZvciBnY2M0CgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgcnVuLXRpbWUgZXJyb3Igb24gZGl2NjQgd2hlbiBidWlsdCB3aXRoCiAgICBnY2M0LCB3aGljaCB3YXMgcmVwb3J0ZWQgYnkgamh3dTA2MjUgb24gbmlvcyBmb3J1bS4gSXQgbWVyZ2VzCiAgICBtYXRoIHN1cHBvcnQgZnJvbSBsaWJnY2Mgb2YgZ2NjNC4gVGhpcyBwYXRjaCBpcyBjb3BpZWQgZnJvbQogICAgbmlvczItbGludXguCgogICAgSXQgd29ya3Mgd2l0aCBib3RoIGdjYzMgYW5kIGdjYzQuIFRoZSBvbGQgbXVsdC5jLCBkaXZtb2QuYyBhbmQKICAgIG1hdGguaCBhcmUgcmVtb3ZlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KCmNvbW1pdCAwZGYwMWZkM2Q3MTQ4MWI1Y2M3YWVlYTZhNzQxYjlmYzNiZTE1MTc4CkF1dGhvcjogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgpEYXRlOglGcmkgTWF5IDIxIDExOjA4OjAzIDIwMTAgKzA4MDAKCiAgICBuaW9zMjogZml4IHIxNSBpc3N1ZSBmb3IgZ2NjNAoKICAgIFRoZSAiLWZmaXhlZC1yMTUiIG9wdGlvbiBkb2Vzbid0IHdvcmsgd2VsbCBmb3IgZ2NjNC4gU2luY2Ugd2UKICAgIGRvbid0IHVzZSBncCBmb3Igc21hbGwgZGF0YSB3aXRoIG9wdGlvbiAiLUcwIiwgd2UgY2FuIHVzZSBncAogICAgYXMgZ2xvYmFsIGRhdGEgcG9pbnRlci4gVGhpcyBhbGxvd3MgY29tcGlsZXIgdG8gdXNlIHIxNS4gSXQKICAgIGlzIG5lY2Vzc2FyeSBmb3IgZ2NjNCB0byB3b3JrIHByb3Blcmx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgoKY29tbWl0IDY2MWJhMTQwNTFkYjY3NjY5MzJmY2I1MGJhMWVjN2M2N2YyMzAwNTQKQXV0aG9yOiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+CkRhdGU6CUZyaSBBcHIgMzAgMTE6MzQ6MTYgMjAxMCArMDgwMAoKICAgIHNwaTogYWRkIGFsdGVyYSBzcGkgY29udHJvbGxlciBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBkcml2ZXIgb2YgYWx0ZXJhIHNwaSBjb250cm9sbGVyLCB3aGljaCBpcwogICAgdXNlZCBhcyBlcGNzL3NwaSBmbGFzaCBjb250cm9sbGVyLiBJdCBhbHNvIHdvcmtzIHdpdGggbW1jX3NwaQogICAgZHJpdmVyLgoKICAgIFRoaXMgZHJpdmVyIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBzcGkgYnVzLCB3aXRoIGJhc2UgbGlzdCBkZWNsYXJlZAogICAgI2RlZmluZSBDT05GSUdfU1lTX0FMVEVSQV9TUElfTElTVCB7IEJBU0VfMCxCQVNFXzEsLi4uIH0KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+CiAgICBUZXN0ZWQtYnk6IElhbiBBYmJvdHQgPGFiYm90dGlAbWV2LmNvLnVrPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Cgpjb21taXQgMWU4ZTliYWQyZGIzOGU5M2MzYmM5ZjRiNjIzOGIzZDhiZTk5ZTQ2OQpBdXRob3I6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KRGF0ZToJRnJpIEFwciAzMCAxMTozNDoxNSAyMDEwICswODAwCgogICAgbmlvczI6IGFkZCBncGlvIHN1cHBvcnQgdG8gbmlvczItZ2VuZXJpYyBib2FyZAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBncGlvIHN1cHBvcnQgb2YgQWx0ZXJhIFBJTyBjb21wb25lbnQgdG8gdGhlCiAgICBuaW9zMi1nZW5lcmljIGJvYXJkLiBUaG91Z2ggaXQgZHJpdmVzIG9ubHkgZ3Bpb19sZWQgYXQgdGhlCiAgICBtb21lbnQsIGl0IHN1cHBvcnRzIGJpZGlyZWN0aW9uYWwgcG9ydCB0byBjb250cm9sIGJpdC1iYW5naW5nCiAgICBJMkMsIE5BTkQgZmxhc2ggYnVzeSBzdGF0dXMgb3IgYnV0dG9uIHN3aXRjaGVzLCBldGMuCgogICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgogICAgVGVzdGVkLWJ5OiBJYW4gQWJib3R0IDxhYmJvdHRpQG1ldi5jby51az4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgoKY29tbWl0IDNlNmI4NmI1NTUyODQwYmI0MTQ3ODcxYTc1Mzg0MGViMzkyMzM3NGMKQXV0aG9yOiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+CkRhdGU6CUZyaSBBcHIgMzAgMTE6MzQ6MTQgMjAxMCArMDgwMAoKICAgIG1pc2M6IGFkZCBncGlvIGJhc2VkIHN0YXR1cyBsZWQgZHJpdmVyCgogICAgVGhpcyBwYXRjaCBhZGRzIGEgc3RhdHVzIGxlZCBkcml2ZXIgZm9sbG93ZWQgdGhlIEdQSU8gYWNjZXNzCiAgICBjb252ZW50aW9ucyBvZiBMaW51eC4gVGhlIGxlZCBtYXNrIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgZ3BpbyBwaW4uCgogICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgogICAgVGVzdGVkLWJ5OiBJYW4gQWJib3R0IDxhYmJvdHRpQG1ldi5jby51az4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgoKY29tbWl0IGNlZGQzNDFkNTUxYjZiNzA1ZTk3YWIxOTUzYTg3NTc1YjlmZjllZjkKQXV0aG9yOiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+CkRhdGU6CUZyaSBBcHIgMzAgMTE6MzQ6MTMgMjAxMCArMDgwMAoKICAgIG5pb3MyOiBhZGQgZ3BpbyBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBhZGRzIGRyaXZlciBmb3IgYSB0cml2aWFsIGdwaW8gY29yZSwgd2hpY2ggaXMgZGVzY3JpYmVkCiAgICBpbiBodHRwOi8vbmlvc3dpa2kuY29tL0dQSU8uIEl0IGlzIHVzZWQgZm9yIGdwaW8gbGVkIGFuZCBuYW5kIGZsYXNoCiAgICBpbnRlcmZhY2UgaW4gdS1ib290LgoKICAgIFdoZW4gQ09ORklHX1NZU19HUElPX0JBU0UgaXMgbm90IGRlZmluZWQsIGJvYXJkIG1heSBwcm92aWRlCiAgICBpdHMgb3duIGRyaXZlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+CiAgICBUZXN0ZWQtYnk6IElhbiBBYmJvdHQgPGFiYm90dGlAbWV2LmNvLnVrPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Cgpjb21taXQgYWRmNTU2NzlhZjFlZDk4YzE1YTEzNmViODFkNjIwNGViZTc0MGIzMApBdXRob3I6IFdvbGZnYW5nIFdlZ25lciA8dy53ZWduZXJAYXN0cm8ta29tLmRlPgpEYXRlOglUdWUgTWFyIDMwIDE5OjE5OjUxIDIwMTAgKzAxMDAKCiAgICBhZGQgQ09ORklHX1NZU19GRUNfRlVMTF9NSUkgZm9yIE1DRjU0NDV4CgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGZ1bGwgTUlJIGludGVyZmFjZSBvbiBNQ0Y1NDQ1eCAoaW4gY29udHJhc3QKICAgIHRvIFJNSUkgYXMgdXNlZCBvbiB0aGUgZXZhbHVhdGlvbiBib2FyZHMpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIFdlZ25lciA8dy53ZWduZXIgYXQgYXN0cm8ta29tLmRlPgoKY29tbWl0IGFlNDkwOTk3NTVhZmZjOTQyMTcxYTc3MjdjMWIxMmM1MWQxNjdhYmYKQXV0aG9yOiBXb2xmZ2FuZyBXZWduZXIgPHcud2VnbmVyQGFzdHJvLWtvbS5kZT4KRGF0ZToJVHVlIE1hciAzMCAxOToxOTo1MCAyMDEwICswMTAwCgogICAgYWRkIENPTkZJR19TWVNfRkVDX05PX1NIQVJFRF9QSFkgZm9yIE1DRjU0NDV4CgogICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBwb3NzaWJpbGl0eSB0byBoYW5kbGUgc2VwZXJhdGUgUEhZcyB0byBNQ0Y1NDQ1eC4KICAgIE5hbWluZyBpcyBjaG9zZW4gdG8gcmVzZW1ibGUgdGhlIGNvbnRyYXJ5IENPTkZJR19GRUNfU0hBUkVEX1BIWSBpbiB0aGUKICAgIGxpbnV4IGtlcm5lbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBXZWduZXIgPHcud2VnbmVyIGF0IGFzdHJvLWtvbS5kZT4KCmNvbW1pdCBlOWI0M2NhZTFhMjBhZjEzZDFiYWViMTMwMzhiM2YzNDkwNWMxNGI1CkF1dGhvcjogV29sZmdhbmcgV2VnbmVyIDx3LndlZ25lckBhc3Ryby1rb20uZGU+CkRhdGU6CVR1ZSBNYXIgMzAgMTk6MjA6MzEgMjAxMCArMDEwMAoKICAgIGFkZCBtaXNzaW5nIFBDUzMgZm9yIE1DRjU0NDV4CgogICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBjb2RlIGZvciBoYW5kbGluZyBQQ1MzIChEU1BJIGNoaXAgc2VsZWN0IDMpIGluCiAgICBjcHVfaW5pdC5jIGFuZCBtNTQ0NXguaAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIFdlZ25lciA8dy53ZWduZXIgYXQgYXN0cm8ta29tLmRlPgoKY29tbWl0IGQwZmUxMTI4YzQ0NTEzMjdiOWNiMGZhYzFhNzZlZmQxOTRiMDc4YjUKQXV0aG9yOiBTZXJnZWkgU2h0eWx5b3YgPHNzaHR5bHlvdkBydS5tdmlzdGEuY29tPgpEYXRlOglXZWQgTWF5IDI2IDIxOjI2OjQzIDIwMTAgKzA0MDAKCiAgICBVU0I6IGZpeCBjcmVhdGVfcGlwZSgpCgogICAgY3JlYXRlX3BpcGUoKSBjYW4gZ2l2ZSB3cm9uZyByZXN1bHQgaWYgYW4gZXhwcmVzc2lvbiBpcyBwYXNzZWQgYXMgdGhlICdlbmRwb2ludCcKICAgIGFyZ3VtZW50IC0tIGR1ZSB0byBtaXNzaW5nIHBhcmVudGhlc2VzLgoKICAgIFRoYW5rcyB0byBNYXJ0aW4gTXVlbGxlciBmb3IgZmluZGluZyB0aGUgYnVnIGFuZCBwcm92aWRpbmcgdGhlIHBhdGNoLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBTaHR5bHlvdiA8c3NodHlseW92QHJ1Lm12aXN0YS5jb20+Cgpjb21taXQgYzk0MWI3N2FkYzQwZjM0NDIxNWUzNjdiM2QxZmM2MzhhZGRmZjg3MApBdXRob3I6IEFuZHJldyBDYWxkd2VsbCA8QW5kcmV3LkNhbGR3ZWxsQGFuYWxvZy5jb20+CkRhdGU6CUZyaSBNYXkgNyAxNToxMDowNyAyMDEwIC0wNDAwCgogICAgQmxhY2tmaW46IG5hbmQ6IGRyYWluIHRoZSB3cml0ZSBidWZmZXIgYmVmb3JlIHJldHVybmluZwoKICAgIFRoZSBjdXJyZW50IEJsYWNrZmluIG5hbmQgd3JpdGUgZnVuY3Rpb24gZmlsbHMgdXAgdGhlIHdyaXRlIGJ1ZmZlciBidXQKICAgIHJldHVybnMgYmVmb3JlIGl0IGhhcyBoYWQgYSBjaGFuY2UgdG8gZHJhaW4uICBPbiBmYXN0ZXIgc3lzdGVtcywgdGhpcwogICAgaXNuJ3QgYSBwcm9ibGVtIGFzIHRoZSBvcGVyYXRpb24gZmluaXNoZXMgYmVmb3JlIHRoZSBFQ0MgcmVnaXN0ZXJzIGFyZQogICAgcmVhZCwgYnV0IG9uIHNsb3dlciBzeXN0ZW1zIHRoZSBFQ0MgbWF5IGJlIGluY29tcGxldGUgd2hlbiB0aGUgY29yZSB0cmllcwogICAgdG8gcmVhZCBpdC4KCiAgICBTbyB3YWl0IGZvciB0aGUgYnVmZmVyIHRvIGRyYWluIG9uY2Ugd2UncmUgZG9uZSB3cml0aW5nIHRvIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBDYWxkd2VsbCA8QW5kcmV3LkNhbGR3ZWxsQGFuYWxvZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMDFmMDNiZGE1YjIyZTVhZWFlNWYwMmZkNTM3ZGE5N2E0MTQ4NWM3MwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBNYXkgMjYgMjM6NTc6MDggMjAxMCArMDIwMAoKICAgIFByZXBhcmUgdjIwMTAuMDYtcmMxCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjNDk3NjgwN2NiYmFiZDI4MWY0NTQ2NmFjNWU0N2U1NjM5YmNjOWNiCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIE1heSAyNiAyMzo1MToyMiAyMDEwICswMjAwCgogICAgQ29kaW5nIHN0eWxlIGNsZWFudXAsIHVwZGF0ZSBDSEFOR0VMT0cuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjN2RhOGMxOWI1ZjdmZDU4YjViNGIxZDI0NzY0ODg1MWFmNTZlMWYwCkF1dGhvcjogQW5kcmVhcyBCaWVzc21hbm4gPGFuZHJlYXMuZGV2ZWxAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVNhdCBNYXkgMjIgMTM6MTc6MjEgMjAxMCArMDIwMAoKICAgIGNvbmZpZy5tazogdXNlIGRpZmZlcmVudCBob3N0IGNvbXBpbGVyIGZvciBPUyBYIDEwLjYKCiAgICBDb21waWxpbmcgdG9vbHMgc3ViZGlyZWN0b3J5IG9uIE1hYyBPUyBYIDEwLjYgKFNub3cgTGVvcGFyZCkgY29tcGxhaW5zIGFib3V0CiAgICB3cm9uZyBzeW50YXggaW4gc3lzdGVtIGluY2x1ZGVzLgoKICAgIEluIGZpbGUgaW5jbHVkZWQgZnJvbSAvdXNyL2luY2x1ZGUvc3RkaW8uaDo0NDQsCgkJICAgICBmcm9tIC4uL3NvdXJjZS91LWJvb3QvaW5jbHVkZS9jb21waWxlci5oOjI2LAoJCSAgICAgZnJvbSAuLi9zb3VyY2UvdS1ib290L2xpYi9jcmMzMi5jOjE1OgogICAgL3Vzci9pbmNsdWRlL3NlY3VyZS9fc3RkaW8uaDo0NjogZXJyb3I6IHN5bnRheCBlcnJvciBpbiBtYWNybyBwYXJhbWV0ZXIgbGlzdAoKICAgIFRoaXMgY2FuIGJlIGZpeGVkIGJ5IHJldmVydGluZyB0aGUgd29ya2Fyb3VuZCBmb3IgcHJpb3IgT1MgWCByZWxlYXNlcyBpbgogICAgY29uZmlnLm1rIGNvbmRpdGlvbmFsbHkgZm9yIE9TIFggMTAuNisuCgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBCaWXfbWFubiA8YW5kcmVhcy5kZXZlbEBnb29nbGVtYWlsLmNvbT4KICAgIEFja2VkLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNmVjZTI1NTBkMWMwYzVjODExYjMwMmIxNjM5ZWEzNWMyZTQ4NTIwMwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CUZyaSBNYXkgMjEgMDQ6MTc6NDggMjAxMCAtMDUwMAoKICAgIENvbnZlcnQgTWFrZWZpbGVzIGZyb20gQ09CSlMtJHt9IHRvIENPQkpTLSQoKQoKICAgIE1hdGNoIHN0eWxlIHdlIHVzZSBhbG1vc3QgZXZlcnl3aGVyZSBlbHNlCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA1OWRkZTQ0YWNiODJlNTcxODA4MTkwY2NkM2NkNmI4MmRjOWQ3MDAxCkF1dGhvcjogTWljaGFlbCBXZWlzcyA8bWljaGFlbC53ZWlzc0BpZm0uY29tPgpEYXRlOglUaHUgTWF5IDIwIDE2OjA5OjM1IDIwMTAgKzAyMDAKCiAgICBwb3dlcnBjL2Jvb3Rjb3VudDogRml4IGVuZGlhbm5lc3MgcHJvYmxlbQoKICAgIEZvciBDT05GSUdfU1lTX0JPT1RDT1VOVF9TSU5HTEVXT1JEIHRoZSBjb2RlIGhhZCBhbiBlbmRpYW5uZXNzIHByb2JsZW0uCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBXZWlzcyA8bWljaGFlbC53ZWlzc0BpZm0uY29tPgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgZDc0ZGRhMDlmMDE3ODA3OTcwNWVlMWQ2NDE0NDRiYWM0NGQzZWNkOQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBNYXkgMjYgMjI6MTk6MzUgMjAxMCArMDIwMAoKICAgIGRtOTAwMHguYzogZml4IGNvbXBpbGUgcHJvYmxlbXMKCiAgICBVc2UgcmVhZFgoKSAvIHdyaXRlWCgpIGFjY2Vzc29ycyBpbnN0ZWFkIG9mIGluWCgpIC8gb3V0WCgpLgoKICAgIFN1Z2dlc3RlZC1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0MDc5MmQ2NzVhNjA5YzgzNjIxZDA5OGU0OGE4OWRlMDc0NjNiM2NkCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIE1heSAyMSAyMzoxNDo1MyAyMDEwICswMjAwCgogICAgYTMyMGV2YjogZml4IHVkZWxheSAvIF9fdWRlbGF5IGNvbmZ1c2lvbgoKICAgIEZpeCB0aGUgZm9sbG93aW5nIGNvbXBpbGVyIHByb2JsZW1zOgoKICAgIGFyY2gvYXJtL2NwdS9hcm05MjB0L2EzMjAvbGliYTMyMC5hKHRpbWVyLm8pOiBJbiBmdW5jdGlvbiBgdWRlbGF5JzoKICAgIC9ob21lL3dkL2dpdC91LWJvb3Qvd29yay9hcmNoL2FybS9jcHUvYXJtOTIwdC9hMzIwL3RpbWVyLmM6MTYwOiBtdWx0aXBsZSBkZWZpbml0aW9uIG9mIGB1ZGVsYXknCiAgICBsaWIvbGliZ2VuZXJpYy5hKHRpbWUubyk6L2hvbWUvd2QvZ2l0L3UtYm9vdC93b3JrL2xpYi90aW1lLmM6MzQ6IGZpcnN0IGRlZmluZWQgaGVyZQogICAgbGliL2xpYmdlbmVyaWMuYSh0aW1lLm8pOiBJbiBmdW5jdGlvbiBgdWRlbGF5JzoKICAgIHRpbWUuYzooLnRleHQrMHgxYyk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fdWRlbGF5JwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgOTIzODFjNDFjNzE4ZDI2MDQ3NmQ1YzYzNmM0NzNmNTBlM2I1YTc5YwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBNYXkgMjEgMjM6MTM6MTggMjAxMCArMDIwMAoKICAgIEFSTTogKi90aW1lci5jOiBmaXggc3BlbGxpbmcgYW5kIHZlcnRpY2FsIGFsaWdubWVudAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgM2Y3ODZiYjg1NDJlZTg1ZWE4OTgxNTJiNDBiMWYwZDk4ZjA4MDFkZgpBdXRob3I6IE1haGF2aXIgSmFpbiA8W21qYWluQG1hcnZlbGwuY29tXT4KRGF0ZToJRnJpIE1heSAyMSAxNDozNzo0OCAyMDEwICswNTMwCgogICAgYnVnZml4OiBHdXJ1cGx1ZzogVXNlIHN0YW5kYXJkIG1paXBoeQoKICAgIGNhbGwgdG8gcmVzZXQgUEhZIGNoaXAuCgogICAgQ3VycmVudCBQSFkgU29mdHdhcmUgUmVzZXQgb3BlcmF0aW9uIGluIGd1cnVwbHVnIGRvZXMgbm90CiAgICBwb2xsIHJlc2V0IGJpdCBpbiBjb250cm9sIHJlZ2lzdGVyIHRvIGdvIHRvIDAoYXV0byBjbGVhcmluZykKICAgIGZvciBtYWtpbmcgc3VyZSByZXNldCB3YXMgc3VjY2Vzc2Z1bC5UaGlzIHBhdGNoIHVzZXMgc3RhbmRhcmQKICAgIG1paXBoeSBjYWxsIG1paXBoeV9yZXNldCB0byBtYWtlIHN1cmUgcHJvcGVyIFBIWSByZXNldCBvcGVyYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogTWFoYXZpciBKYWluIDxtamFpbkBtYXJ2ZWxsLmNvbT4KCmNvbW1pdCA3MWJkODYwY2NlNDQ5M2M1ZGVmMDc4MDQ3MjM2NjFlNzUyNzEwNTJiCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE1heSAxOSAxNzowNjo0NiAyMDEwIC0wNTAwCgogICAgbXBjODN4eDogZG9uJ3Qgc2hpZnQgcHJlLXNoaWZ0ZWQgQUNSLCBTUENSLCBTQ0NSIGJpdGZpZWxkIG1hc2tzIGluIGNwdV9pbml0LmMKCiAgICBjb21taXQgYzcxOTBmMDI4ZmE5NTBkNGQzNmI2ZDBiNGJiM2ZjNzI2MDJlYzU0YyAibXBjODN4eDoKICAgIHJldGFpbiBQT1IgdmFsdWVzIG9mIG5vbi1jb25maWd1cmVkIEFDUiwgU1BDUiwgU0NDUiwgYW5kIExDUlIKICAgIGJpdGZpZWxkcyIgaW5jb3JyZWN0bHkgc2hpZnRlZCA8cmVnaXN0ZXI+XzxiaXRmaWVsZD4gKGUuZy4KICAgIEFDUl9QSVBFX0RFUCkgdmFsdWVzIHRoYXQgd2VyZSBwcmVzaGlmdGVkIGJ5IHRoZWlyCiAgICBkZWZpbml0aW9uIGluIG1wYzgzeHguaC4KCiAgICB0aGlzIHBhdGNoIHJlbW92ZXMgdGhlIHVubmVjZXNzYXJ5IHNoaWZ0aW5nIGZvciB0aGUgbmV3bHkKICAgIHV0aWxpemVkIG1hc2sgdmFsdWVzIGluIGNwdV9pbml0LmMsIGFuZCBwcmV2ZW50cyBzZWVtaW5nbHkKICAgIHVucmVsYXRlZCBzeW1wdG9tcyBzdWNoIGFzIGFuIG1wYzgzNzllcmRiIGJvYXJkIGZyb20KICAgIGxvY2tpbmcgdXAgd2hpbHN0IHBlcmZvcm1pbmcgYSBuZXR3b3JraW5nIG9wZXJhdGlvbiwKICAgIGUuZy4gYSB0ZnRwLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjY5NzBkMGM1NDViOTEzNGFmM2IzNDdjNzVlZTNkMTM1NDViMzZkOApBdXRob3I6IEhvcnN0IEtyb25zdG9yZmVyIDxoa3JvbnN0b0BmcmVxdWVudGlzLmNvbT4KRGF0ZToJVHVlIE1heSAxOCAxMDozNzowNSAyMDEwICswMjAwCgogICAgRml4ZWQgdHdvIHR5cG9zIGluIGFyY2gvcG93ZXJwYy9jcHUvbXBjODN4eC9zdGFydC5TLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhvcnN0IEtyb25zdG9yZmVyIDxoa3JvbnN0b0BmcmVxdWVudGlzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNDQ1MDkzZDE3NWIwNjIyNjU0OTY4MGI2ODk0OTIzYmIwZjVlNTBmYQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBOb3YgMTcgMjE6Mjc6MzkgMjAwOSArMDEwMAoKICAgIEZpeCAicGFyW3RdaXRpb24iIHR5cG8uCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBiZGM1ZjA2Nzg5YzVhMGMzYTlhMmMwZWIzM2VjNGQxNzdkYmRhYTIyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gTWF5IDE3IDEwOjAxOjA1IDIwMTAgKzAyMDAKCiAgICBVQkk6IEZpeCBwcm9ibGVtIGluIFVCSS9MaW51eCAiY29tcGF0aWJpbGl0eSBsYXllciIKCiAgICAiZG93bl93cml0ZV90cnlsb2NrIiBuZWVkcyB0byByZXR1cm4gMSBpbnN0ZWFkIG9mIDAgZm9yIHN1Y2Nlc3MuCiAgICBPdGhlcndpc2UgY29weWluZyBhIGJsb2NrIHdpdGggYSByZWFkIGVycm9yIChlLmcuIGJpdC1mbGlwIG9uIHJlYWQpCiAgICB3b24ndCB3b3JrIGNvcnJlY3RseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMWIxZjlhOWQwMDQ0N2Q5ZWFiMzJhZTU2MzNmNjBhMTA2MTk2Yjc1ZgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE1heSAxNyAxMDowMDo1MSAyMDEwICswMjAwCgogICAgVUJJOiBFbnN1cmUgdGhhdCAiYmFja2dyb3VuZCB0aHJlYWQiIG9wZXJhdGlvbnMgYXJlIHJlYWxseSBleGVjdXRlZAoKICAgIFRoZSBjdXJyZW50IFUtQm9vdCBVQkkgaW1wbGVtZW50YXRpb24gaXMgY29waWVkIGZyb20gTGludXguIEluIHRoaXMKICAgIHBvcnRpbmcgdGhlIFVCSSBiYWNrZ3JvdW5kIHRocmVhZCB3YXMgbm90IGhhbmRsZWQgY29ycmVjdGx5LiBVcG9uIHdyaXRlCiAgICBvcGVyYXRpb25zIHViaV93bF9mbHVzaCgpIG1ha2VzIHN1cmUsIHRoYXQgYWxsIHF1ZXVlZCBvcGVyYXRpb25zLCBsaWtlCiAgICBwYWdlLWVyYXNlLCBhcmUgY29tcGxldGVkLiBCdXQgdGhpcyBpcyBtaXNzaW5nIGZvciByZWFkIG9wZXJhdGlvbnMuCgogICAgVGhpcyBwYXRjaCBub3cgbWFrZXMgc3VyZSB0aGF0IHN1Y2ggb3BlcmF0aW9ucyAobGlrZSBzY3J1YmJpbmcgdXBvbgogICAgYml0LWZsaXAgZXJyb3JzKSBhcmUgbm90IHF1ZXVlZCwgYnV0IGV4ZWN1dGVkIGRpcmVjdGx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwM2FmNWFiZDg1NjM3ZDI3ZTk2ZmI5OTljZTZlMzk5MjI5MzU3MGIwCkF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CVRodSBNYXkgMTMgMTA6MjY6NDAgMjAxMCArMDIwMAoKICAgIE1YMzE6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBDYXNpbyBDT001N0g1TTEwWFJDIHRvIFFPTkcKCiAgICBUaGUgcGF0Y2ggYWRkcyBzZXR1cCB0byBjb25uZWN0IGEgQ0FTSU8gQ09NNTdINU0xMFhSQwogICAgKDY0MHg0ODAgVEZUIGRpc3BsYXkpIHRvIHRoZSBRT05HIG1vZHVsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KCmNvbW1pdCAyZjA1ZTM5NGZjY2Y2MmE0NjkzYzZiODMyM2RlNzI1ZjkwZDFmMDAzCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIE1heSAxNyAyMzozNDoxOCAyMDEwICswMjAwCgogICAgZnNsX2RpdV9mYi5jOiBmaXggYnVpbGQgd2FybmluZ3MKCiAgICBDb21taXQgMTUzNTE4NTUgImZzbC1kaXU6IFVzaW5nIEkvTyBhY2Nlc3NvciB0byBDQ1NSIHNwYWNlIiBjYXVzZWQgYQogICAgbnVtYmVyIG9mICJwYXNzaW5nIGFyZ3VtZW50IDIgb2YgJ291dF9iZTMyJyBtYWtlcyBpbnRlZ2VyIGZyb20gcG9pbnRlcgogICAgd2l0aG91dCBhIGNhc3QiIHdhcm5pbmdzOyBmaXggdGhlc2UuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIENjOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgQ2M6IEplcnJ5IEh1YW5nIDxDaGFuZy1NaW5nLkh1YW5nQGZyZWVzY2FsZS5jb20+CiAgICBDYzogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmMmQ3NmFlNGZkZGUxODBlMTIwZWEyZDI5ZDZlZjg4MTM2MGIzY2JhCkF1dGhvcjogTmljayBUaG9tcHNvbiA8bmljay50aG9tcHNvbkBnZS5jb20+CkRhdGU6CVR1ZSBNYXkgMTEgMTE6Mjk6NTIgMjAxMCArMDEwMAoKICAgIEF2b2lkIHVzZSBvZiBkaXZpZGVzIGluIHByaW50X3NpemUKCiAgICBNb2RpZmljYXRpb24gb2YgcHJpbnRfc2l6ZSB0byBhdm9pZCB1c2Ugb2YgZGl2aWRlcyBhbmQgZXNwZWNpYWxseQogICAgbG9uZyBsb25nIGRpdmlkZXMuIEtlZXAgdGhlIGJpbmFyeSBzY2FsZSBmYWN0b3IgaW4gdGVybXMgb2YgYml0CiAgICBzaGlmdHMgaW5zdGVhZC4gVGhpcyBzaG91bGQgYmUgZmFzdGVyLCBzaW5jZSB0aGUgcHJldmlvdXMgY29kZQogICAgZ2F2ZSB0aGUgY29tcGlsZXIgbm8gY2x1ZXMgdGhhdCB0aGUgZGl2aWRlcyB3aGVyZSBhbHdheXMgcG93ZXJzCiAgICBvZiB0d28sIHByZXZlbnRpbmcgb3B0aW1pc2F0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pY2sgVGhvbXBzb24gPG5pY2sudGhvbXBzb25AZ2UuY29tPgogICAgQWNrZWQtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYTU5OWNkZTc2OThhY2M1YWUzZDBmNzMxYjRhN2Q2M2E5MzFhYWU2MwpBdXRob3I6IFNlcmdlIFppcnl1a2luIDxmdHJ2eG10cnhAZ21haWwuY29tPgpEYXRlOglNb24gTWF5IDEwIDE3OjQwOjQ5IDIwMTAgKzAzMDAKCiAgICBsYW45MWM5Niwgc21jOTExeDogcmVtb3ZlIHVzZWxlc3MgZnJlZShwdHIpIGNhbGxzIG9uIE5VTEwgcHRyCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2UgWmlyeXVraW4gPGZ0cnZ4bXRyeEBnbWFpbC5jb20+Cgpjb21taXQgYjFlMWE0MmJiMWVhMmYwZGRhYWVhN2Y0YzlkNjdjOThhYjM4NzA5ZQpBdXRob3I6IFJvbiBNYWRyaWQgPHJvbl9tYWRyaWRAc2JjZ2xvYmFsLm5ldD4KRGF0ZToJRnJpIE1heSAxNCAxNjoyNzo0OCAyMDEwIC0wNzAwCgogICAgRml4IFNJQ1JMIHNldHRpbmcgaW4gU0lNUEM4MzEzCgogICAgVGhpcyBwYXRjaCBzZXRzIHRoZSBTSUNSTF9MQkMgYml0cyBpbiBTSUNSTCB0byBjaGFuZ2UgdGhlIGZ1bmN0aW9uIG9mIHRoZQogICAgYXNzb2NpYXRlZCBwaW5zIHRvIEdQSU8gZnVuY3Rpb25hbGl0eS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSb24gTWFkcmlkIDxyb25fbWFkcmlkQHNiY2dsb2JhbC5uZXQ+Cgpjb21taXQgYTRiZmM0Y2M0NjY0NzNiOTdjN2ZlODRiZGYyNjFiMjkzNTg4N2UzZgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBNYXkgMTQgMTM6MTg6NTQgMjAxMCAtMDUwMAoKICAgIG1wYzgzeHg6IGZpeCBOQU5EIGJvb3RzdHJhcCB0b28gYmlnIGVycm9yCgogICAgY29tbWl0IDE2N2NkYWQxMzcyOTE3YmMxMWM2MzZjMzU5YWFkMDI2MjUyOTFmYTkgIlNFUklBTDogRW5hYmxlCiAgICBwb3J0LW1hcHBlZCBhY2Nlc3MiIGluYWR2ZXJ0ZW50bHkgYnJva2UgODN4eCBuYW5kIGJvYXJkcyBieQogICAgY29udmVydGluZyBOUzE2NTUwX2luaXQgdG8gdXNlIGlvIGFjY2Vzc29ycywgd2hpY2ggZXhwYW5kZWQKICAgIHRoZSBzaXplIG9mIHRoZSBnZW5lcmF0ZWQgY29kZS4KCiAgICB0aGlzIHBhdGNoIGZpeGVzIHRoZSBwcm9ibGVtIGJ5IHJlbW92aW5nIGljYWNoZSBmdW5jdGlvbnMgZnJvbQogICAgdGhlIG5hbmQgYnVpbGRzLCB3aGljaCBzb21ld2hhdCBmb2xsb3dzIGNvbW1pdAogICAgMWEyZTIwM2IzMWQzM2ZiNzIwZjJjZjEwMzNiMjQxYWQzNmFiNDA1YSAibXBjODN4eDogdHVybiBvbiBpY2FjaGUKICAgIGluIGNvcmUgaW5pdGlhbGl6YXRpb24gdG8gaW1wcm92ZSB1LWJvb3QgYm9vdCB0aW1lIgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZTc0MjQ0YzVhMWM4YmNlYTliMDQ3MjE3Mjc3ZGNkMzIzNWEyODVmNApBdXRob3I6IFJvbiBNYWRyaWQgPHJvbl9tYWRyaWRAc2JjZ2xvYmFsLm5ldD4KRGF0ZToJTW9uIE1heSAxMCAxNToyMzoyMCAyMDEwIC0wNzAwCgogICAgUmVtb3ZhbCBvZiBjaGVja2JvYXJkIGZyb20gc3BsIGJvb3RzdHJhcCBidWlsZCBmb3IgU0lNUEM4MzEzCgogICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSBjaGVja2JvYXJkIGZ1bmN0aW9uIGZyb20gdGhlIGJ1aWxkIG9mCiAgICB0aGUgNGsgYm9vdHN0cmFwIHNlY3Rpb24gZm9yIHRoZSBTSU1QQzgzMTMgYXMgaXQgaXMgbm90IG5lZWRlZAogICAgaW4gdGhlIHNwbCBidWlsZC4gIFRoaXMgd2lsbCBhbGxvdyA+IDEwMCBieXRlcyBvZiBleHRyYSByb29tCiAgICBmb3Igb3RoZXIgdXNlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSb24gTWFkcmlkIDxyb25fbWFkcmlkQHNiY2dsb2JhbC5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDljM2YyZDY2NzBlNjE1MWY0ZjYzMjlmNTcyYTYyYjBkMmQ2NzY4Y2UKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgpEYXRlOglUdWUgTWF5IDExIDA5OjU0OjAwIDIwMTAgKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBidWlsZGluZyBQTFU0MDUgYm9hcmQKCiAgICBEdWUgdG8gc29tZSBvdmVybGFwcGluZyBzZWN0aW9ucyBpdCdzIHRpbWUgdG8gdXBkYXRlIFRFWFRfQkFTRQogICAgZm9yIHRoaXMgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhMmEwYTcxNzEzMDNkZTVkOGNlMDk5MzQ0ZWZkZTJlMjllZTM2ZWIwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IE1heSAxNSAyMToyMzo1MSAyMDEwICswMjAwCgogICAgTWFrZWZpbGU6IGZpeCBvdXQtb2YtdHJlZSBidWlsZGluZyBvZiAidS1ib290LmltZyIgdGFyZ2V0CgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAyZTRmMzVkYmQ4ZTExYzMxMjFhZjk5ZWE4ZTA0Y2U0ZmIzOWU5YTRlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IE1heSAxNSAyMDoyMjoyMSAyMDEwICswMjAwCgogICAgTVZCTE03LCBNVlNNUjogZml4IE1ha2VmaWxlIChjbGVhbnVwIGJvb3RzY3JpcHQuaW1nKQoKICAgIEZpeCBNVkJMTTcgYW5kIE1WU01SIE1ha2VmaWxlcyBmb3IgY29ycmVjdCBvdXQtb2YtdHJlZSBidWlsZGluZwogICAgKGNyZWF0ZSAiYm9vdHNjcmlwdC5pbWciIGluIGJ1aWxkIGRpcmVjdG9yeSBpbnN0ZWFkIG9mIHNvdXJjZQogICAgZGlyZWN0b3J5KSBhbmQgY2xlYW51cCAocmVtb3ZlICJib290c2NyaXB0LmltZyIgd2hlbiBjbGVhbmluZyB1cCkuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIENjOiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Cgpjb21taXQgY2Q0YjAyYmUxYmI3MzJmMzk5MDgwMWZmODFiNTdiZDU5N2IxZDViNgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBNYXkgMTAgMjM6MDg6MDIgMjAxMCArMDIwMAoKICAgIEFSTTogYWRkIF9fYWVhYmlfdW53aW5kX2NwcF9wcjAoKSBmdW5jdGlvbiB0byBhdm9pZCBsaW5rZXIgY29tcGxhaW50cwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBUZXN0ZWQtYnk6IFRob21hcyBXZWJlciA8d2ViZXJAY29yc2NpZW5jZS5kZT4KCmNvbW1pdCA3YjQzZGI5MjExMGVjMmYxNWM1ZjcxODdhMTY1ZjI5Mjg0NjQ5NjZiCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIE1heSA5IDIzOjUyOjU5IDIwMTAgKzAyMDAKCiAgICBkcml2ZXJzL21tYy9mc2xfZXNkaGMuYzogZml4IGNvbXBpbGVyIHdhcm5pbmdzCgogICAgQ29tbWl0IDc3YzE0NThkIGNhdXNlZCB0aGUgZm9sbG93aW5nIGNvbXBpbGVyIHdhcm5pbmdzOgoKICAgIGZzbF9lc2RoYy5jOiBJbiBmdW5jdGlvbiAnZXNkaGNfcGlvX3JlYWRfd3JpdGUnOgogICAgZnNsX2VzZGhjLmM6MTQyOiB3YXJuaW5nOiBhc3NpZ25tZW50IGRpc2NhcmRzIHF1YWxpZmllcnMgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlCiAgICBmc2xfZXNkaGMuYzogSW4gZnVuY3Rpb24gJ2VzZGhjX3NldHVwX2RhdGEnOgogICAgZnNsX2VzZGhjLmM6MTY5OiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ3dtbF92YWx1ZScKICAgIGZzbF9lc2RoYy5jOiBJbiBmdW5jdGlvbiAnZXNkaGNfcGlvX3JlYWRfd3JpdGUnOgogICAgZnNsX2VzZGhjLmM6MTY0OiB3YXJuaW5nOiBjb250cm9sIHJlYWNoZXMgZW5kIG9mIG5vbi12b2lkIGZ1bmN0aW9uCgogICAgRml4IHRoZXNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBDYzogRGlwZW4gRHVkaGF0IDxkaXBlbi5kdWRoYXRAZnJlZXNjYWxlLmNvbT4KICAgIENjOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYmNiNmMyYmI4NDcwNWJmZDczZWVkNWM5YTMxZTlmZjI0ODMzZWU4YwpBdXRob3I6IFlvcmsgU3VuIDx5b3Jrc3VuQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBNYXkgNyAwOToxMjowMSAyMDEwIC0wNTAwCgogICAgRW5hYmxlZCBzdXBwb3J0IGZvciBSZXYgMS4zIFNQRCBmb3IgRERSMiBESU1NcwoKICAgIFNQRCBoYXMgbWlub3IgY2hhbmdlIGZyb20gUmV2IDEuMiB0byAxLjMuIFRoaXMgcGF0Y2ggZW5hYmxlcyBSZXYgMS4zLgogICAgVGhlIGRpZmZlcmVuY2UgaGFzIGJlbiBleGFtaW5lZCBhbmQgdGhlIGNvZGUgaXMgY29tcGF0aWJsZS4KICAgIFNwZWVkIGJpbnMgaXMgbm90IHZlcmlmaWVkIG9uIGhhcmR3YXJlIGZvciBDTDcgYXQgdGhpcyBtb21lbnQuCgogICAgVGhpcyBwYXRjaCBhbHNvIGVuYWJsZXMgU1BEIFJldiAxLnggd2hlcmUgeCBpcyB1cCB0byAiRiIuIEFjY29yZGluZyB0byBTUEQKICAgIHNwZWMsIHRoZSBsb3dlciBuaWJibGUgaXMgb3B0aW9uYWxseSB1c2VkIHRvIGRldGVybWluZSB3aGljaCBhZGRpdGluYWwgYnl0ZXMKICAgIG9yIGF0dHJpYnV0ZSBiaXRzIGhhdmUgYmVlbiBkZWZpbmVkLiBTb2Z0d2FyZSBjYW4gc2FmZWx5IHVzZSBkZWZhdWx0cy4gSG93ZXZlciwKICAgIHRoZSB1cHBlciBuaWJibGUgc2hvdWxkIGFsd2F5cyBiZSBjaGVja2VkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFlvcmsgU3VuIDx5b3Jrc3VuQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGY1NGZlODdhY2VkYmJhZDdkMjlhZDE4Y2FiMzFkMmIzMjM3MTc1MTQKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgQXByIDIwIDEwOjIxOjI1IDIwMTAgLTA1MDAKCiAgICA4NXh4L2ZzbC1zYXRhOiBVc2UgaXNfc2VyZGVzX2NvbmZpZ3VyZWQoKSB0byBkZXRlcm1pbmUgaWYgU0FUQSBpcyBlbmFibGVkCgogICAgT24gdGhlIE1QQzg1eHggcGxhdGZvcm0gaWYgd2UgaGF2ZSBTQVRBIGl0cyBjb25uZWN0ZWQgb24gU0VSREVTLgogICAgRGV0ZXJtaW5nIGlmIFNBVEEgaXMgZW5hYmxlZCB2aWEgc2F0YV9pbml0aWFsaXplIHNob3VsZCBub3QgYmUgYm9hcmQKICAgIHNwZWNpZmljIGFuZCB0aHVzIHdlIG1vdmUgaXQgb3V0IG9mIHRoZSBNUEM4NTM2RFMgYm9hcmQgY29kZS4KCiAgICBBZGRpdGlvbmFsbHksIG5vdyB0aGF0IHdlIGhhdmUgaXNfc2VyZGVzX2NvbmZpZ3VyZWQoKSB3ZSBjYW4gZGV0ZXJtaW5lCiAgICBpZiB0aGUgZ2l2ZW4gU0FUQSBwb3J0IGlzIGVuYWJsZWQgYW5kIGVycm9yIG91dCBpZiBpdHMgbm90IGluIHRoZQogICAgZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNTQ2NDg5ODVlMmE2NGUyOTc4NGUzZWQzN2NkNDViNjM3MzA1Y2Q2NQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBcHIgMjAgMTA6MjE6MTIgMjAxMCAtMDUwMAoKICAgIDg1eHgvbXBjODUzNmRzOiBVc2UgaXNfc2VyZGVzX2NvbmZpZ3VyZWQoKSB0byBkZXRlcm1pbmUgb2YgUENJZSBlbmFibGVkCgogICAgVGhlIG5ldyBpc19zZXJkZXNfY29uZmlndXJlZCBjb3ZlcnMgYSBicm9hZGVyIHJhbmdlIG9mIGRldmljZXMgdGhhbiB0aGUKICAgIFBDSSBzcGVjaWZpYyBjb2RlLglVc2UgaXQgaW5zdGVhZCBhcyB3ZSBjb252ZXJ0IGF3YXkgZnJvbSB0aGUKICAgIGlzX2ZzbF9wY2lfY2ZnKCkgY29kZS4KCiAgICBBZGRpdGlvbmFsbHkgbW92ZSB0byBzZXR0aW5nIExBV3MgZm9yIFBDSSBiYXNlZCBvbiBpZiBpdHMgY29uZmlndXJlZC4KICAgIEFsc28gdXBkYXRlZCBQQ0kgRkRUIGZpeHVwIGNvZGUgdG8gcmVtb3ZlIFBDSSBjb250cm9sbGVycyBmcm9tIGR0YiBpZgogICAgdGhleSBhcmUgY29uZmlndXJlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDZhYjQwMTFiNzk2ZTBhZjEzMGNhMTYwZWEzYzY3NGQ0NjJmM2JlYzQKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgQXByIDIwIDEwOjIwOjMzIDIwMTAgLTA1MDAKCiAgICA4NXh4OiBBZGQgaXNfc2VyZGVzX2NvbmZpZ3VyZWQoKSBzdXBwb3J0IHRvIE1QQzg1MzYgU0VSREVTCgogICAgQWRkIHRoZSBhYmlsaXR5IHRvIGRldGVybWluZSBpZiBhIGdpdmVuIElQIGJsb2NrIGNvbm5lY3RlZCBvbiBTRVJERVMgaXMKICAgIGNvbmZpZ3VyZWQuICBUaGlzIGlzIHVzZWZ1bCBmb3IgdGhpbmdzIGxpa2UgUENJZSBhbmQgU1JJTyBzaW5jZSB0aGV5IGFyZQogICAgb25seSBldmVyIGNvbm5lY3RlZCBvbiBTRVJERVMuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAxNTM1MTg1NTc3NmYzMmQ0MGQ5YzMzNmMwZGM2ZDIyYTdiY2Y0MGMyCkF1dGhvcjogSmVycnkgSHVhbmcgPENoYW5nLU1pbmcuSHVhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEFwciA4IDE1OjU2OjA3IDIwMTAgKzA4MDAKCiAgICBmc2wtZGl1OiBVc2luZyBJL08gYWNjZXNzb3IgdG8gQ0NTUiBzcGFjZQoKICAgIFVzaW5nIFBQQyBJL08gYWNjZXNzb3IgdG8gRElVIEkvTyBzcGFjZSBpbnN0ZWFkIG9mIGRpcmVjdGx5CiAgICByZWFkL3dyaXRlLiBJdCB3aWxsIHByZXZlbnQgdGhlIGRvemVuIG9mIGNvbXBpbGVyIG9yZGVyIGlzc3VlCiAgICBhbmQgUFBDIGhhcmR3YXJlIG9yZGVyIGlzc3VlIGZvciBhY2Nlc3NpbmcgSS9PIHNwYWNlLgoKICAgIFVzaW5nIHRoZSB0b29sY2hhaW4odGMtZnNsLXg4NmxueC1lNTAwLWRwLTQuMy43NC0yLmkzODYucnBtKQogICAgY2FuIHNob3cgdXAgdGhlIG9yZGVyIGlzc3VlIG9mIERJVSBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEplcnJ5IEh1YW5nIDxDaGFuZy1NaW5nLkh1YW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGZkMTk0ZjgyZDFjMzA4MDJmMDU5N2EzZTM1OWZkYzAzZWQzOTczNjcKQXV0aG9yOiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+CkRhdGU6CU1vbiBNYXkgMyAxMzoyMjozMSAyMDEwICswMjAwCgogICAgbXBjODN4eC9tdkJMTTc6IGFkZCB1c2IgY29tbWFuZHMgYW5kIGNsZWFudXAuCgogICAgQWRkIFVTQiBjb21tYW5kcy4KICAgIFJlbmFtZSBhdXRvc2NyaXB0IHRvIGJvb3RzY3JpcHQuCiAgICBBZGQgYXV0b21hdGljIGJvb3RzY3JpcHQgaW1hZ2UgZ2VuZXJhdGlvbiB0byBtYWtlZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDNiNDM5NzkyYjA3ODE5MjFjNTk5ZDhhZjliZWQ2YTc3MWQyOTViNTMKQXV0aG9yOiBSb24gTWFkcmlkIDxyb25fbWFkcmlkQHNiY2dsb2JhbC5uZXQ+CkRhdGU6CVdlZCBBcHIgMjggMTY6MDQ6NDMgMjAxMCAtMDcwMAoKICAgIG1wYzgzeHg6IEFkZCBVUE1BIGNvbmZpZ3VyYXRpb24gdG8gU0lNUEM4MzEzCgogICAgQWRkZWQgVVBNIGFycmF5IHRhYmxlLCB1cG1jb25maWcsIGFuZCBMb2NhbCBCdXMgY29uZmlndXJhdGlvbiBzdXBwb3J0IGZvciBTSU1QQzgzMTMKCiAgICBTaWduZWQtb2ZmLWJ5OiBSb24gTWFkcmlkIDxyb25fbWFkcmlkQHNiY2dsb2JhbC5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDU3OTQ2MTllMjljNWUyMjI4MGIwYjA5YjJlYTZiYzNkMmUwMGRhM2YKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBNYXkgNSAwNDozMjo0MyAyMDEwIC0wNDAwCgogICAgc2VyaWFsOiBwdW50IHVudXNlZCBzZXJpYWxfYWRkcigpCgogICAgT25seSBvbmUgZmlsZSBhcHBhcmVudGx5IGRlZmluZXMgdGhpcyBmdW5jdGlvbiwgYW5kIGl0IG1lcmVseSBzdHVicwogICAgaXQgb3V0LiBTbyBpZiBubyBvbmUgaXMgZGVmaW5pbmcvY2FsbGluZyBpdCwgcHVudCBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZjc0NTgxN2U3NDFlNDI1MWFmYmQ5ZDVkN2YwNGIyNDE5ZjRhYTlkOQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIEFwciAyNyAxNDoxNTozNCAyMDEwIC0wNDAwCgogICAgdXBkYXRlIGluY2x1ZGUvYXNtLyBnaXRpZ25vcmUgYWZ0ZXIgbW92ZQoKICAgIFdpdGggdGhlIGNwdSBpbmNsdWRlIHBhdGhzIG1vdmVkLCB0aGUgZ2l0aWdub3JlIHBhdGhzIG5lZWQgdXBkYXRpbmcuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgVGVzdGVkLWJ5OiBUb20gUml4IDx0b21AYnVtYmxlY293LmNvbT4KCmNvbW1pdCBkMDE3OTA4M2E5YzllMTJjOGM1NDAwYjEwNzE1NmMxNGM3ZGExMjIyCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEFwciAyOCAwMjo1MjowMiAyMDEwIC0wNTAwCgogICAgRml4dXAgbmF0aXZlIGJ1aWxkcyBvbiBwb3dlcnBjCgogICAgV2hlbiB3ZSBjaGFuZ2VkIEFSQ0ggZnJvbSBwcGMgdG8gcG93ZXJwYyB3ZSBuZWVkIHRvIHRyZWF0IEhPU1RBUkNIIHRoZQogICAgc2FtZSB3YXkuICBXZSB1c2UgSE9TVEFSQ0ggPT0gQVJDSCB0byBkZXRlcm1pbmUgaWYgYSBidWlsZCBpcyBuYXRpdmUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA2NWQzNDI1NDFlNzhhYjlhMjJiZjQ4MGNjNGZlMmY2NTlmOTRiYWQ0CkF1dGhvcjogU2VyZ2UgWmlyeXVraW4gPGZ0cnZ4bXRyeEBnbWFpbC5jb20+CkRhdGU6CVN1biBBcHIgMjUgMjE6MzI6MzYgMjAxMCArMDMwMAoKICAgIGNtZF91c2IuYzogc2hvdyBjbWQgdXNhZ2UgaWYgbm8gYXJncyBnaXZlbgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlIFppcnl1a2luIDxmdHJ2eG10cnhAZ21haWwuY29tPgoKY29tbWl0IGU0YTk1ZDExMmU1ZWE4MzY4YmZiZGFjNmZmOTYzZDFiOGRjNjNjZjAKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBBcHIgMjggMTA6NDc6MzYgMjAxMCArMDIwMAoKICAgIHBvd2VycGM6IENvbnNvbGlkYXRlIGJvb3Rjb3VudF97c3RvcmV8bG9hZH0gZm9yIFBvd2VyUEMKCiAgICBUaGlzIHBhdGNoIGNvbnNvbGlkYXRlcyBib290Y291bnRfe3N0b3JlfGxvYWR9IGZvciBQb3dlclBDIGJ5CiAgICBpbXBsZW1lbnRpbmcgYSBjb21tb24gdmVyc2lvbiBpbiBhcmNoL3Bvd2VycGMvbGliL2Jvb3Rjb3VudC5jLiBUaGlzCiAgICBjb2RlIGlzIG5vdyB1c2VkIGJ5IGFsbCBQb3dlclBDIHZhcmlhbnRzIHRoYXQgY3VycmVudGx5IGhhdmUgdGhlc2UKICAgIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZC4KCiAgICBUaGUgZnVuY3Rpb25zIG5vdyB1c2UgdGhlIHByb3BlciBJTy1hY2Nlc3NvciBmdW5jdGlvbnMgdG8gcmVhZC93cml0ZSB0aGUKICAgIHZhbHVlcy4KCiAgICBUaGlzIGNvZGUgYWxzbyBzdXBwb3J0cyB0d28gZGlmZmVyZW50IGJvb3Rjb3VudCB2ZXJzaW9uczoKCiAgICBhKSBVc2UgMiBzZXBhcmF0ZSB3b3JkcyAoMiAqIDMyYml0KSB0byBzdG9yZSB0aGUgYm9vdGNvdW50ZXIKICAgIGIpIFVzZSBvbmx5IDEgd29yZCAoMiAqIDE2Yml0KSB0byBzdG9yZSB0aGUgYm9vdGNvdW50ZXIKCiAgICBWZXJzaW9uIGIpIHdhcyBhbHJlYWR5IHVzZWQgYnkgTVBDNXh4eC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBBY2tlZC1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+CiAgICBBY2tlZC1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCSAgICAgIGZvciA4M3h4IHBhcnRzCiAgICBDYzogTWljaGFlbCBaYWlkbWFuIDxtaWNoYWVsLnphaWRtYW5AZ21haWwuY29tPgogICAgQ2M6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBDYzogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KICAgIENjOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgNzY3ZmRjNGFmNjg0NzcwZjVlOTdhNmM1ZTE5YThhYzI2MTZiODMyOQpBdXRob3I6IEVuZGVyLkRhaSA8ZW5kZXIuZGFpQGdtYWlsLmNvbT4KRGF0ZToJVGh1IEFwciAyMiAxNToyNDoyNSAyMDEwICswODAwCgogICAgZHJpdmVycy8qL01ha2VmaWxlOiBmaXggY29uZGl0aW9uYWwgY29tcGlsZSBydWxlLgoKICAgIEZpeCBjb25kaXRpb25hbCBjb21waWxlIHJ1bGUgZm9yIHR3bDQwMzAuYyBhbmQgdmlkZW9tb2Rlcy5jLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVuZGVyLkRhaSA8ZW5kZXIuZGFpQGdtYWlsLmNvbT4KCmNvbW1pdCA1NGZhMmM1YjUxYzU2NGNjZTcxNjk0MmQyNjQ5MjQzNzQ1Nzk4MGE0CkF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CkRhdGU6CVR1ZSBBcHIgMjAgMDg6MDk6NDMgMjAxMCAtMDQwMAoKICAgIE1vdmUgdGVzdCBmb3IgdW5uZWNlc3NhcnkgbWVtbW92ZSB0byBtZW1tb3ZlX3dkKCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KCmNvbW1pdCBiMDUwYzcyZDUyYzRlMzBkNWI5NzhhYjY3NThmOGRjZGJlNWM2OTBjCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgQXByIDIwIDA1OjQ5OjMwIDIwMTAgLTA0MDAKCiAgICBjb21waWxlci5oOiBhZGQgdWludCB0eXBlZGVmCgogICAgUmVjZW50IGNyYyBjaGFuZ2VzIHN0YXJ0ZWQgdXNpbmcgdGhlICJ1aW50IiB0eXBlIGluIGhlYWRlcnMgdGhhdCBhcmUgdXNlZAogICAgb24gdGhlIGJ1aWxkIHN5c3RlbS4gIFRoaXMgc3Vic2VxdWVudGx5IGJyb2tlIG1pbmd3IHRhcmdldHMgYXMgdGhleSBkbyBub3QKICAgIHByb3ZpZGUgc3VjaCBhIHR5cGUuICBTbyBhZGQgdGhpcyBiYXNpYyB0eXBlZGVmIHRvIGNvbXBpbGVyLmggc28gdGhhdCB3ZQogICAgZG8gbm90IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhpcyBicmVha2luZyBhZ2FpbiBpbiB0aGUgZnV0dXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAzOWY3YWFjZjNmZDI4NWI0MmI5MmMyYzJkNjZkOTUzMzlhMzU2OWNjCkF1dGhvcjogVHLDvGJlbmJhY2gsIFJhbGYgPFJhbGYuVHJ1ZWJlbmJhY2hAbWVuLmRlPgpEYXRlOglXZWQgQXByIDE0IDExOjE1OjE2IDIwMTAgKzAyMDAKCiAgICBjb21tYW5kLmM6IEVuYWJsZSBhdXRvIHRhYiBmb3IgdGhlIGVkaXRlbnYgY29tbWFuZAoKICAgIEVuYWJsZSB0aGUgYXV0byBjb21wbGV0aW9uICh3aXRoIFRBQikgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWUKICAgIGFmdGVyIHRoZSBlZGl0ZW52IGNvbW1hbmQuCgogICAgU2lnbmVkLW9mZi1ieTogUmFsZiBUcvxiZW5iYWNoIDxyYWxmLnRydWViZW5iYWNoQG1lbi5kZT4KCmNvbW1pdCAwNzM4ZTI0ZTJjMWQ5NWJiOTQ0NTVkNDQ0ODVkYzVkN2I5YzlkNzA3CkF1dGhvcjogUmVpbmhhcmQgQXJsdCA8cmVpbmhhcmQuYXJsdEBlc2QuZXU+CkRhdGU6CVR1ZSBBcHIgMTMgMDk6NTk6MDkgMjAxMCArMDIwMAoKICAgIDc0eHhfN3h4OiBDUENJNzUwOiBBZGQgRUNDIHN1cHBvcnQgb24gZXNkIENQQ0ktQ1BVLzc1MCBib2FyZAoKICAgIEFkZCBFQ0Mgc3VwcG9ydCBmb3IgRERSIFJBTSBmb3IgTVY2NDM2MCBvbiBlc2QgQ1BDSS1DUFUvNzUwIGJvYXJkLgoKICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIHRoZSAicGxkdmVyIiBjb21tYW5kIHRvIGRpc3BsYXkgdGhlIENQTEQKICAgIHJldmlzaW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJlaW5oYXJkIEFybHQgPHJlaW5oYXJkLmFybHRAZXNkLmV1PgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDFmOWYzY2Y2Y2NiY2NhZTFjMWVkZmYwMWVjMjBmZTJhNTg2Yjk3MDEKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglTYXQgQXByIDI0IDAwOjA2OjAwIDIwMTAgKzEwMDAKCiAgICBzYzUyMDogRml4IG1pbm9yIERSQU0gQ29udHJvbGxlciBTZXR1cCBidWcKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgoKY29tbWl0IGQyMDA1M2VmZGYzMjhkOTdhMDE4NTM2Njg5ZmM1NWRmNGZhZjEwOTQKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglTYXQgQXByIDI0IDAwOjA1OjU5IDIwMTAgKzEwMDAKCiAgICBzYzUyMDogVXBkYXRlIHRvIG5ldyBBTUQgQ29weXJpZ2h0CgogICAgQU1EIHJlY2VudGx5IGNoYW5nZWQgdGhlIGxpY2Vuc2luZyBvZiB0aGUgUkFNIHNpemluZyBjb2RlIHRvIHRoZQogICAgR1BMdjIgKG9yIGF0IHlvdXIgb3B0aW9uIGFueSBsYXRlciB2ZXJzaW9uKQoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Cgpjb21taXQgODgwYzU5ZTVhZGQzNjgxYmQ0ZGNhMTRkMmZkMjAxNTJiZWU3YWQxNApBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CVNhdCBBcHIgMjQgMDA6MDU6NTggMjAxMCArMTAwMAoKICAgIGVORVQ6IEltcGxlbWVudCBlTkVUIFdhdGNoZG9nCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KCmNvbW1pdCBmMmE1NTA1NWU5YjE5ZjNlYmE5ZGU5N2ZmNDU0Y2Y4YmZlZjI1NDY4CkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJU2F0IEFwciAyNCAwMDowNTo1NyAyMDEwICsxMDAwCgogICAgZU5FVDogVXNlIFNDNTIwIE1NQ1IgdG8gcmVzZXQgZU5FVCBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Cgpjb21taXQgNGE0YzMxYWUwOGQ0ZGNhYmUzNDgwMTNlMTM1ZGUyOGIwMWMyOWJmMApBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CVNhdCBBcHIgMjQgMDA6MDU6NTYgMjAxMCArMTAwMAoKICAgIGVORVQ6IEFkZCBQQy9BVCBjb21wYXRpYmlsaXR5IHNldHVwIGZ1bmN0aW9uCgogICAgVGhlIGVORVQgdXNlcyB0aGUgc2M1MjAgc29mdHdhcmUgdGltZXJzIHJhdGhlciB0aGFuIHRoZSBQQy9BVCBjbG9uZXMKCiAgICBTZXQgYWxsIGludGVycnVwdHMgYW5kIHRpbWVycyB1cCB0byBiZSBQQy9BVCBjb21wYXRpYmxlCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KCmNvbW1pdCA4ZmQ4MDU2MzJmOTVlNWU4MzRmMzEyYTUxYWE5NjliZjFkOTljNDFiCkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJU2F0IEFwciAyNCAwMDowNTo1NSAyMDEwICsxMDAwCgogICAgZU5FVDogQWRkIHN1cHBvcnQgZm9yIG9uYm9hcmQgUlRMODEwMEIgKFJUTDgxMzkpIGNoaXBzCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KCmNvbW1pdCAyMWU2N2U3OTZiYjFkNTlhNDg0ZGNlMmI0MjAzZDYxYmYxZmQ1YmU4CkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJU2F0IEFwciAyNCAwMDowNTo1NCAyMDEwICsxMDAwCgogICAgc2M1MjA6IEJvYXJkIFNwZWNpZmljIFBDSSBJbml0CgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KCmNvbW1pdCAwMjc4MjE2Yjc2ZmMxZTVkYmY0Y2JkMTBkNWQ3MzQzMjMwMzljMzZmCkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJU2F0IEFwciAyNCAwMDowNTo1MyAyMDEwICsxMDAwCgogICAgc2M1MjA6IE1vdmUgUENJIGRlZmluZXMgdG8gUENJIGluY2x1ZGUgZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Cgpjb21taXQgNGYxOTdjMzBlNWNiMzAwNTkwOTQwMmI3ZmM2MzBjYjA5MmVlZjAyZgpBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CVNhdCBBcHIgMjQgMDA6MDU6NTIgMjAxMCArMTAwMAoKICAgIGVORVQ6IEZpeCBDT05GSUdfU1lTX0haIHRvIGJlIDEwMDAKCiAgICBUaGUgY2xvY2sgaW50ZXJ1cHQgaGFzIGFsd2F5cyBiZWVuIDFrSHogYXMgcGVyIHRpbWVyX2luaXQoKSBpbgogICAgL2FyY2gvaTM4Ni9jcHUvc2M1MjAvc2M1MjBfdGltZXIuYwoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Cgpjb21taXQgNmZkNDQ1YzMyODYwYmIwNmU5YTY4YjUxNjg0NWExYmJmN2MzNzg4OQpBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CVNhdCBBcHIgMjQgMDA6MDU6NTEgMjAxMCArMTAwMAoKICAgIGVORVQ6IEZpeCBGbGFzaCBXcml0ZQoKICAgIE9uYm9hcmQgQU1EIEZsYXNoIGNoaXAgZG9lcyBub3Qgc3VwcG9ydCBidWZmZXJlZCB3cml0ZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgoKY29tbWl0IDUyMDQ1NjZlNTNhM2M1MTllODc5NTQ4MGQwNTY2MzViYzY0YjExY2QKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglTYXQgQXByIDI0IDAwOjA1OjUwIDIwMTAgKzEwMDAKCiAgICBzYzUyMDogQWxsb3cgYm9hcmRzIHRvIG92ZXJyaWRlIHVkZWxheQoKICAgIElmIHRoZSBib2FyZCBoYXMgYSBoaWdoIHByZWNpc2lvbiBtaWNvLXNlY29uZCB0aW1lciwgaXQgbWFrZWQgc2Vuc2UgdG8gdXNlCiAgICBpdCBpbnN0ZWFkIG9mIHRoZSBvbi1jaGlwIG9uZQoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Cgpjb21taXQgOTVmZmFiYTM5MDQyMDY0YzVlYjY4NDA0ODk0ZmQ2YjBmMWQ2YTNlMwpBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CVNhdCBBcHIgMjQgMDA6MDU6NDkgMjAxMCArMTAwMAoKICAgIHg4NjogRml4IHN1cHBvcnQgZm9yIGJvb3RpbmcgYnpJbWFnZQoKICAgIEFkZCBzdXBwb3J0IGZvciBuZXdlciAodXAgdG8gMi42LjMzKSBrZXJuZWxzCgogICAgQWRkIHpib290IGNvbW1hbmQgd2hpY2ggdGFrZXMgdGhlIGFkZHJlc3Mgb2YgYSBiekltYWdlIGFzIGl0cyBmaXJzdAogICAgYXJndW1lbnQgYW5kIChvcHRpb25hbGx5KSB0aGUgc2l6ZSBvZiB0aGUgYnpJbWFnZSBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50CiAgICAodGhlIHNlY29uZCBhcmd1bWVudCBpcyBuZWVkZWQgZm9yIG9sZGVyIGtlcm5lbHMgd2hpY2ggZG8gbm90IGluY2x1ZGUKICAgIHRoZSBiekltYWdlIHNpemUgaW4gdGhlIGhlYWRlcikKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgoKY29tbWl0IDc5ZWE2Yjg3MDExYzA1MjRjZWQzMTM1OWUyYmU3YWFjOTdjMjlkMGEKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglTYXQgQXByIDI0IDAwOjA1OjQ4IDIwMTAgKzEwMDAKCiAgICB4ODY6IFByb3ZpZGUgd2VhayBQQy9BVCBjb21wYXRpYmlsaXR5IHNldHVwIGZ1bmN0aW9uCgogICAgSXQgaXMgcG9zc2libHkgdG8gc2V0dXAgeDg2IGJvYXJkcyB0byB1c2Ugbm9uLVBDL0FUIGNvbmZpZ3VyYXRpb25zLiBGb3IKICAgIGV4YW1wbGUsIHRoZSBzYzUyMCBpcyBhbiB4ODYgQ1BVIHdpdGggUEMvQVQgYW5kIG5vbi1QQy9BVCBwZXJpcGhlcmFscy4KICAgIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoZSBib2FyZCB0byBzZXQgaXRzZWxmIHVwIGZvciBtYXhpbXVtIFBDL0FUCiAgICBjb21wYXRpYmlsaXR5IGp1c3QgYmVmb3JlIGJvb3RpbmcgdGhlIExpbnV4IGtlcm5lbCAodGhlIExpbnV4IGtlcm5lbAogICAgJ2p1c3Qgd29ya3MnIGlmIGV2ZXJ5dGhpbmcgaXMgUEMvQVQgY29tcGxpYW50KQoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Cgpjb21taXQgYmYxNjUwMGY3OWZkZjI2NTNhMjg2YjQwYmI2MDFjYjE4NWFjNDY3NQpBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CVNhdCBBcHIgMjQgMDA6MDU6NDcgMjAxMCArMTAwMAoKICAgIHg4NjogVXNlIENPTkZJR19TRVJJQUxfTVVMVEkKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgoKY29tbWl0IDE2N2NkYWQxMzcyOTE3YmMxMWM2MzZjMzU5YWFkMDI2MjUyOTFmYTkKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglTYXQgQXByIDI0IDAwOjA1OjQ2IDIwMTAgKzEwMDAKCiAgICBTRVJJQUw6IEVuYWJsZSBwb3J0LW1hcHBlZCBhY2Nlc3MKCiAgICBUaGUgeDg2IGFyY2hpdGVjdHVyZSBleGNsdXNpdmVseSB1c2VzIFBvcnQtTWFwcGVkIEkvTyAoaW5iL291dGIpIHRvIGFjY2VzcwogICAgdGhlIDE2NTUwIFVBUlRzLiBUaGlzIHBhdGNoIG1pbWljcyBob3cgTGludXggc2VsZWN0cyBiZXR3ZWVuIE1lbW9yeS1NYXBwZWQKICAgIGFuZCBQb3J0LU1hcHBlZCBJL08uIFRoaXMgYWxsb3dzIHg4NiBib2FyZHMgdG8gdXNlIENPTkZJR19TRVJJQUxfTVVUTEkgYW5kCiAgICBkcm9wIHRoZSBjdXN0b20gc2VyaWFsIHBvcnQgZHJpdmVyCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KCmNvbW1pdCAxNTNjMmQ5ZjIzOTdlOGI2Y2EwM2NmZWJiNGU5NjY2ZWEwYjA2MzdjCkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJU2F0IEFwciAyNCAwMDowNTo0NSAyMDEwICsxMDAwCgogICAgeDg2OiBGaXggY29weWluZyBvZiBSZWFsLU1vZGUgY29kZSBpbnRvIFJBTQoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Cgpjb21taXQgMmZiMWJjNGY1MzYxODc0M2I5MmE0ODc2M2Q3YWFhMGVjZTlhZDk4ZgpBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CVNhdCBBcHIgMjQgMDA6MDU6NDQgMjAxMCArMTAwMAoKICAgIHg4NjogUGFzcyByZWxvY2F0aW9uIG9mZnNldCBpbnRvIEdsb2JhbCBEYXRhCgogICAgSW4gb3JkZXIgdG8gbG9jYXRlIHRoZSAxNi1iaXQgQklPUyBjb2RlLCB3ZSBuZWVkIHRvIGtub3cgdGhlIHJlbG9hY3Rpb24KICAgIG9mZnNldC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgoKY29tbWl0IGMxNGEzNjY5YjIyZDNlNDMwYjQxNmNkZWU5MmI3NTFmMTM2OTdhMWYKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglTYXQgQXByIDI0IDAwOjA1OjQzIDIwMTAgKzEwMDAKCiAgICB4ODY6IE1vdmUgR0RUIHRvIGEgc2FmZSBsb2NhdGlvbiBpbiBSQU0KCiAgICBDdXJyZW50bHksIHRoZSBHRFQgaXMgZWl0aGVyIGxvY2F0ZWQgaW4gRkxBU0ggb3IgaW4gdGhlIG5vbi1yZWxvY2F0ZWQKICAgIFUtQm9vdCBpbWFnZSBpbiBSQU0uIEJvdGggb2YgdGhlc2UgbG9jYXRpb25zIGFyZSB1bnNhZmUgYXMgdGhvc2UKICAgIGxvY2F0aW9ucyBjYW4gYmUgZXJhc2VkIGR1cmluZyBhIFUtQm9vdCB1cGRhdGUuIE1vdmUgdGhlIEdEVCBpbnRvIHRoZQogICAgaGlnaGVzdCBhdmFpbGFibGUgbWVtb3J5IGxvY2F0aW9uIGFuZCByZWxvY2F0ZSBVLUJvb3QgdG8ganVzdCBiZWxvdyBpdAoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Cgpjb21taXQgMDc3ZTE5NThjYTRhZmUxMmQ4ODA0M2IxMjNkZWQwNThjNTFiODlmNwpBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CVNhdCBBcHIgMjQgMDA6MDU6NDIgMjAxMCArMTAwMAoKICAgIHg4NjogQWRkIFJBTSBib290c3RyYXAgZnVuY3Rpb25hbGl0eQoKICAgIEFkZCBhIHBhcmFtZXRlciB0byB0aGUgMzItYml0IGVudHJ5IHRvIGluZGljYXRlIGlmIGVudHJ5IGlzIGZyb20gUmVhbAogICAgTW9kZSBvciBub3QuIElmIGVudHJ5IGlzIGZyb20gUmVhbCBNb2RlLCBleGVjdXRlIHRoZSBkZXN0cnVjdGl2ZSAnc2l6ZXInCiAgICByb3V0aW5lIHRvIGRldGVybWluZSBtZW1vcnkgc2l6ZSBhcyB3ZSBhcmUgYm9vdGluZyBjb2xkIGFuZCBydW5uaW5nIGluCiAgICBGbGFzaC4gSWYgbm90IGVudGVyaW5nIGZyb20gUmVhbCBNb2RlLCB3ZSBhcmUgZXhlY3V0aW5nIGEgVS1Cb290IGltYWdlCiAgICBmcm9tIFJBTSBhbmQgdGhlcmVmb3JlIHRoZSBtZW1vcnkgc2l6ZSBpcyBhbHJlYWR5IGtub3duIChhbmQgcnVubmluZwogICAgJ3NpemVyJyB3aWxsIGRlc3Ryb3kgdGhlIHJ1bm5pbmcgaW1hZ2UpCgogICAgVGhlcmUgYXJlIG5vdyB0d28gMzItYml0IGVudHJ5IHBvaW50cy4gVGhlIGZpcnN0IGlzIHRoZSAnaW4gUkFNJyBlbnRyeQogICAgcG9pbnQgd2hpY2ggZXhpc3RzIGF0IHRoZSBzdGFydCBvZiB0aGUgVS1Cb290IGJpbmFyeSBpbWFnZS4gQXMgc3VjaCwKICAgIHlvdSBjYW4gbG9hZCB1LWJvb3QuYmluIGluIFJBTSBhbmQganVtcCBkaXJlY3RseSB0byB0aGUgbG9hZCBhZGRyZXNzCiAgICB3aXRob3V0IG5lZWRpbmcgdG8gY2FsY3VsYXRlIGFueSBvZmZzZXRzLiBUaGUgc2Vjb25kIGVudHJ5IHBvaW50IGlzCiAgICB1c2VkIGJ5IHRoZSByZWFsLXRvLXByb3RlY3RlZCBtb2RlIHN3aXRjaAoKICAgIFRoaXMgcGF0Y2ggYWxzbyBjaGFuZ2VzIFRFWFRfQkFTRSB0byAweDYwMDAwMDAgKGluIFJBTSkuIFlvdSBjYW4gbG9hZAogICAgdGhlIHJlc3VsdGluZyBpbWFnZSBhdCAweDYwMDAwMDAgYW5kIHNpbXBsZSBnbyAweDYwMDAwMDAgZnJvbSB0aGUgdS1ib290CiAgICBwcm9tcHQKCiAgICBIb3BlZnVsbHkgYSBsYXRlciBwYXRjaCB3aWxsIGNvbXBsZXRlbHkgZWxsaW1pbmF0ZSBhbnkgZGVwZW5kZW5jeSBvbgogICAgVEVYVF9CQVNFIGxpa2UgYSByZWxvY2F0YWJsZSBsaW51eCBrZXJuZWwgKHBlcmZlY3Qgd29ybGQpCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KCmNvbW1pdCA3NTk1OThmODJmMDJjYzg0NjE0NDUwODA3Y2I1ZGU0M2NhMThhMzM5CkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJU2F0IEFwciAyNCAwMDowNTo0MSAyMDEwICsxMDAwCgogICAgeDg2OiBTcGxpdCBzYzUyMCBtZW1vcnkgc2l6aW5nIHZlcnN1cyByZXBvcnRpbmcKCiAgICBUaGlzIHBhdGNoIGFsbG93cyB0aGUgbG93LWxldmVsIGFzc2VtYmxlciBib290LXN0cmFwIHRvIG9idGFpbiB0aGUgUkFNCiAgICBzaXplIHdpdGhvdXQgY2FsbGluZyB0aGUgZGVzdHJ1Y3RpdmUgJ3NpemVyJyByb3V0aW5lLiBUaGlzIGFsbG93cwogICAgYm9vdC1zdHJhcHBpbmcgZnJvbSBhIFUtQm9vdCBpbWFnZSBsb2FkZWQgaW4gUkFNCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KCmNvbW1pdCA0ZGJhMzMzYjNjN2IzNDA3M2IwNDM5Y2M5NDI4NzdmOTg0MDM2MzJjCkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJU2F0IEFwciAyNCAwMDowNTo0MCAyMDEwICsxMDAwCgogICAgeDg2OiBGaXggc2M1MjAgbWVtb3J5IHNpemUgcmVwb3J0aW5nCgogICAgVGhlcmUgaXMgYW4gZXJyb3IgaW4gaG93IHRoZSBhc3NlbWJsZXIgdmVyc2lvbiBvZiB0aGUgc2M1MjAgbWVtb3J5IHNpemUKICAgIHJlcG9ydGluZyBjb2RlIHdvcmtzLiBBcyBhIHJlc3VsdCwgaXQgd2lsbCBvbmx5IGV2ZXIgcmVwb3J0IGF0IG1vc3QgdGhlCiAgICBzaXplIG9mIG9uZSBiYW5rIG9mIFJBTQoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Cgpjb21taXQgOWUwOGVmY2ZlZTIyNTcwYmIzYTllYTM4NGJmNGQ2MGIzNzhmNjA5MgpBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CVNhdCBBcHIgMjQgMDA6MDU6MzkgMjAxMCArMTAwMAoKICAgIHg4NjogRml4IGRvX2dvX2V4ZWMoKQoKICAgIFRoaXMgd2FzIGJyb2tlbiBhIGxvbmcgdGltZSBhZ28gYnkgYTQ5ODY0NTkzZTA4M2E1ZDA3NzlmYjljYTk4ZTVhMGYyMDUzMTgzZAogICAgd2hpY2ggbXVuZ2VkIHRoZSBOSU9TIGFuZCB4ODYgZG9fZ29fZXhlYygpCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KCmNvbW1pdCA0MzNmZjJiZGJjY2M1MTkwMTg5NTI4MzA1ZTRlZDZmNzIwNWRiYWZkCkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJU2F0IEFwciAyNCAwMDowNTozOCAyMDEwICsxMDAwCgogICAgeDg2OiBBZGQgcmVnaXN0ZXIgZHVtcCB0byBjcmFzaCBoYW5kbGVycwoKICAgIFNoYW1lbGVzc2x5IHN0ZWFsIHRoZSBMaW51eCB4ODYgY3Jhc2ggaGFuZGxpbmcgY29kZSBhbmQgc2hvdmUgaXQgaW50bwogICAgVS1Cb290IChjb29sIC0gaXQgZml0cykuIEJlIHN1cmUgdG8gaW5jbHVkZSBzdWl0YWJsZSBhdHRyaWJ1dGlvbiB0bwogICAgTGludXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgoKY29tbWl0IDY0YTBhNDk5NWU3OWVmOTgxM2JiNTFkNWYxZmYzNWFlNWRhYmZjN2UKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglTYXQgQXByIDI0IDAwOjA1OjM3IDIwMTAgKzEwMDAKCiAgICB4ODY6IEZpeCBNTUNSIEFjY2VzcwoKICAgIENoYW5nZSBzYzUyMCBNTUNSIEFjY2VzcyB0byB1c2UgbWVtb3J5IGFjY2Vzc29yIGZ1bmN0aW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Cgpjb21taXQgNTM1YWQyZGIwNjlhYWU2ZDFkMzZmYzA1YzMxY2JkOGEyYjNkODgzMQpBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CVNhdCBBcHIgMjQgMDA6MDU6MzYgMjAxMCArMTAwMAoKICAgIHg4NjogI2lmZGVmIG91dCBnZXRlbnZfSVBhZGRyKCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgoKY29tbWl0IDcyMWMzNjcwNWE5ZWZjN2I2N2Y3OGQwYzNlODQ4NWU0ZjFiOGJjYzkKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglTYXQgQXByIDI0IDAwOjA1OjM1IDIwMTAgKzEwMDAKCiAgICB4ODY6IEFkZCB1bmFsaWduZWQuaAoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Cgpjb21taXQgOTNjN2U3MGY2NDhmYjgxN2U1MTlmNmUxNjNiN2VmOWJlZmMyNzM0OQpBdXRob3I6IE1pY2hhZWwgWmFpZG1hbiA8bWljaGFlbC56YWlkbWFuQGdtYWlsLmNvbT4KRGF0ZToJV2VkIEFwciA3IDE4OjMwOjA4IDIwMTAgKzAzMDAKCiAgICBQT1NUOiBBZGRlZCBFQ0MgbWVtb3J5IHRlc3QgZm9yIG1wYzgzeHguCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBaYWlkbWFuIDxtaWNoYWVsLnphaWRtYW5AZ21haWwuY29tPgoKICAgIEZpeGVkIG1pbm9yIGNvZGluZyBzdHlsZSBpc3N1ZS4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgOGNkODUyODI0ZDkxZTIzMmYxZjgyMGEwNzcyYzNjMWQ4YWY4NGIwNQpBdXRob3I6IEZyYW5zIE1ldWxlbmJyb2VrcyA8ZnJhbnNtZXVsZW5icm9la3NAZ21haWwuY29tPgpEYXRlOglTYXQgTWFyIDI3IDE3OjE0OjM2IDIwMTAgKzAxMDAKCiAgICBjbWRfb25lbmFuZC5jOiBtb3ZlZCB0byBzdGFuZGFyZCBzdWJjb21tYW5kIGhhbmRsaW5nCgogICAgT24gdGhlIGZseSBhbHNvIGZpeGVkIHRoZSBmb2xsb3dpbmcgdGhpbmdzOgogICAgLSB3cml0ZSBoZWxwIHRhbGtlZCBhYm91dCBhIHBhcmFtZXRlciBvb2IsIGJ1dCB0aGF0IG9uZSB3YXMgbm90IHVzZWQsIHNvCiAgICAgIHJlbW92ZWQgaXQgZnJvbSB0aGUgaGVscCBtZXNzYWdlLgogICAgLSB0aGUgdGVzdCBjb21tYW5kIGFsc28gYWxsb3dlZCBhIGZvcmNlIHN1YmNvbW1hbmQgYnV0IGRpZG4ndCB1c2UgaXQuCiAgICAgIGVsaW1pbmF0ZWQgdGhlIGNvZGUuCiAgICAtIGRvX29uZW5hbmQgbWFkZSBzdGF0aWMKICAgIC0gZG9fb25lbmFuZCBjb250YWluZWQKCWludCBibG9ja3NpemU7CgkuLi4KCW10ZCA9ICZvbmVuYW5kX210ZDsKCXRoaXMgPSBtdGQtPnByaXY7CglibG9ja3NpemUgPSAoMSA8PCB0aGlzLT5lcmFzZV9zaGlmdCk7CiAgICAgIEFzIGJsb2Nrc2l6ZSB3YXMgbm90IHVzZWQgdGhlIGxhc3QgdHdvIHN0YXRlbWVudHMgd2VyZSB1bm5lZWRlZCBzbwogICAgICByZW1vdmVkIHRoZW0uCiAgICAgIFRoZSBmaXJzdCBzdGF0ZW1lbnQgKG10ZCA9IC4uLi4pIGFzc2lnbnMgdG8gYSBnbG9iYWwuIE5vdCBzdXJlIGlmIGl0CiAgICAgIGlzIG5lZWRlZCwgYW5kIHNpbmNlIEkgY291bGQgbm90IHRlc3QgdGhpcywgbGVmdCB0aGUgbGluZSBmb3Igbm93CgogICAgU2lnbmVkLW9mZi1ieTogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+Cgpjb21taXQgMzg4MmQ3YTVhNTdlYjhkMWY0MTU3MDUyMjQ0NWJhYjYxYzYyOGU2ZgpBdXRob3I6IE5vcmJlcnQgdmFuIEJvbGh1aXMgPG52Ym9saHVpc0BhaW12YWxsZXkubmw+CkRhdGU6CUZyaSBNYXIgMTkgMTU6MzQ6MjUgMjAxMCArMDEwMAoKICAgIHBwYzogdW51c2VkIG1lbW9yeSByZWdpb24gdG9vIGNsb3NlIHRvIGN1cnJlbnQgc3RhY2sgcG9pbnRlcgoKICAgIFRoaXMgYXZvaWRzIGEgcG9zc2libGUgb3ZlcndyaXRlIG9mIHRoZSAoZW5kIG9mKSByYW1kaXNrIGJ5IHUtYm9vdC4KICAgIFRoZSB1bnVzZWQgbWVtb3J5IHJlZ2lvbiBmb3IgcHBjIGJvb3QgY3VycmVudGx5IHN0YXJ0cyAxayBiZWxvdyB0aGUKICAgIGRvX2Jvb3RtLT5ib290bV9zdGFydC0+YXJjaF9sbWJfcmVzZXJ2ZSBzdGFjayBwdHIuIFRoaXMgaXNuJ3QgZW5vdWdoIHNpbmNlCiAgICBkb19ib290bS0+ZG9fYm9vdG1fbGludXgtPmJvb3RfcmVsb2NhdGVfZmR0IGNhbGxzIHByaW50ZiB3aGljaCBtYXkKICAgIHZlcnkgd2VsbCB1c2UgbW9yZSB0aGFuIDFrIHN0YWNrIHNwYWNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vcmJlcnQgdmFuIEJvbGh1aXMgPG52Ym9saHVpc0BhaW12YWxsZXkubmw+Cgpjb21taXQgNGI0MmM5MDU5ZTE2NTUwMDM1MzE3NDYwMWE4ZTk3YjJjZjgxZDNmNApBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBBcHIgMTMgMTM6MTY6MDMgMjAxMCAtMDUwMAoKICAgIGFsbG93IHByaW50X3NpemUgdG8gcHJpbnQgbGFyZ2UgbnVtYmVycyBvbiAzMi1iaXQgc3lzdGVtcwoKICAgIE1vZGlmeSBwcmludF9zaXplKCkgc28gdGhhdCBpdCBjYW4gYWNjZXB0IG51bWJlcnMgbGFyZ2VyIHRoYW4gNEdCIG9uIDMyLWJpdAogICAgc3lzdGVtcy4KCiAgICBBZGQgc3VwcG9ydCBmb3IgZGlzcGxheSB0ZXJhYnl0ZSwgcGV0YWJ5dGUsIGFuZCBleGFieXRlIHNpemVzLiAgQ2hhbmdlIHRoZQogICAgb3V0cHV0IHRvIHVzZSBJbnRlcm5hdGlvbmFsIEVsZWN0cm90ZWNobmljYWwgQ29tbWlzc2lvbiBiaW5hcnkgcHJlZml4IHN0YW5kYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNTJkYmFjNjljMjdkZWU2N2E0YzA1MWIxMDU1ZDkzYjBhYzRlMjA2MgpBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBBcHIgMTMgMTM6MTY6MDIgMjAxMCAtMDUwMAoKICAgIGZpeCBwcmludF9zaXplIHByaW50aW5nIGZyYWN0aW9uYWwgZ2lnYWJ5dGUgbnVtYmVycyBvbiAzMi1iaXQgcGxhdGZvcm1zCgogICAgSW4gcHJpbnRfc2l6ZSgpLCB0aGUgbWF0aCB0aGF0IGNhbGN1bGF0ZXMgdGhlIGZyYWN0aW9uYWwgcmVtYWluZGVyIG9mIGEgbnVtYmVyCiAgICB1c2VkIHRoZSBzYW1lIGludGVnZXIgc2l6ZSBhcyBhIHBoeXNpY2FsIGFkZHJlc3MuICBIb3dldmVyLCB0aGUgIjEwICoiIGZhY3RvcgogICAgb2YgdGhlIGFsZ29yaXRobSBtZWFucyB0aGF0IGEgbGFyZ2UgbnVtYmVyIChlLmcuIDEuNUdCKSBjYW4gb3ZlcmZsb3cgdGhlCiAgICBpbnRlZ2VyIGlmIHdlJ3JlIHJ1bm5pbmcgb24gYSAzMi1iaXQgc3lzdGVtLiAgVGhlcmVmb3JlLCB3ZSBuZWVkIHRvCiAgICBkaXNhc3NvY2lhdGUgdGhpcyBmdW5jdGlvbiBmcm9tIHRoZSBzaXplIG9mIGEgcGh5c2ljYWwgYWRkcmVzcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGI1Y2ViYjRmZDYwZmVmYzc3MDBhNDg2YmI3NGZlY2M2NmMwN2FjZmYKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBNYXkgNSAwMzoyMDozMCAyMDEwIC0wNDAwCgogICAgQmxhY2tmaW46IFRXSS9JMkM6IGltcGxlbWVudCBtdWx0aWJ1cyBzdXBwb3J0CgogICAgSW4gb3JkZXIgdG8gZG8gdGhpcyBjbGVhbmx5LCB0aGUgcmVnaXN0ZXIgYWNjZXNzZXMgaGF2ZSB0byBiZSBjb252ZXJ0ZWQgdG8KICAgIGEgQyBzdHJ1Y3QgKGJhc2UgcG9pbnRlciksIHNvIGRvIHRoYXQgaW4gdGhlIHByb2Nlc3MuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGI0Mzc3ZTEyZTlhYTBiM2JmMmRjYWUwYTBmMDJlYzkwODYzMzg1MDYKQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KRGF0ZToJVHVlIE1hciAxNiAxNzoyMjoyMSAyMDEwICswMTAwCgogICAgQWRkIFNQSSBzdXBwb3J0IHRvIG14NTFldmsgYm9hcmQKCiAgICBUaGUgcGF0Y2ggYWRkcyBTUEkgZGV2aWNlcyB0byB0aGUgbXg1MWV2ayBib2FyZC4KICAgIFRoZSBNQzEzODkyIGNoaXAgKFBNSUMpIGlzIHN1cHBvcnRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KCmNvbW1pdCBkMzU4OGE1NWQ0YTA0MWYyMjA4MjkwYjhiNmY5Y2VjYmRhZDE3OWFjCkF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CVN1biBBcHIgMTggMTk6Mjc6NDQgMjAxMCArMDIwMAoKICAgIE1YOiBBZGRlZCBkZWZpbml0aW9uIGZpbGUgZm9yIE1DMTM4OTIKCiAgICBUaGUgTUMxMzg5MiBpcyBhIFBvd2VyIENvbnRyb2xsZXIgdXNlZCB3aXRoIHByb2Nlc3NvcnMKICAgIG9mIHRoZSBmYW1pbHkgTVguNTEuIFRoZSBmaWxlIGFkZHMgZGVmaW5pdGlvbnMgdG8gYmUgdXNlZCB0byBzZXR1cAogICAgdGhlIGludGVybmFsIHJlZ2lzdGVycyB2aWEgU1BJLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgoKY29tbWl0IGQyMDVkZGNmYzViOTA1ZWZmMDIzZDVhY2FjMzk1NzIxZDgwYTkyYzcKQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KRGF0ZToJU3VuIEFwciA0IDIyOjQzOjM4IDIwMTAgKzAyMDAKCiAgICBTUEk6IGFkZGVkIHN1cHBvcnQgZm9yIE1YNTEgdG8gbXhjX3NwaQoKICAgIFRoaXMgcGF0Y2ggYWRkIFNQSSBzdXBwb3J0IGZvciB0aGUgTVg1MSBwcm9jZXNzb3IuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Cgpjb21taXQgZTk4ZWNkNzExMDJkZTlkOTdiZDgyYmUyNDdlZDkwOTI2MGZiNjcxYgpBdXRob3I6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgpEYXRlOglGcmkgQXByIDE2IDE3OjEzOjU0IDIwMTAgKzAyMDAKCiAgICBNWDMxOiBBZGQgc3VwcG9ydCBmb3IgUE1JQyB0byB0aGUgUU9ORyBtb2R1bGUKCiAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIFBNSUMgKE1DMTM3ODMpIGNvbnRyb2xsZXIKICAgIGFuZCBlbmFibGVzIGNoYXJnaW5nIG9mIHRoZSBSVEMgYmF0dGVyeS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KCmNvbW1pdCBkZmU1ZTE0ZmEyNjNlYjhmMWE5ZjA4N2YwMjg0Nzg4ZTc1NTk4MjFkCkF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CUZyaSBBcHIgMTYgMTc6MTE6MTkgMjAxMCArMDIwMAoKICAgIE1YOiBSVEMxMzc4MyB1c2VzIGdlbmVyYWwgZnVuY3Rpb24gdG8gYWNjZXNzIFBNSUMKCiAgICBUaGUgUlRDIGlzIHBhcnQgb2YgdGhlIEZyZWVzY2FsZSdzIFBNSUMgY29udHJvbGxlci4KICAgIFVzZSBnZW5lcmFsIGZ1bmN0aW9uIHRvIGFjY2VzcyB0byBQTUlDIGludGVybmFsIHJlZ2lzdGVycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KICAgIFRlc3RlZC1ieTogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgoKY29tbWl0IDI4YmI2ZDM0ZDNmNDMxYjdiMDA0NDRlMmY4MjliMmMwNGY1ZGFmNGQKQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KRGF0ZToJU3VuIEFwciA0IDIzOjA4OjAzIDIwMTAgKzAyMDAKCiAgICBNWDogQWRkZWQgRnJlZXNjYWxlIFBvd2VyIE1hbmFnZW1lbnQgRHJpdmVyCgogICAgVGhlIHBhdGNoIGFkZCBzdXBwb3J0cyBmb3IgdGhlIEZyZWVzY2FsZSdzIFBvd2VyCiAgICBNYW5hZ2VtZW50IENvbnRyb2xsZXIgKGtub3duIGFzIEF0bGFzKSB1c2VkIHRvZ2V0aGVyIHdpdGggaS5NWDMxLzUxCiAgICBwcm9jZXNzb3JzLiBJdCB3YXMgdGVzdGVkIHdpdGggYSBNQzEzNzgzIChNWDMxKSBhbmQKICAgIE1DMTM4OTIgKE1YNTEpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgoKY29tbWl0IGJhNmFkZWI0OGU3MWY3ZjFiNzkxYjZlOTg5OTlhNTY4MGQ5MTliMjYKQXV0aG9yOiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+CkRhdGU6CUZyaSBBcHIgMjMgMjA6MzA6NDkgMjAxMCArMDIwMAoKICAgIGkuTVgzMTogQWN0aXZhdGUgTkFORCBzdXBwb3J0IGZvciBpLk1YMzEgTGl0ZWtpdCBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Cgpjb21taXQgNjAzODFkNjg3ODg1YzBlMjEwMDY1N2NhNzNlOTdlMzhjNDYwNGY1ZQpBdXRob3I6IEZhYmlvIEVzdGV2YW0gPGZhYmlvZXN0ZXZhbUB5YWhvby5jb20+CkRhdGU6CUZyaSBBcHIgMjMgMDY6MzI6MDEgMjAxMCAtMDcwMAoKICAgIE1YNTE6IEZpeCBNWDUxIENQVSBkZXRlY3QgbWVzc2FnZQoKICAgIEZpeCBNWDUxIENQVSBkZXRlY3QgbWVzc2FnZS4KCiAgICBPcmlnaW5hbCBzdHJpbmcgd2FzOgogICAgQ1BVOiAgIEZyZWVzY2FsZSBpLk1YNTEgZmFtaWx5IDMuMFYgYXQgODAwIE1IegoKICAgIHdoaWNoIGNhbiBiZSBtaXNpbnRlcnByZXRlZCBhcyAgMy4wIFZvbHRzIGluc3RlYWQgb2YgdGhlIHNpbGljb24gcmV2aXNpb24uCgogICAgLGNoYW5nZSBpdCB0bzoKICAgIENQVTogICBGcmVlc2NhbGUgaS5NWDUxIGZhbWlseSByZXYzLjAgYXQgODAwIE1IegoKICAgIFNpZ25lZC1vZmYtYnk6IEZhYmlvIEVzdGV2YW0gPGZhYmlvLmVzdGV2YW1AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2OGMwN2EwYzIxNWE2NDgyNmVkMTNjMmY5YjAwYTZkM2IyOTg4MjJlCkF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CVN1biBBcHIgMTggMjA6MDE6MDEgMjAxMCArMDIwMAoKICAgIE1YNTFldms6IFJlbW92ZWQgd2FybmluZ3MKCiAgICBDaGFuZ2VzIHJlZmxlY3QgbW9kaWZpY2F0aW9ucyBpbiB0aGUgZnNsX2VzZGhjIGRyaXZlcgogICAgKHRoZSBjbGtfZW5hYmxlIGZpZWxkIHdhciByZW1vdmVkIGluIHRoZSBjb25maWd1cmF0aW9uIHN0cnVjdHVyZSkuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Cgpjb21taXQgODdkYjU4ZGNhNDdmOTNmOWZiM2I0ZWQwMTk2ZGQ3YTNmNWRmMWNiOQpBdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KRGF0ZToJV2VkIEFwciAyMSAxMzo1MjozOCAyMDEwICswMjAwCgogICAgdHgyNTogZml4IGNyYXNoIHdoaWxlIGJvb3RpbmcgTGludXgKCiAgICBDdXJyZW50bHkgYm9vdGluZyBMaW51eCBvbiBUWDI1IGJvYXJkIGRvZXNuJ3Qgd29yawogICAgc2luY2UgdGhlcmUgaXMgbm8gY29ycmVjdCBtYWNoLWlkIGFuZCBib290IHBhcmFtZXRlcnMKICAgIHNldHVwIGZvciB0eDI1IGJvYXJkLiBGaXggaXQgbm93LgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KICAgIENjOiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KICAgIENjOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KCmNvbW1pdCBiODhjNTk4OGRiMTc2YTBmOWRlNTU5OGQ1MTY3ZWUyNDk4NjM3ZDQwCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEFwciAxMyAyMToxMTo1MyAyMDEwIC0wNTAwCgogICAgY29uZmlnczogcmVtb3ZlIHVudXNlZCBDT05GSUdfQ09NTUFORF9ISVNUT1JZCgogICAgJCBnaXQgZ3JlcCBDT05GSUdfQ09NTUFORF9ISVNUT1JZCiAgICBDSEFOR0VMT0c6CSAgQ09ORklHX0NPTU1BTkRfSElTVE9SWQogICAgaW5jbHVkZS9jb25maWdzL0FQMTAwMC5oOiNkZWZpbmUgQ09ORklHX0NPTU1BTkRfSElTVE9SWSAxCiAgICBpbmNsdWRlL2NvbmZpZ3Mva2V5bWlsZS1jb21tb24uaDojZGVmaW5lIENPTkZJR19DT01NQU5EX0hJU1RPUlkJICAgIDEKICAgIGluY2x1ZGUvY29uZmlncy9tYW5yb2xhbmQvY29tbW9uLmg6I2RlZmluZSBDT05GSUdfQ09NTUFORF9ISVNUT1JZCQkgICAgMQogICAgJAoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgNzc2OWM1YmMwNjYxNTI5Mzg3MGQwMGZjODEzNjZjZDQzYmEwNjIzYQpBdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KRGF0ZToJVHVlIEFwciAxMyAxNDo0NzozMiAyMDEwICswMjAwCgogICAgbXZzbXI6IGZpeCBsaW5rIGVycm9yCgogICAgTVZTTVIgYm9hcmQgc3VwcG9ydCBkb2Vzbid0IGxpbmsgc2luY2UgcmVjZW50IHJld29yawogICAgb2YgVS1Cb290IGRpcmVjdG9yeSBzdHJ1Y3R1cmUuIEZpeCBpdCBub3cuCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgogICAgQ2M6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KICAgIEFja2VkLWJ5OiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+CiAgICBGaXhlZCBtZXJnZSBjb25mbGljdAogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0MzI0ZGM3MmRmNTg3OWU1YjYxNGM0YTNmMzI2ODg0NzIzZWRlOWI3CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgQXByIDI3IDE0OjE1OjI4IDIwMTAgLTA0MDAKCiAgICBCbGFja2ZpbjogYmZpbl9tYWM6IGhvb2sgdXAgbmV3IHdyaXRlX2h3YWRkciBmdW5jdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgM2FjOWQ2YzY1MGQ5NGM1MTY0NWVmYTQ0NmMxZDkxNGM1NDQwOTkwZApBdXRob3I6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KRGF0ZToJVHVlIEFwciAyNyAyMDoyMDoyNyAyMDEwICswODAwCgogICAgbmV0OiBldGhvYzogYWRkIHdyaXRlX2h3YWRkciBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA2YzdjNDQ0Nzg2ZmM0MDIyOTk5MzYyZmNlMTE5YzhiNzMxZWVkY2I0CkF1dGhvcjogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgpEYXRlOglUdWUgQXByIDI3IDIwOjE1OjEwIDIwMTAgKzA4MDAKCiAgICBuZXQ6IGFsdGVyYV90c2U6IGFkZCB3cml0ZV9od2FkZHIgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZmI1N2VjOTdiOTAyOTFjNTg5MDg3MTY3ZjEwMDQ4M2EwODk4MzdiZgpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglUdWUgQXByIDI3IDA3OjQzOjUyIDIwMTAgKzAyMDAKCiAgICBuZXQ6IGZlY19teGM6IGFkZCB3cml0ZV9od2FkZHIgc3VwcG9ydAoKICAgIHRlc3RlZCBvbiB0aGUgbWFnbmVzaXVtIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBiNWNlNjNlZDEyYjRjZDgxZDIxMTYyMWFjYTBjMjIyYjIwZDJhNjkxCkF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgpEYXRlOglUdWUgQXByIDYgMjI6MjE6MzMgMjAxMCArMDUzMAoKICAgIG5ldDpraXJrd29vZF9lZ2lnYS5jOiBNQUMgYWRkcmVzc2VzIHByb2dyYW1taW5nIHVzaW5nIHdyaXRlX2h3YWRkcgoKICAgIEFkZGVkIGEgbmV3IGZ1bmN0aW9uIGt3Z2JlX3dyaXRlX2h3YWRkciBmb3IgcHJvZ3JhbW1pbmcgZWdpZ2EKICAgIGNvbnRyb2xsZXIncyBoYXJkd2FyZSBhZGRyZXNzLgogICAgVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBmb3IgZWFjaCBlZ2lnYSBwb3J0IGJlaW5nIHVzZWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGVjZWU5MzI0ZDczNTU1ZTc0NDU5M2YzZTBkMzg3YmVjNGM1NjZmNTUKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglNb24gQXByIDI2IDExOjExOjQ2IDIwMTAgLTA3MDAKCiAgICBQcm9ncmFtIG5ldCBkZXZpY2UgTUFDIGFkZHJlc3NlcyBhZnRlciBpbml0aWFsaXppbmcKCiAgICBBZGQgYSBuZXcgZnVuY3Rpb24gdG8gdGhlIGV0aF9kZXZpY2Ugc3RydWN0IGZvciBwcm9ncmFtbWluZyBhIG5ldHdvcmsKICAgIGNvbnRyb2xsZXIncyBoYXJkd2FyZSBhZGRyZXNzLgoKICAgIEFmdGVyIGFsbCBuZXR3b3JrIGRldmljZXMgaGF2ZSBiZWVuIGluaXRpYWxpemVkIGFuZCB0aGUgcHJvcGVyIE1BQyBhZGRyZXNzCiAgICBmb3IgZWFjaCBoYXMgYmVlbiBkZXRlcm1pbmVkLCBtYWtlIGEgZGV2aWNlIGRyaXZlciBjYWxsIHRvIHByb2dyYW0gdGhlCiAgICBhZGRyZXNzIGludG8gdGhlIGRldmljZS4gIE9ubHkgZGV2aWNlIGluc3RhbmNlcyB3aXRoIHZhbGlkIHVuaWNhc3QgYWRkcmVzc2VzCiAgICB3aWxsIGJlIHByb2dyYW1tZWQuCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KICAgIEFja2VkLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KICAgIFRlc3RlZC1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgogICAgVGVzdGVkLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KICAgIFRlc3RlZC1ieTogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgoKY29tbWl0IGM5NjBiMTNlZDIyZDllYTU3MDk1NzM3OWY5ZjdmMmYzN2Q4N2VmMDgKQXV0aG9yOiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+CkRhdGU6CVR1ZSBBcHIgMjAgMTI6NDk6NTIgMjAxMCArMDgwMAoKICAgIG5ldDogYWRkIGFsdGVyYSB0cmlwbGUgc3BlZWRzIGV0aGVybmV0IG1hYyBkcml2ZXIKCiAgICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgQWx0ZXJhIHRyaXBsZSBzcGVlZHMgMTAvMTAwLzEwMDAgZXRoZXJuZXQKICAgIG1hYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGY2NTY5ODg0YjQ1ZTQ4MGUyYzU3NWQ4NWNlODZhMjYzNmE0MWM2NmIKQXV0aG9yOiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+CkRhdGU6CVRodSBBcHIgMTUgMjI6MzI6MzggMjAxMCArMDgwMAoKICAgIG5ldDogYWRkIG9wZW5jb3JlIDEwLzEwMCBldGhlcm5ldCBtYWMgZHJpdmVyCgogICAgVGhpcyBwYXRjaCBwb3J0cyB0aGUgb3BlbmNvcmUgMTAvMTAwIGV0aGVybmV0IG1hYyBkcml2ZXIgZXRob2MuYwogICAgZnJvbSBsaW51eCBrZXJuZWwgdG8gdS1ib290LgoKICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYmQ3NWRiM2ZlYjlhOGU0MTIzYjc2MDA2ZGJlNTgyYjcxYWRiZjIyZgpBdXRob3I6IFZhbGVudGluIFlha292ZW5rb3YgPHlha292ZW5rb3ZAbmlpc3R0LnJ1PgpEYXRlOglGcmkgQXByIDIzIDA5OjQwOjIzIDIwMTAgKzA0MDAKCiAgICBzbWM5MTF4IGRyaXZlciBmcmFtZSBhbGlnbm1lbnQgcGF0Y2gKCiAgICBTTVNDOTExeCBjaGlwcyBoYXZlIGFsaWdubWVudCBmdW5jdGlvbiB0byBhbGxvdyBmcmFtZSBwYXlsb2FkIGRhdGEKICAgICh3aGljaCBjb21lcyBhZnRlciAxNC1ieXRlcyBldGhlcm5ldCBoZWFkZXIpIHRvIGJlIGFsaWduZWQgYXQgc29tZQogICAgYm91bmRhcnkgd2hlbiByZWFkaW5nIGl0IGZyb20gZmlmbyAodXN1YWxseSAtIDQgYnl0ZXMgYm91bmRhcnkpLgogICAgVGhpcyBpcyBkb25lIGJ5IGluc2VydGluZyBmYWtlIHplcm9zIGJ5dGVzIEJFRk9SRSBhY3R1YWwgZnJhbWUgZGF0YSB3aGVuCiAgICByZWFkaW5nIGZyb20gU01TQydzIGZpZm8uCiAgICBUaGlzIGZ1bmN0aW9uIGNvbnRyb2xsZWQgYnkgUlhfQ0ZHIHJlZ2lzdGVyLiBUaGVyZSBhcmUgYml0cyB0aGF0CiAgICByZXByZXNlbnRzIGFtb3VudCBvZiBmYWtlIGJ5dGVzIHRvIGJlIGluc2VydGVkLgoKICAgIExpbnV4IHVzZXMgYWxpZ25tZW50IG9mIDQgYnl0ZXMuIEV0aGVybmV0IGZyYW1lIGhlYWRlciBpcyAxNCBieXRlcyBsb25nLAogICAgc28gd2UgbmVlZCB0byBhZGQgMiBmYWtlIGJ5dGVzIHRvIGdldCBwYXlsb2FkIGRhdGEgYWxpZ25lZCBhdCA0LWJ5dGVzCiAgICBib3VuZGFyeS4KICAgIExpbnV4IGRyaXZlciBkb2VzIHRoaXMgYnkgYWRkaW5nIElQX0FMSUdOTUVOVCBjb25zdGFudCAoZGVmaW5lZCBhdAogICAgc2tiLmgpIHdoZW4gY2FsY3VsYXRpbmcgZmlmbyBkYXRhIGxlbmd0aC4gQWxsIG5ldHdvcmsgc3Vic3lzdGVtIG9mIExpbnV4CiAgICB1c2VzIHRoaXMgY29uc3RhbnQgdG9vIHdoZW4gY2FsY3VsYXRpbmcgZGlmZmVyZW50IG9mZnNldHMuCgogICAgQnV0IHUtYm9vdCBkb2VzIG5vdCB1c2UgYW55IHBhY2tldCBkYXRhIGFsaWdubWVudCwgc28gd2UgZG9uJ3QgbmVlZCB0bwogICAgYWRkIGFueXRoaW5nIHdoZW4gY2FsY3VsYXRpbmcgZmlmbyBkYXRhIGxlbmd0aC4KICAgIE1vcmVvdmVyLCBkcml2ZXIgemVyb3MgdGhlIFJYX0NGRyByZWdpc3RlciBqdXN0IG9uZSBsaW5lIHVwLCBzbyBjaGlwCiAgICBkb2VzIG5vdCBpbnNlcnQgYW55IGZha2UgZGF0YSBhdCB0aGUgYmVnaW5pZy4gU28gY2FsY3VsYXRlZCBkYXRhIGxlbmd0aAogICAgaXMgYWx3YXlzIGJpZ2dlciBieSAxIHdvcmQuCgogICAgSXQgc2VlbXMgdGhhdCBhdCBhbG1vc3QgZXZlcnkgcGFja2V0IHJlYWQgd2UgZ2V0IGFuIHVuZGVyZmxvdyBjb25kaXRpb24KICAgIGF0IGZpZm8gYW5kIHBvc3NpYmxlIGNvcnJ1cHRpb24gb2YgZGF0YS4gRXNwZWNpYWxseSBhdCBjb250aW51b3VzCiAgICB0cmFuc2ZlcnMsIHN1Y2ggYXMgdGZ0cC4KCiAgICBKdXN0IGFmdGVyIHJlbW92aW5nIHRoaXMgbWFnaWMgYWRkaXRpb24sIEkndmUgZ290IHRmdHAgdHJhbnNmZXIgc3BlZWQgYXMKICAgIGl0IGF1Z2h0IHRvIGJlIGF0IDEwME1icHMuIEl0IHdhcyByZWFsbHkgc2xvdyBiZWZvcmUuCgogICAgSXQgc2VlbXMgdGhhdCBmaWZvIHVuZGVyZmxvdyBvY2N1cnMgb25seSB3aGVuIHVzaW5nIGJ5dGUgcGFja2luZyBvbgogICAgMzItYml0IGJsYWNrZmluIGJ1cyAobWF5IGJlIGJlY2F1c2Ugb2YgdmVyeSBzbWFsbCBkZWxheSBiZXR3ZWVuIHJlYWRzKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBWYWxlbnRpbiBZYWtvdmVua292IDx5YWtvdmVua292QG5paXN0dC5ydT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZjA1ODhmZGY5MjFjNjNmODQwNTE5MjNiYjI5ZWI0MjU1ZDYyYTZlNwpBdXRob3I6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KRGF0ZToJVHVlIEFwciA2IDIxOjMzOjA4IDIwMTAgKzA1MzAKCiAgICBuZXQ6IEtpcmt3b29kX2VnaWdhLmMgYnVnZml4ZXMgZm9yIHJ4IHBhdGgKCiAgICBDb3NtZXRpYyBjaGFuZ2VzOiBGZXcgY29tbWVudHMgdXBkYXRlZAogICAgRnVuY3Rpb25hbGl0eTogUnggcGFja2V0IGZyYW1lIHNpemUgaXMgcHJvZ3JhbW1pbmcgc2hvdWxkCiAgICBiZSBkb25lIHdoZW4gcG9ydCBpcyBpbiBkaXNhYmxlZCBzdGF0ZS4gdGhpcyBpcyBjb3JyZWN0ZWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDJlMjM2YmYyOGU3MjlhY2EyOGU2MGMxNTNkZDhmOTEzZDFiM2QwNTgKQXV0aG9yOiBFcmljIEphcnJpZ2UgPGVyaWMuamFycmlnZUBhcm1hZGV1cy5vcmc+CkRhdGU6CUZyaSBBcHIgMTYgMDA6MDM6MTkgMjAxMCArMDIwMAoKICAgIGZlY19teGMuYzogRml4IE1YMjcgRkVDIE1BQyB2YWxpZGl0eSBjaGVjawoKICAgIEZpeCBNWDI3IEZFQyBsb2dpYyB0byBjaGVjayB2YWxpZGl0eSBvZiB0aGUgTUFDIGFkZHJlc3MgaW4gZnVzZS4KICAgIE9ubHkgbnVsbCAoZW1wdHkgZnVzZSkgb3IgaW52YWxpZCBNQUMgYWRkcmVzcyB3YXMgcmV0cmlldmVkIGZyb20gbXgyNyBmdXNlcyBiZWZvcmUgdGhpcyBjaGFuZ2UuCgogICAgU2lnbmVkLW9mZi1ieTogIEVyaWMgSmFycmlnZSA8am9yYXNzZUBhcm1hZGV1cy5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDUzOGJlNTg1Njg1NDJhYWMyZWQ0YmRmNGMwNTM5OGNmYTY3ZTk4ZjAKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBBcHIgMTkgMTQ6NTQ6NDkgMjAxMCAtMDUwMAoKICAgIHRzZWM6IFdhaXQgZm9yIGJvdGggUlggYW5kIFRYIHRvIHN0b3AKCiAgICBXaGVuIGdyYWNlZnVsbHkgc3RvcHBpbmcgdGhlIGNvbnRyb2xsZXIsIHRoZSBkcml2ZXIgd2FzIGNvbnRpbnVpbmcgaWYKICAgICplaXRoZXIqIFJYIG9yIFRYIGhhZCBzdG9wcGVkLiAgV2UgbmVlZCB0byB3YWl0IGZvciBib3RoLCBvciB0aGUKICAgIGNvbnRyb2xsZXIgY291bGQgZ2V0IGludG8gYW4gaW52YWxpZCBzdGF0ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGE0NWRkZTIyOTNjODE2MTM4ZTUzYzI2ZWNhNmZkMDMyMjU4M2Y5YTYKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBBcHIgMTQgMTY6Mjk6MDYgMjAxMCAtMDQwMAoKICAgIG5ldDogZG05MDAweDogdXNlIHN0YW5kYXJkIEkvTyBhY2Nlc3NvcnMKCiAgICBUaGUgY3VycmVudCBkbTkwMDB4IGRyaXZlciBhY2Nlc3NlcyBpdHMgbWVtb3J5IG1hcHBlZCByZWdpc3RlcnMgZGlyZWN0bHkKICAgIGluc3RlYWQgb2YgdXNpbmcgdGhlIHN0YW5kYXJkIEkvTyBhY2Nlc3NvcnMuICBUaGlzIGNhbiBjYXVzZSBwcm9ibGVtcyBvbgogICAgQmxhY2tmaW4gc3lzdGVtcyBhcyB0aGUgYWNjZXNzZXMgY2FuIGdldCBvdXQgb2Ygb3JkZXIuICBTbyBjb252ZXJ0IHRoZQogICAgZGlyZWN0IHZvbGF0aWxlIGRlcmVmZXJlbmNlcyB0byB1c2UgdGhlIG5vcm1hbCBpbi9vdXQgbWFjcm9zLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNTUyNTg1NmQ1OTkxMGM3MjY4N2FiNjIwMWYzOWNkZjFjMDRjZmMxNQpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglUaHUgQXByIDggMTE6NDk6NTkgMjAxMCArMDIwMAoKICAgIG1wYzUxMnhfZmVjOiBNb3ZlIFBIWSBpbml0aWFsaXphdGlvbiBmcm9tIHByb2JlIGludG8gaW5pdCByb3V0aW5lLgoKICAgIFRoaXMgc2F2ZXMgdGhlIGF1dG9uZWdvdGF0aW9uIGRlbGF5IHdoZW4gbm90IHVzaW5nIGV0aGVybmV0IGluIFUtQm9vdAoKICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA5MTAxMTliM2M0NjJmZDYzNjc1MzY4OTllZTQzZGUxZWI3ZDIyZDhlCkF1dGhvcjogSm9obiBSaWdieSA8amNyaWdieUBnbWFpbC5jb20+CkRhdGU6CVdlZCBBcHIgNyAyMzoyOTo0MCAyMDEwIC0wNjAwCgogICAgZmVjX214YyBkb24ndCB1c2UgaW50ZXJuYWwgZWVwcm9tIG9uIE1YMjUKCiAgICBBdm9pZCB1c2luZyB0aGUgaW50ZXJuYWwgZWVwcm9tIG9uIE1YMjUgbGlrZSBNWDUxIGFscmVhZHkgZG9lcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMzNmNjg0ZDZkNTEyOTkyZWQxYWUzN2VjNDZlNzZiZGViMDc3M2JhYwpBdXRob3I6IFdvbGZnYW5nIFdlZ25lciA8dy53ZWduZXJAYXN0cm8ta29tLmRlPgpEYXRlOglUdWUgQXByIDYgMTE6MTM6MDIgMjAxMCArMDIwMAoKICAgIGZpeCBsb2NrdXAgaW4gbWNmbWlpL21paV9kaXNjb3Zlcl9waHkoKSBpbiBjYXNlIGNvbW11bmljYXRpb24gZmFpbHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBXZWduZXIgPHcud2VnbmVyQGFzdHJvLWtvbS5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMjNjMzRhZjQ4ZmYwZGJmZjNiYmFhOGU5NGRmM2JmNDAzNTBhNzA5ZgpBdXRob3I6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+CkRhdGU6CVdlZCBKdW4gMTcgMTY6MDA6NDEgMjAwOSAtMDQwMAoKICAgIDgzeHg6IFVFQzogQWRkZWQgc3VwcG9ydCBmb3IgYml0QmFuZyBNSUkgZHJpdmVyIGFjY2VzcyB0byBQSFlzCgogICAgVGhpcyBwYXRjaCBlbmFibGVkIHN1cHBvcnQgZm9yIGhhdmluZyBQSFlzIG9uIGJpdEJhbmcgTUlJIGFuZCB1ZWMgTUlJCiAgICBvcGVyYXRpbmcgYXQgdGhlIHNhbWUgdGltZS4gTW9kZWxlZCBhZnRlciB0aGUgTVBDODM2MEFEUyBpbXBsZW1lbnRhdGlvbi4KCiAgICBBZGRlZCB0aGUgYWJpbGl0eSB0byBzcGVjaWZ5IHdoaWNoIGV0aGVybmV0IGludGVyZmFjZXMgaGF2ZSBiaXRiYW5nIFNNSQogICAgb24gdGhlIGJvYXJkIGhlYWRlciBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDk3Mzk5NDZjYzViNjE2YzAyNmQ0MzNiZDA3ZDE5M2NmNDUyZGRlYTAKQXV0aG9yOiBSb2JpbiBHZXR6IDxyZ2V0ekBibGFja2Zpbi51Y2xpbnV4Lm9yZz4KRGF0ZToJTW9uIE1hciA4IDE0OjA3OjAwIDIwMTAgLTA1MDAKCiAgICAuL25ldC9uZXQuYyAtIG1ha2UgTWljcm9zb2Z0IGRucyBzZXJ2ZXJzIGhhcHB5IHdpdGggcmFuZG9tX3BvcnQoKSBudW1iZXJzCgogICAgRm9yIHNvbWUgcmVhc29uLCAod2hpY2ggSSBjYW4ndCBmaW5kIGFueSBkb2N1bWVudGF0aW9uIG9uKSwgaWYgVS1Cb290CiAgICBnaXZlcyBhIHBvcnQgbnVtYmVyIGhpZ2hlciB0aGFuIDE3NTAwIHRvIGEgTWljcm9zb2Z0IEROUyBzZXJ2ZXIsIHRoZQogICAgc2VydmVyIHdpbGwgcmVwbHkgdG8gcG9ydCAxNzUwMCwgYW5kIFUtQm9vdCB3aWxsIGlnbm9yZSB0aGluZ3MgKHNpbmNlCiAgICB0aGF0IGlzbid0IHRoZSBwb3J0IGl0IGFza2VkIHRoZSBETlMgc2VydmVyIHRvIHJlcGx5IHRvKS4KCiAgICBUaGlzIGZpeGVzIHRoYXQgYnkgZW5zdXJpbmcgdGhlIHJhbmRvbSBwb3J0IG51bWJlciBpcyBsZXNzIHRoYW4gMTc1MDAuCgogICAgU2lnbmVkLW9mZi1ieTogIFJvYmluIEdldHogPHJnZXR6QGJsYWNrZmluLnVjbGludXgub3JnPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA2ZjVmODlmMDExOTVlMmQwMDliMzE3ZGYyNzE5N2EzOGZjYWIzNTUzCkF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+CkRhdGU6CVRodSBBcHIgMSAxNDoxNjo0MSAyMDEwICswMjAwCgogICAgUmVtb3ZlIHVudXNlZCAibG9jYWxfY3JjMzIiIGZ1bmN0aW9uLgoKICAgIEZvciBjb2RlIGFyY2hlb2xvZ2lzdHMsIHRoaXMgaXMgYSBuaWNlIGV4YW1wbGUgb2YgY29weSBhbmQgcGFzdGUgaGlzdG9yeS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYWJhNGI2OWQwMTQ1N2FiMjk4OGU5MWM4NTkyZTVkMmZmYjEwZjU2OQpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDMxIDE3OjU2OjA4IDIwMTAgKzAyMDAKCiAgICBuZXQ6IFRyaXZpYWwgY29kaW5nIHN0eWxlIGlzc3VlIHdpdGggZW1wdHkgZm9yIHN0YXRlbWVudAoKICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBlM2YyYTkzMzYyYzgyM2ZjMWZlYjVlOGE0MGZmM2MxMjA3MTZhMDViCkF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgpEYXRlOglXZWQgTWFyIDMgMTU6Mjc6MjEgMjAxMCArMDUzMAoKICAgIG5ldDogS2lya3dvb2RfZWdpZ2EuYzogZml4ZWQgYnVpbGQgd2FybmluZ3MKCiAgICBUaGlzIHBhdGNoIGZpeGVzIGZvbGxvd2luZyBidWlsZCB3YXJuaW5ncyBmb3Iga2lya3dvb2RfZWdpZ2EuYwoKICAgIGtpcmt3b29kX2VnaWdhLmM6IEluIGZ1bmN0aW9uICJrd2diZV9pbml0IjoKICAgIGtpcmt3b29kX2VnaWdhLmM6NDQ4OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKICAgIGtpcmt3b29kX2VnaWdhLmM6IEluIGZ1bmN0aW9uICJrd2diZV9yZWN2IjoKICAgIGtpcmt3b29kX2VnaWdhLmM6NjA5OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDIwZDk4YzJjZWEzMzk4YWQ5M2JlY2NkNDcyN2EzNzFmNDE1MTQwODYKQXV0aG9yOiBBc2VuIERpbW92IDxkaW1vdkByb25ldGl4LmF0PgpEYXRlOglNb24gQXByIDE5IDE0OjE4OjQzIDIwMTAgKzAzMDAKCiAgICBwbTkyNjMgY29udmVydGVkIHRvIGF0OTEgc29jIGFjY2VzcwoKICAgIFNpZ25lZC1vZmYtYnk6IEFzZW4gRGltb3YgPGRpbW92QHJvbmV0aXguYXQ+Cgpjb21taXQgZDZiOTFlMzBkMzI4NzFlYjIwYjYyMjc1MTlmZDJmM2E2ZWEwNzNmZApBdXRob3I6IEFzZW4gRGltb3YgPGRpbW92QHJvbmV0aXguYXQ+CkRhdGU6CU1vbiBBcHIgMTkgMTQ6MTc6MjIgMjAxMCArMDMwMAoKICAgIGF0OTE6IGRlZmluZSBtYXRyaXggcmVnaXN0ZXJzIGJpdCBmaWVsZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBBc2VuIERpbW92IDxkaW1vdkByb25ldGl4LmF0PgoKY29tbWl0IGVlYjUwY2UxOTM0NTM5NTE1MjkwMTVmNTBlNWMxY2NkN2I1NWFhZDIKQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KRGF0ZToJVHVlIEFwciAxMyAxMjoxOTowNiAyMDEwICswMjAwCgogICAgTVgzMTogUmVtb3ZlZCBlcnJvbmVvdXMgYm9hcmQgbmFtZSBmcm9tIFFPTkcKCiAgICBRT05HIGlzIGEgbW9kdWxlIHRoYXQgY2FuIGJlIGluc3RhbGxlZCBvbiBzZXZlcmFsIGJvYXJkcywKICAgIG5vdCBvbmx5IG9uIHRoZSBRT05HLUVWQiBtYW51ZmFjdHVyZWQgYnkgRGF2ZSBzcmwuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Cgpjb21taXQgYzlkOTQ0ZDM1ZTc5MDQyMjljNTMzM2U3NjFiY2U5ZDQzMjQ5NzFmOApBdXRob3I6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgpEYXRlOglUaHUgQXByIDggMTc6MjM6NTIgMjAxMCArMDIwMAoKICAgIE1YMzE6IEFkZCBVQkkgc3VwcG9ydCB0byBRT05HIG1vZHVsZQoKICAgIFRoZSBVQkkvVUJJRlMgc3VwcG9ydCBpcyBhZGRlZCB0byB0aGUgUU9ORyBtb2R1bGUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Cgpjb21taXQgZWFiNDBmODE5ZGRkNTBlZWY0NjU2MTlkYjEzODZjMDUzYjU5YTk1YgpBdXRob3I6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgpEYXRlOglXZWQgTWFyIDMxIDEwOjI3OjQ3IDIwMTAgKzAyMDAKCiAgICBNWDMxOiBTdXBwb3J0IDEyOE1CIFJBTSBvbiBRT05HIG1vZHVsZQoKICAgIFRoZSBRT05HIG1vZHVsZSBjYW4gYmUgZG93bnNpemVkIGFuZCBkZWxpdmVyZWQKICAgIHdpdGggMTI4TUIgaW5zdGVhZCBvZiAyNTZNQi4gVGhlIHBhdGNoIGFkZHMKICAgIHJ1biB0aW1lIHN1cHBvcnQgZm9yIHRoZSB0d28gZGlmZmVyZW50IG1lbW9yeQogICAgY29uZmlndXJhdGlvbnMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Cgpjb21taXQgNDU5OTdlMGE4NmVlOGQ4YWJlYzZkNzkxYTI0MWNiMjAwMTFmZTBlMwpBdXRob3I6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgpEYXRlOglNb24gTWFyIDI5IDE2OjQzOjM5IDIwMTAgKzAyMDAKCiAgICBNWDMxOiBBZGQgc3VwcG9ydCBmb3IgTkFORCB0byBRT05HIGJvYXJkCgogICAgVGhlIE5BTkQgZGV2aWNlIGlzIGNvbm5lY3RlZCB0byB0aGUgRlBHQSBvZiB0aGUgUU9ORyBib2FyZAogICAgYW5kIG5vdCB0byB0aGUgTkZDIGNvbnRyb2xsZXIuIEZvciB0aGlzIHJlYXNvbiwgdGhlIEZQR0EgbXVzdAogICAgYmUgc2V0IGFuZCBpbml0aWFsaXplZCBiZWZvcmUgYWNjZXNzaW5nIHRvIHRoZSBOQU5EIGl0c2VsZi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KCmNvbW1pdCBlZmI5NTkxMDY5ZWUyNzZmN2ZhMjdhODIxMjQwYzc1MTFmNzJmZTY1CkF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CU1vbiBNYXIgMjkgMTU6NTY6MTAgMjAxMCArMDIwMAoKICAgIE1YMzE6IGFkZCBwaW4gZGVmaW5pdGlvbnMgZm9yIE5BTkQgY29udHJvbGxlcgoKICAgIEFkZCBwaW4gZGVmaW5pdGlvbnMgcmFsdGVkIHRvIHRoZSBOQU5EIGNvbnRyb2xsZXIgdG8gYmUgdXNlZAogICAgdG8gc2V0IHVwIHRoZSBwaW4gbXVsdGlwbGV4ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Cgpjb21taXQgN2QyN2NkMDhiNGMxYWRmZDU4YzU0YWFhOGI4YzhmNGVlYjNjNzAyMQpBdXRob3I6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgpEYXRlOglUdWUgQXByIDEzIDEyOjA3OjAwIDIwMTAgKzAyMDAKCiAgICBNWDMxOiBhZGQgYWNjZXNzb3IgZnVuY3Rpb24gdG8gZ2V0IGEgZ3BpbwoKICAgIFRoZSBwYXRjaCBhZGRzIGFuIGFjY2Vzc29yIGZ1bmN0aW9uIHRvIGdldCB0aGUgdmFsdWUgb2YgYSBncGlvLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgoKY29tbWl0IGRmZTgzMzUyY2I1OGM1NWRmZGJkNWI1MzVjYjMzNTUyNmNiMWM1ODEKQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KRGF0ZToJVHVlIEFwciAxMyAxMjozODo0MyAyMDEwICswMjAwCgogICAgbXg1MWV2azogY29ycmVjdCBsaXN0IG9mIHBvc3NpYmxlIEJPT1RfRlJPTSB2YWx1ZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KCmNvbW1pdCBmNTgxZTNhMjE1N2ZiZDczNmU3ZGQyMzc4NDY1YWUyNDJmYmE1NDVjCkF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CVR1ZSBBcHIgMTMgMTI6Mzg6MjIgMjAxMCArMDIwMAoKICAgIG1raW1hZ2U6IGNvcnJlY3Qgc3BlbGxpbmcgZXJyb3IgaW4gaW14aW1hZ2UKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KCmNvbW1pdCAzNDE5NmIwYThiZDdhYjZkNDcyZTJlNmY2YzkwYjczZTkxNWExZmFlCkF1dGhvcjogSm9obiBSaWdieSA8amNyaWdieUBnbWFpbC5jb20+CkRhdGU6CVdlZCBBcHIgNyAyMzozMDowOSAyMDEwIC0wNjAwCgogICAgTVgyNSBwcmludCBhcm0gY2xvY2sgaW5zdGVhZCBvZiBtcGxsY2xrIG9uIGJvb3QKCiAgICBSZXBsYWNlIGNhbGwgdG8gaW14X2dldF9tcGxsY2xrIHdpdGggaW14X2dldF9hcm1jbGsKICAgIHRvIHNob3cgZnJlcXVlbmN5IG9mIEFSTSBjb3JlIGluc3RlYWQgb2YgbXBsbCBpbnRlcm5hbAogICAgYnVzIGluIHByaW50X2NwdWluZm8uCgogICAgU2lnbmVkLW9mZi1ieTogSm9obiBSaWdieSA8amNyaWdieUBnbWFpbC5jb20+CiAgICBDQzogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Cgpjb21taXQgMWM5ZDkxYWNhNjQ5ZjE3NzYyYmFlMmMwZTM4ZjUxMDFkNjJlZDBiNQpBdXRob3I6IEZyYW5zIE1ldWxlbmJyb2VrcyA8W2ZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbV0+CkRhdGU6CVR1ZSBBcHIgNiAxOTowNjoxMSAyMDEwICswNTMwCgogICAgY29uZmlncy9vcGVucmRfYmFzZS5oOiByZW9yZGVyZWQgbWFjcm9zCgogICAgbW92ZWQgQ09ORklHX0NNRF9GQVQgdG8gZmlsZXN5c3RlbSBzZWN0aW9uCiAgICBzd2FwcGVkIENPTkZJR19DTURfTkFORCBhbmQgQ09ORklHX0NNRF9NSUkgc28gdGhleSBhcmUgYWxwaGEgY29ycmVjdAoKICAgIFNpZ25lZC1vZmYtYnk6IEZyYW5zIE1ldWxlbmJyb2VrcyA8ZnJhbnNtZXVsZW5icm9la3NAZ21haWwuY29tPgoKY29tbWl0IDU0MTRmZWM4NWZmNTU4YWY4ODIzZDQzOTFmMDM5NzcyODg4NzFmZTQKQXV0aG9yOiBGcmFucyBNZXVsZW5icm9la3MgPFtmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb21dPgpEYXRlOglUdWUgQXByIDYgMTg6MjY6MTkgMjAxMCArMDUzMAoKICAgIGNvbmZpZ3Mvc2hlZXZhcGx1ZzogYWRkZWQgYSBmZXcgYWRkaXRpb25hbCBjb21tYW5kcwoKICAgIFRoaXMgcGF0Y2ggaW5jbHVkZXMgYSBmZXcgYWRkaXRpb25hbCBjb21tYW5kcyBpbiB0aGUgc2hlZXZhcGx1ZwogICAgdmVyc2lvbiBvZiB1LWJvb3Q6CiAgICAtIHN1cHBvcnQgZm9yIExPTkdIRUxQIHNvIHlvdSBjYW4gZ2V0IGhlbHAgbWVzc2FnZXMKICAgIC0gYXV0byBjb21wbGV0aW9uIGFuZCBjb21tYW5kIGVkaXRpbmcKICAgIC0gdWJpIGFuZCBtaWkgc3VwcG9ydAogICAgLSBleHQyIGZpbGVzeXN0ZW0gKGNvbnZlbmllbnQgaWYgeW91IGhhdmUgYW4gZXh0MiBmcm9tIHdoaWNoIHlvdSB3YW50IHRvIGJvb3QpCiAgICAtIGpmZnMyIGFuZCB1YmlmcyBmaWxlc3lzdGVtcyAoaWYgeW91IHdhbnQgdG8gdXNlIHRoZXNlIGluIE5BTkQpCgogICAgVGhpcyBhbHNvIG1ha2VzIGl0IG1vcmUgc2ltaWxhciB0byBvcGVucmQgY2xpZW50LgoKICAgIFNpZGUgZWZmZWN0IG9mIHRoaXMgcGF0Y2ggaXMgdGhhdCB0aGUgY29kZSBub3cgbmVlZHMgMyBzZWN0b3JzIGkucy5vLiAyCiAgICBzbyBhbiBleGlzdGluZyBlbnYgaXMgb3ZlcndyaXR0ZW4KCiAgICBTaWduZWQtb2ZmLWJ5OiBGcmFucyBNZXVsZW5icm9la3MgPGZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbT4KCmNvbW1pdCAxNmI3NjcwNWQzNmFjMTM3ZmE5MjMxY2VkZmUxMzU1NTYxNjM5ZTQ3CkF1dGhvcjogU2lkZGFydGggR29yZSA8W2dvcmVzQG1hcnZlbGwuY29tXT4KRGF0ZToJVGh1IE1hciAxOCAyMDoyNTo0MCAyMDEwICswNTMwCgogICAgTWFydmVsbCBHdXJ1UGx1ZyBCb2FyZCBTdXBwb3J0CgogICAgR3VydVBsdWcgU3RhbmRhcmQ6IDEgR2IgRXRoZXJuZXQsIDIgVVNCIDIuMAogICAgR3VydVBsdWcgUGx1czogMiBHYiBFdGhlcm5ldCwgMiBVU0IgMi4wLCAxIGVTQVRBLCAxIHVTRCBzbG90CgogICAgUmVmZXJlbmNlczoKICAgIGh0dHA6Ly93d3cuZ2xvYmFsc2NhbGV0ZWNobm9sb2dpZXMuY29tL3QtZ3VydXBsdWdkZXRhaWxzLmFzcHgKICAgIGh0dHA6Ly9wbHVnY29tcHV0ZXIub3JnCgogICAgVGhpcyBwYXRjaCBpcyBmb3IgR3VydVBsdWcgUGx1cywgYnV0IGl0IHN1cHBvcnRzIFN0YW5kYXJkIHZlcnNpb24KICAgIGFzIHdlbGwuCgogICAgU2lnbmVkLW9mZi1ieTogU2lkZGFydGggR29yZSA8Z29yZXNAbWFydmVsbC5jb20+Cgpjb21taXQgNWUxZmU4OGZlM2RmMjU1NWE4YTBjYmE3ZDJmZmFmMmIwMzA0MWRmYgpBdXRob3I6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgpEYXRlOglTdW4gTWFyIDI4IDEzOjQzOjI2IDIwMTAgKzAyMDAKCiAgICBNb3ZlZCBib2FyZCBzcGVjaWZpYyB2YWx1ZXMgaW4gY29uZmlnIGZpbGUKCiAgICBUaGUgbG93bGV2ZWxfaW5pdCBmaWxlIGNvbnRhaW5lZCBzb21lIGhhcmQtY29kZWQgdmFsdWVzCiAgICB0byBzZXR1cCB0aGUgUkFNLiBUaGVzZSBib2FyZCByZWxhdGVkIHZhbHVlcyBhcmUgbW92ZWQgaW50bwogICAgdGhlIGJvYXJkIGNvbmZpZ3VyYXRpb24gZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KCmNvbW1pdCAyNzIwMTc4NTMzMzlmNWI5Njg1Zjk0ODhiZGFmNTQwNTgxMmQxMmE0CkF1dGhvcjogRmFiaW8gRXN0ZXZhbSA8ZmFiaW9lc3RldmFtQHlhaG9vLmNvbT4KRGF0ZToJV2VkIE1hciAzMSAwNjozMjo1NiAyMDEwIC0wNzAwCgogICAgTVg1MUVWSzogUmVtb3ZlIENQTEQgcmVsYXRlZCBjb2RlCgogICAgVGhlcmUgaXMgbm8gQ1BMRCBvbiBNWDUxRVZLIGJvYXJkLCBzbyByZW1vdmUgQ1BMRCByZWxhdGVkIGZ1bmN0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEZhYmlvIEVzdGV2YW0gPGZhYmlvLmVzdGV2YW1AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiYmUzMTA5MjJmNGQwYjEyYzhhYmE5N2I0NWVkOTc5ZGI5YzBlYzlhCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CUZyaSBNYXIgNSAwNzozNjozMyAyMDEwICswMTAwCgogICAgYXJtLCBpLm14Mjc6IGFkZCBzdXBwb3J0IGZvciBtYWduZXNpdW0gYm9hcmQgZnJvbSBwcm9qZWN0aW9uZGVzaWduCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBtYWduZXNpdW0gYm9hcmQgZnJvbQogICAgcHJvamVjdGlvbmRlc2lnbi4gVGhpcyBib2FyZCB1c2VzIGkuTVgyNyBTb0MgYW5kIGhhcwogICAgOE1CIE5PUiBmbGFzaCwgMTI4TUIgTkFORCBmbGFzaCwgRkVDIGV0aGVybmV0IGNvbnRyb2xsZXIKICAgIGludGVncmF0ZWQgaW50byBpLk1YMjcuIEFzIHRoaXMgcG9ydCBpcyBiYXNlZCBvbgogICAgdGhlIGlteDI3bGl0ZSBwb3J0LCBjb21tb24gY29uZmlnIG9wdGlvbnMgYXJlIGNvbGxlY3RlZAogICAgaW4gaW5jbHVkZS9jb25maWdzL2lteDI3bGl0ZS1jb21tb24uaAoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDFlNjVjMmJlYjU4MDVmOTc1Y2Q1ZDBhYjdkODUzMDQwYTcxNmQ1MWIKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVGh1IE1hciA0IDA4OjEyOjA1IDIwMTAgKzAxMDAKCiAgICBhcm0sIG14Mjc6IGFkZCBzdXBwb3J0IGZvciBTREhDMSBwaW4gaW5pdAoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDNiYjZiMDM3ZTg1NTdmZDNjMGYzYjNkOTg0MGM4YjU5OTY2NTFkY2IKQXV0aG9yOiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+CkRhdGU6CVdlZCBNYXIgMjQgMTU6MzE6MDYgMjAxMCArMDkwMAoKICAgIFNBTVNVTkc6IG1ha2UgczVwIGNvbW1vbiBncGlvIGZ1bmN0aW9ucwoKICAgIEJlY2F1c2Ugb2YgczVwYzF4eCBncGlvIGlzIHNhbWUgYXMgczVwIHNlaXJlcyBTb0MsCiAgICBtb3ZlIGdwaW8gZnVuY3Rpb25zIHRvIGRydmllci9ncGlvLwogICAgYW5kIG1vZGlmeSBzdHJ1Y3R1cmUncyBuYW1lIGZyb20gczVwYzF4eF8gdG8gczVwXy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Cgpjb21taXQgNDZhM2I1YzhkZjkzOWY1NTQ3YmNkMzY4NDAzMDA3MmM5NGQwNmJkOApBdXRob3I6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KRGF0ZToJV2VkIE1hciAyNCAxNjo1OTozMCAyMDEwICswOTAwCgogICAgU0FNU1VORzogc2VyaWFsOiBtb2RpZnkgbmFtZSBmcm9tIHM1cGMxeHggdG8gczVwCgogICAgQmVjYXVzZSBvZiBvdGhlciBzNXAgc2VyaWVzIFNvQyB3aWxsIHVzZSB0aGVzZSBzZXJpYWwgZnVuY3Rpb25zLAogICAgbW9kaWZ5IGZ1bmN0aW9uJ3MgbmFtZSBhbmQgc3RydWN0dXJlJ3MgbmFtZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Cgpjb21taXQgZGEwZjJhZjI3OTU2M2RkYzc1ZWZmMzA0YWQ1Mzg5ZjdmMGU3OTM4MQpBdXRob3I6IEFzZW4gRGltb3YgPGRpbW92QHJvbmV0aXguYXQ+CkRhdGU6CVdlZCBBcHIgNyAxMjozMzoxMSAyMDEwICswMzAwCgogICAgcG05MjYzOiByZW1vdmUgQ09ORklHX0NNRF9BVVRPU0NSSVBUCgogICAgU2lnbmVkLW9mZi1ieTogQXNlbiBEaW1vdiA8ZGltb3ZAcm9uZXRpeC5hdD4KCmNvbW1pdCA0N2ViMDhhOTdlYjE2NmU5M2QwNDk1ODQ4YjBjNzU4MmEwNjM5ZmJjCkF1dGhvcjogQWxleGFuZGVyIEhvbGxlciA8aG9sbGVyQGFoc29mdHdhcmUuZGU+CkRhdGU6CU1vbiBNYXIgMjkgMjE6Mzk6NDMgMjAxMCArMDIwMAoKICAgIGF0OTE6IGFkZCBkZWZpbmVzIGZvciBSVFQgYW5kIEdQQlIKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSG9sbGVyIDxob2xsZXJAYWhzb2Z0d2FyZS5kZT4KCmNvbW1pdCBkYzhjYWI4NzQ1OWQ2ODJmYzI3MjQ0NDA0NDU5MmQyMDI0M2RhMmYwCkF1dGhvcjogQXNlbiBEaW1vdiA8ZGltb3ZAcm9uZXRpeC5hdD4KRGF0ZToJVHVlIEFwciA2IDE2OjE3OjM0IDIwMTAgKzAzMDAKCiAgICBwbTkyNjE6IHJlbW92ZSBDT05GSUdfQ01EX0FVVE9TQ1JJUFQKCiAgICBTaWduZWQtb2ZmLWJ5OiBBc2VuIERpbW92IDxkaW1vdkByb25ldGl4LmF0PgoKY29tbWl0IGUzMTUwYzc3NjE3YzdkNDUyNDIwZTZjODc3NjliNzliNjY3MWIxMmQKQXV0aG9yOiBBc2VuIERpbW92IDxkaW1vdkByb25ldGl4LmF0PgpEYXRlOglUdWUgQXByIDYgMTY6MTg6MDQgMjAxMCArMDMwMAoKICAgIHBtOTI2MSBjb252ZXJ0ZWQgdG8gYXQ5MSBzb2MgYWNjZXNzCgogICAgU2lnbmVkLW9mZi1ieTogQXNlbiBEaW1vdiA8ZGltb3ZAcm9uZXRpeC5hdD4KCmNvbW1pdCA3YmM4NzY4MDM5OTQ4ZTUwY2MxNDliZWEyZWMyMTRiZGUzMjQ1YzRhCkF1dGhvcjogdHJpeCA8dHJpeEB3aW5kcml2ZXIuY29tPgpEYXRlOglTYXQgQXByIDEwIDEyOjQ2OjQ5IDIwMTAgLTA1MDAKCiAgICBBUk0gVXBkYXRlIG1hY2gtdHlwZXMKCiAgICBGZXRjaGVkIGZyb20gaHR0cDovL3d3dy5hcm0ubGludXgub3JnLnVrL2RldmVsb3Blci9tYWNoaW5lcy9kb3dubG9hZC5waHAKICAgIEFuZCBidWlsdCB3aXRoCgogICAgcmVwbyBodHRwOi8vZnRwLmFybS5saW51eC5vcmcudWsvcHViL2xpbnV4L2FybS9rZXJuZWwvZ2l0LWN1ci9saW51eC0yLjYtYXJtCiAgICBjb21taXQgODViM2NjZTg4MGExOWU3ODI4NjU3MGQ1ZmQwMDRjYzNjYWMwNmY1NwoKICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KCmNvbW1pdCBkMzA2MWM2OTIxNTU0MTJhYTg3ZTdmNGY2NmI0YTJjN2I3N2VlNDE3CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgQXByIDI4IDExOjA5OjU5IDIwMTAgKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBBUEM0MDUgYnVpbGQgYnJlYWthZ2UKCiAgICBUaGlzIHBhdGNoIGZpeGVzIEFQQzQwNSBidWlsZCwgYnkgZGVmaW5pbmcgQ09ORklHX1BQQzRYWF9JMkMuIFRoaXMgaXMKICAgIG5lZWRlZCBzaW5jZSB0aGUgbW92ZSBvZiB0aGUgUFBDNHh4IEkyQyBkcml2ZXIgaW50byB0aGUgZHJpdmVycy9pMmMKICAgIGRpcmVjdG9yeS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBDYzogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KCmNvbW1pdCAwMjlmYWYzZTg1ZTk0MDZmMzJmMTMzZTZmMmExMTRlZDI2YjAyZmI0CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgQXByIDI3IDExOjM3OjI4IDIwMTAgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBzdXBwb3J0IGZvciBJQ09OIGJvYXJkIChQUEM0NDBTUGUpCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBNb3NhaXggVGVjaG5vbG9naWVzLCBJbmMuIElDT04gYm9hcmQsCiAgICBiYXNlZCBvbiB0aGUgQXBwbGllZE1pY3JvIChBTUNDKSBQUEM0NDBTUGUuIEl0J3MgZXF1aXBwZWQgd2l0aCBhbiBTT0RJTU0KICAgICg1MTJNQiBzdGFuZGFyZCkgYW5kIDY0TUJ5dGUgb2YgTk9SIEZMQVNILgoKICAgIFN1cHBvcnQgZm9yIHRoZSBvbmJvYXJkIFNNNTAyIHdpbGwgYmUgYWRkZWQgbGF0ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDk2YTBkNjIzNWRiNGM5M2MwM2Q0MWM0OTJmNTk2MGIxODU0N2I3YTcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBBcHIgMjYgMTM6MzE6MDggMjAxMCArMDIwMAoKICAgIHBwYzR4eDogQWRkIG1pc3NpbmcgQVBDNDA1IHRvIE1BS0VBTEwKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBDYzogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KCmNvbW1pdCA2NDEyM2UzZjA2Zjc0ZGQwOWI4NmUyYTQxZDc3ZDMxMDQ0ZjQ5NWZiCkF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CkRhdGU6CVR1ZSBBcHIgMjAgMDg6MTE6NDAgMjAxMCAtMDQwMAoKICAgIEZpeCB0eXBvcyBpbiBLb3JhdCBib2FyZCBjb25zb2xlIG91dHB1dAoKICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDhhMWNkYWE5ZDU0YzkzZGIzMDBlODU2NTE5MWQ2MDcxMmFhNDgxZGMKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgQXByIDI4IDEyOjU0OjQzIDIwMTAgKzAyMDAKCiAgICBRT05HOiBBZGFwdCBmbGFzaCBhZGRyZXNzZXMgYW5kIG10ZHBhcnRzIHRvIGdyb3duIGltYWdlIHNpemUKCiAgICBBbHNvIGVuYWJsZSBIVVNIIHNoZWxsLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZTFkMjk1MGQwZjVhYWE3YWI2NjA5ZmZhOTZkZGUyZTE2M2ZjMjkwMgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBBcHIgMjggMTA6NTg6MTAgMjAxMCArMDIwMAoKICAgIG10ZHBhcnRzOiBnZXQgcmlkIG9mIGN1c3RvbSBERUJVRyBtYWNybywgdXNlIGRlYnVnKCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDI2OTdlZmYxYWYxMzZjNjQyNGMwNjVjYmE5OTRhYTlhY2VhZGJjZDEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgQXByIDI4IDEwOjUzOjQ3IDIwMTAgKzAyMDAKCiAgICBtdGRwYXJ0czogZml4IHdyaXRlIHRocm91Z2ggTlVMTCBwb2ludGVyCgogICAgVGhlICJtdGRwYXJ0cyBhZGQiIGNvbW1hbmQgd3JvdGUgdGhyb3VnaCBhIE5VTEwgcG9pbnRlciAtIG9uIG1hbnkKICAgIHN5c3RlbXMgdGhpcyB3ZW50IHVubm90aWNlZCAoUG93ZXJQQyBoYXMgd3JpdGFibGUgUkFNIHRoZXJlLCBzb21lIEFSTQogICAgc3lzdGVtcyBoYXZlIFJPTSB3aGVyZSBhIHdyaXRlIGhhcyBubyBlZmZlY3QpLCBidXQgb24gYXJtMTEzNgogICAgKGkuTVgzMSkgaXQgY3Jhc2hlZCB0aGUgc3lzdGVtLgoKICAgIEFkZCBhcHByb3ByaWF0ZSBjaGVja3MuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA2ODY1MTY4MzU5Mzk1OGNlZGNkZmI5ZDA2YTVmZTBhNTI0ZjhkZDZlCkF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CVdlZCBBcHIgMjEgMDk6NDc6MTkgMjAxMCArMDIwMAoKICAgIHViaWZzbW91bnQgZmFpbHMgZHVlIHRvIG5vdCBpbml0aWFsaXplZCBsaXN0CgogICAgdWJpZnNtb3VudCBpcyBub3Qgd29ya2luZyBhbmQgY2F1c2VzIGFuIGFjY2VzcyB3aXRoCiAgICBhIHBvaW50ZXIgc2V0IHRvIHplcm8gYmVjYXVzZSB0aGUgdWJpZnNfZnNfdHlwZQogICAgaXMgbm90IGluaXRpYWxpemVkIGNvcnJlY3RseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3YzhjZjBkMGM3YjEyYzdjNjM3NjVlOTM2Y2Y3NjBkYzJjN2Q3MzA2CkF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CVdlZCBBcHIgMjEgMDk6NTY6MzEgMjAxMCArMDIwMAoKICAgIE1YMzE6IEFkZGVkIExDRCBzdXBwb3J0IGZvciBRT05HIG1vZHVsZQoKICAgIEFkZGVkIHN1cHBvcnQgZm9yIExDRCBhbmQgc3BsYXNoIGltYWdlIHRvIHRoZSBRT05HIG1vZHVsZS4KICAgIFRoZSBzdXBwb3J0ZWQgZGlzcGxheSBpcyBWQkVTVC1WR0czMjI0MDMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Cgpjb21taXQgN2UxYWZiNjJhN2U2ODg0MzI0OGI5YTc2YTI2NWM5MTkzZTcxNjc2OApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBcHIgMjAgMTA6MDI6MjQgMjAxMCAtMDUwMAoKICAgIHBwYzogU3BsaXQgTVBDODN4eCBTRVJERVMgY29kZSBmcm9tIE1QQzg1eHgvTVBDODZ4eC9Rb3JJUQoKICAgIFRoZSBNUEM4M3h4IFNFUkRFUyBjb250cm9sIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBvdGhlciBGU0wgUFBDIGNoaXBzLgogICAgRm9yIG5vdyBsZXRzIHNwbGl0IGl0IG91dCBzbyB3ZSBjYW4gc3RhbmRhcmRpemUgb24gaW50ZXJmYWNlcyBmb3IKICAgIGRldGVybWluaW5nIG9mIGEgZGV2aWNlIG9uIFNFUkRFUyBpcyBjb25maWd1cmVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBBY2tlZC1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzZjAyMDJlZDEzYWRkNWZkNmUyZWQ2NmZjYjNmNWUxMjI4Y2RmNzY2CkF1dGhvcjogTGFuIENodW5oZSA8YjI1ODA2QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBcHIgMjEgMDc6NDA6NTAgMjAxMCAtMDUwMAoKICAgIG1wYzg1eHg6IEFkZCB0aGUgYWJpbGl0eSB0byBzZXQgTENSUltDTEtESVZdIHRvIGltcHJvdmUgUi9XIHNwZWVkIG9mIGZsYXNoCgogICAgU2lnbmVkLW9mZi1ieTogTGFuIENodW5oZSA8YjI1ODA2QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDBjOTU1ZGFmYWI0OTVmZWY1YTc2ZjUzODMzODcyODFkMDQwODA1NmMKQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXByIDE0IDE5OjA1OjA2IDIwMTAgKzA4MDAKCiAgICA4NXh4OiBjbGVhbiB1cCB0aGUgaW9fc2VsIGZvciBQQ0kgZXhwcmVzcyBvZiBQMTAyMgoKICAgIGNsZWFuIHVwIHRoZSB3cm9uZyBpb19zZWwgZm9yIFBDSSBleHByZXNzIGFjY29yZGluZyB0byBsYXRlc3QgbWFudWFsLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDQ3MTA2Y2UxNjg4OTBkNjM3ZmQ4NDk2ODJiYTg4ZWNmZGI5YzM1ZGUKQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KRGF0ZToJV2VkIEFwciAxNCAxMTozMjoyMCAyMDEwICswMjAwCgogICAgODV4eC9zb2NyYXRlczogUmVtb3ZlIE5GUyBzdXBwb3J0IHRvIGZpdCBpbWFnZSBzaXplLgoKICAgIFRoaXMgZml4ZXMgYW4gb3ZlcmZsb3cgZHVyaW5nIHRoZSBsaW5rIHBoYXNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA5Y2UzYzIyODI3NmIwZjg1MTA1ZGE4YzM5YjE2NGYyYjZjODRlYTM0CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIEFwciAxMyAxMTowNzo1NyAyMDEwIC0wNTAwCgogICAgODV4eDogRml4IGNvbXBpbGUgd2FybmluZwoKICAgIGNwdS5jOiBJbiBmdW5jdGlvbiAnY2hlY2tjcHUnOgogICAgY3B1LmM6NDc6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAnZ3VyJwoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNGRiOTcwOGI5NGI2NzQ1ZjVjMWVhYTY5OWQ0ZDc2NDc3ZGU4NTg4YQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBcHIgMTMgMjM6NTY6MjMgMjAxMCAtMDUwMAoKICAgIDg1eHg6IENvbnZlcnQgY3B1X2luaXRfZiBjb2RlIHRvIHVzZSBvdXRfYmUzMiBmb3IgTEJDIHJlZ2lzdGVycwoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgY2QzYWJjZmEyZDRkYzhkZjA5ZjZkMDFlNzM1ZTRkYzJmNmM4N2ViYwpBdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBBcHIgMTIgMTQ6MjM6MzUgMjAxMCArMDgwMAoKICAgIGZzbF9zYXRhOiBNb3ZlIHRoZSBzbm9vcCBiaXQgdG8gYW5vdGhlciBwbGFjZQoKICAgIEZvciBQMTAyMiBTQVRBIGhvc3QgY29udHJvbGxlciwgdGhlIGRhdGEgc25vb3AgYml0IG9mIERXMyBpbiBQUkRUCiAgICBpcyBtb3ZlZCB0byBiaXQyOC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBlNDc3M2RlYmI3MzUzMjNhOWVlZGYzNTMyMzllOGU4OGUwM2Q3YzU4CkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEFwciAxMiAxNDoyMzoyNSAyMDEwICswODAwCgogICAgZnNsX3NhdGE6IEFkZCB0aGUgd29ya2Fyb3VuZCBmb3IgZXJyYXRhIFNBVEEtQTAwMQoKICAgIEFmdGVyIHBvd2VyIG9uLCB0aGUgU0FUQSBob3N0IGNvbnRyb2xsZXIgb2YgUDEwMjIgUmV2MSBpcyBjb25maWd1cmVkCiAgICBpbiBsZWdhY3kgbW9kZSBpbnN0ZWFkIG9mIHRoZSBleHBlY3RlZCBlbnRlcnByaXNlIG1vZGUuCgogICAgU29mdHdhcmUgbmVlZHMgdG8gY2xlYXIgYml0WzI4XSBvZiBIQ29udHJvbCByZWdpc3RlciB0byBjaGFuZ2UgdG8KICAgIGVudGVycHJpc2UgbW9kZSBhZnRlciBicmluZ2luZyB0aGUgaG9zdCBvZmZsaW5lLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDk5YmFjNDc5ZGQxODM1MjlmNGUyNTlhMGRlOGQzMTY0NDIxOWQ0ODcKQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgRGVjIDggMTE6NTY6NDggMjAwOSArMDgwMAoKICAgIGZzbC1kZHI6IEFkZCBleHRyYSBjeWNsZSB0byB0dXJuYXJvdW5kIHRpbWVzCgogICAgQWRkIGFuIGV4dHJhIGN5Y2xlIHR1cm5hcm91bmQgdGltZSB0byByZWFkLT53cml0ZSB0byBlbnN1cmUgc3RhYmlsaXR5CiAgICBhdCBoaWdoIEREUiBmcmVxdWVuY2llcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmOGQwNWU1ZTU4ODhkODhhYjQyNTI0ZDY5OTkyNDkzNmU4ZTc3OTcwCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE1hciA1IDEyOjIzOjAwIDIwMTAgKzA4MDAKCiAgICBmc2wtZGRyOiBhZGQgdGhlIG1hY3JvIGZvciBSdHRfTm9tIGRlZmluaXRpb24KCiAgICBhZGQgdGhlIG1hY3JvIGRlZmluaXRpb24gZm9yIFJ0dF9Ob20gdGVybWluYXRpb24gdmFsdWUgZm9yIEREUjMKCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAxMjMxYzQ5OGUwMTZiNWJmZTg1ZjFlYjg3YzJlMDQ0ZDMzODlkN2RhCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEFwciA3IDEwOjM5OjQ2IDIwMTAgLTA1MDAKCiAgICBwcGMvcDQwODA6IEFkZCBwNDA4MCBERVZESVNSMiAmIFNSRFNfUExMQ1IwIGRlZmluZXMKCiAgICBBZGRlZCBzb21lIG5lZWRlZCBmaW5lcyBhbmQgc29tZSBtaXNjIGFkZGl0aW9uYWwgZGVmaW5lcwogICAgdXNlZCBieSBwNDA4MCBpbml0aWFsaXphdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDE3ZDkwZjMxYTgxMGExOWFkZTFhMWM1MzRmZGU5ZjY1ZDRkNjYzOTAKQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgTWFyIDUgMTI6MjM6MDAgMjAxMCArMDgwMAoKICAgIHBwYy9wNDA4MDogRXh0ZW5kIHRoZSBHVVRTIG1lbW9yeSBtYXAKCiAgICBFeHRlbmQgcGluIGNvbnRyb2wgYW5kIGNsb2NrIGNvbnRyb2wgdG8gR1VUUyBtZW1vcnkgbWFwCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYWI0OGNhMWE2NjFiOWFiOGUzZmVlOWZlMmRmNjU0MzJiMDllZDA3MwpBdXRob3I6IFNyaWthbnRoIFNyaW5pdmFzYW4gPHNyaWthbnRoLnNyaW5pdmFzYW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEZlYiAxMCAxNzozMjo0MyAyMDEwICswODAwCgogICAgcHBjL3A0MDgwOiBGaXggc3luY2hyb25vdXMgZnJlcXVlbmN5IGNhbGN1bGF0aW9ucwoKICAgIFdoZW4gRERSIGlzIGluIHN5bmNocm9ub3VzIG1vZGUsIHRoZSBleGlzdGluZyBjb2RlIGFzc2lnbnMgc3lzY2xrCiAgICBmcmVxdWVuY3kgdG8gRERSIGZyZXF1ZW5jeS4gIEl0IHNob3VsZCBiZSBzeW5jaHJvbm91cyB3aXRoIHRoZSBwbGF0Zm9ybQogICAgZnJlcXVlbmN5LglDUFUgZnJlcXVlbmN5IGlzIGJhc2VkIG9uIHBsYXRmb3JtIGZyZXF1ZW5jeSBpbiBzeW5jaHJvbm91cwogICAgbW9kZS4KCiAgICBBbHNvIGZpeDoKCiAgICAqIEZpeGVzIHRoZSBiaXQgbWFzayBmb3IgRERSX1NZTkMgKFJDV1NSNVsxODRdKQogICAgKiBDb3JyZWN0cyB0aGUgZGV0ZWN0aW9uIG9mIHN5bmNocm9ub3VzIG1vZGUuCgogICAgU2lnbmVkLW9mZi1ieTogU3Jpa2FudGggU3Jpbml2YXNhbiA8c3Jpa2FudGguc3Jpbml2YXNhbkBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDE3NDljM2RhOGQ4NDQ1Y2RmNzhkNzAxMjBhODAzZTNlOTU1MzExM2MKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgQXByIDcgMDI6NDk6MTIgMjAxMCAtMDUwMAoKICAgIHBwYy84NXh4OiBGaXh1cCBQQ0kgbm9kZXMgZm9yIFAxX1AyX1JEQgoKICAgIFdoaWxlIHdlIGhhZCBmdF9wY2lfYm9hcmRfc2V0dXAgaXQgd2Fzbid0IGJlaW5nIGNhbGxlZCBieQogICAgZnRfYm9hcmRfc2V0dXAuICBGaXggdGhhdCBzbyB3ZSBhY3R1YWxseSB1cGRhdGUgdGhlIGRldmljZSB0cmVlIFBDSQogICAgbm9kZXMgb24gUDFfUDJfUkRCIGJvYXJkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDhjYmIwZGRkN2U2OTZjNmE0YmUxYWUzYWIzYzk1ZDNjOGY2YTcwMzEKQXV0aG9yOiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+CkRhdGU6CVdlZCBBcHIgMjEgMDg6NDA6NTkgMjAxMCArMDgwMAoKICAgIG5pb3MyOiBhZGQgbmlvczItZ2VuZXJpYyBib2FyZAoKICAgIFRoaXMgaXMgYSBnZW5lcmljIGFwcHJvYWNoIHRvIHBvcnQgdS1ib290IGZvciBuaW9zMiBib2FyZHMuCiAgICBZb3UgbWF5IGZpbmQgdGhlIHVzYWdlIG9mIHRoaXMgYXBwcm9hY2ggb24gdGhlIG5pb3N3aWtpLAogICAgaHR0cDovL25pb3N3aWtpLmNvbS9EYXNVQm9vdAoKICAgIEEgZnBnYSBwYXJhbWV0ZXIgZmlsZSwgd2hpY2ggY29udGFpbnMgYmFzZSBhZGRyZXNzIGluZm9ybWF0aW9uCiAgICBhbmQgZHJpdmVycyBkZWNsYXJhdGlvbiwgaXMgZ2VuZXJhdGVkIGZyb20gQWx0ZXJhJ3MgaGFyZHdhcmUgc3lzdGVtCiAgICBkZXNjcmlwdGlvbiBzb3BjIGZpbGUgdXNpbmcgdG9vbHMuCgogICAgVGhlIGV4YW1wbGUgZnBnYSBwYXJhbWV0ZXIgZmlsZSBpcyBjb21wYXRpYmxlIHdpdGggRVAxQzIwLCBFUDFTMTAKICAgIGFuZCBFUDFTNDAgYm9hcmRzLiBTbyB0aGVzZSBib2FyZHMgY2FuIGJlIHJlbW92ZWQgYWZ0ZXIgdGhpcyBjb21taXQuCiAgICBUaG91Z2ggZXBjcyBjb250cm9sbGVyIGlzIHJlbW92ZWQgdG8gY3V0IHRoZSBkZXBlbmRlbmN5IG9mIGFsdGVyYV9zcGkKICAgIGRyaXZlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KCmNvbW1pdCA0NDFjYWMxMGQ4YTk0MzhiMTQ0YWIwYWQ0NjI4MDc4MGI1OGY2MzhiCkF1dGhvcjogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgpEYXRlOglUaHUgQXByIDIyIDE3OjI3OjE2IDIwMTAgKzA4MDAKCiAgICBuaW9zMjogZml4IG5vIGZsYXNoLCBhZGQgbmFuZCBhbmQgbW1jIGluaXQgaW4gYm9hcmQuYwoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgZXJyb3Igd2hlbiBDT05GSUdfU1lTX05PX0ZMQVNILiBBbmQgYWRkcwogICAgbmFuZCBmbGFzaCBhbmQgbW1jIGluaXRpYWxpemF0aW9uLCB3aGljaCBzaG91bGQgZ28gYmVmb3JlCiAgICBlbnYgaW5pdGlhbGl6YXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Cgpjb21taXQgZmQyNzEyZDBiMWQ0YzE2MjRiZWYzNWI3ODRlZTY0NDUxZWU1YTAxNwpBdXRob3I6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KRGF0ZToJVHVlIEFwciAyMCAxMTowMToxMSAyMDEwICswODAwCgogICAgbmlvczI6IGNvbnNvbGlkYXRlIHJlc2V0IGluaXRpYWxpemF0aW9uCgogICAgR2xvYmFsIGludGVycnVwdCBzaG91bGQgYmUgZGlzYWJsZWQgZnJvbSB0aGUgYmVnaW5uaW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgoKY29tbWl0IDk5NDg1Mjk2NmQyZTZjZjk4YzFkYmVlYThlZTYyYzIzM2IzMDVmZmIKQXV0aG9yOiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+CkRhdGU6CVdlZCBNYXIgMzEgMDg6MzA6MDggMjAxMCArMDgwMAoKICAgIGFsdGVyYV9qdGFnX3VhcnQ6IGJ5cGFzcyB3aGVuIG5vIGp0YWcgY29ubmVjdGlvbgoKICAgIFRoaXMgcGF0Y2ggYWRkcyBhbiBvcHRpb24gdG8gYnlwYXNzIG91dHB1dCB3YWl0aW5nIHdoZW4gdGhlcmUKICAgIGlzIG5vIGp0YWcgY29ubmVjdGlvbi4gVGhpcyBhbGxvd3MgdGhlIGp0YWcgdWFydCB3b3JrIHNpbWlsYXIKICAgIHRvIGEgc2VyaWFsIHVhcnQsIGllLCBib290IGV2ZW4gd2l0aG91dCBjb25uZWN0aW9uLgoKICAgIFRoaXMgb3B0aW9uIGlzIGVuYWJsZWQgd2l0aCBDT05GSUdfQUxURVJBX0pUQUdfVUFSVF9CWVBBU1MKCiAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KCmNvbW1pdCA3ZTgxMmYyZTljZGFjODBmNjI4N2Q0YWVlNWRlYjQzNDU5N2M0ZjhiCkF1dGhvcjogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgpEYXRlOglTYXQgQXByIDE3IDIzOjM0OjQwIDIwMTAgKzA4MDAKCiAgICBuaW9zMjogYWRkIGRtYV9hbGxvY19jb2hlcmVudAoKICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJuIGNhY2hlLWxpbmUgYWxpZ25lZCBhbGxvY2F0aW9uIHdoaWNoIGlzIG1hcHBlZAogICAgdG8gdW5jYWNoZWQgaW8gcmVnaW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgoKY29tbWl0IDBkYzFjN2Y2OTJjMTVmZTE3NDVlM2VlYWI5MThlOThlZTYxMjY2NzcKQXV0aG9yOiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+CkRhdGU6CVNhdCBBcHIgMTcgMjM6MTA6MDkgMjAxMCArMDgwMAoKICAgIG5pb3MyOiBhZGQgNjQgYml0cyBzd2FiIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZHMgNjQgYml0cyBzd2FiIHN1cHBvcnQuIE1vc3QgMzIgYml0cyBwcm9jZXNzb3JzIHVzZQogICAgdGhpcy4gV2UgbmVlZCA2NCBiaXRzIHN3YWIgZm9yIFVCSS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KCmNvbW1pdCBlNGJmNTg4NjA5ZDhkOWNlZmJjMzEyYTZjNmI4YmIzMDliMTk0ZmQ1CkF1dGhvcjogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgpEYXRlOglXZWQgTWFyIDMxIDA4OjM2OjI0IDIwMTAgKzA4MDAKCiAgICBuaW9zMjogYWRkIGFsdGVyYSBjZiByZXNldAoKICAgIFRoaXMgcGF0Y2ggdG9nZ2xlcyBwb3dlciB0byByZXNldCB0aGUgY2YgY2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KCmNvbW1pdCBkZDE2OGVmNWI4MjI1NTQwMWU0NmEyN2ZhYWUwOWUzOWM2Njk2N2ZlCkF1dGhvcjogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgpEYXRlOglTYXQgQXByIDE3IDE3OjM5OjEyIDIwMTAgKzA4MDAKCiAgICBuaW9zMjogYWxsb3cgbGluayBzY3JpcHQgb3ZlcnJpZGluZyBmcm9tIGJvYXJkcwoKICAgIFRoaXMgcGF0Y2ggYWxsb3cgYm9hcmRzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGxpbmsgc2NyaXB0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgoKY29tbWl0IDI5ZmQ3Y2ViM2MxY2I3ZmZhZmZjZTEwNDdlODA2ZDFlODVlM2FiNGIKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CVNhdCBBcHIgMjQgMTk6Mjc6MTEgMjAxMCArMDIwMAoKICAgIG1wYzUxMjE6IHBkbTM2MG5nOiBhZGQgY29wcm9jZXNzb3IgUE9TVAoKICAgIEFkZHMgY29wcm9jZXNzb3IgY29tbXVuaWNhdGlvbiBQT1NUIGNvZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgMmViZGI5YTlkN2FiY2IxN2ZkYmZkYzRiYmI3MWI0ZWY1MzhmYzcxMwpBdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KRGF0ZToJU2F0IEFwciAyNCAxOToyNzoxMCAyMDEwICswMjAwCgogICAgbXBjNTEyMTogYWRkIGNvbW1vbiBwb3N0X3dvcmRfbG9hZC9zdG9yZSBjb2RlCgogICAgQWRkIGNvbW1vbiBwb3N0X3dvcmRfbG9hZC9wb3N0X3dvcmRfc3RvcmUgcm91dGluZXMKICAgIGZvciBhbGwgbXBjNTEyMSBib2FyZHMuIHBkbTM2MG5nIGJvYXJkIFBPU1Qgc3VwcG9ydAogICAgYWRkZWQgYnkgc3Vic2VxdWVudCBwYXRjaCBuZWVkcyB0aGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCBhMzkyMWVlZmExNDQwZDIzZjIyNzUxNzA0Y2Q3ZGY5OTk3NjlmMTY5CkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglTYXQgQXByIDI0IDE5OjI3OjA5IDIwMTAgKzAyMDAKCiAgICBtcGM1MTIxOiBhZGQgc3VwcG9ydCBmb3IgUERNMzYwTkcgYm9hcmQKCiAgICBQRE0zNjBORyBpcyBhIE1QQzUxMjFFIGJhc2VkIGJvYXJkIGJ5IGlmbSBlY29tYXRpYyBnbWJoLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgV2Vpc3MgPG1pY2hhZWwud2Vpc3NAaWZtLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IGI5OTQ3YmJiMDhkMDQ4M2JlMDMwMDRiZGJjZTI4M2I2NDQ0NzFjYjcKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CVNhdCBBcHIgMjQgMTk6Mjc6MDggMjAxMCArMDIwMAoKICAgIG1wYzUxMjE6IGRldGVybWluZSBSQU0gc2l6ZSB1c2luZyBnZXRfcmFtX3NpemUoKQoKICAgIENvbmZpZ3VyZSBDT05GSUdfU1lTX01BWF9SQU1fU0laRSBhZGRyZXNzIHJhbmdlIGluCiAgICBERFIgTG9jYWwgQWNjZXNzIFdpbmRvdyBhbmQgZGV0ZXJtaW5lIHRoZSBSQU0gc2l6ZS4KICAgIEZpeCBERFIgTEFXIGFmdGVyd2FyZHMgdXNpbmcgZGV0ZWN0ZWQgUkFNIHNpemUuCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IDVkOTM3ZThiNTlmMjdkOGMzMDBhMmU3OGMxNjhhNGMyMmVjNjkyMmEKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CVNhdCBBcHIgMjQgMTk6Mjc6MDcgMjAxMCArMDIwMAoKICAgIG1wYzUxMng6IG1ha2UgTUVNIElPIENvbnRyb2wgY29uZmlndXJhdGlvbiBhIGJvYXJkIGNvbmZpZyBvcHRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgOGUyMzRlMzNiZjYwYTg1MDY4NWM3ZTgxZWE5MmQzODNjNjQzNDg2YgpBdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KRGF0ZToJU2F0IEFwciAyNCAxOToyNzowNiAyMDEwICswMjAwCgogICAgbXBjNTEyMTogYWRkIFBTQyBzZXJpYWwgY29tbXVuaWNhdGlvbiByb3V0aW5lcwoKICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCBlM2IyOGU2NzMyOWRlOTlhMzE1ZDUwOTkyMDc2MGRjYmM1NjVmOGM2CkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglTYXQgQXByIDI0IDE5OjI3OjA1IDIwMTAgKzAyMDAKCiAgICBtcGM1MTJ4OiBhZGQgbXVsdGkgc2VyaWFsIFBTQyBzdXBwb3J0CgogICAgRXh0ZW5kIG1wYzUxMnggc2VyaWFsIGRyaXZlciB0byBzdXBwb3J0IG11bHRpcGxlIFBTQyBwb3J0cy4KCiAgICBTdWJzZXF1ZW50IHBhdGNoZXMgZm9yIFBETTM2ME5HIGJvYXJkIHN1cHBvcnQgbWFrZSB1c2Ugb2YgdGhpcwogICAgZnVuY3Rpb25hbGl0eSBieSBkZWZpbmluZyBDT05GSUdfU0VSSUFMX01VTFRJIGluIHRoZSBib2FyZCBjb25maWcKICAgIGZpbGUuIEFkZGl0aW9uYWxseSB0aGUgdXNlZCBQU0MgZGV2aWNlcyBhcmUgc3BlY2lmaWVkIGJ5IGRlZmluaW5nCiAgICBlLmcuIENPTkZJR19TWVNfUFNDMSwgQ09ORklHX1NZU19QU0M0IGFuZCBDT05GSUdfU1lTX1BTQzYuCgogICAgU3VwcG9ydCBmb3IgUFNDIGRldmljZXMgb3RoZXIgdGhhbiAxLCAzLCA0IGFuZCA2IGlzIG5vdCBhZGRlZAogICAgYnkgdGhpcyBwYXRjaCBiZWNhdXNlIHRoZXNlIGFyZW4ndCB1c2VkIGN1cnJlbnRseS4gSW4gdGhlIGZ1dHVyZQogICAgaXQgY2FuIGJlIGVhc2lseSBhZGRlZCB1c2luZyBERUNMQVJFX1BTQ19TRVJJQUxfRlVOQ1RJT05TKE4pIGFuZAogICAgSU5JVF9QU0NfU0VSSUFMX1NUUlVDVFVSRShOKSBtYWNyb3MgaW4gY3B1L21wYzUxMngvc2VyaWFsLmMuCiAgICBBZGRpdGlvbmFsbHkgeW91IGhhdmUgdG8gYWRkIGNvZGUgZm9yIHJlZ2lzdGVyaW5nIGFkZGVkCiAgICBkZXZpY2VzIGluIHNlcmlhbF9pbml0aWFsaXplKCkgaW4gY29tbW9uL3NlcmlhbC5jLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCBmYmIwMDMwZTM4OTQxMTljMDg5MjU2ZjE2NjI2ZWRkMTY2Yzc2MjljCkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglTYXQgQXByIDI0IDE5OjI3OjA0IDIwMTAgKzAyMDAKCiAgICBzZXJpYWw6IHN0cnVjdCBzZXJpYWxfZGV2aWNlOiBhZGQgdW5pbml0KCkgZW50cnkgZm9yIGRyaXZlcnMKCiAgICBTdWJzZXF1ZW50IHBhdGNoIGV4dGVuZHMgbXBjNTEyeCBzZXJpYWwgZHJpdmVyIHRvIHN1cHBvcnQKICAgIG11bHRpcGxlIFBTQyBwb3J0cy4gVGhlIGRyaXZlciB3aWxsIHByb3ZpZGUgYW4gdW5pbml0KCkKICAgIGZ1bmN0aW9uIHRvIHN0b3AgdGhlIHNlcmlhbCBjb250cm9sbGVyIGFuZCB0byBkaXNhYmxlIHRoZQogICAgY29udHJvbGxlcidzIGNsb2NrLiBBZGRpbmcgdW5pbml0KCkgZW50cnkgdG8gc3RydWN0IHNlcmlhbF9kZXZpY2UKICAgIGFsbG93cyBkaXNhYmxpbmcgdGhlIHNlcmlhbCBjb250cm9sbGVyIGFmdGVyIHVzYWdlIG9mCiAgICBhIHN0ZGlvIHNlcmlhbCBkZXZpY2UuCgogICAgVGhpcyBwYXRjaCBhZGRzIHVuaW5pdCgpIGVudHJ5IHRvIHRoZSBzdHJ1Y3Qgc2VyaWFsX2RldmljZQogICAgYW5kIGZpeGVzIGluaXRpYWxpemF0aW9uIG9mIHRoaXMgc3RydWN0dXJlIGluIHRoZSBjb2RlCiAgICBhY2NvcmRpbmdseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgNzdjMTQ1OGQxMzBkMzM3MDQ0NzJkYjljODhkMjMxMGM4ZmM5MGY0YwpBdXRob3I6IERpcGVuIER1ZGhhdCA8ZGlwZW4uZHVkaGF0QGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBPY3QgNSAxNTo0MTo1OCAyMDA5ICswNTMwCgogICAgcHBjLzg1eHg6IFBJTyBTdXBwb3J0IGZvciBGU0wgZVNESEMgQ29udHJvbGxlciBEcml2ZXIKCiAgICBPbiBzb21lIEZyZWVzY2FsZSBTb0MgSW50ZXJuYWwgRE1BIG9mIGVTREhDIGNvbnRyb2xsZXIgaGFzIGJ1Zy4KICAgIFNvIFBJTyBNb2RlIGhhcyBiZWVuIGludHJvZHVjZWQgdG8gZG8gZGF0YSB0cmFuc2ZlciB1c2luZyBDUFUuCgogICAgU2lnbmVkLW9mZi1ieTogRGlwZW4gRHVkaGF0IDxkaXBlbi5kdWRoYXRAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxYTJlMjAzYjMxZDMzZmI3MjBmMmNmMTAzM2IyNDFhZDM2YWI0MDVhCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEFwciAyMCAxOTozNzo1NCAyMDEwIC0wNTAwCgogICAgbXBjODN4eDogdHVybiBvbiBpY2FjaGUgaW4gY29yZSBpbml0aWFsaXphdGlvbiB0byBpbXByb3ZlIHUtYm9vdCBib290IHRpbWUKCiAgICBiZWZvcmUsIE1QQzgzNDlJVFggYm9vdHMgdS1ib290IGluIDQuM3NlYzoKCgkgICAgY29sdW1uMSBpcyBlbGFwc2VkIHRpbWUgc2luY2UgZmlyc3QgbWVzc2FnZQoJICAgIGNvbHVtbjIgaXMgZWxhcHNlZCB0aW1lIHNpbmNlIHByZXZpb3VzIG1lc3NhZ2UKCSAgICBjb2x1bW4zIGlzIHRoZSBtZXNzYWdlCiAgICAwLjAwMCAwLjAwMDogVS1Cb290IDIwMTAuMDMtMDAxMjYtZ2ZkNGU0OWMgKEFwciAxMSAyMDEwIC0gMTc6MjU6MjkpIE1QQzgzWFgKICAgIDAuMDAwIDAuMDAwOgogICAgMC4wMDAgMC4wMDA6IFJlc2V0IFN0YXR1czoKICAgIDAuMDAwIDAuMDAwOgogICAgMC4wMzIgMC4wMzI6IENQVToJZTMwMGMxLCBNUEM4MzQ5RSwgUmV2OiAxLjEgYXQgNTMzLjMzMyBNSHosIENTQjogMjY2LjY2NyBNSHoKICAgIDAuMDMyIDAuMDAwOiBCb2FyZDogRnJlZXNjYWxlIE1QQzgzNDlFLW1JVFgKICAgIDAuMDMyIDAuMDAwOiBVUE1BOglDb25maWd1cmVkIGZvciBjb21wYWN0IGZsYXNoCiAgICAwLjAzMiAwLjAwMDogSTJDOglyZWFkeQogICAgMC4wNjEgMC4wMjg6IERSQU06CTI1NiBNQiAoRERSMSwgNjQtYml0LCBFQ0Mgb2ZmLCAyNjYuNjY3IE1IeikKICAgIDEuNTE2IDEuNDU2OiBGTEFTSDogMTYgTUIKICAgIDIuNjQxIDEuMTI1OiBQQ0k6CUJ1cyBEZXYgVmVuSWQgRGV2SWQgQ2xhc3MgSW50CiAgICAyLjY1MiAwLjAxMToJIDAwICAxMCAgMTA5NSAgMzExNCAgMDE4MCAgMDAKICAgIDIuNjUyIDAuMDAwOiBQQ0k6CUJ1cyBEZXYgVmVuSWQgRGV2SWQgQ2xhc3MgSW50CiAgICAyLjY1MiAwLjAwMDogSW46CXNlcmlhbAogICAgMi42NTIgMC4wMDA6IE91dDoJc2VyaWFsCiAgICAyLjY1MiAwLjAwMDogRXJyOglzZXJpYWwKICAgIDIuNjgyIDAuMDMwOiBCb2FyZCByZXZpc2lvbjogMS4wIChQQ0Y4NDc1QSkKICAgIDMuMDgwIDAuMzk4OiBOZXQ6CVRTRUMxOiBObyBzdXBwb3J0IGZvciBQSFkgaWQgZmZmZmZmZmY7IGFzc3VtaW5nIGdlbmVyaWMKICAgIDMuMDgwIDAuMDAwOiBUU0VDMCwgVFNFQzEKICAgIDQuMzAwIDEuMjE5OiBJREU6CUJ1cyAwOiAuKiogVGltZW91dCAqKgoKICAgIGFmdGVyLCBNUEM4MzQ5SVRYIGJvb3RzIHUtYm9vdCBpbiAzLjBzZWM6CgogICAgMC4wMTAgMC4wMTA6IFUtQm9vdCAyMDEwLjAzLTAwMTI3LWc0YjQ2OGNjLWRpcnR5IChBcHIgMTEgMjAxMCAtIDE3OjQ3OjI5KSBNUEM4M1hYCiAgICAwLjAxMCAwLjAwMDoKICAgIDAuMDEwIDAuMDAwOiBSZXNldCBTdGF0dXM6CiAgICAwLjAxMCAwLjAwMDoKICAgIDAuMDE3IDAuMDA3OiBDUFU6CWUzMDBjMSwgTVBDODM0OUUsIFJldjogMS4xIGF0IDUzMy4zMzMgTUh6LCBDU0I6IDI2Ni42NjcgTUh6CiAgICAwLjAxNyAwLjAwMDogQm9hcmQ6IEZyZWVzY2FsZSBNUEM4MzQ5RS1tSVRYCiAgICAwLjAzOCAwLjAyMDogVVBNQToJQ29uZmlndXJlZCBmb3IgY29tcGFjdCBmbGFzaAogICAgMC4wMzggMC4wMDA6IEkyQzoJcmVhZHkKICAgIDAuMDM4IDAuMDAwOiBEUkFNOgkyNTYgTUIgKEREUjEsIDY0LWJpdCwgRUNDIG9mZiwgMjY2LjY2NyBNSHopCiAgICAwLjI2MCAwLjIyMjogRkxBU0g6IDE2IE1CCiAgICAxLjM5MCAxLjEzMDogUENJOglCdXMgRGV2IFZlbklkIERldklkIENsYXNzIEludAogICAgMS4zOTAgMC4wMDA6CSAwMCAgMTAgIDEwOTUgIDMxMTQgIDAxODAgIDAwCiAgICAxLjM5MCAwLjAwMDogUENJOglCdXMgRGV2IFZlbklkIERldklkIENsYXNzIEludAogICAgMS40MDAgMC4wMTA6IEluOglzZXJpYWwKICAgIDEuNDAwIDAuMDAwOiBPdXQ6CXNlcmlhbAogICAgMS40MDAgMC4wMDA6IEVycjoJc2VyaWFsCiAgICAxLjQwMCAwLjAwMDogQm9hcmQgcmV2aXNpb246IDEuMCAoUENGODQ3NUEpCiAgICAxLjgzMiAwLjQzMjogTmV0OglUU0VDMTogTm8gc3VwcG9ydCBmb3IgUEhZIGlkIGZmZmZmZmZmOyBhc3N1bWluZyBnZW5lcmljCiAgICAxLjgzMiAwLjAwMDogVFNFQzAsIFRTRUMxCiAgICAzLjAzOCAxLjIwNTogSURFOglCdXMgMDogLioqIFRpbWVvdXQgKioKCiAgICBhbHNvIHRlc3RlZCBvbiB0aGVzZSBib2FyZHMgKGFsYmVpdCB3aXRoIGEgbGVzcyBhY2N1cmF0ZQogICAgYm9vdHRpbWUgbWVhc3VyZW1lbnQgbWV0aG9kKToKCiAgICBzZWNvbmRzOiBiZWZvcmUgIGFmdGVyCiAgICA4MzQ5TURTICB+Mi42ICAgIH4yLjIKICAgIDgzNjBNRFMgIH4yLjggICAgfjIuNgogICAgODMxM1JEQiAgfjIuNSAgICB+Mi4zICNuYW5kIGJvb3QKICAgIDgzN3hSREIgIH4zLjEgICAgfjIuMwoKICAgIGFsc28gdGVzdGVkIG9uIGFuIDgzMjNFUkRCLgoKICAgIHYyOiBhbHNvIHJlbW92ZSB0aGUgZGVsYXllZCBpY2FjaGUgZW5hYmxlbWVudCBhc3N1bXB0aW9uIGluIGFyY2ggcHBjJ3MKICAgIGJvYXJkLmMsIGFuZCBhZGQgYSBDT05GSUdfTVBDODN4eCBkZWZpbmUgaW4gdGhlIElUWCBjb25maWcgZmlsZSBmb3IKICAgIGNvbnNpc3RlbmN5IChldmVuIHRob3VnaCBpdCB3YXMgYWxyZWFkeSBiZWluZyBkZWZpbmVkIGluIDgzeHgnCiAgICBjb25maWcubWspLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYTA1OWU5MGUxNmUxMjZlMjVkYTMzY2UyM2EzN2UyYWNjZTg0Mjg0YwpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBBcHIgMTUgMTc6MzY6MDUgMjAxMCAtMDUwMAoKICAgIG1wYzgzeHg6IGVuYWJsZSBjb21tYW5kIGxpbmUgYXV0b2NvbXBsZXRpb24KCiAgICBiZWNhdXNlIGl0J3MgY29udmVuaWVudC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGRmZTgxMmM3NDRlZTZkYWNhZTNiNGQ1NTM2OTQ2NDI2NjhkOWFjOWQKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXByIDE1IDE3OjM2OjAyIDIwMTAgLTA1MDAKCiAgICBtcGM4M3h4OiB1c2UgIkEiIG5vbWVuY2xhdHVyZSBvbmx5IG9uIG1wYzgzNHggYW5kIG1wYzgzNnggZmFtaWxpZXMKCiAgICBtYXJrZXRpbmcgZGlkbid0IGV4dGVuZCB0aGVpciBwb3N0cGVuZC13aXRoLWFuLUEgbmFtaW5nIHN0cmF0ZWd5CiAgICBvbiByZXYuMidzIGFuZCBoaWdoZXIgYmV5b25kIHRoZSBmaXJzdCB0d28gODN4eCBmYW1pbGllcy4gIFRoaXMKICAgIHBhdGNoIHN0b3BzIHVzIGZyb20gbWlzcmVwb3J0aW5nIHdlJ3JlIHJ1bm5pbmcgZS5nLiwgb24gYW4gTVBDODMxM0VBLAogICAgd2hlbiBzdWNoIGEgbmFtZSBkb2Vzbid0IGV4aXN0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjdlZjU3OGRmN2I5Yzc4NjJjMzZhMzFiODE5YzY1MmY4YjBhZWVhMApBdXRob3I6IFJpbmkgdmFuIFpldHRlbiA8cmluaUBhcnZvby5ubD4KRGF0ZToJVGh1IEFwciAxNSAxNjowMzowNSAyMDEwICswMjAwCgogICAgbXBjODN4eDogVXNlIENPTkZJR19GU0xfRVNESEMgdG8gZW5hYmxlIHNkaGMgY2xrCgogICAgRW5hYmxlIGVTREhDIENsb2NrIGJhc2VkIG9uIGdlbmVyaWMgQ09ORklHX0ZTTF9FU0RIQyBkZWZpbmUKICAgIGluc3RlYWQgb2YgYSBwbGF0Zm9ybSBkZWZpbmUuIFRoaXMgd2lsbCBlbmFibGUgYWxsIHRoZSA4M3h4CiAgICBwbGF0Zm9ybXMgdG8gdXNlIHNkaGNfY2xrIGJhc2VkIG9uIENPTkZJR19GU0xfRVNESEMuICBJdCdzCiAgICB0aGUgc2FtZSBwYXRjaCBhcyBjb21taXQgNmI5ZWEwOGM1MDEwZWFiNWFkMTA1NmJjOWJmMDMzYWZiNjcyZDljYwogICAgZm9yIHRoZSBwcGMvODV4eC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSaW5pIDxyaW5pQGFydm9vLm5sPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhNDdhMTJiZWNmNjZmMDJhNTZkYTkxYzE2MWUyZWRiNjI1ZTlmMjBjCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgQXByIDE1IDE2OjA3OjI4IDIwMTAgKzAyMDAKCiAgICBNb3ZlIGFyY2gvcHBjIHRvIGFyY2gvcG93ZXJwYwoKICAgIEFzIGRpc2N1c3NlZCBvbiB0aGUgbGlzdCwgbW92ZSAiYXJjaC9wcGMiIHRvICJhcmNoL3Bvd2VycGMiIHRvCiAgICBiZXR0ZXIgbWF0Y2ggdGhlIExpbnV4IGRpcmVjdG9yeSBzdHJ1Y3R1cmUuCgogICAgUGxlYXNlIG5vdGUgdGhhdCB0aGlzIHBhdGNoIGFsc28gY2hhbmdlcyB0aGUgInBwYyIgdGFyZ2V0IGluCiAgICBNQUtFQUxMIHRvICJwb3dlcnBjIiB0byBtYXRjaCB0aGlzIG5ldyBpbmZyYXN0cnVjdHVyZS4gQnV0ICJwcGMiCiAgICBpcyBrZXB0IGFzIGFuIGFsaWFzIGZvciBub3csIHRvIG5vdCBicmVhayBjb21wYXRpYmlsaXR5IHdpdGgKICAgIHNjcmlwdHMgdXNpbmcgdGhpcyBuYW1lLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgQWNrZWQtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgogICAgQWNrZWQtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CiAgICBDYzogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIENjOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgY2Y2ZWI2ZGE0MzMxNzk2NzQ1NzFmOTM3MDU2NmIxZWM4OTg5YTQxYQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEFwciAxNCAxMzo1NzoxOCAyMDEwICswMjAwCgogICAgcHBjNHh4OiBUTEIgaW5pdCBmaWxlIGNsZWFudXAKCiAgICBUaGlzIHBhdGNoIGFkZHMgbmV3IG1hY3Jvcywgd2l0aCBmcmVxdWVudGx5IHVzZWQgY29tYmluYXRpb25zIG9mIHRoZQogICAgNHh4IFRMQiBhY2Nlc3MgY29udHJvbCBhbmQgc3RvcmFnZSBhdHRpYnV0ZXMuIEFkZGl0aW9uYWxseSB0aGUgNHh4IGluaXQuUwogICAgZmlsZXMgYXJlIHVwZGF0ZWQgdG8gbWFrZSB1c2Ugb2YgdGhlc2UgbmV3IG1hY3Jvcy4gUmVzdWx0aW5nIGluIGVhc2llcgogICAgdG8gcmVhZCBUTEIgZGVmaW5pdGlvbnMuCgogICAgQWRkaXRpb25hbGx5IHNvbWUgaW5pdC5TIGZpbGVzIGFyZSB1cGRhdGVkIHRvIHVzZSB0aGUgbW11IGhlYWRlciBmb3IgdGhlCiAgICBUTEIgZGVmaW5lcywgaW5zdGVhZCBvZiBkZWZpbmluZyB0aGVpciBvd24gbWFjcm9zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyNmEzMzUwNGE1NWU0ODgyNTIwZjJlOWRhOTZiYTZjMjJiYWRiMzUzCkF1dGhvcjogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KRGF0ZToJTW9uIEFwciAxMiAxNTowODoxNyAyMDEwIC0wNDAwCgogICAgZnNsX2kyYzogQWRkZWQgYSBjYWxscG9pbnQgZm9yIGkyY19ib2FyZF9sYXRlX2luaXQKCiAgICBUaGlzIHBhdGNoIGFkZHMgYSBjYWxscG9pbnQgaW4gaTJjX2luaXQgdGhhdCBhbGxvd3MgYm9hcmQgc3BlY2lmaWMKICAgIGkyYyBib2FyZCBpbml0aWFsaXphdGlvbiAodHlwaWNhbGx5IGZvciBpMmMgYnVzIHJlc2V0KSB0aGF0IGlzIGNhbGxlZAogICAgYWZ0ZXIgaTJjX2luaXQgb3BlcmF0aW9ucywgYWxsb3dpbmcgdGhlIGkyY19ib2FyZF9sYXRlX2luaXQgZnVuY3Rpb24KICAgIHRvIHVzZSB0aGUgcHJlLWNvbmZpZ3VyZWQgaTJjIGJ1cyBzcGVlZCBhbmQgc2xhdmUgYWRkcmVzcy4KCmNvbW1pdCAyNTRhYjdiZDQ2NDY1NzYwMGFiYTY5ZDg0MDQwNmY5MzU4ZjNlMTE2CkF1dGhvcjogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+CkRhdGU6CUZyaSBBcHIgMTYgMTY6MTI6MzkgMjAxMCAtMDQwMAoKICAgIG5pb3MyOiBNb3ZlIGluZGl2aWR1YWwgYm9hcmQgbGlua2VyIHNjcmlwdHMgdG8gY29tbW9uIHNjcmlwdCBpbiBjcHUgdHJlZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KCmNvbW1pdCA4ZmY5NzJjNmU5OTkzOGYxYTAzM2U1NTAwZGNjYzlhMzdjZTM0MDZmCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglGcmkgQXByIDE2IDEyOjU2OjMzIDIwMTAgKzAyMDAKCiAgICBtaWNyb2JsYXplOiBDb25zb2xpZGF0ZSBjYWNoZSBjb2RlCgogICAgTWVyZ2UgY3B1IGFuZCBsaWIgY2FjaGUgY29kZS4KICAgIEZsdXNoIGNhY2hlIGJlZm9yZSBkaXNhYmxpbmcuCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgoKY29tbWl0IDliNGQ5MDU2OTAyODYwNGJjNDkxZWE0MTkxODdjMzFlNDQ2N2JkY2EKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CUZyaSBBcHIgMTYgMTI6MDE6MzIgMjAxMCArMDIwMAoKICAgIG1pY3JvYmxhemU6IEZsdXNoIGNhY2hlIGJlZm9yZSBqdW1waW5nIHRvIGtlcm5lbAoKICAgIFRoZXJlIGlzIHVzZWQgbWF4IGNhY2hlIHNpemUgb24gc3lzdGVtIHdoaWNoIGRvZXNuJ3QgZGVmaW5lCiAgICBjYWNoZSBzaXplLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KCmNvbW1pdCA3MDUyNDg4M2IwNDI0Mjc3ZTViM2ZmMzc2OGMwYzU2MjhiNWZjZTQ0CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglGcmkgQXByIDE2IDExOjU5OjI5IDIwMTAgKzAyMDAKCiAgICBtaWNyb2JsYXplOiBTdXBwb3J0IHN5c3RlbSB3aXRoIFdCIGNhY2hlCgogICAgV0IgY2FjaGUgdXNlIGRpZmZlcmVudCBpbnN0cnVjdGlvbiB0aGF0IFdUIGNhY2hlIGJ1dCB0aGUgbWFqb3IgY29kZQogICAgaXMgdGhhdCBzYW1lLiBUaGF0IG1lYW5zIHRoYXQgd2RjLmZsdXNoIG9uIHN5c3RlbSB3aXRoIFdUIGNhY2hlCiAgICBkbyB0aGUgc2FtZSB0aGluZyBhcyBiZWZvcmUuCgogICAgWW91IG5lZWQgbmV3ZXIgdG9vbGNoYWluIHdpdGggd2RjLmZsdXNoIHN1cHBvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgoKY29tbWl0IDk3NjliNzNmNjBmYzBmYjhkZTdhYjE2ZmY2MzAwZWFlNTY1MDUwMjAKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CUZyaSBBcHIgMTYgMTE6NTc6MzUgMjAxMCArMDIwMAoKICAgIG1pY3JvYmxhemU6IENoYW5nZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZQoKICAgIGVudl9yZWxvY2F0aW9uIHNob3VsZCBiZSBjYWxsZWQgZmlyc3QuCiAgICBBZGRlZCBzdGRpb19pbml0IHRvby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Cgpjb21taXQgZTYxNzdiMzZiODdkMGNlNjI3NjUxZTQwN2I5MTI0NWYxNmU1MzgyZQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJRnJpIEFwciAxNiAxMTo1NTowMSAyMDEwICswMjAwCgogICAgbWljcm9ibGF6ZTogQ2hhbmdlIGNhY2hlIHJlcG9ydCBtZXNzYWdlcwoKICAgIEl0IGlzIG1vcmUgYWNjdXJhdGUgdG8gc2hvdyB0aGF0IGNhY2hlcyBhcmUgT0ZGIGluc3RlYWQgb2YgRkFJTC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Cgpjb21taXQgODEyNWM5ODBjYzI4MjAwMGNiZGRiNDE1ZjhkZGJlYmY5NmU0ZWRiNApBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJRnJpIEFwciAxNiAxMTo1MTo1OSAyMDEwICswMjAwCgogICAgbWljcm9ibGF6ZTogRml4IGludGVycnVwdCBoYW5kbGVyIGNvZGUKCiAgICBJdCBpcyBiZXR0ZXIgdG8gcmVhZCBpdnIgYW5kIHJlYWN0IG9uIGl0IHRoYW4gZG8gbG9uZyBwYXJzaW5nIGZyb20KICAgIHR3byByZWdzLiBJbnRlcnJ1cHQgY29udHJvbGxlciByZXR1cnMgYWN0dWFsIGlycSBudW1iZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgoKY29tbWl0IGIyNjY0MDk3MWE3YmE4ODAwZjBlYjMyYWYxNDVmZjA3MjdmZTIxZmUKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CUZyaSBBcHIgMTYgMTE6NDM6NDMgMjAxMCArMDIwMAoKICAgIG1pY3JvYmxhemU6IE1vdmUgRlNMIGluaXRpYWxpemF0aW9uIHRvIGJvYXJkLmMKCiAgICBNb3ZlIEZTTCBvdXQgb2YgaW50ZXJydXB0IGNvbnRyb2xsZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgoKY29tbWl0IDViYmNiNmNmMjJiMTEyMWQ4YzNlNTZiMGUxZmI4NDM2NmU5MDNhYzcKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CUZyaSBBcHIgMTYgMTE6Mzc6NDEgMjAxMCArMDIwMAoKICAgIG1pY3JvYmxhemU6IE1vdmUgdGltZXIgaW5pdGlhbGl6YXRpb24gdG8gYm9hcmQuYwoKICAgIEkgd291bGQgbGlrZSB0byBoYW5kbGUgY2FzZSB3aGVyZSBzeXN0ZW0gZG9lc24ndCBjb250YWluCiAgICBpbnRjIHRoYXQncyB3aHkgSSBuZWVkIHRpbWVyIGluaXRpYWxpemF0aW9uIG91dCBvZiBpbnRjIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgoKY29tbWl0IGNjNTM2OTBlMDVmNDdiNGMyNWUwYTUyOGRlNTBlMDI0ZmMwMTY0YWQKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CUZyaSBBcHIgMTYgMTE6MzA6MTYgMjAxMCArMDIwMAoKICAgIG1pY3JvYmxhemU6IEZpeCBpcnEuUyBjb2RlCgogICAgSXQgaXMgYW5jaWVudCBjb2RlLiBUaGVyZSBpcyBwb3NzaWJsZSB0byBzYXZlIHNldmVyYWwgaW5zdHJ1Y3Rpb25zCiAgICBqdXN0IGlmIHdlIHVzZSBvZmZzZXQgaW5zdGVhZCBvZiBhZGRpawoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KCmNvbW1pdCAzOThiMWQ1N2E2YTU2YWFkYTFmNzcxOTg3NDZhN2RkMWIwMzhjZDVkCkF1dGhvcjogQXJ1biBCaGFudSA8YXJ1bkBiaGFudS5uZXQ+CkRhdGU6CVRodSBBcHIgMTUgMTg6Mjc6MTcgMjAxMCArMDgwMAoKICAgIG1pY3JvYmxhemU6IEFkZCBGRFQgc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBGRFQgKGZsYXR0ZW5lZCBkZXZpY2UgdHJlZSkgc3VwcG9ydCB0byBtaWNyb2JsYXplIGFyY2guCgogICAgVGVzdGVkIHdpdGggTGludXggYXJjaC9taWNyb2JsYXplIGtlcm5lbHMgd2l0aCBhbmQgd2l0aG91dCBjb21waWxlZCBpbgogICAgRkRUIG9uIFhpbGlueCBNTDUwNiBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBcnVuIEJoYW51IDxhcnVuQGJoYW51Lm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KCmNvbW1pdCAyYTcyZTllZDE4ZDIxNjRlYjdmZTU2OTExOTM0MmViNjMxYjU2OGRhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgQXByIDkgMTQ6MDM6NTkgMjAxMCArMDIwMAoKICAgIHBwYzR4eDogQWRkIG9wdGlvbiBmb3IgUFBDNDQwU1BlIHBvcnRzIHdpdGhvdXQgb2xkIFJldi4gQSBzdXBwb3J0CgogICAgVGhlIDQ0MFNQZSBSZXYuIEEgaXMgcXVpdGUgb2xkIGFuZCBuZXdlciA0NDBTUGUgYm9hcmRzIGRvbid0IG5lZWQgc3VwcG9ydAogICAgZm9yIHRoaXMgQ1BVIHJldmlzaW9uLiBTaW5jZSByZW1vdmluZyBzdXBwb3J0IGZvciB0aGlzIG9sZGVyIHZlcnNpb24KICAgIHNpbXBsaWZpZXMgdGhlIGNyZWF0aW9uIGZvciBuZXdlciBVLUJvb3QgcG9ydHMsIHRoaXMgcGF0Y2ggbm93IGVuYWJsZXMKICAgIDQ0MFNQZSA+IFJldi4gQSBzdXBwb3J0IGJ5IGNyZWF0aW5nIHRoZSBDT05GSUdfNDQwU1BFX1JFVkEgZGVmaW5lLiBCeQogICAgZGVmaW5pbmcgdGhpcyBpbiB0aGUgYm9hcmQgY29uZmlnIGhlYWRlciwgUmV2LiBBIHdpbGwgc3RpbGwgYmUgc3VwcG9ydGVkLgogICAgT3RoZXJ3aXNlIChkZWZhdWx0IGZvciBuZXdlciBib2FyZCBwb3J0cyksIFJldi4gQSB3aWxsIG5vdCBiZSBzdXBwb3J0ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDI4ODk5MWM5M2ZkZDE1MGVmMzgxN2U2NzZjNjU3Y2I0ODc0NjhkMzgKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBBcHIgOCAwOTozMzoxMyAyMDEwICswMjAwCgogICAgcHBjNHh4OiBhbHByOiBSZW1vdmUgc29tZSBub3QgbmVlZGVkIGNvbW1hbmRzIHRvIG1ha2UgaW1hZ2UgZml0IGFnYWluCgogICAgVGhlIGxhdGVzdCBjaGFuZ2VzIGluY3JlYXNlZCB0aGUgc2l6ZSBvZiB0aGUgYWxwciBpbWFnZSBhIGJpdCBtb3JlLgogICAgTm93IGl0IGRvZXNuJ3QgZml0IGludG8gdGhlIDI1NmsgcmVzZXJ2ZWQgZm9yIGl0LiBUaGlzIHBhdGNoIG5vdyByZW1vdmVzCiAgICB0aGUgY29tbWFuZHMgImxvYWRzIiBhbmQgImxvYWRiIiB3aGljaCBhcmUgbm90IG5lZWRlZCBpbiB0aGUgcHJvZHVjdGlvbgogICAgc3lzdGVtcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBDYzogUGlldGVyIFZvb3J0aHVpanNlbiA8cGlldGVyLnZvb3J0aHVpanNlbkBwcm9kcml2ZS5ubD4KCmNvbW1pdCA4ZDMyMWI4MWM1NDQxZGI5MzQyNWVlMzdjYjc5Y2M1MWQ5Y2UyZmIwCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJTW9uIEFwciAxMiAyMjoyODoyMSAyMDEwIC0wNTAwCgogICAgVXBkYXRlIFJFQURNRSB0byByZWZsZWN0IG5ldyBkaXJlY3Rvcnkgc3RydWN0dXJlCgogICAgQWxzbyBmaXggdXAgc29tZSB3aGl0ZXNwYWNlIGlzc3VlcyB0aGF0IHdlcmUgaW50cm9kdWNlZCB3aGVuIG1vdmluZwogICAgZGlyZWN0b3J5IGxvY2F0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDM3ZTRkYWZhYWU5NmNjYzk3MGE4OTZmOTAxODZmYWRjZjg1OGFhZDAKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglNb24gQXByIDEyIDIyOjI4OjIwIDIwMTAgLTA1MDAKCiAgICBuaW9zMjogTW92ZSBjcHUvbmlvczIvKiB0byBhcmNoL25pb3MyL2NwdS8qCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCA2YThhMmI3MDU4YTM5OGZlMjA3MDIxMjU5Y2IyYzUyOWZiMjI1ZWZmCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJTW9uIEFwciAxMiAyMjoyODoxOSAyMDEwIC0wNTAwCgogICAgbmlvczogTW92ZSBjcHUvbmlvcy8qIHRvIGFyY2gvbmlvcy9jcHUvKgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgMWU5YzI2NTc4ZWJiZWVjYmFmM2Q4ZmI1NzQ5NTc0MDVlZmYxN2M4NgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBBcHIgMTIgMjI6Mjg6MTggMjAxMCAtMDUwMAoKICAgIHNwYXJjOiBNb3ZlIGNwdS9sZW9uWzIzXSB0byBhcmNoL3NwYXJjL2NwdS9sZW9uWzIzXQoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgZTlhODgyODAzZWI1OWY0ODJjYTRhYTZmZmQ2ZmEyMWU0YzUzZDYxOApBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBBcHIgMTIgMjI6Mjg6MTcgMjAxMCAtMDUwMAoKICAgIGkzODY6IE1vdmUgY3B1L2kzODYvKiB0byBhcmNoL2kzODYvY3B1LyoKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDYyNjBmYjA0NThkOTRjODNhYTViMTgwNzQ1YjE5NDZjMGM5NGQzNjQKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglNb24gQXByIDEyIDIyOjI4OjE2IDIwMTAgLTA1MDAKCiAgICBtaWNyb2JsYXplOiBNb3ZlIGNwdS9taWNyb2JsYXplLyogdG8gYXJjaC9taWNyb2JsYXplL2NwdS8qCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCA4YTE1YzJkMTBiMGI3ODRmMGNmYmExMjQwZjA2YTRkOTMzYjk3NWZhCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJTW9uIEFwciAxMiAyMjoyODoxNSAyMDEwIC0wNTAwCgogICAgYXZyMzI6IE1vdmUgY3B1L2F0MzJhcC8qIHRvIGFyY2gvYXZyMzIvY3B1LyoKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDFlMzgyN2Q5Y2Y5NDQyZTE4ODYwNGZkMTA5OWFjMzgzNzUxMzUxMjUKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglNb24gQXByIDEyIDIyOjI4OjE0IDIwMTAgLTA1MDAKCiAgICBtaXBzOiBNb3ZlIGNwdS9taXBzLyogdG8gYXJjaC9taXBzL2NwdS8qCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCBjNmZiODNkMjE3MjkzMjE0MjYzMDhjM2FjZmYyYTNkZmIyMGQyNTBiCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJTW9uIEFwciAxMiAyMjoyODoxMyAyMDEwIC0wNTAwCgogICAgYmxhY2tmaW46IE1vdmUgY3B1L2JsYWNrZmluLyogdG8gYXJjaC9ibGFja2Zpbi9jcHUvKgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgYTQxNDU1MzQ4NTFiZjc0NjE5Y2IzNzNhOTQyNjEzYTc0NTQ3YmI4MgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBBcHIgMTIgMjI6Mjg6MTIgMjAxMCAtMDUwMAoKICAgIG02OGs6IE1vdmUgY3B1LyRDUFUgdG8gYXJjaC9tNjhrL2NwdS8kQ1BVCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCA4NGFkNjg4NDczYmVjMjg3NWUxNzFiNzEwNDBlYjllMDMzYzZjMjA2CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJTW9uIEFwciAxMiAyMjoyODoxMSAyMDEwIC0wNTAwCgogICAgYXJtOiBNb3ZlIGNwdS8kQ1BVIHRvIGFyY2gvYXJtL2NwdS8kQ1BVCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCA4ZjBmZWM3NGFjNmQwZjNhNzEzNGNjZWJhZmExZWQ5YmQ4YzcxMmJhCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJTW9uIEFwciAxMiAyMjoyODoxMCAyMDEwIC0wNTAwCgogICAgc2g6IE1vdmUgY3B1LyRDUFUgdG8gYXJjaC9zaC9jcHUvJENQVQoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgOGQxZjI2ODIwNGIwN2UxNzJmM2NiNWNlZTBhMzk3NGQ2MDViMGI5OApBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBBcHIgMTIgMjI6Mjg6MDkgMjAxMCAtMDUwMAoKICAgIHBwYzogTW92ZSBjcHUvJENQVSB0byBhcmNoL3BwYy9jcHUvJENQVQoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgODE5ODMzYWYzOWE5MWZhMWMxZTgyNTI4NjJiYmRhNmY1YTYwMmY3YgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBBcHIgMTIgMjI6Mjg6MDggMjAxMCAtMDUwMAoKICAgIE1vdmUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGluY2x1ZGVzIHRvIGFyY2gvJEFSQ0gvaW5jbHVkZS9hc20KCiAgICBUaGlzIGhlbHBzIHRvIGNsZWFuIHVwIHRoZSBpbmNsdWRlLyBkaXJlY3Rvcnkgc28gdGhhdCBpdCBvbmx5IGNvbnRhaW5zCiAgICBub24tYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGhlYWRlcnMgYW5kIGFsc28gbWF0Y2hlcyBMaW51eCdzIGRpcmVjdG9yeQogICAgbGF5b3V0IHdoaWNoIG1hbnkgVS1Cb290IGRldmVsb3BlcnMgYXJlIGFscmVhZHkgZmFtaWxpYXIgd2l0aC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDYxZjJiMzhhMTdmNWIyMWM1OWYyYWZlNmNmMWNiYjVmMjg2MzhjZjkKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglNb24gQXByIDEyIDIyOjI4OjA3IDIwMTAgLTA1MDAKCiAgICBSZXBsYWNlICIjaW5jbHVkZSA8YXNtLSRBUkNILyRGSUxFPiIgd2l0aCAiI2luY2x1ZGUgPGFzbS8kRklMRT4iCgogICAgVGhlIGFwcHJvcHJpYXRlIGluY2x1ZGUvYXNtLSRBUkNIIGRpcmVjdG9yeSBzaG91bGQgYWxyZWFkeSBieSBzeW1saW5rZWQKICAgIHRvIGluY2x1ZGUvYXNtIHNvIHVzaW5nIHRoZSB3aG9sZSAiYXNtLSRBUkNIIiBwYXRoIGlzIHVubmVjZXNzYXJ5LgoKICAgIFRoaXMgY2hhbmdlIHNob3VsZCBhbHNvIGFsbG93IHVzIHRvIG1vdmUgdGhlIGluY2x1ZGUvYXNtLSRBUkNICiAgICBkaXJlY3RvcmllcyBpbnRvIHRoZWlyIGFwcHJvcHJpYXRlIGxpYi8kQVJDSC8gZGlyZWN0b3JpZXMuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCAwZGU3MWQ1MDcxNTdjNGJkNGZkZGNkM2E0MTkxNDBkMmI5ODZlZWQyCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJTW9uIEFwciAxMiAyMjoyODowNiAyMDEwIC0wNTAwCgogICAgTW92ZSBsaWJmZHQvIGludG8gbGliLwoKICAgIE1vdmUgdGhlIGxpYmZkdCBkaXJlY3RvcnkgaW50byB0aGUgY29tbW9uIGxpYi8gZGlyZWN0b3J5IHRvIGNsZWFuIHVwIHRoZQogICAgdG9wLWxldmVsIGRpcmVjdG9yeS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDc4YWNjNDcyZDk3MTkzMTZmMjJlMDAyYTAwOWE5OThkOWNlZWMyOWQKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglNb24gQXByIDEyIDIyOjI4OjA1IDIwMTAgLTA1MDAKCiAgICBSZW5hbWUgbGliX2dlbmVyaWMvIHRvIGxpYi8KCiAgICBOb3cgdGhhdCB0aGUgb3RoZXIgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGxpYiBkaXJlY3RvcmllcyBoYXZlIGJlZW4KICAgIG1vdmVkIG91dCBvZiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeSB0aGVyZSdzIG5vdCBtdWNoIHJlYXNvbiB0byBoYXZlIHRoZQogICAgJ19nZW5lcmljJyBzdWZmaXggb24gdGhlIGNvbW1vbiBsaWIgZGlyZWN0b3J5LgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgZWEwMzY0ZjFiYmZlZDFlM2VhNzExMTQ3NDIwODc1Y2YzMzhmZTc3YQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBBcHIgMTIgMjI6Mjg6MDQgMjAxMCAtMDUwMAoKICAgIE1vdmUgbGliXyRBUkNIIGRpcmVjdG9yaWVzIHRvIGFyY2gvJEFSQ0gvbGliCgogICAgQWxzbyBtb3ZlIGxpYl8kQVJDSC9jb25maWcubWsgdG8gYXJjaC8kQVJDSC9jb25maWcubWsKCiAgICBUaGlzIGNoYW5nZSBpcyBpbnRlbmRlZCB0byBjbGVhbiB1cCB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKICAgIGFuZCBtb3JlIGNsb3NlbHkgbWltaWMgTGludXgncyBkaXJlY3Rvcnkgb3JnYW5pemF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgODlmMzllMTc3ZTdiMDE1MmFhMWQzMTUyYmFhMjVkOTg2ZTM2Y2RjZgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBBcHIgMTIgMjI6Mjg6MDMgMjAxMCAtMDUwMAoKICAgIENoYW5nZSBkaXJlY3Rvcnktc3BlY2lmaWMgQ0ZMQUdTIHRvIHVzZSBmdWxsIHBhdGgKCiAgICBQcmV2aW91c2x5LCBhIHNwZWNpZmljIGZpbGUgb3IgZGlyZWN0b3J5IGNvdWxkIGJlIGNvbXBpbGVkIHdpdGggY3VzdG9tCiAgICBDRkxBR1MgYnkgYWRkaW5nIGEgTWFrZWZpbGUgdmFyaWFibGUgc3VjaCBhczoKICAgICAgQ0ZMQUdTX2RsbWFsbG9jLm8gPSA8Y3VzdG9tIGZsYWdzIGZvciBjb21tb24vZGxtYWxsb2MuYz4KICAgIG9yCiAgICAgIENGTEFHU19saWIgPSA8Y3VzdG9tIGZsYWdzIGZvciBsaWIgZGlyZWN0b3J5PgoKICAgIFRoaXMgbWV0aG9kIGJyZWFrcyBkb3duIG9uY2UgbXVsdGlwbGUgZmlsZXMgb3IgZGlyZWN0b3JpZXMgc2hhcmUgdGhlCiAgICBzYW1lIHBhdGguCUVnIEZMQUdTX2ZpbGVBID0gPGN1c3RvbSBmbGFncz4gd291bGQgaW5jb3JyZWN0bHkgcmVzdWx0IGluCiAgICBib3RoIGRpcjEvZmlsZUEuYyBhbmQgZGlyMi9maWxlQS5jIGJlaW5nIGNvbXBpbGVkIHdpdGggPGN1c3RvbSBmbGFncz4uCgogICAgVGhpcyBjaGFuZ2UgYWxsb3dzIGZpbmVyIGdyYWluZWQgY29udHJvbCB3aGljaCB3ZSBuZWVkIG9uY2Ugd2UgbW92ZQogICAgbGliXyRBUkNIIHRvIGFyY2gvJEFSQ0gvbGliLyBhbmQgbGliX2dlbmVyaWMvIHRvIGxpYi8uICBXaXRob3V0IHRoaXMKICAgIGNoYW5nZSBhbGwgbGliLyBkaXJlY3RvcmllcyB3b3VsZCBzaGFyZSB0aGUgc2FtZSBjdXN0b20gQ0ZMQUdTLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgMDNiNzAwNGRkYWZjNzBkODM5MDRkNzkwYWJhYTUwODQzODY4MTMwZQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBBcHIgMTIgMjI6Mjg6MDIgMjAxMCAtMDUwMAoKICAgIENyZWF0ZSBDUFVESVIgdmFyaWFibGUKCiAgICBUaGUgQ1BVRElSIHZhcmlhYmxlIHBvaW50cyB0byB0aGUgbG9jYXRpb24gb2YgYSB0YXJnZXQncyBDUFUgZGlyZWN0b3J5LgogICAgQ3VycmVudGx5LCBpdCBpcyBzZXQgdG8gY3B1LyRDUFUuICBIb3dldmVyLCB1c2luZyAkQ1BVRElSIHdpbGwgYWxsb3cgZm9yCiAgICBtb3JlIGZsZXhpYmlsaXR5IGluIHRoZSBmdXR1cmUuICBJdCBsYXlzIHRoZSBncm91bmR3b3JrIGZvciByZW9yZ2FuaXppbmcKICAgIFUtQm9vdCdzIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgdG8gc3VwcG9ydCBhIGxheW91dCBzdWNoIGFzOgoKICAgICAgYXJjaC8kQVJDSC9jcHUvJENQVS8qIChhcmNoaXRlY3R1cmUgd2l0aCBtdWx0aXBsZSBDUFUgdHlwZXMpCiAgICAgIGFyY2gvJEFSQ0gvY3B1LyoJICAgIChhcmNoaXRlY3R1cmUgd2l0aCBvbmUgQ1BVIHR5cGUpCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCAzMGRjMTY1YTc2YjUxNjVhZjc3MjE5MTg5YmMwNWQwZmE0MjI5ZDhiCkF1dGhvcjogSmVucyBTY2hhcnNpZyA8anNfYXRfbmdAc2NoYXJzb2Z0LmRlPgpEYXRlOglGcmkgQXByIDkgMTk6MDI6MzggMjAxMCArMDIwMAoKICAgIEZJWDogd2F0Y2hkb2cgdGltZW91dCwgd2hpbGUgd2FpdGluZyBmb3IgaW5wdXQKCiAgICAqIGFkZCBXQVRDSERPR19SRVNFVCB0byAhdHN0YygpIGxvb3BzCiAgICAqIHByZXZlbnRzIHdhdGNoZG9nIHRpbWVvdXQsIHdoaWxlIHdhaXRpbmcgZm9yIGlucHV0LAogICAgICBpZiBDT05GSUdfQk9PVF9SRVRSWV9USU1FIG9yIENPTkZJR19TSE9XX0FDVElWSVRZIGRlZmluZWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZW5zIFNjaGFyc2lnIDxqc19hdF9uZ0BzY2hhcnNvZnQuZGU+Cgpjb21taXQgODE3ODExMGJjMjgyNDlmM2ZmMWMyMmIxNWQ3ZGNkZWU1MGJlNjllYgpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglUaHUgQXByIDggMTc6NTU6NDggMjAxMCArMDIwMAoKICAgIGNvbmZpZ19jbWRfYWxsLmg6IFNvcnQgZW50cmllcyBhbHBoYWJldGljYWxseQoKICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgoKY29tbWl0IDkxNTdlOWM0MGFiM2E5NDJiZGQwNjc5YmI0MzNjZDllZDQ4NWY0MzQKQXV0aG9yOiBGcmFucyBNZXVsZW5icm9la3MgPGZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbT4KRGF0ZToJVGh1IEFwciA4IDE3OjU1OjQ3IDIwMTAgKzAyMDAKCiAgICBjb25maWdfY21kX2FsbC5oOiBhZGRlZCBtaXNzaW5nIENPTkZJR19DTURfVUJJIGFuZCBDT05GSUdfQ01EX1VCSUZTCgogICAgU2lnbmVkLW9mZi1ieTogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+Cgpjb21taXQgYWUzMGI4YzIwMGRjMDcxZDcxOWFkNjQ5ZDBiZjU2MzVkNjE3NTRmMwpBdXRob3I6IGthcmwuYmVsZGFuQGdtYWlsLmNvbSA8a2FybC5iZWxkYW5AZ21haWwuY29tPgpEYXRlOglUdWUgQXByIDYgMjI6MTg6MDggMjAxMCArMDIwMAoKICAgIG1hbGxvYzogc2JyaygpIHNob3VsZCByZXR1cm4gTU9SRUNPUkVfRkFJTFVSRSBpbnN0ZWFkIG9mIE5VTEwgb24gZmFpbHVyZQoKICAgIFNpZ25lZC1vZmYtYnk6IEthcmwgQmVsZGFuIDxrYXJsLmJlbGRhbkBnbWFpbC5jb20+Cgpjb21taXQgYTI1MTNlMjdlOGRmMmI3YmY0ODFkMDNlNzcxOWY5MWNlMTllODlkNQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVN1biBBcHIgNCAyMjozNjowMyAyMDEwIC0wNTAwCgogICAgbWtpbWFnZTogRml4IHN0cmljdC1hbGlhc2luZyBjb21waWxlciB3YXJuaW5nCgogICAgVmVyc2lvbiA0LjIuNCBvZiBnY2MgcHJvZHVjZXMgdGhlIGZvbGxvd2luZyB3YXJuaW5ncyB3aXRob3V0IHRoaXMgY2hhbmdlOgogICAgICBta2ltYWdlLmM6IEluIGZ1bmN0aW9uIOKAmG1haW7igJk6CiAgICAgIG1raW1hZ2UuYzoyMDQ6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwogICAgICBta2ltYWdlLmM6MjIyOiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDFmMjQ2M2Q3NjQyYzU4MjMzOWM5ZjlkOTY0NzFkNWQyYTE2OWI5YmIKQXV0aG9yOiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+CkRhdGU6CVRodSBBcHIgMSAyMToyNjo1NSAyMDEwICswMjAwCgogICAgQWRkIGluaXRpYWwgc3VwcG9ydCBmb3IgTWF0cml4IFZpc2lvbiBtdlNNUiBib2FyZCBiYXNlZCBvbiBNUEM1MjAwQi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Cgpjb21taXQgOWFjZDRmMGU5MTQ5MTM3OTZlNGU1NmY1NTA3MjZkMjE2ZjdiMTZlNQpBdXRob3I6IEZyYW5zIE1ldWxlbmJyb2VrcyA8ZnJhbnNtZXVsZW5icm9la3NAZ21haWwuY29tPgpEYXRlOglTYXQgTWFyIDI3IDExOjE2OjEwIDIwMTAgKzAxMDAKCiAgICBjbWRfYm1wLmM6IGFkZCBzdGFuZGFyZCBzdWJjb21tYW5kIGhhbmRsaW5nCgogICAgU2lnbmVkLW9mZi1ieTogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+CiAgICBBY2tlZC1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgZjg1MmEwYzNiZmUwYjMwYjQ4MTYxMzViOWEwZDJhYWFlN2U1ZGU2YQpBdXRob3I6IEFsYmluIFRvbm5lcnJlIDxhbGJpbi50b25uZXJyZUBmcmVlLWVsZWN0cm9ucy5jb20+CkRhdGU6CVN1biBNYXIgMTQgMTg6NDc6MjMgMjAxMCArMDEwMAoKICAgIGRyaXZlcnMvbXRkL3NwaS9lZXByb21fbTk1eHh4LmM6IGFkZCBtaXNzaW5nIGVycm9yIGNoZWNraW5nCgogICAgU2lnbmVkLW9mZi1ieTogQWxiaW4gVG9ubmVycmUgPGFsYmluLnRvbm5lcnJlQGZyZWUtZWxlY3Ryb25zLmNvbT4KCmNvbW1pdCAzYjY1M2ZkYjMyMjAyOGIyN2M1YWUzZDYwZWNiMGVlYTJkNTg4MzdmCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJU3VuIEFwciA0IDIyOjQwOjUwIDIwMTAgLTA1MDAKCiAgICBjbWRfdWJpOiBGaXggdW5pbml0aWFsaXplZCB2YXJpYWJsZSB3YXJuaW5nCgogICAgZ2NjIDMuNC42IHByZXZpb3VzbHkgcmVwb3J0ZWQgdGhlIGZvbGxvd2luZyBlcnJvciBvbiBtYW55IE1JUFMgYm9hcmRzCiAgICB3aGljaCB1dGlsaXplIFVCSToKICAgICAgY21kX3ViaS5jOjE5Mzogd2FybmluZzogJ3ZvbCcgbWlnaHQgYmUgdXNlZCB1bmluaXRpYWxpemVkIGluIHRoaXMgZnVuY3Rpb24KCiAgICBUaGUgY3VycmVudCBjb2RlIGlzIHN0cnVjdHVyZWQgc3VjaCB0aGF0ICd2b2wnIHdpbGwgbmV2ZXIgYmUgdXNlZCB3aGVuCiAgICBpdCBpcyBOVUxMIGFueXdheSwgYnV0IGdjYyBpc24ndCBzbWFydCBlbm91Z2ggdG8gZmlndXJlIHRoaXMgb3V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZmFjNzFjYzQ5ZjkzZGI3ZDQ2MGRiYzk1N2RmYmJhZGVmYTJjYTBlOQpBdXRob3I6IEtpbSBCLiBIZWlubyA8S2ltLkhlaW5vQGJsdWVnaWdhLmNvbT4KRGF0ZToJRnJpIE1hciAxMiAxMDowNzowMCAyMDEwICswMjAwCgogICAgVVNCIHN0b3JhZ2UgcHJvYmUKCiAgICBXaGlsZSBkZWJ1Z2dpbmcgb25lIGlsbCBiZWhhdmluZyBVU0IgZGV2aWNlIEkgZm91bmQgdHdvIGJ1Z3MgaW4gVVNCCiAgICBzdG9yYWdlIHByb2JlLgoKICAgIHVzYl9zdG9yX2dldF9pbmZvKCkgcmV0dXJucyAtMSAoZXJyb3IpLCAwIChza2lwKSBvciAxIChvaykuIEZpcnN0IHBhcnQKICAgIG9mIHRoaXMgcGF0Y2ggZml4ZXMgZXJyb3IgY2FzZS4KCiAgICBTZWNvbmQgcGFydCBmaXhlcyB1c2JfaW5xdWlyeSgpJ3MgcmV0cnkgY291bnRlciBoYW5kbGluZy4gT3JpZ2luYWwgY29kZQogICAgaGFkIHJldHJ5ID0gLTEgb24gZXJyb3IgY2FzZSwgbm90IHJldHJ5ID0gMCBhcyBjaGVja2VkIGluIHRoZSBuZXh0IGxpbmUuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIEIuIEhlaW5vIDxLaW0uSGVpbm9AYmx1ZWdpZ2EuY29tPgoKY29tbWl0IGFhYWQxMDhiODg5YzY5ODBhMmQwNTI2MmEyZjdmZWJiMTRmOTRkNjgKQXV0aG9yOiBLaW0gQi4gSGVpbm8gPEtpbS5IZWlub0BibHVlZ2lnYS5jb20+CkRhdGU6CUZyaSBNYXIgMTIgMTU6NDY6NTYgMjAxMCArMDIwMAoKICAgIFVTQiBzdG9yYWdlIGNvdW50CgogICAgSGVyZSdzIGFub3RoZXIgVVNCIHN0b3JhZ2UgcGF0Y2guIEN1cnJlbnRseSBVLUJvb3QgaGFuZGxlcyBzdG9yYWdlCiAgICBkZXZpY2VzICMwIC0gIzQgYXMgdmFsaWQgZGV2aWNlcywgZXZlbiBpZiB0aGVyZSBpcyBub25lIGNvbm5lY3RlZC4gVGhpcwogICAgcGF0Y2ggZml4ZXMgdXNiX3N0b3JfZ2V0X2RldigpIHRvIGNoZWNrIGRldGVjdGVkIGRldmljZSBjb3VudCBpbnN0ZWFkCiAgICBvZiBNQVgtZGVmaW5lLgoKICAgIFRoaXMgaXMgdmVyeSBpbXBvcnRhbnQgZm9yIGlsbCBiZWhhdmluZyBkZXZpY2VzLiB1c2JfZGV2X2Rlc2NbXSBjYW4gYmUKICAgIHBhcnRpYWxseSBpbml0aWFsaXplZCBpZiBkZXZpY2UgcHJvYmUgZmFpbHMuCgogICAgQWZ0ZXIgZml4aW5nIGdldF9kZXYoKSBpdCB3YXMgZWFzeSB0byBmaXggInVzYiBwYXJ0IiBldGMgY29tbWFuZHMuCiAgICBQcmV2aW91c2x5IGl0IG91dHB1dGVkICJVbmtub3duIHBhcnRpdGlvbiB0YWJsZSIgZml2ZSB0aW1lcywgbm93IGl0J3MKICAgICJubyBVU0IgZGV2aWNlcyBhdmFpbGFibGUiLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBCLiBIZWlubyA8S2ltLkhlaW5vQGJsdWVnaWdhLmNvbT4KCmNvbW1pdCBkN2EyMmEzNjRjZWVhOTcxMzNjMWZiN2FmZjA3Mzk1M2M3YTYxMjI4CkF1dGhvcjogU2VyZ2VpIFNodHlseW92IDxzc2h0eWx5b3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJU2F0IEZlYiAyNyAyMTozNDo0MSAyMDEwICswMzAwCgogICAgRUhDSTogYWRkIE5FQyBQQ0kgSUQKCiAgICBBZGQgTkVDIEVIQ0kgY29udHJvbGxlciB0byB0aGUgbGlzdCBvZiB0aGUgc3VwcG9ydGVkIGRldmljZXMuCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFNodHlseW92IDxzc2h0eWx5b3ZAbXZpc3RhLmNvbT4KCiAgICAgZHJpdmVycy91c2IvaG9zdC9laGNpLXBjaS5jIHwgICAgMSArCiAgICAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCgpjb21taXQgYzhiMmQxZGMwZjE2NjcwMjlmNDJjM2ZhMjFmNzA5MDY0MTRhZjMyNQpBdXRob3I6IFNlcmdlaSBTaHR5bHlvdiA8c3NodHlseW92QHJ1Lm12aXN0YS5jb20+CkRhdGU6CVNhdCBGZWIgMjcgMjE6MzM6MjEgMjAxMCArMDMwMAoKICAgIEVIQ0k6IGZpeCBwb3J0IHJlc2V0IHJlcG9ydGluZwoKICAgIENvbW1pdCBiNDE2MTkxYTE0NzcwYzZiY2M2ZmQ2N2JlN2RlY2Y4MTU5YjJiYWVlIChGaXggRUhDSSBwb3J0IHJlc2V0LikgZGlkbid0CiAgICBtb3ZlIHRoZSBjb2RlIHRoYXQgY2hlY2tlZCBmb3Igc3VjY2Vzc2Z1bCBjbGVhcmluZyBvZiB0aGUgcG9ydCByZXNldCBiaXQgZnJvbQogICAgZWhjaV9zdWJtaXRfcm9vdCgpLCByZWx5aW5nIG9uIHdhaXRfbXMoKSBjYWxsIGluc3RlYWQuIFRoZSBtZW50aW9uZWQgY29kZSBhbHNvCiAgICBlcnJvbmVvdXNseSByZXBvcnRlZCBwb3J0IHJlc2V0IHN0YXRlIHdoZW4gdGhlIHJlc2V0IHdhcyBhbHJlYWR5IGNvbXBsZXRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgU2h0eWx5b3YgPHNzaHR5bHlvdkBtdmlzdGEuY29tPgoKY29tbWl0IGUwNmEwNTViY2Q5NjZhZGY2MmE1NjUzYzg0ZGI3ODE5MTUzOTJlNDEKQXV0aG9yOiBTZXJnZWkgU2h0eWx5b3YgPHNzaHR5bHlvdkBydS5tdmlzdGEuY29tPgpEYXRlOglTYXQgRmViIDI3IDIxOjMyOjE3IDIwMTAgKzAzMDAKCiAgICBFSENJOiBmaXggb2ZmLWJ5LW9uZSBlcnJvciBpbiBlaGNpX3N1Ym1pdF9yb290KCkKCiAgICBVU0IgZGV2aWNlcyBvbiB0aGUgMm5kIHBvcnQgYXJlIG5vdCBkZXRlY3RlZCBhbmQgSSBnZXQgdGhlIGZvbGxvd2luZyBtZXNzYWdlOgoKICAgIFRoZSByZXF1ZXN0IHBvcnQoMSkgaXMgbm90IGNvbmZpZ3VyZWQKCiAgICBUaGF0J3Mgd2l0aCBkZWZhdWx0IENPTkZJR19TWVNfVVNCX0VIQ0lfTUFYX1JPT1RfUE9SVFMgdmFsdWUgb2YgMi4gJ3JlcS0+aW5kZXgnCiAgICBpcyAxLWJhc2VkLCBzbyB0aGUgY29tcGFyaXNvbiBpbiBlaGNpX3N1Ym1pdF9yb290KCkgY2FuJ3QgYmUgY29ycmVjdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgU2h0eWx5b3YgPHNzaHR5bHlvdkBtdmlzdGEuY29tPgoKY29tbWl0IDZkMzEzYzg0ZGVkMTY4NDI3MjQwZTYyZDEwOGI2YmE5YWZkY2Y1MzUKQXV0aG9yOiBTZXJnZWkgU2h0eWx5b3YgPHNzaHR5bHlvdkBydS5tdmlzdGEuY29tPgpEYXRlOglTYXQgRmViIDI3IDIxOjI5OjQyIDIwMTAgKzAzMDAKCiAgICBFSENJOiBmaXggcm9vdCBodWIgZGV2aWNlIGRlc2NyaXB0b3IKCiAgICBPbiBsaXR0bGUgZW5kaWFuIG1hY2hpbmVzLCBFSENJIHJvb3QgaHViJ3MgVVNCIHJldmlzaW9uIGlzIHJlcG9ydGVkIGFzIDAuMiAtLQogICAgY3B1X3RvX2xlMTYoKSB3YXMgbWlzc2VkIGluIHRoZSBpbml0aWFsaXplciBmb3IgdGhlICdiY2RVU0InIGRlc2NyaXB0b3IgZmllbGQuCiAgICBUaGUgc2FtZSBzaG91bGQgYmUgZG9uZSBmb3IgdGhlICdiY2REZXZpY2UnIGZpZWxkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBTaHR5bHlvdiA8c3NodHlseW92QG12aXN0YS5jb20+Cgpjb21taXQgNzYwYmNlMDdmMTgyZjY3OGQ0MmYyYTg1YTBlNDdiNTllODMxYmEyNQpBdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KRGF0ZToJVGh1IEFwciA4IDE1OjUwOjU1IDIwMTAgKzAyMDAKCiAgICB2aWRlbzogYXRpX3JhZGVvbl9mYi5jOiBmaXggd2FybmluZyB3aGlsZSBjb21waWxpbmcgd2l0aCBERUJVRwoKICAgIEZpeGVzIHRoaXMgd2FybmluZzoKCiAgICBhdGlfcmFkZW9uX2ZiLmM6IEluIGZ1bmN0aW9uICdyYWRlb25fcHJvYmUnOgogICAgYXRpX3JhZGVvbl9mYi5jOjU5ODogd2FybmluZzogZm9ybWF0ICcleCcgZXhwZWN0cyB0eXBlICd1bnNpZ25lZCBpbnQnLAogICAgYnV0IGFyZ3VtZW50IDIgaGFzIHR5cGUgJ3ZvaWQgKicKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgZjZhN2EyZTg4ODU0NjY2ZTZhOWVkZTUwODkxZmU0MTVlODAzYWNlMgpBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXIgMzEgMTU6NTI6NDAgMjAxMCAtMDUwMAoKICAgIGF0aV9yYWRlb246IFN1cHBvcnQgUENJIHZpcnR1YWwgbm90IGVxIGJ1cyBtYXBwaW5nLgoKICAgIFVzZSBwY2lfYnVzX3RvX3ZpcnQoKSB0byBjb252ZXJ0IHRoZSBidXMgYWRkcmVzcyBmcm9tIHRoZSBCQVJzIHRvCiAgICB2aXJ0dWFsIGFkZHJlc3MnIHRvIGVsaW1pbmF0ZSB0aGUgZGlyZWN0IG1hcHBpbmcgcmVxdWlyZW1lbnQuCgogICAgUmVuYW1lIHZhcmlhYmxlcyB0byBiZXR0ZXIgbWF0Y2ggdXNhZ2UgKF9waHlzIC0+IF9idXMgb3Igbm8tc3VmZml4KQoKICAgIFRoaXMgZml4ZXMgdGhlIG1wYzg1NzJkcyBDT05GSUdfUEhZU182NEJJVCBtb2RlIGZhaWx1cmU6CiAgICAidmlkZW9ib290OiBWaWRlbyBST00gZmFpbGVkIHRvIG1hcCEiCgogICAgVGVzdGVkIG9uIG1wYzg1NzJkcyB3aXRoIGFuZCB3aXRob3V0IENPTkZJR19QSFlTXzY0QklULgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTYyNGY2ZDllYjRiNzIyM2U5N2EyNzg0NGVjNDQ4OWFiOTUzYTJlMgpBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXIgMzEgMDk6NTQ6MjggMjAxMCAtMDUwMAoKICAgIGF0aV9yYWRlb246IHJldHVybiB3aXRoIGVycm9yIHdoZW4gZW11bGF0b3IgZmFpbHMKCiAgICBDb25zb2xlIHdhcyBiZWluZyBzd2l0Y2hlZCB0byB2aWRlbyBldmVuIGlmIGVtdWxhdG9yIGZhaWxzIGFuZAogICAgY2F1c2luZyB0aGlzIGhhbmc6CgoJCSAgIFNjYW5uaW5nIFBDSSBidXMgMDQKCSAgICAwNAkwMCAgMTA5NSAgMzEzMgkwMTA0ICAwMAoJUENJRTMgb24gYnVzIDAzIC0gMDQKICAgIFZpZGVvOiBBVEkgUmFkZW9uIHZpZGVvIGNhcmQgKDEwMDIsIDViNjApIGZvdW5kIEAoMjowOjApCiAgICB2aWRlb2Jvb3Q6IEJvb3RpbmcgUENJIHZpZGVvIGNhcmQgYnVzIDIsIGZ1bmN0aW9uIDAsIGRldmljZSAwCiAgICB2aWRlb2Jvb3Q6IFZpZGVvIFJPTSBmYWlsZWQgdG8gbWFwIQogICAgNjQweDQ4MHg4IDMxa0h6IDU5SHoKICAgIHJhZGVvbmZiOiBGSUZPIFRpbWVvdXQgIQoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBUZXN0ZWQtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCBkNTAxMTc2MmY1M2FkYTljYzdjZGYxZjg5ZjNhNzIyZjg4N2FmNTc3CkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglNb24gTWFyIDE1IDE0OjUwOjI1IDIwMTAgKzAxMDAKCiAgICB2aWRlbzogY2ZiX2NvbnNvbGUuYzogYWRkIHN1cHBvcnQgZm9yIFJMRTggYml0bWFwcwoKICAgIEFsbG93IGRpc3BsYXlpbmcgOC1iaXQgUkxFIEJNUCBpbWFnZXMuCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IDIyZDZjOGZhYWM0ZTlmYTQzMjMyYjBjZjRkYTQyN2VjMTRkNzJhZDMKQXV0aG9yOiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+CkRhdGU6CVRodSBBcHIgMSAxMToxNTowNSAyMDEwICswODAwCgogICAgY2ZpX2ZsYXNoOiByZXNldCB0aW1lciBpbiBmbGFzaCBzdGF0dXMgY2hlY2sKCiAgICBUaGlzIHBhdGNoIGFkZHMgcmVzZXRfdGltZXIoKSBiZWZvcmUgdGhlIGZsYXNoIHN0YXR1cyBjaGVjawogICAgd2FpdGluZyBsb29wLgoKICAgIFNpbmNlIHRoZSB0aW1lciBpcyBiYXNpY2FsbHkgcnVubmluZyBhc3luY2hyb25vdXMgdG8gdGhlIGNmaQogICAgY29kZSwgaXQgaXMgcG9zc2libGUgdG8gY2FsbCBnZXRfdGltZXIoMCksIHRoZW4gb25seSBhIGZldwogICAgX1NZU0NMS18gY3ljbGVzIGxhdGVyIGFuIGludGVycnVwdCBpcyBnZW5lcmF0ZWQuIFRoaXMgY2F1c2VzCiAgICB0aW1lb3V0IGV2ZW4gdGhvdWdoIG11Y2ggbGVzcyB0aW1lIGhhcyBlbGFwc2VkLiBTbyB0aGUgdGltZXIKICAgIHBlcmlvZCByZWdpc3RlcnMgc2hvdWxkIGJlIHJlc2V0IGJlZm9yZSBnZXRfdGltZXIoMCkgaXMKICAgIGNhbGxlZC4KCiAgICBUaGVyZSBpcyBzaW1pbGFyIHVzYWdlIGluIG5hbmRfYmFzZS5jLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5MzM0MTkwOTZlODU3Mjc1YjhiMDFmMWFlNTc3MTYyMjMxYjE0M2ZmCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEFwciA3IDAxOjM0OjExIDIwMTAgLTA1MDAKCiAgICBwcGMvODV4eDogVXNlIENPTkZJR19OUzE2NTUwX01JTl9GVU5DVElPTlMgdG8gcmVkdWNlIE5BTkRfU1BMIHNpemUKCiAgICBUaGUgTVBDODUzNkRTX05BTkQgU1BMIGJ1aWxkIHdhcyBmYWlsaW5nIGR1ZSB0byBjb2RlIHNpemUgaW5jcmVhc2UKICAgIGludHJvZHVjZWQgYnkgY29tbWl0OgoKICAgIGNvbW1pdCAzM2Y1N2JkNTUzZWRmMjlkZmZlZjVhNmM3ZDc2ZTE2OWM3OWE2MDQ5CiAgICBBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBEYXRlOiAgIEZyaSBNYXIgMjYgMTU6MTQ6NDMgMjAxMCAtMDUwMAoKCTg1eHg6IEZpeCBlbmFibGluZyBvZiBMMSBjYWNoZSBwYXJpdHkgb24gc2Vjb25kYXJ5IGNvcmVzCgogICAgV2UgYnVpbHQgaW4gc29tZSBOUzE2NTUwIGZ1bmN0aW9ucyB0aGF0IHdlIGRvbnQgbmVlZCBhbmQgY2FuIGdldAogICAgcmlkIG9mIHRoZW0gdmlhIENPTkZJR19OUzE2NTUwX01JTl9GVU5DVElPTlMuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA1YTQ2OTYwODgzNzZmZmY4MjYyOWU3ZTRhMjQ0NDI5NGRjNTg5Yzk2CkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEFwciAxIDEwOjQ5OjQyIDIwMTAgLTA1MDAKCiAgICBwMjAyMGRzOiBhZGQgYWx0ZXJuYXRlIGJvb3QgYmFuayBzdXBwb3J0IHVzaW5nIHRoZSBuZ1BJWElTIEZQR0EKCiAgICBUaGUgRnJlZXNjYWxlIFAyMDIwRFMgYm9hcmQgdXNlcyBhIG5ldyB0eXBlIG9mIFBJWElTIEZQR0EsIGNhbGxlZCB0aGUgbmdQSVhJUy4KICAgIFRoZSBuZ1BJWElTIGhhcyBvbmUgZGlzdGluY3QgbmV3IGZlYXR1cmU6IHRoZSB2YWx1ZXMgb2YgdGhlIG9uLWJvYXJkIHN3aXRjaGVzCiAgICBjYW4gYmUgc2VsZWN0aXZlbHkgb3ZlcnJpZGRlbiB3aXRoIHNoYWRvdyByZWdpc3RlcnMuICBUaGlzIGZlYXR1cmUgaXMgdXNlZCB0bwogICAgYm9vdCBmcm9tIGEgZGlmZmVyZW50IE5PUiBmbGFzaCBiYW5rLCBpbnN0ZWFkIG9mIGhhdmluZyBhIHJlZ2lzdGVyIGRlZGljYXRlZAogICAgZm9yIHRoaXMgcHVycG9zZS4gIEJlY2F1c2UgdGhlIG5nUElYSVMgaXMgc28gZGlmZmVyZW50IGZyb20gdGhlIHByZXZpb3VzIFBJWElTLAogICAgYSBuZXcgZmlsZSBpcyBpbnRyb2R1Y2VkOiBuZ3BpeGlzLmMuCgogICAgQWxzbyB1cGRhdGUgdGhlIFAyMDIwRFMgY2hlY2tib2FyZCgpIGZ1bmN0aW9uIHRvIHVzZSB0aGUgbmV3IG1hY3JvcyBkZWZpbmVkCiAgICBpbiB0aGUgaGVhZGVyIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMmZlYjRhZjAwMWEwYmU1Y2NhZDZlNmE2ZWIwNzIyMDdjYmVmNmUzZgpBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXIgMzEgMTc6NDQ6MTMgMjAxMCAtMDUwMAoKICAgIGZzbDogaW1wcm92ZSB0aGUgUElYSVMgY29kZSBhbmQgZml4IGEgZmV3IGJ1Z3MKCiAgICBSZWZhY3RvciBhbmQgZG9jdW1lbnQgdGhlIEZyZWVzY2FsZSBQSVhJUyBjb2RlLCB1c2VkIG9uIG1vc3QgODV4eCBhbmQgODZ4eAogICAgYm9hcmRzLiAgVGhpcyBtYWtlcyB0aGUgY29kZSBlYXNpZXIgdG8gcmVhZCBhbmQgbW9yZSBmbGV4aWJsZS4KCiAgICBEZWxldGUgcGl4aXMuaCwgYmVjYXVzZSBub25lIG9mIHRoZSBleHBvcnRlZCBmdW5jdGlvbnMgd2VyZSBhY3R1YWxseSBiZWluZwogICAgdXNlZCBieSBhbnkgb3RoZXIgZmlsZS4gIE1ha2UgYWxsIG9mIHRoZSBmdW5jdGlvbnMgaW4gcGl4aXMuYyAnc3RhdGljJy4KICAgIFJlbW92ZSAiI2luY2x1ZGUgcGl4aXMuaCIgZnJvbSBldmVyeSBmaWxlIHRoYXQgaGFzIGl0LgoKICAgIFJlbW92ZSBzb21lIHVubmVjZXNzYXJ5ICNpbmNsdWRlcy4KCiAgICBNYWtlICdwaXhpc19iYXNlJyBpbnRvIGEgbWFjcm8sIHNvIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byBkZWZpbmUgaXQgaW4gZXZlcnkKICAgIGZ1bmN0aW9uLgoKICAgIEFkZCAid2hpbGUoMSk7IiBsb29wcyBhdCB0aGUgZW5kIG9mIGZ1bmN0aW9ucyB0aGF0IHJlc2V0IHRoZSBib2FyZCwgc28gdGhhdAogICAgZXhlY3V0aW9uIGRvZXNuJ3QgY29udGludWUgd2hpbGUgdGhlIHJlc2V0IGlzIGluIHByb2dyZXNzLgoKICAgIFJlcGxhY2UgaW5fOC9vdXRfOCBjYWxscyB3aXRoIGNscmJpdHNfOCwgc2V0Yml0c184LCBvciBjbHJzZXRiaXRzXzgsIHdoZXJlCiAgICBhcHByb3ByaWF0ZS4KCiAgICBSZXBsYWNlIHVsb25nL3VpbnQgd2l0aCB0aGVpciBzcGVsbGVkLW91dCBlcXVpdmFsZW50cy4gIFJlbW92ZSB1bm5lY2Vzc2FyeQogICAgdHlwZWNhc3RzLCBjaGFuZ2luZyB0aGUgdHlwZXMgb2Ygc29tZSB2YXJpYWJsZXMgaWYgbmVjZXNzYXJ5LgoKICAgIEFkZCBDT05GSUdfU1lTX1BJWElTX1ZDRkdFTjBfRU5BQkxFIGFuZCBDT05GSUdfU1lTX1BJWElTX1ZCT09UX0VOQUJMRSB0byBtYWtlCiAgICBpdCBlYXNpZXIgZm9yIHNwZWNpZmljIGJvYXJkcyB0byBzdXBwb3J0IHZhcmlhdGlvbnMgaW4gdGhlIFBJWElTIHJlZ2lzdGVycwogICAgc2V0cy4gIE5vIGN1cnJlbnQgYm9hcmRzIGFwcGVhcnMgdG8gbmVlZCB0aGlzIGZlYXR1cmUuCgogICAgRml4IHRoZSBkZWZpbml0aW9uIG9mIENPTkZJR19TWVNfUElYSVNfVkJPT1RfTUFTSyBmb3IgdGhlIE1QQzg2MTAgSFBDRC4KICAgIEFwcGFyZW50bHksICJwaXhpc19yZXNldCBhbHRiYW5rIiBoYXMgbmV2ZXIgd29ya2VkIG9uIHRoaXMgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZmY4NDczZTkwYTAxOGMyYmIxOWExOTYxNzZjMWYyZTk2MDJkNjM1NApBdXRob3I6IFNhbmRlZXAgR29wYWxwZXQgPHNhbmRlZXAua3VtYXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE1hciAxMiAxMDo0NTowMiAyMDEwICswNTMwCgogICAgODV4eDogU2V0IEhJRDFbbWJkZF0gb24gZTUwMHYyIHJldjUuMCBvciBncmVhdGVyCgogICAgVGhlIEhJRDFbTUJERF0gYml0IGlzIG5ldyBvbiByZXY1LjAgb3IgZ3JlYXRlciBjb3JlcyBhbmQgd2lsbCBvcHRpbWl6ZQogICAgdGhlIHBlcmZvcm1hbmNlIG9mIG1iYXIvZWllaW8gaW5zdHJ1Y3Rpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgR29wYWxwZXQgPHNhbmRlZXAua3VtYXJAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyMTYwODI3NTRmNmRhNTM1OWVhMGRiOWIwY2MwM2FkNTMxYWM2ZTQ1CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIE1hciAzMCAyMzowNjo1MyAyMDEwIC0wNTAwCgogICAgODV4eDogQWRkZWQgdmFyaW91cyBQMTAxMi9QMTAxMy9QMTAyMS9QMTAyMiBkZWZpbmVzCgogICAgVGhlcmUgYXJlIHZhcmlvdXMgbG9jYXRpb25zIHRoYXQgd2UgaGF2ZSBjaGlwIHNwZWNpZmljIGluZm86CgogICAgKiBNYWtlZmlsZSBmb3Igd2hpY2ggZGRyIGNvZGUgdG8gYnVpbGQKICAgICogQWRkZWQgUDEwMTIvUDEwMTMvUDEwMjEvUDEwMjIgdG8gY3B1X3R5cGVfbGlzdCBhbmQgU1ZSIGxpc3QKICAgICogQWRkZWQgbnVtYmVyIG9mIExBV3MgZm9yIFAxMDEyL1AxMDEzL1AxMDIxL1AxMDIyCiAgICAqIFNldCBDT05GSUdfTUFYX0NQVVMgdG8gMiBmb3IgUDEwMjEvUDEwMjIKICAgICogUENJIHBvcnQgY29uZmlnCgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNyaWthbnRoIFNyaW5pdmFzYW4gPHNyaWthbnRoLnNyaW5pdmFzYW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNWE4NWEzMDk2OTQwYjBhMGNkMDE2YzhhY2Y0OTQ0NDIxYzY0ZjhjNwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBNYXIgMzAgMTA6MDc6MTIgMjAxMCAtMDUwMAoKICAgIHBwYy84eHh4OiBEZWxldGUgUENJIG5vZGVzIGZyb20gZGV2aWNlIHRyZWUgaWYgbm90IGNvbmZpZ3VyZWQKCiAgICBJZiB0aGUgUENJIGNvbnRyb2xsZXIgd2Fzbid0IGNvbmZpZ3VyZWQgb3IgZW5hYmxlZCBkZWxldGUgZnJvbSB0aGUKICAgIGRldmljZSB0cmVlIChpbmNsdWRlIGl0cyBhbGlhcykuCgogICAgRm9yIHRoZSBjYXNlIHRoYXQgd2UgZGlkbid0IGV2ZW4gY29uZmlndXJlIHUtYm9vdCB3aXRoIGtub3dsZWRnZSBvZgogICAgdGhlIGNvbnRyb2xsZXIgd2UgY2FuIHVzZSB0aGUgZmFjdCB0aGF0IHRoZSBwY2lfY29udHJvbGxlciBwb2ludGVyCiAgICBpcyBOVUxMIHRvIGRlbGV0ZSB0aGUgbm9kZSBpbiB0aGUgZGV2aWNlIHRyZWUuICBXZSBkZXRlcm1pbmUgdGhhdAogICAgYSBjb250cm9sbGVyIHdhcyBub3Qgc2V0dXAgKGJlY2F1c2Ugb2YgSFcgY29uZmlnKSBiYXNlZCBvbiB0aGUgZmFjdAogICAgdGhhdCBjZmdfYWRkciB3YXNuJ3Qgc2V0dXAuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAzZjFhNWMxNjU1ZDMyYjdhYjhhZTc0Yzc5OTM0Y2UxMDBlYmNkMmJmCkF1dGhvcjogQnJlbnQgS2FuZGV0emtpIDxCcmVudEtAdGVsZWNvLmNvbT4KRGF0ZToJV2VkIE1hciAyNCAxNzo0MTozMyAyMDEwIC0wNDAwCgogICAgQmxhY2tmaW46IElQMDQ6IG5ldyBib2FyZCBwb3J0CgogICAgQSBsb3cgY29zdCA0IHBvcnQgSVAtUEJYIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJyZW50IEthbmRldHpraSA8QnJlbnRLQHRlbGVjby5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYTNjMDgzNjNiOTI3Yjg0ZGVlOTExYmZjYjI5YWI0NWQ1M2M5OGY2MgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIE1hciAyMyAxNjoyMzozOSAyMDEwIC0wNDAwCgogICAgQmxhY2tmaW46IGRyb3AgYmZpbiAjdW5kZWYgaW4gbGlua2VyIHNjcmlwdAoKICAgIE5vdyB0aGF0IHRoZSBsaW5rZXIgc2NyaXB0IGlzIHByZXByb2Nlc3NlZCB3aXRoIC1hbnNpLCB0aGVyZSBpcyBubyBuZWVkIHRvCiAgICBtYW51YWxseSB1bmRlZiB0aGUgYmZpbiBkZWZpbmUuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDBjMDgwYWE3NTNlYjkyZTFjMDAzM2QzZmQzMzAzM2IyYjQ4MTM4ODQKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBGZWIgMTEgMjA6MTk6MTAgMjAxMCAtMDUwMAoKICAgIEJsYWNrZmluOiBjYWxsIHdhdGNoZG9nX2luaXQoKSBmb3IgZXh0ZXJuYWwgd2F0Y2hkb2dzCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGI4NzRlZDE3NDcyZGU0OTJjZmJmNThjOGUzNjIzNjRiYzgwZTNkY2QKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBGZWIgMTAgMDE6MjA6NDQgMjAxMCAtMDUwMAoKICAgIEJsYWNrZmluOiBsaW5rIHdpdGggbm9ybWFsIEFCSSB0YXJnZXQKCiAgICBJZiBzb21lb25lIHVzZXMgdGhlIEZEUElDIHRvb2xjaGFpbiB0byBjb21waWxlIFUtQm9vdCwgbWFrZSBzdXJlIHRoZQogICAgbGlua2VyIGtub3dzIHRvIHVzZSB0aGUgbm9ybWFsIEFCSSB0YXJnZXQgcmF0aGVyIHRoYW4gdGhlIEZEUElDIG9uZS4KICAgIFRoaXMgd2Fzbid0IG5lZWRlZCB3aXRoIG9sZGVyIHRvb2xjaGFpbnMsIGJ1dCB3aGVuIHdlIGZpeGVkIHRoZSBsaW5rZXIKICAgIHN1Y2ggdGhhdCB0aGUgZGVmYXVsdCB0YXJnZXQgY2hhbmdlZCBiYXNlZCBvbiB0dXBsZSwgdGhpcyBicm9rZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZGQ5NzAyMmNiZWFhZTVmZDRiY2UyNWNmN2U4NjAxOTEwMWEwNDBlZgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJRnJpIEphbiAyOSAxNTo0ODoyOCAyMDEwIC0wNTAwCgogICAgQmxhY2tmaW46IHN5bmMgcHRyYWNlIGhlYWRlcnMgd2l0aCBsaW51eAoKICAgIFNjcnViIGEgbG90IG9mIGRlYWQgY3J1ZnQgaW4gdGhlIHByb2Nlc3MuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDZhMGJlOGY4ZmU2ZDcyYTMwZTY5ZDA4ZGVjYjcyZGMzYmVjNTQ4NGMKQXV0aG9yOiBIYXJhbGQgS3JhcGZlbmJhdWVyIDxIYXJhbGQuS3JhcGZlbmJhdWVyQGJsdWV0ZWNobml4LmF0PgpEYXRlOglGcmkgSmFuIDIyIDE3OjE1OjU1IDIwMTAgLTA1MDAKCiAgICBCbGFja2ZpbjogY20tYmY1NjE6IHVwZGF0ZSBuZXR3b3JrL2VudiBzZXR0aW5ncwoKICAgIFN3aXRjaCB0byB0aGUgU01DOTExWCBkcml2ZXIgYnkgZGVmYXVsdCBub3csIGFuZCBmaXggTERSIGVudiBzZXR0aW5ncy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYXJhbGQgS3JhcGZlbmJhdWVyIDxIYXJhbGQuS3JhcGZlbmJhdWVyQGJsdWV0ZWNobml4LmF0PgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDIxNjgxOGMxYTJkMDNiMWMwOTk0ZjAwOTkzYzk5YWYzOGM1YjFlODMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBKYW4gMjEgMjM6Mjk6MTggMjAxMCAtMDUwMAoKICAgIEJsYWNrZmluOiBiZjUzNy1zdGFtcDogYWRkIGJvYXJkIHRlc3QgZGVmaW5lcwoKICAgIFdlIHR3ZWFrIHRoZSBjb25maWdzIGEgbGl0dGxlIHdoZW4gZG9pbmcgYXV0b21hdGVkIGhhcmR3YXJlIHRlc3RzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAzOGI5Yjc0NDZlY2QzYTcyOGJhZDNlMTkxM2E5ODQ2MjhhNzM2M2ZiCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgSmFuIDE5IDIxOjAyOjAwIDIwMTAgLTA1MDAKCiAgICBCbGFja2ZpbjogcmVsYXggLmRhdGEgYWxpZ25tZW50CgogICAgVGhlIHN0cmljdGVzdCBhbGlnbm1lbnQgb24gQmxhY2tmaW4gc3lzdGVtcyBpcyAzMmJpdHMgKHNpbmNlIHRoYXQgaXMgdGhlCiAgICBsYXJnZXN0IGxvYWQgaW5zdHJ1Y3Rpb24pLCBzbyBkb24ndCBmb3JjZSAyNTZieXRlIGFsaWdubWVudCBoZXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAwM2Y3MDUzZjcwYmM1NWI1MGM5ZDIzZTU0ZjkwZDc3MjQxOTMwMGE2CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgSmFuIDE5IDE1OjM5OjA3IDIwMTAgLTA1MDAKCiAgICBCbGFja2ZpbjogZHJvcCByZWZlcmVuY2UgdG8gZ2QtPnJlbG9jX29mZgoKICAgIFRoZSByZWxvY19vZmYgbWVtYmVyIG5vIGxvbmdlciBleGlzdHMsIHNvIGRyb3AgaXQuCUFsc28gY2hhbmdlIHRoaXMKICAgIGZ1bmN0aW9uIHNvIHRoYXQgaXQgaXMgYWx3YXlzIGNvbXBpbGVkIGFuZCBwcmV2ZW50cyBsYXRlbnQgaXNzdWVzIGxpa2UKICAgIHRoaXMgaW4gdGhlIGZ1dHVyZS4KCiAgICBSZXBvcnRlZC1ieTogUGV0ZXIgTWVlcndhbGQgPHBtZWVyd0BwbWVlcncubmV0PgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDQ5Yjk3ZDljOGVhN2IxMWM0ZmM5ZTQ1N2NjMmNkOWZkNmViZjBjMjEKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgTWFyIDMwIDEwOjE5OjI2IDIwMTAgLTA1MDAKCiAgICBmZHQ6IEFkZCBmZHRfZGVsX25vZGVfYW5kX2FsaWFzIGhlbHBlcgoKICAgIEFkZCBhIGhlbHBlciBmdW5jdGlvbiB0aGF0IGdpdmVuIGFuIGFsaWFzIHdpbGwgZGVsZXRlIGJvdGggdGhlIG5vZGUKICAgIHRoZSBhbGlhcyBwb2ludHMgdG8gYW5kIHRoZSBhbGlhcyBpdHNlbGYKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgQWNrZWQtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgNDU5YzQxYThlMWJlOTZlZGViYTFjMGFmZWNjYWNhZmQ5M2IyYzRlNgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIE5vdiAzIDE1OjUzOjEyIDIwMDkgLTA1MDAKCiAgICBCbGFja2ZpbjogZGlzYWJsZSBOZXRCU0QgYm9vdG0gc3VwcG9ydCBieSBkZWZhdWx0CgogICAgVGhlcmUgaXMgbm8gQmxhY2tmaW4vTmV0QlNEIHBvcnQsIHNvIGVuYWJsaW5nIHN1cHBvcnQgZm9yIGl0IGJ5IGRlZmF1bHQKICAgIGRvZXNuJ3QgbWFrZSBhbnkgc2Vuc2UuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDY5YmNmNWJjODBhNDdhY2JkNjJiOGNmZmY5MzJjYjEyZDQ3OTk3ZDcKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gTWFyIDI5IDEzOjUwOjMxIDIwMTAgLTA1MDAKCiAgICA4NXh4OiBBZGQgZGVmaW5lcyBmb3IgQlVDU1IgYml0cyB0byBtYWtlIGNvZGUgbW9yZSByZWFkYWJsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMjJjOWRlMDY0YTIxOGFlNjE3YmZlZWEzNWQyMTY0NTMyZGY5MTU5NwpBdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBNYXIgNSAxMjoyMjowMCAyMDEwICswODAwCgogICAgZnNsLWRkcjogY2hhbmdlIHRoZSBkZWZhdWx0IGJ1cnN0IG1vZGUgZm9yIEREUjMKCiAgICBGb3IgNjRCIGNhY2hlbGluZSBTb0MsIHNldCB0aGUgZml4ZWQgOC1iZWF0IGJ1cnN0IGxlbiwKICAgIGZvciAzMkIgY2FjaGVsaW5lIFNvQywgc2V0IHRoZSBPbi1UaGUtRmx5IGFzIGRlZmF1bHQuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlYzE0NWU4N2I4MGY2NzY0ZDE3YTZiMGFlYmY1MjFmZTc1OGMzZmRjCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE1hciA1IDEyOjIyOjAwIDIwMTAgKzA4MDAKCiAgICBmc2wtZGRyOiBGaXggdGhlIHR1cm5hcm91bmQgdGltaW5nIGZvciBUSU1JTkdfQ0ZHXzQKCiAgICBSZWFkLXRvLXJlYWQvV3JpdGUtdG8td3JpdGUgdHVybmFyb3VuZCBmb3Igc2FtZSBjaGlwIHNlbGVjdAogICAgb2YgRERSMyBtZW1vcnksIEJMLzIrMiBjeWNsZXMgaXMgZW5vdWdoIGZvciB0aGVtIGF0IEJDNCBhbmQKICAgIE9URiBjYXNlLCBCTC8yIGN5Y2xlcyBpcyBlbm91Z2ggZm9yIGZpeGVkIEJMOC4KICAgIEN1dHRpbmcgZG93biB0aGUgdHVybmFyb3VuZCBmcm9tIEJMLzIrNCB0byBCTC8yKzIgb3IgQkwvMgogICAgd2lsbCBpbXByb3ZlIHRoZSBtZW1vcnkgcGVyZm9ybWFuY2UuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhYjQ2N2M1MTJlNzlkYmQxNGYwMjM1MjY1NWYwNTRhNDMwNGM0NTdlCkF1dGhvcjogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgRmViIDkgMTg6MjM6MzMgMjAxMCArMDgwMAoKICAgIGZzbF9lc2RoYzogT25seSBtb2RpZnkgdGhlIGZpZWxkIHdlIGFyZSBjaGFuZ2luZyBpbiBXTUwKCiAgICBXaGVuIHdlIHNldCB0aGUgcmVhZCBvciB3cml0ZSB3YXRlcm1hcmsgaW4gV01MIHdlIHNob3VsZCBtYWludGFpbiB0aGUKICAgIHJlc3Qgb2YgdGhlIHJlZ2lzdGVyIGFzIGlzLCByYXRoZXIgdGhhbiB1c2luZyBzb21lIGhhcmQgY29kZWQgdmFsdWUuCgogICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA0OGJiM2JiNWFjNGRkMjFlOTMxYWUxNTdjYWFkNjQ0OWJjYjJkMGQ0CkF1dGhvcjogSmVycnkgSHVhbmcgPENoYW5nLU1pbmcuSHVhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE1hciAxOCAxNTo1NzowNiAyMDEwIC0wNTAwCgogICAgZnNsX2VzZGhjOiBBZGQgZnVuY3Rpb24gdG8gcmVzZXQgdGhlIGVTREhDIGNvbnRyb2xsZXIKCiAgICBUbyBzdXBwb3J0IG11bHRpcGxlIGJsb2NrIHJlYWQgY29tbWFuZCB3ZSBtdXN0IHNldCBhYm9ydCBvciB1c2UgYXV0bwogICAgQ01EMTIuICBJZiB3ZSBib290ZWQgZnJvbSBlU0RIQyBjb250cm9sbGVyIG5laXRoZXIgb2YgdGhlc2UgYXJlIHVzZWQKICAgIGFuZCB0aHVzIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGNvbnRyb2xsZXIgdG8gYWxsb3cgbXVsdGlwbGUgYmxvY2sgcmVhZAogICAgdG8gZnVuY3Rpb24uCgogICAgU2lnbmVkLW9mZi1ieTogSmVycnkgSHVhbmcgPENoYW5nLU1pbmcuSHVhbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgY2M0ZDEyMjY1ODVmYTI1NDRiNTExNjcwMmIwMmVhY2JiN2FhNDhhMQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBNYXIgMTggMTU6NTE6MDUgMjAxMCAtMDUwMAoKICAgIGZzbF9lc2RoYzogQWx3YXlzIHN0b3AgY2xvY2sgYmVmb3JlIGNoYW5naW5nIGZyZXF1ZW5jeQoKICAgIFdlIG5lZWQgdG8gc3RvcCB0aGUgY2xvY2tzIG9uIDgzeHgvODV4eCBhcyB3ZWxsIGFzIGlteC4gIE5vIG5lZWQgdG8gbWFrZQogICAgdGhpcyBjb2RlIGNvbmRpdGlvbmFsIHRvIGp1c3QgaW14LgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBBY2tlZC1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Cgpjb21taXQgZDBiMGRjYWEyMjA1NDk5OTlkNmVhNzRjZjg3NDg3ODQ2YzE4NmEwZgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEFwciAxIDE0OjM3OjI0IDIwMTAgKzAyMDAKCiAgICBpMmM6IE1vdmUgUFBDNHh4IEkyQyBkcml2ZXIgaW50byBkcml2ZXJzL2kyYyBkaXJlY3RvcnkKCiAgICBUaGlzIHBhdGNoIG1vdmVzIHRoZSBQUEM0eHggc3BlY2lmaWMgSTJDIGRldmljZSBkcml2ZXIgaW50byB0aGUgSTJDCiAgICBkcml2ZXJzIGRpcmVjdG9yeS4gQWxsIDR4eCBjb25maWcgaGVhZGVycyBhcmUgdXBkYXRlZCB0byBpbmNsdWRlIHRoaXMKICAgIGRyaXZlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYjUwNDVjZGRhNTU2YzczZTI2OTdjZDFkM2VhNjU2MzMxNWNiZjQ5MApBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDMxIDE1OjM4OjU1IDIwMTAgKzAyMDAKCiAgICBhcm0vaW50ZWdyYXRvcjogUmVtb3ZlIHVubmVjY2Vzc2FyeSBDT05GSUdfUENJIGNoZWNrLgoKICAgIHBjaV9ldGhfaW5pdCgpIGlzIGFscmVhZHkgY29uZGl0aW9uYWwgdG8gQ09ORklHX1BDSSBzbyBub3QgZXZlcnkgY2FsbGVyCiAgICBuZWVkcyB0byBoYXZlIGNvbmRpdGlvbmFscy4KCiAgICBUaGlzIGlzIHRoZSBvbmx5IHBsYWNlIGluIHRoZSBjdXJyZW50IGNvZGUgYmFzZSB3aGVyZSBzdWNoIGEgY2hlY2sgaXMKICAgIHN0aWxsIGF0IHRoZSBjYWxsaW5nIHNpdGUuCgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+CiAgICBDQzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KICAgIENDOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgoKY29tbWl0IDA3MDFmNzMwY2ViYzhkZDA2NWI3MDgxMmNhMDMzMjA1NWRjZjEwZjgKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgpEYXRlOglUaHUgTWFyIDI1IDE0OjMwOjEzIDIwMTAgKzAxMDAKCiAgICBhdDkxOiB1c2UgQyBzdHJ1Y3RzIGZvciBBVDkxIE9IQ0kgY29kZQoKICAgIFRoaXMgcGF0Y2ggaXMgcGFydCBvZiBtaWdyYXRpbmcgdGhlIEFUOTEgc3VwcG9ydCB0b3dhcmRzCiAgICB1c2luZyBDIHN0cnVjdCBmb3IgYWxsIFNPQyBhY2Nlc3MuCgogICAgSXQgcmVtb3ZlcyBvbmUgbW9yZSBDT05GSUdfQVQ5MV9MRUdBQ1kgd2FybmluZy4KCiAgICBhdDkxX3BtYy5oIG5lZWRzIGNsZWFudXAgYWZ0ZXIgbWlncmF0aW9uIG9mIHRoZSBkcml2ZXJzCiAgICBoYXMgYmVlbiBkb25lLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Cgpjb21taXQgZTk5MDU2ZTM4NzdkMWYwNGEzNjk5MWFhNDhmMWM2OTA1NDdmNWFiOQpBdXRob3I6IEFzZW4gRGltb3YgPGRpbW92QHJvbmV0aXguYXQ+CkRhdGU6CVRodSBNYXIgMTggMTM6NDY6NDUgMjAxMCArMDIwMAoKICAgIHVzaW5nIEFUOTFfUE1DX01DS1JfTURJVl8gaW5zdGVhZCBvZiBMRUdBQ1kgb25lIGluIGF0OTEvY2xvY2suYwoKICAgIFNpZ25lZC1vZmYtYnk6IEFzZW4gRGltb3YgPGRpbW92QHJvbmV0aXguYXQ+Cgpjb21taXQgNGI4OTRhOTdkMzA3YzMyMDdhZjQwMDMxZDllODIwZTI5NjBkZTU3ZgpBdXRob3I6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+CkRhdGU6CVdlZCBOb3YgMjUgMjM6NDE6NTEgMjAwOSArMDEwMAoKICAgIE5vbWFkaWs6IGZpeCByZXNldF90aW1lcigpCgogICAgUHJldmlvdXMgY29kZSB3YXMgZmFpbGluZyB3aGVuIHJlYWRpbmcgYmFjayB0aGUgdGltZXIgbGVzcyB0aGFuCiAgICA0MDB1cyBhZnRlciByZXNldHRpbmcgaXQuIFRoaXMgbGVhZCBuYW5kIG9wZXJhdGlvbnMgdG8gaW5jb3JyZWN0bHkKICAgIHRpbWVvdXQgYW55IG5vdyBhbmQgdGhlbi4gIE1vcmVvdmVyLCB3cml0aW5nIHRoZSBsb2FkIHJlZ2lzdGVyIGlzbid0CiAgICBpbW1lZGlhdGVseSByZWZsZWN0ZWQgaW4gdGhlIHZhbHVlIHJlZ2lzdGVyLiBXZSBtdXN0IHdhaXQgZm9yIGEgY2xvY2sKICAgIGVkZ2UsIHNvIHJlYWRfdGltZXIgbm93IHdhaXRzIGZvciB0aGUgdmFsdWUgdG8gY2hhbmdlIGF0IGxlYXN0IG9uY2UsCiAgICBvdGhlcndpc2UgbmFuZCBvcGVyYXRpb24gd291bGQgdGltZW91dCBhbnl3YXlzICh0aG91Z2ggbGVzcyBmcmVxdWVudGx5KS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgogICAgQWNrZWQtYnk6IEFuZHJlYSBHYWxsbyA8YW5kcmVhLmdhbGxvQHN0ZXJpY3Nzb24uY29tPgoKY29tbWl0IGY5MzZhYTA1MjhmZTRmNWQ4NjE2ODU3NTUyOGUwYzUyYjQ4NWM2NDIKQXV0aG9yOiBBY2hpbSBFaHJsaWNoIDxhZWhybGljaEB0YXNraXQuZGU+CkRhdGU6CVdlZCBNYXIgMTcgMTQ6NTA6MjkgMjAxMCArMDEwMAoKICAgIENvbnZlcnQgYXQ5MSB3YXRjaGRvZyBkcml2ZXIgdG8gbmV3IFNvQyBhY2Nlc3MKCiAgICBUaGlzIGNvbnZlcnRzIHRoZSBhdDkxIHdhdGNoZG9nIGRyaXZlciB0byBuZXcgYyBzdHJ1Y3R1cmUKICAgIHR5cGUgdG8gYWNjZXNzIHJlZ2lzdGVycyBvZiB0aGUgU29DCgogICAgU2lnbmVkLW9mZi1ieTogQWNoaW0gRWhybGljaCA8YWVocmxpY2hAdGFza2l0LmRlPgoKY29tbWl0IGM5ZjcyYjNkYTg4NTVjM2M5Njc5YzgyMTEyN2NjY2Q5MWUwMzgwZWQKQXV0aG9yOiBEYW5pZWwgR29yc3Vsb3dza2kgPERhbmllbC5Hb3JzdWxvd3NraUBlc2QuZXU+CkRhdGU6CVdlZCBNYXIgMTcgMDg6MjE6MTEgMjAxMCArMDEwMAoKICAgIGF0OTE6IGJvYXJkcyBjbGVhbnVwIGZvciBkZXByZWNhdGVkIENPTkZJR19DTURfQVVUT1NDUklQVAoKICAgIENPTkZJR19DTURfQVVUT1NDUklQVCBzdXBwb3J0IGlzIGRlcHJlY2F0ZWQgYW5kIG5vbi1leGlzdGluZwogICAgVGhpcyBjbGVhbiB1cCBwYXRjaCByZW1vdmVzIHRoZSByZWZlcmVuY2VzIGZvciBlc2QgYm9hcmRzCgogICAgU2lnbmVkLW9mZi1ieTogRGFuaWVsIEdvcnN1bG93c2tpIDxEYW5pZWwuR29yc3Vsb3dza2lAZXNkLmV1PgoKY29tbWl0IGIwMzI2OThmZjY4NzAzNDI4NmM5OGMwOWZkNDgzMGQ4MDRjZDE3ODYKQXV0aG9yOiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgpEYXRlOglUdWUgTWFyIDkgMjI6MTM6NTYgMjAxMCArMDEwMAoKICAgIGVwOTN4eCB0aW1lcjogcmVmYWN0b3JpbmcKCiAgICBlcDkzeHggdGltZXI6IFNpbXBsaWZpZWQgdGhlIHRpbWVyIGNvZGUgYnkgZWxpbWluYXRpbmcgY2xrX3RvX3N5c3RpY2tzKCkgYW5kCiAgICBwZXJmb3JtaW5nIChhbG1vc3QpIGFsbCBtYW5pcHVsYXRpb24gb2YgdGhlIHRpbWVyIHN0cnVjdHVyZSBpbiByZWFkX3RpbWVyKCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgoKY29tbWl0IDMzZWVmMDRiZjg1NDFmN2IxNWQ0ZjY5NGFkMTBmOWI5MTJiOWNhYTYKQXV0aG9yOiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgpEYXRlOglUdWUgTWFyIDkgMjI6MTM6NDcgMjAxMCArMDEwMAoKICAgIGVwOTN4eCB0aW1lcjogUmVuYW1lIHN0cnVjdCB0aW1lcl9yZWcgcG9pbnRlcnMKCiAgICBlcDkzeHggdGltZXI6IFJlbmFtZWQgcG9pbnRlcnMgdG8gc3RydWN0IHRpbWVyX3JlZ3MgZnJvbSBuYW1lICd0aW1lcicgdG8KICAgICd0aW1lcl9yZWdzJyBpbiBvcmRlciB0byBhdm9pZCBjb25mdXNpb24gd2l0aCB0aGUgZ2xvYmFsIHZhcmlhYmxlICd0aW1lcicKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgoKY29tbWl0IDI1MjhkYzUyMzYxYmVhNDllNmJkNGE5NWNlMjM3NGQwMDA0Y2E1NmYKQXV0aG9yOiBOYXZlZW4gS3Jpc2huYSBDSCA8Y2gubmF2ZWVuQHNhbXN1bmcuY29tPgpEYXRlOglGcmkgTWFyIDUgMTc6MTY6MDUgMjAxMCArMDkwMAoKICAgIFNBTVNVTkc6IFNNREtDMTAwOiBBZGRzIGV0aGVybmV0IHN1cHBvcnQuCgogICAgQWRkIHNldHVwIGZvciBldGhlcm5ldCBvbiBTTURLQzEwMCwgYWxsb3dpbmcga2VybmVsL3JhbWRpc2sgdG8gYmUKICAgIGxvYWRlZCBvdmVyIHRmdHAuCgogICAgVGhlIHByZWluaXQgZnVuY3Rpb24gd2lsbCBjb25maWd1cmUgR1BJTyAoR1BLMENPTikgJiBTUk9NQyB0byBsb29rCiAgICBmb3IgZW52aXJvbm1lbnQgaW4gU1JPTSBCYW5rIDMuCgogICAgU2lnbmVkLW9mZi1ieTogTmF2ZWVuIEtyaXNobmEgQ2ggPGNoLm5hdmVlbkBzYW1zdW5nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KCmNvbW1pdCAwMTgwMmUwZDIyYTRiYjM5MDNiMzQyZmYyMzU3ZWEzYmJjY2NkMjg5CkF1dGhvcjogTmF2ZWVuIEtyaXNobmEgQ0ggPGNoLm5hdmVlbkBzYW1zdW5nLmNvbT4KRGF0ZToJRnJpIE1hciA1IDE3OjE1OjM4IDIwMTAgKzA5MDAKCiAgICBTNVBDMTAwOiBGdW5jdGlvbiB0byBjb25maWd1cmUgdGhlIFNST01DIHJlZ2lzdGVycy4KCiAgICBOYW5kIEZsYXNoLCBFdGhlcm5ldCwgb3RoZXIgZmVhdHVyZXMgbWlnaHQgbmVlZCB0byBjb25maWd1cmUgdGhlCiAgICBTUk9NQyByZWdpc3RlcnMgYWNjb3JkaW5nbHkuCiAgICBUaGUgY29uZmlnX3Nyb21jKCkgZnVuY3Rpb25zIGhlbHBzIHdpdGggdGhpcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOYXZlZW4gS3Jpc2huYSBDaCA8Y2gubmF2ZWVuQHNhbXN1bmcuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgoKY29tbWl0IGEyOGJlYzg5Y2NjMTdiNTZhNTBkODQxYzhmMDc3OGU5Mjc0MzRkMWMKQXV0aG9yOiBOYXZlZW4gS3Jpc2huYSBDSCA8Y2gubmF2ZWVuQHNhbXN1bmcuY29tPgpEYXRlOglGcmkgTWFyIDUgMTc6MTU6MTMgMjAxMCArMDkwMAoKICAgIFM1UEMxMDA6IE1lbW9yeSBTdWJTeXN0ZW0gSGVhZGVyIGZpbGUsIHJlZ2lzdGVyIGRlc2NyaXB0aW9uKFNST01DKS4KCiAgICBNZW1vcnkgc3Vic3lzdGVtIG9mIFM1UEMxMDAgaGFuZGxlcyBTUk9NLCBTUkFNLCBPbmVEUkFNLCBPbmVOYW5kLAogICAgTkFORCBGbGFzaCwgRERScy4KICAgIHNtYy5oIGlzIGEgY29tbW9uIHBsYWNlIGZvciB0aGUgcmVnaXN0ZXIgZGVzY3JpcHRpb24gb2YgTWVtb3J5IHN1YnN5c3RlbQogICAgb2YgUzVQQzEwMC4KICAgIE5vdGU6IE9ubHkgU1JPTSByZWxhdGVkIHJlZ2lzdGVycyBhcmUgZGVzY2liZWQgbm93LgoKICAgIFNpZ25lZC1vZmYtYnk6IE5hdmVlbiBLcmlzaG5hIENoIDxjaC5uYXZlZW5Ac2Ftc3VuZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Cgpjb21taXQgYWJiZTE4YzM1M2MyOTdhNDBjNDI4YmE5MmYzZTFhODVlOGU2OTRmYwpBdXRob3I6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KRGF0ZToJRnJpIEZlYiAxMiAxODoyMToxNyAyMDEwICswOTAwCgogICAgczVwYzF4eDogdXBkYXRlIHRoZSBSRUFETUUgZmlsZQoKICAgIEJlY2F1c2UgYWRkcyBzdXBwb3J0IHRoZSBHUElPIEludGVyZmFjZSwgUkVBRE1FIGZpbGUgaXMgdXBkYXRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Cgpjb21taXQgYWI2OTNlOWM0YzA2YjQyZDE3NDZhMGQ3YTAzNTQxOTY4ZmI1NWJiOQpBdXRob3I6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KRGF0ZToJRnJpIEZlYiAxMiAxODoxNzo1MiAyMDEwICswOTAwCgogICAgczVwYzF4eDogc3VwcG9ydCB0aGUgR1BJTyBpbnRlcmZhY2UKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCB0aGUgR1BJTyBpbnRlcmZhY2UKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Cgpjb21taXQgN2I5MjE1OWJkOWZjMGFjYWRkZDY1YjMxNGRhMjUyYjcxNWQxYjQ0ZQpBdXRob3I6IEpvb255b3VuZyBTaGltIDxqeTA5MjIuc2hpbUBzYW1zdW5nLmNvbT4KRGF0ZToJTW9uIEZlYiA4IDIyOjAwOjUyIDIwMTAgKzA5MDAKCiAgICBzM2M2NHh4OiBBZGQgaWZkZWYgYXQgdGhlIFMzQzY0WFggb25seSBjb2RlcwoKICAgIFRoZSBzM2M2NDAwLmggZmlsZSBpcyBvbmx5IGZvciBTM0M2NFhYIGNwdSBhbmQgdGhlIHBoZXJpcGhlcmFsIHBvcnQKICAgIGFkZHJlc3MoMHg3MDAwMDAwMCAtIDB4N2ZmZmZmZmYpIGV4aXN0cyBhdCBvbmx5IFMzQzY0WFggY3B1LCBzbyB0aGV5CiAgICBzaG91bGQgYmUgaW5jbHVkZWQgYnkgb25seSBTM0M2NFhYIGNwdS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb29ueW91bmcgU2hpbSA8ankwOTIyLnNoaW1Ac2Ftc3VuZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Cgpjb21taXQgNmM3MWE4ZmVjOTVhOWUwZjkwZmJjNDc0NjljMzg5YzZmMzVkOTZiYwpBdXRob3I6IE5hdmVlbiBLcmlzaG5hIENIIDxjaC5uYXZlZW4uc2Ftc3VuZy5jb20+CkRhdGU6CVRodSBGZWIgNCAxNDoxNzozOCAyMDEwICswOTAwCgogICAgUzVQQzEwMDogTW92ZXMgdGhlIE1hY3JvcyB0byBhIGNvbW1vbiBoZWFkZXIgZmlsZQoKICAgIFRoZSBnZXRfcGxsX2NsayhpbnQpIEFQSSByZXR1cm5zIHRoZSBQTEwgZnJlcXVlbmN5IGJhc2VkIG9uCiAgICB0aGUgKGludCkgYXJndW1lbnQgd2hpY2ggaXMgZGVmaW5lZCBsb2NhbGx5IGluIGNsb2NrLmMKCiAgICBNb3ZpbmcgdGhhdCAjZGVmaW5lIHRvIGNvbW1vbiBoZWFkZXIgZmlsZSAoY2xrLmgpIHdvdWxkCiAgICBiZSBoZWxwZnVsIHdoZW4gdXNpbmcgdGhlIEFQSSBmcm9tIG90aGVyIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5hdmVlbiBLcmlzaG5hIENoIDxjaC5uYXZlZW5Ac2Ftc3VuZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Cgpjb21taXQgMmNhNTUxZGQ3YWQ2ZWMxMTQxOGYxMTNiMWI1MGM5NmZkZDE1YTM3MApBdXRob3I6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KRGF0ZToJTW9uIE1hciA4IDE2OjIyOjMzIDIwMTAgKzA5MDAKCiAgICBNQUlOVEFJTkVSUzogc29ydCB0aGUgbGlzdCBvZiBBUk0gTWFpbnRhaW5lcnMgYnkgbGFzdCBuYW1lCgogICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgoKY29tbWl0IGM5MzdjNDI0MzE5MjNjOTZhNjE3ZTk0NjJlMmMwZWNiYWYyYWQ3MmQKQXV0aG9yOiBWaXBpbiBLVU1BUiA8dmlwaW4ua3VtYXJAc3QuY29tPgpEYXRlOglNb24gTWFyIDggMTA6NDY6MDcgMjAxMCArMDUzMAoKICAgIFNQRUFyIDogQWRkaW5nIG1haW50YWluZXIgbmFtZSBmb3Igc3BlYXIgU29DcwoKICAgIFNpZ25lZC1vZmYtYnk6IFZpcGluIEt1bWFyIDx2aXBpbi5rdW1hckBzdC5jb20+Cgpjb21taXQgZDhiYzBhMjg4OTcwMGJhMDYzNTk4ZGU2ZDRlN2QxMzUzNjBiNTM3ZQpBdXRob3I6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgpEYXRlOglUaHUgQXByIDEgMDA6MDA6NTYgMjAxMCAtMDQwMAoKICAgIG5pb3MyOiBSZWxvYWQgdGltZXIgY291bnQgaW4gcmVzZXRfdGltZXIoKQoKICAgICAgIFdoZW4gdGhlIHRpbWVzdGFtcCBpcyBpbmNyZW1lbnRlZCB2aWEgaW50ZXJydXB0IGFuZCB0aGUgaW50ZXJydXB0CiAgICAgICBwZXJpb2QgaXMgZ3JlYXRlciB0aGFuIDEgbXNlYywgc3VjY2Vzc2l2ZSBjYWxscyB0byBnZXRfdGltZXIoKSBjYW4KICAgICAgIHByb2R1Y2UgaW5hY2N1cmF0ZSB0aW1pbmcgc2luY2UgdGhlIGludGVycnVwdHMgYXJlIGFzeW5jaHJvbm91cwogICAgICAgdG8gdGhlIHRpbWluZyBsb29wLiBGb3IgZXhhbXBsZSwgd2l0aCBhbiBpbnRlcnJ1cHQgcGVyaW9kIG9mIDEwIG1zZWMKICAgICAgIHR3byBzdWNjZXNzaXZlIGNhbGxzIHRvIGdldF90aW1lcigpIGNvdWxkIGluZGljYXRlIGFuIGVsYXBzZWQgdGltZQogICAgICAgb2YgMTAgbXNlYyBhZnRlciBvbmx5IHNldmVyYWwgaHVuZHJlZCB1c2VjcyAtLSBkZXBlbmRpbmcgb24gd2hlbgogICAgICAgdGhlIG5leHQgaW50ZXJydXB0IGFjdHVhbGx5IG9jY3Vycy4gVGhpcyBiZWhhdmlvciBjYW4gY2F1c2UKICAgICAgIHJlbGlhYmlsaXR5IGlzc3VlcyB3aXRoIGNvbXBvbmVudHMgc3VjaCBhcyBDRkkgYW5kIE5BTkQuCgogICAgICAgVGhpcyBjYW4gYmUgcmVtZWRpZWQgYnkgY2FsbGluZyByZXNldF90aW1lcigpIHByaW9yIHRvIGVzdGFibGlzaGluZwogICAgICAgdGhlIGJhc2UgdGltZXN0YW1wIHdpdGggZ2V0X3RpbWVyKDApLCBwcm92aWRlZCByZXNldF90aW1lcigpCiAgICAgICByZXNldHMgdGhlIGhhcmR3YXJlIHRpbWVyIChyYXRoZXIgdGhhbiBzaW1wbHkgcmVzZXR0aW5nIG9ubHkgdGhlCiAgICAgICB0aW1lc3RhbXApLiBUaGlzIGhhcyB0aGUgZWZmZWN0IG9mIHN5bmNocm9uaXppbmcgdGhlIGludGVycnVwdHMKICAgICAgIChhbmQgdGhlIGFkdmFuY2Ugb2YgdGhlIHRpbWVzdGFtcCkgd2l0aCB0aGUgdGltaW5nIGxvb3AuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Cgpjb21taXQgZWQyOTQxNTc4NDgwZDMwYjQxM2UwODFiNmYxYTU2NzVkNGFmZDllMgpBdXRob3I6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KRGF0ZToJV2VkIE1hciAyNCAxMTo0MTo0NiAyMDEwICswODAwCgogICAgbmlvczI6IHBhc3MgY29tbWFuZCBsaW5lIGFuZCBpbml0cmQgdG8gbGludXggaW4gYm9vdG0uYwoKICAgIFRoaXMgcGF0Y2ggYWRkcyBib290YXJncyBwYXNzaW5nIHRvIG5pb3MyIGxpbnV4LgoKICAgIFRoZSBhcmdzIHBhc3NpbmcgaXMgZW5hYmxlZCB3aXRoLAogICAgcjQgOiAnTklPUycgbWFnaWMKICAgIHI1IDogcG9pbnRlciB0byBpbml0cmQgc3RhcnQKICAgIHI2IDogcG9pbnRlciB0byBpbml0cmQgZW5kCiAgICByNyA6IHBvaW50ZXIgdG8gY29tbWFuZCBsaW5lCgogICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Cgpjb21taXQgOWU0ODZhYjFjOThlYTdhYjM1NzUyMDMwN2ZlNWQ1YTA4NDdjZDFiYgpBdXRob3I6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgpEYXRlOglUdWUgTWFyIDMwIDIwOjI2OjE1IDIwMTAgLTA0MDAKCiAgICBuaW9zMjogRml4IEFNRExWMDY1RCBmbGFzaCB3cml0ZSBidWcgaW4gYWx0ZXJhIGJvYXJkIGNvbW1vbiB0cmVlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgoKY29tbWl0IDNhODlhOTFhMTBmZWQ1NDVhZjQ1ODQxOGU2M2Q5MTE5NTNhOTg0OWMKQXV0aG9yOiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KRGF0ZToJVHVlIE1hciAzMCAyMDoyMzowNCAyMDEwIC0wNDAwCgogICAgbmlvczI6IFNldCBDT05GSUdfU1lTX0haIHRvIDEwMDAgYWxsIG5pb3MyIGJvYXJkcy4KCiAgICAgICBDT05GSUdfU1lTX0haIHdhcyBiZWluZyBjYWxjdWxhdGVkIChpbmNvcnJlY3RseSkgaW4gbmlvczIgY29uZmlndXJhdGlvbgogICAgICAgaGVhZGVycy4gVXBkYXRlZCBjb21tZW50cyB0byBhY2N1cmF0ZWx5IGRlc2NyaWJlIHRpbWViYXNlIG1hY3Jvcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KCmNvbW1pdCAzZWEwMDM3ZjIzMzdkZTY5MmI1ZmQyYjZhNDQ0OWRiMWRlMzA2N2EyCkF1dGhvcjogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+CkRhdGU6CVN1biBNYXIgMjEgMjE6MjQ6NDMgMjAxMCAtMDQwMAoKICAgIG5pb3MyOiBGaXggb3V0eC93cml0ZXggcGFyYW1ldGVyIG9yZGVyIGluIGlvLmgKCiAgICBUaGUgb3V0eC93cml0ZXggbWFjcm9zIHdlcmUgdXNpbmcgd3JpdGV4KGFkZHIsIHZhbCkgcmF0aGVyIHRoYW4KICAgICAgIHRoZSBzdGFuZGFyZCB3cml0ZXgodmFsLCBhZGRyKSwgcmVzdWx0aW5nIGluIGluY29tcGF0aWJpbHR5IHdpdGgKICAgICAgIGFyY2hpdGVjdHVyZSBpbmRlcGVuZGVudCBjb21wb25lbnRzLiBUaGlzIGNoYW5nZSBzZXQgdXNlcyBzdGFuZGFyZAogICAgICAgcGFyYW1ldGVyIG9yZGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgoKY29tbWl0IDY0ZGEwNGQyNGVhNjg1NDgzZjlhZmEwNzA4OGY3NjkzMWI2YzBlMDEKQXV0aG9yOiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KRGF0ZToJU3VuIE1hciAyMSAxNTozNjo0NCAyMDEwIC0wNDAwCgogICAgbmlvczI6IEFkZCBzdXBwb3J0IGZvciBFUENTMTYgYW5kIEVQQ1M2NCBjb25maWd1cmF0aW9uIGRldmljZXMuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Cgpjb21taXQgM2ZkMmExZjNlYjgzYTBiYmI4NGExMzk3ZmY5YzJhZjdlNmY1ZDA2OQpBdXRob3I6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgpEYXRlOglTdW4gTWFyIDIxIDEzOjI2OjMzIDIwMTAgLTA0MDAKCiAgICBuaW9zMjogQWRkIG1pc3NpbmcgRXRoZXJuZXQgaW5pdGlhbGl6YXRpb24gdG8gYm9hcmRfaW5pdCgpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgoKY29tbWl0IGM3MmJmYWZiYzk0ZTYxZWEzZmYzOTE1Yzg0YWE3ZjlkOTFhMDQ1YTAKQXV0aG9yOiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+CkRhdGU6CVNhdCBNYXIgMjAgMDc6MDU6NDcgMjAxMCArMDgwMAoKICAgIG5pb3MyOiBhZGQgc3RydWN0IHN0YXQgc3VwcG9ydCBpbiBsaW51eC9zdGF0LmgKCiAgICBUaGlzIGlzIG5lZWRlZCBmb3IgamZmczIgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KCmNvbW1pdCAzYmVmMjUzZjA4MDJjNjI5MmI4ZTJhY2MwMDg5ODk0MDE5ZTk5ZTYyCkF1dGhvcjogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgpEYXRlOglTYXQgTWFyIDIwIDA3OjA1OjQ2IDIwMTAgKzA4MDAKCiAgICBuaW9zMjogdXNlIGJpdG9wcyBmcm9tIGxpbnV4LTIuNiBhc20tZ2VuZXJpYwoKICAgIFRoZXNlIGFyZSBuZWVkZWQgdG8gdXNlIHViaS91Ymlmcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KCmNvbW1pdCBkOGI3M2RmZmE5ODY2ZDZkZTNjMDVjOGEyZDA3ZWNkNGJjMGQ1ZDdlCkF1dGhvcjogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgpEYXRlOglTYXQgTWFyIDIwIDA3OjA1OjQ1IDIwMTAgKzA4MDAKCiAgICBuaW9zMjogYWRkIGxvY2FsX2lycV9lbmFibGUvZGlzYWJsZSB0byBhc20tbmlvczIvc3lzdGVtLmgKCiAgICBDb3B5IGZyb20gbGludXggaGVhZGVyLiBUaGlzIGlzIG5lZWRlZCBmb3IgZ2VuZXJpYyBiaXRvcHMuCgogICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Cgpjb21taXQgNTRkODA5ZTc1NTM5Mzk2MjllODk0MWFiOWVlZjFmNzYyNDYzYTJiMwpBdXRob3I6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KRGF0ZToJU2F0IE1hciAyMCAwNzowNTo0NCAyMDEwICswODAwCgogICAgbmlvczI6IGFkZCBhc20tbmlvczIvZXJybm8uaAoKICAgIEp1c3QgcHVsbCBpbiBhc20tZ2VuZXJpYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KCmNvbW1pdCBjOWQ0ZjQ2YjVkNjM5YTQ1NzQ3ZDVlYWFiZDMxZDM1ODU2Y2I5MThmCkF1dGhvcjogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+CkRhdGU6CUZyaSBNYXIgMTkgMTk6MDM6MjggMjAxMCAtMDQwMAoKICAgIG5pb3MyOiBNb3ZlIHNlcmlhbCBkcml2ZXJzIHRvIGluZGl2aWR1YWwgZmlsZXMgaW4gIGRyaXZlcnMvc2VyaWFsCgogICAgICAgVGhlIHN0YW5kYXJkIEFsdGVyYSBVQVJUICYgSlRBRyBVQVJUIGFzIHdlbGwgYXMgdGhlIE9wZW5Db3JlcwogICAgICAgWUFOVSBkcml2ZXIgYXJlIG5vdyBpbiBpbmRpdmlkdWFsIGZpbGVzIGluIGRyaXZlcnMvc2VyaWFsCiAgICAgICByYXRoZXIgdGhhbiBhIHNpbmdsZSBmaWxlIHVuZXIgY3B1L25pb3MyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgoKY29tbWl0IGNhNmUxYzEzNmRkYjcyMGMzYmIyY2MwNDNiOTlmN2YwNmJjNDZjNTUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDMxIDIzOjU0OjM5IDIwMTAgKzAyMDAKCiAgICBQcmVwYXJlIHYyMDEwLjAzCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA4ZTY0ZDZlZmQ4ZDc3OGE1ZjgzZDhiZmY5Y2QyNzNhODZkY2MxODJmCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVdlZCBNYXIgMzEgMDg6MzQ6NTEgMjAxMCArMDIwMAoKICAgIG5ldCwgZG9jOiBIb3cgdG8gc2V0dXAgTUFDIGFkZHJlc3MgY29ycmVjdGx5CgogICAgQXMgdGhpcyBzZWVtcyB1bmNsZWFyLCBkb2N1bWVudCBob3cgdGhlIGZsb3cgb2Ygc2V0dGluZyB1cAogICAgdGhlIE1BQyBhZGRyZXNzIGlzIGNvcnJlY3QuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CgogICAgVGV4dCBjaGFuZ2VkIHNsaWdodGx5LCBhZGRpbmcgaW5wdXQgZnJvbSBNaWtlIEZyeXNpbmdlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGI3OGI0OGM2YTBjMzRiMjk5MWUzMWZjNDU0OGFhZjc3M2QzNGYyYjMKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJV2VkIE1hciAzMSAwODozNDo0NiAyMDEwICswMjAwCgogICAgbmV0LCBmZWNfbXhjOiBvbmx5IHNldHVwIHRoZSBkZXZpY2UgZW5ldGFkZHIgd2l0aCBlZXByb20gdmFsdWUKCiAgICBPbmx5IGZpbGwgdGhlIGRldmljZSBlbmV0YWRkciB3aXRoIHRoZSBjb250ZW50cyBvZiB0aGUgZWVwcm9tLAogICAgZG8gbm90IHByb2dyYW0gaXQgaW4gTUFDIGFkZHJlc3MgcmVnaXN0ZXJzCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CiAgICBBY2tlZC1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBkNWE2NDIzN2Q1OGRlZDMxYzJlZWQ0NTVjN2EzNDZlMWM4NWY1NTY1CkF1dGhvcjogRmVsaXggUmFkZW5za3kgPGZlbGl4QGVtYmVkZGVkLXNvbC5jb20+CkRhdGU6CVR1ZSBNYXIgMzAgMTU6MDI6MTMgMjAxMCArMDMwMAoKICAgIGRvYzogRml4IHJhbWRpc2sgZXhhbXBsZXMgaW4gZG9jL3VJbWFnZS5GSVQvbXVsdGkuaXRzCgogICAgVGhlIHJhbWRpc2sgc2VjdGlvbnMgaW4gZG9jL3VJbWFnZS5GSVQvbXVsdGkuaXRzIGxhY2sKICAgIGxvYWQgYWRkcmVzcyBhbmQgZW50cnkgcG9pbnQgcHJvcGVydGllcy4gVXNpbmcgZXhhbXBsZXMKICAgIGZyb20gdGhpcyBmaWxlIHdpbGwgcmVzdWx0IGluIHVuYm9vdGFibGUgaW1hZ2UsIHUtYm9vdAogICAgd2lsbCBpc3N1ZSB0aGUgZm9sbG93aW5nIGVycm9yIG1lc3NhZ2VzOgoKICAgIENhbid0IGdldCByYW1kaXNrIHN1YmltYWdlIGxvYWQgYWRkcmVzcyEKICAgIFJhbWRpc2sgaW1hZ2UgaXMgY29ycnVwdCBvciBpbnZhbGlkCgogICAgVGhpcyBwYXRjaCBhZGRzIG1pc3NpbmcgcHJvcGVydGllcyB0byByYW1kaXNrIHNlY3Rpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IEZlbGl4IFJhZGVuc2t5IDxmZWxpeEBlbWJlZGRlZC1zb2wuY29tPgoKY29tbWl0IDJkMjAxOGYzZGI1ZWQ4MzRiYzFlZTIwOGEyYzYyMTJmZGYwMGJjYTEKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aGVpa28uc2Nob2NoZXJAaW52aXRlbC5odT4KRGF0ZToJV2VkIE1hciAyNCAxMzoyMjo1MCAyMDEwICswMTAwCgogICAgamZmczIsIHN1ZW4zOiBGaXggY29tcGlsZXIgd2FybmluZwoKICAgICQgLi9NQUtFQUxMIHN1ZW4zCiAgICBqZmZzMl8xcGFzcy5jOiBJbiBmdW5jdGlvbiAnZ2V0X2ZsX21lbSc6CiAgICBqZmZzMl8xcGFzcy5jOjM5OTogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdpZCcKICAgIGpmZnMyXzFwYXNzLmM6IEluIGZ1bmN0aW9uICdnZXRfbm9kZV9tZW0nOgogICAgamZmczJfMXBhc3MuYzo0MjM6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAnaWQnCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CiAgICBUZXN0ZWQtYnk6IFRvbSA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgoKY29tbWl0IDlmZjMyZDhjY2YwZTIzYjU1NzdjMjU2MTBmMDAxYWY4ZDc2MWI0YTIKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gTWFyIDI5IDEyOjUxOjA3IDIwMTAgLTA1MDAKCiAgICBtcGM4Nnh4OiBzZXQgdGhlIEREUiBCQVRzIGFmdGVyIGNhbGN1bGF0aW5nIHRydWUgRERSIHNpemUKCiAgICBBZnRlciBkZXRlcm1pbmluZyBob3cgbXVjaCBERFIgaXMgYWN0dWFsbHkgaW4gdGhlIHN5c3RlbSwgc2V0IERCQVQwIGFuZAogICAgSUJBVDAgYWNjb3JkaW5nbHkuCVRoaXMgZW5zdXJlcyB0aGF0IHRoZSBDUFUgd29uJ3QgYXR0ZW1wdCB0byBhY2Nlc3MKICAgICh2aWEgc3BlY3VsYXRpb24pIGFkZHJlc3NlcyBvdXRzaWRlIG9mIGFjdHVhbCBtZW1vcnkuCgogICAgT24gODZ4eCBzeXN0ZW1zLCBEQkFUMCBhbmQgSUJBVDAgKHRoZSBCQVRzIGZvciBERFIpIGFyZSBpbml0aWFsaXplZCB0byAyR0IKICAgIGFuZCBrZXB0IHRoYXQgd2F5LglJZiB0aGUgc3lzdGVtIGhhcyBsZXNzIHRoYW4gMkdCIG9mIG1lbW9yeSAodHlwaWNhbCBmb3IKICAgIGFuIE1QQzg2MTAgSFBDRCksIHRoZSBDUFUgbWF5IGF0dGVtcHQgdG8gYWNjZXNzIHRoaXMgbWVtb3J5IGR1cmluZwogICAgc3BlY3VsYXRpb24uICBUaGUgemxpYiBjb2RlIGlzIG5vdG9yaW91cyBmb3IgZ2VuZXJhdGluZyBzdWNoIG1lbW9yeSByZWFkcywKICAgIGFuZCBpbmRlZWQgb24gdGhlIE1QQzg2MTAsIHVuY29tcHJlc3NpbmcgdGhlIExpbnV4IGtlcm5lbCBjYXVzZXMgYSBtYWNoaW5lCiAgICBjaGVjayAod2l0aG91dCB0aGlzIHBhdGNoKS4KCiAgICBDdXJyZW50bHkgd2UgYXJlIGxpbWl0ZWQgdG8gcG93ZXIgb2YgdHdvIHNpemVkIEREUiBzaW5jZSB3ZSBvbmx5IHVzZSBhCiAgICBzaW5nbGUgYmF0LiAgSWYgYSBub24tcG93ZXIgb2YgdHdvIHNpemUgaXMgdXNlZCB0aGF0IGlzIGxlc3MgdGhhbgogICAgQ09ORklHX01BWF9NRU1fTUFQUEVEIHUtYm9vdCB3aWxsIGNyYXNoLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDMzZjU3YmQ1NTNlZGYyOWRmZmVmNWE2YzdkNzZlMTY5Yzc5YTYwNDkKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglGcmkgTWFyIDI2IDE1OjE0OjQzIDIwMTAgLTA1MDAKCiAgICA4NXh4OiBGaXggZW5hYmxpbmcgb2YgTDEgY2FjaGUgcGFyaXR5IG9uIHNlY29uZGFyeSBjb3JlcwoKICAgIFVzZSB0aGUgc2FtZSBjb2RlIGJldHdlZW4gcHJpbWFyeSBhbmQgc2Vjb25kYXJ5IGNvcmVzIHRvIGluaXQgdGhlCiAgICBMMSBjYWNoZS4gIFdlIHdlcmUgbm90IGVuYWJsaW5nIGNhY2hlIHBhcml0eSBvbiB0aGUgc2Vjb25kYXJ5IGNvcmVzLgoKICAgIEFsc28sIHJld29ya2VkIHRoZSBMMSBjYWNoZSBpbml0IGNvZGUgdG8gbWF0Y2ggdGhlIGU1MDBtYyBMMiBpbml0IGNvZGUKICAgIHRoYXQgZmlyc3QgaW52YWxpZGF0ZXMgdGhlIGNhY2hlIGFuZCBsb2Nrcy4gIFRoYW4gZW5hYmxlcyB0aGUgY2FjaGUgYW5kCiAgICBtYWtlcyBzdXJlIGl0cyBlbmFibGVkIGJlZm9yZSBjb250aW51aW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMWEzMzJkYTYxZGY5YzM4YjU2NzM1OWFmMTE0ZGFlYWFhZWZhZWFkOApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE1hciAyOSAxNTozMDo0NiAyMDEwICswMjAwCgogICAgcHBjNHh4OiBGaXggcHJvYmxlbSB3aXRoIEkyQyBidXMgPj0gMSBpbml0aWFsaXphdGlvbgoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBwcm9ibGVtIGludHJvZHVjZWQgd2l0aCBwYXRjaCBlYjVlYjJiMAogICAgW3BwYzR4eDogQ2xlYW51cCBQUEM0eHggSTJDIGluZnJhc3RydWN0dXJlXS4gV2UgbmVlZCB0byBhc3NpZ24gdGhlIEkyQwogICAgYmFzZSBhZGRyZXNzIHRvIHRoZSAiaTJjIiBwb2ludGVyIGluc2lkZSBvZiB0aGUgY29udHJvbGxlciBsb29wLgogICAgT3RoZXJ3aXNlIGNvbnRyb2xsZXIgMCBpcyBpbml0aWFsaXplZCBtdWx0aXBsZSB0aW1lcyBpbnN0ZWFkIG9mCiAgICBpbml0aWFsaXppbmcgZWFjaCBJMkMgY29udHJvbGxlciBzZXF1ZW50aWFsbHkuCgogICAgVGVzdGVkIG9uIEthdG1haS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBBY2tlZC1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgMjRkZTJmNGJlMDBmODFjNTgyNzBkMGRmNDcyOTZiZjNhMzYwMWNlZgpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglNb24gTWFyIDI5IDEzOjE1OjQ4IDIwMTAgKzAyMDAKCiAgICBib290bSwgbGludXg6IGZpeCBib290aW5nIE11bHRpLUZpbGUgSW1hZ2Ugd2l0aCAia2VybmVsK3JhbWRpc2srZmR0IgoKICAgIEJvb3RpbmcgYSAiTXVsdGktRmlsZSBJbWFnZSIgaW5jbHVkaW5nIGEgbGludXgga2VybmVsLCByYW1kaXNrIGFuZAogICAgZmR0LCBnZW5lcmF0ZWQgd2l0aAoKICAgIG1raW1hZ2UgLUEgcHBjIFwKCS1PIGxpbnV4IFwKCS1UIG11bHRpIFwKCS1DIGd6aXAgXAoJLWEgMDAwMDAwMDAgXAoJLWUgMDAwMDAwMDAgXAoJLW4gImtlcm5lbC0yLjYraW5pdHJkK2R0YiIgXAoJLWQgInZtbGludXguYmluLmd6OnJhbWRpc2tfaW1hZ2UuZ3o6Ym9hcmQuZHRiIiBcCgltdWx0aS5iaW4KCiAgICBhY3R1YWxseSBmYWlscywgYmVjYXVzZSByYW1kaXNrIHN0YXJ0IGFuZCBlbmQgYWRkcmVzc2VzCiAgICBkaWRuO3QgZ2V0IGluaXRpYWxpemVkLiBUaGlzIHBhdGNoIGZpeGVzIHRoaXMgaXNzdWUuCgogICAgVGVzdGVkIG9uIHRoZSBLVVA0SyBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBmZDAzZWE4OTY0MWQ2ZjZhZGU2ZDFhODU4MGMxYmI5ZjUyYjg1NDJjCkF1dGhvcjogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+CkRhdGU6CUZyaSBNYXIgMjYgMDk6NDY6NDIgMjAxMCArMDEwMAoKICAgIGkyYzogbWFkZSB1bnVzZWQgZnVuY3Rpb24gaTJjX211eF9hZGRfZGV2aWNlIHN0YXRpYwoKICAgIGFuZCByZW1vdmVkIGl0IGZyb20gdGhlIC5oIGZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBGcmFucyBNZXVsZW5icm9la3MgPGZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbT4KCmNvbW1pdCAyYzBkYzk5MDIwMmM2OWE2MjMxMTIyZWMyNDYzYzRlMzA3NmExNmYzCkF1dGhvcjogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+CkRhdGU6CUZyaSBNYXIgMjYgMDk6NDY6NDEgMjAxMCArMDEwMAoKICAgIGNtZF9pMmM6IGludHJvZHVjZWQgZ2V0X2FsZW4gaGVscGVyIGZ1bmN0aW9uCgogICAgVGhlIGNvZGUgdG8gcGFyc2UgYWxlbiBhcHBlYXJlZCA2IHRpbWVzIGluIHRoZSBmdW5jdGlvbi4KICAgIEZhY3RvcmVkIHRoaXMgb3V0IGluIGEgc21hbGwgaGVscGVyIGZ1bmN0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+Cgpjb21taXQgYTI2NmZlOTU1YTU1YmI3YTAzYTY3ZjNjOTEwMzMwNjhmMzE3YjMzNwpBdXRob3I6IEZyYW5zIE1ldWxlbmJyb2VrcyA8ZnJhbnNtZXVsZW5icm9la3NAZ21haWwuY29tPgpEYXRlOglGcmkgTWFyIDI2IDA5OjQ2OjQwIDIwMTAgKzAxMDAKCiAgICBjbWRfaTJjOiBtb3ZlZCBhIGRlZmluZSB0byBiZWZvcmUgdGhlIGZ1bmN0aW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IEZyYW5zIE1ldWxlbmJyb2VrcyA8ZnJhbnNtZXVsZW5icm9la3NAZ21haWwuY29tPgoKY29tbWl0IDRhOGNmMzM4MmE2ZmVhNWNjY2MxZTJhZTYxYTQ2MDFiZjI2NDkwYzMKQXV0aG9yOiBGcmFucyBNZXVsZW5icm9la3MgPGZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbT4KRGF0ZToJRnJpIE1hciAyNiAwOTo0NjozOSAyMDEwICswMTAwCgogICAgY21kX2kyYzogbW92ZWQgbWlzcG9zaXRpb25lZCBjb21tZW50IGZvciBpMmMgbWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBGcmFucyBNZXVsZW5icm9la3MgPGZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbT4KCmNvbW1pdCAzYTZkY2I5ODhlZWUzZmQzY2Q5YzVlZjk2ODU1YThkYTcyOWEyOTBlCkF1dGhvcjogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+CkRhdGU6CUZyaSBNYXIgMjYgMDk6NDY6MzggMjAxMCArMDEwMAoKICAgIGNtZF9pMmMuYzogZGVjbGFyZWQgbG9jYWwgZnVuY3Rpb25zIGFzIHN0YXRpYwoKICAgIERlY2xhcmVkIGFsbCBmdW5jdGlvbnMgdGhhdCB3ZXJlIG5vdCBjYWxsZWQgb3V0c2lkZSB0aGUgZmlsZSBhcyBzdGF0aWMKCiAgICBTaWduZWQtb2ZmLWJ5OiBGcmFucyBNZXVsZW5icm9la3MgPGZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbT4KCmNvbW1pdCAyODgzY2MyZDQ4ZTk5ZmQxODczZWY4YWYwM2ZlZTc5NjY2MTFiNzM1CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIE1hciAyOCAwMDoyNToxNCAyMDEwICswMTAwCgogICAgUHJlcGFyZSAyMDEwLjAzLXJjMwoKICAgIFVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDA2MGYyODUzMmIwOWRkM2QyYzc4NDIzYmRkODA5YWM3NjhhMjc2MjkKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgTWFyIDI1IDE0OjA3OjIzIDIwMTAgKzAxMDAKCiAgICBjbWRfdXNiLmM6IHByaW50IGRlYnVnIG1lc3NhZ2VzIG9ubHkgd2hlbiBERUJVRyBpcyBkZWZpbmVkCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBhNTc0Y2ZmMTIxYjE0NzljOGU5NjJiN2EyYTI5MzEwMDIwMzg3MjYwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIE1hciAyNCAxMjoxOToxOSAyMDEwICswMTAwCgogICAgbWwzMDA6IHJlbW92ZSBzdXBwb3J0IGZvciBicm9rZW4sIG9ycGhhbmVkIGJvYXJkCgogICAgVGhlIG1sMzAwIGJvYXJkIGhhcyBhIG51bWJlciBvZiBpc3N1ZXMsIGJ1dCBub2JvZHkgY2FyZXMgYWJvdXQgdGhpcwogICAgbG9uZy1vcnBoYW5lZCBib2FyZCBhbnkgbW9yZS4gIFJlbW92ZSBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgQWNrZWQtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KCmNvbW1pdCAwNDM4N2QyNGExN2IxZWUxMzAyNGRkNDc3OWRhNGI4NGQ0N2M2NWNjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IE1hciAyNyAyMzozNzo0NiAyMDEwICswMTAwCgogICAgbWtpbWFnZTogZml4IFNlZ21lbnRhdGlvbiBGYXVsdCB3aGVuIHJ1biB3aXRob3V0ICItbiBuYW1lIiBvcHRpb24KCiAgICBUaGUgcmVzdHJ1Y3R1cmluZyBvZiB0aGUgbWtpbWFnZSBjb21tYW5kIGluIGNvbW1pdCA4OWE0ZDZiMSAoInRvb2xzOgogICAgbWtpbWFnZTogc3BsaXQgY29kZSBpbnRvIGNvcmUsIGRlZmF1bHQgYW5kIEZJVCBpbWFnZSBzcGVjaWZpYyIpCiAgICBpbnRyb2R1Y2VkIGEgYnVnIHRoYXQgY2F1c2VkIG1raW1hZ2UgdG8gc2VnZmF1bHQgd2hlbiBydW4gd2l0aG91dAogICAgIi1uIG5hbWUiIG9wdGlvbi4gIEluaXRpYWxpemUgdGhlIGltYWdlbmFtZSBlbnRyeSB0byBwcmV2ZW50IHRoYXQuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBlNTcyMDgyM2Y2ZjgxYTBmM2E5ZTM0MDRkYmMzNzA1OWJmNjY0NGYxCkF1dGhvcjogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgpEYXRlOglGcmkgTWFyIDI2IDA4OjE3OjAwIDIwMTAgKzA4MDAKCiAgICBjZmkgZmxhc2g6IGFkZCBzdGF0dXMgcG9sbGluZyBtZXRob2QgZm9yIGFtZCBmbGFzaAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdGF0dXMgcG9sbGluZyBtZXRob2QgdG8gb2ZmZXIgYW4gYWx0ZXJuYXRpdmUgdG8KICAgIGRhdGEgdG9nZ2xlIG1ldGhvZCBmb3IgYW1kIGZsYXNoIGNoaXBzLgoKICAgIFRoaXMgcGF0Y2ggaXMgbmVlZGVkIGZvciBuaW9zMiBjZmkgZmxhc2ggaW50ZXJmYWNlLCB3aGVyZSB0aGUgYnVzCiAgICBjb250cm9sbGVyIHBlcmZvcm1zIDQgYnl0ZXMgcmVhZCBjeWNsZXMgZm9yIGEgc2luZ2xlIGJ5dGUgcmVhZAogICAgaW5zdHJ1Y3Rpb24uIFRoZSBkYXRhIHRvZ2dsZSBtZXRob2QgY2FuIG5vdCBkZXRlY3QgY2hpcCBidXN5CiAgICBzdGF0dXMgY29ycmVjdGx5LiBTbyB3ZSBoYXZlIHRvIHBvbGwgRFE3LCB3aGljaCB3aWxsIGJlIGludmVydGVkCiAgICB3aGVuIHRoZSBjaGlwIGlzIGJ1c3kuCgogICAgVGhpcyBmZWF0dXJlIGlzIGVuYWJsZWQgd2l0aCB0aGUgY29uZmlnIGRlZiwKICAgIENPTkZJR19TWVNfQ0ZJX0ZMQVNIX1NUQVRVU19QT0xMCgogICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGM0MGM5NGEzZDIwYTg2MTYyNjRjMmRmY2RhODUyNzkxODVkNjlhZWIKQXV0aG9yOiBSZW5hdG8gQW5kcmVvbGEgPHJlbmF0by5hbmRyZW9sYUBpbWFnb3MuaXQ+CkRhdGU6CVdlZCBNYXIgMjQgMjM6MDA6NDcgMjAxMCArMDgwMAoKICAgIGNmaV9mbGFzaDogcHJlY2lzaW9uIGFuZCB1bmRlcmZsb3cgcHJvYmxlbSBpbiB0b3V0IGNhbGN1bGF0aW9uCgogICAgV2l0aCBvbGQgY29uZmlndXJhdGlvbiBpdCBjb3VsZCBoYXBwZW4gdG91dD0wIGlmIENPTkZJR19TWVNfSFo8MTAwMC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSZW5hdG8gQW5kcmVvbGEgPHJlbmF0by5hbmRyZW9sYUBpbWFnb3MuaXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQGdudWRkLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5ZDNhODZhZWM1MmNiM2MwZTliYWRkMTIxNjdkOTI5MjE4NGNlNGRkCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgpEYXRlOglUdWUgTWFyIDE2IDEyOjM5OjM2IDIwMTAgLTA1MDAKCiAgICBDb2xkRmlyZTogRml4IG01NDQ1NUVWQiBzYXZlIGVudmlyb25tZW50IGJ1ZwoKICAgIFRoZSBBVE1FTCBmbGFzaCBkb2VzIG5vdCBoYXZlIGJ1ZmZlciB3cml0ZSBmZWF0dXJlLiBBc3NnaW5lZAogICAgYnVmZmVyX3NpemUgPSAxLCBzbyB0aGF0IHdoZW4gdGhlcmUgaXMgYSB3cml0ZSB0byB0aGUgZmxhc2gKICAgIHdpbGwgbm90IHVzZSBidWZmZXIgd3JpdGUgZnVuY3Rpb24uCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgoKY29tbWl0IGYyNmEyNDczMDg1NjhlMzI4NTdhNWNjMDU0ZjcyMTk1MTBhN2Q0NGUKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+CkRhdGU6CU1vbiBNYXIgMTUgMTk6Mzk6MjEgMjAxMCAtMDUwMAoKICAgIENvbGRGaXJlOiBGaXggaW5jb3JyZWN0IE01MjUzREVNTyBkZWZhdWx0IGVudmlyb25tZW50CgogICAgVGhlIGZsYXNoIGxvY2F0aW9uIGlzIGF0IDB4ZmY4MDAwMDAsIG5vdCAwCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgoKY29tbWl0IGRkOWYwNTRlZGU0MzNkZTczYjEzNzk4N2ZiM2RjMDY2ZThkMjRlYmIKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+CkRhdGU6CVRodSBNYXIgMTEgMjI6MTI6NTMgMjAxMCAtMDYwMAoKICAgIENvbGRGaXJlOiBDYWNoZSB1cGRhdGUgZm9yIGFsbCBwbGF0Zm9ybXMKCiAgICBUaGUgQ0Ygd2lsbCBjYWxsIGNhY2hlIGZ1bmN0aW9ucyBpbiBsaWJfbTY4L2NhY2hlLmMgYW5kIHRoZQogICAgY2FjaGUgc2V0dGluZ3MgYXJlIGRlZmluZWQgaW4gcGxhdGZvcm0gY29uZmlndXJhdGlvbiBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KCmNvbW1pdCBmNjI4ZTJmNzJkYWVlODEwYWE1Njg2MTliNjYyOWRhNjhhZDA0MmQ2CkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgpEYXRlOglXZWQgTWFyIDEwIDE4OjUwOjIyIDIwMTAgLTA2MDAKCiAgICBDb2xkRmlyZTogRml4IFNEUkFNIHNpemUgb24gTTUyMDhldmIgcmV2IEUKCiAgICBUaGUgcHJvcGVyIFNEUkFNIHNpemUgaXMgMzJNQiBub3QgNjRNQgoKICAgIFNpZ25lZC1vZmYtYnk6IEppbmdjaGFuZyBMdSA8YjIyNTk5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOWU4ZTkyNzAyMzU4MjIzMWIwMzRlMTk5NTY4ZTQ5Zjg0YWMwMzJhOQpBdXRob3I6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KRGF0ZToJV2VkIE1hciAxMCAxODoyNDowNyAyMDEwIC0wNjAwCgogICAgQ29sZEZpcmU6IE1pc2MgdXBkYXRlIGZvciBNNTMwMTcKCiAgICBSZXNpZGUgRXRoZXJuZXQgYnVmZmVyIGRlc2NyaXB0b3JzIGluIFNSQU0gaW5zdGVhZCBvZiBEUkFNLiBBZGQKICAgIENPTkZJR19TWVNfVFhfRVRIX0JVRkZFUiBpbiBwbGF0Zm9ybSBjb25maWd1cmF0aW9uIGZpbGUuIFVwZGF0ZQogICAgRFJBTSBjb250cm9sIGFuZCBTUkFNIGNvbnRyb2wgcmVnaXN0ZXIgc2V0dGluZy4gVXBkYXRlIGNhY2hlCiAgICBzZXR0aW5nIHdoZXJlIHNpemUgZG9lcyBub3Qgd3JpdGUgdG8gcHJvcGVyIHJlZ2lvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGY5ZDg3N2E2NDc5ODc4Y2E5NjY4ODY3MWYzN2Q4N2I2MjBjM2U3N2MKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+CkRhdGU6CVdlZCBNYXIgMTAgMTc6MzI6MTMgMjAxMCAtMDYwMAoKICAgIENvbGRGaXJlOiBBZGQgQ1BVIGNvbXBpbGUgZmxhZyBmb3IgbWNmNTMwMXggYW5kIG1jZjUzMngKCiAgICBBZGQgQ1BVIGNvbXBpbGUgZmxhZyAtbWNwdT01MzAxNSBpbiBjcHUvY29uZmlnLm1rCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgoKY29tbWl0IDBlOGE3NTU1MDY5NWFiYTlkOGNmZTljN2Y3NzEzZGE0MmMxZjNlODkKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+CkRhdGU6CVdlZCBNYXIgMTAgMTY6MzM6MDMgMjAxMCAtMDYwMAoKICAgIENvbGRGaXJlOiBVcGRhdGUgRXh0cmEgZW52aXJvbm1lbnQgRGF0YSBmb3IgTTUyNzVFVkIKCiAgICBQcm92aWRlIGV4dHJhIGVudmlyb25tZW50IERhdGEuIFJlbW92ZSBkZWZhdWx0IG5ldHdvcmsKICAgIGFkZHJlc3MgYW5kIE1BQyBhZGRyZXNzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KCmNvbW1pdCA1M2U0MjkwZjIwYjVmNzNjOTU3MTdmNDdmNGMwNGVkNjkzMmZmOTMxCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgpEYXRlOglXZWQgTWFyIDEwIDE2OjE0OjAxIDIwMTAgLTA2MDAKCiAgICBDb2xkRmlyZTogTTUyNzFFVkIgRFJBTSBCcmluZyB1cCBpc3N1ZQoKICAgIEZpeCBwcm9wZXIgcG9ydHNpemU6IFRoZSByZWdpc3RlciBmb3IgcG9ydHNpemUgaXMgZWl0aGVyIDAwYiwgMDFiLAogICAgb3IgMXhiLiBUaGUgdmFsdWUgdGhhdCBwcmV2aW91cyBhc3NpZ25lZCBpcyAzMmQuCiAgICBGaXggRFJBTSBicmluZyB1cDogaW5zZXJ0IGFzbSgibm9wIikgZm9yIGV2ZXJ5IERSQU0gcmVnaXN0ZXIgc2V0dXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+Cgpjb21taXQgYWMyNjVmN2ZjYWIxYTA5YjlhODM3YTM0ZWY4YjEwYWNjMTAxNjk1ZQpBdXRob3I6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KRGF0ZToJV2VkIE1hciAxMCAxMTo1NjozNiAyMDEwIC0wNjAwCgogICAgQ29sZEZpcmU6IFVwZGF0ZSBNNTI1M0RFTU8gY29uZmlndXJhdGlvbiBmaWxlCgogICAgRml4IGluY29ycmVjdCBkZWZhdWx0IGVudmlyb25tZW50IGZvciBmbGFzaCBlcmFzZSBvciBwcm90ZWN0CiAgICByYW5nZS4gQ2hhbmdlIG9mZnNldCBmcm9tIDAgdG8gMHhmZjgwbm5ubi4gUmVtb3ZlIGRlZmF1bHQKICAgIGV0aGVybmV0IHNldHVwIGFuZCBNQUMgYWRkcmVzcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+Cgpjb21taXQgNjhlNGU3NmFmNTU3NDZhNDMzMDg2NWY1NjQ3NmU1OGNlNDE0MGNhOApBdXRob3I6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KRGF0ZToJVGh1IE1hciAxMSAxNTowNDoyMSAyMDEwIC0wNjAwCgogICAgQ29sZEZpcmU6IFJlbG9jYXRlIHZlY3RvciB0YWJsZSAtIG1jZjU0NDV4CgogICAgTmV3ZXIgQ29sZEZpcmUgcHJvY2Vzc29ycyBmYW1pbHkgYm9vdCBmcm9tIGFkZHJlc3MgMCBpbnN0ZWFkIG9mCiAgICAweEZGbm5fbm5ubi4gV2hlbiB0aGUgYm9vdCBmbGFzaCBiYXNlIGNoaXAgc2VsZWN0IGlzIHNldCBhdCBuZXcKICAgIGxvY2F0aW9uIGluc3RlYWQgb2YgMCwgYW4gdW4tcHJlZGljdGFibGUgZXJyb3Igd2lsbCBvY2N1ciBpZgogICAgdGhlcmUgaXMgYW4gdmVjdG9yIGJlaW5nIHRyaWdnZXIgYW5kIHJlZmVyIGl0IHRvIGFuIGludmFsaWQKICAgIGFkZHJlc3Mgb3IgdGhlIHZlY3RvciB0YWJsZSBoYW5kbGVyIGlzIG5vdCBleGlzdGVkIGF0IGFkZHJlc3MKICAgIDAuCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgoKY29tbWl0IGZhOWRhNTk2MjEyZDdmMjhlYjI2YTMyNTdkNzlkOTUxNWY5ODM4Y2QKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+CkRhdGU6CVR1ZSBNYXIgOSAxOToyNDo0MyAyMDEwIC0wNjAwCgogICAgQ29sZEZpcmU6IFVwZGF0ZSB1YXJ0X3BvcnRfY29uZiBpbiBzZXJpYWwgZHJpdmVyCgogICAgUHJvdmlkZSBwcm9wZXIgcG9ydCBwYXNzaW5nIGZyb20gc2VyaWFsX2luaXQgdG8gdWFydF9wYXJ0X2NvbmYuCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgoKY29tbWl0IDUyYWZmZTA0ZmE1NDkzNTk3ZDhhNWY2MjAyNTA3MTkwOTUwYTMyZTYKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+CkRhdGU6CVR1ZSBNYXIgOSAxOToxNzo1MiAyMDEwIC0wNjAwCgogICAgQ29sZEZpcmU6IFVwZGF0ZSBwcm9jZXNzb3JzJyBzZXJpYWwgcG9ydCBjb25maWd1cmF0aW9uCgogICAgUHJvdmlkZSBwYXJhbWV0ZXIgcGFzc2luZyB0byB1YXJ0X3BvcnRfY29uZmlnKCkuIFVwZGF0ZSBwb3J0CiAgICBjb25maWd1cmF0aW9uIC0gdW4tbWFzayBpdCBiZWZvcmUgZW5hYmxlIHRoZSBiaXRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KCmNvbW1pdCBkMDRjMWVmYWUzZDgzNGRiNmUyMWU5OTc2ZTMzOGJmMWU1ODhlOTg3CkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgpEYXRlOglUdWUgTWFyIDkgMTg6MzI6MTYgMjAxMCAtMDYwMAoKICAgIENvbGRGaXJlOiBDb3JyZWN0IGJpdCBkZWZpbml0aW9uCgogICAgVXNlIGNvcnJlY3QgZGVmaW5pdGlvbiBmb3IgX01BU0sgYW5kIF9VTk1BU0suIEl0IHdhcyBjb21iaW5lZCBpbgogICAgdGhlIHByZXZpb3VzIHVzZWQgYW5kIGNhdXNlcyBjb25mdXNpb24uCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgoKY29tbWl0IDExNjA5NWViMWYwZjcwMTdlYTgwNjJhYThhOGJhOGNlZWNiNDMwYjUKQXV0aG9yOiBQaGlsaXBwZSBEZSBNdXl0ZXIgPHBoZG0gYXQgbWFjcWVsLmJlPgpEYXRlOglNb24gU2VwIDIxIDIyOjIwOjI5IDIwMDkgLTA2MDAKCiAgICBmaXggY21kX2JkaW5mby5jOjM1NDogd2FybmluZzogJ3ByaW50X2V0aCcgZGVmaW5lZCBidXQgbm90IHVzZWQKCiAgICBUaGlzIGZpeGVzIHRoZSBmb2xsb3dpbmcgd2FybmluZ3Mgd2hlbiBydW5uaW5nIE1BS0VBTEwgZm9yIGNvbGRmaXJlIDoKICAgIGNtZF9iZGluZm8uYzozNTQ6IHdhcm5pbmc6ICdwcmludF9ldGgnIGRlZmluZWQgYnV0IG5vdCB1c2VkCgogICAgU2lnbmVkLW9mZi1ieTogUGhpbGlwcGUgRGUgTXV5dGVyIDxwaGRtIGF0IG1hY3FlbC5iZT4KCmNvbW1pdCBkZmMyYjc2OTdkYzA3ODYyZGE4MDRjMWJlMDg0Zjk2MzAxODg0YmM3CkF1dGhvcjogTWljaGFlbCBEdXJyYW50IDxtZHVycmFudEBhcmN0dXJ1c25ldHdvcmtzLmNvbT4KRGF0ZToJV2VkIEphbiAyMCAxOTozMzowMiAyMDEwIC0wNjAwCgogICAgQWRkaW5nIEVQMjUwMCBNQ0Y1MjgyIGJvYXJkIFtQQVRDSF0KCiAgICBNZXJjdXJ5LUVQMjUwMC5wYXRjaAogICAgICAgLSBhZGRlZCBNZXJjdXJ5J3MgRVAyNTAwIGJvYXJkIHVzZXMgdGhlIG1jZjUyODIgcHJvY2Vzc29yCgogICAgQ1JFRElUUy5wYXRjaAoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIFd1IDxkYXZpZHd1QGFyY3R1cnVzbmV0d29ya3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBEdXJyYW50IDxtZHVycmFudEBhcmN0dXJ1c25ldHdvcmtzLmNvbT4KCmNvbW1pdCA4OTA4MzM0NmQwNjI3YTVlNmUyNzFlNjFiZDM0YWI1MTIxZjk0NjJiCkF1dGhvcjogV29sZmdhbmcgV2VnbmVyIDx3LndlZ25lckBhc3Ryby1rb20uZGU+CkRhdGU6CUZyaSBPY3QgMzAgMTY6NTU6MDIgMjAwOSArMDEwMAoKICAgIGFkZCBibG9jayB3cml0ZSBmdW5jdGlvbiB0byBzcGFydGFuMyBzbGF2ZSBzZXJpYWwgbG9hZAoKICAgIFVzaW5nIHNlcGVyYXRlIGZ1bmN0aW9uIGNhbGxzIGZvciBlYWNoIGJpdC1iYW5nIG9mIHNsYXZlIHNlcmlhbAogICAgbG9hZCBjYW4gYmUgcGFpbmZ1bGx5IHNsb3cuIFRoaXMgcGF0Y2ggYWRkcyB0aGUgcG9zc2liaWxpdHkgdG8KICAgIHN1cHBseSBhIGJsb2NrIHdyaXRlIGZ1bmN0aW9uIHRoYXQgbG9hZHMgdGhlIGNvbXBsZXRlIGJsb2NrIG9mCiAgICBkYXRhIGluIG9uZSBjYWxsIChsaWtlIGl0IGNhbiBhbHJlYWR5IGJlIGRvbmUgd2l0aCBBbHRlcmEgRlBHQXMpLgogICAgT24gYW4gTUNGNTM3M0wgKDI0MCBNSHopIGxvYWRpbmcgYW4gWEMzUzQwMDAgdGhpcyByZWR1Y2VzIHRoZSBsb2FkCiAgICB0aW1lIGZyb20gYXJvdW5kIDE1IHNlY29uZHMgdG8gYXJvdW5kIDMgc2Vjb25kcwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIFdlZ25lciA8dy53ZWduZXIgYXQgYXN0cm8ta29tLmRlPgoKY29tbWl0IDlkNzllNTc1OGMzYTY3NzZiZTlhODY4NTY4MjNkMjhlNzE1NGE0ODEKQXV0aG9yOiBXb2xmZ2FuZyBXZWduZXIgPHcud2VnbmVyQGFzdHJvLWtvbS5kZT4KRGF0ZToJTW9uIEphbiAyNSAxMToyNzo0NCAyMDEwICswMTAwCgogICAgYWRkIEFTVFJPIE1DRjUzNzNMIGJvYXJkCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIEFTVFJPIGJvYXJkKHMpIGJhc2VkIG9uIE1DRjUzNzNMLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIFdlZ25lciA8dy53ZWduZXJAYXN0cm8ta29tLmRlPgoKY29tbWl0IGM1NTBhZmFkYTVmY2FkNDI2YWE2YTIxOWEzMjlmZWI5ZWVkYWU4YjIKQXV0aG9yOiBSdXBqeW90aSBTYXJtYWggPHJzYXJtYWhAYXBwbGllZG1pY3JvLmNvbT4KRGF0ZToJV2VkIE1hciAyNCAxNjo1MjowMiAyMDEwICswNTMwCgogICAgcHBjNHh4IGZpeCB1bnN0YWJsZSA0NDBFUHggYm9vdHN0cmFwIG9wdGlvbnMKCiAgICA0NDBFUHggZml4ZWQgYm9vdHN0cmFwIG9wdGlvbnMgQSwgQiwgRCwgYW5kIEUgc2V0cyBQTEwgRldEVkEgdG8gYSB2YWx1ZSA9IDEuCiAgICBUaGlzIHJlc3VsdHMgaW4gdGhlIFBMTE9VVEIgYmVpbmcgZ3JlYXRlciB0aGFuIHRoZSBDUFUgY2xvY2sgZnJlcXVlbmN5CiAgICByZXN1bHRpbmcgdW5zdGFibGUgNDQwRVB4IG9wZXJhdGlvbiByZXN1bHRpbmcgaW4gdmFyaW91cyBzb2Z0d2FyZSBoYW5nCiAgICBjb25kaXRpb25zLgoKICAgIFRoaXMgcGF0Y2ggcmVwcm9ncmFtcyB0aGUgRldEVkEgc2F0aXNmeWluZyB0aGUgcmVxdWlyZW1lbnQgb2Ygc2V0dGluZyBGV0RWQgogICAgdG8gYSB2YWx1ZSBncmVhdGVyIHRoYW4gMSB3aGlsZSB1c2luZyBvbmUgb2YgdGhlIGZvdXIgZGVhZnVsdCBib290c3RyYXAgb3B0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSdXBqeW90aSBTYXJtYWggPHJzYXJtYWhAYW1jYy5jb20+CiAgICBBY2tlZC1ieSA6IFZpY3RvciBHYWxsYXJkbyA8dmdhbGxhcmRvQGFwcGxpZWRtaWNyby5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZmI1MDhiOGIzOWE1MmE0MDYzZDA5OGY1YTliNDM1NWJjNWIzMGMxNApBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+CkRhdGU6CVdlZCBNYXIgMjQgMTA6MTY6MjAgMjAxMCArMDEwMAoKICAgIGF0OTE6IEdldCByaWQgb2Ygc29tZSB3YXJuaW5ncyB3aGVuIGJ1aWxkaW5nIGZvciBvdGM1NzAKCiAgICBUaGUgc29mdC1pMmMgY29kZSBmb3IgQVQ5MSBkZWZpbmVzIEkyQ19TT0ZUX0RFQ0xBUkFUSU9OUwogICAgZm9yIGRpcmVjdCBhY2Nlc3MgYnkgZGVyZWZlcmVuY2luZyBhIHBpbyBwb2ludGVyLgogICAgVGhlIE9UQzU3MCBwbGF0Zm9ybSB1c2VzIHRoZSBBVDkxIGdwaW8gQVBJIHNvIGl0IGRvZXMgbm90CiAgICBuZWVkIHRoZSBwaW8gdmFyaWFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KCmNvbW1pdCBhY2IxMzg2ODkzNmEyODUwMjc4MmExNmUxZWRhZWMzNzhlNDk0YTI5CkF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUB1bmlwdi5pdD4KRGF0ZToJU2F0IE1hciAxMyAxNzo0NDowOCAyMDEwICswMTAwCgogICAgbGNkOiBtYWtlIDE2YnBwIHdvcmsKCiAgICBTdXBwb3J0IGZvciAxNmJwcCB3YXMgc3VwcG9zZWQgdG8gYmUgaW4gdGhlIGNvZGUgYnV0IHdhcyBub3Qgd29ya2luZy4KICAgIFRoaXMgbWFrZXMgaXQgd29yayBhbmQgaGFzIGJlZW4gdGVzdGVkIGluIHRoZSBuaGs4ODE1IGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+CiAgICBBY2tlZC1ieTogQW5kcmVhIEdhbGxvIDxhbmRyZWEuZ2FsbG9Ac3Rlcmljc3Nvbi5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgNmI5NGI0OTYyMjExYzE2ZWUyMTk3MDQ4ZmFhODg3ZTFmOTJmMzc1NwpBdXRob3I6IEZsb3JpYW4gRmFpbmVsbGkgPGYuZmFpbmVsbGlAZ21haWwuY29tPgpEYXRlOglTYXQgTWFyIDIwIDE5OjAyOjU4IDIwMTAgKzAxMDAKCiAgICBjbWRfbmFuZDogc2hvdyBuYW5kIHNjcnViIGNvbmZpcm1hdGlvbiBjaGFyYWN0ZXIKCiAgICBXaGVuIGlzc3VpbmcgYSBuYW5kIHNjcnViIGNvbW1hbmQsIHRoZSBlbnRlcmVkIGNoYXJhY3RlciBpcyBub3QgZGlzcGxheWVkCiAgICB0aGlzIG1heSBiZSBjb25mdXNpbmcuIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIGlucHV0IGNoYXJhY3RlciBiZWluZwogICAgZGlzcGxheWVkIGlmIGl0IGlzIGEgJ3knIHNvIHRoYXQgYW4gdXNlciBrbm93cyBoZSBpcyBhYm91dCB0byBzY3J1YiBoaXMKICAgIG5hbmQuCgogICAgU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBGYWluZWxsaSA8Zi5mYWluZWxsaUBnbWFpbC5jb20+Cgpjb21taXQgN2MyN2I3YjFlYWM0M2NkY2RhNzM1YmFkNjIzMWNkZmMxZjYwMjI4NApBdXRob3I6IE5pa29sYXkgUGV0dWtob3YgPG5pa29sYXlwZXR1a2hvdkBnbWFpbC5jb20+CkRhdGU6CUZyaSBNYXIgMTkgMTA6NDk6MjcgMjAxMCArMDUwMAoKICAgIGF0OTE6IGFkZCBod2VjYyBtZXRob2QgZm9yIG5hbmQKCiAgICBUaGlzIGlzIGEgcGF0Y2ggdG8gdXNlIHRoZSBoYXJkd2FyZSBFQ0MgY29udHJvbGxlciBvZgogICAgdGhlIEFUOTFTQU05MjYwIGZvciB0aGUgQVQ5MSBuYW5kLiBUYWtlbiBmcm9tIHRoZSBrZXJuZWwgMi42LjMzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa29sYXkgUGV0dWtob3YgPE5pa29sYXkuUGV0dWtob3ZAZ21haWwuY29tPgoKY29tbWl0IGNjNDFhNTlhNzRjYTkwOTVkNTE4ZDZkNjk2NTVjNjczNWRkMDA4MDkKQXV0aG9yOiBDeXJpbCBDaGVtcGFyYXRoeSA8Y3lyaWxAdGkuY29tPgpEYXRlOglXZWQgTWFyIDE3IDEwOjAzOjEwIDIwMTAgLTA0MDAKCiAgICBUSTogRGF2aW5jaTogTkFORCBEcml2ZXIgQ2xlYW51cAoKICAgIE1vZGlmaWVkIHRvIHVzZSBJTyBhY2Nlc3NvciByb3V0aW5lcyBjb25zaXN0ZW50bHkuCUVsaW1pbmF0ZWQgdm9sYXRpbGUgdXNhZ2UKICAgIHRvIGtlZXAgY2hlY2twYXRjaC5wbCBoYXBweS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBDeXJpbCBDaGVtcGFyYXRoeSA8Y3lyaWxAdGkuY29tPgoKY29tbWl0IDE1MmRkYTNkOTRlOTdlZGU3YWYzZjk1NjBhNTlhNjU5Mzg0ZDQ1ODUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gTWFyIDIyIDIzOjI1OjAwIDIwMTAgKzAxMDAKCiAgICBQcmVwYXJlIHYyMDEwLjAzLXJjMgoKICAgIFVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGQ2NTBkYTJkZDRhZjk5OTY3YWFiYzQzY2NjYmQ4ZjE2MGViNGNlYTYKQXV0aG9yOiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgpEYXRlOglUdWUgTWFyIDkgMjI6MTM6MzMgMjAxMCArMDEwMAoKICAgIGVwOTN4eCB0aW1lcjogRml4IHJlc29sdXRpb24gb2YgZ2V0X3RpY2tzKCkKCiAgICBlcDkzeHggdGltZXI6IE1ha2UgZ2V0X3RpY2tzKCkgcmV0dXJuIGEgdmFsdWUgaW4gQ09ORklHX1NZU19IWiByZXNvbHV0aW9uLAogICAgYXMgYW5ub3VuY2VkIGJ5IGdldF90YmNsaygpCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgS2FlaGxja2UgPG1hdHRoaWFzQGthZWhsY2tlLm5ldD4KCmNvbW1pdCA3ZTY3ZmI1YmYyN2EwN2QzYjhkNmI5N2M3NmY3MTk1ZjdkNjhhZjU4CkF1dGhvcjogTWF0dGhpYXMgS2FlaGxja2UgPG1hdHRoaWFzQGthZWhsY2tlLm5ldD4KRGF0ZToJVHVlIE1hciA5IDIyOjEzOjIwIDIwMTAgKzAxMDAKCiAgICBlcDkzeHggdGltZXI6IEZpeCBwb3NzaWJsZSBvdmVyZmxvdyBpbiB1c2Vjc190b190aWNrcygpCgogICAgZXA5M3h4IHRpbWVyOiBVc2UgNjQtYml0IHZhbHVlcyBpbiB1c2Vjc190b190aWNrcygpIGluIG9yZGVyIHRvIGF2b2lkCiAgICBvdmVyZmxvd3MgaW4gaW50ZXJtZWRpYXRlIHZhbHVlcwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEthZWhsY2tlIDxtYXR0aGlhc0BrYWVobGNrZS5uZXQ+Cgpjb21taXQgM2M5NTBlMmViZmRlMDgzMDg0Y2M5MjZiMDIwZTNhMjJhNTM2YmY4NQpBdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KRGF0ZToJVHVlIE1hciAxNiAxNzoxMDowNSAyMDEwICswMTAwCgogICAgZmR0X3N1cHBvcnQ6IGFkZCBwYXJ0aXRpb25zIGZpeHVwIGluIG10ZCBub2RlCgogICAgQWxsb3cgb3ZlcndyaXRpbmcgZGVmaW5lZCBwYXJ0aXRpb25zIGluIHRoZSBkZXZpY2UgdHJlZSBibG9iCiAgICB1c2luZyBwYXJ0aXRpb24gaW5mbyBkZWZpbmVkIGluIHRoZSAnbXRkcGFydHMnIGVudmlyb25tZW50CiAgICB2YXJpYWJsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CiAgICBDYzogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCBkNjExMjk1MDMyYzMwZTZjNTMzY2IzNTYwMDVmYTgyYWI3OTkyODI0CkF1dGhvcjogSm9obiBTY2htb2xsZXIgPGpzY2htb2xsZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBNYXIgMTIgMDk6NDk6MjQgMjAxMCAtMDYwMAoKICAgIGNtZCBoaXN0b3J5OiBNYXRjaCBoaXN0b3J5IGJ1ZmZlciBzaXplIHRvIGNvbnNvbGUgYnVmZmVyCgogICAgTWF0Y2ggaGlzdG9yeSBidWZmZXIgc2l6ZSB0byBjb25zb2xlIGJ1ZmZlciBzaXplLiBIaXN0b3J5IGJ1ZmZlciBzaXplCiAgICB3YXMgaGFyZCBjb2RlZCB0byAyNTYsIGFydGlmaWNpYWxseSBsaW1pdGluZyB0aGUgY29tbWFuZCBidWZmZXIgc2l6ZS4KICAgIFRoZSBoaXN0b3J5IGJ1ZmZlciBub3cgdHJhY2tzIENPTkZJR19TWVNfQ0JTSVpFLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gU2NobW9sbGVyIDxqc2NobW9sbGVyQHhlcy1pbmMuY29tPgoKY29tbWl0IDY0NzViOWY5MWJkMzNiZmQzODQxODQ2OWNhYmRjZmMwZmVmYmQ4NDgKQXV0aG9yOiBKb2huIFNjaG1vbGxlciA8anNjaG1vbGxlckB4ZXMtaW5jLmNvbT4KRGF0ZToJRnJpIE1hciAxMiAwOTo0OToyMyAyMDEwIC0wNjAwCgogICAgY29uc29sZTogRml4IGNvbnNvbGUgYnVmZmVyIG92ZXJydW4KCiAgICBXaGVuIENPTkZJR19TWVNfQ0JTSVpFIGVxdWFscyBNQVhfQ01EQlVGX1NJWkUsIGEgY29tbWFuZCBzdHJpbmcgb2YKICAgIG1heGltdW0gbGVuZ3RoIHdpbGwgb3ZlcndyaXRlIHBhcnQgb2YgdGhlIGhpc3RvcnkgYnVmZmVyLCBjYXVzaW5nIHRoZQogICAgYm9hcmQgdG8gZGllLiBFeHBhbmQgdGhlIGNvbnNvbGVfYnVmZmVyIGFuZCBoaXN0X2xpbmVzIGJ1ZmZlciBieSBvbmUKICAgIGNoYXJhY3RlciBlYWNoIHRvIGhvbGQgdGhlIG1pc3NpbmcgTlVMTCBjaGFyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gU2NobW9sbGVyIDxqc2NobW9sbGVyQHhlcy1pbmMuY29tPgoKY29tbWl0IGUwNzBhNTZjNzc3ZjFmZDA1OTUwZTFiYzYzNDgzYzE5ZGVjZDZmNzgKQXV0aG9yOiBNaWNoYWVsIFphaWRtYW4gPG1pY2hhZWwuemFpZG1hbkBnbWFpbC5jb20+CkRhdGU6CU1vbiBNYXIgMSAxMTo0NzozNiAyMDEwICswMjAwCgogICAgUE9TVDogYWRkIHByb2dyZXNzIEFQSQoKICAgIEFkZCBQT1NUIHByb2dyZXNzIEFQSSBpbXBsZW1lbnRlZCBhcyB3ZWFrIGNhbGxzIGJlZm9yZSBhbmQgYWZ0ZXIKICAgIGVhY2ggY2FsbCB0byB0aGUgUE9TVCB0ZXN0IGNhbGxiYWNrIGluIHRoZSBwb3N0X3J1bl9zaW5nbGUgcm91dGluZQogICAgb2YgdGhlIHBvc3QuYyBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgWmFpZG1hbiA8bWljaGFlbC56YWlkbWFuQGdtYWlsLmNvbT4KICAgIEFja2VkLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KCmNvbW1pdCA0N2FiNWFkMTQ1NzU1MzE3OTg0MzFmMGQxZThmODNlZTliYjBhODdlCkF1dGhvcjogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+CkRhdGU6CUZyaSBGZWIgMjYgMTQ6MDA6MTkgMjAxMCArMDEwMAoKICAgIGNtZF9zZXRleHByOiBhbGxvdyBtZW1vcnkgYWRkcmVzc2VzIGluIGV4cHJlc3Npb25zCgogICAgVGhpcyBwYXRjaCBhZGQgZnVuY3Rpb25hbGl0eSB0byB1c2UgbWVtb3J5IGFkZHJlc3NlcyBpbiBleHByZXNzaW9ucy4KICAgIFRoaXMgaW5jcmVhc2VzIHRoZSBwb3dlciBvZiBleHByZXNzaW9ucyBzdWJzdGFudGlhbGx5CgogICAgSXQgYWRoZXJlcyB0byB0aGUgc3RhbmRhcmQgY29udmVtdGlvbnM6IG1lbW9yeSBhZGRyZXNzZXMgY2FuIGJlIGdpdmVuCiAgICBpbiB0aGUgZm9ybWF0ICphZGRyZXNzIChlLmcuICoxMDAwKQoKICAgIFJhdGlvbmFsZSBmb3IgdGhpcyBjaGFuZ2UgaXMgdGhhdCBpdCBhbGxvd3MgbWFza2luZyBvZmYgYml0cyBmcm9tIGEKICAgIGJ5dGUgdGhhdCBpcyBvYnRhaW5lZCBieSByZWFkaW5nIGRhdGEgZnJvbSBlLmcuIGkyYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBGcmFucyBNZXVsZW5icm9la3MgPGZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbT4KCiAgICBGaXggd2FybmluZzogY29udHJvbCByZWFjaGVzIGVuZCBvZiBub24tdm9pZCBmdW5jdGlvbgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA2NTJlNTM1NDZiMjNjMjVmODA3NTYyODdlYWY2MDdiNzEzYWZkYzg3CkF1dGhvcjogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+CkRhdGU6CVRodSBGZWIgMjUgMTA6MTI6MTYgMjAxMCArMDEwMAoKICAgIGNtZF9pMmMuYzogYWRkZWQgaTJjIHJlYWQgdG8gbWVtb3J5IGZ1bmN0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+Cgpjb21taXQgZmIwMDcwZTkxMDFhMWYyODhkNzA1NGY3ZTgwYjNkODA4ZmQ3ZWFkMgpBdXRob3I6IEZyYW5zIE1ldWxlbmJyb2VrcyA8ZnJhbnNtZXVsZW5icm9la3NAZ21haWwuY29tPgpEYXRlOglUaHUgRmViIDI1IDEwOjEyOjE1IDIwMTAgKzAxMDAKCiAgICBjbWRfaTJjLmM6IHNvcnRlZCBjb21tYW5kcyBhbHBoYWJldGljYWxseQoKICAgIFNpZ25lZC1vZmYtYnk6IEZyYW5zIE1ldWxlbmJyb2VrcyA8ZnJhbnNtZXVsZW5icm9la3NAZ21haWwuY29tPgoKY29tbWl0IGJmYzNiNzdlYmU2ODQzNWI0NmU5ODhlM2E0NDBiYzQ4NTdiYzdjZjQKQXV0aG9yOiBGcmFucyBNZXVsZW5icm9la3MgPGZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbT4KRGF0ZToJVGh1IEZlYiAyNSAxMDoxMjoxNCAyMDEwICswMTAwCgogICAgY21kX2kyYy5jOiByZXdvcmtlZCBzdWJjb21tYW5kIGhhbmRsaW5nCgogICAgU2lnbmVkLW9mZi1ieTogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+Cgpjb21taXQgZjc0ZDliZDJhMjQ4ZWZhMjI5ZjBmMzQ3OGZlMzMxZTJhMzE5NTg4YwpBdXRob3I6IEZyYW5zIE1ldWxlbmJyb2VrcyA8ZnJhbnNtZXVsZW5icm9la3NAZ21haWwuY29tPgpEYXRlOglUaHUgRmViIDI1IDEwOjEyOjEzIDIwMTAgKzAxMDAKCiAgICBjbWRfYm9vdG0uYzogbWFkZSBzdWJjb21tYW5kIGFycmF5IHN0YXRpYwoKICAgIFNpZ25lZC1vZmYtYnk6IEZyYW5zIE1ldWxlbmJyb2VrcyA8ZnJhbnNtZXVsZW5icm9la3NAZ21haWwuY29tPgoKY29tbWl0IGZhZmZlMTRmMDE2ZGIxMGYzMzgzNmIwMThjNGIzMDRkOTM5Y2Y1ODYKQXV0aG9yOiBGcmFucyBNZXVsZW5icm9la3MgPGZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbT4KRGF0ZToJVGh1IEZlYiAyNSAxMDoxMjoxMiAyMDEwICswMTAwCgogICAgY21kX2kyYy5jOiByZWR1Y2VkIHN1YmFkZHJlc3MgbGVuZ3RoIHRvIDMgYnl0ZXMKCiAgICBhY2NvcmRpbmcgdG8gc29tZSBvZiB0aGUgY29tbWVudHMgdGhlIHN1YmFkZHJlc3MgbGVuZ3RoIGlzIDEgb3IgMiwgYnV0IHdlIGFyZSBiZWluZwogICAgcHJlcGFyZWQgZm9yIHRoZSBjYXNlIGl0IGJlY29tZXMgMy4gSG93ZXZlciB0aGUgY29kZSBhbHNvIGFjY2VwdGVkIDQuCiAgICBUaGlzIHJlcGFpcnMgdGhpcyBieSBjaGFuZ2luZyB0aGUgY29uc3RhbmQgNCB0byAzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEZyYW5zIE1ldWxlbmJyb2VrcyA8ZnJhbnNtZXVsZW5icm9la3NAZ21haWwuY29tPgoKY29tbWl0IGE2YTA0OTY3YmMyOTU3ZDIwNzk5ZjRiYjJhNmIzZGQwMzUzYzFjZmQKQXV0aG9yOiBSZW5hdG8gQW5kcmVvbGEgPHJlbmF0by5hbmRyZW9sYUBpbWFnb3MuaXQ+CkRhdGU6CVR1ZSBNYXIgMTYgMTY6MDE6MjkgMjAxMCAtMDQwMAoKICAgIG5pb3MyOiBBZGRlZCBzdXBwb3J0IHRvIFlBTlUgVUFSVAoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgoKY29tbWl0IDM1Mjc0NWFkNDg3ZjcyZTgzOTk4NmRkYmIwMjBlMWZlODZjMWQ0ODIKQXV0aG9yOiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+CkRhdGU6CVR1ZSBNYXIgMTYgMTI6MTI6NDggMjAxMCAtMDQwMAoKICAgIG5pb3MyOiB1c2UgZ2VuZXJpYyB1bmFsaWduZWQuaAoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgoKY29tbWl0IGZkNDI4YzA1Yzg2M2FlZmI1NzViMTJiMmExOTE2YjAyZDViZmE3NTkKQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KRGF0ZToJRnJpIE1hciAxMiAxMDowMToxMiAyMDEwICswMTAwCgogICAgbXBjNXh4eDogUmVtb3ZlIGFsbCByZWZlcmVuY2VzIHRvIE1HVDUxMDAKCiAgICBXZSBkbyBub3Qgc3VwcG9ydCBhIHByb2Nlc3NvciB0aGF0IG5ldmVyIHJlYWNoZWQgYSByZWFsIGN1c3RvbWVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgoKY29tbWl0IGMwYzMxNjU2OWY3MDA1NWViN2M3MDg2NGFhYTZkNDg2NjY3ODI2MDAKQXV0aG9yOiBNYXR0aGlhcyBXZWlzc2VyIDxtYXR0aGlhcy53ZWlzc2VyQGdyYWYtc3l0ZWNvLmRlPgpEYXRlOglUdWUgSmFuIDEyIDEyOjA2OjMxIDIwMTAgKzAxMDAKCiAgICB2aWRlbzogRml4IGNvbnNvbGUgZGlzcGxheSB3aGVuIHNwbGFzaHNjcmVlbiBpcyB1c2VkCgogICAgSWYgYSBzcGxhc2hzY3JlZW4gaXMgdXNlZCB0aGUgY29uc29sZSBzY3JvbGxpbmcgdXNlZCB0aGUKICAgIHNjcm9sbCBzaXplIGFzIG5lZWRlZCB3aGVuIGEgbG9nbyB3YXMgZGlzcGxheWVkLiBUaGlzCiAgICBwYXRjaCBzZXRzIHRoZSBzY3JvbGwgc2l6ZSB0byB0aGUgd2hvbGUgc2NyZWVuIGlmCiAgICBhIHNwbGFzaHNjcmVlbiBpcyBzaG93bi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBXZWlzc2VyIDxtYXR0aGlhcy53ZWlzc2VyQGdyYWYtc3l0ZWNvLmRlPgoKY29tbWl0IGRhYTk4OWI0NzI5N2M5ZjczNDI2NzgzNTk5YzI4NmVmM2ExZjNmNDkKQXV0aG9yOiBBc2VuIERpbW92IDxkaW1vdkByb25ldGl4LmF0PgpEYXRlOglUaHUgTWFyIDE4IDEzOjQxOjQ3IDIwMTAgKzAyMDAKCiAgICBjb3JyZWN0IGEgc3ludGF4IHR5cG8gaW4gYXQ5MV9tYXRyaXguaAoKICAgIFNpZ25lZC1vZmYtYnk6IEFzZW4gRGltb3YgPGRpbW92QHJvbmV0aXguYXQ+Cgpjb21taXQgMzIyZmYzOTVjOWFlYzdiODdhMjIxMWZlNDMzM2ZkZjQ0Mzc3YzU2NApBdXRob3I6IEplZmYgQW5naWVsc2tpIDxqZWZmQHRoZXB0cmdyb3VwLmNvbT4KRGF0ZToJV2VkIE1hciAxNyAxNTowOToyNiAyMDEwIC0wNDAwCgogICAgZW52OiBmaXggZW5kaWFuIG9yZGVyaW5nIGluIGNyYyB0YWJsZQoKICAgIFRoZSBjcmMgdGFibGUgd2FzIGJlaW5nIGJ1aWx0IGFzIGxpdHRsZSBlbmRpYW4gZm9yIGJpZyBlbmRpYW4KICAgIHRhcmdldHMuICBUaGlzIHdvdWxkIGNhdXNlIGZ3X3ByaW50ZW52IHRvIGFsd2F5cyBmYWlsIHdpdGgKICAgICJXYXJuaW5nOiBCYWQgQ1JDLCB1c2luZyBkZWZhdWx0IGVudmlyb25tZW50IiBtZXNzYWdlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWZmIEFuZ2llbHNraSA8amVmZkB0aGVwdHJncm91cC5jb20+CiAgICBBY2tlZC1ieTogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+Cgpjb21taXQgNTFjMmFjOWJiNTc0YzE0MjBiOTkzNjE1MjY4MzkyYjBjMWY4MjlmNgpBdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KRGF0ZToJVHVlIE1hciAxNiAxNzoxMDowOCAyMDEwICswMTAwCgogICAgbXBjNTEyMTogY3B1L21wYzUxMngvZGl1LmM6IGZpeCB3YXJuaW5ncwoKICAgIEZpeCB3YXJuaW5ncyB3aGlsZSBjb21waWxpbmcgd2l0aCBDT05GSUdfVklERU8gZW5hYmxlZDoKCiAgICBkaXUuYzogSW4gZnVuY3Rpb24gJ3ZpZGVvX2h3X2luaXQnOgogICAgZGl1LmM6MTU4OiB3YXJuaW5nOiAncmV0dXJuJyB3aXRoIG5vIHZhbHVlLCBpbiBmdW5jdGlvbiByZXR1cm5pbmcgbm9uLXZvaWQKICAgIGRpdS5jOjE2Mjogd2FybmluZzogZm9ybWF0ICclbGQnIGV4cGVjdHMgdHlwZSAnbG9uZyBpbnQnLCBidXQgYXJndW1lbnQgNiBoYXMgdHlwZSAnaW50JwogICAgZGl1LmM6MTYyOiB3YXJuaW5nOiBmb3JtYXQgJyVsZCcgZXhwZWN0cyB0eXBlICdsb25nIGludCcsIGJ1dCBhcmd1bWVudCA3IGhhcyB0eXBlICdpbnQnCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IGE3NDkwODE2MWExYjM3ZDc4MGQzYTgyNmE4NjgwN2JiYzUwYTM4NTcKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CVR1ZSBNYXIgMTYgMTU6Mjk6MzMgMjAxMCArMDEwMAoKICAgIGNvbnNvbGUuYzogZml4IHByb2JsZW0gd2l0aCBzcGxhc2hpbWFnZQoKICAgIElmIGEgYm9hcmQgdXNlcyBjZmJfY29uc29sZSBkcml2ZXIgYW5kIHNwbGFzaCBpbWFnZQogICAgYW5kIGFsc28gZGVmaW5lcyBDT05GSUdfU0lMRU5UX0NPTlNPTEUsIHRoZSB1c2VyIGlzCiAgICBsb2NrZWQgb3V0IGV2ZW4gaWYgInNpbGVudCIgaXMgbm90IHNldC4gSXQgaXMgbm90CiAgICBwb3NzaWJsZSB0byBnZXQgYW55IG91dHB1dCwgbmVpdGhlciBvbiB2Z2EgY29uc29sZQogICAgZGV2aWNlIG5vciBvbiBzZXJpYWwgY29uc29sZSBhZnRlciByZWRpcmVjdGluZyB0aGUKICAgIG91dHB1dCB0byB0aGUgc2VyaWFsIGNvbnNvbGUsIHNpbmNlIHRoZSBHRF9GTEdfU0lMRU5UCiAgICBmbGFnIHJlbWFpbnMgc2V0LgoKICAgIEZpeCB0aGUgcHJvYmxlbSBieSByZWRpcmVjdGluZyB0aGUgb3V0cHV0IGZyb20gZnJhbWUKICAgIGJ1ZmZlciB0byBzZXJpYWwgY29uc29sZSBpZiBzcGxhc2hpbWFnZSBpcyB1c2VkLgogICAgT25seSBzdXBwcmVzcyB0aGUgb3V0cHV0IGlmICJzaWxlbnQiIGVudmlyb25tZW50CiAgICB2YXJpYWJsZSB3YXMgc2V0IGFuZCBkb24ndCBzZXQgdGhlIEdEX0ZMR19TSUxFTlQKICAgIGZsYWcgYXJiaXRyYXJpbHkuCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IDU2NDdmNzhkMDQxNzRiMGI5OTg1N2QyYTdjYmYyNTE0MWJkMTRhNDUKQXV0aG9yOiBUaG9tYXMgV2ViZXIgPHN3aXJsQGdteC5saT4KRGF0ZToJU2F0IE1hciAxMyAyMzoxNDo0NSAyMDEwICswMTAwCgogICAgbW9kIGNoYW5nZSA3NTUgPT4gNjQ0IGZvciBtdWx0aXBsZSBmaWxlcwoKICAgIEkgZXhlY3V0ZWQgJ2ZpbmQgLiAtbmFtZSAiKi5bY2hTXSIgLXBlcm0gNzU1IC1leGVjIGNobW9kIDY0NCB7fSBcOycKCiAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgV2ViZXIgPHN3aXJsQGdteC5saT4KICAgIEFkZCBzb21lIG1vcmU6IG5laXRoZXIgTWFrZWZpbGUgbm9yIGNvbmZpZy5tayBuZWVkIGV4ZWN1dGUgcGVybWlzc2lvbnMuCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDk5YzAwNmEzMjBjZWI5ZWExOTEzNWFjMTUxMmU0YTgxZThiZWJiNzIKQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KRGF0ZToJU2F0IE1hciAxMyAyMTowOTowMCAyMDEwICswMTAwCgogICAgbXhjbW1jOiBmaXggd2FybmluZ3MgZHVlIHRvIGFjY2VzcyAzMiBiaXQgcmVnaXN0ZXJzIHdpdGggMTYgYml0IGFjY2Vzc29ycwoKICAgIFNvbWUgcmVnaXN0ZXJzIG9mIHRoZSBteGNtbWMgZHJpdmVyIHdlcmUgYWNjZXNzZWQgdXNpbmcKICAgIDE2IGJpdCBhY2Nlc3NvciBmdW5jdGlvbnMsIGJlY2F1c2Ugb25seSB0aGUgTFNCIGlzCiAgICBzaWduaWZpY2FudC4gVGhpcyBpcyBub3QgbmVlZGVkIGFuZCBnZW5lcmF0ZXMKICAgIHdhcm5pbmdzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgoKY29tbWl0IGM5NmY4NmVlZmMyMTViNjdkZDIyMjY5NGNlMmI2ZjYwZTZhNDJiMGIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gSmFuIDE3IDIzOjU1OjUzIDIwMTAgKzAxMDAKCiAgICBURlRQOiBhbGxvdyBmb3IgYWRqdXN0YWJsZSByZXRyYW5zbWlzc2lvbiB0aW1vdXQKCiAgICBTbyBmYXIsIFRGVFAgbmVnb3RpYXRlZCBhIGZpeGVkIHJldHJhbnNtaXNzaW9uIHRpbWVvdXQgb2YgNSBzZWNvbmRzLgogICAgSW4gc29tZSBjYXNlcyAoYnVzeSBuZXR3b3Jrcywgc2xvdyBURlRQIHNlcnZlcnMpIHRoaXMgY2F1c2VkIHZlcnkKICAgIHNsb3cgdHJhbnNmZXJzLiBBIG5ldyBlbnZpcm9ubWVudCB2YXJpYWJsZSAidGZ0cHRpbWVvdXQiIGFsbG93cyB0bwogICAgc2V0IHRoaXMgdGltZW91dC4gTG93ZXJpbmcgdGhpcyB2YWx1ZSBtYXkgbWFrZSBkb3dubG9hZHMgc3VjY2VlZAogICAgZmFzdGVyIGluIG5ldHdvcmtzIHdpdGggaGlnaCBwYWNrZXQgbG9zcyByYXRlcyBvciB3aXRoIHVucmVsaWFibGUKICAgIFRGVFAgc2VydmVycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgQ2M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDI1MmI0MDRkOTU0ZjkxNDk5YTQ0NzdhM2UxMDY0ZWIyMzdjZTVhMWMKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgTWFyIDkgMTQ6Mjc6MjUgMjAxMCArMDEwMAoKICAgIEZpeCBQQ0lfQkFTRV9BRERSRVNTXzUgaGFuZGxpbmcgaW4gcGNpX2hvc2VfY29uZmlnX2RldmljZSgpCgogICAgU2lnbmVkLW9mZi1ieTogRlVKSVRBIEthenV0b3NoaSA8ZnVqaXRhQHNvdW0uY28uanA+CiAgICBTaWduZWQtb2ZmLWJ5OiA8d2RAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOWQ5MGE5M2QzNjcyNzJlZTY1NTUwYzBjOWY4MjYxNWNlYzk2N2M3MApBdXRob3I6IEZyYW5zIE1ldWxlbmJyb2VrcyA8ZnJhbnNtZXVsZW5icm9la3NAZ21haWwuY29tPgpEYXRlOglUaHUgRmViIDI1IDE0OjAzOjA4IDIwMTAgKzAxMDAKCiAgICBjbWRfbW1jIHJlbW92ZSBcbgoKICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgXG4gYWZ0ZXIgdGhlIGhlbHAgbWVzc2FnZSBmb3IgbW1jaW5mby4KICAgIFRoaXMgcmVzdWx0ZWQgaW4gYW4gZW1wdHkgbGluZSBiZWluZyBkaXNwbGF5ZWQgYWZ0ZXIgdGhlIG1tY2luZm8gbGluZQogICAgd2hlbiB0aGUgaGVscCBjb21tYW5kIHdhcyBnaXZlbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBGcmFucyBNZXVsZW5icm9la3MgPGZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbT4KCmNvbW1pdCA2N2M3MTg5ZGQzNWNiMzY4ZWY2NjUxMjZmZDE3ODE2NTgxYmQyZTkyCkF1dGhvcjogUmVuYXRvIEFuZHJlb2xhIDxyZW5hdG8uYW5kcmVvbGFAaW1hZ29zLml0PgpEYXRlOglUdWUgTWFyIDE2IDE2OjAxOjI5IDIwMTAgLTA0MDAKCiAgICBuaW9zMjogQWRkZWQgc3VwcG9ydCB0byBZQU5VIFVBUlQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KCmNvbW1pdCAxZTY3ZmIzMmZiZGFlNzk0OWJiNDIzYzllMjBiM2Y3N2MwYTYxNjYzCkF1dGhvcjogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgpEYXRlOglUdWUgTWFyIDE2IDEyOjEyOjQ4IDIwMTAgLTA0MDAKCiAgICBuaW9zMjogdXNlIGdlbmVyaWMgdW5hbGlnbmVkLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KCmNvbW1pdCAwNTAyMjYyOWEyY2E2YzM4NWRjMzkwZDMyYzIwYWEyN2NmNWQ5MTVhCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgSmFuIDIxIDA1OjAxOjE1IDIwMTAgLTA1MDAKCiAgICBhc20tYmxhY2tmaW4vdW5hbGlnbmVkLmg6IGFkZCBmb3IgemxpYiBjb2RlCgogICAgVGhlIG5ldyB6bGliIGNvZGUgd2FudHMgYXNtL3VuYWxpZ25lZC5oLCBzbyBoYXZlIHRoZSBCbGFja2ZpbiB2ZXJzaW9uIHB1bGwKICAgIGluIHRoZSBhc20tZ2VuZXJpYy91bmFsaWduZWQuaC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgM2FkYzFmZGEzOGE2YWFjZDRhYWYzYzJjOWNjNjJhMWU2OWU2ZGUxNwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEphbiAyMSAwNTowMToxNCAyMDEwIC0wNTAwCgogICAgYXNtLWdlbmVyaWMvdW5hbGlnbmVkLmg6IGR5bmFtaWMgZGVmYXVsdCB1bmFsaWduZWQgYWNjZXNzZXMKCiAgICBUaGlzIGlzIGJhc2VkIG9uIHRoZSBhc20tYXJtL3VuYWxpZ25lZC5oLCBidXQgbWFkZSBnZW5lcmljIHNvIGFsbCBhcmNoZXMKICAgIHRoYXQgY2Fubm90IGRvIHVuYWxpZ25lZCBhY2Nlc3NlcyBjYW4gdXRpbGl6ZSBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYmUxMjlhYTcxODgyNDIxYWQwYjUwY2QzNzYyOTE1ZDEwYWNlMjdhZApBdXRob3I6IE1hdHRoaWFzIFdlaXNzZXIgPG1hdHRoaWFzLndlaXNzZXJAZ3JhZi1zeXRlY28uZGU+CkRhdGU6CVR1ZSBKYW4gMTIgMTI6MDY6MzEgMjAxMCArMDEwMAoKICAgIHZpZGVvOiBGaXggY29uc29sZSBkaXNwbGF5IHdoZW4gc3BsYXNoc2NyZWVuIGlzIHVzZWQKCiAgICBJZiBhIHNwbGFzaHNjcmVlbiBpcyB1c2VkIHRoZSBjb25zb2xlIHNjcm9sbGluZyB1c2VkIHRoZQogICAgc2Nyb2xsIHNpemUgYXMgbmVlZGVkIHdoZW4gYSBsb2dvIHdhcyBkaXNwbGF5ZWQuIFRoaXMKICAgIHBhdGNoIHNldHMgdGhlIHNjcm9sbCBzaXplIHRvIHRoZSB3aG9sZSBzY3JlZW4gaWYKICAgIGEgc3BsYXNoc2NyZWVuIGlzIHNob3duLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIFdlaXNzZXIgPG1hdHRoaWFzLndlaXNzZXJAZ3JhZi1zeXRlY28uZGU+Cgpjb21taXQgOTM5MTBlZGI1OTVhODhkMzk0ZGEzZWIyY2Y1MTQ4MDk2MTU1ZGZlOQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBNYXIgMTIgMjM6MDY6MDQgMjAxMCArMDEwMAoKICAgIFByZXBhcmUgdjIwMTAuMDMtcmMxCgogICAgQ29kaW5nIHN0eWxlIGNsZWFudXAsIHVwZGF0ZSBDSEFOR0VMT0cuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0ZTcyZmIxNWM5MDczMTI5ZTA1ODIwY2M5YzU0ZjU0YmM0OTg1ODM1CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIE1hciAxMiAyMjoxMTowMCAyMDEwICswMTAwCgogICAgc3RhbmRhbG9uZSBlZXBybzEwMF9lZXByb206IGZpeCBidWlsZCBlcnJvcgoKICAgIEJ1aWxkaW5nIGV4YW1wbGVzL3N0YW5kYWxvbmUvZWVwcm8xMDBfZWVwcm9tIHRyaWdnZXJzIHRoaXMgZXJyb3I6CgogICAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIGluY2x1ZGUvY29tbW9uLmg6NjI5LAoJCSAgICAgZnJvbSBlZXBybzEwMF9lZXByb20uYzoyNDoKICAgIGluY2x1ZGUvbmV0Lmg6IEluIGZ1bmN0aW9uICdOZXRSZWFkSVAnOgogICAgaW5jbHVkZS9uZXQuaDo0MzA6IHdhcm5pbmc6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdtZW1jcHknCiAgICBlZXBybzEwMF9lZXByb20uYzogQXQgdG9wIGxldmVsOgogICAgZWVwcm8xMDBfZWVwcm9tLmM6ODE6IGVycm9yOiBjb25mbGljdGluZyB0eXBlcyBmb3IgJ21lbWNweScKICAgIGluY2x1ZGUvbmV0Lmg6NDMwOiBlcnJvcjogcHJldmlvdXMgaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgJ21lbWNweScgd2FzIGhlcmUKCiAgICBGaXggdGhpcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDFiYjE4MDk1NThlMTFlYjA4OWZiYTMyY2FlZDlmYzk5ZDIxNDc3YzEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgTWFyIDEyIDIyOjEwOjMxIDIwMTAgKzAxMDAKCiAgICBVcGRhdGUgLmdpdGlnbm9yZSdzOiBhZGQgc29tZSBnZW5lcmF0ZWQgZmlsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDljOWNiZTc4ZGNiMGFmYWQwODE2NzBjYjFiZGM4MmQyMjcwOTVjYWUKQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KRGF0ZToJTW9uIE1hciA4IDE0OjAyOjU3IDIwMTAgKzAxMDAKCiAgICBtcGM4Mnh4OiBSZW1vdmUgU0w4MjQ1IGJvYXJkIGFuZCB0aGUgbm93IG9ycGFobmVkIHNrOThsaW4gbmV0d29yayBkcml2ZXIuCgogICAgVGhpcyBjb2RlIGhhcyBjb21waWxlIHByb2JsZW1zIGFuZCB0aGUgY29tcGFueSBkb2VzIG5vdCBldmVuIGV4aXN0IGFueQogICAgbW9yZS4gIFNvIHdlIHRha2UgdGhlIGxpYmVydHkgdG8gZHJvcCBzdXBwb3J0IGZvciBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KICAgIENDOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgQ0M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgY2EwMmY2ZjhkYzQ5NjZiMmEwMTliMTVlMDFiNTA3MDE4OTMyN2RmMgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBNYXIgMTAgMTc6MTY6NDggMjAxMCAtMDYwMAoKICAgIDg1eHg6IERyb3AgRklUIHN1cHBvcnQgdG8gYWxsb3cgdS1ib290IGltYWdlIHRvIGZpdCBpbiA1MTJrCgogICAgVGhlIDM2LWJpdCBidWlsZCBleGNlZWRzIHRoZSA1MTJrIHNpemUgd2UgaGF2ZS4gIFJlbW92aW5nIEZJVCB0eXBlIGltYWdlCiAgICBzdXBwb3J0IGFsbG93cyB1cyB0byBmaXQgYW5kIHdlIGRvbnQgcmVhbGx5IHVzZSBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDVmODQxOTU5N2Y0MjdhYWY5YmI1MDE0NjA3MzVkNzAzZDEwZGI1ZWUKQXV0aG9yOiBNaWNoYWVsIFphaWRtYW4gPG1pY2hhZWwuemFpZG1hbkBnbWFpbC5jb20+CkRhdGU6CVN1biBGZWIgMjggMTY6Mjg6MjUgMjAxMCArMDIwMAoKICAgIENvc21ldGljIGNoYW5nZSAtIGluZGVudGF0aW9uIGNvcnJlY3Rpb24uCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBaYWlkbWFuIDxtaWNoYWVsLnphaWRtYW5AZ21haWwuY29tPgoKY29tbWl0IGE2OTM0NDdjZWFkZmY0OTE1NWUyNjBjYmJhZWY0ZTA5YzkyNmNhYjUKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CVdlZCBGZWIgMjQgMDA6Mjk6NDQgMjAxMCArMDEwMAoKICAgIGNtZF9tdGRwYXJ0cy5jOiBwcmV2ZW50IHByaW50YnVmZmVyIG92ZXJmbG93cwoKICAgIFRoZSBsZW5ndGggb2YgY29uZmlndXJlZCBNVERQQVJUU19ERUZBVUxUIHN0cmluZwogICAgY291bGQgYmUgZ3JlYXRlciB0aGFuIGNvbnNvbGUgcHJpbnRidWZmZXIgc2l6ZS4KICAgIFJlcGxhY2UgcHJpbnRmKCkgYnkgcHV0cygpIHRvIGF2b2lkIHBvdGVudGlhbCBidWZmZXIKICAgIG92ZXJmbG93cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgMzkyMGJiZWRjZjc0YTA3M2JjNzI5NTBhNTFkZTc1YWY2ZmFhMmYwNgpBdXRob3I6IEZyYW5zIE1ldWxlbmJyb2VrcyA8ZnJhbnNtZXVsZW5icm9la3NAZ21haWwuY29tPgpEYXRlOglGcmkgRmViIDE5IDExOjU5OjA0IDIwMTAgKzAxMDAKCiAgICBGaXggTVBDODUzNkRTIGRvY3VtZW50YXRpb24KCiAgICBUaGlzIHBhdGNoIGNvcnJlY3RzIHNtYWxsIG1pc3Rha2UgaW4gdGhlIHJlZ2lzdGVyIGxpc3QgaW4KICAgIGRvYy9SRUFETUUubXBjODUzNmRzLiBUaGVzZSByZWdpc3RlcnMgYXJlIDMyIGJpdHMgYW5kIHRoaXMgb25lIHN0YXJ0cwogICAgYXQgLi4uLmMgbm90IC4uLi5lCgogICAgV2hlbiB1c2luZyB0aGUgLi4uYyBhZGRyZXNzIEkgY2FuIGJvb3QgZnJvbSBzZCwgd2hlbiB1c2luZyB0aGUgLi4uZQogICAgYWRkcmVzcyBJIGNhbm5vdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBGcmFucyBNZXVsZW5icm9la3MgPGZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbT4KICAgIEFja2VkLWJ5OiBIdSBNaW5na2FpIDxCMjEyODRAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhYjY4ZjRkZDE5MzA1M2MwYmEzOTVhZjE1YjE1NGNhY2EzNWU5OWYzCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVdlZCBGZWIgMTAgMDg6MDM6MjEgMjAxMCArMDEwMAoKICAgIGRvYzogYWRkIFJFQURNRSBmb3IgQ09ORklHX0hXQ09ORklHIG9wdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDcwMjZlYWQwZDNlY2U1ZTQzZDZiMzlmNjJmYjVjNDMwNmY2OTEyMjQKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVHVlIEZlYiA5IDE1OjUwOjI3IDIwMTAgKzAxMDAKCiAgICBUUU04eHg6IGVuYWJsZSBkZXZpY2UgdHJlZSBzdXBwb3J0IG9uIGFsbCBUUU04eHggYmFzZWQgYm9hcmRzLgoKICAgIEFsc28gZW5hYmxlIHN1cHBvcnQgZm9yIENPTkZJR19IV0NPTkZJRyBiZWNhdXNlIHdlIHVzZSB0aGlzIGZvcgogICAgY29uZmlndXJpbmcgaWYgdGhpcyBoYXJkd2FyZSBoYXMgYSBGRUMgb3Igbm90LgoKICAgIHN5bnRheDoKCiAgICBod2NvbmZpZz1mZWM6b24gICBpZiBoYXJkd2FyZSBoYXMgYW4gZmVjCiAgICBod2NvbmZpZz1mZWM6b2ZmICBpZiBoYXJkd2FyZSBoYXMgbm8gZmVjCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDZlZDNiOWQ0NGMzNTliYzgyOWU5YWNkMGE1NWZjZDFjM2U4MmI2YWUKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVHVlIEZlYiA5IDE1OjUwOjIxIDIwMTAgKzAxMDAKCiAgICBUUU04eHg6IGFkZCBkZXZpY2UgdHJlZSBzdXBwb3J0IGZvciBUUU04eHggYmFzZWQgYm9hcmRzLgoKICAgIEFsc28gdXNlIGh3Y29uZmlnIHRvIGNvbmZpZ3VyZSB3aGV0aGVyIHRoZSBib2FyZCBoYXMgYSBGRUMgb3Igbm90LgogICAgV2UgdGhlbiBjYW4gYWRqdXN0IHRoZSBEVFMgdG8gdGVsbCBMaW51eCBpZiB0aGVyZSBpcyBhIEZFQyBwcmVzZW50LgoKICAgIHN5bnRheDoKCiAgICBod2NvbmZpZz1mZWM6b24gICBpZiBoYXJkd2FyZSBoYXMgYSAgRkVDCiAgICBod2NvbmZpZz1mZWM6b2ZmICBpZiBoYXJkd2FyZSBoYXMgbm8gRkVDCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDE0M2NkMjFmZTIyZTY5YmYwY2RhZWZkNTdiZTk4ZjA3ZWQ4ZjA0ZmEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgTWFyIDExIDIzOjU2OjAzIDIwMTAgKzAxMDAKCiAgICBNb3ZlIENPTkZJR19VUERBVEVfVEZUUCBjb2RlIGFmdGVyIENPTkZJR19QUkVCT09UCgogICAgVGhlIGF1dG8tdXBkYXRlIGZlYXR1cmUgKENPTkZJR19VUERBVEVfVEZUUCkgcmVxdWlyZXMgdGhhdCB0aGUgZW52CiAgICB2YXJpYWJsZSBzZXJ2ZXJpcCBiZSBzZXQgZm9yIHRoZSBURlRQIGFjY2Vzcy4gSWYgREhDUCBpcyB0byBiZSB1c2VkCiAgICB0byBnZXQgdGhlIHNlcnZlcmlwIGVudiB2YXJpYWJsZSwgdGhpcyBkb2Vzbid0IHdvcmsgYXMgREhDUCBoYXBwZW5zCiAgICBhZnRlciB0aGUgYXV0by11cGRhdGUgYXR0ZW1wdCBoYXMgcnVuLiBBIHNvbHV0aW9uIGlzIHRvIHJ1biBESENQIGluCiAgICBQUkVCT09ULCBidXQgZXZlbiB0aGlzIGlzIHRvbyBsYXRlLgoKICAgIFRvIHNvbHZlIHRoaXMsIHdlIG1vdmUgdXBkYXRlX3RmdHAoKSBiZWxvdyB0aGUgUFJFQk9PVCBzdHVmZi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDFiNjkxYmIwYzJmYTE4YzliNjhmMTUzOThlZjZjOGI5ZTBjMGYzZTMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBKYW4gMjUgMTg6NTA6MTEgMjAxMCAtMDUwMAoKICAgIG1raW1hZ2U6IGRvbnQgZm9yY2UgZW50cnkgcG9pbnQgd2l0aCB4aXAKCiAgICBTb21lIHBlb3BsZSBib290IGltYWdlcyB3aXRoIHRoZSBlbnRyeSBwb2ludCBpbiB0aGUgbWlkZGxlIG9mIHRoZSBibG9iCiAgICAobGlrZSBMaW51eCB3aXRoIHRoZSBoZWFkIGNvZGUgaW4gZGlzY2FyZGFibGUgLmluaXQudGV4dCksIGFuZCB0aGVyZSBpcyBubwogICAgbm8gcmVhbCByZXF1aXJlbWVudCB0aGF0IHRoZSBlbnRyeSBwb2ludCBiZSByaWdodCBhZnRlciB0aGUgbWtpbWFnZSBoZWFkZXIKICAgIHdoZW4gZG9pbmcgWElQLCBzbyBsZXQgcGVvcGxlIHNwZWNpZnkgd2hhdGV2ZXIgdGhleSB3YW50LiAgSWYgdGhleSBkbyBuZWVkCiAgICBhbiBlbnRyeSByaWdodCBhZnRlciB0aGUgaGVhZGVyLCB0aGVuIHRoZXkgc3RpbGwgY2FuIGRvIHRoYXQgd2l0aCBub3JtYWwKICAgIC1lIGJlaGF2aW9yLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA0Yjk5MzI3YTQxMjFhMjhkMmJkYjJjMmI4NDFmNWQ5NzkzMWFlOTA1CkF1dGhvcjogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KRGF0ZToJRnJpIEphbiAxNSAxMDowNjowNiAyMDEwIC0wNTAwCgogICAgUFBDOiBSZWNvcmQgVS1Cb290J3MgcmVsb2NhdGVkIGFkZHJlc3MgaW4gUkFNIGFuZCBzaG93IGluIGJkaW5mby4KCiAgICBUaGlzIHBhdGNoIHVzZXMgZ2QtPnJlbG9jYWRkciB2YXJpYWJsZSB0byBzdG9yZSB1Ym9vdCdzIHJlbG9jYXRlZAogICAgYWRkcmVzcyBpbiBSQU0gYW5kIHNob3dzIGl0IGluIGJkaW5mbyBjb21tYW5kLgoKICAgIFRoaXMgcGF0Y2ggbW92ZXMgQ09ORklHX0FNSUdBT05FRzNTRSBzdHlsZSBjb3B5aW5nIG9mIHRoZSBhZGRyZXNzCiAgICBpbiBib2FyZF9pbml0X2YgdG8ganVzdCBiZWZvcmUgcmVsb2NhdGlvbiBpcyBhY3R1YWxseSBkb25lLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+CiAgICBUZXN0ZWQtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgoKY29tbWl0IDhjNDQ0NGZmNWUxZDhlOWZkMWE4NDdhMmZiMDk2YWE5YWZmNjZmODUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgTWFyIDExIDIzOjM1OjQzIDIwMTAgKzAxMDAKCiAgICBGaXggbWVtb3J5IGxlYWsgaW4gbW1jX3JlYWQoKQoKICAgIFRoZXJlIGlzIGJlIGEgcGF0aCB0aHJvdWdoIG1tY19yZWFkIGluIGRyaXZlcnMvbW1jL21tYy5jIHdoZXJlCiAgICBtYWxsb2MnZCBtZW1vcnkgaXMgbm90IGZyZWVkIGJlZm9yZSBleGl0aW5nIG1tY19yZWFkOiBpdCBvY2N1cnMgaWYKICAgIG1tY19zZXRfYmxvY2tsZW4oKSByZXR1cm5zIGEgbm9uLXplcm8gdmFsdWUuCgogICAgUmVwb3J0ZWQtYnk6IFF1ZW50aW4gQXJtaXRhZ2UgPFF1ZW50aW5AQXJtaXRhZ2Uub3JnLnVrPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA2MjU4YjA0ZTlhNDFlZTYwZjIxNTQ3MzU4YTU4ZmJjYjkwODc3MzVkCkF1dGhvcjogRGFuaWVsIEdvcnN1bG93c2tpIDxEYW5pZWwuR29yc3Vsb3dza2lAZXNkLmV1PgpEYXRlOglUaHUgRmViIDExIDE0OjU3OjA0IDIwMTAgKzAxMDAKCiAgICBBVDkxOiBVcGRhdGUgb3RjNTcwIGJvYXJkIHRvIG5ldyBTb0MgYWNjZXNzCgogICAgKiBjb252ZXJ0IG90YzU3MCBib2FyZCB0byB1c2UgYyBzdHVjdHVyZSBTb0MgYWNjZXNzCiAgICAqIGNoYW5nZSBncGlvIGFjY2VzcyB0byBhdDkxX2dwaW8gc3ludGF4CgogICAgU2lnbmVkLW9mZi1ieTogRGFuaWVsIEdvcnN1bG93c2tpIDxEYW5pZWwuR29yc3Vsb3dza2lAZXNkLmV1PgoKY29tbWl0IDdjZWRiMjk4NzIwNjllNzgyZjlmOTdjZWY0YWIxMjMyNzM2ZTRjODUKQXV0aG9yOiBKZW5zIFNjaGFyc2lnIDxqc19hdF9uZ0BzY2hhcnNvZnQuZGU+CkRhdGU6CVN1biBGZWIgMTQgMTI6MjA6NDMgMjAxMCArMDEwMAoKICAgIHVwZGF0ZXMgdGhlIGF0OTEgbWFpbl9jbG9jayBjYWxjdWxhdGlvbgoKICAgICogdXBkYXRlcyB0aGUgY29uZGl0aW9uYWwgbWFpbl9jbG9jayBjYWxjdWxhdGlvbiAoaWYgQVQ5MV9NQUlOX0NMT0NLIGRlZmluZWQpIHRvIGMgc3RydWN0dXJlIFNvQyBhY2Nlc3MKICAgICAqIGFkZCBuZWVkIHJlZ2lzdGVyIGZsYWdzCgogICAgU2lnbmVkLW9mZi1ieTogSmVucyBTY2hhcnNpZyA8anNfYXRfbmdAc2NoYXJzb2Z0LmRlPgoKY29tbWl0IDYzNzgzM2MyZDY2OWY5YTM3MDcwNmUyNzVlNzEwMzQ1NGMzYzgzZWMKQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+CkRhdGU6CVdlZCBNYXIgMyAxNToyNzozNyAyMDEwICswNTMwCgogICAgYXJtOiBraXJrd29vZDogc3VlbjM6IGZpeGVkIGJ1aWxkIHdhcm5pbmcKCiAgICBUaGlzIHBhdGNoIGZpeGVzIGZvbGxvd2luZyBidWlsZCB3YXJuaW5nCgogICAgSW52YWxpZCBLd2JpbWFnZSBjb21tYW5kIFR5cGUgLSB2YWxpZCBuYW1lcyBhcmU6IEJPT1RfRlJPTSwgTkFORF9FQ0NfTU9ERSwgTkFORF9QQUdFX1NJWkUsIFNBVEFfUElPX01PREUsIEREUl9JTklUX0RFTEFZLCBEQVRBLCAsIHNwaSwgbmFuZCwgc2F0YSwgcGV4LCB1YXJ0CgogICAgU2lnbmVkLW9mZi1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgoKY29tbWl0IGU0ZDM0NDkyMDE3Yzk1ZTQwNDFlYTBjNTgxZTFhYjhkMWQ0OTM4MWIKQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KRGF0ZToJRnJpIE1hciA1IDE3OjU0OjM3IDIwMTAgKzAxMDAKCiAgICBNWDUxOiByZW1vdmVkIHdhcm5pbmdzIGZvciB0aGUgbXg1MWV2awoKICAgIFRoZSBwYXRjaCByZW1vdmVzIHdhcm5pbmdzIGF0IGNvbXBpbGUgdGltZSBhbmQgcHJvdmlkZXMKICAgIHNvbWUgY2xlYW51cCBjb2RlOgogICAgLSBSZW1vdmVkIGNvbW1lbnQgb24gTkFORCAobm90IHlldCBzdXBwb3J0ZWQpIGZyb20gbG93bGV2ZWxfaW5pdC5TCiAgICAtIFJlbW92ZWQgTkZNUyBiaXQgZGVmaW5pdGlvbiBmcm9tIGlteC1yZWdzLmgKICAgICAgVGhlIGJpdCBpcyBvbmx5IHJlbGF0ZWQgdG8gTVguMjUvMzUgYW5kIGNhbiBsZWFkIHRvIGNvbmZ1c2lvbgogICAgLSBNb3ZlZCBpc19zb2NfcmV2KCkgdG8gc29jIHNwZWNpZmljIGNvZGUgKHJlbW92ZWQgZnJvbSBteDUxZXZrLmMpCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Cgpjb21taXQgOWQ2OWUzM2Q4ZDBmMTEyZmUzYTA4OTEwMWQwMjNlODc0MzE2ODRkMQpBdXRob3I6IFZpcGluIEt1bWFyIDx2aXBpbi5rdW1hckBzdC5jb20+CkRhdGU6CVR1ZSBNYXIgMiAxMDo0Njo1MiAyMDEwICswNTMwCgogICAgU1BFQXIgOiBTdXBwb3J0aW5nIG5ldyBtYWNoIGlkcyBmb3Igc3BlYXIzMTAgYW5kIHNwZWFyMzIwCgogICAgU3VwcG9ydGluZyBuZXcgbWFjaGluZSBpZHMgZm9yIFNvQ3Mgc3BlYXIzMTAgYW5kIHNwZWFyMzIwCgogICAgaW5jbHVkZS9hc20tYXJtL21hY2gtdHlwZXMuaCBoYXMgdG8gYmUgdXBkYXRlZCBiZWZvcmUgYXBwbHlpbmcKICAgIHRoaXMgcGF0Y2ggZm9yIGJ1aWxkIHRvIHdvcmsKCiAgICBTaWduZWQtb2ZmLWJ5OiBWaXBpbiBLdW1hciA8dmlwaW4ua3VtYXJAc3QuY29tPgoKY29tbWl0IGNjMGI1M2M4ZDVkNmEzZjE0ZjM2OTgyNTUyYmMzZmViOGVjYjFkYjUKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJTW9uIE1hciAxIDE1OjU4OjE4IDIwMTAgKzAxMDAKCiAgICBhcm0sIHN1ZW4zOiBmaXggY29tcGlsZSBlcnJvciwgaWYgZG9pbmcgbm90IGEgbG9jYWwgYnVpbGQKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCA2N2ZhOGMyNWY1YzJkMjM5MzJjMGYzMWIwMzUyODFkNmFiYmIwOTY1CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPFtoc0BkZW54LmRlXT4KRGF0ZToJTW9uIEZlYiAyMiAxNjo0MzowMiAyMDEwICswNTMwCgogICAgYXJtOiBhZGQgc3VwcG9ydCBmb3IgdGhlIHN1ZW4zIGJvYXJkIGZyb20ga2V5bWlsZQoKICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgQVJNIHBhcnQgb2YgdGhlIG1nY29nZTIsIG5hbWVkIHN1ZW4zLgogICAgVGhpcyBib2FyZCBpcyBiYXNlZCBvbiB0aGUgTWFydmVsbCBLaXJrd29vZCAoODhGNjI4MSkgU29DLgogICAgQXMgdGhlcmUgY29tZSBtb3JlIGJvYXJkIHZhcmlhbnRzLCBjb21tb24gY29uZmlnIG9wdGlvbnMKICAgIGFyZSBjb2xsZWN0ZWQgaW4gaW5jbHVkZS9jb25maWdzL2ttX2FybS5oLiBBbHNvLCB0aGlzIGJvYXJkCiAgICB1c2UgY29tbW9uIGNvZGUgZm9yIGFsbCBrZXltaWxlIGJvYXJkcywgd2hpY2ggaXMgc3RvcmVkIGluCiAgICBib2FyZC9rZXltaWxlL2NvbW1vbi9jb21tb24uYwoKICAgIFNpZ25lZC1vZmYtYnk6IEhvbGdlciBCcnVuY2sgPGhvbGdlci5icnVuY2tAa2V5bWlsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCA2ODk1ZDQ1MTBhNzc1ODU5NWI4NWI0OGE3ZjQ0OWJkNjFkZmM4MTJmCkF1dGhvcjogSm9obiBSaWdieSA8amNyaWdieUBnbWFpbC5jb20+CkRhdGU6CU1vbiBKYW4gMjUgMjM6MTI6NTggMjAxMCAtMDcwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBLQVJPIFRYMjUgYm9hcmQKCiAgICBUaGlzIGlzIGFuIGkuTVgyNSBiYXNlIGJvYXJkIHdpdGggb25seSBOQU5ECiAgICBzbyBpdCB1c2VzIG5hbmRfc3BsIHRvIGJvb3QuCgogICAgU2lnbmVkLW9mZi1ieTogSm9obiBSaWdieSA8amNyaWdieUBnbWFpbC5jb20+CgogICAgVHVuZSBjb25maWd1cmF0aW9uLCBhZGQgc3VwcG9ydCBmb3IgKHJlZHVuZGFudCkgZW52aXJvbm1lbnQgaW4gTkFORC4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CgogICAgQWNrZWQtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBDQzogRnJlZCBGYW4gPGZhbnllZmVuZ0BnbWFpbC5jb20+CiAgICBDQzogVG9tIDxUb20uUml4QHdpbmRyaXZlci5jb20+Cgpjb21taXQgNzQwZDZhZTViOTgyNDk2ZmNlYTA2NjZiMjIwN2NiMzRjYzBlNjAxNQpBdXRob3I6IEpvaG4gUmlnYnkgPGpjcmlnYnlAZ21haWwuY29tPgpEYXRlOglNb24gSmFuIDI1IDIzOjEyOjU3IDIwMTAgLTA3MDAKCiAgICBmZWNfbXhjOiBhZGQgTVgyNSBzdXBwb3J0CgogICAgVXNlIFJNSUkgZm9yIE1YMjUKICAgIEFkZCBjb2RlIHRvIGluaXQgZ2Fza2V0IHRoYXQgZW5hYmxlcyBSTUlJCgogICAgU2lnbmVkLW9mZi1ieTogSm9obiBSaWdieSA8amNyaWdieUBnbWFpbC5jb20+CiAgICBDQzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBjYjE3YjkyZGUwMzQxNmNmNGQ1ZGI1YmQyN2VmNGFlMTdmOTVlNzA3CkF1dGhvcjogSm9obiBSaWdieSA8amNyaWdieUBnbWFpbC5jb20+CkRhdGU6CU1vbiBKYW4gMjUgMjM6MTI6NTUgMjAxMCAtMDcwMAoKICAgIGZlY19teGM6IGNsZWFudXAgYW5kIGZhY3RvciBvdXQgTVgyNyBkZXBlbmRlbmNpZXMKCiAgICBnZW5lcmFsIGNsZWFudXAKICAgIG1vdmUgY2xvY2sgaW5pdCB0byBjcHVfZXRoX2luaXQgaW4gY3B1L2FybTkyNmVqcy9teDI3L2dlbmVyaWMuYwogICAgbWFrZSBNWDI3IHNwZWNpZmljIHBoeSBpbml0IGNvbmRpdGlvbmFsIG9uIENPTkZJR19NWDI3CiAgICByZXBsYWNlIGNhbGwgdG8gaW14X2dldF9haGJjbGsgd2l0aCBvbmUgdG8gaW14X2dldF9mZWNjbGsKICAgIGFuZCBkZWZpbmUgaW14X2dldF9mZWNjbGsgaW4gaW5jbHVkZS9hc20tYXJtL2FyY2gtbXgyNy9jbG9jay5oCgogICAgU2lnbmVkLW9mZi1ieTogSm9obiBSaWdieSA8amNyaWdieUBnbWFpbC5jb20+CiAgICBDQzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KICAgIENDOiBGcmVkIEZhbiA8ZmFueWVmZW5nQGdtYWlsLmNvbT4KICAgIENDOiBUb20gPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KCmNvbW1pdCA1NTJmZjhmMWQ5ZmNjZjU3MjQzYTAxYWZlNmRiZWJiOTgyODY3ZTIwCkF1dGhvcjogSm9obiBSaWdieSA8amNyaWdieUBnbWFpbC5jb20+CkRhdGU6CU1vbiBKYW4gMjUgMjM6MTI6NTYgMjAxMCAtMDcwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBGcmVlc2NhbGUgTVgyNSBTT0MKCiAgICBBUk05MjZFSlMgY29yZSB3aXRoIE1YMzEgcGVyaXBoZXJhbHMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9obiBSaWdieSA8amNyaWdieUBnbWFpbC5jb20+CiAgICBFYXJsaWVyIFZlcnNpb24gU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIENDOiBGcmVkIEZhbiA8ZmFueWVmZW5nQGdtYWlsLmNvbT4KICAgIENDOiBUb20gPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KCmNvbW1pdCBlOTExYzk4M2Y0YThkNTg4ZjgzMTgwNmFmMzdlYjU2Yzk1NTEyZDVkCkF1dGhvcjogSm9obiBSaWdieSA8amNyaWdieUBnbWFpbC5jb20+CkRhdGU6CU1vbiBKYW4gMjUgMjM6MTI6NTEgMjAxMCAtMDcwMAoKICAgIG14Y19zZXJpYWwgcmVwbGFjZSBwbGF0Zm9ybSBzcGVjaWZpYyBjbG9jawoKICAgIHJlbW92ZSBpZmRlZidkIGNsb2NrIHNlbGVjdGlvbiBjb2RlIGZyb20KICAgIHNlcmlhbF9teGMuYyBhbmQgcmVwbGFjZSB3aXRoIGNhbGwgdG8gaW14X2dldF91YXJ0Y2xrCgogICAgQWRkIGRlZmluaXRpb25zIGZvciBpbXhfZ2V0X3VhcnRjbGsgdG8gaW14MzEgYW5kIGlteDI3CiAgICBpbmNsdWRlIGZpbGVzLgoKICAgIFRoaXMgbWFrZXMgaXQgZWFzaWVyIHRvIGFkZCBuZXcgaW14IHBsYXRmb3Jtcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KCmNvbW1pdCBjNWZiNzBjOTExNGJkMGE4Mjg5NDQ0ZDNkNWM3ZTM2MGVkYTA4MjMyCkF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CUZyaSBGZWIgNSAxNToxMzo1OCAyMDEwICswMTAwCgogICAgQWRkIGluaXRpYWwgc3VwcG9ydCBmb3IgRnJlZXNjYWxlIG14NTFldmsgYm9hcmQKCiAgICBUaGUgcGF0Y2ggYWRkcyBpbml0aWFsIHN1cHBvcnQgZm9yIHRoZSBGcmVlc2NhbGUgbXg1MWV2ayBib2FyZC4KICAgIE5ldHdvcmsgKEZFQykgYW5kIFNEIGNvbnRyb2xsZXIgKGZzbF9lc2RoYykgYXJlIHN1cHBvcnRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEZyZWQgRmFuIDxmYW55ZWZlbmdAZ21haWwuY29tPgoKY29tbWl0IGM2N2JlZTE0NjBhMGRhODllZjA4Y2JjMjgzNzUxNzFhY2M5YTQyMjcKQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KRGF0ZToJRnJpIEZlYiA1IDE1OjExOjI3IDIwMTAgKzAxMDAKCiAgICBmc2xfZXNkaGM6IGFkZCBzdXBwb3J0IGZvciBteDUxIHByb2Nlc3NvcgoKICAgIFRoZSBlc2RoYyBjb250cm9sbGVyIGluIHRoZSBteDUxIHByb2Nlc3NvciBpcyBxdWl0ZQogICAgdGhlIHNhbWUgYXMgdGhlIG9uZSBpbiBzb21lIHBvd2VycGMgcHJvY2Vzc29ycwogICAgKE1QQzgzeHgsIE1QQzg1eHgpLiBUaGlzIHBhdGNoZXMgYWRhcHRzIHRoZSBkcml2ZXIKICAgIHRvIHN1cHBvcnQgdGhlIGFybSBteDUxLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgoKY29tbWl0IDY5ZGYwMGY5ZDljMmY0NWI0NTc2ZDFlYWU3OWJmYWM4YmViYjg4MjEKQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KRGF0ZToJRnJpIEZlYiA1IDE1OjA3OjMzIDIwMTAgKzAxMDAKCiAgICBBUk06IGFkZCBhY2Nlc3NvcnMgZnVuY3Rpb25zCgogICAgU29tZSBGcmVlc2NhbGUncyBwcm9jZXNzb3JzIG9mIGRpZmZlcmVudCBhcmNoaXRlY3R1cmUKICAgIGhhdmUgdGhlIHNhbWUgcGVyaXBoZXJhbCAoZVNESEMgY29udHJvbGxlciBpbiBQb3dlclBDCiAgICBhbmQgaS5NWDUxKS4gVGhpcyBwYXRjaCBhZGRzIGFjY2Vzc29ycyBmb3IKICAgIHRoZSBpbnRlcm5hbCByZWdpc3RlcnMgb2YgdGhlIFNPQ3MsIGFzIGFscmVhZHkKICAgIGltcGxlbWVudGVkIGluIHRoZSBQb3dlclBDIGFyY2hpdGVjdHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KCmNvbW1pdCAxMWZkYWRlMjk0YjRkNjBjMTlhZTg2MTUxNWFhYmRkY2ExMjc4ZGViCkF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CUZyaSBGZWIgNSAxNTowNDo0MyAyMDEwICswMTAwCgogICAgTU1DOiBhZGQgd2VhayBmdW5jdGlvbiB0byBkZXRlY3QgTU1DL1NEIGNhcmQKCiAgICBNb3N0IGNvbnRyb2xsZXJzIGNhbiBjaGVjayBpZiB0aGVyZSBpcyBhIGNhcmQgaW4gdGhlIHNsb3QuCiAgICBIb3dldmVyLCB0aGV5IHJlcXVpcmUgcGlucyB0aGF0IGNvdWxkIGJlIG5vdCBhdmFpbGFibGUgYmVjYXVzZQogICAgcmVxdWlyZWQgYnkgb3RoZXIgZnVuY3Rpb25zIGFuZCB0aGUgZGV0ZWN0aW9uIG9mIGEgY2FyZCBtdXN0CiAgICBiZSBwZXJmb3JtZWQgaW4gYW5vdGhlciB3YXkuIFRoaXMgcGF0Y2ggYWRkcyBhIHdlYWsgZnVuY3Rpb24KICAgIHRoYXQgYSBib2FyZCBjYW4gaW1wbGVtZW50IHRvIGFkZCBpdHMgaW50ZXJuYWwgY3VzdG9tIHdheQogICAgdG8gY2hlY2sgdGhlIHByZXNlbmNlIG9mIGEgTU1DL1NEIGNhcmQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Cgpjb21taXQgMjUwZGUxMmJjMmY3ODQyODA3ZDI1ZTE2OTcxYzViZWE1OWMzYTRiMQpBdXRob3I6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgpEYXRlOglXZWQgSmFuIDIwIDE4OjIwOjM5IDIwMTAgKzAxMDAKCiAgICBtbWM6IGNoZWNrIGNvcnJlY3RuZXNzIG9mIHRoZSB2b2x0YWdlIG1hc2sgaW4gb2NyCgogICAgTW9zdCBjYXJkcyBkbyBub3QgYW5zd2VyIGlmIHNvbWUgcmVzZXJ2ZWQgYml0cwogICAgaW4gdGhlIG9jciBhcmUgc2V0LiBIb3dldmVyLCBzb21lIGNvbnRyb2xsZXJzCiAgICBjYW4gc2V0IGJpdCA3IChyZXNlcnZlZCBmb3IgbG93IHZvbHRhZ2VzKSwgYnV0CiAgICBob3cgdG8gbWFuYWdlIGxvdyB2b2x0YWdlcyBTRCBjYXJkIGlzIG5vdCB5ZXQKICAgIHNwZWNpZmllZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KCmNvbW1pdCA3MWQ2NGMwZTRmYTU5MTBjMTVlY2ExNzVhOGYzYjBlMWMxZDY3MTFjCkF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CVdlZCBKYW4gMjAgMTg6MjA6MTkgMjAxMCArMDEwMAoKICAgIHNlcmlhbF9teGM6IGFkZCBzdXBwb3J0IGZvciBNWDUxIHByb2Nlc3NvcgoKICAgIFRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBGcmVlc2NhbGUgbXg1MSBwcm9jZXNzb3IuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBGcmVkIEZhbiA8ZmFueWVmZW5nQGdtYWlsLmNvbT4KCmNvbW1pdCA2N2FkY2VlMGUwOTFmMDkzNWU3ZGQ3MjI0MDRkMmE4NjRjZGVjYmU3CkF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CVdlZCBKYW4gMjAgMTg6MjA6MDQgMjAxMCArMDEwMAoKICAgIE1YNTE6IEFkZCBwaW4gYW5kIG11bHRpcGxleGVyIGRlZmluaXRpb25zLgoKICAgIFRoZSBwYXRjaCBhZGQgaGVhZGVyIGZpbGVzIHRvIHN1cHBvcnQgdGhlIHBpbiBtdWx0aXBsZXhlcgogICAgb2YgdGhlIHRoZSBGcmVlc2NhbGUgaS5NWDUxIHByb2Nlc3Nvci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEZyZWQgRmFuIDxmYW55ZWZlbmdAZ21haWwuY29tPgoKY29tbWl0IGZiODdhMWVkOTIwNWJmNWY4NDNlMWYyNjQxOThjZTk0NjYwMmRlZGEKQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KRGF0ZToJV2VkIEphbiAyMCAxODoxOTo1MSAyMDEwICswMTAwCgogICAgTVg1MTogQWRkIHJlZ2lzdGVyIGRlZmluaXRpb25zCgogICAgVGhlIHBhdGNoIGFkZCBoZWFkZXIgZmlsZXMgdG8gc3VwcG9ydCB0aGUgRnJlZXNjYWxlIGkuTVg1MQogICAgcHJvY2Vzc29yLCBzZXR0aW5nIGRlZmluaXRpb25zIGZvciBpbnRlcm5hbCByZWdpc3RlcnMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBGcmVkIEZhbiA8ZmFueWVmZW5nQGdtYWlsLmNvbT4KCmNvbW1pdCA2NGZkZjQ1MmE4NTcxODkzNWQ4MjQxNmQxNDFiZTE0NGIyNjJjNTQyCkF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CVdlZCBKYW4gMjAgMTg6MTk6MzIgMjAxMCArMDEwMAoKICAgIE1YNTE6IEFkZCBpbml0aWFsIHN1cHBvcnQgZm9yIHRoZSBGcmVlc2NhbGUgTVg1MQoKICAgIFRoZSBwYXRjaCBhZGQgaW5pdGlhbCBzdXBwb3J0IGZvciB0aGUgRnJlZXNjYWxlIGkuTVg1MSBwcm9jZXNzb3IKICAgIChmYW1pbHkgYXJtIGNvcnRleF9hOCkuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBGcmVkIEZhbiA8ZmFueWVmZW5nQGdtYWlsLmNvbT4KCmNvbW1pdCAxOGJhMDEyYjliOTE5YTdjMjY0ZGM2Mjk5Zjk1NGQ3ZjUzZDA2NjA1CkF1dGhvcjogTWF0dGhpYXMgS2FlaGxja2UgPG1hdHRoaWFzQGthZWhsY2tlLm5ldD4KRGF0ZToJV2VkIEZlYiAyNCAxOTo0NTozOSAyMDEwICswMTAwCgogICAgZWRiOTN4eDogRml4IFNEUkFNIGluaXRpYWxpemF0aW9uCgogICAgZWRiOTN4eDogRml4IFNEUkFNIGluaXRpYWxpemF0aW9uIGJ5IGlzc3VpbmcgYSBwcmVjaGFyZ2UgYWxsIGNvbW1hbmQgYmVmb3JlCiAgICBmb3JjaW5nIHRoZSBwcmVjaGFyZ2UgYW5kIHNlbGVjdCBtb2RlIHJlZ2lzdGVyIHVwZGF0ZSBtb2RlIGJlZm9yZSBwcm9ncmFtbWluZwogICAgdGhlIG1vZGUgcmVnaXN0ZXJzLiBXcml0ZSB0byB0aGUgU0RSQU0gYmFua3MgaW4gb3JkZXIgdG8gZm9yY2UgYSBwcmVjaGFyZ2UsCiAgICByZWFkaW5nIGNhdXNlcyB0aGUgZWRiOTN4eCBib2FyZHMgdG8gaGFuZwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEthZWhsY2tlIDxtYXR0aGlhc0BrYWVobGNrZS5uZXQ+Cgpjb21taXQgY2FkZTdkOTU3N2Q0ZDE3ZjU1NDA0YjVlNjBjZDVlNWIwYjYwNWMzMQpBdXRob3I6IEFuZGVycyBEYXJhbmRlciA8YW5kZXJzLmRhcmFuZGVyQGdtYWlsLmNvbT4KRGF0ZToJVGh1IEZlYiAyNSAxNTo1NzowMyAyMDEwICswMTAwCgogICAgQWRkIGJvb3Rjb3VudCB0byBBVDkxCgogICAgVXNlIEFUOTFfR1BCUiAzIGFzIGEgYm9vdGNvdW50IHJlZ2lzdGVyLgogICAgVGhlIGJvb3RtYWdpYyBhbmQgdGhlIGJvb3Rjb3VudCBzaGFyZXMgQVQ5MV9HUEJSIDMuCgogICAgU2lnbmVkLW9mZi1ieTogQW5kZXJzIERhcmFuZGVyIDxhZEBkYXRhcmVzcG9ucy5zZT4KCmNvbW1pdCA1ZjM1MzQ4NDA5Mzg3NmQ3MDIxZjIwZmE0YmQ2M2Y4MmQzMjk0MWI5CkF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgpEYXRlOglUaHUgRmViIDI1IDEyOjA1OjMyIDIwMTAgLTA2MDAKCiAgICBBUk0gVXBkYXRlIG1hY2gtdHlwZXMKCiAgICBGZXRjaGVkIGZyb20gaHR0cDovL3d3dy5hcm0ubGludXgub3JnLnVrL2RldmVsb3Blci9tYWNoaW5lcy9kb3dubG9hZC5waHAKICAgIEFuZCBidWlsdCB3aXRoCgogICAgcmVwbyBodHRwOi8vZnRwLmFybS5saW51eC5vcmcudWsvcHViL2xpbnV4L2FybS9rZXJuZWwvZ2l0LWN1ci9saW51eC0yLjYtYXJtCiAgICBjb21taXQgYWVhMTg3YzQ2ZjdkMDNjZTk4NWU1NWViMTM5OGQwNzc2YTE1YjkyOAoKICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KCmNvbW1pdCBjN2FkMTNhMjQyOTVkZWQ4ODBkN2JjZDE3MTgxZGY0YTVmM2JhYzU4CkF1dGhvcjogTWF0dGhpYXMgS2FlaGxja2UgPG1hdHRoaWFzQGthZWhsY2tlLm5ldD4KRGF0ZToJV2VkIEZlYiAyNCAwMDoyMjowOSAyMDEwICswMTAwCgogICAgZXA5M3h4OiBSZWZhY3RvcmluZyBvZiB0aW1lciBjb2RlCgogICAgZXA5M3h4OiBSZWZhY3RvcmluZyBvZiB0aGUgdGltZXIgY29kZSwgaW5jbHVkaW5nIHRoZSBmb2xsb3dpbmcgY2hhbmdlcwoKICAgICAqIHVzZSBhIGZyZWUgcnVubmluZyB0aW1lciBpbnN0ZWFkIG9mIGEgcGVyaW9kaWNhbCBvbmUKICAgICAqIHVzZSB1bnNpZ25lZCBsb25nIGxvbmcgZm9yIHRvdGFsIG51bWJlciBvZiB0aWNrcwogICAgICogaG9sZCB0aGUgdGltZXIgc3RhdGUgaW4gYSBzdHJ1Y3R1cmUgaW5zdGVhZCBvZiBzZXBhcmF0ZSB2YXJpYWJsZXMKICAgICAqIGluY3JlbWVudCB0aGUgdGltZXIgY291bnRlciBpbnN0ZWFkIG9mIGRlY3JlbWVudGluZyBpdAogICAgICogcmVtb3ZlIHVudXNlZCBmdW5jdGlvbiB1ZGVsYXlfbWFza2VkKCkKICAgICAqIHJlbW92ZSB1bnVzZWQgZnVuY3Rpb24gc2V0X3RpbWVyKCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgoKY29tbWl0IGQ5ZjUwNWUzY2RkYmI3YWZjZTI2ZGNmZTBmZDE5YjIwN2VlNTdjMDkKQXV0aG9yOiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgpEYXRlOglXZWQgRmViIDI0IDAwOjIyOjAwIDIwMTAgKzAxMDAKCiAgICBlcDkzeHg6IEZpeCBjYWxjdWxhdGlvbiBvZiBzeXMgdGlja3MgaW4gY2xrX3RvX3N5c3RpY2tzKCkKCiAgICBlcDkzeHg6IFVzZSB1bnNpZ25lZCBsb25nIGxvbmcgZm9yIGNhbGN1bGF0aW9uIG9mIHN5cyB0aWNrcyBpbiBjbGtfdG9fc3lzdGlja3MoKQogICAgZm9yIHByb3BlciBoYW5kbGluZyBvZiBsYXJnZSBpbnRlcm1lZGlhdGUgdmFsdWVzCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgS2FlaGxja2UgPG1hdHRoaWFzQGthZWhsY2tlLm5ldD4KCmNvbW1pdCAwNDFkNDJlNzg5YWJhMjAyOTZmZmNkZTkyMTczZjEwMGE5NTkyODgwCkF1dGhvcjogU2lhcmhlaSBTaWFtYXNoa2EgPHNpYXJoZWkuc2lhbWFzaGthQGdtYWlsLmNvbT4KRGF0ZToJVHVlIEZlYiAyMyAyMzo1NjozNiAyMDEwIC0wNTAwCgogICAgT01BUDM6IHdvcmthcm91bmQgZm9yIEFSTSBDb3J0ZXgtQTggZXJyYXR1bSA3MjUyMzMKCiAgICA3MjUyMzM6IFBMRCBpbnN0cnVjdGlvbnMgZXhlY3V0ZWQgd2l0aCBQTEQgZGF0YSBmb3J3YXJkaW5nCiAgICBlbmFibGVkIGNhbiByZXN1bHQgaW4gYSBwcm9jZXNzb3IgZGVhZGxvY2sKCiAgICBUaGlzIGRlYWRsb2NrIGNhbiBoYXBwZW4gd2hlbiBORU9OIGxvYWQgaW5zdHJ1Y3Rpb25zIGFyZSB1c2VkIHRvZ2V0aGVyCiAgICB3aXRoIGNhY2hlIHByZWxvYWQgaW5zdHJ1Y3Rpb25zIChQTEQpLiBUaGUgcHJvYmxlbWF0aWMgY29uZGl0aW9ucwogICAgY2FuIGJlIHRyaWdnZXJlZCBpbi10aGUtd2lsZCBieSBORU9OIG9wdGltaXplZCBmdW5jdGlvbnMgZnJvbSBwaXhtYW4KICAgIGxpYnJhcnkgKGh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9waXhtYW4pLCB3aGljaCBwZXJmb3JtIGR5bmFtaWMKICAgIGFkanVzdG1lbnQgb2YgcHJlZmV0Y2ggZGlzdGFuY2UuCgogICAgVGhlIHdvcmthcm91bmQgZGlzYWJsZXMgUExEIGRhdGEgZm9yd2FyZGluZyBieSBzZXR0aW5nIFBMRF9GV0QgYml0CiAgICBpbiBMMiBDYWNoZSBBdXhpbGlhcnkgQ29udHJvbCBSZWdpc3RlciBhcyByZWNvbW1lbmRlZCBpbiBBUk0gQ29ydGV4LUE4CiAgICBlcnJhdGEgbGlzdC4KCiAgICBUaGUgZGVhZGxvY2sgY2FuIG9ubHkgaGFwcGVuIG9uIHIxcFggcmV2aXNpb25zIG9mIENvcnRleC1BOCAodXNlZCBpbgogICAgT01BUDM0eHgvT01BUDM1eHgpLiBQZXJmb3JtYW5jZSBpbXBhY3Qgb2YgdGhlIHdvcmthcm91bmQgaXMgcHJhY3RpY2FsbHkKICAgIG5vbi1leGlzdGFudC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaWFyaGVpIFNpYW1hc2hrYSA8c2lhcmhlaS5zaWFtYXNoa2FAZ21haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgoKY29tbWl0IDdjOTY2YThiZGZkYWI4MGNhZmJmZWQwMzVkN2FlNmVhNmY1OGY3NTYKQXV0aG9yOiBBY2hpbSBFaHJsaWNoIDxhZWhybGljaEB0YXNraXQuZGU+CkRhdGU6CVdlZCBGZWIgMjQgMTA6Mjk6MTYgMjAxMCArMDEwMAoKICAgIEFSTSBjaGFuZ2UgbmFtZSBvZiBkZWZpbmVzIGZvciBBVDkxIGFybTkyNmVqcwoKICAgIENvbmZpZ3VyYXRpb24gZGVmaW5lcyBzaG91bGQgYmUgcHJlY2VlZGVkIHdpdGggQ09ORklHX1NZU18uIFJlbmFtZWQKICAgIHNvbWUgYXQ5MSBzcGVjaWZpYyBkZWZpbmVzIHRvIGNvbmZvcm0gdG8gdGhpcyBuYW1pbmcgY29udmVudGlvbjoKCiAgICBBVDkxX0NQVV9OQU1FIHRvIENPTkZJR19TWVNfQVQ5MV9DUFVfTkFNRQogICAgQVQ5MV9NQUlOX0NMT0NLIHRvIENPTkZJR19TWVNfQVQ5MV9NQUlOX0NMT0NLCgogICAgU2lnbmVkLW9mZi1ieTogQWNoaW0gRWhybGljaCA8YWVocmxpY2hAdGFza2l0LmRlPgoKY29tbWl0IDVjOTdhMWRlMTk2ZmRjYmU5ZDA5ODk0OGVjZjRmY2NmYmVhMjNiNzgKQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8TGFkaXNsYXYuTWljaGxAc2V6bmFtLmN6PgpEYXRlOglXZWQgRmViIDE3IDIxOjI5OjQ1IDIwMTAgLTA1MDAKCiAgICBWb2ljZUJsdWU6IGZpeCBsaW5rZXIgZXJyb3JzCgogICAgbGlua2luZyBlZXByb20gd2l0aCBsaWJnZW5lcmljLmEgaXMgbm90IHJlYWxseSBuZWVkZWQgYW5kIGNhdXNlcyBmb2xsb3dpbmcKICAgIGVycm9yOgogICAgLi4vLi4vbGliX2dlbmVyaWMvbGliZ2VuZXJpYy5hKHN0cmluZy5vKTogSW4gZnVuY3Rpb24gYHN0cmNtcCc6CiAgICAvaG9tZS9sYWRpcy9zcmMvdS1ib290LXRpL2xpYl9nZW5lcmljL3N0cmluZy5jOjE1MjogbXVsdGlwbGUgZGVmaW5pdGlvbiBvZiBgc3RyY21wJwogICAgLi4vLi4vZXhhbXBsZXMvc3RhbmRhbG9uZS9saWJzdHVicy5hKHN0dWJzLm8pOmluY2x1ZGUvX2V4cG9ydHMuaDoyNDogZmlyc3QgZGVmaW5lZCBoZXJlCiAgICBtYWtlWzFdOiAqKiogW2VlcHJvbS5zcmVjXSBFcnJvciAxCgogICAgRml4IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gbWVtc2V0IGdlbmVyYXRlZCBieSBzb21lIHZlcnNpb25zIG9mIGdjYwogICAgdG8gemVybyBvdXQgaW5pdGlhbGl6ZWQgc3RydWN0dXJlIG9uIHRoZSBzdGFjazoKICAgIGVlcHJvbS5vOiBJbiBmdW5jdGlvbiBgZWVwcm9tJzoKICAgIGJvYXJkL3ZvaWNlYmx1ZS9lZXByb20uYzoxNTI6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYG1lbXNldCcKICAgIG1ha2VbMV06ICoqKiBbZWVwcm9tXSBFcnJvciAxCgogICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgoKY29tbWl0IGEzMmMxZTBlY2Q1NjNjNjVjNjE3YjBlYjkwODBhMTBkMjg2YmIwYjQKQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8TGFkaXNsYXYuTWljaGxAc2V6bmFtLmN6PgpEYXRlOglXZWQgRmViIDE3IDIxOjI5OjM5IDIwMTAgLTA1MDAKCiAgICBWb2ljZUJsdWU6IGxpbWl0IGxpbmUgbGVuZ2h0IHRvIDgwIGNoYXJhY3RlcnMKCiAgICBSZWluZGVudCBjb25maWd1cmF0aW9uIGhlYWRlciB0byBsaW1pdCBsaW5lIGxlbmdodCB0byA4MCBjaGFyYWN0ZXJzIGJ5CiAgICByZW1vdmluZyBvYnZpb3VzIGFuZCBzb21ldGltZXMgbWlzbGVhZGluZyBjb21tZW50cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Cgpjb21taXQgNzc5YjUzNDM4NWFkZjBhMWVmZGQ4YjQwZGJhY2FlMTE1OTg1NzViOApBdXRob3I6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KRGF0ZToJV2VkIEZlYiAxNyAyMToxMzo1MyAyMDEwIC0wNTAwCgogICAgbmV0c3Rhci5oOiBkbyBub3QgZXhjZWVkIDgwIGNvbHVtbnMKCiAgICBMaW1pdCBsaW5lIGxlbmd0aCB0byA4MCBjaGFyYWN0ZXJzIG1vc3RseSBieSByZW1vdmluZyBvYnZpb3VzIGFuZCBzb21ldGltZXMKICAgIG1pc2xlYWRpbmcgY29tbWVudHMuIEZpeCBpbmRlbnRhdGlvbiwgdG9vLgoKICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KCmNvbW1pdCAzZmNhMjkyOTRhYmQ3MzkxNWRlMmJkMGZjZjI2NTBlMDNjYzliZWNjCkF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgpEYXRlOglXZWQgRmViIDE3IDIxOjA5OjIxIDIwMTAgLTA1MDAKCiAgICBEYVZpbmNpOiBBZGRpbmcgZW50cnkgdG8gTUFLRUFMTCBmb3IgRE0zNjUgRVZNCgogICAgVGhlIHBhdGNoIGFkZHMgYW4gZW50cnkgZm9yIHRoZSBETTM2NSBFVk0gdG8gTUFLRUFMTAoKICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KCmNvbW1pdCAzN2NmZmRhZDA2YWY1YTQ1MzhkZDA5MDc5NGYyMTMyOTIxMzVhZGJjCkF1dGhvcjogTmljayBUaG9tcHNvbiA8bmljay50aG9tcHNvbkBnZS5jb20+CkRhdGU6CVdlZCBGZWIgMTcgMjA6Mzc6MjQgMjAxMCAtMDUwMAoKICAgIGRhODMwZXZtOiBBZGQgc3VwcG9ydCBmb3IgVEkgRU1BQwoKICAgIEFkZHMgc3VwcG9ydCBmb3IgZXRoZXJuZXQgbmV0d29ya2luZyBvbiB0aGUgZGE4MzBldm0gcGxhdGZvcm0uCgogICAgVGhpcyBwbGF0Zm9ybSB1c2VzIGFuIFNvQyBFTUFDIGludGVyZmFjZSBhbmQgYSAzIHBvcnQgZXRoZXJuZXQKICAgIHN3aXRjaCBhcyBhIFBIWSB3aXRoIGFuIFJNSUkgaW50ZXJmYWNlLiBUaGUgUEhZIGFsc28gaGFzIGEgaTJjCiAgICBpbnRlcmZhY2UgZm9yIGNvbmZpZ3VyaW5nIHRoZSBzd2l0Y2ggZnVuY3Rpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pY2sgVGhvbXBzb24gPG5pY2sudGhvbXBzb25AZ2UuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgoKY29tbWl0IGQ4Nzc1ZDAzZjNmMDExNjI0MWNmYjQ1YzdlZjI3ZmQwODA5MDRjNGEKQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8TGFkaXNsYXYuTWljaGxAc2V6bmFtLmN6PgpEYXRlOglNb24gRmViIDggMTQ6MTk6MDYgMjAxMCAtMDUwMAoKICAgIE5ldFN0YXI6IG1ha2UgbXRkcGFydHMgZGVmYXVsdCByZWFkeSBmb3IgcmVjZW50IGtlcm5lbHMKCiAgICBSZWNlbnQga2VybmVscyBhcmUgdXNpbmcgZ2VuZXJpYyBOQU5EIGFuZCBOT1IgZHJpdmVycy4gQ2hhbmdlCiAgICBkZWZhdWx0IG10ZHBhcnRzIHRvIHJlZmxlY3QgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgoKY29tbWl0IGRlOWExZTBkMDgzMDFlYTQ5MjVlZTEzN2FmMjQwNDI0YjEwN2E2MDgKQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8TGFkaXNsYXYuTWljaGxAc2V6bmFtLmN6PgpEYXRlOglNb24gRmViIDggMTQ6MTc6NDUgMjAxMCAtMDUwMAoKICAgIE5ldFN0YXI6IGZpeCBkZWZhdWx0IGVudmlyb25tZW50CgogICAgQ29ycmVjdCBzd2l0Y2hpbmcgcGFydGl0aW9ucyBhZnRlciB1cGdyYWRlIGFuZCBtYWtlIGl0IG1vcmUgcmVhZGFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgoKY29tbWl0IDNhNjc1NjZjMWRlZjdkMmViOTM1YjMxYjNiMjgyYmE4OTNjM2YzMzAKQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8TGFkaXNsYXYuTWljaGxAc2V6bmFtLmN6PgpEYXRlOglNb24gRmViIDggMTQ6MTU6NDcgMjAxMCAtMDUwMAoKICAgIE5ldFN0YXI6IGVlcHJvbSAtIGZpeCBsaW5rZXIgZXJyb3IKCiAgICBsaW5raW5nIGVlcHJvbSB3aXRoIGxpYmdlbmVyaWMuYSBpcyBub3QgcmVhbGx5IG5lZWRlZCBhbmQgY2F1c2VzIGZvbGxvd2luZwogICAgZXJyb3I6CiAgICAuLi8uLi9saWJfZ2VuZXJpYy9saWJnZW5lcmljLmEoc3RyaW5nLm8pOiBJbiBmdW5jdGlvbiBgc3RyY21wJzoKICAgIGxpYl9nZW5lcmljL3N0cmluZy5jOjE1MjogbXVsdGlwbGUgZGVmaW5pdGlvbiBvZiBgc3RyY21wJwogICAgLi4vLi4vZXhhbXBsZXMvc3RhbmRhbG9uZS9saWJzdHVicy5hKHN0dWJzLm8pOmluY2x1ZGUvX2V4cG9ydHMuaDoyNDogZmlyc3QgZGVmaW5lZCBoZXJlCiAgICBSZW1vdmUgZWVwcm9tIGxpbmtlciBzY3JpcHQgYXMgd2VsbCBhbmQgZ2VuZXJhdGUgZW50cnkgcG9pbnQgb2JqZWN0CiAgICAodG8gc3RhcnQgYXBwbGljYXRpb24gYnkganVtcGluZyBvbiBpdHMgYmVnaW5uaW5nKSBvbiB0aGUgZmx5LgogICAgT3V0LW9mLXRyZWUgYnVpbGQgdGVzdGVkIGFzIHdlbGwuCgogICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgoKY29tbWl0IDMwOGQ0NjNlYWY2ZjRhZGEwMDE5MzMwNmE2ZTY0MzI5OGQxOTkwZDgKQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8TGFkaXNsYXYuTWljaGxAc2V6bmFtLmN6PgpEYXRlOglNb24gRmViIDggMTQ6MTU6NDMgMjAxMCAtMDUwMAoKICAgIE5ldFN0YXI6IGVlcHJvbSAtIGJlIGxlc3MgdmVyYm9zZQoKICAgIFVzZSBzaG9ydGVyIHlldCBkZXNjcmlwdGl2ZSBtZXNzYWdlcywgcmVwbGFjZSBwcmludGYoKSB3aXRoCiAgICBwdXRzKCkgd2hlcmUgYXBwcm9wcmlhdGUuIFRoaXMgc2F2ZXMgZmV3IGJ5dGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KCmNvbW1pdCBiMjlmZjYyNzcyMzlmNWM4YmM5MzY2ZTc0YWZhYzVhMzZhYjNiMjNlCkF1dGhvcjogTGFkaXNsYXYgTWljaGwgPExhZGlzbGF2Lk1pY2hsQHNlem5hbS5jej4KRGF0ZToJTW9uIEZlYiA4IDE0OjE1OjE1IDIwMTAgLTA1MDAKCiAgICBOZXRTdGFyOiBlZXByb20gLSB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBtZW1zZXQnCgogICAgRGVmaW5pbmcgcGFydGlhbGx5IGluaXRpYWxpemVkIHN0cnVjdCBldGhfZGV2aWNlIG9uIHN0YWNrIG1lYW5zCiAgICBnY2MgaGFzIHRvIHplcm8gb3V0IGl0LCBhbmQgc29tZSBnY2MgdmVyc2lvbnMgb3B0aW1pemUgdGhpcyB3aXRoCiAgICBhbiBpbXBsaWNpdCBjYWxsIHRvIG1lbXNldC4gTW92ZSBkZWZpbml0aW9uIHRvIGRhdGEgc2VjdGlvbgogICAgdG8gYXZvaWQgdGhhdCAoaXQgaGFzIGFsc28gbmljZSBzaWRlIGVmZmVjdCB0aGF0IHdlIG5lZWQgbm90CiAgICB0byBwYXNzIGl0IHRvIGhlbHBlciBmdW5jdGlvbnMgYW55bW9yZSkKCiAgICBTaWduZWQtb2ZmLWJ5OiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Cgpjb21taXQgOGY5YTIyMTA0NWE0YWNlMTRmZTAwNmUxMzUzYzU5MzYxOWQxMDAxYQpBdXRob3I6IFdvbGZnYW5nIFdlZ25lciA8dy53ZWduZXJAYXN0cm8ta29tLmRlPgpEYXRlOglUdWUgTWFyIDIgMTA6NTk6MTkgMjAxMCArMDEwMAoKICAgIF0gZml4IG1vbml0b3IgcHJvdGVjdGlvbiBmb3IgQ09ORklHX01PTklUT1JfSVNfSU5fUkFNCgogICAgRm9yIHBsYXRmb3JtcyB3aXRoIGZsYXNoIGJlbG93IHJhbSBhZGRyZXNzZXMsIHRoZSBjdXJyZW50IGNoZWNrIHRvCiAgICBhY3RpdmF0ZSBtb25pdG9yIHByb3RlY3Rpb24gaXMgd3JvbmcvaW5zdWZmaWNpZW50LiBUaGlzIHBhdGNoIGZpeGVzCiAgICBDT05GSUdfTU9OSVRPUl9JU19JTl9SQU0gZm9yIHRoZXNlIHN5c3RlbXMgYnkgYWRkaW5nIGEgY2hlY2sgZm9yCiAgICB0aGlzIGNvbmZpZ3VyYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgV2VnbmVyIDx3LndlZ25lckBhc3Ryby1rb20uZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYzdkZTgxMGM3OWEwMGFhNmZjMDg5MDBlZTBiYjU3YmQyOTVkYjczMwpBdXRob3I6IFdvbGZnYW5nIFdlZ25lciA8dy53ZWduZXJAYXN0cm8ta29tLmRlPgpEYXRlOglUdWUgTWFyIDIgMTA6NTk6MjAgMjAxMCArMDEwMAoKICAgIGFsbG93IE1DRjUzMnggdG8gdXNlIENPTkZJR19NT05JVE9SX0lTX0lOX1JBTQoKICAgIENPTkZJR19NT05JVE9SX0lTX0lOX1JBTSBpcyBicm9rZW4gZm9yIE1DRjUzMnguIFRoaXMgcGF0Y2ggZml4ZXMgdGhpcwogICAgIGJ5IGNvbmRpdGlvbmFsbHkKICAgIC0gcmVtb3ZpbmcgdGhlIHZlY3RvciB0YWJsZSBhdCB0aGUgYmVnaW5uaW5nIG9mIGNvZGUKICAgIC0gbm90IG92ZXJ3cml0aW5nIHRoZSB2ZWN0b3IgYmFzZSByZWdpc3RlcgogICAgLSByZW1vdmluZyB0aGUgY29kZSB0byByZS1zZXQgdGhlIFBMTCwgd2hpY2ggZWZmZWN0aXZlbHkgZGlzYWJsZXMKICAgICAgU0RSQU0gYWNjZXNzCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgV2VnbmVyIDx3LndlZ25lckBhc3Ryby1rb20uZGU+Cgpjb21taXQgYmI5MDdhYjUxZmQwNDI1NTkyM2I3ZWNmOWRhYjM1MjA3ODgwODM1MQpBdXRob3I6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuIGF0IFJ1Z2dlZENvbS5jb20+CkRhdGU6CU1vbiBPY3QgMjYgMTQ6MTk6MTcgMjAwOSAtMDQwMAoKICAgIE1DRjUyNzEtb25seTogQWRkZWQgYSB3ZWFrIGJvYXJkX3Jlc2V0IGZ1bmN0aW9uIHRvIGFsbG93IGN1c3RvbSByZXNldAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBhIGJvYXJkX3Jlc2V0IGZ1bmN0aW9uIHRvIGFsbG93IGJvYXJkcyB0byBzcGVjaWZ5CiAgICB0aGVpciBvd24gY3VzdG9tIHJlc2V0IHNlcXVlbmNlIChlLmcuIHJlc2V0dGluZyBieSB0aW1pbmcgb3V0IHdhdGNoZG9nKS4KICAgIFRlc3RlZCBvbmx5IG9uIE1DRjUyNzEsIGNhbiBiZSBleHBhbmRlZCBpZiBuZWVkZWQuCgogICAgQmFzZWQgb24gTWlrZSBGcnlzaW5nZXIncyBzdWdnZXN0aW9uIG9uOgogICAgaHR0cDovL2FydGljbGUuZ21hbmUub3JnL2dtYW5lLmNvbXAuYm9vdC1sb2FkZXJzLnUtYm9vdC83MDMwNAoKICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuIGF0IFJ1Z2dlZENvbS5jb20+Cgpjb21taXQgOTkyZDcxMjk1MDBkMjM5ZDY4NGMxNWZhMmQ2MWUwYThmMmU2NDQ1NwpBdXRob3I6IFdvbGZnYW5nIFdlZ25lciA8dy53ZWduZXJAYXN0cm8ta29tLmRlPgpEYXRlOglXZWQgT2N0IDI4IDE1OjExOjAwIDIwMDkgLTA1MDAKCiAgICBNQ0Y1MzJ4OiBtYWtlIGljYWNoZV9lbmFibGUgdXNlIENPTkZJR19TWVNfU0RSQU1fU0laRQoKICAgIGluIGNwdS9tY2Y1MzJ4L3N0YXJ0LlMsIHRoZSBmdW5jdGlvbiBpY2FjaGVfZW5hYmxlIGVuYWJsZXMgdGhlIGNhY2hlIGZvcgogICAgYSBmaXhlZCAzMk1CIHJlZ2lvbiBzdGFydGluZyBhdCB0aGUgU0RSQU0gc3RhcnQgYWRkcmVzczsgdGhpcyBwYXRjaAogICAgY2hhbmdlcyB0aGUgZnVuY3Rpb24gdG8gY292ZXIgdGhlIHJlZ2lvbiBkZWZpbmVkIGJ5IENPTkZJR19TWVNfU0RSQU1fU0laRQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIFdlZ25lciA8dy53ZWduZXIgYXQgYXN0cm8ta29tLmRlPgoKY29tbWl0IDg3MGJmM2VlNjAzMjBiNThmODk3MGZmZTNkZGViZGEwZThhYzYyZjcKQXV0aG9yOiBXb2xmZ2FuZyBXZWduZXIgPHcud2VnbmVyQGFzdHJvLWtvbS5kZT4KRGF0ZToJV2VkIERlYyA5IDE3OjMyOjEyIDIwMDkgLTA1MDAKCiAgICBhZGQgaW5jbHVkZS9hc20tbTY4ay91bmFsaWduZWQuaAoKICAgIGxpYl9nZW5lcmljL3psaWIuYyBuZWVkcyBpbmNsdWRlL2FzbS91bmFsaWduZWQuaCBzaW5jZSBjb21taXQKICAgIGNkNTE0YWViOTk2ZTJmN2FlZmJlMWY3ODQ4MTk2NWQ5ZDA3NGFlZDQsIHdoaWNoIGJyb2tlIGNvbXBpbGF0aW9uIGZvcgogICAgQ29sZGZpcmUvTTY4Sy4gVGhpcyBwYXRjaCBhZGRzIHRoZSBtaXNzaW5nIGhlYWRlciBmb3IgdGhlc2UKICAgIGFyY2hpdGVjdHVyZXMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgV2VnbmVyIDx3LndlZ25lciBhdCBhc3Ryby1rb20uZGU+Cgpjb21taXQgZGE1ZTA4MzU5MGJiNjJjYTZkN2YwOGQzNzE0ZDA3YmE3MzZkYTg2MwpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJTW9uIEZlYiA4IDExOjUwOjE2IDIwMTAgKzA5MDAKCiAgICBzaDogQWRkIGFzbS91bmFsaWduZWQuaCBhbmQgYXNtL3VuYWxpZ25lZC1zaDRhLmggZnJvbSBMaW51eCBrZXJuZWwKCiAgICB6bGliLmMgZGVtYW5kcyBhc20vdW5hbGlnbmVkLmguIEJ1dCwgU0ggZG9lcyBub3QgaGF2ZSB0aGVzZS4KICAgIFRoaXMgY29tbWl0IGFkZCBhc20vdW5hbGlnbmVkLmggYW5kIGFzbS91bmFsaWduZWQtc2g0YS5oIGZyb20gTGludXgKICAgIGtlcm5lbCBhbmQgbW9kaWZ5ZiBmb3IgdS1ib290LgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBmZTM4OWRhNmFlNzM5ODE2ODc5NjA2ZWNkZTRhYjI1ZjQyOTIzNzdkCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIE1hciAxIDExOjEwOjE3IDIwMTAgLTA2MDAKCiAgICBtcGM4M3h4OiBmaXggb3V0LW9mLXRyZWUgbXBjODMxNSBuYW5kIGJ1aWxkCgogICAgY29tbWl0IDJlOTUwMDRkZWI2ZTMzZTMzYmYxYjhhOTJhMzhjZDIxMTViYWM0YzIgIm1wYzgzeHg6IEFkZCBOQU5EIGJvb3Qgc3VwcG9ydAogICAgZm9yIE1QQzgzMTVFLVJEQiBib2FyZHMiIHN5bWxpbmtlZCBuYW5kX3NwbC9ib2FyZC9mcmVlc2NhbGUvbXBjODMxNWVyZGIgdG8KICAgIG1wYzgzMTNlcmRiIGluIG9yZGVyIHRvIG5vdCBkdXBsaWNhdGUgY29kZS4KCiAgICBTaW5jZSB0aGUgbWFpbiBtYWtlZmlsZSBidWlsZHMgbmFuZF9zcGwvYm9hcmQvJChCT0FSRERJUikgKHdoaWNoIG1ha2VzIHNlbnNlKSwKICAgIGFuZCB0aGUgYm9hcmQgTWFrZWZpbGUgYW5kIGxpbmtlciBzY3JpcHQgYXJlIHRoZSBvbmx5IHR3byBuZWNlc3NhcnkgZmlsZXMKICAgIHRvIGVuYWJsZSBvdXQtb2YtdHJlZSBidWlsZGluZywgYW5kIG90aGVyIGJvYXJkcyBoYXZlIGR1cGxpY2F0ZWQgbmFuZCBtYWtlZmlsZXMKICAgIChlLmcuIDg1MzZkcyAmIDg1NjltZHMpLCBpdCBvbmx5IHNlZW1zIHBydWRlbnQgdG8gY29weSB0aGVzZSB0d28gZmlsZXMgaW4gdGhlCiAgICBuYW1lIG9mIHRoZSA4MzE1IHRvby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgogICAgQ2M6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgQ2M6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNGU3ZTEyZGZhMTAzY2I4ZWM2ZGM3NTQ3ZGQxYzk5NzYzMzdkYzFmZApBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBGZWIgMjIgMTk6Mzk6MTYgMjAxMCAtMDYwMAoKICAgIG1wYzgzeHg6IHZtZTgzNDk6IGZpeCBpbmNvcnJlY3QgQlIwX1BSRUxJTSBwb3J0IHNpemUgY29tbWVudAoKICAgIGNvbW1pdCA5OGQ5MmQ4YzlmNDAyMTYyOWE0NTI2MWFkNWVjM2YzNTk1ZjNhMjdhICJzYmM4MzQ5OiBmaXggaW5jb3JyZWN0CiAgICBjb21tZW50IiBtaXNzZWQgdGhpcyBvbmUuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4NzgwMGY3MjQxNGI4MzA3NTZhZWZjNzU3ZGQxOTE2ODhmZWJhY2Y5CkF1dGhvcjogRXVnZW5lIE8nQnJpZW4gPGV1Z2VuZS5nLm9icmllbkBnbWFpbC5jb20+CkRhdGU6CVdlZCBGZWIgMjQgMTQ6MTA6MjQgMjAxMCAtMDUwMAoKICAgIHBwYzR4eDogQ29ycmVjdGVkIEVCQyByZWdpc3RlciBiaXQgZGVmaW5pdGlvbnMKCiAgICBDb3JyZWN0ZWQgdGhlIGJpdCBmaWVsZCBwb3NpdGlvbnMgb2YgdGhlIGV4dGVybmFsIG1hc3RlciBwcmlvcml0eSBsb3cKICAgIGFuZCB0aGUgZXh0ZXJuYWwgbWFzdGVyIHByaW9yaXR5IGhpZ2ggdmFsdWVzIGluIHRoZSBFQkMgY29uZmlndXJhdGlvbgogICAgcmVnaXN0ZXIuIFRoZXNlIGJpdCBmaWVsZCBwb3NpdGlvbnMgZGlmZmVyIGJldHdlZW4gUFBDNDA1IGFuZCBQUEM0NDAKICAgIHByb2Nlc3NvcnMKCiAgICBTaWduZWQtb2ZmLWJ5OiBFdWdlbmUgTydCcmllbiA8ZXVnZW5lLm9icmllbkBhZHZhbnRlY2hhbXQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGYzNjUxNzY0ZTU3ZTM1MzI1MTY5NTY5MTY3N2JkOTViYTVhNDIwYmMKQXV0aG9yOiBGcmFucyBNZXVsZW5icm9la3MgPGZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbT4KRGF0ZToJTW9uIEZlYiAyMiAyMjo0OTowNiAyMDEwICswMTAwCgogICAgY21kX2l0ZXN0LmM6IGZpeCBwb2ludGVyIGRlcmVmZXJlbmNpbmcKCiAgICBmaXggcG9pbnRlciBkZXJlZmVyZW5jaW5nCiAgICBpZiB0aGUgc2l6ZSBpcyAuYiBhbmQgLncgYW4gOCBvciAxNiBiaXQgYWNjZXNzIGlzIGRvbmUuCgogICAgU2lnbmVkLW9mZi1ieTogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+CiAgICBBY2tlZC1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgMGFkMjI3MDNmMDZhZjVmZTEwMGNmZTZmMDhiMWYzMmVhODljZDViMQpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBGZWIgMjIgMTk6Mzc6NTYgMjAxMCAtMDYwMAoKICAgIHRvb2xzOiBmaXggaW14aW1hZ2Ugd2FybmluZwoKICAgIEZpeCBidWlsZCB3YXJuaW5nOgoKICAgIENvbmZpZ3VyaW5nIGZvciBNUEM4MzdYRU1EUyBib2FyZC4uLgogICAgaW14aW1hZ2UuYzogSW4gZnVuY3Rpb24gYGlteGltYWdlX3BhcnNlX2NmZ19maWxlJzoKICAgIGlteGltYWdlLmM6MTQ2OiB3YXJuaW5nOiBwYXNzaW5nIGFyZ3VtZW50IDIgb2YgYGdldGxpbmUnIGZyb20gaW5jb21wYXRpYmxlIHBvaW50ZXIgdHlwZQogICAgL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8uaDoxMTY6IG5vdGU6IGV4cGVjdGVkIGBzaXplX3QgKicgYnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUgYHVpbnQzMl90IConCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1YjI4ZTkxM2Y0NTE5ODcwYWQyY2EwNmNkNzg0NWIwNTNmNzhiZjBmCkF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CUZyaSBGZWIgNSAxNToxNjowMiAyMDEwICswMTAwCgogICAgbWtpbWFnZTogU0VHRkFVTFQgd2l0aCBpbXhpbWFnZSBvbiA2NCBiaXQgc3lzdGVtcwoKICAgIFJ1bm5pbmcgbWtpbWFnZSB0byBnZW5lcmF0ZSBhbiBpbXhpbWFnZSBwcm9kdWNlcyBhIFNFR0ZBVUxUCiAgICBvbiA2NCBiaXQgbWFjaGluZXMgZHVlIHRvIHBvaW50ZXIgYXJpdGhtZXRpYyBsaW1pdGVkIHRvIDMyIGJpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGVjZDFhMDliODFmMmVkNmU2YmE3YmQxZDBiZmIwY2MzZDBlYTJhZDAKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgRmViIDE4IDE5OjI4OjEyIDIwMTAgLTA2MDAKCiAgICBtcGM4M3h4OiByZW1vdmUgaGFyZGNvZGVkIG5ldHdvcmsgYWRkcmVzc2VzIGZyb20gY29uZmlnIGZpbGVzCgogICAgYW5kIGF2b2lkIGUuZy4sIHR3byBpZGVudGljYWwgYm9hcmRzIGZyb20gY2F1c2luZyByYW5kb20gbmV0d29ya2luZwogICAgY29uZmxpY3RzIHdoZW4gaG9va2VkIHVwIHRvIHRoZSBzYW1lIG5ldHdvcmsuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0YzAwNmRkMTUwMTI4M2VlY2FlYTgxM2EwZTVlMjI1ZTllZTZmZGViCkF1dGhvcjogTWljaGFlbCBaYWlkbWFuIDxtaWNoYWVsLnphaWRtYW5AZ21haWwuY29tPgpEYXRlOglNb24gRmViIDE1IDEwOjAyOjMyIDIwMTAgKzAyMDAKCiAgICBCdWc6IGRvX3Jlc2V0IGlzc3VlZCB2aWEgbmV0Y29uc29sZSBkb2VzIG5vdCByZXNldCBtcGM4M3h4IGNwdS4KCiAgICBUaGUgZG9fcmVzZXQgcm91dGluZSBpbiB0aGUgY3B1L21wYzgzeHgvY3B1LmMgZmlsZSBkb2VzIG5vdCByZXNldAogICAgdGhlIG1wYzgzeHggY3B1IHdoZW4gaXNzdWVkIHZpYSBuZXRjb25zb2xlLgoKICAgIE1vdmluZyB0aGUgY29uc29sZSBvdXRwdXQgInJlc2V0dGluZyB0aGUgYm9hcmQuIiB0byB0aGUgYmVnaW5uaW5nIG9mCiAgICB0aGUgcm91dGluZSBiZWZvcmUgZGlzYWJsaW5nIGludGVycnVwdHMgc29sdmVkIHRoZSBwcm9ibGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgWmFpZG1hbiA8bWljaGFlbC56YWlkbWFuQGdtYWlsLmNvbT4KICAgIEFja2VkLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNzdlNzI3M2M0MDMxNWFiZDJmM2MxN2FkOGQ0NmE3ODk1MGUzZTY1ZgpBdXRob3I6IEplbnMgU2NoYXJzaWcgPGpzX2F0X25nQHNjaGFyc29mdC5kZT4KRGF0ZToJV2VkIEZlYiAzIDIyOjQ4OjA5IDIwMTAgKzAxMDAKCiAgICBuZXcgYm9hcmQgKGViX2NwdXg5azIpCgogICAgKiBuZXcgYm9hcmQgKGViX2NwdXg5azIpCiAgICAgKiBzdXBwb3J0IGZvciBFQitDUFV4OUsyIGJvYXJkIGJ5IEJ1UyBFbGVrdHJvbmlrIEdtYkggJiBDby4gS0cKICAgICAqIHNlbGVjdCB2aWEgbWFrZSBlYl9jcHV4OWsyX2NvbmZpZwogICAgICogdGhpcyBhbHNvIGRlbW9uc3RyYXRlcywgaG93IHRvIHVzZSBib2FyZHMgd2l0aCBBVDkxUk05MjAwIGNwdQogICAgICAgaW4gYXQ5MSBhcmNoIHRyZWUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZW5zIFNjaGFyc2lnIDxqc19hdF9uZ0BzY2hhcnNvZnQuZGU+Cgpjb21taXQgNjc5OWE4MGY3NjQ0ZDc4OTg4MTg3MzkwZGZkMzczNTJmMjBhZDcxMApBdXRob3I6IEplbnMgU2NoYXJzaWcgPGpzX2F0X25nQHNjaGFyc29mdC5kZT4KRGF0ZToJV2VkIEZlYiAzIDIyOjQ3OjU3IDIwMTAgKzAxMDAKCiAgICBuZXcgYXQ5MV9lbWFjIG5ldHdvcmsgZHJpdmVyIChORVRfTVVMVEkgYXBpKQoKICAgICogYWRkJ3MgYXQ5MV9lbWFjIChBVDkxUk05MjAwKSBuZXR3b3JrIGRyaXZlciAoTkVUX01VTFRJIGFwaSkKICAgICAqIGVuYWJsZSBkcml2ZXIgd2l0aCBDT05GSUdfRFJJVkVSX0FUOTFFTUFDCiAgICAgKiBnZW5lcmljIFBIWSBpbml0aWFsaXphdGlvbgogICAgICogbW9kaWZ5IEFUOTFSTTkyMDAgYm9hcmRzIHRvIHVzZSBORVRfTVVMVEkgZHJpdmVyCiAgICAgKiB0aGUgZHJpdmVycyBoYXMgYmVlbiB0ZXN0ZWQgd2l0aCBMWFQ5NzEgUGh5IGFuZCBETTkxNjEgUGh5IGF0IE1JSSBhbmQgUk1JSQogICAgICAgaW50ZXJmYWNlCgogICAgU2lnbmVkLW9mZi1ieTogSmVucyBTY2hhcnNpZyA8anNfYXRfbmdAc2NoYXJzb2Z0LmRlPgoKY29tbWl0IDk4MjUwZThlMTdmYzc2YjM5ODE3MDhjNmU2M2Q0MWY4NzViZjAzNTkKQXV0aG9yOiBKZW5zIFNjaGFyc2lnIDxqc19hdF9uZ0BzY2hhcnNvZnQuZGU+CkRhdGU6CVdlZCBGZWIgMyAyMjo0NzozNSAyMDEwICswMTAwCgogICAgcHJlcGFyZSBqb2luaW5nIGF0OTFybTkyMDAgaW50byBhdDkxCgogICAgKiBwcmVwYXJlIGpvaW5pbmcgYXQ5MSBhbmQgYXQ5MXJtOTIwMAogICAgICogYWRkIG1vZGlmaWVkIGNvcHkgb2Ygc29jIGZpbGVzIHRvIGNwdS9hcm05MjB0L2F0OTEgdG8gbWFrZQogICAgICAgcG9zc2libGUgdG8gY29tcGlsZSBhdDkxcm05MjAwIGJvYXJkcyBpbiBhdDkxIHRyZWUgaW5zdGVhZAogICAgICAgb2YgYXQ5MXJtOTIwMAogICAgICogYWRkIGhlYWRlciBmaWxlcyB3aXRoIGMgc3RydWN0dXJlIGRlZnMgZm9yIEFUOTEgTUMsIFNUIGFuZCBUQwogICAgICogdGhlIG5ldyBjcHUgZmlsZXMgYXJlIHVzaW5nIGF0OTEgYyBzdHJ1Y3R1cmUgc29jIGFjY2VzcwogICAgICogcGxlYXNlIHJlYWQgUkVBRE1FLnNvYy1hdDkxIGZvciBkZXRhaWxzCgogICAgU2lnbmVkLW9mZi1ieTogSmVucyBTY2hhcnNpZyA8anNfYXRfbmdAc2NoYXJzb2Z0LmRlPgoKY29tbWl0IDFiMzRmMDBjMjhhMzAyMzY5M2Q5YjMxZTdiZDFhOTIxMmFmODM1MmYKQXV0aG9yOiBKZW5zIFNjaGFyc2lnIDxqc19hdF9uZ0BzY2hhcnNvZnQuZGU+CkRhdGU6CVdlZCBGZWIgMyAyMjo0NzoxOCAyMDEwICswMTAwCgogICAgdXBkYXRlIGF0OTFzYW05MjYzZWsgYm9hcmQgdG8gbmV3IFNvQyBhY2Nlc3MKCiAgICAqIGNvbnZlcnQgYXQ5MXNhbTkyNjNlayBib2FyZCB0byB1c2UgYyBzdHVjdHVyZSBTb0MgYWNjZXNzCiAgICAgKiBjaGFuZ2UgZ3BpbyBhY2Nlc3MgdG8gYXQ5MV9ncGlvIHN5bnRheAoKICAgIFNpZ25lZC1vZmYtYnk6IEplbnMgU2NoYXJzaWcgPGpzX2F0X25nQHNjaGFyc29mdC5kZT4KCmNvbW1pdCAwY2YwYjkzMTYxYmViM2YzZWQ1ZTM3ZTYxMTJhZWRmMTVkYTE3ZThhCkF1dGhvcjogSmVucyBTY2hhcnNpZyA8anNfYXRfbmdAc2NoYXJzb2Z0LmRlPgpEYXRlOglXZWQgRmViIDMgMjI6NDY6NTggMjAxMCArMDEwMAoKICAgIGNvbnZlcnQgY29tbW9uIGZpbGVzIHRvIG5ldyBTb0MgYWNjZXNzCgogICAgKiBhZGQncyBhIHdhcm5pbmcgdG8gYWxsIGZpbGVzLCB3aGljaCBuZWVkIHVwZGF0ZSB0byBuZXcgU29DIGFjY2VzcwogICAgICogY29udmVydCBjb21tb24gZmlsZXMgaW4gY3B1Ly4uL2F0OTEgYW5kIGEgbG90IG9mIGRyaXZlcnMgdG8gdXNlCiAgICAgICBjIHN0dWN0dXJlIFNvQyBhY2Nlc3MKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZW5zIFNjaGFyc2lnIDxqc19hdF9uZ0BzY2hhcnNvZnQuZGU+Cgpjb21taXQgN2Y5ZTg2MzNhYzljODQ2ZTdlNGY4Njc1MDdjYmQ1ZGUxYmQ5OWUwYwpBdXRob3I6IEplbnMgU2NoYXJzaWcgPGpzX2F0X25nQHNjaGFyc29mdC5kZT4KRGF0ZToJV2VkIEZlYiAzIDIyOjQ2OjQ2IDIwMTAgKzAxMDAKCiAgICBjb252ZXJ0IGFsbCBhdDkxIGZpbGVzIHRvIHVzZSBhdDkxX2dwaW8gZHJpdmVyIHN5bnRheAoKICAgICogY29udmVydCBhbGwgZmlsZXMgY3B1Ly4uL2F0OTEgdG8gdXNlIGF0OTFfZ3BpbyBkcml2ZXIgc3ludGF4CiAgICAgKiBjaGFuZ2UgQVQ5MV9QSU5QKFtBLUZdKShcZCspIHRvIEFUOTFfUElPX1BPUlRcMSwgXDIKICAgICAgIHRoaXMgbWFrZXMgYWxsIDE2MCBBVDkxX1BJTlB4eHggZGVmaW5lcyBvYnNvbGV0ZQogICAgICogQVQ5MV9QSU5QeHh4IGRlZmluZXMgYW5kIGdwaW8uaCBjYW4gYmUgcmVtb3ZlLCBpZiBhbGwgYm9hcmRzIGNvbnZlcnRlZCB0byBuZXcgU29DIGFjY2VzcwoKICAgIFNpZ25lZC1vZmYtYnk6IEplbnMgU2NoYXJzaWcgPGpzX2F0X25nQHNjaGFyc29mdC5kZT4KCmNvbW1pdCBlYThmYmJhNzMxODRhNDA0MzdiZGVjY2Q4ODhjZjQ0OGQ1ZjExMDVlCkF1dGhvcjogSmVucyBTY2hhcnNpZyA8anNfYXRfbmdAc2NoYXJzb2Z0LmRlPgpEYXRlOglXZWQgRmViIDMgMjI6NDY6MTYgMjAxMCArMDEwMAoKICAgIGFkZCBhIG5ldyBBVDkxIEdQSU8gZHJpdmVyCgogICAgKiBhZGQgYSByZWFsIEFUOTEgR1BJTyBkcml2ZXIgaW5zdGVhZCBvZiBoZWFkZXIgaW5saW5lIGNvZGUKICAgICogcmVzb2x2ZSB0aGUgbWl4aW5nIG9mIHBvcnQgYW5kIHBpbnMKICAgICogY2hhbmdlIGJvYXJkIGNvbmZpZyBmaWxlcyB0byB1c2UgbmV3IGRyaXZlcgogICAgKiBhZGQgbWFjcm9zIHRvIGdwaW8gdG8gcmVhbGl6ZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CgogICAgU2lnbmVkLW9mZi1ieTogSmVucyBTY2hhcnNpZyA8anNfYXRfbmdAc2NoYXJzb2Z0LmRlPgoKY29tbWl0IDVkOGUzNTljMzhkM2FiODAwMTVlNDdkMGNhYjc5MmVmZTc1Y2FjZjkKQXV0aG9yOiBKZW5zIFNjaGFyc2lnIDxqc19hdF9uZ0BzY2hhcnNvZnQuZGU+CkRhdGU6CVdlZCBGZWIgMyAyMjo0NjowMSAyMDEwICswMTAwCgogICAgYWRkIGMgc3RydWN0dXJlcyBmb3IgU29DIGFjY2VzcwoKICAgICogYWRkJ3MgYyBzdHJ1Y3R1cmVzIGZvciBTb0MgYWNjZXNzIHRvIHBoZXJpcGVyaWFscyBoZWFkIGZpbGVzCgogICAgU2lnbmVkLW9mZi1ieTogSmVucyBTY2hhcnNpZyA8anNfYXRfbmdAc2NoYXJzb2Z0LmRlPgoKY29tbWl0IDQyNWRlNjJkNDBmODQ1MjRiOTBlNzc2YjE0MWIwNjBjZDQzOGE5ZmUKQXV0aG9yOiBKZW5zIFNjaGFyc2lnIDxqc19hdF9uZ0BzY2hhcnNvZnQuZGU+CkRhdGU6CVdlZCBGZWIgMyAyMjo0NTo0MiAyMDEwICswMTAwCgogICAgYWRkIG5ldyBDT05GSUdfQVQ5MV9MRUdBQ1kKCiAgICAqIGFkZCdzIHRoZSBuZXcgdGVtcG9yYXJ5IENPTkZJR19BVDkxX0xFR0FDWSB0byBhbGwgYm9hcmQgY29uZmlncwogICAgIFRoaXMgd2lsbCBuZWVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmxpdHksIHdoaWxlIGNoYW5nZSB0aGUgU29DIGFjY2VzcwogICAgIHRvIGMgc3RydWN0dXJlcy4gSWYgQ09ORklHX0FUOTFfTEVHQUNZIGlzIGRlZmluZWQsIHRoZSBkZXByZWNhdGVkCiAgICAgU29DIGlzIHVzZWQuCgogICAgU2lnbmVkLW9mZi1ieTogSmVucyBTY2hhcnNpZyA8anNfYXRfbmdAc2NoYXJzb2Z0LmRlPgoKY29tbWl0IDNhNGU0MzkyMWQyNTk5NDUzZWE4N2M2MjMwOTllNWYzNDdjOWU1NGEKQXV0aG9yOiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlLmNvbT4KRGF0ZToJTW9uIEZlYiA4IDExOjM2OjE2IDIwMTAgLTA1MDAKCiAgICBEQTgzMCBFVk06IEVuYWJsZSBOQU5EIHN1cHBvcnQgb24gU3BlY3RydW0gRGlnaXRhbCBFVk0KCiAgICBUaGUgRVZNIFVJIGV4dGVuZGVyIGNhcmQgaGFzIGEgTkFORCBkZXZpY2UuIFRoaXMgY2hhbmdlIHdpbGwgZW5hYmxlCiAgICBzYXZlZW52IHRvIHdvcmsgd2l0aCBOQU5EIGFuZCBMaW51eCB0byBiZSBib290ZWQgdXNpbmc6CgoJbXRkcGFydHMgZGVmYXVsdAoJbmJvb3Qga2VybmVsCglib290bQoKICAgIFNpZ25lZC1vZmYtYnk6IE5pY2sgVGhvbXBzb24gPG5pY2sudGhvbXBzb25AZ2UuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgoKY29tbWl0IDYyMjhlNjM4OWU1ZWY0NzJkNWY0M2NjNWVjNGYzMDkzMjMzMDU2MzgKQXV0aG9yOiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlLmNvbT4KRGF0ZToJTW9uIEZlYiA4IDExOjM0OjU4IDIwMTAgLTA1MDAKCiAgICBEYXZpbmNpOiBBZGQgRU1JRi1BIG1hY3JvcyBmb3Igc2V0dGluZyBjaGlwIHNlbGVjdCBwYXJhbWV0ZXJzCgogICAgVGhlIHBhdGNoIGFkZHMgRU1JRi1BIG1hY3JvcyBmb3Igc2V0dGluZyBjaGlwIHNlbGVjdCBwYXJhbWV0ZXJzCgogICAgU2lnbmVkLW9mZi1ieTogTmljayBUaG9tcHNvbiA8bmljay50aG9tcHNvbkBnZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Cgpjb21taXQgYjc0MDY0YTBlMjk4NGExNjZlMzU3NTg1MmYzNjk3ZWY1NTk1YTk3YgpBdXRob3I6IFNhbmplZXYgUHJlbWkgPHByZW1pQHRpLmNvbT4KRGF0ZToJTW9uIEZlYiA4IDExOjMzOjI1IDIwMTAgLTA1MDAKCiAgICBPTUFQMzogQXZvaWQgcmUtd3JpdGUgdG8gUFJNX0NMS1NSQ19DVFJMCgogICAgSW4gZnVuY3Rpb24gZ2V0X29zY19jbGtfc3BlZWQoKSwgZG8gbm90IGNoYW5nZS8gdXBkYXRlCiAgICB0aGUgZGl2aWRlciBmb3IgU1lTX0NMSyBhcyBpdCBjYW4gaGFzIGNhc2NhZGluZyBlZmZlY3QKICAgIG9uIHRoZSBvdGhlciBkZXJpdmVkIGNsb2Nrcy4KCiAgICBTdWRkZW4gY2hhbmdlIGluIGRpdmlkZXIgdmFsdWUgY2FuIGxlYWQgdG8gaW5jb25zaXN0ZW50CiAgICBiZWhhdmlvciBpbiB0aGUgc3lzdGVtIC0gb2Z0ZW4gbGVhZGluZyB0byBjcmFzaGVzLgoKICAgIFRoZSBwcm9ibGVtIHdhcyBmb3VuZCB3aGVuIHdvcmtpbmcgd2l0aCBPTUFQM0VWTSB1c2luZwogICAgRE0zNzMwIHByb2Nlc3NvciBjYXJkLgoKICAgIFRoZSBwYXRjaCBoYXMgYmVlbiB0ZXN0ZWQgd2l0aCBPTUFQMzUzMCBvbiBPTUFQM0VWTSBhcwogICAgd2VsbAoKICAgIFNpZ25lZC1vZmYtYnk6IFNhbmplZXYgUHJlbWkgPHByZW1pQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEhpcmVtYXRoIFZhaWJoYXYgPGh2YWliaGF2QHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KCmNvbW1pdCBlZmY1MzZiZWZkM2VmYWI1MzhiYmExMGJhZDA3ZWNmZjYzYzlmNDcwCkF1dGhvcjogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgpEYXRlOglUdWUgRmViIDkgMjI6MDU6MzkgMjAxMCArMDEwMAoKICAgIFNQSTogRml4IDMyIGJpdCB0cmFuc2ZlcnMgaW4gbXhjX3NwaS5jCgogICAgQ29tbWl0IGY5YjZhMTU3NWQ5ZjFjYTE5MmU0Y2I2MGU1NDdhYTY2ZjA4YmFhM2YsICAiaS5NWDMxOiBmaXggU1BJCiAgICBkcml2ZXIgZm9yIHNob3J0ZXIgdGhhbiAzMiBiaXQiIGJyb2tlIDMyIGJpdCB0cmFuc2ZlcnMuIFRoaXMgcGF0Y2gKICAgIG1ha2VzIHNpbmdsZSAzMiBiaXQgdHJhbnNmZXIgd29yayBhZ2Fpbi4KCiAgICBUcmFuc2ZlciBsZW5ndGhzIHRoYXQgYXJlIGtub3duIG5vdCB0byB3b3JrIHdpbGwgYWJvcnQgYW5kIHByaW50CiAgICBhbiBlcnJvciBtZXNzYWdlLgoKICAgIFRlc3RlZCBvbiBpLk1YMzEgTGl0ZWtpdCBhbmQgaS5NWDMxIFBESyB1c2luZyAzMiBiaXQgdHJhbnNmZXJzIHRvCiAgICB0aGUgTUMxMzc4My9BVExBUyBjaGlwICh1c2luZyB0aGUgJ2RhdGUnIGNvbW1hbmQpLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KCmNvbW1pdCAzOWE5MTQyMjAzZTYxMGJmMmIxYTIxNjA4NWUzNzQyNzdmZDI4ZjlmCkF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaS1saXN0QGdudWRkLmNvbT4KRGF0ZToJU2F0IEZlYiA2IDIwOjU0OjA1IDIwMTAgKzAxMDAKCiAgICBlZGI5M3h4OiBlbmFibGUgdGhlIHVhcnQgaW4gZGV2aWNlY2ZnIHJlZ2lzdGVyCgogICAgcHJpbnRmIGdvZXMgdG8gdWFydDEsIGJ1dCBpdCB3aWxsIGJsb2NrIGZvcmV2ZXIgd2FpdGluZyBmb3IKICAgIGJ1c3kgdG8gZ28gb2ZmIHVubGVzcyB0aGUgdWFydCBpcyBlbmFibGVkIGZpcnN0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAZ251ZGQuY29tPgoKY29tbWl0IDgyMmJkNzBkYjQ5NzczYjRkNTdlYWE0ODRkY2E4MzM4NmE2YjM0NzkKQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pLWxpc3RAZ251ZGQuY29tPgpEYXRlOglTYXQgRmViIDYgMjA6NTM6NTQgMjAxMCArMDEwMAoKICAgIGVkYjkzeHg6IGNoYW5nZSBjYWxjdWxhdGlvbiB1biBlYXJseV91ZGVsYXkuaAoKICAgIFByZXZpb3VzIGNvZGUgY29tcGlsZWQgd2l0aCBnY2MtNC4yLjIgbWFrZXMgYSBjYWxsIHRvCiAgICBfX2FlYWJpX3VpZGl2IHRvIGRpdmlkZSBieSAyMC4gQXMgYSBzaWRlIGVmZmVjdCBpdCB3YXMKICAgIG5vdCBpbmxpbmUgYW55IG1vcmUsIGFuZCBzbyBzZHJhbV9jZmcgdXNlZCB0aGUgc3RhY2sKICAgIGFzIHdlbGwsIGJ1dCB0aGlzIGlzIGVhcmx5IGNvZGUgdGhhdCBoYXMgbm8gc3RhY2sgeWV0LgogICAgVGhlIHBhdGNoIGV4cGxpY2l0bHkgcmVtb3ZlcyB0aGUgZGl2aXNpb24sIHNvIG5vIHN0YWNrIGlzIHVzZWQuCgogICAgVGhlIGNhbGN1bGF0aW9uIG9mIHRoZSBjb3VudGVyIGNhbGxzIGEgZGl2aXNpb24gYnkgMjAKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQGdudWRkLmNvbT4KCmNvbW1pdCBjNTBhMGY1MDM5NjdkNDM1MTUwYmJiOWYyZjgxNmNlMzNhZmRmMjMxCkF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaS1saXN0QGdudWRkLmNvbT4KRGF0ZToJU2F0IEZlYiA2IDIwOjUzOjQzIDIwMTAgKzAxMDAKCiAgICBFUDkzeHg6IGZpeCBzeXNjb25fcmVncyBkZWZpbml0aW9uCgogICAgVGhlIHN0cnVjdHVyZSB3YXMgbWlzc2luZyBhIHJlc2VydmVkIGVudHJ5IChub3QgbGlzdGVkIGluIHRoZSBtYW51YWwsCiAgICBhY3R1YWxseSksIHNvIHRoZSBsYXN0IHJlZ2lzdGVycyBoYWQgYSB3cm9uZyBvZmZzZXQuIFRoaXMgcHJldmVudGVkCiAgICBhbGwgc3dsb2NrZWQgcmVnaXN0ZXJzIHRvIGJlIG1vZGlmaWVkIGFzIHN3bG9jayBpcyBsYXN0IGluIHRoZSBzdHJ1Y3R1cmUuCgogICAgU2lnbmVkLW9mZi1ieTogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUBnbnVkZC5jb20+Cgpjb21taXQgZmNmYjYzMmJkMWU5ZGU2NDViMDE1Y2Y3M2E3ODE4M2MyOTk3NDNkOApBdXRob3I6IE1hdHRoaWFzIEthZWhsY2tlIDxtYXR0aGlhc0BrYWVobGNrZS5uZXQ+CkRhdGU6CU1vbiBGZWIgMSAyMToyOTozOSAyMDEwICswMTAwCgogICAgQVJNOiBBZGQgc3VwcG9ydCBmb3IgRVA5M3h4IFNvQ3MKCiAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIENpcnJ1cyBFUDkzeHggcGxhdGZvcm0KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgogICAgQWNrZWQtYnk6IFRvbSA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgoKY29tbWl0IGNmM2MxNDJlZTRiZTBmMDc3ZjhiODQ1OTNmMWIyNGIzNWQxNDAzOWUKQXV0aG9yOiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgpEYXRlOglNb24gRmViIDEgMjE6Mjk6NDggMjAxMCArMDEwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBFREI5M3h4IGJvYXJkcwoKICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBmb2xsb3dpbmcgRURCOTN4eCBib2FyZHM6CgogICAgRURCOTMwMQogICAgRURCOTMwMgogICAgRURCOTMwMkEKICAgIEVEQjkzMDcKICAgIEVEQjkzMDdBCiAgICBFREI5MzAxMgogICAgRURCOTMxNQogICAgRURCOTMxNUEKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgoKY29tbWl0IGQ3OThlMjdiMTQ1NDM3NjJmOWY1ZDA1NjFhMzQzMGM3ZjllMjE1M2IKQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8TGFkaXNsYXYuTWljaGxAc2V6bmFtLmN6PgpEYXRlOglXZWQgSmFuIDI3IDExOjEyOjI4IDIwMTAgLTA1MDAKCiAgICBOZXRTdGFyOiBSZW1vdmUgZGVidWcganVuayBsZWFrZWQgaW50byBlZXByb20gdXRpbGl0eQoKICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBkZWJ1ZyBqdW5rIGxlYWtlZCBpbnRvIGVlcHJvbSB1dGlsaXR5LgoKICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KCmNvbW1pdCA4OWU5NGQ4MWVkYTlhZjJlMWMzNWU5NzEyNWIwYzA0OTMzNWM3MGZjCkF1dGhvcjogTGFkaXNsYXYgTWljaGwgPExhZGlzbGF2Lk1pY2hsQHNlem5hbS5jej4KRGF0ZToJV2VkIEphbiAyNyAxMToxMjoyMyAyMDEwIC0wNTAwCgogICAgTmV0U3RhcjogbWFrZSBjcmNpdCB1dGlsaXR5IG1vcmUgcmVhZGFibGUKCiAgICBUaGlzIHBhdGNoIG1ha2VzIHRoZSBjcmNpdCB1dGlsaXR5IG1vcmUgcmVhZGFibGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Cgpjb21taXQgMzg0M2U3ZGM5MzRkOGVmN2M1OTJmNWEyMTA2ODg1ZWZlMzJlYWM3ZgpBdXRob3I6IExhZGlzbGF2IE1pY2hsIDxMYWRpc2xhdi5NaWNobEBzZXpuYW0uY3o+CkRhdGU6CVdlZCBKYW4gMjcgMTE6MTI6MDggMjAxMCAtMDUwMAoKICAgIE5ldFN0YXI6IERpc2FibGUgQ09ORklHX0NNRF9KRkZTMgoKICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyAiQ09ORklHX0NNRF9KRkZTIiBmcm9tIHRoZSBib2FyZCBjb25maWcKCiAgICBTaWduZWQtb2ZmLWJ5OiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Cgpjb21taXQgNjMyZTFkOTAxNDg0OGVjOGQ5ODNhNjI5YzJlMzViNDQyMzgxNjMzNgpBdXRob3I6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KRGF0ZToJV2VkIEphbiAyNyAxMToxMTo1NSAyMDEwIC0wNTAwCgogICAgT01BUDMgTW92ZSBkZWNsYXJhdGlvbiBvZiBncG1jX2NmZy4KCiAgICBFdmVyeSBvbWFwMyBib2FyZCBjb25maWcgZmlsZSBkZWNsYXJlZCB0aGUgZ2xvYmFsIHZhcmlhYmxlIGdwbWNfY2ZnLgogICAgVGhpcyBjaGFuZ2VzIG1vdmVzIHRoZSBkZWNsYXJhdGlvbiB0byBhIGJldHRlciBsb2NhdGlvbiBpbiB0aGUKICAgIGFyY2ggZGVwZW5kZW50IGhlYWRlciBmaWxlIGNwdS5oLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KCmNvbW1pdCAwOTNkNjAxOGNmMGE4ZGFlNjE0YzI5MjRjMDAxM2Q5N2UyYTQ4NjYyCkF1dGhvcjogU2NvdHQgRWxsaXMgPHNjb3R0QGp1bXBub3d0ZWsuY29tPgpEYXRlOglXZWQgSmFuIDI3IDExOjExOjQ2IDIwMTAgLTA1MDAKCiAgICBPdmVybyBHUE1DIHJlZ2lzdGVycwoKICAgIFVzZSBhcHByb3ByaWF0ZSBHUE1DIHRpbWluZ3MgZm9yIHRoZSBMQU45MjIxIGNvbnRyb2xsZXIgb24gdGhlCiAgICBHdW1zdGl4IE92ZXJvIGV4cGFuc2lvbiBib2FyZHMgbm90IHRoZSB2YWx1ZXMgaW4gYXJjaC1vbWFwMy9tZW0uaAogICAgd2hpY2ggYXJlIGZvciBhIGRpZmZlcmVudCBldGhlcm5ldCBjb250cm9sbGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IEVsbGlzIDxzY290dEBqdW1wbm93dGVrLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KCmNvbW1pdCA2M2E0N2RmZDA3NTM2ZTM5OTY2NWNhNzUwNGJhYzUxMmJmMjE0OTFlCkF1dGhvcjogTmljayBUaG9tcHNvbiA8bmljay50aG9tcHNvbkBnZS5jb20+CkRhdGU6CVdlZCBKYW4gMjcgMTE6MTE6MjggMjAxMCAtMDUwMAoKICAgIGRhODMwZXZtOiBVc2UgdGFibGUgZHJpdmVuIHBpbiBtdXggY29uZmlndXJhdGlvbgoKICAgIFRpZHl1cCB0aGUgcGluIG11eGVyIGNvbmZpZ3VyYXRpb24gdXNpbmcgdGhlIERhdmluY2kgdGFibGUgZHJpdmVuCiAgICBwaW5tdXggY29uZmlndXJhdGlvbiBmdW5jdGlvbiBhbmQgZGF0YSB0YWJsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogTmljayBUaG9tcHNvbiA8bmljay50aG9tcHNvbkBnZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Cgpjb21taXQgOGVkNTg4NTY5M2IzOWM1YzJjY2E1NTc0ZGQ5OGQ2YWQ4YTk4MjcwMgpBdXRob3I6IFNla2hhciBOb3JpIDxuc2VraGFyQHRpLmNvbT4KRGF0ZToJV2VkIEphbiAyNyAxMToxMDo0MCAyMDEwIC0wNTAwCgogICAgVEkgRGFWaW5jaTogRHJpdmVyIGZvciB0aGUgZGF2aW5jaSBTUEkgY29udHJvbGxlcgoKICAgIFRoaXMgYWRkcyBhIGRyaXZlciBmb3IgdGhlIFNQSSBjb250cm9sbGVyIGZvdW5kIG9uIGRhdmluY2kKICAgIGJhc2VkIFNvQ3MgZnJvbSBUZXhhcyBJbnN0cnVtZW50cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTZWtoYXIgTm9yaSA8bnNla2hhckB0aS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdWRoYWthciBSYWphc2hla2hhcmEgPHN1ZGhha2FyLnJhakB0aS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Cgpjb21taXQgNDRkODAyNTYyMjlkMDU4NjI2MjJmNGRkODg2NDY2ZmQ3MGZlMDRhZQpBdXRob3I6IERhbmllbCBHb3JzdWxvd3NraSA8RGFuaWVsLkdvcnN1bG93c2tpQGVzZC5ldT4KRGF0ZToJTW9uIEphbiAyNSAxMDo1MDo0MSAyMDEwICswMTAwCgogICAgYXQ5MTogQWRkIGVzZCBnbWJoIE9UQzU3MCBib2FyZCBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGVzZCBnbWJoIE9UQzU3MCBib2FyZC4KICAgIFRoZSBPVEM1NzAgaXMgYmFzZWQgb24gYW4gQXRtZWwgQVQ5MVNBTTkyNjMgU29DLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBHb3JzdWxvd3NraSA8RGFuaWVsLkdvcnN1bG93c2tpQGVzZC5ldT4KCmNvbW1pdCBlMzliZjFlMmE5ZTQzNzE3NDY4N2RlNjg3YzEyN2VjOTgwYTkzZWViCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gRmViIDggMTU6MzA6MTYgMjAxMCAtMDUwMAoKICAgIGtnZGI6IGNwdS9tcGMqIGNwdS83NHh4OiBpbmNsdWRlIGtnZGIuaCB3aGVuIG5lZWRlZAoKICAgIENvbW1pdCBjYmIwY2FiMWQ5Mjk4MzlkIGJyb2tlIHNvbWUgcGxhdGZvcm1zIHdoaWNoIHVzZWQga2dkYiBjb2RlIGJ1dAogICAgZGlkbid0IGFjdHVhbGx5IGluY2x1ZGUga2dkYi5oLiAgU28gaW5jbHVkZSBrZ2RiLmggaW4gYWxsIHRoZSByZWxldmFudAogICAgdHJhcHMgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYWI1YTBkY2I5YzhmMTllMzUxZmMzM2M1ZGI5MTQ2OWJmYjFkOTQzOApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEZlYiAyIDEzOjQzOjQ4IDIwMTAgKzAxMDAKCiAgICBuZXQ6IFVzZSAwLjUgc2VjIHRpbWVvdXQgaW4gbWlpcGh5X3Jlc2V0KCkgaW5zdGVhZCBvZiBjb3VudGluZyBsb29wCgogICAgVGhpcyBwYXRjaCBmaXhlcyBhIHByb2JsZW0gSSd2ZSBub3RpdmVkIG9uIGEgYnVnZ3kgUFBDNHh4IHN5c3RlbS4gVGhpcwogICAgc3lzdGVtIGhhcyBwcm9ibGVtcyB3aXRoIHRoZSBQSFkgTURJTyBjb21tdW5pY2F0aW9uIGFuZCBzZWVtZWQgdG8gYmUKICAgIHN0dWNrL2NyYXNoZWQgaW4gbWlpcGh5X3Jlc2V0KCkuIEJ1dCBkZWd1Z2dpbmcgcmV2ZWFsZWQsIHRoYXQgdGhlIENQVQogICAgZGlkbid0IGNyYXNoLCBidXQgIm9ubHkiIGh1bmcgaW4gdGhpcyBjb3VudGluZyBsb29wIGZvciBhYm91dCAyIG1pbnV0ZXMuCgogICAgVGhpcyBwYXRjaCBub3cgdXNlcyBhIHJlYWwgdGltZW91dCBvZiAwLjUgc2Vjb25kcyAoYXMgbWVudGlvbmVkIGluIHRoZQogICAgY29tbWVudCBpbiBtaWlwaHlfcmVzZXQpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNDI5NGIyNDg1YmYwZThkNjhjODkzMTkwYTk2YmIwZTc4NTZiMTJjNApBdXRob3I6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgpEYXRlOglNb24gRmViIDEgMTQ6NTE6MzAgMjAxMCArMDEwMAoKICAgIGZlY19teGM6IGFkZCBzdXBwb3J0IGZvciBNWDUxIHByb2Nlc3NvcgoKICAgIFRoZSBwYXRjaCBhZGQgc3VwcG9ydCBmb3IgdGhlIEZyZWVzY2FsZSBteDUxIHByb2Nlc3NvcgogICAgdG8gdGhlIEZFQyBldGhlcm5ldCBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGU2NmIxOWNlNmRiZTZmOTFiMThiYTQ3MjczY2JlODllYjVhODBlNzgKQXV0aG9yOiBTaWRkYXJ0aCBHb3JlIDxnb3Jlc0BtYXJ2ZWxsLmNvbT4KRGF0ZToJVHVlIEphbiAxOSAxMTowOTowNyAyMDEwICswNTMwCgogICAgTkVUOiBraXJrd29vZC1lZ2lnYSBzbWkgYWNjZXNzIGZpeAoKICAgIEFsdGhvdWdoIHRoZSBkYXRhc2hlZXQgbWVudGlvbnMgc2VwZXJhdGUgc21pIHJlZ2lzdGVycyBmb3IgZWFjaAogICAgcG9ydCwgdXNpbmcgUG9ydCAxIHNtaSByZWdpc3RlciB0byBhY2Nlc3MgZXRoZXJuZXQgcGh5cyBkb2VzIG5vdAogICAgd29yay4gSGVuY2Ugb25seSBQb3J0IDAgc21pIHJlZ2lzdGVyIHNob3VsZCBiZSB1c2VkIHRvIGFjY2VzcyBhbGwKICAgIGRldmljZXMgY29ubmVjdGVkIHRvIHRoZSBzbWkgYnVzLiBUaGlzIGJlaGF2aW9yIGlzIGNvbnNpc3RhbnQgd2l0aAogICAgdGhlIG12NjQzeHggZHJpdmVyIGluIHRoZSBsaW51eCBrZXJuZWwuCgogICAgU2lnbmVkLW9mZi1ieTogU2lkZGFydGggR29yZSA8Z29yZXNAbWFydmVsbC5jb20+CiAgICBBY2tlZC1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBhMWIzMjJhOTgzMTlkZTU2OGIzYmMzODAyOWVmN2UxMjM2NDNjMWU4CkF1dGhvcjogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgpEYXRlOglNb24gRmViIDEgMjM6MzQ6MjUgMjAxMCArMDEwMAoKICAgIG5zMTY1NTA6IGtpY2sgd2F0Y2hkb2cgd2hpbGUgd2FpdGluZyBmb3IgYSBjaGFyYWN0ZXIKCiAgICBuczE2NTUwIGJ1c3lsb29wcyB3YWl0aW5nIGZvciBpbmNvbWluZyBieXRlIGNhdXNpbmcgd2F0Y2hkb2cgdG8gcmVib290CiAgICB3aGlsZSB3YWl0aW5nIGZvciBhIGtleSBwcmVzcy4gQSBjYWxsIHRvIFdBVENIRE9HX1JFU0VUIGluIE5TMTY1NTBfZ2V0YwogICAgbG9vcCBmaXhlcyBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+Cgpjb21taXQgODRkMzZiMzAxODFhY2ZiNzJmMjJkMTEwNWMxNTU3NGIzMGVhMmZhMQpBdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgpEYXRlOglNb24gRmViIDEgMTk6NDA6NDcgMjAxMCArMDEwMAoKICAgIFVTQjogdXNiX2NvbnRyb2xfbXNnIHdhaXQgZm9yIGRyaXZlciBJU1IgdG8gc2V0IHN0YXR1cy4KCiAgICBUaGlzIHBhdGNoIGNoYW5nZXMgdXNiX2NvbnRyb2xfbXNnIGJhY2sgdG8gdGhlIHN0YXRlIHByaW9yIHRvIGNvbW1pdAogICAgNDg4NjcyMDg0NDRjYjJhODJlMmFmOWMzMjQ5ZTkwYjdlZDRhMTc1MS4KCiAgICBUaGUgVVNCIGRyaXZlciBJU1Igcm91dGluZSBtYXkgdXBkYXRlIHRoZSBzdGF0dXMuCgogICAgU2lnbmVkLW9mZi1ieTogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgoKY29tbWl0IDZlMjBlNjRmNWM2ZGViNWI0OGU0MGEwY2JhNDg3N2Y5MTcwNTQ1ZTAKQXV0aG9yOiBQcmF0aGFwIFNyaW5pdmFzIDxtc3ByYXRoYXBAdGkuY29tPgpEYXRlOglNb24gSmFuIDExIDE1OjM2OjQ2IDIwMTAgKzA1MzAKCiAgICBtdXNiOiBBZGQgaG9zdCBzdXBwb3J0IGZvciBETTM2NSBFVk0KCiAgICBBZGQgc3VwcG9ydCBmb3IgbXVzYiBob3N0IG9uIERNMzY1IEVWTS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQcmF0aGFwIFNyaW5pdmFzIDxtc3ByYXRoYXBAdGkuY29tPgoKY29tbWl0IGVjMmFhZGI0MDg1NWNlY2IwODhiNjhjMDYyZTM1MzRkNmNlMzkxMjgKQXV0aG9yOiBDbGlmZiBDYWkgPGNsaWZmLmNhaUBhbmFsb2cuY29tPgpEYXRlOglUdWUgSmFuIDE5IDAwOjEwOjQyIDIwMTAgLTA1MDAKCiAgICB1c2I6IG11c2I6IGZpeCBCbGFja2ZpbiBETUEgcmVnaXN0ZXIgcGFkZGluZwoKICAgIFRoZSBjb252ZXJzaW9uIGZyb20gb2Zmc2V0cyB0byBDIHN0cnVjdHMgbG9zdCBhIGxpdHRsZSBwYWRkaW5nIGluIHRoZSBETUEKICAgIHJlZ2lzdGVyIG1hcC4gIEFjY2Vzc2luZyBlbmRwb2ludHMgb3RoZXIgdGhhbiBlcDAgd2l0aCBETUEgd291bGQgZmFpbCBhcwogICAgdGhlIGFkZHJlc3NlcyB3b3VsZG4ndCBiZSBhZGp1c3RlZCBjb3JyZWN0bHkuCgogICAgU2lnbmVkLW9mZi1ieTogQ2xpZmYgQ2FpIDxjbGlmZi5jYWlAYW5hbG9nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBkMDc1MGJjOWU1OTMyYmFmNGM5MGVkYTI0NTYxMDZmMjFhMjZiZGMxCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIEZlYiAxIDExOjM2OjI5IDIwMTAgKzAxMDAKCiAgICBFWEJJVEdFTjogZHJvcCBzdXBwb3J0IGZvciB1bm1haW50YWluZWQgYm9hcmQKCiAgICBUaGUgRVhCSVRHRU4gYm9hcmQgaGFzIG5vdCBiZWVuIG1haW50YWluZWQgZm9yIGEgbG9uZyB0aW1lOyBpdCBoYXMKICAgIGJ1aWxkIHByb2JsZW1zLCBidXQgbm8gaGFyZHdhcmUgaXMgYXZhaWxhYmxlIGFueSBtb3JlIGZvciB0ZXN0aW5nLgoKICAgIERyb3Agc3VwcG9ydCBmb3IgdGhpcyBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5NDYxYTkzOWNhYmQ2MDZkN2YwZTliODQ5MGI0MDg0MWFmMTA0ZmY1CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEphbiAzMSAyMjowMzoxNSAyMDEwICswMTAwCgogICAgbXBjNXh4eC9jcHVfaW5pdC5jOiBmaXggd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdjZG0nCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KCmNvbW1pdCAxM2Q4YmZlMjZjMGRkMmMwOGI3NmM1ZjA3N2U4MDBhNzE4ODU5YmJjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEphbiAzMSAyMTo1ODo0OCAyMDEwICswMTAwCgogICAgbXBjNXh4eC9jcHVfaW5pdC5jOiBmaXggd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdncHQwJwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBBY2tlZC1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgNDcxMGNlZTFiNTI5MmZlMDc3YTY3Y2MyMzE5M2NjNDMwNjBmYmUzZApBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+CkRhdGU6CU1vbiBGZWIgMSAxMzo1NDowOSAyMDEwICswMTAwCgogICAgcHBjNHh4OiBSZW1vdmUgdW51c2VkIGZlYXR1cmUgZnJvbSBBUjQwNSBib2FyZAoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYnVpbGRpbmcgZm9yIEFSNDA1IGJvYXJkcyBieSByZW1vdmUgYW4gdW51c2VkIGZlYXR1cmUuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5NzZjMjFhZDhlMTM2ZGYwZWMzNjFhY2EwYzRiYzI4N2M1NjM3YzAxCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KRGF0ZToJTW9uIEZlYiAxIDEzOjUzOjU5IDIwMTAgKzAxMDAKCiAgICBwcGM0eHg6IEZpeCBidWlsZGluZyBmb3IgUExVNDA1IGJvYXJkcwoKICAgIFRoZSBpbml0X2NvdXBsZXIoKSBmdW5jdGlvbiBmcm9tIGJvYXJkL2VzZC9wbHU0MDUvcGx1NDA1LmMKICAgIGdvdCBsb3N0IHNvbWVob3chIFRoaXMgcGF0Y2ggcmVhZGRzIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNTljMWRiNmRhYjUyYjk4MWU2ZWEyNWEyMDNkMGE5MTllZGU2MWVkMgpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+CkRhdGU6CU1vbiBGZWIgMSAxMzo1Mzo0NyAyMDEwICswMTAwCgogICAgcHBjNHh4OiBGaXggYnVpbGRpbmcgb2YgUE1DNDQwIGJvYXJkCgogICAgUmVtb3ZlIHNvbWUgdW51c2VkIGZlYXR1cmVzIGFuZCBkZWZhdWx0IGVudmlyb25tZW50IHZhcmlhYmxlCiAgICB0byBzaHJpbmsgdGhlIFBNQzQ0MCB1LWJvb3QuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2ZjZjMjZlNDMwZmZhZTg3YjZiM2Q3NGJhN2NiZjk0Mzk3MDNmZWVhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgSmFuIDI2IDEzOjMzOjI5IDIwMTAgKzAxMDAKCiAgICBwcGM0eHg6IEZpeCBjb21waWxhdGlvbiBlcnJvciBvbiBNTDIgYm9hcmQKCiAgICBSZWNlbnRseSB0aGlzIGNvbXBpbGF0aW9uIGVycm9yIG9jY3VyczoKCiAgICBDb25maWd1cmluZyBmb3IgTUwyIGJvYXJkLi4uCiAgICB0cmFwcy5jOiBJbiBmdW5jdGlvbiAnTWFjaGluZUNoZWNrRXhjZXB0aW9uJzoKICAgIHRyYXBzLmM6MTU5OiBlcnJvcjogJ2RlYnVnZ2VyX2V4Y2VwdGlvbl9oYW5kbGVyJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UKCWluIHRoaXMgZnVuY3Rpb24pCiAgICB0cmFwcy5jOjE1OTogZXJyb3I6IChFYWNoIHVuZGVjbGFyZWQgaWRlbnRpZmllciBpcyByZXBvcnRlZCBvbmx5IG9uY2UKICAgIHRyYXBzLmM6MTU5OiBlcnJvcjogZm9yIGVhY2ggZnVuY3Rpb24gaXQgYXBwZWFycyBpbi4pCgogICAgVGhpcyBwYXRjaCBub3cgZml4ZXMgaXQgYnkgaW5jbHVkaW5nIGtnZGIuaAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmM2RlYzc5OGQ5ZWJmN2YxN2MxMWVjNzY3MWI5NzljZTNkMjUxOTU1CkF1dGhvcjogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgpEYXRlOglUaHUgSmFuIDI4IDEyOjI3OjE0IDIwMTAgKzAxMDAKCiAgICBDRkk6IGZpeCBlcmFzZXJlZ2lvbnMgbnVtYmxvY2tzCgogICAgZXJhc2VyZWdpb25zIG51bWJsb2NrcyB3YXMgc29tZXRpbWVzIG9uZSBsZXNzIHRoYW4gYWN0dWFsLCBwb3NzaWJseSBwcm9kdWNpbmcKICAgIGVyYXNlIHJlZ2lvbnMgd2l0aCB6ZXJvIGJsb2Nrcy4gQXMgTVREIGNvZGUgdG91Y2hlcyBlcmFzZXJlZ2lvbnMgb25seSBpZgogICAgbnVtZXJhc2VyZWdpb25zIGlzIGdyZWF0ZXIgdGhhdCB6ZXJvLCBhbGxvY2F0ZSBlcmFzZXJlZ2lvbnMgb25seSBmb3Igbm9uCiAgICB1bmlmb3JtIGVyYXNlIHNpemUgZmxhc2guCgogICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGMwNDFlOWQyMTIxNjJmNmM4NWNkM2I2YTQwYWQ2YmE5ZDkyOTI0NTEKQXV0aG9yOiBKZW5zIFNjaGFyc2lnIDxqc19hdF9uZ0BzY2hhcnNvZnQuZGU+CkRhdGU6CVNhdCBKYW4gMjMgMTI6MDM6NDUgMjAxMCArMDEwMAoKICAgIG5ldyBhdDkxX2VtYWMgbmV0d29yayBkcml2ZXIgKE5FVF9NVUxUSSBhcGkpCgogICAgKiBhZGQncyBhdDkxX2VtYWMgKEFUOTFSTTkyMDApIG5ldHdvcmsgZHJpdmVyIChORVRfTVVMVEkgYXBpKQogICAgKiBlbmFibGUgZHJpdmVyIHdpdGggQ09ORklHX0RSSVZFUl9BVDkxRU1BQwogICAgKiBnZW5lcmljIFBIWSBpbml0aWFsaXphdGlvbgogICAgKiBtb2RpZnkgQVQ5MVJNOTIwMCBib2FyZHMgdG8gdXNlIE5FVF9NVUxUSSBkcml2ZXIKICAgICogdGhlIGRyaXZlcnMgaGFzIGJlZW4gdGVzdGVkIHdpdGggTFhUOTcxIFBoeSBhbmQgRE05MTYxIFBoeSBhdAogICAgICBNSUkgYW5kIFJNSUkgaW50ZXJmYWNlCgogICAgU2lnbmVkLW9mZi1ieTogSmVucyBTY2hhcnNpZyA8anNfYXRfbmdAc2NoYXJzb2Z0LmRlPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA1OTRkNTdkMGNjY2U2NDlkNmNjZDg4MWI4ZDljNWVhOGQwYzMwN2VmCkF1dGhvcjogTWF0dGhpYXMgS2FlaGxja2UgPG1hdHRoaWFzQGthZWhsY2tlLm5ldD4KRGF0ZToJU3VuIEphbiAzMSAxNzozOTo0OSAyMDEwICswMTAwCgogICAgQWRkIEVQOTN4eCBldGhlcm5ldCBkcml2ZXIKCiAgICBBZGRlZCBldGhlcm5ldCBkcml2ZXIgZm9yIEVQOTN4eCBTb0NzCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgS2FlaGxja2UgPG1hdHRoaWFzQGthZWhsY2tlLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNTgyYzU1YTAyNzRmMzhlNmU3ZTM1Yjk1ZTdhYjgxZDNlOTEyZjcwMApBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglXZWQgSmFuIDIwIDA5OjA0OjI4IDIwMTAgKzAxMDAKCiAgICA4M3h4LCB1ZWM6IHNwbGl0IGVuZXRfaW50ZXJmYWNlIGluIHR3byB2YXJpYWJsZXMKCiAgICBUaGVyZSdzIG5vIHNlbnNpYmxlIHJlYXNvbiB0byB1bml0ZSBzcGVlZCBhbmQgaW50ZXJmYWNlIHR5cGUgaW50bwogICAgb25lIHZhcmlhYmxlLiAgU28gc3BsaXQgdGhpcyB2YXJpYWJsZSBlbmV0X2ludGVyZmFjZSBpbnRvIHR3bwogICAgdmFyczogZW5ldF9pbnRlcmZhY2VfdHlwZSwgd2hpY2ggaG9sZCB0aGUgaW50ZXJmYWNlIHR5cGUgYW5kIHNwZWVkLgoKICAgIEFsc286IGFkZCB0aGUgcG9zc2liaWxpdHkgZm9yIHN3aXRjaGluZyBiZXR3ZWVuIDEwIGFuZCAxMDAgTUJpdAogICAgaW50ZXJmYWNlcyBvbiB0aGUgZmx5LCB3aGVuIHJ1bm5pbmcgaW4gRkFTVF9FVEggbW9kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZDdlMzU0Mzc0YzhlYjBhNWQ4YjgyMjZiODgxYzVlZTI3NmM3N2E2MApBdXRob3I6IE5pY2sgVGhvbXBzb24gPG5pY2sudGhvbXBzb25AZ2UuY29tPgpEYXRlOglGcmkgRGVjIDE4IDEzOjMzOjA3IDIwMDkgKzAwMDAKCiAgICBUSTogRGFWaW5jaTogVXBkYXRpbmcgRU1BQyBkcml2ZXIgZm9yIERNMzY1LCBETTY0NnggYW5kIERBOFhYCgogICAgVGhlIEVNQUMgSVAgb24gRE0zNjUsIERNNjQ2eCBhbmQgREE4MzAgaXMgc2xpZ2h0bHkgZGlmZmVyZW50CiAgICBmcm9tIHRoYXQgb24gRE02NDR4LiBUaGlzIGNoYW5nZSB1cGRhdGVzIHRoZSBEYVZpbmNpIEVNQUMgZHJpdmVyCiAgICBzbyB0aGF0IEVNQUMgYmVjb21lcyBvcGVyYXRpb25hbCBvbiBTT0NzIHdpdGggRU1BQyB2Mi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMGY3NTFkNmVmM2U2ZmIxZDI4YWMyNzJjMzljMzQ4MzFkNjI5YTU5ZQpBdXRob3I6IFNlbWloIEhhemFyIDxzZW1paC5oYXphckBpbmRlZmlhLmNvbT4KRGF0ZToJVGh1IERlYyAxNyAxNTowNzoxNSAyMDA5ICswMjAwCgogICAgbWFjYjogRml4IG1paV9waHlfcmVhZCBhbmQgbWlpX3BoeV93cml0ZSBmdW5jdGlvbnMKCiAgICBFbmFibGluZyBDT05GSUdfQ01EX01JSSBpbiBBVlIzMiBib2FyZHMgd2FzIG5vdCBwb3NzaWJsZSBkdWUgdG8KICAgIGNvbXBpbGUgZXJyb3JzLgoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgbWlpcGh5X3JlYWQgYW5kIG1paXBoeV93cml0ZSBmdW5jdGlvbnMgYW5kCiAgICByZWdpc3RlcnMgdGhlbSBwcm9wZXJseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTZW1paCBIYXphciA8c2VtaWguaGF6YXJAaW5kZWZpYS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDVmNmIxNDQyMjE4ZmNiNmEzZWYwZDJiZTA1ZDg0MTE5Y2ViZmUwYWUKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglNb24gTm92IDkgMTM6MDk6NDggMjAwOSAtMDYwMAoKICAgIHRzZWM6IEFkZCBUU0VDX0ZJQkVSIGZsYWcKCiAgICBUaGUgVFNFQ19GSUJFUiBmbGFnIHNob3VsZCBiZSBzZXQgd2hlbiBhIFBIWSBpcyBvcGVyYXRpbmcgd2l0aCBhbgogICAgZXh0ZXJuYWwgZmliZXIgaW50ZXJmYWNlLiAgQ3VycmVudGx5IGl0IGlzIG9ubHkgdXNlZCB0byBub3RpZnkgYSB1c2VyCiAgICB0aGF0IHRoZSBQSFkgaXMgb3BlcmF0aW5nIGluIGZpYmVyIG1vZGUuCgogICAgQSBzaG9ydCBkZXNjcmlwdGlvbiB3YXMgYWxzbyBhZGRlZCB0byB0aGUgb3RoZXIgVFNFQyBmbGFnIGRlZmluZXMgc28KICAgIHRoYXQgaXQgaXMgY2xlYXIgaG93IHRoZXkgZGlmZmVyIGZyb20gb25lIGFub3RoZXIuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgOGFiYjhkY2M4ZDZmMmE5ZTMxNTUxYTZmYTQxZGU5N2JkMWYxNTM1MApBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBOb3YgOSAxMzowOTo0NyAyMDA5IC0wNjAwCgogICAgdHNlYzogQWRkIHN1cHBvcnQgZm9yIHVzaW5nIHRoZSBCQ001NDgyIFBIWSBpbiBmaWJlciBtb2RlCgogICAgVGhlIEJDTTU0ODIgUEhZIHN1cHBvcnRzIGJvdGggY29wcGVyIGFuZCBmaWJlciBhcyBhbiBldGhlcm5ldCBtZWRpdW0uCiAgICBCeSBlbmFibGluZyBpdHMgY29wcGVyL2ZpYmVyIG1vZGUgYXV0by1kZXRlY3Rpb24gZmVhdHVyZSBpdCBjYW4KICAgIGR5bmFtaWNhbGx5IGRldGVybWluZSBpZiBpdCBzaG91bGQgYmUgY29uZmlndXJlZCBmb3IgY29wcGVyIG9yIGZpYmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGM2ZGJkZmRhNTM5M2MxNTViYjEzYTkwZDlkNmJlNGZlNzVlYzM0OTgKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglNb24gTm92IDkgMTM6MDk6NDYgMjAwOSAtMDYwMAoKICAgIHRzZWM6IEdlbmVyYWwgY2xlYW51cAoKICAgIC0gQ2xlYW51cCBmb3JtYXR0aW5nIG9mIHBoeV9pbmZvIHN0cnVjdHVyZXMKCiAgICAtIEZpeCBsaW5lcyA+IDgwIGNoYXJzCgogICAgLSBGaXggc29tZSByYW5kb20gaW5kZW50YXRpb24gaW5jb25zaXN0ZW5jaWVzCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZTE5NTdlZjAyYzBkOTQ5YzI3ZjczODZlNWZhNTA5YTU3ZTAzM2Q1YQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBOb3YgOSAxMzowOTo0NSAyMDA5IC0wNjAwCgogICAgdHNlYzogTWFrZSBmdW5jdGlvbnMvZGF0YSBzdGF0aWMgd2hlbiBwb3NzaWJsZQoKICAgIFRoaXMgaXMgZ2VuZXJhbGx5IGdvb2QgcHJhY3RpY2UgYW5kIHNhdmVzIH4xNTAgYnl0ZXMuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMjcxNjViNWMzMjg0NjRiNzA2NjAxYjFjZDU4NmUzNTlhM2RjMmY2ZApBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBOb3YgOSAxMzowOTo0NCAyMDA5IC0wNjAwCgogICAgdHNlYzogQ2xlYW4gdXAgQnJvYWRjb20gUEhZIHN0YXR1cyBwYXJzaW5nCgogICAgLSBSZW1vdmUgdW5uZWNlc3NhcnkgcHJpbnRpbmcgIkVuZXQgc3RhcnRpbmcgaW4gPHNwZWVkPi88ZHVwbGV4PiIKCVRoaXMgc2FtZSBpbmZvcm1hdGlvbiBpcyBhbHJlYWR5IHByaW50ZWQgZHVyaW5nIG5vcm1hbCBldGhlcm5ldAoJb3BlcmF0aW9uIGluIHRoZSBmb3JtICJTcGVlZDogMTAwMCwgZnVsbCBkdXBsZXgiLgoKICAgIC0gQWRkIGEgY2hlY2sgZm9yIGxpbmsgYmVmb3JlIGRldGVybWluaW5nIGxpbmsgc3BlZWQgYW5kIGR1cGxleAoJSWYgdGhlcmUgaXMgbm8gbGluaywgc3BlZWQvZHVwbGV4IGRvbid0IG1hdHRlci4gIFRoaXMgYWxzbyByZW1vdmVzCgl0aGUgYW5ub3lpbmcgYW5kIHVubmVlZGVkICJBdXRvLW5lZyBlcnJvciwgZGVmYXVsdGluZyB0byAxMEJUL0hEIgoJbWVzc2FnZSB0aGF0IG9jY3VycyB3aGVuIG5vIGxpbmsgaXMgZGV0ZWN0ZWQuCgogICAgLSBXaGl0ZXNwYWNlIGFuZCBsaW5lID4gODAgY2hhcmFjdGVycyBjbGVhbnVwCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNDZlOTE2NzRmYjRiNmQwNmM2YTQ5ODRjMGI1YWM3ZDlhMTY5MjNmNApBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVR1ZSBOb3YgMyAxNzo1MjowNyAyMDA5IC0wNjAwCgogICAgdHNlYzogRm9yY2UgVEJJIFBIWSB0byAxMDAwTWJwcyBmdWxsIGR1cGxleCBpbiBTR01JSSBtb2RlCgogICAgSW4gU0dNSUkgbW9kZSB0aGUgbGluayBiZXR3ZWVuIGEgcHJvY2Vzc29yJ3MgaW50ZXJuYWwgVEJJIFBIWSBhbmQgYW4KICAgIGV4dGVybmFsIFBIWSBzaG91bGQgYWx3YXlzIGJlIDEwMDBNYnBzLCBmdWxsIGR1cGxleC4gIEFsc28sIHRoZSBTR01JSQogICAgaW50ZXJmYWNlIGJldHdlZW4gYW4gaW50ZXJuYWwgVEJJIFBIWSBhbmQgZXh0ZXJuYWwgUEhZIGRvZXMgbm90CiAgICBzdXBwb3J0IGluLWJhbmQgYXV0by1uZWdvdGF0aW9uLgoKICAgIFByZXZpb3VzbHksIHdoZW4gY29uZmlndXJlZCBmb3IgU0dNSUkgbW9kZSBhIFRCSSBQSFkgd291bGQgYXR0ZW1wdCB0bwogICAgcmVzdGFydCBhdXRvLW5lZ290YXRpb24gZHVyaW5nIGluaXRpYWxpenRpb24uICBUaGlzIGF1dG8tbmVnb3RhdGlvbgogICAgYmV0d2VlbiBhIFRCSSBQSFkgYW5kIGV4dGVybmFsIFBIWSB3b3VsZCBmYWlsIGFuZCByZXN1bHQgaW4gdW51c2FibGUKICAgIGV0aGVybmV0IG9wZXJhdGlvbi4KCiAgICBGb3JjaW5nIHRoZSBUQkkgUEhZIGFuZCBhbmQgZXh0ZXJuYWwgUEhZIHRvIGxpbmsgYXQgMTAwME1icHMgZnVsbCBkdXBsZXgKICAgIGluIFNHTUlJIG1vZGUgcmVzb2x2ZXMgdGhpcyBpc3N1ZSBvZiBhdXRvLW5lZ290YXRpb24gZmFpbGluZy4KCiAgICBOb3RlIHRoYXQgMTBNYnBzIGFuZCAxMDBNYnBzIG9wZXJhdGlvbiBpcyBzdGlsbCBwb3NzaWJsZSBvbiB0aGUgZXh0ZXJuYWwKICAgIHNpZGUgb2YgdGhlIGV4dGVybmFsIFBIWSBldmVuIHdoZW4gU0dNSUkgaXMgb3BlcmF0aW5nIGF0IDEwMDBNYnBzLgogICAgVGhlIFNHTUlJIGludGVyZmFjZSBzdGlsbCBvcGVyYXRlcyBhdCAxMDAwTWJwcywgYnV0IGVhY2ggYnl0ZSBvZiBkYXRhCiAgICBpcyByZXBlYXRlZCAxMDAgb3IgMTAgdGltZXMgZm9yIDEwLzEwME1icHMgYW5kIHRoZSBleHRlcm5hbCBQSFkgaGFuZGxlcwogICAgY29udmVydGluZyB0aGlzIGRhdGEgc3RyZWFtIGludG8gcHJvcGVyIDEwLzEwME1icHMgc2lnbmFsbGluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA3Njc3MWU1OTVhYTI2NDBkYThjN2I1ZWE4MWJkOTU4M2NjZGFiOGExCkF1dGhvcjogU2V1bmdoeWVvbiBSaGVlIDxzZXVuZ2h5ZW9uQGxwbXRlYy5jb20+CkRhdGU6CU1vbiBOb3YgMiAwMDowMDowMCAyMDA5IC0wODAwCgogICAgTkVUOiBGaXggTUFDIGFkZHIgaGFuZGxpbmcgZm9yIHNtYzkxMXgKCiAgICBUaGlzIHBhdGNoIHR1cm5zIG9mZiBNQUMgYWRkcmVzcyBtaXNtYXRjaCB3YXJuaW5nIHdoZW4KICAgIG9wdGlvbmFsIGVlcHJvbSBwcm9ncmFtbWVkIHdpdGggTUFDIGFkZHJlc3MgaXMgbm90IGF2YWlsYWJsZS4KICAgIEluIHRoYXQgY2FzZSwgc21jOTExeCdzIE1BQyBhZGRyZXNzIHJlZ2lzdGVyIGhhcyBpdHMgZGVmYXVsdAogICAgdmFsdWUgZmY6ZmY6ZmY6ZmY6ZmY6ZmYgYW5kIGl0J3Mgbm90IGEgdmFsaWQgYWRkcmVzcy4gVGhpcwogICAgbWFrZXMgZXRoX2luaXRpYWxpemUoKSBzaG93IHRoZSB3YXJuaW5nIHdoaWNoIGhhcyBubwogICAgbWVhbmluZ2Z1bCBpbmZvcm1hdGlvbiB3aGlsZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBldGhhZGRyCiAgICBvdmVycmlkZXMgdGhlIGFkZHJlc3MgcmVhZCBmcm9tIHRoZSByZWdpc3Rlci4gSWYgdGhlcmUncyBubwogICAgZWVwcm9tIGFuZCB0aGUgdmFsdWUgb2YgTUFDIGFkZHJlc3MgcmVnaXN0ZXIgaXMgbm90IHZhbGlkCiAgICBhZnRlciBpbml0aWFsaXphdGlvbiwgZGV2LT5lbmV0YWRkciBoYWQgYmV0dGVyIG5vdCBiZSB1cGRhdGVkCiAgICBhbmQgbWFpbnRhaW4gaXRzIGluaXRpYWwgdmFsdWUgMDA6MDA6MDA6MDA6MDA6MDAsIHdoaWNoIEkKICAgIHRoaW5rIGlzIHdoYXQgZXRoX2luaXRpYWxpemUoKSBleHBlY3RzLiBUaGlzIGlzIG5vdCBhIGJ1ZyBmaXguCiAgICBFdmVuIHdpdGhvdXQgdGhpcyBwYXRjaCwgdGhlIGRyaXZlciB3b3JrcyBmaW5lLiBJdCdzIGp1c3QgZm9yCiAgICBlbmhhbmNpbmcgdGhlIHdheSBvZiBkaXNwbGF5aW5nIG1lc3NhZ2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNldW5naHllb24gUmhlZSA8c2V1bmdoeWVvbkBscG10ZWMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAwN2M5NjYwNjZiOTc3YjI0ZjRiMDhiMTY4NGVlZDEzMGY0NjNiNGM2CkF1dGhvcjogTWF0dGhpYXMgS2FlaGxja2UgPG1hdHRoaWFzQGthZWhsY2tlLm5ldD4KRGF0ZToJVGh1IEphbiAyMSAyMjoxNjozNCAyMDEwICswMTAwCgogICAgY3M4OTAwX2luaXRpYWxpemUoKSBjbGVhbnVwCgogICAgY3M4OTAwX2luaXRpYWxpemUoKTogcmVtb3ZlIHVuZWNlc3NhcnkgY2FsbHMgdG8gZnJlZSgpIGFuZCBmaXggbWVtb3J5IGxlYWsKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBjNDE2OGFmM2JhMDNjMTdhNzM3NTFiOThjMTI0YmJkMmUzZTFmNWIwCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgSmFuIDIxIDA1OjA0OjU5IDIwMTAgLTA1MDAKCiAgICBzbWM5MTExMV9lZXByb206IGZpeCBsaW5raW5nIGVycm9yCgogICAgQnVpbGRpbmcgZm9yIGEgYmY1MzMtc3RhbXAgZW5kcyB1cCB3aXRoIHRoaXMgZXJyb3I6CiAgICBzbWM5MTExMV9lZXByb20ubzogSW4gZnVuY3Rpb24gYHNtYzkxMTExX2VlcHJvbSc6CiAgICBleGFtcGxlcy9zdGFuZGFsb25lL3NtYzkxMTExX2VlcHJvbS5jOjU4OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBtZW1zZXQnCiAgICBtYWtlWzJdOiAqKiogW3NtYzkxMTExX2VlcHJvbV0gRXJyb3IgMQoKICAgIFRoZSBuZXcgZXRoX3N0cnVjdCBkZWZpbml0aW9uIG1lYW5zIGdjYyBoYXMgdG8gemVybyBvdXQgdGhlIHN0cnVjdHVyZSBvbgogICAgdGhlIHN0YWNrLCBhbmQgc29tZSBnY2MgdmVyc2lvbnMgb3B0aW1pemUgdGhpcyB3aXRoIGFuIGltcGxpY2l0IGNhbGwgdG8KICAgIG1lbXNldC4gIFNvIHR3ZWFrIHRoZSBzdHJ1Y3R1cmUgc3R5bGUgdG8gYXZvaWQgdGhhdCBnY2MgZmVhdHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDVmNTY2ZjQ1NDc1MGJlNGYyZjgzMjg4ZWYzODJhZmNiOWM0YWE4YTQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gSmFuIDMxIDIxOjUxOjQzIDIwMTAgKzAxMDAKCiAgICBjbWRfeGltZy5jOiBmaXggZXJyb3I6ICdpJyB1bmRlY2xhcmVkCgogICAgRml4IGNvbXBpbGUgZXJyb3I6CgoJY21kX3hpbWcuYzogSW4gZnVuY3Rpb24gJ2RvX2ltZ2V4dHJhY3QnOgoJY21kX3hpbWcuYzoyMzQ6IGVycm9yOiAnaScgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCgljbWRfeGltZy5jOjIzNDogZXJyb3I6IChFYWNoIHVuZGVjbGFyZWQgaWRlbnRpZmllciBpcyByZXBvcnRlZCBvbmx5IG9uY2UKCWNtZF94aW1nLmM6MjM0OiBlcnJvcjogZm9yIGVhY2ggZnVuY3Rpb24gaXQgYXBwZWFycyBpbi4pCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBhNmU0MmVkMDk3MjIwYTgyODcwYTMyZjRlNjBhYzg4NjNhOGIwNWFiCkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglTYXQgRGVjIDEyIDIxOjIwOjU3IDIwMDkgKzAxMDAKCiAgICBsY2Q6IHJlbW92ZSBDT05GSUdfQVRNRUxfTENEIGlmZGVmcyBmcm9tIGxjZF9zZXRmZ2NvbG9yCgogICAgTm90IGFsbCBib2FyZHMgZGVmaW5pbmcgTENEX0NPTE9SMTYgYXJlIGFibGUgdG8gc2V0CiAgICBsY2RfY29sb3JfZmcvbGNkX2NvbG9yX2JnIGNvcnJlY3RseS4gVGhlIGlzc3VlIHNlZW1zIHRvCiAgICBiZSBjYXVzZWQgYnkgQ09ORklHX0FUTUVMX0xDRCBpZmRlZnMgaW4gbGNkX3NldGZnY29sb3IoKQogICAgYW5kIGxjZF9zZXRiZ2NvbG9yKCkuIEFjdHVhbGx5LCB0aGUgY29sb3IgdmFsdWVzIHBhc3NlZAogICAgdG8gdGhlc2UgZnVuY3Rpb25zIGFyZSBhbHJlYWR5IGNvcnJlY3QsIHdlIGRvbid0IG5lZWQKICAgIHRvIGZpeCB0aGVtLiBTbyByZW1vdmUgaWZkZWZzIGhlcmUuCgogICAgUmVwb3J0ZWQtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgZDg0MTk3OGVhNjE2ZTY2MWU0OGY4ZGE0MDQ1YTcxZDYyMTc4MjNiZApBdXRob3I6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+CkRhdGU6CVNhdCBEZWMgNSAxMzozOTo0MSAyMDA5ICswMTAwCgogICAgaW5jbHVkZS9ub21hZGlrLmg6IGFkZCBwaHlzaWNhbCBhZGRyZXNzIGZvciBjbGRjCgogICAgU2lnbmVkLW9mZi1ieTogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUB1bmlwdi5pdD4KICAgIEFja2VkLWJ5OiBBbmRyZWEgR2FsbG8gPGFuZHJlYS5nYWxsb0BzdGVyaWNzc29uLmNvbT4KCmNvbW1pdCAzZTQ0NmNiZGYzMDIyMWI5Y2EzYTg5YjBmNWFiYmZjNjkxY2U3NzU1CkF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUB1bmlwdi5pdD4KRGF0ZToJU2F0IERlYyA1IDEzOjM5OjMxIDIwMDkgKzAxMDAKCiAgICB2aWRlbzogYWRkIGFtYmEtY2xjZCBwcmltZS1jZWxsCgogICAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHRoZSBDTENEIGxvZ2ljIGNlbGwuIEl0IGFjY2VwdHMgcHJlY29tcGlsZWQKICAgIHJlZ2lzdGVyIHZhbHVlcyBmb3Igc3BlY2lmaWMgY29uZmlndXJhdGlvbiB0aHJvdWdoIGEgYm9hcmQtc3VwcGxpZWQKICAgIGRhdGEgc3RydWN0dXJlLiAgSXQgaXMgdXNlZCBieSB0aGUgTm9tYWRpayBuaGs4ODE1LCBhZGRlZCBieSBhIGxhdGVyCiAgICBwYXRjaCBpbiB0aGlzIHNlcmllcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgogICAgQWNrZWQtYnk6IEFuZHJlYSBHYWxsbyA8YW5kcmVhLmdhbGxvQHN0ZXJpY3Nzb24uY29tPgoKY29tbWl0IGIwODFjMmU5YjkzMjlkN2RhZGM4ZDEzZmM5YTJiYWU1YzkwYTEyMDQKQXV0aG9yOiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KRGF0ZToJVHVlIEphbiAyNiAxOToyNDoxOCAyMDEwIC0wNzAwCgogICAgTmFuZCBteGNfbmFuZCBhZGQgdjEuMSBjb250cm9sbGVyIHN1cHBvcnQKCiAgICBBZGQgc3VwcG9ydCBmb3IgdmVyc2lvbiAxLjEgb2YgdGhlIG5mYyBuYW5kIGZsYXNoCiAgICBjb250cm9sbGVyIHdoaWNoIGlzIG9uIHRoZSBpLm14MjUgc29jLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gUmlnYnkgPGpjcmlnYnlAZ21haWwuY29tPgogICAgQ0M6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGYzYmI2M2EzMDRjNGU3NjAxMGEyYTRlOTlkYTYxZjdiNmZmZmZjNzcKQXV0aG9yOiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KRGF0ZToJVHVlIEphbiAyNiAxOToyNDoxNyAyMDEwIC0wNzAwCgogICAgQWRkIE1YMjUgc3VwcG9ydCB0byBuYW5kX3NwbCBmc2wgbmZjIGRyaXZlcgoKICAgIE1YMjUgaGFzIGEgZGlmZmVyZW50IHZlcnNpb24gb2YgdGhlIGZzbF9uZmMKICAgIGZsYXNoIGNvbnRyb2xsZXIga25vd24gYXMgdmVyc2lvbiAxLjEuCgogICAgQWRkIHN1cHBvcnQgdG8gdGhlIG5hbmRfc3BsIGZzbF9uZmMgZHJpdmVyCgogICAgVmVyc2lvbmluZyBkaWZmZXJzIGZyb20gbWFpbmxpbmUgbXhjIGtlcm5lbCBkcml2ZXIKICAgIG5vIGNvbnNlbnN1cyB5ZXQgb24gaWYgdGhlIG5hbWluZyBoZXJlIGFuZCBpbgogICAgUmVkYm9vdCBvciB0aGUga2VybmVsIGlzICJjb3JyZWN0Ii4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBDQzogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZWYyMmI1MDM3MGY3YjZkOGRlYmE5ZTllNjRkMmNiMTNjNTQyYjY0NwpBdXRob3I6IEpvaG4gUmlnYnkgPGpjcmlnYnlAZ21haWwuY29tPgpEYXRlOglNb24gSmFuIDI1IDIzOjEyOjUyIDIwMTAgLTA3MDAKCiAgICBhcm05MjZlanM6IGFkZCBuYW5kX3NwbCBib290IHN1cHBvcnQKCiAgICBBZGQgQ09ORklHX1BSRUxPQURFUi9DT05GSUdfTkFORF9TUEwgc3VwcG9ydCBmb3IgbmFuZCBib290aW5nCiAgICB0byBhcm05MjZlanMvc3RhcnQuUwoKICAgIFRoaXMgaXMgZGVyaXZlZCBmcm9tIENPTkZJR19QUkVMT0FERVIgc3VwcG9ydCBpbiBhcm0xMTM2L3N0YXJ0LlMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KICAgIENDOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxNWI4NmMzZDZjOWE1YTJlOTE3YjczZDc1OGE1NTY1Njg0MzAwMjFhCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IEphbiAxNiAyMTo1MDoyNiAyMDEwIC0wNzAwCgogICAgZW52X25hbmQuYzogcHJpbnQgZXJyb3IgbWVzc2FnZSBhbmQgZmFpbCBncmFjZWZ1bGx5CgogICAgZW52X25hbmQuYyB3b3VsZCBjcmFzaCBzaWxlbnRseSBpZiBhIG1hbGxvYygpIGZvciB0aGUgZW52aXJvbm1lbnQKICAgIGJ1ZmZlcnMgZmFpbGVkOyBtYWtlIGl0IHByaW50IGFuIGVycm9yIG1lc3NhZ2UgYW5kIGZhaWwgZ3JhY2VmdWxseSwKICAgIGkuIGUuIHVzZSB0aGUgZGVmYXVsdCBlbnZpcm9ubWVudCB0aGVuLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBBY2tlZC1ieTogSm9obiBSaWdieSA8amNyaWdieUBnbWFpbC5jb20+Cgpjb21taXQgNjc0ZWY3YmQwMmRlOTQ4YjZkODc1N2Y2YTQzYTZmMmZhNGQ4ODc2OQpBdXRob3I6IExpdSBZdSA8eXUubGl1QGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKYW4gMTggMTk6MDM6MjggMjAxMCArMDgwMAoKICAgIE5hbmQgYm9vdDogQWRkIG5hbmQgYm9vdCBzdXBwb3J0IGZvciBNUEM4NTY5bWRzIGJvYXJkCgogICAgVGhpcyBwYXRjaCBhZGQgbmFuZCBib290IHN1cHBvcnQgZm9yIE1QQzg1NjltZHMgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogTGl1IFl1IDx5dS5saXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyNDlkNGRlYzY5ZThkNDFjYTU4ZmU2Y2IzYzU2ZWE2ZjA0ODBlZjE2CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEphbiAyNyAxMDoxNjo1NiAyMDEwIC0wNjAwCgogICAgRml4IGNvbXBpbGVyIHdhcm5pbmcgaW4gaW14aW1hZ2UuYyBkdWUgdG8gZ2V0bGluZSBwcm90b3R5cGUKCiAgICBpbXhpbWFnZS5jOiBJbiBmdW5jdGlvbiAnaW14aW1hZ2VfcGFyc2VfY2ZnX2ZpbGUnOgogICAgaW14aW1hZ2UuYzoxNDI6IHdhcm5pbmc6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdnZXRsaW5lJwoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYTljM2FjNzhkODFkN2ZmNGZlMjM5ZTI5MmUxMWUwZjc4YWM1ZDQ2MQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBKYW4gMTIgMTI6NTY6MDUgMjAxMCAtMDYwMAoKICAgIDg1eHg6IEFkZCBzdXBwb3J0IGZvciAnY3B1IGRpc2FibGUnIGNvbW1hbmQKCiAgICBTdXBwb3J0IGRpc2FibGluZyBvZiBhIGNvcmUgdmlhIHVzZXIgY29tbWFuZCAnY3B1IGRpc2FibGUnLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYzg5NDg1MmI3YWEyYWM1ZjA0Y2E3MGEwNzNmODAzYWE2NjVjM2VjMQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBKYW4gMTIgMTE6NTE6NTIgMjAxMCAtMDYwMAoKICAgIDg2eHg6IEFkZCBzdXBwb3J0IGZvciAnY3B1IGRpc2FibGUnIGNvbW1hbmQKCiAgICBTdXBwb3J0IGRpc2FibGluZyBvZiBhIGNvcmUgdmlhIHVzZXIgY29tbWFuZCAnY3B1IGRpc2FibGUnLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNDE5NGIzNjY4YTkzZWVlMThkZDFmN2ViMTMwOWNhN2IwNTAwM2FhNwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBKYW4gMTIgMTE6NDI6NDMgMjAxMCAtMDYwMAoKICAgIEFkZCBzdXBwb3J0IHRvIGRpc2FibGUgY3B1J3MgaW4gbXVsdGljb3JlIHByb2Nlc3NvcnMKCiAgICBBZGQgYSBkaXNhYmxlIHN1Yi1jb21tYW5kIHRvIHRoZSBjcHUgY29tbWFuZCB0aGF0IGFsbG93cyBmb3IgZGlzYWJsaW5nCiAgICBjb3JlcyBpbiBtdWx0aWNvcmUgcHJvY2Vzc29ycy4gIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3Igc3lzdGVtcyB0aGF0IGFyZQogICAgdXNpbmcgbXVsdGljb3JlIGNoaXBzIGJ1dCBhcmVuJ3QgdXRpbGl6aW5nIGFsbCB0aGUgY29yZXMgYXMgYSB3YXkgdG8KICAgIHJlZHVjZSBwb3dlciBhbmQgcG9zc2libHkgaW1wcm92ZSBwZXJmb3JtYW5jZS4KCiAgICBBbHNvIHVwZGF0ZWQgYW4gYWRkZWQgbWlzc2luZyBjb3B5cmlnaHQuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA4YjE3NjBlZDlhMzVhNWZkNzFkMWY2NDk4MTA2OGNhMjk3OWYxZTNkCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVdlZCBKYW4gMjAgMDk6MDU6MzIgMjAxMCArMDEwMAoKICAgIDgzeHgsIGttZXRlcjE6IGZpeCBjb21waWxlIGVycm9yCgogICAgLSBkZWxldGUgZG91YmxlIE1URElEU19ERUZBVUxUIGFuZCBNVERQQVJUU19ERUZBVUxUCiAgICAgIGRlZmluZXMgaW4gYm9hcmQgY29uZmlnIGZpbGUuCiAgICAtIGFkZCBtaXNpbmcgQ09ORklHX0tNX1VCSV9QQVJUSVRJT05fTkFNRSBkZWZpbmUKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNTkxMmQzNjUwNzQwNDY4MzI5YTBkZjAxNDEwOTEzMjQzMWQyMTQwZApBdXRob3I6IFdvbGZnYW5nIFdlZ25lciA8dy53ZWduZXJAYXN0cm8ta29tLmRlPgpEYXRlOglUaHUgRGVjIDEwIDEwOjExOjIxIDIwMDkgKzAxMDAKCiAgICBhZGQgYWJpbGl0eSB0byBoYW5kbGUgY29tcHJlc3NlZCBpbWFnZXMgdG8gaW14dHJhY3QKCiAgICBpbXh0cmFjdCBjdXJyZW50bHkgY2FuIG5vdCBoYW5kbGUgY29tcHJlc3NlZCBpbWFnZXMuIFRoaXMgcGF0Y2ggYWRkcwogICAgaGFuZGxpbmcgZm9yIGJ6aXAyIGFuZCB6aXAgY29tcHJlc3Npb24uIEluIGJvdGggY2FzZXMsIGEgZGVzdGluYXRpb24KICAgIGFkZHJlc3MgaGFzIHRvIGJlIHNwZWNpZmllZCBmb3IgZXh0cmFjdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBXZWduZXIgPHcud2VnbmVyQGFzdHJvLWtvbS5kZT4KCmNvbW1pdCBhMTZlOWE1YjVmMjMxMDY2NjVkZGUxNWQ5NzRkYjE3ZThhZWI4M2YxCkF1dGhvcjogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+CkRhdGU6CVR1ZSBKYW4gMTkgMTQ6NDE6NTcgMjAxMCArMDEwMAoKICAgIHBwYzogcmVtb3ZlIC1mZml4ZWQtcjE0IGdjYyBvcHRpb24uCgogICAgVGhpcyBpcyBubyBsb2dlciBuZWVkZWQsIGZyZWUgdXAgcjE0IGZvciBnZW5lcmFsIHVzYWdlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgoKY29tbWl0IGU2YmVlODA4MTRjM2EwZDdlYWI4OWQyODE0MmZlNjhjNGE2NzBmMzEKQXV0aG9yOiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KRGF0ZToJVHVlIEphbiAxOSAxNDo0MTo1OCAyMDEwICswMTAwCgogICAgcHBjOiBVcGRhdGUgUkVBRE1FIGFib3V0IHRoZSBuZXcgR09UIHB0ci4KCiAgICByMTQgaXMgbm8gbG9uZ2VyIHVzZWQgYXMgbm9uIHZvbGF0aWxlIEdPVCBwdHIuIEluc3RlYWQKICAgIHRoZSB2b2xhdGlsZSByMTIgaXMgdXNlZCBzbyBiZSBzdXJlIHRvIGRvIEdFVF9HT1QgaW4KICAgIGFzbSBjb2RlIHdoZW4geW91IG5lZWQgdG8gYWNjZXNzIGdsb2JhbCBkYXRhLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgoKY29tbWl0IDBmOGFhMTU5MTc1Mzg1ZGRkNzdiYzkxZDExYjk1Njg1ODNmYmJkMGMKQXV0aG9yOiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KRGF0ZToJVHVlIEphbiAxOSAxNDo0MTo1NiAyMDEwICswMTAwCgogICAgcHBjOiBVc2UgcjEyIGluc3RlYWQgb2YgcjE0IGFzIEdPVCBwb2ludGVyLgoKICAgIHIxNCBpcyBub3Qgc3VwcG9zZWQgdG8gYmUgY2xvYmJlcmVkIGJ5IGZ1bmN0aW9ucy4gU3dpdGNoCiAgICB0byByMTIgYW5kIGNhbGwgR0VUX0dPVCB3aGVuIG5lZWRlZC4gVGhpcyB3aWxsIGFsbG93IHUtYm9vdAogICAgdG8gbG9vc2UgdGhlIC1mZml4ZWQtcjE0IGdjYyBvcHRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+Cgpjb21taXQgZmM0ZTE4ODc4OWIwMWRjOWYxOGM4MDg2OWM0M2ZkZDdkMWE1MTM3OApBdXRob3I6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgpEYXRlOglUdWUgSmFuIDE5IDE0OjQxOjU1IDIwMTAgKzAxMDAKCiAgICBwcGM6IExvb3NlIEdPVCBhY2Nlc3MgaW4gSVJRCgogICAgVXNpbmcgdGhlIEdPVCBpbiBJUlEgaGFuZGxlcnMgcmVxdWlyZXMgcjE0IHRvIGJlIC1mZml4ZWQtcjE0LgogICAgQXZvaWQgdGhpcyBieSByZWxvY2F0YXRlIHRyYW5zZmVyX3RvX2hhbmRsZXIgdG9vLgogICAgVGhpcyB3aWxsIGFsbG93IHRvIGZyZWUgdXAgcjE0IGxhdGVyIG9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgoKY29tbWl0IDY2ZTgyMWViZTk2MTIzYjNhODFlYzljYTI1Y2VjOWMwNTYwZmUyMzIKQXV0aG9yOiBWaXZlayBNYWhhamFuIDx2aXZlay5tYWhhamFuQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKYW4gNyAxNDoyNzoxNCAyMDEwICswNTMwCgogICAgODV4eC9wMV9wMl9yZGI6IGVuYWJsZSBod2NvbmZpZwoKICAgIFNpZ25lZC1vZmYtYnk6IFZpdmVrIE1haGFqYW4gPHZpdmVrLm1haGFqYW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNDZkZjY0ZjIyYzQ3MWIwMTAxNjFhYTY4YmZkYmZlOTRlYTQ2ZTdiZApBdXRob3I6IExpdSBZdSA8eXUubGl1QGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBKYW4gMTUgMTQ6NTg6NDAgMjAxMCArMDgwMAoKICAgIHFlOiBmaXh1cCB0aGUgc251bSBmb3IgTVBDODU2OSBSZXYyLjAKCiAgICBTaW5jZSAxLjAgYW5kIDIuMCB1c2UgZGlmZmVyZW50IHNudW0gdGFibGUsCiAgICB3ZSBmaXh1cCB0aGUgc251bSB2YWx1ZSBhY2NvcmRpbmcgdG8gU1BSTl9TVlIuCgogICAgU2lnbmVkLW9mZi1ieTogTGl1IFl1IDx5dS5saXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMGZkMmZhNmNjZTZlYjkxMjcxZWJmOTczMzg3OGQwZjFmY2JjOWIzMgpBdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBOb3YgMTcgMjA6NDk6MDUgMjAwOSArMDgwMAoKICAgIEZpeCB0aGUgbG9jYWwgYnVzIGRpdmlkZXIgbWFwcGluZwoKICAgIFRoZSByZWFsIGNsb2NrIGRpdmlkZXIgaXMgNCB0aW1lcyBvZiB0aGUgYml0cyBMQ1JSW0NMS0RJVl0sCiAgICBhY2NvcmRpbmcgdGhlIGxhdGVzdCBSZXZGIFJNLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGM5NWQ1NDFlNGI0NmNiM2JhMTliZjM1ZTM0YjFkYzNjYTMyZjdiNGIKQXV0aG9yOiBMaXUgWXUgPHl1LmxpdUBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgTm92IDI3IDE1OjMxOjUyIDIwMDkgKzA4MDAKCiAgICBwcGMvODV4eDogQWRkIEFUTSBjb25maWcgZm9yIE1QQzg1NjlNRFMKCiAgICBTaWduZWQtb2ZmLWJ5OiBMaXUgWXUgPHl1LmxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBkOTE4MDM4MjY5ODViZmRmMTUxZWVkNjY1NDNjZTNiMWEzMDE2ODJmCkF1dGhvcjogTGl1IFl1IDx5dS5saXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE5vdiAyNyAxNTozMTo1MSAyMDA5ICswODAwCgogICAgcHBjLzg1eHg6IEFkZCBQSUIvQVRNIHN1cHBvcnQgZm9yIE1QQzg1NjltZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBMaXUgWXUgPHl1LmxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAxMTE4Y2RiZmViOGZjM2FjZmU1NDJkMDg3MDMxNTNhYzE4OGY5ZGJkCkF1dGhvcjogTGkgWWFuZyA8bGVvbGlAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEphbiA3IDE2OjAwOjEzIDIwMTAgKzA4MDAKCiAgICBmc2xfZXNkaGM6IGZpeCB3cm9uZyBjbG9jayBtYXNrCgogICAgRml4IHR5cG8gaW4gU1lTQ1RMX0NMT0NLX01BU0ssIHdoaWNoIGNhdXNlZCByZXNpZHVhbCBpbiBoaWdoIGJpdHMgb2YgU0RDTEtGUy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKaW4gUWluZyA8QjI0MzQ3QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBMaSBZYW5nIDxsZW9saUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA2OTM0MTZmZTAxZDMyNDQ3MmQyNzBhYzI4Mzg5MDIyZWI4MmM3MjE3CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIEphbiAyNSAxMTowMTo1MSAyMDEwIC0wNjAwCgogICAgUmV2ZXJ0ICJwcGMvcDQwODA6IEZpeCByZXBvcnRpbmcgb2YgUE1FICYgRk0gY2xvY2sgZnJlcXVlbmNpZXMiCgogICAgVGhpcyByZXZlcnRzIGNvbW1pdCBiYzIwZjlhOTUyN2FmZThhZTQwNmE3NGY3NDc2NWQ0MzIzZjA0OTIyLgoKICAgIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBjb3JyZWN0LiAgSSBjbGVhcmx5IG5lZWQgZ2xhc3NlcyBvciBhIGJyb3duCiAgICBwYXBlciBiYWcuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA5M2NlZGM3MTY0N2I0YjcyYWM5YjQ4ZTExOTk3ZWIyZjkxNjQ1MDAxCkF1dGhvcjogSmFtZXMgWWFuZyA8SmFtZXMuWWFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSmFuIDEyIDE1OjUwOjE4IDIwMTAgLTA2MDAKCiAgICBwcGMvcDQwODA6IEZpeCBtYXNrIHdpZHRoIG9mIFJDVyBmaWVsZHMgTUVNX1BMTF9SQVQsIFNZU19QTExfUkFUCgogICAgVGhlIG1hc2tzIGZvciBNRU1fUExMX1JBVCBhbmQgU1lTX1BMTF9SQVQgc2hvdWxkIGhhdmUgYmVlbiA1LWJpdHMKICAgIGluc3RlYWQgb2YgNC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYW1lcyBZYW5nIDxKYW1lcy5ZYW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDI5MDNhZDMzYTcxMjUxYTNhODc0ODViNWIxODU4NTJjODk5OGYyMDkKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CUZyaSBKYW4gOCAwODowMzowNiAyMDEwIC0wNTAwCgogICAgamZmczI6IGZpeCBoYW5ncy9jcmFzaHMgd2hlbiBub3QgdXNpbmcgQ09ORklHX0pGRlMyX1BBUlRfU0laRQoKICAgIENvbW1pdCBiNWIwMDRhZDhhMGFjNmY5OGJkNTcwOGVjOGIyMmZiZGRkMWMxMDQyIGNhdXNlZCB0aGUgc2VjdG9yX3NpemUgdG8KICAgIGJlIGNhbGN1bGF0ZWQgaW5jb3JyZWN0bHkgd2hlbiB0aGUgcGFydCBzaXplIHdhcyBub3QgaGFyZGNvZGVkLiAgVGhpcyBpcwogICAgYmVjYXVzZSB0aGUgbmV3IGNvZGUgcmVsaWVkIG9uIHBhcnQtPnNpemUgYnV0IHRyaWVkIHRvIGRvIHRoZSBjYWxjdWxhdGlvbgogICAgYmVmb3JlIGl0IHdhcyBpbml0aWFsaXplZCBwcm9wZXJseSwgYW5kIGl0IGRpZCBub3QgdGFrZSBpbnRvIGNvbnNpZGVyYXRpb24KICAgIHRoZSBtYWdpYyBTSVpFX1JFTUFJTklORyBkZWZpbmUuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDY0YjE1MDIxMzM2NWRiNmJlOTdhOThkMjU4ODRmODdkODNjYWFjYWYKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CUZyaSBKYW4gOCAwMjo0ODowMyAyMDEwIC0wNTAwCgogICAgZ2V0bGluZTogc3BsaXQgb3V0IGZvciBkYXJ3aW4gc3lzdGVtcwoKICAgIEF0IGxlYXN0IG9uIE9TIFggMTAuNSBhbmQgb2xkZXIsIGdldGxpbmUgZG9lcyBub3QgZXhpc3QuICBTbyBzcGxpdCBvdXQgdGhlCiAgICBmdW5jdGlvbiBmcm9tIHRoZSBtaW5ndyBjb2RlIHNvIHRoYXQgd2UgY2FuIHB1bGwgaXQgaW4gZm9yIERhcndpbiBzeXN0ZW1zLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBlODUyZDM2YTFlMTI4NjRhYjA2NTY3MjljNDVjODQ2ZTY1ZWZhNGVlCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgSmFuIDIxIDE5OjU5OjA0IDIwMTAgLTA1MDAKCiAgICB0b29sczogZ2l2ZSBleHBsaWNpdCBsaWJmZHQgcGF0aHMKCiAgICBUaGUgY3VycmVudCBsaWJmZHQgb2JqZWN0IHJ1bGVzIGhhcmQgZGVwZW5kIGltcGxpY2l0bHkgb24gdGhlIC5kZXBlbmQgZmlsZQogICAgYmVpbmcgY29ycmVjdC4gIElmIGl0IGlzbid0LCB0aGVuIGl0IGlzIHVuYWJsZSB0byBwcm9wZXJseSBjb21waWxlIHRoZQogICAgb2JqZWN0cy4gIEdpdmUgaXQgYSBmdWxsIHBhdGggbGlrZSBhbGwgdGhlIG90aGVyIGltcGxpY2l0IHJ1bGVzIGhlcmUgc28gaXQKICAgIHdpbGwgYWx3YXlzIHdvcmsgaW4gZmFjZSBvZiAuZGVwZW5kIGlzc3Vlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNDQ0MzFjYWJiYjY2ZTgxYTJkNzc2NDJiNmY3ZDM5YzYyMzBlYTRiYQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEphbiAyMSAxOTozMDozNiAyMDEwIC0wNTAwCgogICAgZ3ppcC96bGliOiBtYWtlIGZlYXR1cmVzIG9wdGlvbmFsCgogICAgSWYgeW91IHJlYWxseSB3YW50IHRvIHNsaW0gZG93biBVLUJvb3QgYW5kIHlvdSB3b3VsZCByYXRoZXIgdXNlIGEgaGlnaGVyCiAgICBjb21wcmVzc2lvbiBzY2hlbWUgKGxpa2UgTFpNQSksIGl0J2QgYmUgbmljZSB0byBkaXNhYmxlIGd6aXAvemxpYiBzaW5jZQogICAgdGhlc2UgY29kZSBiYXNlcyB0YWtlIHVwIGEgc2lnbmlmaWNhbnQgYW1vdW50IG9mIHNwYWNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA4ZWRjZGU1ZTRlMmU3ZjZiYzdlMjc3MDExZmVkNzFlNjRmZDlkMjk0CkF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CVdlZCBKYW4gMjAgMTg6MTk6MTAgMjAxMCArMDEwMAoKICAgIG1raW1hZ2U6IEFkZCBGcmVlc2NhbGUgaW14IEJvb3QgSW1hZ2Ugc3VwcG9ydCAoaW14aW1hZ2UpCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yICJpbXhpbWFnZSIgKE1YIEJvb3QgSW1hZ2UpCiAgICB0byB0aGUgbWtpbWFnZSB1dGlsaXR5LiBUaGUgaW14aW1hZ2UgaXMgdXNlZCBvbiB0aGUgRnJlZXNjYWxlcydzCiAgICBNWC4yNSwgTVguMzUgYW5kIE1YLjUxIHByb2Nlc3NvcnMuCgogICAgRnVydGhlciBkZXRhaWxzIHVuZGVyIGRvYy9SRUFETUUuaW14aW1hZ2UuCgogICAgVGhpcyBwYXRjaCB3YXMgdGVzdGVkIG9uIGEgRnJlZXNjYWxlIG14NTFldmsgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Cgpjb21taXQgYTIxZmI5ODFkNTMzYWM2ZDMyM2EwMWM3ZmEyY2RhMjBmMmQzNmRlNQpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDIwIDE0OjI4OjQ4IDIwMTAgKzAxMDAKCiAgICBtcGM1eHh4OiBTdXBwb3J0IENQVSBpbnRlcm5hbCB3YXRjaGRvZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KCmNvbW1pdCA4MjgyNmQ1NDIyMzMxZTljOTllNTQwOGRjZjAzNDhjOGUwYzI1N2E2CkF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+CkRhdGU6CUZyaSBKYW4gMjIgMTQ6NDc6NTkgMjAxMCArMDEwMAoKICAgIG1wYzUxMng6IEFkZCBkaXNwbGF5IG9mIHJlc2V0IHN0YXR1cyByZWdpc3RlcgoKICAgIENvbnRlbnQgb2YgdGhlIFJTUiBpcyBwdXQgaW50byBnZCBlYXJseSBzbyB3ZSBjYW4gb3V0cHV0IGl0IHRvZ2V0aGVyCiAgICB3aXRoIHRoZSBDUFUgaW5mby4JVGhlIGNsZWFyaW5nIG9mIGdkIGluIGJvYXJkX2luaXRfZiBpcyByZWR1bmRhbnQgZm9yCiAgICB0aGlzIGFyY2hpdGVjdHVyZSBhcyBpdCBpcyBkb25lIGluIGNwdV9pbml0X2Ygc28gd2UgcmVtb3ZlIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgoKY29tbWl0IGEzZjM4OTdiZmRhOWI0NzI5Nzg1YmRkMzI4YjNiN2YzMDQxN2E2N2YKQXV0aG9yOiBEYW5pZWwgR29yc3Vsb3dza2kgPERhbmllbC5Hb3JzdWxvd3NraUBlc2QuZXU+CkRhdGU6CVdlZCBKYW4gMjAgMDg6MDA6MTEgMjAxMCArMDEwMAoKICAgIGF0OTE6IEVuYWJsZSBzbG93IG1hc3RlciBjbG9jayBvbiBtZWVzYyBib2FyZAoKICAgIE5vcm1hbGx5IHRoZSBwcm9jZXNzb3IgY2xvY2sgaGFzIGEgZGl2aXNvciBvZiAyLgogICAgSW4gc29tZSBjYXNlcyB0aGlzIHRoaXMgbmVlZHMgdG8gYmUgc2V0IHRvIDQuCiAgICBDaGVjayB0aGUgdXNlciBoYXMgc2V0IGVudmlyb25tZW50IG1kaXYgdG8gNCB0byBjaGFuZ2UgdGhlIGRpdmlzb3IuCgogICAgU2lnbmVkLW9mZi1ieTogRGFuaWVsIEdvcnN1bG93c2tpIDxEYW5pZWwuR29yc3Vsb3dza2lAZXNkLmV1PgoKY29tbWl0IDdkYTY5MjM2MDQxNGQwNzAyN2M2Y2Y1NjRhMTVkNzljZDlkY2Y0ODgKQXV0aG9yOiBWaXBpbiBLVU1BUiA8dmlwaW4ua3VtYXJAc3QuY29tPgpEYXRlOglGcmkgSmFuIDE1IDE5OjE1OjUzIDIwMTAgKzA1MzAKCiAgICBTUEVBciA6IFN1cHBvcnQgYWRkZWQgZm9yIFNQRUFyMzIwIGJvYXJkCgogICAgU1BFQXIzMjAgU29DIHN1cHBvcnQgY29udGFpbnMgYmFzaWMgc3BlYXIzMjAgc3VwcG9ydCBhbG9uZyB3aXRoIHRoZQogICAgdXNhZ2Ugb2YgZm9sbG93aW5nIGRyaXZlcnMKICAgIC0gc2VyaWFsIGRyaXZlcihVQVJUKQogICAgLSBpMmMgZHJpdmVyCiAgICAtIHNtaSBkcml2ZXIKICAgIC0gbmFuZCBkcml2ZXIoRlNNQykKICAgIC0gdXNiZCBkcml2ZXIKICAgIC0gZW1pIGRyaXZlcihjZmkgc3VwcG9ydCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBWaXBpbiA8dmlwaW4ua3VtYXJAc3QuY29tPgoKY29tbWl0IDA4MGNmZWU3MTQ1OTU4OGZkNjMxMmU0NzViYjUxMTViZGJkYTFjYjMKQXV0aG9yOiBWaXBpbiBLVU1BUiA8dmlwaW4ua3VtYXJAc3QuY29tPgpEYXRlOglGcmkgSmFuIDE1IDE5OjE1OjUyIDIwMTAgKzA1MzAKCiAgICBTUEVBciA6IFN1cHBvcnQgYWRkZWQgZm9yIFNQRUFyMzEwIGJvYXJkCgogICAgU1BFQXIzMTAgU29DIHN1cHBvcnQgY29udGFpbnMgYmFzaWMgc3BlYXIzMTAgc3VwcG9ydCBhbG9uZyB3aXRoIHRoZQogICAgdXNhZ2Ugb2YgZm9sbG93aW5nIGRyaXZlcnMKICAgIC0gc2VyaWFsIGRyaXZlcihVQVJUKQogICAgLSBpMmMgZHJpdmVyCiAgICAtIHNtaSBkcml2ZXIKICAgIC0gbmFuZCBkcml2ZXIoRlNNQykKICAgIC0gdXNiZCBkcml2ZXIKICAgIC0gZW1pIGRyaXZlcihjZmkgc3VwcG9ydCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBWaXBpbiA8dmlwaW4ua3VtYXJAc3QuY29tPgoKY29tbWl0IDRiZmFjYWQ0ZTc5NmYyZTEyMWVlNzQzMjcwNWVjYzljNjFlN2I2Y2EKQXV0aG9yOiBWaXBpbiBLVU1BUiA8dmlwaW4ua3VtYXJAc3QuY29tPgpEYXRlOglGcmkgSmFuIDE1IDE5OjE1OjUxIDIwMTAgKzA1MzAKCiAgICBTUEVBciA6IGVtaSBjb250cm9sbGVyIGluaXRpYWxpemF0aW9uIGZvciBDRkkgZHJpdmVyIHN1cHBvcnQKCiAgICBTUEVBcjMxMCBhbmQgU1BFQXIzMjAgU29DcyBjb250YWluIGFuIEVNSSBjb250cm9sbGVyIHRvIGludGVyZmFjZQogICAgUGFyYWxsZXIgTk9SIGZsYXNoZXMuIFRoaXMgcGF0Y2ggYWRkcyB0aGUgc3VwcG9ydCBmb3IgdGhpcyBJUAoKICAgIFRoZSBzdGFuZGFyZCBDRkkgZHJpdmVyIGlzIHVzZWQgdG8gaW50ZXJmYWNlIHdpdGggTk9SIGZsYXNoZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBWaXBpbiA8dmlwaW4ua3VtYXJAc3QuY29tPgoKY29tbWl0IDdlMDc0MTU4Y2UyMzkzODAyNTljNWZjOTdlODdiZTI4OTYxNjk5NzMKQXV0aG9yOiBWaXBpbiBLVU1BUiA8dmlwaW4ua3VtYXJAc3QuY29tPgpEYXRlOglGcmkgSmFuIDE1IDE5OjE1OjUwIDIwMTAgKzA1MzAKCiAgICBTUEVBciA6IFN1cHBvcnQgYWRkZWQgZm9yIFNQRUFyMzAwIGJvYXJkCgogICAgU1BFQXIzMDAgU29DIHN1cHBvcnQgY29udGFpbnMgYmFzaWMgc3BlYXIzMDAgc3VwcG9ydCBhbG9uZyB3aXRoIHRoZQogICAgdXNhZ2Ugb2YgZm9sbG93aW5nIGRyaXZlcnMKICAgIC0gc2VyaWFsIGRyaXZlcihVQVJUKQogICAgLSBpMmMgZHJpdmVyCiAgICAtIHNtaSBkcml2ZXIKICAgIC0gbmFuZCBkcml2ZXIoRlNNQykKICAgIC0gdXNiZCBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBWaXBpbiA8dmlwaW4ua3VtYXJAc3QuY29tPgoKY29tbWl0IGY5Mjk5NGYwZjc0MDNiODQzNjZjZTA0ZTU1NGU0NjFmNjI0ZTY4NjgKQXV0aG9yOiBWaXBpbiBLVU1BUiA8dmlwaW4ua3VtYXJAc3QuY29tPgpEYXRlOglGcmkgSmFuIDE1IDE5OjE1OjQ5IDIwMTAgKzA1MzAKCiAgICBTUEVBciA6IFN1cHBvcnQgZm9yIEhXIG1hYyBpZCByZWFkL3dyaXRlIGZyb20gaTJjIG1lbQoKICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgIHN1cHBvcnQgdG8gcmVhZCBhbmQgd3JpdGUgbWFjIGlkIGZyb20gaTJjCiAgICBtZW1vcnkuCiAgICBGb3IgcmVhZGluZzoKCWlmIChlbnYgY29udGFpbnMgZXRoYWRkcikKCQlwaWNrIGVudiBldGhhZGRyCgllbHNlCgkJcGljayBldGhhZGRyIGZyb20gaTJjIG1lbW9yeQogICAgRm9yIHdyaXRpbmc6CgljaGlwX2NvbmZpZyBldGhhZGRyIFhYOlhYOlhYOlhYOlhYOlhYIHdyaXRlcyB0aGUgbWFjIGlkCglpbiBpMmMgbWVtb3J5CgogICAgU2lnbmVkLW9mZi1ieTogVmlwaW4gPHZpcGluLmt1bWFyQHN0LmNvbT4KCmNvbW1pdCA1NjZjOWMxNmZlNGU1MDFjMzE5M2FlNjYwNWJjOWM2NjNjNmVhNzA2CkF1dGhvcjogVmlwaW4gS1VNQVIgPHZpcGluLmt1bWFyQHN0LmNvbT4KRGF0ZToJRnJpIEphbiAxNSAxOToxNTo0OCAyMDEwICswNTMwCgogICAgU1BFQXIgOiBTdXBwb3J0IGFkZGVkIGZvciBTUEVBcjYwMCBib2FyZAoKICAgIFNQRUFyNjAwIFNvQyBzdXBwb3J0IGNvbnRhaW5zIGJhc2ljIHNwZWFyNjAwIHN1cHBvcnQgYWxvbmcgd2l0aCB0aGUKICAgIHVzYWdlIG9mIGZvbGxvd2luZyBkcml2ZXJzCiAgICAtIHNlcmlhbCBkcml2ZXIoVUFSVCkKICAgIC0gaTJjIGRyaXZlcgogICAgLSBzbWkgZHJpdmVyCiAgICAtIG5hbmQgZHJpdmVyKEZTTUMpCiAgICAtIHVzYmQgZHJpdmVyCgogICAgU2lnbmVkLW9mZi1ieTogVmlwaW4gPHZpcGluLmt1bWFyQHN0LmNvbT4KCmNvbW1pdCA2MmRiMWMwZDc5ZjFmZDc1OTYxZWVjODFlZGM4YzBhMWJjMWYwOWE2CkF1dGhvcjogVmlwaW4gS1VNQVIgPHZpcGluLmt1bWFyQHN0LmNvbT4KRGF0ZToJRnJpIEphbiAxNSAxOToxNTo0NyAyMDEwICswNTMwCgogICAgU1BFQXIgOiB1c2JkIGRyaXZlciBzdXBwb3J0IGZvciBTUEVBciBTb0NzCgogICAgU1BFQXIgU29DcyBjb250YWluIGEgc3lub3BzeXMgdXNiIGRldmljZSBjb250cm9sbGVyLgogICAgVVNCIERldmljZSBJUCBjYW4gd29yayBpbiAyIG1vZGVzCiAgICAtIERNQSBtb2RlCiAgICAtIFNsYXZlIG1vZGUKCiAgICBUaGUgZHJpdmVyIGFkZHMgc3VwcG9ydCBvbmx5IGZvciBzbGF2ZSBtb2RlIG9wZXJhdGlvbiBvZiB1c2IKICAgIGRldmljZSBJUC4gVGhpcyBkcml2ZXIgaXMgdXNlZCBhbG9uZyB3aXRoIHN0YW5kYXJkIFVTQlRUWQogICAgZHJpdmVyIHRvIG9idGFpbiBhIHR0eSBpbnRlcmZhY2Ugb3ZlciBVU0Igb24gdGhlIGhvc3QKCiAgICBTaWduZWQtb2ZmLWJ5OiBWaXBpbiA8dmlwaW4ua3VtYXJAc3QuY29tPgoKY29tbWl0IDE2NWZhNDA2YWQ4YzM5YzBjMzJhMzE0NzZhOGE5YmRhM2RiNzI4NTEKQXV0aG9yOiBWaXBpbiBLVU1BUiA8dmlwaW4ua3VtYXJAc3QuY29tPgpEYXRlOglGcmkgSmFuIDE1IDE5OjE1OjQ2IDIwMTAgKzA1MzAKCiAgICBTUEVBciA6IG5hbmQgZHJpdmVyIHN1cHBvcnQgZm9yIFNQRUFyIFNvQ3MKCiAgICBTUEVBciBTb0NzIGNvbnRhaW4gYW4gRlNNQyBjb250cm9sbGVyIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGludGVyZmFjZQogICAgd2l0aCBhIHJhbmdlIG9mIG1lbW9yaWVzIGVnLiBOQU5ELCBTUkFNLCBOT1IuCiAgICBDdXJyZW50bHksIHRoaXMgZHJpdmVyIHN1cHBvcnRzIGludGVyZmFjaW5nIEZTTUMgd2l0aCBOQU5EIG1lbW9yaWVzCgogICAgU2lnbmVkLW9mZi1ieTogVmlwaW4gPHZpcGluLmt1bWFyQHN0LmNvbT4KCmNvbW1pdCBhNmUzNGY3NmM1MWM4NTE0ZjFiNjkxZmM2MDM5NGYwOWFlNGZiMmZmCkF1dGhvcjogVmlwaW4gS1VNQVIgPHZpcGluLmt1bWFyQHN0LmNvbT4KRGF0ZToJRnJpIEphbiAxNSAxOToxNTo0NSAyMDEwICswNTMwCgogICAgU1BFQXIgOiBzbWkgZHJpdmVyIHN1cHBvcnQgZm9yIFNQRUFyIFNvQ3MKCiAgICBTUEVBciBTb0NzIGNvbnRhaW4gYSBzZXJpYWwgbWVtb3J5IGludGVyZmFjZSBjb250cm9sbGVyLiBUaGlzCiAgICBjb250cm9sbGVyIGlzIHVzZWQgdG8gaW50ZXJmYWNlIHdpdGggc3BpIGJhc2VkIG1lbW9yaWVzLgogICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBkcml2ZXIgZm9yIHRoaXMgSVAuCgogICAgU2lnbmVkLW9mZi1ieTogVmlwaW4gPHZpcGluLmt1bWFyQHN0LmNvbT4KCmNvbW1pdCAyNDAzZjhmNDE3YjFiOTQ3MDFiYjU5NDk5MDNkNzAxZjFmNDE0YTQyCkF1dGhvcjogVmlwaW4gS1VNQVIgPHZpcGluLmt1bWFyQHN0LmNvbT4KRGF0ZToJRnJpIEphbiAxNSAxOToxNTo0NCAyMDEwICswNTMwCgogICAgU1BFQXIgOiBpMmMgZHJpdmVyIHN1cHBvcnQgYWRkZWQgZm9yIFNQRUFyIFNvQ3MKCiAgICBTUEVBciBTb0NzIGNvbnRhaW4gYSBzeW5vcHN5cyBpMmMgY29udHJvbGxlci4KICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgZHJpdmVyIGZvciB0aGlzIElQLgoKICAgIFNpZ25lZC1vZmYtYnk6IFZpcGluIDx2aXBpbi5rdW1hckBzdC5jb20+Cgpjb21taXQgODFjMGViZjYyM2RkYmI2YTRkYThlMDUxNDQxYzgzZTk5YTAxYjAwYgpBdXRob3I6IFZpcGluIEtVTUFSIDx2aXBpbi5rdW1hckBzdC5jb20+CkRhdGU6CUZyaSBKYW4gMTUgMTk6MTU6NDMgMjAxMCArMDUzMAoKICAgIFNQRUFyIDogQWRkaW5nIGJhc2ljIFNQRUFyIGFyY2hpdGVjdHVyZSBzdXBwb3J0LgoKICAgIFNQRUFyIEFyY2hpdGVjdHVyZSBzdXBwb3J0IGFkZGVkLiBJdCBjb250YWlucyB0aGUgc3VwcG9ydCBmb3IKICAgIGZvbGxvd2luZyBTUEVBciBibG9ja3MKICAgIC0gVGltZXIKICAgIC0gU3lzdGVtIGNvbnRyb2xsZXIKICAgIC0gTWlzYyByZWdpc3RlcnMKCiAgICBTaWduZWQtb2ZmLWJ5OiBWaXBpbiA8dmlwaW4ua3VtYXJAc3QuY29tPgoKY29tbWl0IDZmZmZjZGY4Yzg2OWEzZDg0MzZiZThlZmY2NDI4ZDgxMjFhYTc2ZTYKQXV0aG9yOiBWaXBpbiBLVU1BUiA8dmlwaW4ua3VtYXJAc3QuY29tPgpEYXRlOglGcmkgSmFuIDE1IDE5OjE1OjQyIDIwMTAgKzA1MzAKCiAgICBTUEVBciA6IEFkZGluZyBSRUFETUUuc3BlYXIgaW4gZG9jCgogICAgUkVBRE1FLnNwZWFyIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IFNQRUFyIGFyY2hpdGVjdHVyZSBhbmQKICAgIGJ1aWxkIG9wdGlvbnMgZXRjCgogICAgU2lnbmVkLW9mZi1ieTogVmlwaW4gPHZpcGluLmt1bWFyQHN0LmNvbT4KCmNvbW1pdCBlNGM0M2MyMGI4N2Q1YzlhN2FjM2I1MjUwY2EwMDkzMTFjNjI5NDVjCkF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgpEYXRlOglXZWQgSmFuIDIwIDE4OjAwOjI4IDIwMTAgLTA2MDAKCiAgICBBUk0gVXBkYXRlIG1hY2gtdHlwZXMKCiAgICBGZXRjaGVkIGZyb20gaHR0cDovL3d3dy5hcm0ubGludXgub3JnLnVrL2RldmVsb3Blci9tYWNoaW5lcy9kb3dubG9hZC5waHAKICAgIEFuZCBidWlsdCB3aXRoCgogICAgcmVwbyBodHRwOi8vZnRwLmFybS5saW51eC5vcmcudWsvcHViL2xpbnV4L2FybS9rZXJuZWwvZ2l0LWN1ci9saW51eC0yLjYtYXJtCiAgICBjb21taXQgMjA0NTEyNGZmZDFhNWU0NmQxNTczNDkwMTZhMmM1MGYxOWM4YzkxZAoKICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KCmNvbW1pdCBiZmI2ZDUxMGU5YWNiZWM5N2U0ZTFjYzg1NWVjMTI2OTUzODY4OWY4CkF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgpEYXRlOglNb24gTm92IDE2IDE4OjI5OjI1IDIwMDkgKzA1MzAKCiAgICBLaXJrd29vZDogTWFrZWZpbGUgY2xlYW51cC0gZml4ZWQgb3JkZXJpbmcgKGNvc21ldGljIGNoYW5nZSkKCiAgICBBcyBwZXIgY29kaW5nIGd1aWRsaW5lcywgaXQgaXMgZ29vZCB0byBtYWludGFpbiBwcm9wZXIgb3JkZXJpbmcKICAgIGluIHRoZSBtYWtlZmlsZXMuCiAgICBUaGlzIHdhcyBtaXNzZWQgZHVyaW5nIGluaXRpYWwgY29kaW5nLCBjb3JyZWN0ZWQgaGVyZS4KCiAgICBUaGlzIHdhcyBkaXNjb3ZlcmVkIGR1cmluZyBvcmlvbjV4IGNvZGUgcmV2aWV3CiAgICBUaGFua3MgdG8gQWxiZXJ0IEFyaWJhdWQgZm9yIHRoaXMuCgogICAgU2lnbmVkLW9mZi1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgoKY29tbWl0IGJlY2EwNGRkMjQ0NmZjOWVjNDZjYTE3MTYzZGFkYjdmODI0MjBlN2MKQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+CkRhdGU6CVRodSBEZWMgMjQgMDI6NTU6MjMgMjAwOSArMDUzMAoKICAgIEtpcmt3b29kOiBVcGdhdGVkIGxpY2VuY2luZyBmb3IgZmlsZXMgaW1wb3J0ZWQgZnJvbSBsaW51eCBzb3VyY2UgdG8gR1BMdjIgb3IgbGF0ZXIKCiAgICBUaGVzZSBhcmUgZmV3IGZpbGVzIGRpcmVjdGx5IGltcG9ydGVkIGZyb20gTGludXgga2VybmVsIHNvdXJjZS4KICAgIFRob3NlIGFyZSBub3QgbW9kaWZ5ZWQgYXQgYWxsIGFyIHBlciBzdHJhdGVneS4KICAgIFRoZXNlIGZpbGVzIGNvbnRhaW5zIHNvdXJjZSB3aXRoIEdQTHYyIG9ubHkKICAgIHdoZXJlYXMgdS1ib290IGV4cGVjdHMgR1BMdjIgb3IgbGF0dGVyCgogICAgVGhlc2UgZmlsZXMgYXJlIHVwZGF0ZWQgZm9yIHRoZSBzYW1lIGZyb20gcHJpb3IgcGVybWlzc2lvbiBmcm9tIG9yaWdpbmFsIHdyaXRlcwoKICAgIEFja2VkLWJ5OiBOaWNvbGFzIFBpdHJlIDxuaWNvQG1hcnZlbGwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgoKY29tbWl0IGQ4ZTVmNTU0NzVlNjIxZTc5M2ExNWQ5M2UyZGQyNTQ5YzUxMzg3MzUKQXV0aG9yOiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+CkRhdGU6CUZyaSBEZWMgMTggMTU6MDM6NTEgMjAwOSArMDkwMAoKICAgIHM1cGMxeHg6IHVwZGF0ZSBjYWNoZSByb3V0aW5lcwoKICAgIEJlY2F1c2Ugb2YgdjdfZmx1c2hfZGNhY2hlX2FsbCBpcyBtb3ZlZCB0byBvbWFwMy9jYWNoZS5TCiAgICBhbmQgczVwYzExMCBuZWVkcyBjYWNoZSByb3V0aW5lcywgdXBkYXRlIHM1cGMxeHggY2FjaGUgcm91dGluZXMuCgogICAgbDJfY2FjaGVfZW5hYmxlIGFuZCBsMl9jYWNlaF9kaXNhYmxlIGFyZSBtb3ZlZCBmcm9tIGNhY2hlLmMgdG8gY2FjaGUuUwogICAgYW5kIGludmFsaWRhdGVfZGNhY2hlIGlzIG1vZGlmaWVkIGZvciBTb0Mgc3BlY2lmaWMuCgogICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgoKY29tbWl0IDE3ZWY5MTA0YWUxMTIyMDk3OWUxODcwZjIyZGNhZjUzNWQ5YmFhY2YKQXV0aG9yOiBTZXVuZ2h5ZW9uIFJoZWUgPHNldW5naHllb25AbHBtdGVjLmNvbT4KRGF0ZToJVGh1IERlYyAzIDA5OjQxOjQ5IDIwMDkgKzA5MDAKCiAgICBzYW1zdW5nOiBmaXggRE1DMV9NRU1fQ0ZHIGZvciBzM2M2NHh4CgogICAgVGhlIE1TQiBvZiBETUMxX01FTV9DRkcgY2FuIGJlIHNldCB0byAnMScgZm9yIHNlcGFyYXRlIENLRSBjb250cm9sCiAgICBmb3IgUzNDNjQwMC4gSW4gdGhlIGNvbmZpZ3VyYXRpb24gb2YgU01ESzY0MDAsIGhvd2V2ZXIsIHR3byAxNi1iaXQKICAgIG1ERFIgKFNBTVNVTkcgSzRYNTExNjMpIGNoaXBzIGFyZSB1c2VkIGluIHBhcmFsbGVsIHRvIGZvcm0gMzItYml0CiAgICBtZW1vcnkgYnVzIGFuZCB0aGVyZSBpcyBubyBuZWVkIHRvIGNvbnRyb2wgQ0tFIGZvciBlYWNoIGNoaXAKICAgIHNlcGFyYXRlbHkuIEFGQUlLLCBDS0UxIGlzIG5vdCBhdCBhbGwgY29ubmVjdGVkLiBPbmx5IENLRTAgaXMKICAgIHVzZWQuIEZ1dGhlcm1vcmUsIGl0IHNob3VsZCBiZSAnMCcgYWx3YXlzIGZvciBTM0M2NDEwLiBXaGVuIHRlc3RlZAogICAgd2l0aCBhIGJvYXJkIHdoaWNoIGhhcyBhIFMzQzY0MTAgYW5kIHRoZSBzYW1lIG1lbW9yeSBjb25maWd1cmF0aW9uLAogICAgYSBzaWRlIGVmZmVjdCBpcyBvYnNlcnZlZCB0aGF0IHUtYm9vdCBjb21tYW5kICJyZXNldCIgZG9lc24ndCB3b3JrCiAgICBsZWFkaW5nIHRvIHN5c3RlbSBoYW5nLiBMZWF2aW5nIHRoZSBiaXQgY2xlYXIgaXMgc2FmZSBpbiBtb3N0IGNhc2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNldW5naHllb24gUmhlZSA8c2V1bmdoeWVvbkBscG10ZWMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgoKY29tbWl0IDk5OThiMTM2NmU3ZTQyMDg5YzNmNTc5YjRkMWQ3OTBkM2MyOTUzODcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBKYW4gMjEgMTE6Mzc6MzEgMjAxMCArMDEwMAoKICAgIHBwYzR4eDogS2lsYXVlYTogQWRkIENQTEQgdmVyc2lvbiBkZXRlY3Rpb24gYW5kIEVCQyByZWNvbmZpZ3VyYXRpb24KCiAgICBBIG5ld2VyIENQTEQgdmVyc2lvbiBvbiB0aGUgNDA1RVggZXZhbHVhdGlvbiBib2FyZCByZXF1aXJlcyBhIGRpZmZlcmVudAogICAgRUJDIGNvbnRyb2xsZXIgc2V0dXAgZm9yIHRoZSBDUExEIHJlZ2lzdGVyIGFjY2Vzcy4gVGhpcyBwYXRjaCBhZGRzIGEgQ1BMRAogICAgdmVyc2lvbiBkZXRlY3Rpb24gZm9yIEtpbGF1ZWEgYW5kIGNvZGUgdG8gcmVjb25maWd1cmUgdGhlIEVCQyBjb250cm9sbGVyCiAgICAoY2hpcCBzZWxlY3QgMikgZm9yIHRoZSBvbGQgQ1BMRCBpZiBubyBuZXcgdmVyc2lvbiBpcyBmb3VuZC4KCiAgICBBZGRpdGlvbmFsbHkgdGhlIENQTEQgdmVyc2lvbiBpcyBwcmludGVkIHVwb24gYm9vdHVwOgoKICAgIEJvYXJkOiBLaWxhdWVhIC0gQU1DQyBQUEM0MDVFWCBFdmFsdWF0aW9uIEJvYXJkIChDUExEIHJldi4gMCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBBY2tlZC1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIENjOiBaaGFuZyBCYW8gUXVhbiA8YnF6aGFuZ0B1ZHRlY2guY29tLmNuPgoKY29tbWl0IDk3YzlmMjkwMDg1NzlmNTZjM2ZiODY3ODVmMjlmMDRkZDRmNDdmOTQKQXV0aG9yOiBGZWxpeCBSYWRlbnNreSA8ZmVsaXhAZW1iZWRkZWQtc29sLmNvbT4KRGF0ZToJU2F0IEphbiAyMyAwMTozNToyNCAyMDEwICswMjAwCgogICAgcHBjNHh4OiBGaXggc2VuZGluZyB0eXBlIDEgUENJIHRyYW5zYWN0aW9ucwoKICAgIFRoZSBsaXN0IG9mIDR4eCBTb0NzIHRoYXQgc2hvdWxkIHNlbmQgdHlwZSAxIFBDSSB0cmFuc2FjdGlvbnMKICAgIGlzIG5vdCBkZWZpbmVkIGNvcnJlY3RseS4gQXMgYSByZXN1bHQgUENJLVBDSSBicmlkZ2VzIGFuZCBkZXZpY2VzCiAgICBiZWhpbmQgdGhlbSBhcmUgbm90IGlkZW50aWZpZWQuIFRoZSBmb2xsb3dpbmcgNHh4IHZhcmlhbnRzIHNob3VsZAogICAgc2VuZCB0eXBlIDEgdHJhbnNhY3Rpb25zOiA0NDBHWCwgNDQwR1AsIDQ0MFNQLCA0NDBTUEUsIDQ2MEVYIGFuZCA0NjBHVC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBGZWxpeCBSYWRlbnNreSA8ZmVsaXhAZW1iZWRkZWQtc29sLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1N2FlOGE1Y2NlZDYxMjA4ODEwNDMwMzc3N2U3MWEzZGM4OWMwMGVmCkF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+CkRhdGU6CVRodSBKYW4gMjEgMTc6NTU6NTggMjAxMCArMDEwMAoKICAgIG1wYzUxMng6IFVzZSBpbi9vdXQgYWNjZXNzb3JzIGZvciBhbGwgcmVnaXN0ZXJzCgogICAgVGhpcyBpcyBub3Qgb25seSBhIGNvc21ldGljIGNoYW5nZSBhcyBpdCBmaXhlcyB0aGUgcmVhbCBidWcgb2YgYm9hcmQKICAgIHJlc2V0IG5vdCB3b3JraW5nIHdpdGggdGhlIEVMREsgNC4yIHRvb2xjaGFpbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KCmNvbW1pdCBjN2MwZDU0MmExOTkwODljZjY1OGE3YzIzYzMxNGE1Y2ZmMjQ4YjAwCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgSmFuIDIxIDA0OjAzOjIyIDIwMTAgLTA1MDAKCiAgICB0b29sczogYWxsb3cgcGVvcGxlIHRvIGNvbXBpbGUgdy9vdXQgY29uZmlndXJpbmcKCiAgICBJdCdzIHVzZWZ1bCB0byBiZSBhYmxlIHRvIGJ1aWxkIHVwIHRoZSBob3N0IHRvb2xzIHdpdGhvdXQgaGF2aW5nIHRvIHNlbGVjdAogICAgYSBib2FyZCBmaXJzdC4gIFByZXR0eSBtdWNoIGFsbCB0b29scyBpbiB0aGVyZSBhcmUgY29uZmlnLWluZGVwZW5kZW50CiAgICBhbnl3YXlzLgoKICAgIEFsc28gYWRkIGEgc2hvcnRjdXQgInRvb2xzLWFsbCIgdG8gcXVpY2tseSBidWlsZCBhbGwgaG9zdCB0b29scyB0aGF0IGFyZQogICAgYWN0dWFsbHkgY29uZmlnLWluZGVwZW5kZW50IHRvIGFsbG93IGZvciBzaW1wbGUgdGVzdCBidWlsZHMuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGM1YTAyOGYwODUwMjBiNjAwNDBhMmI0Mjk2NmYyOWIyNWJkNmVlOGUKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBKYW4gMjEgMDQ6MDM6MjEgMjAxMCAtMDUwMAoKICAgIHVic2hhMTogZHJvcCB1bm5lY2Vzc2FyeSBpbmNsdWRlcy9wcm90b3R5cGVzCgogICAgVGhpcyBjb2RlIGRvZXNuJ3QgdXNlIGFueSBjb25maWcuaCBkZWZpbmVzLCBhbmQgdGhlIHNoYTEuaCBoZWFkZXIgYWxyZWFkeQogICAgZGVjbGFyZXMgYSBzaGExX2NzdW0gcHJvdG90eXBlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA1ZGFhMWMxOGI2YTY4NzdiMDYxOWE4ZGJhYWQwYWZkNzgzZjc5ZTRmCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgSmFuIDIxIDA0OjAzOjIwIDIwMTAgLTA1MDAKCiAgICBpbWFnZS5oOiBhdm9pZCBjb21tYW5kLmggZm9yIGhvc3QgdG9vbHMKCiAgICBUaGUgdS1ib290IGNvbW1hbmQgc3RydWN0dXJlcyBkb24ndCBnZXQgdXNlZCB3aXRoIGhvc3Qgc3lzdGVtcywgc28gZG9uJ3QKICAgIGJvdGhlciBpbmNsdWRpbmcgaXQgd2hlbiBidWlsZGluZyBob3N0IGNvZGUuICBUaGlzIGF2b2lkcyBhbiBpbXBsaWNpdCBuZWVkCiAgICBvbiBjb25maWcuaCBpbiB0aGUgcHJvY2Vzcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMzRiZTEwNjUxNzA0NzA5ZGZiMzVmOWM1NzAxM2YwMmQ0N2NjZWQwOQpBdXRob3I6IE1hdHRoaWFzIFdlaXNzZXIgPHdlaXNzZXJtQGFyY29yLmRlPgpEYXRlOglNb24gSmFuIDE4IDEwOjU4OjEzIDIwMTAgKzAxMDAKCiAgICBSZW1vdmluZyBBdG1lbCBmcm9tIEFSTTkyNkVKLVMgU3lzdGVtcwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIFdlaXNzZXIgPHdlaXNzZXJtQGFyY29yLmRlPgoKY29tbWl0IGExNjAyOGRhNjNjNzgwMDE4MjNiZmIzNzViM2Y2ZDlkODZlNWE1MzQKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVR1ZSBOb3YgMyAxMTozNTo1OSAyMDA5IC0wNTAwCgogICAgbG1iOiBvbmx5IGZvcmNlIG9uIGFyY2hlcyB0aGF0IHVzZSBpdAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBkYWM0ZDdlODg0OWQyNzUwMjNlYTJmY2FlNmNhZjk0MWRiOTFjMDQyCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gSmFuIDE3IDIxOjA4OjAwIDIwMTAgLTA1MDAKCiAgICBzaGExOiBhZGQgZGVkaWNhdGVkIGNvbmZpZyBvcHRpb24KCiAgICBUaGUgc2hhMSBjb2RlIGlzIGN1cnJlbnRseSBjb21waWxlZCBmb3IgZXZlcnlvbmUsIGJ1dCBpbiByZWFsaXR5LCBpdCdzCiAgICBvbmx5IHVzZWQgYnkgdGhlIEZJVCBjb2RlLglTbyBtYWtlIGl0IG9wdGlvbmFsIGp1c3QgbGlrZSBNRDUuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDMzYzhjNjY0MjM5ZjY2NjViMjI4MTQ1ZDdlNWFkZmEyMzhhMzAwYmMKQXV0aG9yOiBGZWxpeCBSYWRlbnNreSA8ZmVsaXhAZW1iZWRkZWQtc29sLmNvbT4KRGF0ZToJVHVlIEphbiAxOSAyMToxOTowNiAyMDEwICswMjAwCgogICAgcHBjNHh4OiBBbGxvdyBzZXR0aW5nIGEgc2luZ2xlIFNQRCBFRVBST00gYWRkcmVzcyBmb3IgRERSMiBESU1NcwoKICAgIE9uIHBsYXRmb3JtcyB3aGVyZSBTUEQgRUVQUk9NIGFuZCBhbm90aGVyIEVFUFJPTSBoYXZlIGFkamFjZW50CiAgICBJMkMgYWRkcmVzc2VzIFNQRF9FRVBST01fQUREUkVTUyBzaG91bGQgYmUgZGVmaW5lZCBhcyBhIHNpbmdsZQogICAgZWxlbWVudCBhcnJheSwgb3RoZXJ3aXNlIEREUjIgc2V0dXAgY29kZSB3b3VsZCBmYWlsIHdpdGggdGhlCiAgICBmb2xsb3dpbmcgZXJyb3I6CgogICAgRVJST1I6IFVua25vd24gRElNTSBkZXRlY3RlZCBpbiBzbG90IDEKCiAgICBIb3dldmVyLCBmaXhpbmcgU1BEX0VFUFJPTV9BRERSRVNTIHdvdWxkIHJlc3VsdCBpbiBhbm90aGVyCiAgICBlcnJvcjoKCiAgICBFUlJPUjogRElNTSdzIEREUjEgYW5kIEREUjIgdHlwZSBjYW4gbm90IGJlIG1peGVkLgoKICAgIFRoaXMgaGFwcGVucyBiZWNhdXNlIGluaXRkcmFtKCkgcm91dGluZSBkb2VzIG5vdCBleHBsaWNpdGx5CiAgICBpbml0aWFsaXplIGRpbW1fcG9wdWxhdGVkIGFycmF5LiBUaGlzIHBhdGNoIGZpeGVzIHRoZSBwcm9ibGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IEZlbGl4IFJhZGVuc2t5IDxmZWxpeEBlbWJlZGRlZC1zb2wuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGQ5ODk2NGFhYWNjNWM1NGNmN2Q2N2JiMWU1MTI4ZWQwNjcwODZkZDcKQXV0aG9yOiBGZWxpeCBSYWRlbnNreSA8ZmVsaXhAZW1iZWRkZWQtc29sLmNvbT4KRGF0ZToJVHVlIEphbiAxOSAxNzozNzoxMyAyMDEwICswMjAwCgogICAgcHBjNHh4OiBGaXggcmVwb3J0aW5nIG9mIGJvb3RzdHJhcCBvcHRpb25zIEcgYW5kIEYgb24gNDYwRVgvR1QKCiAgICBCb290c3RyYXAgb3B0aW9ucyBHIGFuZCBGIGFyZSByZXBvcnRlZCBpbmNvcnJlY3RseSAoRyBpbnN0ZWFkCiAgICBvZiBGIGFuZCB2aWNlIHZlcnNhKS4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEZlbGl4IFJhZGVuc2t5IDxmZWxpeEBlbWJlZGRlZC1zb2wuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDE5YzI5Mjk5OTczMjk5NmUwNzFjYWEwNzgyZWVlZjBjZTBhNjBhYzAKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+CkRhdGU6CVdlZCBKYW4gMjAgMjE6MDc6MDAgMjAxMCArMDkwMAoKICAgIE1JUFM6IHFlbXVfbWlwczogSW1wb3J0IGFzbS91bmFsaWduZWQuaCBmcm9tIHRoZSBMaW51eCBrZXJuZWwKCiAgICB3aXRoIGEgZmV3IGFkanVzdG1lbnRzIGZvciBVLUJvb3QuCVRoaXMgZml4ZXMgdGhlIGZvbGxvd2luZyBidWlsZCBlcnJvcjoKCiAgICBtYWtlIC1DIGxpYl9nZW5lcmljLwogICAgemxpYi5jOjMxOjI3OiBlcnJvcjogYXNtL3VuYWxpZ25lZC5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CiAgICB6bGliLmM6IEluIGZ1bmN0aW9uICdpbmZsYXRlX2Zhc3QnOgogICAgemxpYi5jOjY0MTogd2FybmluZzogaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ2dldF91bmFsaWduZWQnCiAgICBtYWtlWzFdOiAqKiogW3psaWIub10gRXJyb3IgMQogICAgbWFrZVsxXTogTGVhdmluZyBkaXJlY3RvcnkgYC9ob21lL3NrdXJpYmF5L2dpdC91LWJvb3QuZ2l0L2xpYl9nZW5lcmljJwogICAgbWFrZTogKioqIFtsaWJfZ2VuZXJpYy9saWJnZW5lcmljLmFdIEVycm9yIDIKCiAgICBSZXBvcnRlZC1ieTogSGltYW5zaHUgQ2hhdWhhbiA8aGltYW5zaHVAc3ltbWV0cmljb3JlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcG9ib3guY29tPgoKY29tbWl0IDM4YThiM2VhZmIxN2Q2MTY5MGU1ZmM5M2U2ZGM0NTEyMGY3OWQ3ZDAKQXV0aG9yOiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+CkRhdGU6CVN1biBKYW4gMTcgMTc6NDY6MTEgMjAxMCArMDEwMAoKICAgIE1YMzE6IEFjdGl2YXRlIE5BTkQgZW52aXJvbm1lbnQgb24gaS5NWDMxIFBESyBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Cgpjb21taXQgYzQ4MzJkZmZmZjIwNTE5ZTcyODc5YThkYTAxMDE3NGFjMDUyNjE0MQpBdXRob3I6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KRGF0ZToJU3VuIEphbiAxNyAxNzo0NjoxMCAyMDEwICswMTAwCgogICAgTVhDOiBBZGQgbGFyZ2UgcGFnZSBvb2IgbGF5b3V0IGZvciBpLk1YMzEgTkFORCBjb250cm9sbGVyLgoKICAgIEltcG9ydCB0aGUgbGFyZ2UgcGFnZSBvb2IgbGF5b3V0IGZyb20gTGludXggbXhjX25hbmQuYyBkcml2ZXIuCgogICAgVGhlIENPTkZJR19TWVNfTkFORF9MQVJHRVBBR0Ugb3B0aW9uIGlzIHVzZWQgdG8gYWN0aXZhdGUKICAgIHRoZSBsYXJnZSBwYWdlIG9vYiBsYXlvdXQuIFJ1biB0aW1lIGRldGVjdGlvbiBpcyBub3Qgc3VwcG9ydGVkCiAgICBhcyB0aGlzIG1vbWVudC4KCiAgICBUaGlzIGhhcyBiZWVuIHRlc3RlZCBvbiB0aGUgaS5NWDMxIFBESyBib2FyZCB3aXRoIGEgbGFyZ2UKICAgIHBhZ2UgTkFORCBkZXZpY2UuCgogICAgU2lnbmVkLW9mZi1ieTogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgoKY29tbWl0IGY2YTk3NDhlMzI2MWZkY2NkZWI3OGEyYjU4ZTZhZDUzOGJhNTQ0OTYKQXV0aG9yOiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+CkRhdGU6CVdlZCBOb3YgMTEgMjA6MTg6NDMgMjAwOSArMDEwMAoKICAgIG14Y19uYW5kOiBVcGRhdGUgZHJpdmVyIHRvIHdvcmsgd2l0aCBpLk1YMzEuCgogICAgVGVzdGVkIG9uIGkuTVgzMSBMaXRla2l0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KCmNvbW1pdCBjODE2ZGNiMTE4ZTI2YmExN2U3ZDczOTg5NTE0ZmVjMDhhMzgyM2FjCkF1dGhvcjogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgpEYXRlOglXZWQgTm92IDExIDIwOjE4OjQyIDIwMDkgKzAxMDAKCiAgICBNWDMxOiBBZGQgc3RydWN0IGRlZmluaXRpb24gZm9yIGNsb2NrIGNvbnRyb2wgbW9kdWxlIGluIGkuTVgzMS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Cgpjb21taXQgNTBlZjI1ZWYyNGVjY2Q4ZTY5ZDJjMWNjYzk3YjNmN2UzMDEwOWY1MQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJVHVlIEphbiAxOSAxMjowMzoyNSAyMDEwICswMTAwCgogICAgbWljcm9ibGF6ZTogemxpYiBuZWVkcyBhc20vdW5hbGlnbmVkLmgKCiAgICBNaWNyb2JsYXplIGhhcyBvd24gaHcgdW5hbGlnbmVkIGhhbmRsZXIgaWYgaXMgYXZhaWxhYmxlLgogICAgVXNlIGJpZyBlbmRpYW4gdmVyc2lvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Cgpjb21taXQgNWI4YjgzYmNlNmZkZDBkMmNhNjYxZGU5MGFlODNhMGY4YjE1MmRlNgpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJVHVlIEphbiAxOSAxMjowMzoyNCAyMDEwICswMTAwCgogICAgbWljcm9ibGF6ZTogUmVtb3ZlIGdldGVudl9JUGFkZHIgcHJvdG90eXBlCgogICAgQ29tbWl0IDZhNDVlMzg0OTU1MjYyODgyMzc1YTI3ODU0MjZkYzY1YWViNjM2YzQKICAgIHNob3VsZCByZW1vdmUgcmVmZXJlbmNlIGZyb20gTWljcm9ibGF6ZSB0b28uCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgoKY29tbWl0IGI5ZTY5NTdjYTE1YmU4NDY2MTkwNzk0ZDZkODc4NDU0OTFiMzQxMWIKQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgpEYXRlOglNb24gSmFuIDE4IDIyOjM4OjM4IDIwMTAgKzAxMDAKCiAgICBNQUlOVEFJTkVSUzogZml4IG5oazg4MTUgYm9hcmQgbmFtZQoKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+Cgpjb21taXQgYjQwZTIzMjBjNDQwYzUwODIwMjBlNTAzNmEwY2I4ZDRlZDFiM2Q3ZApBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CU1vbiBKYW4gMTggMTE6MzU6MzEgMjAxMCAtMDgwMAoKICAgIEZpeCBicmVha2FnZSBpbiBTTUMgRUVQUk9NIHN0YW5kYWxvbmUgYXBwbGljYXRpb25zCgogICAgQ29tbWl0IDZhNDVlMzg0OTU1MjYyODgyMzc1YTI3ODU0MjZkYzY1YWViNjM2YzQgKE1ha2UgZ2V0ZW52X0lQYWRkcigpIGdsb2JhbCkKICAgIGluYWR2ZXJ0ZW50bHkgYWRkZWQgJyAjaW5jbHVkZSAibmV0LmgiICcgdG8gdGhlIHN0YW5kYWxvbmUgcHJvZ3JhbXMsIGNyZWF0aW5nCiAgICBkdXBsaWNhdGUgZGVmaW5pdGlvbnMgb2YgJ3N0cnVjdCBldGhfZGV2aWNlJy4gIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgbG9jYWwKICAgIGRlZmluaXRpb25zIGFuZCByZW1vdmVzIG90aGVyIGNvZGUgdGhhdCBicmVha3MgZHVlIHRvIHRoZSBjaGFuZ2UgaW4gZGVmaW5pdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgogICAgQWNrZWQtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAyYTk5ODc5MzVlM2NkYjYxZTc1NTBjODdjYmM5ZjUwMGE1NGY2NzJkCkF1dGhvcjogRGFuaWVsIEhvYmkgPGRhbmllbC5ob2JpQHNjaG1pZC10ZWxlY29tLmNoPgpEYXRlOglNb24gSmFuIDE4IDE4OjEzOjM5IDIwMTAgKzAxMDAKCiAgICBNYWtlZmlsZTogZml4IHBhcmFsbGVsIGJ1aWxkCgogICAgRHVyaW5nIHBhcmFsbGVsIGJ1aWxkLCB0aGUgdG9wIE1ha2VmaWxlIHNwYXducyBtdWx0aXBsZSBzdWItbWFrZXMgZm9yCiAgICB0YXJnZXRzIGluIGNwdS8kKENQVSkgYW5kICQoZGlyICQoTERTQ1JJUFQpKS4gSWYgdGhlIC5kZXBlbmQgZmlsZXMgYXJlCiAgICBub3QgcHJlc2VudCBpbiB0aGVzZSBkaXJlY3RvcmllcywgdGhlIHN1Yi1tYWtlcyBtYXkgZW5kIHVwIGdlbmVyYXRpbmcKICAgIHRoZXNlIGZpbGVzIHNpbXVsdGFuZW91c2x5IHdoaWNoIGxlYWRzIHRvIGNvcnJ1cHRlZCBjb250ZW50LgoKICAgIEEgdHlwaWNhbCBlcnJvciBtZXNzYWdlIGlzOgoKICAgIC5kZXBlbmQ6Mzk6ICoqKiBtdWx0aXBsZSB0YXJnZXQgcGF0dGVybnMuICBTdG9wLgoKICAgIFRoaXMgcGF0Y2ggc2VyaWFsaXplcyB0aGUgY3JlYXRpb24gb2YgLmRlcGVuZCBpbiBjcHUvJChDUFUpIGFuZAogICAgJChkaXIgJChMRFNDUklQVCkpIGJ5IGFkZGluZyB0aGVzZSBkaXJlY3RvcmllcyB0byB0aGUgZGVwZW5kIHRhcmdldAogICAgaW4gdGhlIHRvcCBNYWtlZmlsZS4KCiAgICBPdGhlciBkaXJlY3RvcmllcyBpbiAkKExJQlMpIGFyZSBub3QgYWZmZWN0ZWQgc2luY2UgdGhleSBjb250YWluIG9ubHkKICAgIG9uZSBNYWtlIHRhcmdldCBhbmQgdGh1cyBvbmx5IG9uZSBzdWItbWFrZSBpcyBzcGF3bmVkIHBlciBkaXJlY3RvcnkuCgogICAgU2lnbmVkLW9mZi1ieTogRGFuaWVsIEhvYmkgPGRhbmllbC5ob2JpQHNjaG1pZC10ZWxlY29tLmNoPgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGYxOWZkODdlOTM4NzI4MmI1YWJiZmRhZmU0NmFjMjcyMzIwNjQzZDgKQXV0aG9yOiBSb2JpbiBHZXR6IDxyb2Jpbi5nZXR6QGFuYWxvZy5jb20+CkRhdGU6CU1vbiBEZWMgMjEgMTY6MzU6NDggMjAwOSAtMDUwMAoKICAgIEJsYWNrZmluOiBhZGQgc3VwcG9ydCBmb3Iga2dkYgoKICAgIFNpZ25lZC1vZmYtYnk6IFJvYmluIEdldHogPHJvYmluLmdldHpAYW5hbG9nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAzODY5NDUzZjY1OWMyMjM5NmZlY2I3YzhlZDdhZjkwOWU4OWY0NjFjCkF1dGhvcjogUm9iaW4gR2V0eiA8cm9iaW4uZ2V0ekBhbmFsb2cuY29tPgpEYXRlOglNb24gRGVjIDIxIDE3OjU1OjIyIDIwMDkgLTA1MDAKCiAgICBhc20tZ2VuZXJpYy9zaWduYWwuaDogaW1wb3J0IGZyb20gbGludXgKCiAgICBXZSBuZWVkIHNpZ25hbC5oIGZvciBCbGFja2Zpbi9LR0RCLCBzbyBpbXBvcnQgdGhlIGFzbS1nZW5lcmljL3NpZ25hbC5oCiAgICBmb3IgcGVvcGxlIHRvIGxldmVyYWdlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJvYmluIEdldHogPHJvYmluLmdldHpAYW5hbG9nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA4OGZmYjI2NjVjZDA2NmI2YjIwY2ZhYWRlMTM5MjlkNGU4NDI4ZGRlCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVRodSBKYW4gNyAwODo1NTo1NCAyMDEwICswMTAwCgogICAgQ1JBTUZTOiBzdXBwb3J0IGNyYW1mcyBpbiBSQU0KCiAgICBjcmFtZnNscyBhbmQgY3JhbWZzbG9hZCBhcmUgYWRkZWQgdG8gdGhlIGNvbW1hbmQgbGlzdC4KICAgIEEgY3JhbWZzIHBsYWNlZCBhdCAnY3JhbWZzX2FkZHInIGNhbiB0aGUgYmUgbGlzdGVkIHdpdGggJ2NyYW1mc2xzJyBhbmQgZmlsZXMKICAgIGNhbiBiZSBsb2FkZWQgd2l0aCAnY3JhbWZzbG9hZCcuICdjcmFtZnNfYWRkcicgaXMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUKICAgIHNwZWNpZnlpbmcgdGhlIGFkZHJlc3MgdGhlIGNyYW1mcyBpcyBsb2NhdGVkLgogICAgVGhpcyB3b3JrcyBmb3IgcG93ZXJwYyBhbmQgZm9yIEFSTS4KCiAgICBVc2UgQ09ORklHX0NNRF9DUkFNRlMuCgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBIdWJlciA8YW5kcmVhcy5odWJlckBrZXltaWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDQ4OTdlZTMzYzk4YjRiMjllZmQ2Mjg1NDA1MmViNzg2MjM4MGI1YWUKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVGh1IEphbiA3IDA4OjU1OjUwIDIwMTAgKzAxMDAKCiAgICBwb3dlcnBjOiBrZXltaWxlIGJvYXJkcyB1cGRhdGVzCgogICAgLSBtYWxsb2Mgc2l6ZSA0IE1CIGZvciBhbGwga2V5bWlsZSBib2FyZHMKICAgIC0gdXNlIGdlbmVyaWMgRkRUIGNvZGUgZm9yIGZpeGluZyB1cCB0aGUgRFRTCiAgICAtIGVuYWJsZSB1bml0LWxlZCBhdCBzdGFydHVwIGZvciBrZXltaWxlIGJvYXJkcwogICAgLSByZW1vdmUgc29tZSBkdHMgdXBkYXRlcyBmb3Iga2V5bWlsZSBib2FyZHMKICAgIC0gcHBjXzgzeHgsIGttZXRlcjE6IHRha2UgRkUvR2JFIFBIWXMgb3V0IG9mIHJlc2V0CiAgICAtIHBwY184M3h4LCBrbWV0ZXIxOiBjaGFuZ2UgZnJvbSBJbnRlbCBTdHJhdGEgdG8gU3BhbnNpb24gNjRNQiBmbGFzaAogICAgICBjaGFuZ2VkIGZyb20gSW50ZWwgU3RyYXRhIHRvIFNwYW5zaW9uIDY0TUIgZmxhc2ggYW5kIGNoYW5nZWQgZmxhc2ggbGF5b3V0LgogICAgKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCBuYW1lICAgIHwgc2l6ZQkgfCByYW5nZQkJIHwgZGVzY3JpcHRpb24JCSAgICAgICB8CiAgICArLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IHUtYm9vdCAgfCAgIDc2OCBLQiB8IDB4ZjAwMDAwMDAtMHhmMDBiZmZmZiB8IGZvciB1LWJvb3QJCSAgICAgICB8CiAgICB8IGVudiAgICAgfCAgIDEyOCBLQiB8IDB4ZjAwYzAwMDAtMHhmMDBkZmZmZiB8IGZvciBlbnZpcm9ubWVudAkgICAgICAgfAogICAgfCBlbnZyZWQgIHwgICAxMjggS0IgfCAweGYwMGUwMDAwLTB4ZjAwZmZmZmYgfCBmb3IgZW52aXJvbm1lbnQgKHJlZHVuZGFudCkgfAogICAgfCB1YmkwICAgIHwgNjQ1MTIgS0IgfCAweGYwMTAwMDAwLTB4ZjNmZmZmZmYgfCB1YmkwIGZvciB1Ymkgdm9sdW1lcyAgICAgICAgfAogICAgKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDE1NjdiNTk2ZDlmNGE3ZmY0OWViZGNhMjllMTVhMzM3NzdkZmQ2NzAKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVGh1IEphbiA3IDA4OjU1OjQ0IDIwMTAgKzAxMDAKCiAgICBlbnYsIGVlcHJvbTogYWRkIHJlZHVuZGFudCBlbnZpcm9ubWVudCBzdXBwb3J0CgogICAgQWRkIHJlZHVuZGFudCBlbnZpcm9ubWVudCBzdXBwb3J0IGZvciBlbnZpcm9ubWVudCBseWluZyBvbiBhIEVFUFJPTS4KCiAgICBUZXN0ZWQgb24gdXBwY29taW5nIHN1ZW4zIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIEh1YmVyIDxhbmRyZWFzLmh1YmVyQGtleW1pbGUuY29tPgoKY29tbWl0IDU0ODczOGI0ZDQzYWY4NDFmZjU4Yzc4N2JjZTI5N2FjNmE4YmY3ZDEKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVGh1IEphbiA3IDA4OjU1OjQwIDIwMTAgKzAxMDAKCiAgICBjbWRfZWVwcm9tOiBJMkMgdXBkYXRlcwoKICAgIC0gQ09ORklHX0VOVl9FRVBST01fSVNfT05fSTJDCiAgICAgIGRlZmluZSB0aGlzLCBpZiB5b3UgaGF2ZSBJMkMgYW5kIFNQSSBhY3RpdmF0ZWQsIGFuZCB5b3VyCiAgICAgIEVFUFJPTSwgd2hpY2ggaG9sZHMgdGhlIGVudmlyb25tZW50LCBpcyBvbiB0aGUgSTJDIGJ1cy4KCiAgICAtIENPTkZJR19JMkNfRU5WX0VFUFJPTV9CVVMKICAgICAgaWYgeW91IGhhdmUgYW4gRW52aXJvbm1lbnQgb24gYW4gRUVQUk9NIHJlYWNoZWQgb3ZlcgogICAgICBJMkMgbXV4ZXMsIHlvdSBjYW4gbm93IGRlZmluZSwgaG93IHRvIHJlYWNoIHRoaXMKICAgICAgRUVQUk9NLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IGI2MzgxNWUzMTM1NWI0NGU2NTg5OWIzNjFkYTFkOGVmNjk0MGFiOTAKQXV0aG9yOiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgpEYXRlOglUdWUgRGVjIDIyIDIzOjA1OjQ1IDIwMDkgKzAxMDAKCiAgICBtb3ZlIGRlZmluaXRpb24gb2YgbWFjcm9zIGxpa2VseSBhbmQgdW5saWtlbHkgdG8gY29tcGlsZXIuaAoKICAgIHRoZSBtYWNyb3MgbGlrZWx5IGFuZCB1bmxpa2VseSB3ZXJlIGRlZmluZWQgaW4gaW5jbHVkZS9saW51eC9tdGQvY29tcGF0LmgsCiAgICBidXQgdXNlZCBpbiBjb2RlIG5vdCByZWxhdGVkIHRvIE1URC4gbW92ZWQgdGhlIG1hY3JvIGRlZmluaXRpb25zIHRvIGNvbXBpbGVyLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgoKY29tbWl0IGMzZDdlZWM2ZDg4OTQ1ZGVjMDYyNmNkZDRmNGEzNWNiNWY4M2VmMDAKQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KRGF0ZToJVHVlIERlYyAyMiAxMjo0MzowMiAyMDA5ICswMTAwCgogICAgY21kX2Jvb3RtLmM6IENoYW5nZSBpbnRlcnByZXRhdGlvbiBvZiBzdGFuZGFsb25lIGltYWdlIHBhcmFtZXRlcnMuCgogICAgQ3VycmVudCBjb2RlIHVzZXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBib290bSBmb3Igc3RhbmRhbG9uZSBpbWFnZXMgdG8KICAgIG92ZXJyaWRlIHRoZSBsb2FkIGFkZHJlc3Mgc3BlY2lmaWVkIGluIHRoZSBpbWFnZSBpbnN0ZWFkIG9mIHBhc3NpbmcgYWxsCiAgICBwYXJhbWV0ZXJzIGFzIGlzIHRvIHRoZSBhcHBsaWNhdGlvbi4gIFRoaXMgYmVoYXZpb3VyIGlzIG5vdCBkb2N1bWVudGVkCiAgICBhbmQgbm90IGluIGxpbmUgd2l0aCBob3cgdGhlIGdvIGNvbW1hbmQgd29ya3MgZm9yIHN0YW5kYWxvbmUgYXBwbGljYXRpb25zLAogICAgc28gd2Ugc2ltcGx5IGRyb3AgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgOGI4MjhhOGY0NGI3ZWU5OTUzYzdiYTYzZTY0YjFlODA3OTAxMzliMwpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglUdWUgRGVjIDIyIDEyOjQzOjAxIDIwMDkgKzAxMDAKCiAgICBjbWRfYm9vdG0uYzogRG8gbm90IGxvYWQgYSByYW1kaXNrIHdoZW4gbm90IGJvb3RpbmcgYSBrZXJuZWwuCgogICAgSW4gY2FzZSB3ZSBib290IGFuIGltYWdlIG1hcmtlZCBhcyAnc3RhbmRhbG9uZScgYW5kICdsaW51eCcsIHRoZSBjdXJyZW50CiAgICBjb2RlIGVycm9uZW91c2x5IHRyaWVkIHRvIGxvYWQgYSByYW1kaXNrLgoKICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgoKY29tbWl0IDE2MDM1YmNkOGM4MWMzYzU5ZGRkZmI1NGY0OGU4MDU5YTYyM2IxM2MKQXV0aG9yOiBSb2JpbiBHZXR6IDxyb2Jpbi5nZXR6QGFuYWxvZy5jb20+CkRhdGU6CU1vbiBEZWMgMjEgMTg6NDA6NDQgMjAwOSAtMDUwMAoKICAgIGtnZGI6IHVwZGF0ZSBtZW0yaGV4L2hleDJtZW0gZnVuY3MKCiAgICBDb252ZXJ0IHRoZSBmdW5jcyB0byBkbyB0aGUgY29udmVyc2lvbiBpbmxpbmUgc28gdGhhdCB3ZSBjYW4gZG8gdGhlIGNvcHkKICAgIGFsbCBhdCBvbmNlIHdpdGggbWVtY3B5LiAgVGhpcyBsZXQncyB1cyBwdXNoIG91dCBhbiB3ZWlyZCBhcmNoLXNwZWNpZmljCiAgICBpc3N1ZSB3aXRoIGFjY2Vzc2luZyBkaWZmZXJlbnQgcmVnaW9ucyBvZiBtZW1vcnkgdG8gdGhlIG1lbWNweSBmdW5jdGlvbgogICAgbGlrZSB0aGUgTU1ScyBvbiBCbGFja2ZpbiBzeXN0ZW1zLCBhbmQgaXQgc2hvdWxkIGJlIGEgYml0IGZhc3Rlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSb2JpbiBHZXR6IDxyb2Jpbi5nZXR6QGFuYWxvZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgY2JiMGNhYjFkOTI5ODM5ZDFjZjE3MGI1NGIxZmVmMDU4OTY0MzNlYQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIERlYyAyMSAxODo0MDo0MyAyMDA5IC0wNTAwCgogICAga2dkYjogZHJvcCBkdXBsaWNhdGUgZGVidWdnZXJfZXhjZXB0aW9uX2hhbmRsZXIKCiAgICBUaGUgZGVidWdnZXJfZXhjZXB0aW9uX2hhbmRsZXIgZGVmaW5pdGlvbiBpcyB0aGUgc2FtZSBmb3IgZXZlcnlvbmUsIHNvIHVzZQogICAgdGhlIGNvbW1vbiBvbmUgbm93LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAwYzkwOTU1MWY4OGMwZDkyYTkxOWZmNzAxMjdkZjdiMzNjZGQ0NzNkCkF1dGhvcjogUm9iaW4gR2V0eiA8cm9iaW4uZ2V0ekBhbmFsb2cuY29tPgpEYXRlOglNb24gRGVjIDIxIDE4OjQwOjQyIDIwMDkgLTA1MDAKCiAgICBrZ2RiOiBhZGQgZGVmYXVsdCBnZW5lcmljIHN0dWJzCgogICAgVGhlIGRlZmF1bHQga2dkYiBmdW5jdGlvbnMgY2FuIGJlIGltcGxlbWVudGVkIHdpdGggY29tbW9uIFUtQm9vdCBmdW5jdGlvbnMsCiAgICBzbyByYXRoZXIgdGhhbiBmb3JjZSBldmVyeW9uZSB0byBjb3B5ICYgcGFzdGUgdGhlc2UgdGhpbmdzLCBjcmVhdGUgYSBzZXQgb2YKICAgIHdlYWsgc3R1YnMuCgogICAgU2lnbmVkLW9mZi1ieTogUm9iaW4gR2V0eiA8cm9iaW4uZ2V0ekBhbmFsb2cuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGZhMjc0NGRlNjU4NGM5Mjc1MGY4MDdhMDA2ZTIwYTU5ZWUwNDZlNzYKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBEZWMgMjEgMTQ6MTk6MTIgMjAwOSAtMDUwMAoKICAgIG5ldGNvbnNvbGU6IG1hcmsgbG9jYWwgZnVuY3Mgd2l0aCBzdGF0aWMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNzI5M2UwNTc3ZjE0OWI3NTU5NWI2ZjZjZWI3NWJmNTBhNTIzYWZmNgpBdXRob3I6IE1pY2hhZWwgSGVubmVyaWNoIDxtaWNoYWVsLmhlbm5lcmljaEBhbmFsb2cuY29tPgpEYXRlOglTYXQgRGVjIDE5IDA4OjE5OjA5IDIwMDkgLTA1MDAKCiAgICBlYXN5bG9nbzogYWRkIHN1cHBvcnQgZm9yIDE2LWJpdCBSR0I1NjUKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEhlbm5lcmljaCA8bWljaGFlbC5oZW5uZXJpY2hAYW5hbG9nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAwZjU5N2JjMmE4MDM1M2JjZDBmZDRkYWY0MmUyMDQ3Yzk1OTQ4NWM4CkF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+CkRhdGU6CUZyaSBEZWMgMTggMTc6MzU6NTcgMjAwOSArMDEwMAoKICAgIG1wYzV4eHgvY3B1X2luaXQuYzogQ29udmVydCB0byBJTyBhY2Nlc3NvcnMuCgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgMThlODk4OTA2MjVjODZiZTZjOTcxYzAxYjgyNGQxNGJiZGQ3OGUyNQpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglGcmkgRGVjIDE4IDE3OjM1OjU2IDIwMDkgKzAxMDAKCiAgICBtcGM1eHh4Lmg6IEFkZCBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBmb3IgWExCIGFyYml0ZXIgYmxvY2suCgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgMTBjMzJmZjU5ZjdhYmUzNTJiNTQ4MDY2OTE4YmM1ZWEzOWU3YzQ3YgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIERlYyAyIDIxOjE1OjAzIDIwMDkgLTA1MDAKCiAgICBjb25maWdfZGVmYXVsdHMuaDogbmV3IGhlYWRlciBmb3IgY29tbW9uIHUtYm9vdCBjb25maWcgZGVmYXVsdHMKCiAgICBUaGVyZSBhcmUgYSBidW5jaCBvZiBmZWF0dXJlcyBpbiBVLUJvb3QgdGhhdCB3ZSB3YW50IHRvIGVuYWJsZSBieSBkZWZhdWx0LAogICAgYW5kIGl0J3MgYmVzdCBpZiB3ZSBjZW50cmFsaXplIHRoZW0gaW4gb25lIHBsYWNlIHJhdGhlciB0aGFuIHVwZGF0aW5nIGFsbAogICAgdGhlIGJvYXJkIGZpbGVzIG91dCB0aGVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNjQ5MTdjYTM4OTMzZDEwYjM3NjNmNjFkZjdhMWU1OGUxZTEyN2I1MgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVN1biBKYW4gMTcgMTU6Mzg6MjYgMjAxMCAtMDYwMAoKICAgIFBDSWUsIFVTQjogUmVwbGFjZSAnZW5kIHBvaW50JyByZWZlcmVuY2VzIHdpdGggJ2VuZHBvaW50JwoKICAgIFdoZW4gcmVmZXJyaW5nIHRvIFBDSWUgYW5kIFVTQiAnZW5kcG9pbnQnIGlzIHRoZSBzdGFuZGFyZCBuYW1pbmcKICAgIGNvbnZlbnRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBBY2tlZC1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgNmE0NWUzODQ5NTUyNjI4ODIzNzVhMjc4NTQyNmRjNjVhZWI2MzZjNApBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVN1biBKYW4gMyAwODozMzo1OCAyMDEwICswMTAwCgogICAgTWFrZSBnZXRlbnZfSVBhZGRyKCkgZ2xvYmFsCgogICAgVGhlcmUgYXJlIGJvYXJkcyBvdXQgdGhlcmUgdGhhdCBkbyBub3QgaGF2ZSBuZXR3b3JrIHN1cHBvcnQgaW4KICAgIFUtQm9vdCAoQ09ORklHX0NNRF9ORVQgbm90IHNldCksIGJ1dCB0aGV5IGRvIHNvIGluIExpbnV4LiBUaGlzCiAgICBtYWtlcyBpdCBkZXNpcmFibGUgdG8gYmUgYWJsZSB0byBwb3J0IG5ldHdvcmsgY29uZmlndXJhdGlvbiAobGlrZQogICAgdGhlIElQIGFkZHJlc3MpIHRvIHRoZSBMaW51eCBrZXJuZWwuCgogICAgV2Ugc2hvdWxkIG5vdCBtYWtlIHRoZSBwYXNzaW5nIG9mIHRoZSBJUCBjb25maWd1cmF0aW9uIHRvIExpbnV4CiAgICBkZXBlbmRlbnQgb24gVS1Cb290IGZlYXR1cmVzIC8gc2V0dGluZ3MuCgogICAgRm9yIHRoaXMsIG1ha2UgZ2V0ZW52X0lQYWRkcigpIGdsb2JhbC4gVGhpcyBmaXhlcyBidWlsZCBlcnJvcgoKICAgIHUtYm9vdC9saWJfeHh4L2JvYXJkLmM6MzYwOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBnZXRlbnZfSVBhZGRyJwoKICAgIG9uIHZhcmlvdXMgYXJjaGl0ZWN0dXJlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgogICAgQWNrZWQtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgODQ2YTYzOTFlNGJjOWZkZDcyMTc1M2ExMDIxOTUzZmYwY2ExN2MyNwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJRnJpIEphbiAxNSAwNDo1MDo0MCAyMDEwIC0wNTAwCgogICAgQmxhY2tmaW46IGRyb3AgLmVoX2ZyYW1lIGZyb20gbGlua2VyIHNjcmlwdAoKICAgIE5vdGhpbmcgaW4gVS1Cb290IHVzZXMgcnVudGltZSBDKysgZXhjZXB0aW9ucy91bndpbmRpbmcsIHNvIHRoZXJlIGlzIG5vCiAgICBuZWVkIHRvIGxpc3QgdGhpcyBzZWN0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBlZDkxMmQ0ZDY1OWU2NzkxMGVkY2EwNDQ5ODgwM2RiMjRkODI2NjE1CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglGcmkgSmFuIDE1IDA0OjQ3OjA2IDIwMTAgLTA1MDAKCiAgICBCbGFja2ZpbjogdXNlIHNvcnQgZnVuY3MgaW4gdGhlIGxpbmtlciBzY3JpcHQKCiAgICBUaGlzIGlzIGp1c3QgQmxhY2tmaW4gY2F0Y2hpbmcgdXAgd2l0aCBldmVyeSBvbmUgZWxzZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMmFlZGEyZDA1NGJiMzIwMjdiZWQzM2Q5YzNhNjNkMTUyMTY0YjVlMApBdXRob3I6IEhhcmFsZCBLcmFwZmVuYmF1ZXIgPEhhcmFsZC5LcmFwZmVuYmF1ZXJAYmx1ZXRlY2huaXguYXQ+CkRhdGU6CVdlZCBKYW4gMTMgMDk6MDQ6NTMgMjAxMCAtMDUwMAoKICAgIEJsYWNrZmluOiB0Y20tYmY1MTg6IG5ldyBib2FyZCBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogSGFyYWxkIEtyYXBmZW5iYXVlciA8SGFyYWxkLktyYXBmZW5iYXVlckBibHVldGVjaG5peC5hdD4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBjNDZhMGViZjgyZDNmZDI3ZGQyMWFkN2Q0ZmU3ZjExYzJiMmIwYjIxCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglGcmkgSmFuIDggMDc6NTY6MTcgMjAxMCAtMDUwMAoKICAgIEJsYWNrZmluOiBlbmFibGUgSkZGUyBzdW1tYXJ5IHN1cHBvcnQgZm9yIEFESSBib2FyZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgOTEyZGE4ZDYwNjk5NzgyMmQ0NDkwNWI4M2VmNDc3OTlhMTMwYTFiOQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJRnJpIEphbiA4IDA2OjE0OjEzIDIwMTAgLTA1MDAKCiAgICBCbGFja2ZpbjogYmY1MThmLWV6YnJkOiBpbmNyZWFzZSBtb25pdG9yIGxlbmd0aAoKICAgIFRoZSBhZGRpdGlvbiBvZiBLR0RCIG92ZXJmbG93ZWQgdGhlIGN1cnJlbnQgbGlua2VyIHNlY3Rpb24uCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDAzNjQyYWVlZTBkNTE2NjBjMzVjOWRiZGRlNzg4ODJlYjNlZmIzNTAKQXV0aG9yOiBSb2JpbiBHZXR6IDxyb2Jpbi5nZXR6QGFuYWxvZy5jb20+CkRhdGU6CU1vbiBEZWMgMjEgMTc6MDI6NDggMjAwOSAtMDUwMAoKICAgIEJsYWNrZmluOiBoYW5kbGUgYW5vbWFseSAwNTAwMDI1NwoKICAgIE5lZWQgdG8gcmVsb2FkIHRoZSBsb29wIGNvdW50ZXJzIHRvIGtlZXAgZnJvbSBjb3JydXB0aW5nIGhhcmR3YXJlIGxvb3BzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJvYmluIEdldHogPHJvYmluLmdldHpAYW5hbG9nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBiNmRiMjgzNDQwN2Q0OWVjNDhhYzhlOTI4MWZkZDcwNGQ1ZWUzZWJhCkF1dGhvcjogUm9iaW4gR2V0eiA8cm9iaW4uZ2V0ekBhbmFsb2cuY29tPgpEYXRlOglNb24gRGVjIDIxIDE2OjU5OjIxIDIwMDkgLTA1MDAKCiAgICBCbGFja2Zpbjoga2VlcCBod3RyYWNlIG9uIENQTEIgbWlzcwoKICAgIENyYXNoZXMgcmFyZWx5IGhhcHBlbiBpbiB0aGUgQ1BMQiBtaXNzIGhhbmRsZXIgY29tcGFyZWQgdG8gdGhlIHJlc3Qgb2YKICAgIFUtQm9vdCBjb2RlLCBzbyBkaXNhYmxlIGhhcmR3YXJlIHRyYWNpbmcgd2hlbiBwcm9jZXNzaW5nIG1pc3Nlcy4gIFRoaXMKICAgIHdheSBhIGNyYXNoIGR1ZSB0byBvdGhlciBmdW5jdGlvbnMgd2lsbCBiZSBzaG93biBwcm9wZXJseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSb2JpbiBHZXR6IDxyb2Jpbi5nZXR6QGFuYWxvZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMDA5Nzg3MGUzZDcyZjEwZWM1OGFlMjI0ODg5NDVmZDllZTM3Mjg5ZgpBdXRob3I6IFJvYmluIEdldHogPHJvYmluLmdldHpAYW5hbG9nLmNvbT4KRGF0ZToJTW9uIERlYyAyMSAxNTozMTowOCAyMDA5IC0wNTAwCgogICAgQmxhY2tmaW46IGFkZCBhIG5ldGNvbnNvbGUgaGVscGVyCgogICAgU2lnbmVkLW9mZi1ieTogUm9iaW4gR2V0eiA8cm9iaW4uZ2V0ekBhbmFsb2cuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDEwZWFmYTEwYmUyZGVhYmE0OTM5ZDBjMTljZDIxNjQ4ZjJkM2Q0YWEKQXV0aG9yOiBNaWNoYWVsIEhlbm5lcmljaCA8bWljaGFlbC5oZW5uZXJpY2hAYW5hbG9nLmNvbT4KRGF0ZToJVGh1IERlYyAxMCAwOToxOToyMSAyMDA5ICswMDAwCgogICAgQmxhY2tmaW46IGFkZCBzdXBwb3J0IGZvciBCRjUyNy1FWktJVCB2Mi4xCgogICAgVGhlIG5ldyBib2FyZCByZXZpc2lvbiBoYXMgYSBkaWZmZXJlbnQgTENELgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgSGVubmVyaWNoIDxtaWNoYWVsLmhlbm5lcmljaEBhbmFsb2cuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDk0NDJjNGExMzM3ZGJjZjgyZTNiYzAyYTEyZTI0ZjQ5MWUwZTYxMjIKQXV0aG9yOiBDbGlmZiBDYWkgPGNsaWZmLmNhaUBhbmFsb2cuY29tPgpEYXRlOglUdWUgRGVjIDggMDc6MjU6NTcgMjAwOSArMDAwMAoKICAgIEJsYWNrZmluOiBiZjUyNy1lemtpdC9iZjU0OC1lemtpdDogYWRkIG11c2IgYm9hcmQgc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBDbGlmZiBDYWkgPGNsaWZmLmNhaUBhbmFsb2cuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDU4MWQ5MmVlZmMxYTA2MGVhNWM2ZWI0MjAyODg4MGEzNzA5NTk1M2QKQXV0aG9yOiBDbGlmZiBDYWkgPGNsaWZmLmNhaUBhbmFsb2cuY29tPgpEYXRlOglNb24gRGVjIDcgMDg6MDM6MDYgMjAwOSArMDAwMAoKICAgIEJsYWNrZmluOiBiZmluX3NwaTogcm91bmQgdXAgY2xvY2sgZGl2aWRlcgoKICAgIElmIHRoZSByZXF1ZXN0ZWQgY2xvY2sgY2Fubm90IGJlIGV4YWN0bHkgb2J0YWluZWQsIHJvdW5kIGl0IHVwIHNvIHRoYXQgd2UKICAgIGVyciBvbiB0aGUgc2lkZSBvZiBzbGlnaHRseSBzbG93ZXIgcmF0aGVyIHRoYW4gc2xpZ2h0bHkgZmFzdGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IENsaWZmIENhaSA8Y2xpZmYuY2FpQGFuYWxvZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYTUyYWQ0Zjk5NDg2Y2UzZjQwNGY4M2Y3NTI2M2UzMjE5NTZiYjZkNQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIE5vdiAzMCAxMzo1MToyNCAyMDA5IC0wNTAwCgogICAgQmxhY2tmaW46IHB1bGwgaW8gZnVuY3MgZnJvbSBsaW51eAoKICAgIFNvbWUgY29tbW9uIGNvZGUgdXNlcyBtb3JlIG9mIHRoZSBpby5oIGZ1bmNzIHRoYW4gd2UgY3VycmVudGx5IHByb3ZpZGUsIHNvCiAgICBwdWxsIGluIGFsbCBvZiB0aGUgb25lcyBmcm9tIHRoZSBsaW51eCBrZXJuZWwuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDVlZWZlN2U5OTUzN2NhMzY0MTQ5NjE4NWYyM2IxZGM5ZTc2YjQwNWMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBOb3YgMzAgMTM6MzQ6MDcgMjAwOSAtMDUwMAoKICAgIEJsYWNrZmluOiBzZWN0aW9uIG9mZiB0aGUgQ0YvSURFIGlvLmggaGFja3MKCiAgICBUaGVzZSBuZWVkIHRvIGJlIHJldGhvdWdodCwgYnV0IHVudGlsIHRoYXQgaGFwcGVucywgaXNvbGF0ZSB0aGUgaGFjayBzbwogICAgdGhhdCB3ZSBjYW4gZXh0ZW5kIHRoZSBjb21tb24gY29kZSB3aXRob3V0IGJyZWFraW5nIHRoaW5ncy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgM2IwNjJkYTMyNmY5YjM3ZDM0YWE4ZjgwYmY5ZDJmOWU3NGY1NWM4NgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIE5vdiAzMCAxMzozMDoxOCAyMDA5IC0wNTAwCgogICAgQmxhY2tmaW46IGRyb3AgdW51c2VkIGZ1bmNzIGZyb20gaW8uaAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA1Zjc5NjQ0ZDI2NjU3NjNkNTIyZWYyZGI1M2MwMjZjNWY0ODY1YjAyCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gTm92IDMwIDEzOjA4OjM5IDIwMDkgLTA1MDAKCiAgICBCbGFja2ZpbjogYmY1MzMtc3RhbXA6IHNwbGl0IGFuZCBjbGVhbnVwIENGL0lERSBjb2RlCgogICAgR2l2ZSB0aGUgQ0YvSURFIGNvZGUgaXRzIG93biBmaWxlIHRvIGtlZXAgdGhpbmdzIGNsZWFubHkgc2VwYXJhdGVkLiAgV2hpbGUKICAgIHdlJ3JlIGhlcmUsIGNsZWFuIHVwIHRoZSBjb2RlIHRvIHVzZSBjb21tb24gZnVuY3Rpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBlNTRjODIwOTkxM2EzZjI2YWUyODgxOWUzNTE1ZGY1M2VjMmI0NTQ4CkF1dGhvcjogQ2xpZmYgQ2FpIDxjbGlmZi5jYWlAYW5hbG9nLmNvbT4KRGF0ZToJRnJpIE5vdiAyMCAwODoyNDo0MyAyMDA5ICswMDAwCgogICAgQmxhY2tmaW46IGNvbnZlcnQgYmZpbl9zZGggdG8gZ2VuZXJpYyBtbWMKCiAgICBTaWduZWQtb2ZmLWJ5OiBDbGlmZiBDYWkgPGNsaWZmLmNhaUBhbmFsb2cuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDE3ZWJkNWJmMzM5MzE0NGYzZWFkMTkzODQzMThhNmU1YjAxYzRmOTAKQXV0aG9yOiBDbGlmZiBDYWkgPGNsaWZmLmNhaUBhbmFsb2cuY29tPgpEYXRlOglUdWUgTm92IDE3IDA5OjM2OjIxIDIwMDkgKzAwMDAKCiAgICBCbGFja2ZpbjogYmZpbl9zcGk6IGxldCBib2FyZHMgY29udHJvbCBpZGxlIHZhbHVlCgogICAgU29tZSBTUEkgZGV2aWNlcyBsaWtlIHRvIHNlZSBoaWdoIGlkbGUgdmFsdWVzIHJhdGhlciB0aGFuIGxvdy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBDbGlmZiBDYWkgPGNsaWZmLmNhaUBhbmFsb2cuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGVhNjkzZjIyZDhkYmQ4YTY1ODY3YTYwYTdmM2ZhYWMzMGY4NWQ2NWIKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBOb3YgMTQgMTM6NTM6MDAgMjAwOSAtMDUwMAoKICAgIEJsYWNrZmluOiBhc20vc3RyaW5nLmg6IGRyb3AgdXNlbGVzcyBpbmNsdWRlcwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBmOTQ4MTU4ZjcyZTZiODgwZDAyZTRmYTU0OTM2MmU0ZGMyODVlYjFjCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgTm92IDEyIDE4OjQyOjUzIDIwMDkgLTA1MDAKCiAgICBCbGFja2ZpbjogdXNlIG5ldyBiZmluIHJlYWQvd3JpdGUgbW1yIGhlbHBlciBmdW5jcwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAzMTNlOGFhY2MxYzlmNWNhMDYwODVmYTE5YjE0MjlmYTE4YTAxYWFhCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgTm92IDEyIDE4OjQyOjA3IDIwMDkgLTA1MDAKCiAgICBCbGFja2ZpbjogbW92ZSB3YXRjaGRvZyBjb25maWcgY2hlY2sgdG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZGM2YmM2NDVlMGNjMTkzOWIzMWNjNTQzNDY0MTVjZjhlMGRmZmM4OApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIE5vdiAxMSAxOTowODozMyAyMDA5IC0wNTAwCgogICAgQmxhY2tmaW46IGZpeCBMMSBJbnN0cnVjdGlvbiBzaXplcyBvbiBCRjUyeC9CRjU0eAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBiNzY1OWVmMmU3NjRmNjJmYzMzNGYwZDk3MDcyMTQ5NjgyM2U0ODg4CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglXZWQgTm92IDExIDE3OjI5OjM1IDIwMDkgLTA1MDAKCiAgICBCbGFja2ZpbjogYmY1MjctZXpraXQ6IGF1dG8tc2VsZWN0IE5BTkQgc2V0dGluZ3MKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNzUyN2ZlZWYwNmIxM2U5ZmQ1YjZkMTBhNGJmYzgxYjU5ZWU1NmYyNwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIE5vdiA5IDE5OjM4OjIzIDIwMDkgLTA1MDAKCiAgICBCbGFja2Zpbjogc3VwcG9ydCBib2FyZHMgd2l0aCBubyBleHRlcm5hbCBtZW1vcnkKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZGJkYTJjNjVlNWZlYzkyZDA3OTEzNjdiNTMwNDI5ODM3NDZjZTk1YgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIE5vdiA5IDE5OjQ0OjA0IDIwMDkgLTA1MDAKCiAgICBCbGFja2ZpbjogcmUtYXJjaGl0ZWN0IGluaXRjb2RlCgogICAgVGhlIHNpbmdsZSBpbml0Y29kZSBmdW5jdGlvbiB3YXMgZ3Jvd2luZyB1bndpZWxkeSwgc28gc3BsaXQgaXQgdXAgdGhlCiAgICBkaXN0aW5jdCBzdGVwcyBpbnRvIHRoZWlyIG93biBmdW5jdGlvbi4gIFRoaXMgc2hvdWxkIG1ha2luZyBkaWdlc3RpbmcgdGhlCiAgICByZXN1bHQgbXVjaCBlYXNpZXIgb24gcGVvcGxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBmNTQwMmQ0YzI3ZTQ3MWMzMzNjYjg0YTgyYTQzN2U2MGM2MTgyNDQ5CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gTm92IDkgMTg6MDg6MDkgMjAwOSAtMDUwMAoKICAgIEJsYWNrZmluOiBnbG9iYWxfZGF0YS5oOiBtYWtlIHB1bGwgaW4gbmVlZGVkIGhlYWRlcnMKCiAgICBXZSBuZWVkIHRoZSBkZWZpbml0aW9uIG9mIGJkX3QgaW4gdGhpcyBoZWFkZXIsIHNvIHB1bGwgaW4gYXNtL3UtYm9vdC5oLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBmYTQ1YmQ0OThhMTk3MDU3NGY0Yjc1MzliNjdjYzIyODZmMTMyNGZhCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgTm92IDMgMDY6Mjg6MjIgMjAwOSAtMDUwMAoKICAgIEJsYWNrZmluOiBraWxsIG9mZiB1c2VsZXNzIGluaXRkcmFtKCkgdXNhZ2UKCiAgICBXaGlsZSB0aGUgaW5pdGRyYW0oKSBmdW5jdGlvbiBtYWtlcyBzZW5zZSBvbiBzb21lIGFyY2hlcywgaXQgZG9lc24ndCBmb3IKICAgIEJsYWNrZmluIHN5c3RlbXMgYXMgaXQncyBhbHdheXMgaW1wbGVtZW50ZWQgdGhlIHNhbWUgd2F5LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBiMWUyYzU1MTlhMDZmOWE1ODQxYTdhNDM0YmY0ZGE0ZDM5M2Y4ZGY1CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgTm92IDMgMDY6MTE6MzEgMjAwOSAtMDUwMAoKICAgIEJsYWNrZmluOiBtb3ZlIHNlY3Rpb24gbGVuZ3RoIGNhbGN1bGF0aW9uIHRvIGxpbmtlciBzY3JpcHQKCiAgICBUaGUgbGVuZ3RoIG9mIHRoZSBzZWN0aW9ucyBpcyBmaXhlZCBhdCBsaW5rIHRpbWUsIHNvIGxldCB0aGUgbGlua2VyIGRvIHRoZQogICAgY2FsY3VsYXRpb24gcmF0aGVyIHRoYW4gZG9pbmcgaXQgb3Vyc2VsdmVzIGF0IHJ1bnRpbWUuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDQ0NjcwN2M5MGY1MmU1ZmNhZmVjZDQ2ODkyMGNmYWQ2ODVlZTlmYzcKQXV0aG9yOiBWYWxlbnRpbiBZYWtvdmVua292IDx5YWtvdmVua292QG5paXN0dC5ydT4KRGF0ZToJTW9uIE9jdCAyNiAxODo0MzowNCAyMDA5IC0wNDAwCgogICAgQmxhY2tmaW46IGJmNTYxLWFjdmlsb246IG5ldyBib2FyZCBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogVmFsZW50aW4gWWFrb3ZlbmtvdiA8eWFrb3ZlbmtvdkBuaWlzdHQucnU+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMTZhZGE0ZjY2ZmZlYTUzNjYyYjdhNjFhNTIyMmNiYzgyNWQ2NzE3NQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IE9jdCAxNSAxNDo1OTo0NiAyMDA5IC0wNDAwCgogICAgQmxhY2tmaW46IEFESSBzZXR0aW5nczogZW5hYmxlIHNpbGVudCBjb25zb2xlIHN1cHBvcnQKCiAgICBWZXJ5IGxpdHRsZSBhZGRpdGlvbmFsIGNvZGUgb3ZlcmhlYWQsIGFuZCBvbmx5IHdvcmtzIHdoZW4gdGhlIHVzZXIgc2V0cyBhbgogICAgZW52IHZhciBhaGVhZCBvZiB0aW1lLCBzbyBkZWZhdWx0IHRvIG9uIG1ha2VzIHNlbnNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBhYzQxYzdhMGU3NmZlNjM4NDk0OTU3MTM3M2RjODRhNjA5ODk2NWFjCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgT2N0IDE1IDE0OjU1OjIxIDIwMDkgLTA0MDAKCiAgICBCbGFja2ZpbjogYmY1Mzctc3RhbXA6IHJlbmFtZSBTUEkvTU1DIGRlZmluZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBmZDA0YTA1Yjg5ZDg0OGM3ODQxZDg1MTI3NTFiOGNjZThiNzkxZTY5CkF1dGhvcjogSGFyYWxkIEtyYXBmZW5iYXVlciA8SGFyYWxkLktyYXBmZW5iYXVlckBibHVldGVjaG5peC5hdD4KRGF0ZToJV2VkIE9jdCAxNCAwODozNzozMiAyMDA5IC0wNDAwCgogICAgQmxhY2tmaW46IHVwZGF0ZSB0aW55IGJvYXJkIHNldHRpbmdzICh2b2x0YWdlL2RlZmF1bHQgZW52KQoKICAgIFRoZSB0aW55Ym9hcmRzIGxpa2UgdG8gcnVuIGF0IGEgbGl0dGxlIGxvd2VyIHZvbHRhZ2UgdGhhbiB0aGUgZGVmYXVsdCwgYW5kCiAgICB0aGV5IHByZWZlciB0byBib290IG92ZXIgdGhlIG5ldHdvcmsuICBGb3IgdGhlIGxhdHRlciwgZXh0ZW5kIHRoZSBjb21tb24KICAgIGNvZGUgYSBsaXR0bGUgdG8gbWFrZSB0aGlzIGVhc2llci4KCiAgICBBbHNvIGZpeCB0aGUgY20tYmY1MjcgZW52IHNlY3RvciBzaXplIHdoaWxlIHdlJ3JlIGluIGhlcmUgdG8gcmVmbGVjdCB0aGUKICAgIGZsYXNoIHRoYXQgaXMgYWN0dWFsbHkgaW4gdXNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhcmFsZCBLcmFwZmVuYmF1ZXIgPEhhcmFsZC5LcmFwZmVuYmF1ZXJAYmx1ZXRlY2huaXguYXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNzZkODIxODdjNmNjY2JjZDhkNTE0MDE1YzNiMjgzZjA1ZWU4YWM1YwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIEp1bCAyMSAyMjoxNzozNiAyMDA5IC0wNDAwCgogICAgQmxhY2tmaW46IHR3ZWFrIGVtYmVkZGVkIExEUiBlbnYgY29uZmlnIG9wdGlvbgoKICAgIFVzZSB0aGUgY29tbW9uIGNvbmZpZyBvcHRpb24gZm9yIGV4dHJhY3RpbmcgdGhlIGVudmlyb25tZW50IGZvciBlbWJlZGRpbmcKICAgIGludG8gTERSIGZpbGVzIGFuZCBjbGFyaWZ5IHRoZSBMRFItc3BlY2lmaWMgb3B0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAyNzQwNTQ0ODgxZjY1MjU2Njc1NjgxNWRkYTRkYTBiY2Q5NDZlOWRlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIEphbiAxNSAxMToyMDoxMCAyMDEwICswMTAwCgogICAgbWFsbG9jOiByZXR1cm4gTlVMTCBpZiBub3QgaW5pdGlhbGl6ZWQgeWV0CgogICAgV2hlbiBtYWxsb2MoKSB3YXMgY2FsbGVkIGJlZm9yZSBpdCB3YXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQKICAgIChhcyB3b3VsZCBoYXBwZW4gaWYgd2hlbiB1c2VkIGJlZm9yZSByZWxvY2F0aW9uIHRvIFJBTSkgaXQgcmV0dXJuZWQKICAgIHJhbmRvbSwgbm9uLU5VTEwgdmFsdWVzLCB3aGljaCBjYWxsZWQgYWxsIGtpbmRzIG9mIGRpZmZpY3VsdCB0byBkZWJ1ZwogICAgc3Vic2VxdWVudCBlcnJvcnMuCgogICAgTWFrZSBzdXJlIHRvIHJldHVybiBOVUxMIHdoZW4gaW5pdGlhbGl6YXRpb24gd2FzIG5vdCBkb25lIHlldC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGYwOTgzMzcxNTJjYTQ4ZTEzNTQ0OGY1ZTc4MzZjY2U5MzhlMTJiYzAKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgSmFuIDE1IDExOjEwOjMzIDIwMTAgKzAxMDAKCiAgICBKRkZTMjogZHJvcCBzdXBwb3J0IGZvciBMWkFSSSBjb21wcmVzc2lvbiBtb2RlCgogICAgU3VwcG9ydCBmb3IgTFpBUkkgY29tcHJlc3Npb24gbW9kZSB3YXMgYWRkZWQgYmFzZWQgb24gYSBNVEQgQ1ZTCiAgICBzbmFwc2hvdCBvZiBNYXJjaCAxMywgMjAwNS4gSG93ZXZlciwgZnMvamZmczIvY29tcHJfbHphcmkuYyBjb250YWlucwogICAgY29udHJhZGljdG9yeSBsaWNlbnNpbmcgdGVybXM6IHRoZSBvcmlnaW5hbCBjb3B5cmlnaHQgY2xhdXNlIHNheXMgIkFsbAogICAgcmlnaHRzIHJlc2VydmVkLiBQZXJtaXNzaW9uIGdyYW50ZWQgZm9yIG5vbi1jb21tZXJjaWFsIHVzZS4iLCBidXQKICAgIGxhdGVyIHJlZmVyZW5jZSB0byB0aGUgZmlsZSAnTElDRU5DRScgaW4gdGhlIGpmZnMyIGRpcmVjdG9yeSB3YXMgYWRkZWQKICAgIHdoaWNoIHNheXMgR1BMIHYyIG9yIGxhdGVyLgoKICAgIEFzIG5vIGJvYXJkcyBldmVyIHVzZWQgTFpBUkkgY29tcHJlc3Npb24sIGFuZCB0aGlzIGZpbGUgaXMgYWxzbyBub3QKICAgIHByZXNlbnQgaW4gcmVjZW50IE1URCBjb2RlLCB3ZSByZXNvbHZlIHRoaXMgY29uZmxpY3QgYnkgcmVtb3ZpbmcgdGhlCiAgICBjb25mbGljdGluZyBmaWxlIGFuZCByZWZlcmVuY2VzIHRvIGl0LgoKICAgIEFsc28gY29weSB0aGUgcmVmZXJlbmNlZCBidXQgbWlzc2luZyBmaWxlICdMSUNFTkNFJyBmcm9tIHRoZSBjdXJyZW50CiAgICBNVEQgc291cmNlIHRyZWUuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAzMjE3OTBmNjFiYjkyZmVhZDBmYzAxYjhkMDU1YWEzMzFkOGRjZjg1CkF1dGhvcjogQnJ5YW4gV3UgPGJyeWFuLnd1QGFuYWxvZy5jb20+CkRhdGU6CVNhdCBKYW4gOSAxNjo1Mzo1NCAyMDEwIC0wNTAwCgogICAgdXNiOiBtdXNiOiBhZGQgdmlydHVhbCByb290IGh1YiBjb250cm9sIHN1cHBvcnQKCiAgICBGb3IgTVVTQiBkZXZpY2VzIHRoYXQgZG8gbm90IHN1cHBvcnQgbXVsdGlwb2ludCAoaHVicyksIHdlIGhhdmUgdG8gZW11bGF0ZQogICAgYSByb290IGh1YiBzbyB0aGF0IHdlIGNhbiBzdXBwb3J0IGNvcmUgb3BlcmF0aW9ucyBsaWtlIHJlc2V0dGluZyBwb3J0cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCcnlhbiBXdSA8YnJ5YW4ud3VAYW5hbG9nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IENsaWZmIENhaSA8Y2xpZmYuY2FpQGFuYWxvZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNTU5ZTJjODdlNDVhZTcyNjE4MzdkNDk0NTQxMWMwNDgzMzkzN2QyYQpBdXRob3I6IENocmlzIFpoYW5nIDxjaHJpc0BzZWFtaWNyby5jb20+CkRhdGU6CVdlZCBKYW4gNiAxMzozNDowNiAyMDEwIC0wODAwCgogICAgQWRkcyBFSENJIGRlZmluaXRpb25zIHRvIHNlcXVvaWEgYm9hcmQgY29uZmlndXJhdGlvbiBmaWxlLgoKICAgIEFkZHMgcmVxdWlyZWQgZGVmaW5pdGlvbnMgZm9yIEVIQ0kgc3VwcG9ydCBpbiBzZXF1b2lhIGNvbmZpZ3VyYXRpb24gZmlsZS4KICAgIEJ1dCBzdGlsbCBrZWVwcyB0aGUgT0hDSSBhcyBkZWZhdWx0IGRyaXZlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBaaGFuZyA8Y2hyaXNAc2VhbWljcm8uY29tPgoKY29tbWl0IDVmODI4ODdmZWVjZDc4OTU1OTM0MDFmMWNjZGE4NjZiZmIyOTlmYmIKQXV0aG9yOiBDaHJpcyBaaGFuZyA8Y2hyaXNAc2VhbWljcm8uY29tPgpEYXRlOglXZWQgSmFuIDYgMTM6MzQ6MDUgMjAxMCAtMDgwMAoKICAgIEFkZCBwcGM0NDBlcHggVVNCIGVoY2kgc3VwcG9ydC4KCiAgICBDdXJyZW50bHkgcHBjNDQwZXB4IHVzZXMgT0hDSSBmb3IgVVNCIGZ1bGwtc3BlZWQgc3VwcG9ydC4gVGhpcyBjaGFuZ2UgYWRkcwogICAgc3VwcG9ydCBmb3IgRUhDSS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBaaGFuZyA8Y2hyaXNAc2VhbWljcm8uY29tPgoKY29tbWl0IGI0MTYxOTFhMTQ3NzBjNmJjYzZmZDY3YmU3ZGVjZjgxNTliMmJhZWUKQXV0aG9yOiBDaHJpcyBaaGFuZyA8Y2hyaXNAc2VhbWljcm8uY29tPgpEYXRlOglXZWQgSmFuIDYgMTM6MzQ6MDQgMjAxMCAtMDgwMAoKICAgIEZpeCBFSENJIHBvcnQgcmVzZXQuCgogICAgSW4gVVNCIGVoY2kgZHJpdmVyLCB0aGUgcG9ydCByZXNldCBpcyBub3QgdGVybWluYXRlZC4gRUhDSSBzcGVjIHNheXMgIkEgaG9zdAogICAgIGNvbnRyb2xsZXIgbXVzdCB0ZXJtaW5hdGUgdGhlIHJlc2V0IGFuZCBzdGFiaWxpemUgdGhlIHN0YXRlIG9mIHRoZSBwb3J0IHdpdGhpbgogICAgIDIgbWlsbGlzZWNvbmRzIi4gV2l0aG91dCB0ZXJtaW5hdGlvbiwgYSBwb3J0IHN0YXlzIGF0IHJlc2V0IHN0YXRlLiBUaGlzIGlzCiAgICAgb2JzZXJ2ZWQgb24gcHBjNHh4KHNlcXVvaWEpIGJvYXJkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBaaGFuZyA8Y2hyaXNAc2VhbWljcm8uY29tPgoKY29tbWl0IGIzMDFiZTA1OTlkMTRiZTQ2ZmMwODg4NjFiYjc5ODY0ODg0NGFlYTUKQXV0aG9yOiBTYW5qZWV2IFByZW1pIDxwcmVtaUB0aS5jb20+CkRhdGU6CVRodSBEZWMgMjQgMTQ6MjA6NDEgMjAwOSArMDUzMAoKICAgIG9tYXAzOiBmaXggY29tcGlsZSB3YXJuaW5nCgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGlzIHdhcm5pbmcgZHVyaW5nIGNvbXBpbGU6CgogICAgb21hcDMuYzogSW4gZnVuY3Rpb24gJ211c2JfcGxhdGZvcm1faW5pdCc6CiAgICBvbWFwMy5jOjEyNjogd2FybmluZzogbGFiZWwgJ2VuZCcgZGVmaW5lZCBidXQgbm90IHVzZWQKCiAgICBQcm9ibGVtIHJlcG9ydGVkIGJ5OiBEaXJrIEJlaG1lW2RpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb21dCgogICAgU2lnbmVkLW9mZi1ieTogU2FuamVldiBQcmVtaSA8cHJlbWlAdGkuY29tPgoKY29tbWl0IGU2MDhmMjIxYzEzOTQzZDg4ZTg2ZjQ0NzUzZTIzNjY4MzQyYzNkZjMKQXV0aG9yOiBCcnlhbiBXdSA8YnJ5YW4ud3VAYW5hbG9nLmNvbT4KRGF0ZToJV2VkIERlYyAxNiAyMjowNDowMiAyMDA5IC0wNTAwCgogICAgdXNiOiBtdXNiOiBhZGQgc3VwcG9ydCBmb3IgQmxhY2tmaW4gTVVTQgoKICAgIFNpZ25lZC1vZmYtYnk6IEJyeWFuIFd1IDxicnlhbi53dUBhbmFsb2cuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQ2xpZmYgQ2FpIDxjbGlmZi5jYWlAYW5hbG9nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IGJjNzJhOTE5ZTAzNzc4MmY2NGUzYWM0NWM5MWJjNjA0MDhlNTdlODUKQXV0aG9yOiBCcnlhbiBXdSA8YnJ5YW4ud3VAYW5hbG9nLmNvbT4KRGF0ZToJV2VkIERlYyAxNiAyMjowNDowMSAyMDA5IC0wNTAwCgogICAgdXNiOiBtdXNiOiBjaGFuZ2Ugcnhjc3IgcmVnaXN0ZXIgZnJvbSB3cml0ZSB0byByZWFkL21vZGlmeS93cml0ZQoKICAgIFRoZSBSWCBDb250cm9sL1N0YXR1cyByZWdpc3RlciBoYXMgYml0cyB0aGF0IHdlIHdhbnQgdG8gcHJlc2VydmUsIHNvIGRvbid0CiAgICBqdXN0IHdyaXRlIG91dCBhIHNpbmdsZSBiaXQuICBQcmVzZXJ2ZSB0aGUgb3RoZXJzIGJpdHMgaW4gdGhlIHByb2Nlc3MuCgogICAgVGhlIG9yaWdpbmFsIGNvZGUgcG9zdGVkIHRvIHRoZSB1LWJvb3QgbGlzdCBoYWQgdGhpcyBiZWhhdmlvciwgYnV0IGxvb2tzCiAgICBsaWtlIGl0IHdhcyBsb3N0IHNvbWV3aGVyZSBhbG9uZyB0aGUgd2F5IHRvIG1lcmdpbmcuCgogICAgU2lnbmVkLW9mZi1ieTogQnJ5YW4gV3UgPGJyeWFuLnd1QGFuYWxvZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBDbGlmZiBDYWkgPGNsaWZmLmNhaUBhbmFsb2cuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgODg2OGZkNDQzYjdhNTJiZjQzMzkwM2NjOTUyNzQwM2FkMDU1YWNiOQpBdXRob3I6IEJyeWFuIFd1IDxicnlhbi53dUBhbmFsb2cuY29tPgpEYXRlOglXZWQgRGVjIDE2IDIyOjA0OjAwIDIwMDkgLTA1MDAKCiAgICB1c2I6IG11c2I6IG1ha2UgbXVsdGlwb2ludCBvcHRpb25hbAoKICAgIFRoZSBtdWx0aXBvaW50IGhhbmRsaW5nIHVuZGVyIE1VU0IgaXMgb3B0aW9uYWwsIGFuZCBzb21lIHBhcnRzIChsaWtlIHRoZQogICAgQmxhY2tmaW4gcHJvY2Vzc29yKSBkbyBub3QgaW1wbGVtZW50IHN1cHBvcnQgZm9yIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEJyeWFuIFd1IDxicnlhbi53dUBhbmFsb2cuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQ2xpZmYgQ2FpIDxjbGlmZi5jYWlAYW5hbG9nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IGRmNDAyYmEzODEwM2RmNTFmNjkyOTg0OGI2YTc5N2VmZjRkYjYxZjgKQXV0aG9yOiBCcnlhbiBXdSA8YnJ5YW4ud3VAYW5hbG9nLmNvbT4KRGF0ZToJV2VkIERlYyAxNiAyMjowMzo1OSAyMDA5IC0wNTAwCgogICAgdXNiOiBtdXNiOiBtYWtlIGZpZm8gc3VwcG9ydCBjb25maWd1cmFibGUKCiAgICBUaGUgZHluYW1pYyBGSUZPIGhhbmRsaW5nIHVuZGVyIE1VU0IgaXMgb3B0aW9uYWwsIGFuZCBzb21lIHBhcnRzIChsaWtlCiAgICB0aGUgQmxhY2tmaW4gcHJvY2Vzc29yKSBkbyBub3QgaW1wbGVtZW50IHN1cHBvcnQgZm9yIGl0LgoKICAgIER1ZSB0byB0aGlzLCB0aGUgRklGTyByZWFkaW5nL3dyaXRpbmcgc3RlcHMgbmVlZCBzcGVjaWFsIGhhbmRsaW5nLCBzbwogICAgbWFyayB0aGUgY29tbW9uIHZlcnNpb25zIHdlYWsgc28gZHJpdmVycyBjYW4gb3ZlcnJpZGUuCgogICAgU2lnbmVkLW9mZi1ieTogQnJ5YW4gV3UgPGJyeWFuLnd1QGFuYWxvZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBDbGlmZiBDYWkgPGNsaWZmLmNhaUBhbmFsb2cuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgZGMyY2QwNWM5MWExMzRkNTNmYWRhNDFlOGY5N2E0MzRiZTIyZGUwMgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIERlYyAxNiAyMjowMzo1OCAyMDA5IC0wNTAwCgogICAgdXNiOiBtdXNiOiBtYWtlIHN1cmUgdGhlIHJlZ2lzdGVyIGxheW91dCBpcyBwYWNrZWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCA3YjQyOTI4ODNiNmZkYzQyOTg0NjcxZmJlNGUwYTM1MmVjNzA0YmRlCkF1dGhvcjogQWpheSBLdW1hciBHdXB0YSA8YWpheS5ndXB0YUB0aS5jb20+CkRhdGU6CVR1ZSBEZWMgMjIgMTA6NTY6MTQgMjAwOSArMDUzMAoKICAgIERBODMwOiBBZGQgdXNiIGNvbmZpZwoKICAgIEFkZGluZyBVU0IgY29uZmlndXJhdGlvbi4gRGVmYXVsdCBpcyBzZXQgZm9yIFVTQiBNU0MgaG9zdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBamF5IEt1bWFyIEd1cHRhIDxhamF5Lmd1cHRhQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN3YW1pbmF0aGFuIFMgPHN3YW1pLml5ZXJAdGkuY29tPgoKY29tbWl0IDczNTkyNzNkOTQ2YTdkY2RlMDRjNWU4ZDViYWQ2NjkxNDZlZmM4N2MKQXV0aG9yOiBBamF5IEt1bWFyIEd1cHRhIDxhamF5Lmd1cHRhQHRpLmNvbT4KRGF0ZToJVHVlIERlYyAyMiAxMDo1NjoxMyAyMDA5ICswNTMwCgogICAgREE4eHg6IEFkZCBNVVNCIGhvc3Qgc3VwcG9ydAoKICAgIFRlc3RlZCBVU0IgaG9zdCBmdW5jdGlvbmFsaXR5IG9uIERBODMwIEVWTS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBamF5IEt1bWFyIEd1cHRhIDxhamF5Lmd1cHRhQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN3YW1pbmF0aGFuIFMgPHN3YW1pLml5ZXJAdGkuY29tPgoKY29tbWl0IDBiMjMyMzEwYjIwODdkNDI3OGZiMjI0ZmEwMWUyMjgxMzZmYjhiZGYKQXV0aG9yOiBBamF5IEt1bWFyIEd1cHRhIDxhamF5Lmd1cHRhQHRpLmNvbT4KRGF0ZToJVHVlIERlYyAyMiAxMDo1NjoxMiAyMDA5ICswNTMwCgogICAgREE4eHg6IEFkZCBHUElPIHJlZ2lzdGVyIGRlZmluaXRpb25zCgogICAgQWRkZWQgREE4eHggR1BJTyBiYXNlIGFkZHJlc3NlcyBpbiBncGlvX2RlZnMuaCBhbmQgcG9pbnRlcnMKICAgIHRvIGRpZmZlcmVudCBCQU5LcyB3aGljaCBjYW4gYmUgdXNlZCB0byBwcm9ncmFtIEdQSU9zLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFqYXkgS3VtYXIgR3VwdGEgPGFqYXkuZ3VwdGFAdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3dhbWluYXRoYW4gUyA8c3dhbWkuaXllckB0aS5jb20+Cgpjb21taXQgODJhODIxZjg5YmVlOTEzZDdiYTE3Y2I1MDBjNzc4Y2YwOGRjZTMyMQpBdXRob3I6IEFqYXkgS3VtYXIgR3VwdGEgPGFqYXkuZ3VwdGFAdGkuY29tPgpEYXRlOglUdWUgRGVjIDIyIDEwOjU2OjExIDIwMDkgKzA1MzAKCiAgICBEQTgzMDogQWRkIHBpbm11eCBmb3IgVVNCMF9EUlZWQlVTCgogICAgVVNCMF9EUlZWQlVTIHBpbm11eCBjb25maWd1cmF0aW9uIGlzIHJlcXVpcmVkIGZvciBVU0IgZnVuY3RpbmFsaXR5CiAgICBpbiB1Ym9vdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBamF5IEt1bWFyIEd1cHRhIDxhamF5Lmd1cHRhQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN3YW1pbmF0aGFuIFMgPHN3YW1pLml5ZXJAdGkuY29tPgoKY29tbWl0IGEzZjVkYTFiZWU5YThjMzQzYTQxMTA4MGQ3ZDQ2OGJkYzc4Nzk0YTQKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVGh1IEphbiA3IDA4OjU2OjAwIDIwMTAgKzAxMDAKCiAgICBtcGM4M3h4OiBhZGQgc3VwcG9ydCBjb25maWd1cmUgYnVzIHBhcmtpbmcKCiAgICBBZGQgc3VwcG9ydCB0byBjb25maWd1cmUgYnVzIHBhcmtpbmcgbW9kZSBhbmQgbWFzdGVyIGluIGJ1cyBhcmJpdHJhdGlvbgogICAgY29uZmlndXJhdGlvbiAoQUNSKS4gQWRkIHRoaXMgZm9yIHRoZSBrbWV0ZXIxIHBvcnQ6CgogICAgQ29uZmlndXJlIGJ1cyBhcmJpdGVyIHdpdGggcmVjb21tZW5kZWQgdmFsdWVzIGZyb20gRnJlZXNjYWxlCiAgICB0byBpbXByb3ZlIGJ1cyBsYXRlbmN5L3Rocm91Z2hwdXQgZm9yIGFwcGxpY2F0aW9uIHdpdGgKICAgIGludGVuc2l2ZSBRdWljY0VuZ2luZSBhY3Rpdml0eS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYTBkYWEyZTA2ZjA1ZDk3YzAzYzU5YjY1NmQ1MDM3MTMxOWJmMjllYwpBdXRob3I6IFJlaW5oYXJkIEFybHQgPHJlaW5oYXJkLmFybHRAZXNkLmV1PgpEYXRlOglUdWUgRGVjIDggMDk6MjE6NDEgMjAwOSArMDEwMAoKICAgIG1wYzgzeHg6IHZtZTgzNDk6IEZpeCBwb3dlciB1cCByZXNldCBzZXF1ZW5jZSBmb3IgdHNpMTQ4CgogICAgUmVtb3ZlIFBDSSByZXNldCwgaWYgdGhlcmUgaXMgYSBtb25hcmNoIFBNQyBtb2R1bGUuCgogICAgU2lnbmVkLW9mZi1ieTogUmVpbmhhcmQgQXJsdCA8cmVpbmhhcmQuYXJsdEBlc2QuZXU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CgogICAgY29udmVydCBjbHJiaXRzX2JlMzIgKyBzZXRiaXRzX2JlMzIgdG8gY2xyc2V0Yml0c19iZTMyLCB1c2Ugb3V0X2JlMzIgdG8gc2V0IGdjci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFkZWU5YmU2ODNjOWIwZjA2MDQ1MmFhZjFhOTdhMzRmYWU4N2YwN2EKQXV0aG9yOiBSZWluaGFyZCBBcmx0IDxyZWluaGFyZC5hcmx0QGVzZC5ldT4KRGF0ZToJVHVlIERlYyA4IDA5OjEzOjA4IDIwMDkgKzAxMDAKCiAgICBtcGM4M3h4OiBBZGQgc3VwcG9ydCBmb3IgTVBDODM0OSBlc2QgY2FkZHkyCgogICAgVGhlIGNhZGR5MiBpcyBhIHZhcmlhbnQgb2YgdGhlIGFscmVhZHkgc3VwcG9ydGVkIHZtZTgzNDkuIFNvIHdlIGp1c3QKICAgIGFkZCB0aGUgZGlmZmVyZW5jZXMgdG8gdGhpcyBib2FyZCBwb3J0LiBUbyBiZXR0ZXIgc3VwcG9ydCB0aG9zZSB0d28KICAgIGJvYXJkcyB3ZSBzd2l0Y2hlZCBmcm9tIGZpeGVkIFNEUkFNIGNvbmZpZ3VyYXRpb24gdG8gdXNhZ2Ugb2YKICAgIHNwZF9zZHJhbSgpLiBUaGlzIGlzIGRvbmUgYnkgcHJvdmlkaW5nIGEgYm9hcmQgc3BlY2lmaWMgU1BEIEVFUFJPTQogICAgcm91dGluZSB3aXRoIGRpZmZlcmVudCB2YWx1ZXMgZm9yIGJvdGggYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJlaW5oYXJkIEFybHQgPHJlaW5oYXJkLmFybHRAZXNkLmV1PgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKICAgIGNoYW5nZWQgdG8gdXNlIG1rY29uZmlnIC10IG9wdGlvbiBpbnN0ZWFkLCBwbHVzIG1pc2MgY29kaW5nc3R5bGUgZml4ZXMuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3NjkzNjQwYWNkNTIyMmY1YTY0ZTU5Y2NmNWUzYmM1MTFlODA1NGI5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgRGVjIDggMDk6MTA6MDQgMjAwOSArMDEwMAoKICAgIG1wYzgzeHg6IHNwZF9zZHJhbS5jOiBEaXNhYmxlIG1lbW9yeSBjb250cm9sbGVyIGJlZm9yZSBpbml0aWFsaXppbmcKCiAgICBUaGUgbWVtb3J5IGNvbnRyb2xsZXIgY291bGQgYWxyZWFkeSBiZSBlbmFibGVkLCB3aGVuIHNwZF9zZHJhbSgpIGlzCiAgICBjYWxsZWQuIFRoaXMgY291bGQgYmUgdGhlIGNhc2UgZm9yIGV4YW1wbGUsIHdoZW4gdGhlIFNEUkFNIGlzIGluaXRpYWxpemVkCiAgICBieSB0aGUgSlRBRyBkZWJ1Z2dlci4KCiAgICBUaGUgInN5bmMiIGFmdGVyIHRoZSByZWdpc3RlciBhY2Nlc3MgdmlhIHRoZSBhY2Nlc3NvciBmdW5jdGlvbiBpcwogICAgc3RpbGwgbmVlZGVkLCBiZWNhdXNlIHRoZSBtYWNybyB1c2VzIHRoZSBzeW5jIGJlZm9yZSB0aGUgcmVhbCB3cml0ZQogICAgaXMgZG9uZS4gU28gdW50aWwgbm90IGFsbCBhY2Nlc3NlcyBhcmUgY29udmVydGVkIHRvIHVzaW5nIGFjY2Vzc29yCiAgICBmdW5jdGlvbnMsIHRoaXMgc3luYyBzdGlsbCBuZWVkcyB0byBiZSBtYWRlICJtYW51YWxseSIgaGVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBDYzogUmVpbmhhcmQgQXJsdCA8cmVpbmhhcmQuYXJsdEBlc2QuZXU+CiAgICBBY2tlZC1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMmU5NTAwNGRlYjZlMzNlMzNiZjFiOGE5MmEzOGNkMjExNWJhYzRjMgpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglUdWUgTm92IDI0IDIwOjEyOjEyIDIwMDkgKzAzMDAKCiAgICBtcGM4M3h4OiBBZGQgTkFORCBib290IHN1cHBvcnQgZm9yIE1QQzgzMTVFLVJEQiBib2FyZHMKCiAgICBUaGUgY29yZSBzdXBwb3J0IGZvciBOQU5EIGJvb3RpbmcgaXMgdGhlcmUgYWxyZWFkeSwgc28gdGhpcyBwYXRjaAogICAgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4KCiAgICBUaGVyZSBpcyBvbmUgdHJpY2sgdGhvdWdoOiB0b3AgbGV2ZWwgTWFrZWZpbGUgZXhwZWN0cyBuYW5kX3NwbCB0bwogICAgYmUgaW4gbmFuZF9zcGwvYm9hcmQvJChCT0FSRERJUiksIGJ1dCB3ZSBjYW4gZnVsbHkgcmV1c2UgdGhlIGNvZGUKICAgIGZyb20gbXBjODMxM2VyZGIgYm9hcmRzLCBhbmQgc28gdG8gbm90IGR1cGxpY2F0ZSB0aGUgY29kZSB3ZSBqdXN0CiAgICBzeW1saW5rIG5hbmRfc3BsL2JvYXJkL2ZyZWVzY2FsZS9tcGM4MzE1ZXJkYiB0byBtcGM4MzEzZXJkYi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KCiAgICBvIHNpbGVuY2UgbWFrZSBkdXJpbmcgbG4gZWNobwogICAgbyB1cGRhdGUgZG9jdW1lbnRhdGlvbgogICAgbyBhbmQgYXZvaWQ6CgogICAgJCAuL01BS0VBTEwgTVBDODMxNUVSREJfTkFORAogICAgQ29uZmlndXJpbmcgZm9yIE1QQzgzMTVFUkRCIGJvYXJkLi4uCiAgICBzZHJhbS5vOiBJbiBmdW5jdGlvbiBgZml4ZWRfc2RyYW0nOgogICAgL2hvbWUvcjFhYWhhL2dpdC91LWJvb3QvbmFuZF9zcGwvYm9hcmQvZnJlZXNjYWxlL21wYzgzMTNlcmRiL3NkcmFtLmM6NzI6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHVkZWxheScKCiAgICBieSByZW5hbWluZyB1ZGVsYXkgLT4gX191ZGVsYXkgaW4gdGhlIHNwaXJpdCBvZiBjb21taXQKICAgIDNlYjkwYmFkNjUxZmFiMzljZmZiYTc1MGVjNDQyMWE5YzAxZDYwZTcgIkdlbmVyaWMgdWRlbGF5KCkgd2l0aCB3YXRjaGRvZwogICAgc3VwcG9ydCIuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiODIxY2VhZDdkMjE0NzcyNGQ1ZjFkOGNjYmNhNDA3MTBmYWFkMzhhCkF1dGhvcjogU2FuamVldiBQcmVtaSA8cHJlbWlAdGkuY29tPgpEYXRlOglGcmkgRGVjIDE4IDE0OjU1OjI0IDIwMDkgKzA1MzAKCiAgICBvbmVuYW5kOiBGaXggY29tcGlsZSBlcnJvcnMgZHVlIHRvIEZsZXhPbmVOQU5ECgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgY29tcGlsZSBlcnJvciB3aGlsZSB0cnlpbmcgdG8KICAgIGNvbXBpbGUgZm9yIG9tYXAzZXZtLgoKICAgIGVudl9vbmVuYW5kLmM6IEluIGZ1bmN0aW9uICdlbnZfcmVsb2NhdGVfc3BlYyc6CiAgICBlbnZfb25lbmFuZC5jOjcwOiBlcnJvcjogJ0NPTkZJR19FTlZfQUREUl9GTEVYJyB1bmRlY2xhcmVkCiAgICAgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKQogICAgZW52X29uZW5hbmQuYzo3MDogZXJyb3I6IChFYWNoIHVuZGVjbGFyZWQgaWRlbnRpZmllciBpcyByZQogICAgcG9ydGVkIG9ubHkgb25jZQogICAgZW52X29uZW5hbmQuYzo3MDogZXJyb3I6IGZvciBlYWNoIGZ1bmN0aW9uIGl0IGFwcGVhcnMgaW4uKQogICAgZW52X29uZW5hbmQuYzogSW4gZnVuY3Rpb24gJ3NhdmVlbnYnOgogICAgZW52X29uZW5hbmQuYzoxMDY6IGVycm9yOiAnQ09ORklHX0VOVl9BRERSX0ZMRVgnIHVuZGVjbGFyZQogICAgZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCiAgICBlbnZfb25lbmFuZC5jOjEwNzogZXJyb3I6ICdDT05GSUdfRU5WX1NJWkVfRkxFWCcgdW5kZWNsYXJlCiAgICBkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKCiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5qZWV2IFByZW1pIDxwcmVtaUB0aS5jb20+CiAgICBBY2tlZC1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgoKY29tbWl0IDIwZGE2ZjRkOTNkYjI3MGM1N2ViNjc5NjhlNDQxYTIwZmFmNjE5MzgKQXV0aG9yOiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlLmNvbT4KRGF0ZToJV2VkIERlYyAxNiAxMToxNTo1OCAyMDA5ICswMDAwCgogICAgRGF2aW5jaTogZGF2aW5jaV9uYW5kLmMgcGVyZm9ybWFuY2UgZW5oYW5jbWVudHMKCiAgICBJbnRyb2R1Y2VzIHZhcmlvdXMgb3B0aW1pc2F0aW9ucyB0aGF0IGFwcHJveGltYXRlbHkgdHJpcGxlIHRoZQogICAgcmVhZCBkYXRhIHJhdGUgZnJvbSBOQU5EIHdoZW4gcnVuIG9uIGRhODMwZXZtLgoKICAgIE1vc3Qgb2YgdGhlc2Ugb3B0aW1pc2F0aW9ucyBkZXBlbmQgb24gdGhlIGVuZGlhbmVzcyBvZiB0aGUgbWFjaGluZQogICAgYW5kIG1vc3Qgb2YgdGhlbSBhcmUgdmVyeSBzaW1pbGFyIHRvIG9wdGltaXNhdGlvbnMgYWxyZWFkeSBwcmVzZW50CiAgICBpbiB0aGUgTGludXggS2VybmVsLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pY2sgVGhvbXBzb24gPG5pY2sudGhvbXBzb25AZ2UuY29tPgoKY29tbWl0IDA2Zjk1OTU5YmM1NDIxZTUxNmE5YTI1MDEyZTMwM2RlYTg4MzMzODUKQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CkRhdGU6CVdlZCBKYW4gNiAwOTozNjoyNCAyMDEwIC0wNjAwCgogICAgQVJNIFVwZGF0ZSBtYWNoLXR5cGVzCgogICAgRmV0Y2hlZCBmcm9tIGh0dHA6Ly93d3cuYXJtLmxpbnV4Lm9yZy51ay9kZXZlbG9wZXIvbWFjaGluZXMvZG93bmxvYWQucGhwCiAgICBBbmQgYnVpbHQgd2l0aAoKICAgIHJlcG8gaHR0cDovL2Z0cC5hcm0ubGludXgub3JnLnVrL3B1Yi9saW51eC9hcm0va2VybmVsL2dpdC1jdXIvbGludXgtMi42LWFybQogICAgY29tbWl0IGM5ZjkzN2U0YTNmNGViZjk5MjRlYzIxZDgwNjMyZTVlYjYxZDk0OWMKCiAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Cgpjb21taXQgOGIwYWIzMDQ5NDNiMDdkMTNhMjlkYjZkM2QyY2EzZWRhZDMyY2RjYgpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIE5vdiAxNyAyMToxMDoyMSAyMDA5IC0wNjAwCgogICAgcHBjL3A0MDgwOiBBZGQgQ29yZW5ldCBQbGF0Zm9ybSBDYWNoZSAoQ1BDKSByZWdpc3RlcnMKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDNlNzMxYWFiYTMwYzcwMTFlZGY2MzkxMDcyZWVlODQ1ZWQxYjgxNmYKQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgRGVjIDE2IDEwOjI0OjM5IDIwMDkgLTA2MDAKCiAgICBmc2wtZGRyOiBzZXR1cCBPRFRfUkRfQ0ZHICYgT0RUX1dSX0NGRyB3aGVuIHdlIGludGVybGVhdmUKCiAgICBJbiBjaGlwLXNlbGVjdCBpbnRlcmxlYXZpbmcgY2FzZSwgd2UgYWxzbyBuZWVkIHNldCB0aGUgT0RUX1JEX0NGRwogICAgYW5kIE9EVF9XUl9DRkcgaW4gY3MxX2NvbmZpZyByZWdpc3Rlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAxYWEzZDA4YTAyNDQ1MDZiOTQwMzE1MjJlNTRmZTA2ZWU3YTVhZTBlCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIERlYyAxNiAxMDoyNDozOCAyMDA5IC0wNjAwCgogICAgZnNsLWRkcjogYWRkIG92ZXJyaWRlIGZvciB0aGUgUnR0X1dyCgogICAgRGlmZmVyZW50IGJvYXJkcyBtYXkgcmVxdWlyZSBkaWZmZXJlbnQgc2V0dGluZ3Mgb2YgRHluYW1pYyBPRFQgKFJ0dF9XcikuCiAgICBXZSBwcm92aWRlIGEgbWVhbnMgdG8gYWxsb3cgdGhlIGJvYXJkIHNwZWNpZmljIGNvZGUgdG8gcHJvdmlkZSBpdHMgb3duCiAgICB2YWx1ZSBvZiBSdHRfV3IuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYmRjOWY3YjVlYWI4ZDVlZGQ4YThjYzVkODBlZjA4MDgzNmIwMGU4NQpBdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBEZWMgMTYgMTA6MjQ6MzcgMjAwOSAtMDYwMAoKICAgIGZzbC1kZHI6IGFkZCB0aGUgb3ZlcnJpZGUgZm9yIHdyaXRlIGxldmVsaW5nCgogICAgYWRkIHRoZSBvdmVycmlkZSBmb3Igd3JpdGUgbGV2ZWxpbmcgc2FtcGxpbmcgYW5kCiAgICBzdGFydCB0aW1lIGFjY29yZGluZyB0byBzcGVjaWZpYyBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAwYTcxYzkyYzdlMWU1NjUxMTFjYjM0Y2QzODlhMjFlYzUwMGNhNWMxCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIERlYyAxNiAxMDoyNDozNiAyMDA5IC0wNjAwCgogICAgZnNsLWRkcjogRml4IHBvd2VyLWRvd24gdGltaW5nIHNldHRpbmdzCgogICAgMS4gVElNSU5HX0NGR18wW0FDVF9QRF9FWElUXSB3YXMgc2V0IHRvIDYgY2xvY2tzLCBidXQKICAgICAgIEl0IHNob3VsZCBiZSBzZXQgdG8gdFhQIHBhcmFtZXRlciwgdFhQPW1heCgzQ0ssIDcuNW5zKQogICAgMi4gVElNSU5HX0NGR18wW1BSRV9QRF9FWElUXSB3YXMgc2V0IHRvIDYgY2xvY2tzLCBidXQKICAgICAgIEl0IHNob3VsZCBiZSBzZXQgdG8gdFhQIChpZiBNUjBbQTEyXT0xKSBlbHNlIHRvIHRYUERMTCBwYXJhbWV0ZXIKICAgICAgIFdlIGFyZSBzZXR0aW5nIHRoZSBtb2RlIHJlZ2lzdGVyIE1SMFtBMTJdPScxJwoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGM0Y2ExMGYxZGIzNmMzY2U2NDljNjU2ZGVjMTRmN2FhYjY0NGRkODYKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJV2VkIERlYyAxNiAwMToxNDozMSAyMDA5ICswMzAwCgogICAgbXBjODV4eDogQWRkIDQtYml0cyBlU0RIQyBzdXBwb3J0IGZvciBNUEM4NTY5RS1NRFMgYm9hcmRzCgogICAgVGhhbmtzIHRvICJFcnJhdGEgdG8gTVBDODU2OUUgUG93ZXJRVUlDQyBJSUkgSW50ZWdyYXRlZCBIb3N0IFByb2Nlc3NvcgogICAgRmFtaWx5IFJlZmVyZW5jZSBNYW51YWwsIFJldi4gMCIgZG9jdW1lbnQsIHdoaWNoIGRlc2NyaWJlcyBhbGwgZVNESEMKICAgIHBpbnMsIHdlIGNhbiBhZGQgNC1iaXRzIGVTREhDIHN1cHBvcnQgZm9yIE1QQzg1NjlFLU1EUyBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGJjMjBmOWE5NTI3YWZlOGFlNDA2YTc0Zjc0NzY1ZDQzMjNmMDQ5MjIKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgRGVjIDkgMTc6Mjg6MTcgMjAwOSAtMDYwMAoKICAgIHBwYy9wNDA4MDogRml4IHJlcG9ydGluZyBvZiBQTUUgJiBGTSBjbG9jayBmcmVxdWVuY2llcwoKICAgIFdlIGluY29ycmVjdGx5IGhhZCB0aGUgc2Vuc2Ugb2YgUE1FX0NMS19TRUwsIEZNMV9DTEtfU0VMLCBGTTJfQ0xLX1NFTAogICAgYmFja3dhcmRzIHNvIHdlIHJlcG9ydCB0aGUgd3JvbmcgZnJlcXVlbmN5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZGUzY2JkNzhjOWE0ODUzODliMjMzZjhjYTcwNWE5ZTVmNTFhZmFmMwpBdXRob3I6IExpIFlhbmcgPGxlb2xpQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBEZWMgOSAxNDoyNjowOCAyMDA5ICswODAwCgogICAgZnNsX2xhdzogYWRkIFNSSU8yIHRhcmdldCBpZCBhbmQgbGF3X3NpemVfYml0cygpIG1hY3JvCgogICAgU2lnbmVkLW9mZi1ieTogTGkgWWFuZyA8bGVvbGlAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYWJjNzZlYjZhNjkzNmE5OTgxMWVkYTI1NjIyMmIzOTI3NDI3ZjhlMgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBOb3YgMTcgMjA6MjE6MjAgMjAwOSAtMDYwMAoKICAgIHBwYy84NXh4OiBNYXAgYm9vdCBwYWdlIGd1YXJkZWQgZm9yIE1QIGJvb3QKCiAgICBXZSBhbHJlYWR5IG1hcCB0aGUgcGFnZSBjYWNoZS1pbmhpYml0ZWQuICBUaGVyZSBpcyBubyByZWFzb24gd2UKICAgIHNob3VsZG4ndCBhbHNvIGJlIG1hcmtpbmcgaXQgZ3VhcmRlZCB0byBwcmV2ZW50IHNwZWN1bGF0aXZlIGFjY2Vzc2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZWZmZTQ5NzNmMmYzNDllNmU4N2Q0NTVhZTcxOGFhYmFmOTE5YTc1ZApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBOb3YgMTcgMjI6NDQ6NTIgMjAwOSAtMDYwMAoKICAgIHBwYzogQWRkZWQgbWFjcm8gdG8gdGVzdCBmb3Igc3BlY2lmaWMgU1ZSIHJldmlzaW9uCgogICAgVmFyaW91cyBTb0MgZXJyYXRhIGFyZSBzcGVjaWZpYyB0byBhIGdpdmVuIHJldmlzaW9uIG9mIHNpbGljb24uIFRoaXMKICAgIHBhdGNoIGdpdmVzIHVzIGEgc2ltcGxlIG1hY3JvIHRvIHVzZSB3aGVuIGRvaW5nIHN1Y2ggdGVzdHMuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmNWVjYzZlMDI3MTUwMjg5YzJhNDZkYjdjZWMxOTdiMmI2ZGE4OTNjCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE5vdiAxNyAyMDowMToyNCAyMDA5IC0wNjAwCgogICAgcDQwODA6IGFkZCByZWFkYmFjayB0byBib290cGFnZSB0cmFuc2xhdGlvbiB3aW5kb3cKCiAgICBXZSBuZWVkIHRvIGFkZCB0aGUgcmVhZGJhY2sgdG8gYm9vdHBhZ2UgdHJhbnNsYXRpb24gTEFXCiAgICB0byBtYWtlIGl0IGVmZmVjdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA1ZmI2ZWEzYWQzNTYyZjc4ZGY4NjkzZWQ4YzRjYTg5NjU0MjM2YzRmCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIE5vdiAxMyAwOToyNTowNyAyMDA5IC0wNjAwCgogICAgcHBjLzg1eHg6IE1ha2UgZmxhc2ggVExCIGVudHJ5IGRldGVybWluZWQgYXQgcnVudGltZSBvbiBGU0wgYm9hcmRzCgogICAgUmF0aGVyIHRoYW4gaGFyZCBjb2Rpbmcgd2hpY2ggVExCIGVudHJ5IHRoZSBGTEFTSCBpcyBtYXBwZWQgd2l0aCB3ZSBjYW4KICAgIHVzZSBmaW5kX3RsYl9pZHggdG8gZGV0ZXJtaW5lIHRoZSBlbnRyeS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDc4Mzg1MmU0NjdmMzJhM2E1NTY4YjU0MjM3OWU5ZmVjM2QyNmExNzMKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglGcmkgTm92IDEzIDA5OjA5OjEwIDIwMDkgLTA2MDAKCiAgICBwcGMvODV4eDogUmVtb3ZlIENPTkZJR19TWVNfRERSX1RMQl9TVEFSVAoKICAgIE5vdyB0aGF0IHdlIGR5bmFtaWNhbGx5IGRldGVybWluZSBUTEIgQ0FNIGVudHJpZXMgdG8gdXNlIHdlIGRvbnQgbmVlZAogICAgQ09ORklHX1NZU19ERFJfVExCX1NUQVJUIGFueW1vcmUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAzNTVmNGY4NWU5MGNlMmU2ZDkxODgzMDEyYzI5OTNiZTc5NzBjOGIxCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIE5vdiAxMyAwOTowNDoxOSAyMDA5IC0wNjAwCgogICAgcHBjLzg1eHg6IE1ha2UgU1BEIEREUiBUTEIgc2V0dXAgY29kZSB1c2UgZHluYW1pYyBlbnRyeSBhbGxvY2F0aW9uCgogICAgTm93IHRoYXQgd2UgdHJhY2sgd2hpY2ggVExCIENBTSBlbnRyaWVzIGFyZSB1c2VkIHdlIGNhbiBhbGxvY2F0ZQogICAgZW50cmllcyBvbiB0aGUgZmx5LiAgQ2hhbmdlIHRoZSBTUEQgRERSIFRMQiBzZXR1cCBjb2RlIHRvIGFzc3VtZQogICAgd2UgdXNlIGF0IG1vc3QgOCBUTEJzIChvciB0aGUgbnVtYmVyIGZyZWUsIHdoaWNoIGV2ZXIgaXMgZmV3ZXIpLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgOTRlOTQxMWI5ZGRhMTgyZGQ2M2Q1M2JhNmVhNjQwYzk4YjM1ZGI1ZgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBOb3YgMTIgMTA6MjY6MTYgMjAwOSAtMDYwMAoKICAgIHBwYy84NXh4OiBBZGQgdHJhY2tpbmcgb2YgVExCIENBTSB1c2FnZQoKICAgIFdlIG5lZWQgdG8gdHJhY2sgd2hpY2ggVExCIENBTSBlbnRyaWVzIGFyZSB1c2VkIHRvIGFsbG93IHVzIHRvCiAgICAiZHluYW1pY2FsbHkiIGFsbG9jYXRlIGVudHJpZXMgbGF0ZXIgaW4gdGhlIGNvZGUuICBGb3IgZXhhbXBsZSB0aGUgU1BECiAgICBERFIgY29kZSB0b2RheSBoYXJkIGNvZGVzIHdoaWNoIFRMQiBlbnRyaWVzIGl0IHVzZXMuICBXZSBjYW4gbm93IG1ha2UKICAgIHRoYXQgcGljayBlbnRyaWVzIHRoYXQgYXJlIGZyZWUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBlZTUzNjUwZGFkMmZlZGUwNTdlOTNmZGY2ZjhjZDcyYjI5ZWY3Y2QwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIE5vdiA0IDEzOjAwOjU1IDIwMDkgLTA2MDAKCiAgICBwcGMvOHh4eDogUmVtb3ZlIGlzX2ZzbF9wY2lfYWdlbnQKCiAgICBBbGwgdXNlcnMgb2YgaXNfZnNsX3BjaV9hZ2VudCBoYXZlIGJlZW4gY29udmVydGVkIHRvIGZzbF9pc19wY2lfYWdlbnQKICAgIHRoYXQgdXNlcyB0aGUgc3RhbmRhcmQgUENJIHByb2dyYW1taW5nIG1vZGVsIHRvIGRldGVybWluZSBob3N0IHZzCiAgICBhZ2VudC9lbmQtcG9pbnQuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA3Y2I4Zjc5YjQ0YzcwYTNjNjY4OTFmNDA3MjU0ZDljNzM5ZTJlN2RhCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIE5vdiA0IDExOjM5OjU1IDIwMDkgLTA2MDAKCiAgICBwcGMvODV4eDogTW92ZSB0byB1c2luZyBmc2xfc2V0dXBfaG9zZSBvbiBUUU0gODV4eAoKICAgIFdlIGNhbiB1c2UgZnNsX3NldHVwX2hvc2UgdG8gZGV0ZXJtaW5lIGlmIHdlIGFyZSBhIGFnZW50L2VuZC1wb2ludCBvcgogICAgYSBob3N0LiAgUmF0aGVyIHRoYW4gdXNpbmcgc29tZSBTb0Mgc3BlY2lmaWMgcmVnaXN0ZXIgd2UgY2FuIGp1c3QgbG9vawogICAgYXQgdGhlIFBDSSBjZmcgc3BhY2Ugb2YgdGhlIGhvc3QgY29udHJvbGxlciB0byBkZXRlcm1pbmUgdGhpcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDkyNjNlODI5ZjAyNTY2MWNiZDNhODA2NzUyODViNDJjMTQzNTBlYTQKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgTm92IDQgMTM6MDE6NTEgMjAwOSAtMDYwMAoKICAgIHBwYy84NXh4OiBNb3ZlIHRvIHVzaW5nIGZzbF9zZXR1cF9ob3NlIG9uIFAyMDIwIERTCgogICAgV2UgY2FuIHVzZSBmc2xfc2V0dXBfaG9zZSB0byBkZXRlcm1pbmUgaWYgd2UgYXJlIGEgYWdlbnQvZW5kLXBvaW50IG9yCiAgICBhIGhvc3QuICBSYXRoZXIgdGhhbiB1c2luZyBzb21lIFNvQyBzcGVjaWZpYyByZWdpc3RlciB3ZSBjYW4ganVzdCBsb29rCiAgICBhdCB0aGUgUENJIGNmZyBzcGFjZSBvZiB0aGUgaG9zdCBjb250cm9sbGVyIHRvIGRldGVybWluZSB0aGlzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMWUyMWJhOGY2ZDA3MDhmZTdmNDQwNjYwNTk5MjdjZmE2YmZlZGY3YQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBOb3YgNCAxMzowMTozOCAyMDA5IC0wNjAwCgogICAgcHBjLzg1eHg6IE1vdmUgdG8gdXNpbmcgZnNsX3NldHVwX2hvc2Ugb24gUDEvUDIgUkRCCgogICAgV2UgY2FuIHVzZSBmc2xfc2V0dXBfaG9zZSB0byBkZXRlcm1pbmUgaWYgd2UgYXJlIGEgYWdlbnQvZW5kLXBvaW50IG9yCiAgICBhIGhvc3QuICBSYXRoZXIgdGhhbiB1c2luZyBzb21lIFNvQyBzcGVjaWZpYyByZWdpc3RlciB3ZSBjYW4ganVzdCBsb29rCiAgICBhdCB0aGUgUENJIGNmZyBzcGFjZSBvZiB0aGUgaG9zdCBjb250cm9sbGVyIHRvIGRldGVybWluZSB0aGlzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNDJjMDFiOWQxZjAxMzJhNmQ4MmUyYzgzMzNiMjM2YjFlM2IwODMxZgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBOb3YgNCAxMzowMToxNyAyMDA5IC0wNjAwCgogICAgcHBjLzg1eHg6IE1vdmUgdG8gdXNpbmcgZnNsX3NldHVwX2hvc2Ugb24gTVBDODU3MiBEUwoKICAgIFdlIGNhbiB1c2UgZnNsX3NldHVwX2hvc2UgdG8gZGV0ZXJtaW5lIGlmIHdlIGFyZSBhIGFnZW50L2VuZC1wb2ludCBvcgogICAgYSBob3N0LiAgUmF0aGVyIHRoYW4gdXNpbmcgc29tZSBTb0Mgc3BlY2lmaWMgcmVnaXN0ZXIgd2UgY2FuIGp1c3QgbG9vawogICAgYXQgdGhlIFBDSSBjZmcgc3BhY2Ugb2YgdGhlIGhvc3QgY29udHJvbGxlciB0byBkZXRlcm1pbmUgdGhpcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDVlM2Q3MDUwY2YxMjdkZmNkNmFiMjYwYzU1MWU5MTgzMjk5ZDBkY2EKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgTm92IDQgMTI6NTE6MTAgMjAwOSAtMDYwMAoKICAgIHBwYy84Nnh4OiBDbGVhbiB1cCBNUEM4NjEwIEhQQ0QgUENJIHNldHVwIGNvZGUKCiAgICBVc2UgbmV3IGZzbF9wY2lfaW5pdF9wb3J0KCkgdGhhdCByZWR1Y2VzIGFtb3VudCBvZiBkdXBsaWNhdGVkIGNvZGUgaW4gdGhlCiAgICBib2FyZCBwb3J0cywgdXNlIElPIGFjY2Vzc29ycyBhbmQgY2xlYW4gdXAgcHJpbnRpbmcgb2Ygc3RhdHVzIGluZm8uCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA3YjYyNjg4MGI0ZTFmZDhkMjI5N2M5MzQxYjkyYzIyNTNmYzI3ZmQwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIE5vdiA0IDExOjE1OjI5IDIwMDkgLTA2MDAKCiAgICBwcGMvODV4eDogQ2xlYW4gdXAgTVBDODU0OCBDRFMgUENJIHNldHVwIGNvZGUKCiAgICBVc2UgbmV3IGZzbF9wY2lfaW5pdF9wb3J0KCkgdGhhdCByZWR1Y2VzIGFtb3VudCBvZiBkdXBsaWNhdGVkIGNvZGUgaW4gdGhlCiAgICBib2FyZCBwb3J0cywgdXNlIElPIGFjY2Vzc29ycyBhbmQgY2xlYW4gdXAgcHJpbnRpbmcgb2Ygc3RhdHVzIGluZm8uCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmZWFkZDVkNTNiYTUwNDdjM2JjOTEyZmY1YjdjN2E2OTBjOGM1M2NmCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIE5vdiA0IDExOjA1OjAyIDIwMDkgLTA2MDAKCiAgICBwcGMvODV4eDogQ2xlYW4gdXAgQVRVTTg1NDggUENJIHNldHVwIGNvZGUKCiAgICBVc2UgbmV3IGZzbF9wY2lfaW5pdF9wb3J0KCkgdGhhdCByZWR1Y2VzIGFtb3VudCBvZiBkdXBsaWNhdGVkIGNvZGUgaW4gdGhlCiAgICBib2FyZCBwb3J0cywgdXNlIElPIGFjY2Vzc29ycyBhbmQgY2xlYW4gdXAgcHJpbnRpbmcgb2Ygc3RhdHVzIGluZm8uCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA0NjgxNDU3ZTJhYWNlOGRmZjA5ZGM0YzZjMDIxODUyMzFiOTcwZDZiCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIE5vdiA0IDEwOjMxOjUzIDIwMDkgLTA2MDAKCiAgICBwcGMvODV4eDogQ2xlYW4gdXAgTVBDODU2OCBNRFMgUENJIHNldHVwIGNvZGUKCiAgICBVc2UgbmV3IGZzbF9wY2lfaW5pdF9wb3J0KCkgdGhhdCByZWR1Y2VzIGFtb3VudCBvZiBkdXBsaWNhdGVkIGNvZGUgaW4gdGhlCiAgICBib2FyZCBwb3J0cywgdXNlIElPIGFjY2Vzc29ycyBhbmQgY2xlYW4gdXAgcHJpbnRpbmcgb2Ygc3RhdHVzIGluZm8uCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBjODQ3ZTk4YjE0M2MxNTRjYzQ2NmY5ZDAzZTkwYTM0OTUzMjkxNzJiCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIE5vdiA0IDEwOjI2OjMwIDIwMDkgLTA2MDAKCiAgICBwcGMvODV4eDogQ2xlYW4gdXAgTVBDODU2OSBNRFMgUENJIHNldHVwIGNvZGUKCiAgICBVc2UgbmV3IGZzbF9wY2lfaW5pdF9wb3J0KCkgdGhhdCByZWR1Y2VzIGFtb3VudCBvZiBkdXBsaWNhdGVkIGNvZGUgaW4gdGhlCiAgICBib2FyZCBwb3J0cywgdXNlIElPIGFjY2Vzc29ycyBhbmQgY2xlYW4gdXAgcHJpbnRpbmcgb2Ygc3RhdHVzIGluZm8uCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA2NDVkNWE3ODM4MDU4Y2U2MDM4MDM5MzVjZDQwYTYyYTI2YWVhMDRkCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIE5vdiA0IDEwOjIyOjI2IDIwMDkgLTA2MDAKCiAgICBwcGMvODV4eDogQ2xlYW4gdXAgTVBDODU0NCBEUyBQQ0kgc2V0dXAgY29kZQoKICAgIFVzZSBuZXcgZnNsX3BjaV9pbml0X3BvcnQoKSB0aGF0IHJlZHVjZXMgYW1vdW50IG9mIGR1cGxpY2F0ZWQgY29kZSBpbiB0aGUKICAgIGJvYXJkIHBvcnRzLCB1c2UgSU8gYWNjZXNzb3JzIGFuZCBjbGVhbiB1cCBwcmludGluZyBvZiBzdGF0dXMgaW5mby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDhhNDE0YzQyNThhZWVhYjkzZmI4M2ZhZDA1NDQ4OTQ1OTdjOGJkMzUKQXV0aG9yOiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBPY3QgMjggMTA6NDk6MzEgMjAwOSArMDgwMAoKICAgIHBwYy84NXh4OiBDbGVhbiB1cCBNUEM4NTM2IERTIFBDSSBzZXR1cCBjb2RlCgogICAgVXNlIG5ldyBmc2xfcGNpX2luaXRfcG9ydCgpIHRoYXQgcmVkdWNlcyBhbW91bnQgb2YgZHVwbGljYXRlZCBjb2RlIGluIHRoZQogICAgYm9hcmQgcG9ydHMsIHVzZSBJTyBhY2Nlc3NvcnMgYW5kIGNsZWFuIHVwIHByaW50aW5nIG9mIHN0YXR1cyBpbmZvLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pbmdrYWkgSHUgPE1pbmdrYWkuaHVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgM2FkODljNGVjYmE1MTU2NGM5NzA3NWYwMzFhZWY0ZmE1ZWFmYmIxNgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVNhdCBPY3QgMzEgMTE6MjM6NDEgMjAwOSAtMDUwMAoKICAgIE5FVDogQmFzZSBzdXBwb3J0IGZvciBldHNlYzIuMAoKICAgIDEuIE1vZGlmaWVkIHRoZSB0c2VjX21kaW8gc3RydWN0dXJlIHRvIGluY2x1ZGUgdGhlIG5ldyByZWdzCiAgICAyLiBNb2RpZmllZCB0aGUgTURJT19CQVNFX0FERFIgc28gdGhhdCBpdCB3aWxsIGhhbmRsZSBib3RoCiAgICBvbGRlciB2ZXJzaW9uIGFuZCBuZXcgdmVyc2lvbiBvZiBldHNlYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIEdvcGFscGV0IDxzYW5kZWVwLmt1bWFyQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYjllMTg2ZmMzMTY4M2E0ZjFiNjg4MGMwODY5NTBiMjI3MGU2MmUyNApBdXRob3I6IFNhbmRlZXAgR29wYWxwZXQgPHNhbmRlZXAua3VtYXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU2F0IE9jdCAzMSAwMDozNTowNCAyMDA5ICswNTMwCgogICAgTkVUOiBNb3ZlIE1ESU8gcmVncyBvdXQgb2YgVFNFQyBTcGFjZQoKICAgIE1vdmVkIHRoZSBtZGlvIHJlZ3Mgb3V0IG9mIHRoZSB0c2VjIHN0cnVjdHVyZSxhbmQKICAgIHByb3ZpZGVkIGRpZmZlcmVudCBvZmZzZXRzIGZvciB0c2VjIGJhc2UgYW5kIG1kaW8KICAgIGJhc2Ugc28gdGhhdCBwcm92aXNpb24gZm9yIGV0c2VjMi4wIGNhbiBiZSBwcm92aWRlZC4KCiAgICBUaGlzIHBhdGNoIGhlbHBzIGluIHByb3ZpZGluZyB0aGUgc3VwcG9ydCBmb3IgZXRzZWMyLjAKICAgIEluIGV0c2VjMi4wLCB0aGUgTURJTyByZWdpc3RlciBzcGFjZSBhbmQgdGhlIGV0c2VjIHJlZwogICAgc3BhY2UgYXJlIGRpZmZlcmVudC4KCiAgICBBbHNvLCBtb3ZlZCB0aGUgVFNFQ19CQVNFX0FERFIgYW5kIE1ESU9fQkFTRV9BRERSIGRlZmluaXRvbnMgaW50bwogICAgcGxhdGZvcm0gc3BlY2lmaWMgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBHb3BhbHBldCA8c2FuZGVlcC5rdW1hckBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGJjYWQyMWZkYTE4N2Y3ZDhkNWQyYzAyNmMzOTVjY2EzNWE5YzcwMGUKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgTWFyIDE5IDAyOjQ2OjI4IDIwMDkgLTA1MDAKCiAgICA4NXh4OiBBZGQgc3VwcG9ydCB0byBzZXQgRFBBQSAoZGF0YSBwYXRoKSBkZXZpY2VzIGNsb2NrIGZyZXF1ZW5jaWVzCgogICAgU2V0IGNsb2NrLWZyZXF1ZW5jeSBmb3IgRnJhbWUgTWFuYWdlciAwLzEgYW5kIFBhdHRlciBNYXRjaCBFbmdpbmUgb24gcDQwODAuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAxNzhlMzllMTk5ZTljOTg1ZTVlNWU5NjhkNjBkNzI0M2ZjZWI1NjE2CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IFNlcCAxNyAwMDowMToxNCAyMDA5IC0wNTAwCgogICAgcHBjLzh4eHg6IERvbid0IHVzZSBwY2lfY2ZnIG9uIEZTTF9DT1JFTkVUIHBsYXRmb3JtcwoKICAgIFRoZSBGU0xfQ09SRU5FVCBwbGF0Zm9ybXMgdXNlIGEgY29tcGxldGVseSBkaWZmZXJlbnQgbWVhbnMgdG8gZGV0ZXJtaW5lCiAgICB3aGljaCBQQ0llIHBvcnQgaXMgZW5hYmxlZCBhcyB3ZWxsIGFzIGlmIGl0cyBhIGhvc3Qgb3IgYWdlbnQvZW5kLXBvaW50LgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMTE1ODhiNWRjNGM1ODFiMmE2OGEyNGUzMjk4YWIxNGU4M2M1OWQzMQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBPY3QgMTUgMjM6MjI6MTAgMjAwOSAtMDUwMAoKICAgIHBwYy9wNDA4MDogQWRkZWQgcDQwODAgU0VSREVTIHJlZ2lzdGVycyAmIFVTQiBvZmZzZXQKCiAgICBBZGRlZCBpbW1hcCBkZWZpbml0aW9uIGZvciBTRVJERVMgcmVnaXN0ZXJzIG9uIHA0MDgwLCB0aGUgVVNCIG9mZnNldAogICAgKHNpbmNlIGl0IHdhcyBtaXNzaW5nKSBhbmQgYSBHUEwgaGVhZGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IExpIFlhbmcgPGxlb2xpQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDgyZmQxZjhkYTlhZGQyZDc0NTMyY2Y3OGQyMjQ0ODVmMDA0MmQwMGQKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgTWFyIDE5IDAyOjUzOjAxIDIwMDkgLTA1MDAKCiAgICA4NXh4OiBBZGQgc3VwcG9ydCBmb3IgZTUwMG1jIGNhY2hlIHN0YXNoaW5nCgogICAgVGhlIGU1MDBtYyBjb3JlIHN1cHBvcnRzIHRoZSBhYmlsaXR5IHRvIHN0YXNoIGludG8gdGhlIEwxIG9yIEwyIGNhY2hlLAogICAgaG93ZXZlciB3ZSBuZWVkIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoZSBjYWNoZXMgd2l0aCBhbiBpZC4KCiAgICBXZSB1c2UgdGhlIGZvbGxvd2luZyBlcXVhdGlvbiB0byBzZXQgdGhlIHZhcmlvdXMgc3Rhc2gtaWRzOgoKICAgIDMyICsgY29yZUlEKjIgKyAwKEwxKSBvciAxKEwyKQoKICAgIFRoZSAwIChmb3IgTDEpIG9yIDEgKGZvciBMMikgbWF0Y2hlcyB0aGUgQ1QgZmllbGQgdXNlZCBiZSB2YXJpb3VzIGNhY2hlCiAgICBjb250cm9sIGluc3RydWN0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDI2YmUyYzUzZDY3MWVjZmQzZTA0ODNmMDg3MDY0OWFjMjgzMjIyOTMKQXV0aG9yOiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlLmNvbT4KRGF0ZToJU2F0IERlYyAxMiAxMjoxMzoxMCAyMDA5IC0wNTAwCgogICAgRGF2aW5jaTogTkFORCBlbmFibGUgRUNDIGV2ZW4gd2hlbiBub3QgaW4gTkFORCBib290IG1vZGUKCiAgICBEYXZpbmNpOiBOQU5EIGVuYWJsZSBFQ0MgZXZlbiB3aGVuIG5vdCBpbiBOQU5EIGJvb3QgbW9kZQoKICAgIE9uIERhdmluY2kgcGxhdGZvcm1zLCB0aGUgZGVmYXVsdCBOQU5EIGRldmljZSBpcyBlbmFibGVkIChmb3IgRUNDKQogICAgaW4gbG93IGxldmVsIGJvb3QgY29kZSB3aGVuIE5BTkQgYm9vdCBtb2RlIGlzIHVzZWQuIElmIGJvb3RpbmcgaW4KICAgIGFub3RoZXIgbW9kZSwgTkFORCBFQ0MgaXMgbm90IGVuYWJsZWQuIFRoZSBkcml2ZXIgc2hvdWxkIG1ha2UKICAgIHN1cmUgRUNDIGlzIGVuYWJsZWQgcmVnYXJkbGVzcyBvZiBib290IG1vZGUgaWYgTkFORCBpcyBjb25maWd1cmVkCiAgICBpbiBVLUJvb3QuCgogICAgU2lnbmVkLW9mZi1ieTogTmljayBUaG9tcHNvbiA8bmljay50aG9tcHNvbkBnZS5jb20+Cgpjb21taXQgOTdmNGViOGNmYjk3YzdjNWIxNThlM2MwZGY0NjExZWZiZjUwZjQwMwpBdXRob3I6IE5pY2sgVGhvbXBzb24gPG5pY2sudGhvbXBzb25AZ2VmYW51Yy5jb20+CkRhdGU6CVNhdCBEZWMgMTIgMTI6MTI6MjYgMjAwOSAtMDUwMAoKICAgIERhdmluY2k6IENvbmZpZ3VyYWJsZSBOQU5EIGNoaXAgc2VsZWN0cwoKICAgIERhdmluY2k6IENvbmZpZ3VyYWJsZSBOQU5EIGNoaXAgc2VsZWN0cwoKICAgIEFkZCBhIENPTkZJR19TWVNfTkFORF9DUyBzZXR0aW5nIHRvIGFsbCBkYXZpbmNpIGNvbmZpZ3MgYW5kCiAgICB1c2UgaXQgdG8gc2V0dXAgdGhlIE5BTkQgY29udHJvbGxlciBpbiB0aGUgZGF2aW5jaV9uYW5kCiAgICBtdGQgZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pY2sgVGhvbXBzb24gPG5pY2sudGhvbXBzb25AZ2VmYW51Yy5jb20+Cgpjb21taXQgOTAxMTBlMGVhYjVhYzZhYjcxNDEwOWNlMWZkODg3M2M4NThkZDU1MgpBdXRob3I6IE5pY2sgVGhvbXBzb24gPG5pY2sudGhvbXBzb25AZ2VmYW51Yy5jb20+CkRhdGU6CVNhdCBEZWMgMTIgMTI6MTA6NTEgMjAwOSAtMDUwMAoKICAgIERhdmluY2k6IFRhYmxlIGRyaXZlbiBwaW5tdXggY29uZmlndXJhdGlvbgoKICAgIERhdmluY2k6IFRhYmxlIGRyaXZlbiBwaW5tdXggY29uZmlndXJhdGlvbgoKICAgIEFkZCBjb2RlIHRvIGFsbG93IHBpbm11eF9jb25maWcgdGFibGVzIHRvIGJlIGdyb3VwZWQgYW5kIGNvbmZpZ3VyZWQKICAgIGFzIGEgc2luZ2xlIHJlc291cmNlLiBUaGlzIHJlbW92ZXMgbXVsdGlwbGUgY2FsbHMgdG8gdGhlIHBpbm11eAogICAgY29uZmlndXJhdGlvbiBjb2RlIGZyb20gYm9hcmRfaW5pdCBhbmQgYWxsb3dzIHBpbm11eGVzIHRvIGJlCiAgICBpbmRpdmlkdWFsbHkgY29uZmlndXJlZCBhbmQgYWRkZWQgYnkgZGF0YSBtYW5pcHVsYXRpb24gb25seS4KCiAgICBBbGwgcmVsYXRlZCAjaWZkZWZzIGNhbiB0aGUgYmUgcmVtb3ZlZCBmcm9tIGJvYXJkX2luaXQgY29kZSBhbmQKICAgIHNpbmNlIHRoZSBjb21waWxlciBvcHRpbWlzZXMgYXdheSBzdGF0aWNzLCAjaWZkZWZzIGNhbiBiZSByZWR1Y2VkIGluCiAgICB0aGUgZGF0YSBkZWZpbml0aW9ucyBhcyB3ZWxsLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pY2sgVGhvbXBzb24gPG5pY2sudGhvbXBzb25AZ2VmYW51Yy5jb20+Cgpjb21taXQgMTI3MGVjMTNkNGZiYWU0OGE1MzdkYzc2ZDQxOGE2ZWZhNzJmNTcyNQpBdXRob3I6IFJvYmVydCBQLiBKLiBEYXkgPHJwamRheUBjcmFzaGNvdXJzZS5jYT4KRGF0ZToJU2F0IERlYyAxMiAxMjoxMDozMyAyMDA5IC0wNTAwCgogICAgUmVtb3ZlIHN1cGVyZmx1b3VzIHVzZXMgb2YgVl9QUk9NUFQgbWFjcm8uCgogICAgQSBudW1iZXIgb2YgY29uZmlnIGZpbGVzIGRlZmluZSB0aGUgVl9QUk9NUFQgbWFjcm8gZm9yIHRoZQogICAgY29tbWFuZC1saW5lIHByb21wdCwgb25seSB0byBpbW1lZGlhdGVseSB1c2UgdGhhdCBtYWNybyB0byBkZWZpbmUKICAgIENPTkZJR19TWVNfUFJPTVBULCBtYWtpbmcgVl9QUk9NUFQgZW50aXJlbHkgc3VwZXJmbHVvdXMuCgogICAgU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFAuIEouIERheSA8cnBqZGF5QGNyYXNoY291cnNlLmNhPgoKY29tbWl0IDhiNDMyYmViYzIwNWE5NTk2ODQ1NTk0Nzc0NzJjMDQ4ZTMxZDEzN2QKQXV0aG9yOiBHcmF6dnlkYXMgSWdub3RhcyA8bm90YXNhc0BnbWFpbC5jb20+CkRhdGU6CUZyaSBEZWMgMTEgMTU6MDc6MzAgMjAwOSArMDIwMAoKICAgIHBhbmRvcmE6IGRvbid0IGVuYWJsZSBWQVVYMywgVkRBQyBhbmQgVlBMTDIgcmVndWxhdG9ycwoKICAgIFRoZXNlIHJlZ3VsYXRvcnMgYXJlIG5vdCBuZWVkZWQgdG8gc3RhcnQgdGhlIGtlcm5lbCBhbmQgb25seQogICAgY2F1c2UgImluY29tcGxldGUgY29uc3RyYWludHMiIHdhcm5pbmdzIGZyb20ga2VybmVsLCBzbyBkb24ndAogICAgdHVybiB0aGVtIG9uIHRvIHNhdmUgcG93ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogR3JhenZ5ZGFzIElnbm90YXMgPG5vdGFzYXNAZ21haWwuY29tPgoKY29tbWl0IGVhZDM5ZDdhYTNkZGNjYjJlMzc0MjE3YWVhYjIzYmQ2NWNlZGI3NjIKQXV0aG9yOiBHcmF6dnlkYXMgSWdub3RhcyA8bm90YXNhc0BnbWFpbC5jb20+CkRhdGU6CVRodSBEZWMgMTAgMTc6MTA6MjEgMjAwOSArMDIwMAoKICAgIFRXTDQwMzA6IG1ha2UgTEVEcyBzZWxlY3RhYmxlIGZvciB0d2w0MDMwX2xlZF9pbml0KCkKCiAgICBOb3QgYWxsIGJvYXJkcyBoYXZlIGJvdGggTEVEcyBob29rZWQsIHNvIGVuYWJsaW5nIGJvdGggb24KICAgIGJvYXJkcyB3aXRoIHNpbmdsZSBMRUQgd2lsbCBqdXN0IHdhc3RlIHBvd2VyLiBNYWtlIGl0CiAgICBwb3NzaWJsZSB0byBjaG9vc2UgTEVEcyBieSBhZGRpbmcgYXJndW1lbnQgdG8KICAgIHR3bDQwMzBfbGVkX2luaXQoKS4KCiAgICBVc2luZyB0aGlzIHR1cm4gb24gb25seSBMRURCIGZvciBwYW5kb3JhLCBsZWF2ZSBib3RoIExFRHMKICAgIG9uIGZvciBhbGwgb3RoZXIgYm9hcmRzLCBhcyBpdCB3YXMgYmVmb3JlIHRoaXMgcGF0Y2guCgogICAgU2lnbmVkLW9mZi1ieTogR3JhenZ5ZGFzIElnbm90YXMgPG5vdGFzYXNAZ21haWwuY29tPgoKY29tbWl0IGJlMzRmZWY3ZmRjZmFmZmM2ODQ5NWU1MDkyOTY2OWFjNWU0YmQ4MDAKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBEZWMgMTYgMDk6Mjc6MzEgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogYWxwcjogUmVtb3ZlIHNvbWUgbm90IG5lZWRlZCBjb21tYW5kcyB0byBtYWtlIGltYWdlIGZpdCBhZ2FpbgoKICAgIFRoZSBsYXRlc3QgY2hhbmdlcyBpbmNyZWFzZWQgdGhlIHNpemUgb2YgdGhlIGFscHIgaW1hZ2UgYSBiaXQgbW9yZS4KICAgIE5vdyBpdCBkb2Vzbid0IGZpdCBpbnRvIHRoZSAyNTZrIHJlc2VydmVkIGZvciBpdC4gVGhpcyBwYXRjaCBub3cgcmVtb3ZlcwogICAgdGhlIGNvbW1hbmRzICJwaW5nIiBhbmQgImRpYWciIHdoaWNoIGFyZSBub3QgbmVlZGVkIGluIHRoZSBwcm9kdWN0aW9uCiAgICBzeXN0ZW1zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIENjOiBQaWV0ZXIgVm9vcnRodWlqc2VuIDxwaWV0ZXIudm9vcnRodWlqc2VuQHByb2RyaXZlLm5sPgoKY29tbWl0IDA3MmU3NTRiNmI5YmVmNDM4ZmMwODcwMzE4NzU1ZTMzMDUxYmFhN2QKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVGh1IERlYyAzIDExOjIzOjE3IDIwMDkgKzAxMDAKCiAgICBpMmMsIHBwYzR4eDogZml4IGNvbXBpbGluZyBLQVJFRiBhbmQgTUVUUk9CT1ggYm9hcmRzLgoKICAgIGNvbW1pdCBlYjVlYjJiMGY3NDRmMGNiYTQwNTE2MGM1ZDAxMzM1YzQwZjA5YWNmCgogICAgcHBjNHh4OiBDbGVhbnVwIFBQQzR4eCBJMkMgaW5mcmFzdHJ1Y3R1cmUKCiAgICBUaGlzIHBhdGNoIGNsZWFucyB1cCB0aGUgUFBDNHh4IEkyQyBpbnRyYXN0cnVjdHVyZToKCiAgICAtIFVzZSBDIHN0cnVjdCB0byBkZXNjcmliZSB0aGUgSTJDIHJlZ2lzdGVycyBpbnN0ZWFkIG9mIGRlZmluZXMKICAgIC0gQ29kaW5nIHN0eWxlIGNsZWFudXAgKGJyYWNlcywgd2hpdGVzcGFjZSwgY29tbWVudHMsIGxpbmUgbGVuZ3RoKQogICAgLSBFeHRyYWN0IGNvbW1vbiBjb2RlIGZyb20gaTJjX3JlYWQoKSBhbmQgaTJjX3dyaXRlKCkKICAgIC0gUmVtb3ZlIHVubmVlZGVkIElJQyBkZWZpbmVzIGZyb20gcHBjNDA1LmggJiBwcGM0NDAuaAoKICAgIGJyZWFrcyBjb21pbGluZyBmb3IgdGhlIEtBUkVGIGFuZCBNRVRST0JPWCBib2FyZHMuCgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGlzc3VlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDg3ZDkzYTFiYTJhZTIzNTUwZTEzNzBhZGI3YTNiMDBhZjA4MzExNjUKQXV0aG9yOiBXb2xmZ2FuZyBXZWduZXIgPHcud2VnbmVyQGFzdHJvLWtvbS5kZT4KRGF0ZToJV2VkIERlYyA5IDE1OjE2OjQ3IDIwMDkgKzAxMDAKCiAgICBtb3ZlIHByb3RvdHlwZXMgZm9yIGd1bnppcCgpIGFuZCB6dW56aXAoKSB0byBjb21tb24uaAoKICAgIFByb3RvdHlwZSBmb3IgZ3VuemlwL3p1bnppcCB3YXMgb25seSBpbiBsaWJfZ2VuZXJpYy9ndW56aXAuYyBhbmQgdGh1cwogICAgcmVwZWF0ZWQgaW4gZXZlcnkgZmlsZSB1c2luZyBpdC4gVGhpcyBwYXRjaCBtb3ZlcyB0aGUgcHJvdG90eXBlcyB0bwogICAgY29tbW9uLmggYW5kIHJlbW92ZXMgYWxsIHByb3RvdHlwZXMgZGlzdHJpYnV0ZWQgYW55d2hlcmUgZWxzZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBXZWduZXIgPHcud2VnbmVyQGFzdHJvLWtvbS5kZT4KCmNvbW1pdCAxMjdlMTA4NDJiMjQ3NGFjMjBlNDA1NzJhNDEwMmRkNGQ1ZWQ4MGYxCkF1dGhvcjogTWFoYXZpciBKYWluIDxtamFpbkBtYXJ2ZWxsLmNvbT4KRGF0ZToJVHVlIE5vdiAzIDEyOjIyOjEwIDIwMDkgKzA1MzAKCiAgICB1c2I6IHdyaXRlIGNvbW1hbmQgZm9yIFJBVyBwYXJ0aXRpb24uCgogICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHdyaXRlIHN1cHBvcnQgdG8gdXNiIGRldmljZSB3aXRoIHJhdyBwYXJ0aXRpb24uCiAgICBJdCB3aWxsIGJlIHVzZWZ1bCBmb3IgZmlsZXN5c3RlbSB3cml0ZSBzdXBwb3J0IHRvIHVzYiBkZXZpY2UgZnJvbQogICAgdS1ib290IGluIGZ1dHVyZS4KCiAgICBUZXN0ZWQgd2l0aCB3cml0aW5nIGtlcm5lbCBpbWFnZSB0byByYXcgdXNiIGRpc2sgJiBib290aW5nIHdpdGggdXNiCiAgICByZWFkIGNvbW1hbmQgaW50byByYW0uCgogICAgW05vdGU6ICBydW4gdXNiIHBhcnQgdG8gZ2V0IGluZm8gYWJvdXQgc3RhcnQgc2VjdG9yICYgbnVtYmVyIG9mCiAgICBzZWN0b3JzIG9uIGEgcGFydGl0aW9uIGZvciB1c2Igd3JpdGUgb3BlcmF0aW9uLl0KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYWhhdmlyIEphaW4gPG1qYWluQG1hcnZlbGwuY29tPgoKY29tbWl0IDczYzg2NDBlOTM4ODE0MzliODdhNTczNDQ4NWE5ZTU2YTQ5NGVmNTAKQXV0aG9yOiBBamF5IEt1bWFyIEd1cHRhIDxhamF5Lmd1cHRhQHRpLmNvbT4KRGF0ZToJV2VkIE5vdiA0IDE1OjU4OjIzIDIwMDkgLTA2MDAKCiAgICBvbWFwM2V2bTogbXVzYjogYWRkIFVTQiBjb25maWcKCiAgICBBZGRlZCBVU0IgaG9zdCBhbmQgZGV2aWNlIGNvbmZpZyBmb3IgaG9zdCAoTVNDLCBLZXlib2FyZCkgYW5kCiAgICBkZXZpY2UgKEFDTSkgZnVuY3Rpb25hbGl0aWVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFqYXkgS3VtYXIgR3VwdGEgPGFqYXkuZ3VwdGFAdGkuY29tPgoKY29tbWl0IGFlNGNhZjJmYjUzY2M3YmU1ZDU5YTY0OWI4YWVlODZkNTQyY2JiNmYKQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CkRhdGU6CVNhdCBPY3QgMzEgMTI6Mzc6NDYgMjAwOSAtMDUwMAoKICAgIE9NQVAzIFVTQiBJbml0aWFsaXplIHR3bDQwMzAgb25seSBpZiByZXF1aXJlZAoKICAgIE9NQVAzRVZNIHVzZXMgSVNQMTUwNCBwaHkgYW5kIHNvIHR3bDQwMzAgcmVsYXRlZCBpbml0IGlzIG5vdCByZXF1aXJlZC4KCiAgICBTdWJtaXR0ZWQtYnk6IEFqYXkgS3VtYXIgR3VwdGEgPGFqYXkuZ3VwdGFAdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgoKY29tbWl0IDJlYzFhYmVhNDM1OWI5NDUyM2Q0NWEyMGQ2OGQ4NTgyZTA5YWNlNDYKQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CkRhdGU6CVNhdCBPY3QgMzEgMTI6Mzc6NDUgMjAwOSAtMDUwMAoKICAgIE9NQVAzIHpvb20yIFVzZSB1c2J0dHkgaWYgdGhlIGRlYnVnIGJvYXJkIGlzIG5vdCBjb25uZWN0ZWQuCgogICAgVGhlIHByZWZlcnJlZCBzZXJpYWwgb3V0cHV0IGNvbWVzIGZyb20gdGhlIGRlYnVnIGJvYXJkLgogICAgV2hlbiB0aGUgZGVidWcgYm9hcmQgaXMgZGlzY29ubmVjdGVkLCBmYWxsIGJhY2sgb24gdXNpbmcKICAgIHVzYnR0eSBmcm9tIHRoZSB1c2IgY29ubmVjdG9yIG9uIHRoZSBab29tMiBib2FyZC4KCiAgICBUaGlzIHNob3dzIHVwIGFzIC9kZXYvdHR5QUNNMCBpbiBhIGxpbnV4IGhvc3QuCgogICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgoKY29tbWl0IDYyOTk0ODdlZjVkY2RiMDZlMDM5NGY1OTU1NzU1YzhkZDljZTcwN2IKQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CkRhdGU6CVNhdCBPY3QgMzEgMTI6Mzc6NDQgMjAwOSAtMDUwMAoKICAgIFVTQlRUWSBtYWtlIHNvbWUgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGVhc2llciB0byB1c2UuCgogICAgWm9vbTIgbmVlZHMgdG8gdXNlIHRoZXNlIGRlY2xhcmF0aW9ucyBhbmQgdGhlIGluY2x1ZGUgZGlyZWN0b3J5IGlzIGEKICAgIGJldHRlciBwbGFjZSBmcm9tIHRoZW0gdGhhbiBpbiB0aGUgbWlkZGxlIG9mIHRoZSBkcml2ZXIgZGlyZWN0b3J5LgogICAgSXQgZGlkIG5vdCBtYWtlIHNlbnNlIHRvIGNyZWF0ZSBhIG5ldyBmaWxlIGZvciBqdXN0IGEgY291cGxlIG9mCiAgICBsaW5lcyBzbyB0aGV5IHdlcmUgYXBwZW5kZWQgdG8gdGhlIHNlcmlhbC5oCgogICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgoKY29tbWl0IDI1Mzc0YmZiZjNhNmM2NjI0ZDhkYjUxMmM5NWE0OTYwZTNhODQ2MzUKQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CkRhdGU6CVNhdCBPY3QgMzEgMTI6Mzc6NDMgMjAwOSAtMDUwMAoKICAgIE9NQVAzIGJlYWdsZSBBZGQgdXNidHR5IGNvbmZpZ3VyYXRpb24KCiAgICBUaGUgcHJpbWFyeSBjb25zb2xlIG9mIGJlYWdsZSBpcyB0aGUgc2VyaWFsIGhlYWRlci4KCiAgICBBIHNlY29uZGFyeSBjb25zb2xlIGlzIHRvIHVzZSB0aGUgdXNidHR5LiAgVGhlIHVzZXIgY2FuIHNldCB0aGlzCiAgICBtYW51YWxseSBieSBkb2luZwoKICAgIHNldGVudiBzdGRvdXQgdXNidHR5OyBzZXRlbnYgc3RkaW4gdXNidHR5OyBzZXRlbnYgc3RkZXJyIHVzYnR0eQogICAgc2F2ZWVudgoKICAgIHVzYnR0eSB3aWxsIGJlIHVzYWJsZSBieSBhY2Nlc3NpbmcgdGhlIC9kZXYvdHR5QUNNMCBvbiBhIGxpbnV4IGhvc3QuCgogICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgoKY29tbWl0IDA1YmU1YTYwZTk4ZWIxMjQzOTAxZjU1NmZlZmQ2NmIxNjkxZmFiZTQKQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CkRhdGU6CVNhdCBPY3QgMzEgMTI6Mzc6NDIgMjAwOSAtMDUwMAoKICAgIE9NQVAzIHpvb20xIEFkZCB1c2J0dHkgY29uZmlndXJhdGlvbgoKICAgIFRoZSBwcmltYXJ5IGNvbnNvbGUgb2Ygem9vbTEgaXMgdGhlIHNlcmlhbCBvdXQgZnJvbSB0aGUganVtcGVycwogICAgYWNjZXNzZWQgYnkgcmVtb3ZpbmcgdGhlIGJhY2sgcGFuZWwuCgogICAgQSBzZWNvbmRhcnkgY29uc29sZSBpcyB0byB1c2UgdGhlIHVzYnR0eS4gIFRoZSB1c2VyIGNhbiBzZXQgdGhpcwogICAgbWFudWFsbHkgYnkgZG9pbmcKCiAgICBzZXRlbnYgc3Rkb3V0IHVzYnR0eTsgc2V0ZW52IHN0ZGluIHVzYnR0eTsgc2V0ZW52IHN0ZGVyciB1c2J0dHkKICAgIHNhdmVlbnYKCiAgICB1c2J0dHkgd2lsbCBiZSB1c2FibGUgYnkgYWNjZXNzaW5nIHRoZSAvZGV2L3R0eUFDTTAgb24gYSBsaW51eCBob3N0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KCmNvbW1pdCBmMjk4ZTRiNmRkNTZkZjNlMzVhMTNhNmRkZDU3MmNhM2JhZjA2YWQyCkF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgpEYXRlOglTYXQgT2N0IDMxIDEyOjM3OjQxIDIwMDkgLTA1MDAKCiAgICBPTUFQMyBBZGQgdXNiIGRldmljZSBzdXBwb3J0CgogICAgVGhpcyBjaGFuZ2UgYWRkcyB0aGUgdXNiIGRldmljZSBzdXBwb3J0IGZvciBtdXNiLgoKICAgIE9tYXAzIHBsYXRmb3JtIHN1cHBvcnQgYWRkZWQgYXQgdGhlIHNhbWUgbGV2ZWwgYXMgZGF2aW5jaS4KCiAgICBUaGUgaW50ZXJmYWNlIGZvciB1c2J0dHkgdG8gdXNlIHRoZSBtdXNiIGRldmljZSBzdXBwb3J0IHdhcyBhZGRlZC4KCiAgICBWZXJpZmllZCBvbiBvbWFwMyBiZWFnbGUsIHpvb20xIGFuZCB6b29tMi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Cgpjb21taXQgYmZmYmIyYTg2ZDJhM2FhMjhiZDhmOTg2OWFhNTUzMDgyZmI1YWY1ZgpBdXRob3I6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KRGF0ZToJU2F0IE9jdCAzMSAxMjozNzo0MCAyMDA5IC0wNTAwCgogICAgVFdMNDAzMCBBZGQgdXNiIFBIWSBzdXBwb3J0CgogICAgVGhlIHR3bDQwMzAgcHJvdmlkZXMgYSBQSFkgZGV2aWNlIGZvciBjb25uZWN0aW5nIGEgbGluayBkZXZpY2UsCiAgICBsaWtlIG11c2IsIHRvIHBoeXNpY2FsIGNvbm5lY3Rpb24uCgogICAgVGhpcyBjaGFuZ2UgYWRkcyB0aGUgdHdsNDAzMCB1c2IgcmVnaXN0ZXJzIGFuZCBmdW5jdGlvbnMgZm9yCiAgICBpbml0aWFsaXppbmcgdGhlIFBIWSBhcyByZXF1aXJlZCBieSBvbWFwMy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Cgpjb21taXQgOTg4MzY1YTIwNDgzNTZmOTRlZDBjMjk0MDA5MjMzMzE3YzlmYjRiMgpBdXRob3I6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KRGF0ZToJU2F0IE9jdCAzMSAxMjozNzozOSAyMDA5IC0wNTAwCgogICAgVVNCIGFkZCBtYWNyb3MgZm9yIGRlYnVnZ2luZyB1c2IgZGV2aWNlIHNldHVwLgoKICAgIFdoZW4gZGV2ZWxvcGluZyB1c2IgZGV2aWNlIGZlYXR1cmVzLCBpdCBpcyB1c2VmdWwgdG8gcHJpbnQgb3V0CiAgICBjb21tb24gdXNiIHN0cnVjdHVyZXMuCgogICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgoKY29tbWl0IDhmOGJkNTY1ZjM1ZmY4YTA2ODcyN2JmY2Y4OTc1YzUwZGYwODIwNDMKQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CkRhdGU6CVNhdCBPY3QgMzEgMTI6Mzc6MzggMjAwOSAtMDUwMAoKICAgIFVTQiBDb25zb2xpZGF0ZSBkZXNjcmlwdG9yIGRlZmluaXRpb25zCgogICAgVGhlIGhlYWRlciBmaWxlcyB1c2IuaCBhbmQgdXNiZGVzY3JpcHRvcnMuaCBoYXZlIHRoZSBzYW1lIG5hbWVlZAogICAgc3RydWN0dXJlIGRlZmluaXRpb25zIGZvcgoKICAgIHVzYl9jb25maWdfZGVzY3JpcHRvcgogICAgdXNiX2ludGVyZmFjZV9kZXNjcmlwdG9yCiAgICB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvcgogICAgdXNiX2RldmljZV9kZXNjcmlwdG9yCiAgICB1c2Jfc3RyaW5nX2Rlc2NyaXB0b3IKCiAgICBUaGVzZSBhcmUgb3V0IHJpZ2h0IGR1cGxpY2F0ZXMgaW4gdXNiLmgKCiAgICB1c2JfZGV2aWNlX2Rlc2NyaXB0b3IKICAgIHVzYl9zdHJpbmdfZGVzY3JpcHRvcgoKICAgIFRoaXMgb25lIGhhcyBleHRyYSB1bnVzZWQgZWxlbWVudHMKCiAgICB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvcgoKCXVuc2lnbmVkIGNoYXIJYlJlZnJlc2gKCXVuc2lnbmVkIGNoYXIJYlN5bmNoQWRkcmVzczsKCiAgICBUaGVzZSBpbiB1c2IuaCBoYXZlIGV4dHJhIGVsZW1lbnRzIGF0IHRoZSBlbmQgb2YgdGhlIHVzYiAyLjAKICAgIHNwZWNpZmllZCBkZXNjcmlwdG9yIGFuZCBhcmUgdXNlZC4KCiAgICB1c2JfY29uZmlnX2Rlc2NyaXB0b3IKICAgIHVzYl9pbnRlcmZhY2VfZGVzY3JpcHRvcgoKICAgIFRoZSBjaGFuZ2UgaXMgdG8gY29uc29saWRhdGUgdGhlIGRlZmluaXRpb24gb2YgdGhlIGRlc2NyaXB0b3JzCiAgICB0byB1c2JkZXNjcmlwdG9ycy5oLiAgVGhlIGR1YmxpY2F0ZXMgaW4gdXNiLmggYXJlIHJlbW92ZWQuCiAgICBUaGUgZXh0cmEgZWxlbWVudCBzdHJ1Y3R1cmUgd2lsbCBoYXZlIHRoZWlyIG5hbWUgc2hvcnRlZCBieQogICAgcmVtb3ZpbmcgdGhlICdfZGVzY3JpcHRvcicgc3VmZml4LgoKICAgIFNvCgogICAgdXNiX2NvbmZpZ19kZXNjcmlwdG9yIC0+IHVzYl9jb25maWcKICAgIHVzYl9pbnRlcmZhY2VfZGVzY3JpcHRvciAtPiB1c2JfaW50ZXJmYWNlCgogICAgRm9yIHRoZXNlLCB0aGUgY29tbW9uIGRlc2NyaXB0b3IgZWxlbWVudHMgYXJlIGFjY2Vzc2VkIG5vdwogICAgYnkgYW4gZWxlbWVudCAnZGVzYycuCgogICAgQXMgYW4gZXhhbXBsZQoKICAgIC0JaWYgKGlmYWNlLT5iSW50ZXJmYWNlQ2xhc3MgIT0gVVNCX0NMQVNTX0hVQikKICAgICsJaWYgKGlmYWNlLT5kZXNjLmJJbnRlcmZhY2VDbGFzcyAhPSBVU0JfQ0xBU1NfSFVCKQoKICAgIFRoaXMgaGFzIGJlZW4gY29tcGlsZSB0ZXN0ZWQgb24gTUFLRUFMTCBhcm0sIHBwYyBhbmQgbWlwcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Cgpjb21taXQgZTVlNGU3MDVjZTQwMjg1NmE0ODAwZWJmNGMwY2MxNjNkNDFiNThiMApBdXRob3I6IExpIFlhbmcgPGxlb2xpQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBEZWMgOSAxODoxMzoyNiAyMDA5ICswODAwCgogICAgVXBkYXRlIE1ha2VmaWxlIGZvciB0YWcgZ2VuZXJhdGluZwoKICAgIEdldCB0YWcgZGlyZWN0b3JpZXMgZnJvbSB0aGUgJChfX0xJQikgYW5kIGFsc28gZ2VuZXJhdGUgdGFnIGZvciAuUyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMaSBZYW5nIDxsZW9saUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGQwMmZmYmY4ZDcyMDg1MDM1Zjc0NmM2M2MyNjA5ZGFmMjBhODQ3NjUKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgRGVjIDE2IDE0OjEyOjExIDIwMDkgLTA2MDAKCiAgICBkcml2ZXJzL2Jpb3NfZW11bGF0b3I6IEZpeCBjb21waWxlIGVycm9yIGluIC5kZXBlbmQgbm90IGJlaW5nIGdlbmVyYXRlZAoKICAgIG1ha2UgLUMgZHJpdmVycy9iaW9zX2VtdWxhdG9yLwogICAgbWFrZVsyXTogRW50ZXJpbmcgZGlyZWN0b3J5CiAgICBgZHJpdmVycy9iaW9zX2VtdWxhdG9yJwogICAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIGF0aWJpb3MuYzo0OToKICAgIGJpb3NlbXVpLmg6NDc6MjE6IGVycm9yOiBiaW9zZW11Lmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKICAgIC4uLgogICAgeDg2ZW11L2RlY29kZS5jOjQwOjI4OiBlcnJvcjogeDg2ZW11L3g4NmVtdWkuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQogICAgLi4uCgogICAgRHVlIHRvIGxhY2sgb2YgcHJvcGVyIENQUEZMQUdTIGJlaW5nIHBhc3NlZCB0byAuZGVwZW5kIGdlbmVyYXRpb24gcnVsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYTIwMGE3YzA0ZDg5ODUzZDJhMTM5NWI5NmQ4Y2E1ZTNkZDc1NDU1MQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBEZWMgMTUgMjM6MjA6NTQgMjAwOSArMDEwMAoKICAgIFVwZGF0ZSBDSEFOR0VMT0c7IHByZXBhcmUgUHJlcGFyZSB2MjAwOS4xMQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZjk0NzY5MDJiNzg5YjA0ODFiOWRmNDlhZjg4ZDZjYTk0ZmIxNmZhMApBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVR1ZSBEZWMgMTUgMTI6MTA6NDcgMjAwOSAtMDYwMAoKICAgIG1wYzg1eHgsIG1wYzg2eHg6IEZpeCBnZC0+Y3B1IHBvaW50ZXIgYWZ0ZXIgcmVsb2NhdGlvbgoKICAgIFRoZSBnZC0+Y3B1IHBvaW50ZXIgaXMgc2V0IHRvIGFuIGFkZHJlc3MgbG9jYXRlZCBpbiBmbGFzaCB3aGVuIHRoZQogICAgcHJvYmVjcHUoKSBmdW5jdGlvbiBpcyBjYWxsZWQgd2hpbGUgVS1Cb290IGlzIGV4ZWN1dGluZyBmcm9tIGZsYXNoLgogICAgVGhpcyBwb2ludGVyIG5lZWRzIHRvIGJlIHVwZGF0ZWQgdG8gcG9pbnQgdG8gYW4gYWRkcmVzcyBpbiBSQU0gYWZ0ZXIKICAgIHJlbG9jYXRpb24gaGFzIG9jY3VycmVkIG90aGVyd2lzZSBMaW51eCBtYXkgbm90IGJlIGFibGUgdG8gYm9vdCBkdWUgdG8KICAgICJmZHQgYm9hcmQiIGNyYXNoaW5nIGlmIGZsYXNoIGhhcyBiZWVuIGVyYXNlZCBvciBjaGFuZ2VkLgoKICAgIFRoaXMgYnVnIHdhcyBpbnRyb2R1Y2VkIGluIGNvbW1pdAogICAgYTBlMjA2NmYzOTI3ODI3MzBmMDM5ODA5NWU1ODNjODc4MTJkOTdmMi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgogICAgUmVwb3J0ZWQtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBUZXN0ZWQtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBUZXN0ZWQgb24gTVBDODUyN0RTLgogICAgVGVzdGVkIGJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFhYjcwZjZmZmY5ZmEzYjc5MTBjMTFiODc0ZjYyNWUwMDQyNTZjNTAKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglNb24gRGVjIDE0IDE2OjMwOjM5IDIwMDkgLTA4MDAKCiAgICBOZXQ6IENsZWFuIHVwIExBTjkxQzk2IFN1cHBvcnQKCiAgICBBIHByZXZpb3VzIENvbW1pdCBjb252ZXJ0ZWQgdGhlIExBTjkxQzk2IEV0aGVybmV0IGRyaXZlciB0byB1c2luZyB0aGUKICAgIENPTkZJR19ORVRfTVVMVEkgQVBJLCBidXQgZGlkIG5vdCBpbmNsdWRlIGZ1bGwgYm9hcmQgc3VwcG9ydC4gIFRoaXMgcGF0Y2gKICAgIGZpbmlzaGVzIHRoZSBqb2IuCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAzMzYzYTM0YjllZWRhOTc4M2FmY2JiZWQ1Y2RkNzM4OTI2ZDFmNGJmCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJU3VuIERlYyAxMyAxNzo1ODozNCAyMDA5IC0wNjAwCgogICAgTVZCTFVFOiBSZW1vdmUgQ09ORklHX0NNRF9JUlEKCiAgICBOZWl0aGVyIHRoZSBNVkJMVUUgbm9yIGl0cyB1bmRlcmx5aW5nIGFyY2hpdGVjdHVyZSBpbXBsZW1lbnQgdGhlCiAgICBkb19pcnFpbmZvKCkgZnVuY3Rpb24gd2hpY2ggaXMgcmVxdWlyZWQgd2hlbiBDT05GSUdfQ01EX0lSUSBpcyBkZWZpbmVkLgogICAgVGhpcyBjaGFuZ2UgZml4ZXMgdGhlIGZvbGxvd2luZyBNVkJMVUUgY29tcGlsZXIgZXJyb3I6CgogICAgLT4gLi9NQUtFQUxMIE1WQkxVRQogICAgQ29uZmlndXJpbmcgZm9yIE1WQkxVRSBib2FyZC4uLgogICAgY29tbW9uL2xpYmNvbW1vbi5hKGNtZF9pcnEubyk6KC51X2Jvb3RfY21kKzB4MjQpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBkb19pcnFpbmZvJwogICAgbWFrZTogKioqIFt1LWJvb3RdIEVycm9yIDEKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgogICAgQWNrZWQtYnk6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KCmNvbW1pdCAxOGU4YWQ2MGVlODc0MzFjMDFjYzI2ODY5ODViNjBjYzU0ZjVkZDNiCkF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+CkRhdGU6CU1vbiBEZWMgMTQgMTc6NTQ6NDAgMjAwOSArMDEwMAoKICAgIGlteDI3bGl0ZTogUmVlbmFibGUgTVREIHN1cHBvcnQgb24gTk9SIGZsYXNoLgoKICAgIFRoZSBzdXBwb3J0IGZvciB0aGlzIHdhcyBzaWxlbnRseSBkcm9wcGVkIGJ5IGEgY29uZmlndXJhdGlvbgogICAgc3BsaXQgZHVyaW5nIHRoZSBtZXJnZSBvZiB0aGUgaW14MjdsaXRlIGJvYXJkIHN1cHBvcnQgaW4gY29tbWl0CiAgICA4NjRhYTAzNGYzYTBlMTBjZTcxMGU4YmJkYTE3MWRmM2NhYjU5NDE0IChjbWRfbXRkcGFydHM6IE1vdmUgdG8gY29tbW9uCiAgICBoYW5kbGluZyBvZiBGTEFTSCBkZXZpY2VzIHZpYSBNVEQgbGF5ZXIpLgoKICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgoKY29tbWl0IDA3NmNkMjRjYjQyNzhjMTI1YzhmMzZkZjM4Njg1MmRjMGZjZmVmYWUKQXV0aG9yOiBUaG9tYXMgV2ViZXIgPHdlYmVyQGNvcnNjaWVuY2UuZGU+CkRhdGU6CVdlZCBEZWMgOSAwOTozODowNCAyMDA5ICswMTAwCgogICAgbmV0OiBkbTkwMDB4OiBmaXggZGVidWcgb3V0cHV0CgogICAgY29tbWl0IDYwZjYxZTZkNzY1NTQwMGJiNzg1YTJlZjYzNzU4MTY3OTk0MWY2ZDEgYnJlYWtzIGNvbXBpbGUgd2l0aCBnY2MgYnkgaW50cm9kdWNpbmcgX19mdW5jX18KICAgIGluc3RlYWQgb2YgY29uc3RhbnQgc3RyaW5nICJmdW5jIiBpbiB0aGUgbWFjcm8gY2FsbCBidXQgbWlzc2VkIHRvIGNoYW5nZSB0aGUgbWFjcm8uCgogICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIFdlYmVyIDx3ZWJlckBjb3JzY2llbmNlLmRlPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBjMTc5YTI4OTZlNmE1MTM4ZTMwNzg2ZjFkNzk2MWQ4ODBkYmQ2ZDMxCkF1dGhvcjogSm9obiBPZ25lc3MgPGpvaG4ub2duZXNzQGxpbnV0cm9uaXguZGU+CkRhdGU6CUZyaSBEZWMgMTEgMDk6NDc6MjggMjAwOSArMDEwMAoKICAgIGZlY19teGM6IGluY29tcGxldGUgZXJyb3IgaGFuZGxpbmcKCiAgICBmZWNfaW5pdCgpIHdpbGwgb25seSBhbGxvY2F0ZSBmZWMtPmJhc2VfcHRyIGlmIGl0IGlzIG5vbi1OVUxMLiBCdXQKICAgIHRoZSBjbGVhbnVwIHJvdXRpbmUgb24gZXJyb3Igd2lsbCBmcmVlIHRoZSBwb2ludGVyIHdpdGhvdXQgc2V0dGluZwogICAgaXQgdG8gTlVMTC4gVGhpcyBtZWFucyB0aGF0IGEgbGF0ZXIgY2FsbCB0byBmZWNfaW5pdCgpIHdvdWxkIHJlc3VsdAogICAgaW4gdXNpbmcgYW4gaW52YWxpZCBwb2ludGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gT2duZXNzIDxqb2huLm9nbmVzc0BsaW51dHJvbml4LmRlPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAyYWI0YTRkMDk1MmI3NTRiMWM3NGY0ZDJiMTJiODNkNjAwZDQ0OWM4CkF1dGhvcjogUmVpbmhhcmQgQXJsdCA8cmVpbmhhcmQuYXJsdEBlc2QuZXU+CkRhdGU6CUZyaSBEZWMgNCAwOTo1MjoxNyAyMDA5ICswMTAwCgogICAgbmV0OiBlMTAwMDogQWRkIHN1cHBvcnQgZm9yIHRoZSBJbnRlbCA4MjU0NkdCIGNvbnRyb2xsZXIKCiAgICBUaGlzIGNoaXAgaXMgZXF1aXBwZWQgZm9yIGV4YW1wbGUgb24gdGhlIGVzZCBQTUMtRVRIMi1HQiBib2FyZC4gU28gbGV0J3MKICAgIGFkZCBpdCB0byB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgY2hpcHMgdG8gdGhlIGUxMDAwIGRyaXZlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSZWluaGFyZCBBcmx0IDxyZWluaGFyZC5hcmx0QGVzZC5ldT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYWFmZGEzOGZiMjY2Yjk0Y2EzNDRlNWZmMDE0ZDQzMDc5MGM3MjI3OQpBdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgpEYXRlOglXZWQgT2N0IDI4IDIyOjEzOjQwIDIwMDkgKzAxMDAKCiAgICBBZGQgZXJyb3IgY29kZXMvaGFuZGxpbmcgZm9yIFRGVFAtc2VydmVyCgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGFjNmIzNjJhMjU5OGI4Y2QyN2JlYjA3MWZhNjIyNGNmOGIxMjFlMWIKQXV0aG9yOiBOaXNoYW50aCBNZW5vbiA8bm1AdGkuY29tPgpEYXRlOglGcmkgT2N0IDE2IDAwOjA2OjM3IDIwMDkgLTA1MDAKCiAgICBMQU45MUM5NjogRW5hYmxlIE5FVF9NVUxUSSBMQU4gZHJpdmVyCgogICAgVGhpcyBtb2RpZmljYXRpb24gaXMgTk9UIHRlc3RlZCBvbiBhbnkgb2YgdGhlCiAgICBwbGF0Zm9ybXMgbW9kaWZpZWQgYXMgSSBkb250IGhhdmUgdGhlbS4gcGxlYXNlCiAgICBoZWxwIGJ5IHRlc3RpbmcrYnVpbGRpbmcrZml4aW5nCgogICAgU2lnbmVkLW9mZi1ieTogTmlzaGFudGggTWVub24gPG5tQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYTE3MjU5OTliOGI3NTI3OTcxMTgzMTIyY2RmYjU0ZTJmODdmNjFhZQpBdXRob3I6IE5pc2hhbnRoIE1lbm9uIDxubUB0aS5jb20+CkRhdGU6CUZyaSBPY3QgMTYgMDA6MDY6MzYgMjAwOSAtMDUwMAoKICAgIFRJIE9NQVAzOiBTRFAzNDMwIEZJWCBORVRfTVVMVEkgV2FybmluZwoKICAgIEVuYWJsZSB0aGUgTkVUIE1VTFRJIG9wdGlvbiBhbmQgcmVtb3ZlIGJ1aWxkIHdhcm5pbmcKCiAgICBUZXN0ZWQ6IFNEUDM0MzAKCiAgICBTaWduZWQtb2ZmLWJ5OiBOaXNoYW50aCBNZW5vbiA8bm1AdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBiN2FkNDEwOWRhMzQyZGZjNzg3NDY4ZmM3MTNkODhkMGE4YjllNjdhCkF1dGhvcjogTmlzaGFudGggTWVub24gPG5tQHRpLmNvbT4KRGF0ZToJRnJpIE9jdCAxNiAwMDowNjozNSAyMDA5IC0wNTAwCgogICAgTkVUOiBMQU45MUM5NiBDT05GSUdfTkVUX01VTFRJaWZ5CgogICAgTWFrZSB0aGUgbGFuOTFjOTYgZHJpdmVyIGNhcGFibGUgb2YgQ09ORklHX05FVF9NVUxUSQogICAgdG8gYmUgY2xlYW4gZm9yIHRoZSBuZXcgYXJjaCwgYWRkIGEgYSBsaWwgZGV0ZWN0IGZ1bmN0aW9uCiAgICBNb3N0IG9mIHRoZSBmb3JtYXR0aW5nIGNoYW5nZSB3YXMgZG9uZSB0byBrZWVwIGNoZWNrcGF0Y2gKICAgIHNpbGVudCwgYnV0IGEgZmV3IGZ1bmN0aW9ucyBhbmQgI2lmIDBlZCBjb2RlIHdoaWNoCiAgICBkb2VzIG5vdCBtYWtlIHNlbnNlIGZvciBORVRfTVVMVEkgaGF2ZSBiZWVuIHJlbW92ZWQKCiAgICBOb3csIHVzZSB0aGUgbGFuOTFjOTZfaW5pdGlhbGl6ZSgpIGZ1bmN0aW9uIHRvIGluaXQgdGhlIGRyaXZlcgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pc2hhbnRoIE1lbm9uIDxubUB0aS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDZhYzU5YzU1MThlMWQyZTJlZjFjNGI4ZGVlOTkyNjdkZmJkZjljZGMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVR1ZSBOb3YgMyAxMTozNTo0MiAyMDA5IC0wNTAwCgogICAgbmV0OiBwdWxsIENPTkZJRyBjaGVja3Mgb3V0IG9mIHNvdXJjZSBhbmQgaW50byBtYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZjRjZmU0Mjc1ODE5MmQwOWY4Mzc1ZTM4NGNjMDAwYWE3MGQ5NzAyOQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIERlYyA5IDA5OjAxOjQzIDIwMDkgKzAxMDAKCiAgICBuYW5kOiBGaXggYWNjZXNzIHRvIGxhc3QgYmxvY2sgaW4gTkFORCBkZXZpY2VzCgogICAgQ3VycmVudGx5LCB0aGUgbGFzdCBibG9jayBvZiBOQU5EIGRldmljZXMgY2FuJ3QgYmUgYWNjZXNzZWQuIFRoaXMgcGF0Y2gKICAgIGZpeGVzIHRoaXMgaXNzdWUgYnkgY29ycmVjdGluZyB0aGUgYm91bmRhcnkgY2hlY2tpbmcgKG9mZi1ieS1vbmUgZXJyb3IpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIENjOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KICAgIENjOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDNiODg3Y2E4Y2U3MmNjMTIxMjkxODM1MzhmNmU4MjhkYjEzZjQ4NjcKQXV0aG9yOiBQZXRlciBLb3JzZ2FhcmQgPGphY21ldEBzdW5zaXRlLmRrPgpEYXRlOglUdWUgRGVjIDggMjI6MjA6MzQgMjAwOSArMDEwMAoKICAgIG1wYzgzeHg6IGJvb3QgdGltZSByZWdyZXNzaW9uLCBtb3ZlIExDUlIgc2V0dXAgYmFjayB0byBjcHVfaW5pdF9mCgogICAgQ29tbWl0IGM3MTkwZjAyIChyZXRhaW4gUE9SIHZhbHVlcyBvZiBub24tY29uZmlndXJlZCBBQ1IsIFNQQ1IsIFNDQ1IsCiAgICBhbmQgTENSUiBiaXRmaWVsZHMpIG1vdmVkIHRoZSBMQ1JSIGFzc2lnbm1lbnQgdG8gYWZ0ZXIgcmVsb2NhdGlvbgogICAgdG8gUkFNIGJlY2F1c2Ugb2YgdGhlIHBvdGVudGlhbCBwcm9ibGVtIHdpdGggY2hhbmdpbmcgdGhlIGxvY2FsIGJ1cwogICAgY2xvY2sgd2hpbGUgZXhlY3V0aW5nIGZyb20gZmxhc2guCgogICAgVGhpcyBjaGFuZ2UgdW5mb3J0dW5hdGVseSBhZHZlcnNlbHkgYWZmZWN0cyB0aGUgYm9vdCB0aW1lLCBhcyBydW5uaW5nCiAgICBhbGwgY29kZSB1cCB0byBjcHVfaW5pdF9yIGNhbiBjYXVzZSBzaWduaWZpY2FudCBzbG93ZG93bi4KCiAgICBFLkcuIG9uIGEgODM0NyBib2FyZCBhIGJvb3R1cCB0aW1lIGluY3JlYXNlIG9mIH42MDBtcyBoYXMgYmVlbiBvYnNlcnZlZDoKCiAgICAgICAwLjAyMCBDUFU6ICAgZTMwMGMxLCBNUEM4MzQ3X1BCR0FfRUEsIFJldjogMy4wIGF0IDQwMCBNSHosIENTQjogMjY2LjY2NyBNSHoKICAgICAgIDAuMTY4IFJTOiAgICAyMzIKICAgICAgIDAuMTcyIEkyQzogICByZWFkeQogICAgICAgMC4xNzYgRFJBTTogIDY0IE1CCiAgICAgICAxLjIzNiBGTEFTSDogMzIgTUIKCiAgICBWZXJzdXM6CgogICAgICAgMC4wMTYgQ1BVOiAgIGUzMDBjMSwgTVBDODM0N19QQkdBX0VBLCBSZXY6IDMuMCBhdCA0MDAgTUh6LCBDU0I6IDI2Ni42NjcgTUh6CiAgICAgICAwLjA5MiBSUzogICAgMjMyCiAgICAgICAwLjA5MiBJMkM6ICAgcmVhZHkKICAgICAgIDAuMDk2IERSQU06ICA2NCBNQgogICAgICAgMC42NDQgRkxBU0g6IDMyIE1CCgogICAgU28gZmFyIG5vIGJvYXJkcyBoYXZlIG5lZWRlZCB0aGUgbGF0ZSBMQ1JSIHNldHVwLCBzbyBzaW1wbHkgcmV2ZXJ0IGl0CiAgICBmb3Igbm93IC0gSWYgaXQgaXMgbmVlZGVkIGF0IGEgbGF0ZXIgdGltZSwgdGhvc2UgYm9hcmRzIGNhbiBlaXRoZXIgZG8KICAgIHRoZWlyIG93biBmaW5hbCBMQ1JSIHNldHVwIGluIGJvYXJkIGNvZGUgKEUuRy4gaW4gYm9hcmRfZWFybHlfaW5pdF9yKSwKICAgIG9yIHdlIGNhbiBpbnRyb2R1Y2UgYSBDT05GSUdfU1lTX0xDUlJfTEFURSBjb25maWcgb3B0aW9uIHRvIG9ubHkgZG8KICAgIHRoZSBzZXR1cCBpbiBjcHVfaW5pdF9yLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIEtvcnNnYWFyZCA8amFjbWV0QHN1bnNpdGUuZGs+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRiMTQyZmViZmY3MWVhYmRiN2RkYmIxMjVjN2I1ODNiMjRkZGM0MzQKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVGh1IERlYyAzIDExOjIxOjIxIDIwMDkgKzAxMDAKCiAgICBjb21tb246IGRlbGV0ZSBDT05GSUdfU1lTXzY0QklUX1ZTUFJJTlRGIGFuZCBDT05GSUdfU1lTXzY0QklUX1NUUlRPVUwKCiAgICBUaGVyZSBpcyBtb3JlIGFuZCBtb3JlIHVzYWdlIG9mIHByaW50aW5nIDY0Yml0IHZhbHVlcywKICAgIHNvIGVuYWJsZSB0aGlzIGZlYXR1cmUgZ2VuZXJhbGx5LCBhbmQgZGVsZXRlIHRoZQogICAgQ09ORklHX1NZU182NEJJVF9WU1BSSU5URiBhbmQgQ09ORklHX1NZU182NEJJVF9TVFJUT1VMCiAgICBkZWZpbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDAwYjZkOTI3YmE4OTAwY2RmMjE4YjkwYjI3N2UxMDkwZTI4NGJlYTYKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVGh1IERlYyAzIDExOjIwOjA2IDIwMDkgKzAxMDAKCiAgICA1eHh4LCBmZHQ6IG1vdmUgZmR0X2ZpeHVwX21lbW9yeSgpIHRvIGNwdS5jIGZpbGUKCiAgICB1LWJvb3QgdXBkYXRlcywgYmVmb3JlIHN0YXJ0aW5nIExpbnV4LCB0aGUgbWVtb3J5IG5vZGUgaW4gdGhlCiAgICBEVFMuIEFzIHRoaXMgaXMgYSAic3RhbmRhcmQiIGZlYXR1cmUsIG1vdmUgdGhpcyBmdW5jdGlvbmFsaXR5CiAgICB0byB0aGUgY3B1LmMgZmlsZSBmb3IgbXBjNXh4eCBhbmQgbXBjNTEyeCBwcm9jZXNzb3JzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDM4NjExOGE4OTY1NTRiMTNmMTRhZDBmODIzNTYyNzY5ODhmN2RlODIKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CVR1ZSBEZWMgOCAwOToxMjo0OSAyMDA5ICswMTAwCgogICAgbWljcm9ibGF6ZTogQ29ycmVjdCBmZnMgcmVncmVzc2lvbiBmb3IgTWljcm9ibGF6ZQoKICAgIFdlIGFyZSB1c2luZyBnZW5lcmljIGltcGxlbWVudGF0aW9uIG9mIGZmcy4gVGhpcyBzaG91bGQKICAgIGJlIHBhcnQgb2YgU2ltb24ncyBjb21taXQgMDQxM2NmZWNlYTM1MDAwMGVhYjVlNTkxYTA5NjVjM2UzZWUwZmYwMAoKICAgIEhlcmUgaXMgd2FybmluZyBtZXNzYWdlIHdoaWNoIHRoaXMgcGF0Y2ggcmVtb3Zlcy4KCiAgICBJbiBmaWxlIGluY2x1ZGVkIGZyb20gL3RtcC91LWJvb3QtbWljcm9ibGF6ZS9pbmNsdWRlL2NvbW1vbi5oOjM4LAoJCSAgICAgZnJvbSBjbWRfbXRkcGFydHMuYzo4NzoKICAgIC90bXAvdS1ib290LW1pY3JvYmxhemUvaW5jbHVkZS9saW51eC9iaXRvcHMuaDoxMjM6MTogd2FybmluZzogImZmcyIgcmVkZWZpbmVkCiAgICBJbiBmaWxlIGluY2x1ZGVkIGZyb20gL3RtcC91LWJvb3QtbWljcm9ibGF6ZS9pbmNsdWRlL2xpbnV4L2JpdG9wcy5oOjExMCwKCQkgICAgIGZyb20gL3RtcC91LWJvb3QtbWljcm9ibGF6ZS9pbmNsdWRlL2NvbW1vbi5oOjM4LAoJCSAgICAgZnJvbSBjbWRfbXRkcGFydHMuYzo4NzoKICAgIC90bXAvdS1ib290LW1pY3JvYmxhemUvaW5jbHVkZS9hc20vYml0b3BzLmg6MjY5OjE6CiAgICB3YXJuaW5nOiB0aGlzIGlzIHRoZSBsb2NhdGlvbiBvZiB0aGUgcHJldmlvdXMgZGVmaW5pdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KCmNvbW1pdCA4ZmU3YjI5Zjk4MTEzMjI5MzFmMDE5MmE1NjQzMWVkY2Y4MTlkNmI5CkF1dGhvcjogR3JhZW1lIFNtZWNoZXIgPGdyYWVtZS5zbWVjaGVyQG1haWwubWNnaWxsLmNhPgpEYXRlOglNb24gRGVjIDcgMDg6MDk6NTcgMjAwOSAtMDgwMAoKICAgIG1pY3JvYmxhemU6IFN0b3Agc3RhY2sgY2xvYmJlcmluZyBpbiBtaWNyb2JsYXplLWdlbmVyaWMuCgogICAgQSB0eXBvIGNhdXNlZCB0aGUgc3RhY2sgYW5kIG1hbGxvYyByZWdpb25zIHRvIG92ZXJsYXAsIHdoaWNoIHByZXZlbnRlZAogICAgbWVtX21hbGxvY19pbml0KCkgZnJvbSByZXR1cm5pbmcuIFRoaXMgY29tbWl0IG1ha2VzIHRoZSBtZW1vcnkgbGF5b3V0IG1hdGNoCiAgICB0aGUgZXhhbXBsZSBkZXNjcmliZWQgaW4gaW5jbHVkZS9jb25maWdzL21pY3JvYmxhemUtZ2VuZXJpYy5oCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFNtZWNoZXIgPGdyYWVtZS5zbWVjaGVyQG1haWwubWNnaWxsLmNhPgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgoKY29tbWl0IDBmYzUyOTQ4YmRhMDczNDQzMWNiNTI4ZWU0ZmQ4MmYxZGVjOGM3YjUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gRGVjIDcgMjM6MTQ6MTMgMjAwOSArMDEwMAoKICAgIFVwZGF0ZSBDSEFOR0VMT0csIHByZXBhcmUgLXJjMgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZjIzNTI4NzdjYjJkYWFjODgxMTUxOTJmYjA5OTkxYTIzOTdkMGIyNwpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVN1biBEZWMgNiAyMzo1ODoyOCAyMDA5IC0wNjAwCgogICAgTUFLRUFMTDogRml4IHJldHVybiB2YWx1ZQoKICAgIFByZXZpb3VzbHkgTUFLRUFMTCB3b3VsZCBhbHdheXMgcmV0dXJuIGEgdmFsdWUgb2YgMCwgZXZlbiBpZiAxIG9yIG1vcmUKICAgIGJvYXJkcyBkaWQgbm90IGNvbXBpbGUuICBUaGlzIGNoYW5nZSBjYXVzZXMgTUFLRUFMTCB0byByZXR1cm4gMCBpZiBhbGwKICAgIGJvYXJkcyB3ZXJlIGFibGUgdG8gYnVpbGQsIG90aGVyd2lzZSAxLgoKICAgIFRoaXMgY2hhbmdlIGFsc28gcmVxdWlyZXMgY2hhbmdpbmcgdGhlIHNjcmlwdCBpbnRlcnByZXRlciBmcm9tIHNoIHRvCiAgICBiYXNoIHRvIHN1cHBvcnQgYmFzaCdzIFBJUEVTVEFUVVMgdmFyaWFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCBmYmMxYzhmNmY2Yzk3MjUyNDE5NzgyOWM1NmRkOGYyZjVkYTAyMDBhCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJU3VuIERlYyA2IDAxOjMzOjI0IDIwMDkgLTA2MDAKCiAgICB0b29scy9ta2ltYWdlOiBSZW1vdmUgZHVwbGljYXRlIGxpbmUgb2YgY29kZQoKICAgIFJlY2VudCBjb21taXRzIDFhOTlkZTJjYjRkMDhlYjNiZjlmYjNmNjBhOWQ1MzMxNTBkZThjMGUgYW5kCiAgICA2YTU5MGM1ZjVmZDEyY2RkMjdmMzE1MzUyMmFjZmFjMzg1NDU5MGU3IGJvdGggZml4ZWQgdGhlIHNhbWUgYnVnIGluIHRoZQogICAgc2FtZSBtYW5uZXIuICBVbmZvcnR1bmF0ZWx5IGdpdCB3YXMgInNtYXJ0IiBlbm91Z2ggdG8gbWVyZ2UgYm90aCBjaGFuZ2VzCiAgICB3aGljaCByZXN1bHRlZCBpbiBzb21lIGR1cGxpY2F0ZSBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CgogICAgUmVvcmRlcmVkIGNvZGUgYW5kIGNvbW1lbnQgYSBiaXQuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBkZjAwMmZhNmI5Y2Q0NzU5MDllZGUzNWJmOTViODAzYzIyODljNmE0CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVNhdCBEZWMgNSAxMTo1OTo1MSAyMDA5ICswMTAwCgogICAgaTJjOiBmaXggZGFuZ2xpbmcgY29tbWVudCBpbiBkb19pMmNfbXcoKQoKICAgIGNvbW1pdCBiZDM3ODRkZjk0YmZlY2E0M2ZiZjM0MDk0ZGY5Y2IxYmQzZWNjYTNiIGRlbGV0ZWQgc29tZSB1bnVzZWQKICAgIGNvZGUgaW4gZG9faTJjX213KCksIGJ1dCBtaXNzZWQgdG8gYWxzbyByZW1vdmUgdGhlIHJlc3BlY3RpdmUKICAgIGNvbW1tZW50LiBUaGlzIHBhdGNoIGZpeGVzIHRoaXMuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgN2NiNWZjMTVmMjJkZTQ2Y2M2ZmFiYzI2YmFmOTk0Y2Y4ZjdmYTU0NgpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglUaHUgRGVjIDMgMTE6MjA6NDIgMjAwOSArMDEwMAoKICAgIG1wYzUyeHgsIG1hbnJvbGFuZDogYWRkIHNvbWUgY29tbWFuZHMKCiAgICBhZGQgdGhlIGZvbGxvd2luZyBjb21tYW5kcyBmb3IgdGhlIG1hbnJvbGFuZCBib2FyZHM6CgogICAgQ09ORklHX0NNRExJTkVfRURJVElORwogICAgQ09ORklHX0NPTU1BTkRfSElTVE9SWQogICAgQ09ORklHX0FVVE9fQ09NUExFVEUKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAzOWZmN2Q1ZjRjYzU0N2EyMDM0YThiZmMyYTViNWY0YjYyZmQ1YzIwCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgRGVjIDMgMDY6MjQ6MzAgMjAwOSArMDEwMAoKICAgIFBPU1Q6IFJlbW92ZSBkdXBsaWNhdGVkIHBvc3RfaG90a2V5X3ByZXNzZWQoKSBmdW5jdGlvbnMKCiAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSB3ZWFrIGRlZmF1bHQgZnVuY3Rpb24gZm9yIHBvc3RfaG90a2V5X3ByZXNzZWQoKSwKICAgIHJldHVybmluZyAwLCBmb3IgYm9hcmRzIHdpdGhvdXQgaG90a2V5IHN1cHBvcnQuIFRoZSBsb25nLXJ1bm5pbmcgdGVzdHMKICAgIHdvbid0IGJlIHN0YXJ0ZWQgb24gdGhvc2UgYm9hcmRzLiBUaGlzIGRlZmF1bHQgZnVuY3Rpb24gd2FzIGltcGxlbWVudGVkCiAgICBpbiBtYW55IGJvYXJkIGRpcmVjdG9yaWVzLiBCeSBpbXBsZW1lbnRpbmcgdGhpcyB3ZWFrIGRlZmF1bHQgd2UgY2FuCiAgICByZW1vdmUgYWxsIHRob3NlIGR1cGxpY2F0ZSB2ZXJzaW9ucy4KCiAgICBCb2FyZHMgd2l0aCBob3RrZXkgc3VwcG9ydCwgY2FuIG92ZXJyaWRlIHRoaXMgd2VhayBkZWZhdWx0IGZ1bmN0aW9uCiAgICBieSBkZWZpbmluZyBvbmUgaW4gdGhlaXIgYm9hcmQgc3BlY2lmaWMgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZjg0NTA4MjlmOTIxY2YxMDY2N2FmOThhOGQwOGVkZmEzZDk5OGYwNApBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglUdWUgRGVjIDEgMTk6MzA6NDcgMjAwOSArMDEwMAoKICAgIDUyeHgsIG1hbnJvbGFuZDogYWRkIGZkdF9maXh1cF9tZW1vcnkoKSBpbiBmdF9ib2FyZF9zZXR1cCgpCgogICAgVG8gdXBkYXRlIHRoZSByZWFsIG1lbW9yeSBzaXplIGluIHRoZSBtZW1vcnkgbm9kZSBvbiB0aGUKICAgIHVjMTAxIGFuZCBtdWNtYzUyIGJvYXJkcyBjYWxsIGZkdF9maXh1cF9tZW1vcnkoKSBpbgogICAgZnRfYm9hcmRfc2V0dXAoKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAwZWM4MWRiMjAyOTRlZmRhZDI0NTRhNzUzZTc5ZjFmZTI0NGE0M2NhCkF1dGhvcjogRGFuaWVsIEhvYmkgPGRhbmllbC5ob2JpQHNjaG1pZC10ZWxlY29tLmNoPgpEYXRlOglUdWUgRGVjIDEgMTQ6MDU6NTUgMjAwOSArMDEwMAoKICAgIEZpeCBjb21wdXRhdGlvbiBpbiBuYW5kX3V0aWwuYzpnZXRfbGVuX2luY2xfYmFkCgogICAgRGVwZW5kaW5nIG9uIG9mZnNldCwgZmxhc2ggc2l6ZSBhbmQgdGhlIG51bWJlciBvZiBiYWQgYmxvY2tzLAogICAgZ2V0X2xlbl9pbmNsX2JhZCBtYXkgcmV0dXJuIGEgdG9vIHNtYWxsIHZhbHVlIHdoaWNoIG1heSBsZWFkIHRvOgoKICAgIDEpIElmIHRoZXJlIGFyZSBubyBiYWQgYmxvY2tzLCBuYW5kX3tyZWFkLHdyaXRlfV9za2lwX2JhZCBjaG9vc2VzIHRoZQogICAgYmFkIGJsb2NrIGF3YXJlIHJlYWQvd3JpdGUgY29kZS4gVGhpcyBtYXkgaHVydCBwZXJmb3JtYW5jZSwgYnV0IGRvZXMKICAgIG5vdCBoYXZlIGFueSBhZHZlcnNlIGVmZmVjdHMuCgogICAgMikgSWYgdGhlcmUgYXJlIGJhZCBibG9ja3MsIHRoZSBuYW5kX3tyZWFkLHdyaXRlfV9za2lwX2JhZCBtYXkgY2hvb3NlCiAgICB0aGUgYmFkIGJsb2NrIHVuYXdhcmUgcmVhZC93cml0ZSBjb2RlIChpZiBsZW5faW5jbF9iYWQgPT0gKmxlbmd0aCkKICAgIHdoaWNoIGxlYWRzIHRvIGNvcnJ1cHRlZCBkYXRhLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBIb2JpIDxkYW5pZWwuaG9iaUBzY2htaWQtdGVsZWNvbS5jaD4KCmNvbW1pdCBhYWJiOGNiMDgxOGUyODVhZWVkMGNmYWYyNDM2MzU5OTdlMDc1NTRkCkF1dGhvcjogRXZhbiBTYW1hbmFzIDxlc2FtYW5hc0B4ZXMtaW5jLmNvbT4KRGF0ZToJTW9uIE5vdiA5IDIwOjA4OjM2IDIwMDkgLTA2MDAKCiAgICBuZnM6IE5mc1RpbWVvdXQoKSB1cGRhdGVzCgogICAgLSBOZnNUaW1lb3V0KCkgZG9lcyBub3QgY29ycmVjdGx5IHVwZGF0ZSB0aGUgTkZTIHRpbWVvdXQgdmFsdWUgd2hpY2gKICAgICAgcmVzdWx0cyBpbiBOZnNUaW1lb3V0KCkgb25seSBiZWluZyBjYWxsZWQgb25jZSBpbiBjZXJ0YWluIHNpdHVhdGlvbnMuCiAgICAgIFRoaXMgY2FuIHJlc3VsdCBpbiB0aGUgJ25mcycgY29tbWFuZCBoYW5naW5nIGluZGVmaW5ldGx5LiAgRm9yCiAgICAgIGV4YW1wbGUsIHRoZSBjb21tYW5kOgoKCW5mcyAxOTIuMTY4LjAuMTovaG9tZS91c2VyL2ZpbGUKCiAgICAgIHdpbGwgbm90IGV4aXQgdW50aWwgY3RybC1jIGlzIHByZXNzZWQgaWYgMTkyLjE2OC4wLjEgZG9lcyBub3QgaGF2ZSBhbgogICAgICBORlMgc2VydmVyIHJ1bm5pbmcuCgogICAgICBUaGlzIGlzc3VlIGlzIHJlc29sdmVkIGJ5IHJlaW5pdGlhbGl6dGluZyB0aGUgTkZTIHRpbWVvdXQgdmFsdWUgaW5zaWRlCiAgICAgIE5mc1RpbWVvdXQoKSB3aGVuIGEgdGltZW91dCBvY2N1cnMuCgogICAgLSBNYWtlIHRoZSAnbmZzJyBjb21tYW5kIHByaW50IHRoZSAnVCcgY2hhcmFjdGVyIHdoZW4gYSB0aW1lb3V0IG9jY3Vycy4KICAgICAgUHJldmlvdXNseSB0aGVyZSB3YXMgbm8gaW5kaWNhdGlvbiB0aGF0IHRpbWVvdXRzIHdlcmUgb2NjdXJpbmcuCgogICAgLSBNaW1pYyB0aGUgJ3RmdHBib290JyBjb21tYW5kIGFuZCB3aGVuIGEgZG93bmxvYWQgZmFpbHMgcHJpbnQgIlJldHJ5CiAgICAgIGNvdW50IGV4Y2VlZGVkOyBzdGFydGluZyBhZ2FpbiIsIGFuZCByZXN0YXJ0IHRoZSBkb3dubG9hZCB0YWtpbmcgdGhlCiAgICAgICduZXRyZXRyeScgZW52aXJvbm1lbnQgdmFyaWFibGUgaW50byBhY2NvdW50LgoKICAgIFNpZ25lZC1vZmYtYnk6IEV2YW4gU2FtYW5hcyA8ZXNhbWFuYXNAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKICAgIFRlc3RlZCBvbiBUUU04eHhMLgoKICAgIFRlc3RlZCBieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCiAgICBUZXN0ZWQgb24gTVBDODUyN0RTLgoKICAgIFRlc3RlZCBieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyMjRjOTBkMTA2MGJmMWE4M2NiZjMzY2E1MWQwNjBiOWQxOWUwMjk0CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJV2VkIE5vdiAxOCAxOTowODo1OSAyMDA5IC0wNjAwCgogICAgYm9vdG06IEZpeCBoZWxwIG1lc3NhZ2UncyBzdWItY29tbWFuZCBvcmRlcmluZwoKICAgIFRoZSBoZWxwIG1lc3NhZ2UgZm9yIHRoZSAnYm9vdG0nIGNvbW1hbmQgbGlzdGVkIHRoZSAnY21kbGluZScgYW5kICdiZHQnCiAgICBzdWItY29tbWFuZHMgaW4gdGhlIHdyb25nIG9yZGVyIHdoaWNoIHJlc3VsdGVkIGluIHRoZSBlcnJvciBiZWxvdyB3aGVuCiAgICBmb2xsb3dpbmcgdGhlICdoZWxwJyBjb21tYW5kJ3MgaW5zdHJ1Y3Rpb25zOgoKICAgICAgIlRyeWluZyB0byBleGVjdXRlIGEgY29tbWFuZCBvdXQgb2Ygb3JkZXIiCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCBhOTNjOTJjZGRhZWRkNWYwNzIwZTBkYTE1YzY2NjRmN2E2ODhiNTgyCkF1dGhvcjogUm9iZXJ0IFAuIEouIERheSA8cnBqZGF5QGNyYXNoY291cnNlLmNhPgpEYXRlOglUdWUgTm92IDE3IDA3OjMwOjIzIDIwMDkgLTA1MDAKCiAgICBoZWxwOiBDb3JyZWN0IHN5bnRheCBvZiBuYW5kZWNjIGhlbHAgb3V0cHV0LgoKICAgICJuYW5kZWNjIiBoZWxwIG91dHB1dCBzaG91bGQgbm90IHJlcHJvZHVjZSB0aGUgY29tbWFuZCBuYW1lLCBub3IgaGF2ZQogICAgYSB0cmFpbGluZyBuZXdsaW5lLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJvYmVydCBQLiBKLiBEYXkgPHJwamRheUBjcmFzaGNvdXJzZS5jYT4KCmNvbW1pdCBjMmZmZjMzMWEzMmNlY2E4MzdkNzZlYjc4MjdkNjM0MGRhMjcwZDUyCkF1dGhvcjogTWlrZSBSYXBvcG9ydCA8bWlrZUBjb21wdWxhYi5jby5pbD4KRGF0ZToJV2VkIE5vdiAxMSAxMDowMzowMyAyMDA5ICswMjAwCgogICAgc21jOTExeDogdXBkYXRlIFNNQzkxMVggcmVsYXRlZCBjb25maWd1cmF0aW9uIGRlc2NyaXB0aW9uCgogICAgU2luY2UgY29tbWl0IDczNmZlYWQ4ZmRiZjhhODQwNzA0OGJlYmMzNzNjZDU1MWQwMWVjOTggIkNvbnZlcnQgU01DOTExWAogICAgRXRoZXJuZXQgZHJpdmVyIHRvIENPTkZJR19ORVRfTVVMVEkgQVBJIiBTTUM5MTFYIGNvbmZpZ3JhdGlvbiBvcHRpb25zCiAgICBhcmUgY2FsbGVkIENPTkZJR19TTUM5MTFYIHJhdGhlciB0aGFuIENPTkZJR19EUklWRVJfU01DOTExWC4gVXBkYXRlCiAgICBSRUFETUUgdG8gcmVmbGVjdCB0aGF0IGNoYW5nZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIFJhcG9wb3J0IDxtaWtlQGNvbXB1bGFiLmNvLmlsPgoKY29tbWl0IDQ1YjZiNjVjNmJmMDZhNTg5ZWYzMTIzMTkyYWY5NGIwMzgxZGIyN2IKQXV0aG9yOiBNaWtlIFJhcG9wb3J0IDxtaWtlQGNvbXB1bGFiLmNvLmlsPgpEYXRlOglXZWQgTm92IDExIDEwOjAzOjA5IDIwMDkgKzAyMDAKCiAgICBzbWM5MTF4OiBmaXggdHlwbyBpbiBzbWM5MTF4X2hhbmRsZV9tYWNfYWRkcmVzcyBuYW1lCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBSYXBvcG9ydCA8bWlrZUBjb21wdWxhYi5jby5pbD4KCmNvbW1pdCBmNjRlZjliYjk5NTY4N2UyNGUwYjYxYjUyMzE2ZjRlYWE5N2MzYmJjCkF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE5vdiAxOSAwMjo0NzoyOCAyMDA5IC0wNjAwCgogICAgZml4IG5mcyBzeW1saW5rIG5hbWUgY29ycnVwdGlvbgoKICAgIEFuIG9mZiBieSBvbmUgZXJyb3IgbWF5IGNhdXNlIG5mcyByZWFkbGluayBsb29rdXAgZmFpbCBpZgogICAgbmZzX3BhdGhfYnVmZiBoYXMgbm9uLXplcm8gZGF0YSBmcm9tIGEgcHJldmlvdXMgdXNlLgoKICAgIExvYWRpbmc6ICoqKiBFUlJPUjogRmlsZSBsb29rdXAgZmFpbAoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZThmYWMyNWU4MzQyNmZkZjQ2MWM2NmFhOGEyNTMwZWMyOGVjNTM2ZQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBEZWMgNyAyMTowNjo0MCAyMDA5ICswMTAwCgogICAgYXQ5MXNhbTkyNjFlay5jOiBmaXggbWlub3IgY29kaW5nIHN0eWxlIGlzc3VlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNDcxMzAxMGFkZjViZWRhODc0MTBkNjM3ZWJmYzU4ZGIwZGI5YTlkYgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBEZWMgNiAwMToyMToyOCAyMDA5ICswMTAwCgogICAgdHJhYjogZml4IHdhcm5pbmc6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdkaXNhYmxlX3ZmZCcKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGE5Zjk5YWI0NGI0NzNmYjM5NDE2OWJhMzY1ZjhiNDM4MGY5ODE1ODQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gRGVjIDYgMDA6NTM6MTggMjAwOSArMDEwMAoKICAgIHpsaWIuYzogYXZvaWQgYnVpbGQgY29uZmxpY3RzIGZvciBjcmFkbGUgYm9hcmQKCiAgICBDb21taXQgZGNlM2Q3OTcxMCB1cGRhdGVkIHRoZSB6bGliIGNvZGUgdG8gdjAuOTU7IHRoaXMgY2F1c2VkCiAgICBjb25mbGljdHMgd2hlbiBidWlsZGluZyBmb3IgdGhlICJjcmFkbGUiIGJvYXJkLCBiZWNhdXNlIHRoZSAocHJldHR5CiAgICBnZW5lcmljKSBwcmVwcm9jZXNzb3IgdmFyaWFibGUgIk9GRiIgd2FzIHVzZWQgaW4gbXVsdGlwbGUgZmlsZXMuCiAgICBNYWtlIHN1cmUgdG8gYXZvaWQgZnVydGhlciBjb25mbGljdHMgYnkgI3VuZGVmJ2luZyBpdCBpbiB6bGliLmMKICAgIGJlZm9yZSByZWRlZmluaW5nIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBjYzogR2l1c2VwcGUgQ29uZG9yZWxsaSA8Z2l1c2VwcGUuY29uZG9yZWxsaUBzdC5jb20+CiAgICBjYzogQW5nZWxvIENhc3RlbGxvIDxhbmdlbG8uY2FzdGVsbG9Ac3QuY29tPgogICAgY2M6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmktbGlzdEBnbnVkZC5jb20+Cgpjb21taXQgOGNiZjRlNGYxNzEyMWQ3MzJlNzg3NjRmMGJhMzE3YzlhMTgzOGVhNgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBEZWMgNiAwMDoyNjoxOSAyMDA5ICswMTAwCgogICAgRml4IG91dC1vZi10cmVlIGJ1aWxkaW5nIG9mICJhcG9sbG9uIiBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGY2OGFiNDNkZTY3ZjU5OTI1NTQyZWZiNmJjZWMzMGY0YTg0ZmU2OTUKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CUZyaSBEZWMgNCAwNTozNToxNSAyMDA5IC0wNTAwCgogICAgbHptYTogaWdub3JlIHVuc2V0IGZpbGVzaXplcwoKICAgIFRoZSBMaW51eCBrZXJuZWwgYnVpbGQgc3lzdGVtIGNoYW5nZWQgaG93IGl0IGNvbXByZXNzZXMgdGhpbmdzIHdpdGggTFpNQQogICAgc3VjaCB0aGF0IHRoZSBoZWFkZXIgbm8gbG9uZ2VyIGNvbnRhaW5zIHRoZSBmaWxlc2l6ZSAoaXQgaXMgaW5zdGVhZCBzZXQgdG8KICAgIGFsbCBGJ3MpLiAgU28gaWYgd2UgZ2V0IGEgTFpNQSBpbWFnZSB0aGF0IGhhcyAtMSBmb3IgdGhlIDY0Yml0IGZpZWxkLAogICAgbGV0J3MganVzdCBhc3N1bWUgdGhhdCB0aGUgZGVjb21wcmVzc2VkIHNpemUgaXMgdW5rbm93biBhbmQgY29udGludWUgb24uCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGNjY2ZjMmFiNzc4NzdkYmRkMmFiZTI2YjI4ZDRjMWY0NjdmZWIwYzAKQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KRGF0ZToJVHVlIERlYyAxIDE3OjE2OjE5IDIwMDkgKzAxMDAKCiAgICBSRUFETUU6IFJlYXJyYW5nZSBwYXJhZ3JhcGhzIHRvIHJlZ2FpbiBsaW5lYXIgYXJyYW5nZW1lbnQuCgogICAgVHdvIGxhdGVyIGFkZGl0aW9ucyB0byB0aGUgQ29uZmlndXJhdGlvbiBPcHRpb24gc2VjdGlvbiB1bmZvcnR1bmF0ZWx5CiAgICBzcGxpdCB0aGUgZGVzY3JpcHRpb24gb2YgU2hvdyBib290IHByb2dyZXNzIGFuZCB0aGUgbGlzdCBvZiBpdHMgY2FsbCBvdXRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgoKY29tbWl0IGNkNTE0YWViOTk2ZTJmN2FlZmJlMWY3ODQ4MTk2NWQ5ZDA3NGFlZDQKQXV0aG9yOiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KRGF0ZToJVGh1IE5vdiAxOSAxMzoyMjo0NCAyMDA5ICswMTAwCgogICAgemxpYjogT3B0aW1pemUgZGVjb21wcmVzc2lvbgoKICAgIFRoaXMgcGF0Y2ggb3B0aW1pemVzIHRoZSBkaXJlY3QgY29weSBwcm9jZWR1cmUuCiAgICBVc2VzIGdldF91bmFsaWduZWQoKSBidXQgb25seSBpbiBvbmUgcGxhY2UuCiAgICBUaGUgY29weSBsb29wIGp1c3QgYWJvdmUgdGhpcyBvbmUgY2FuIGFsc28gdXNlIHRoaXMKICAgIG9wdGltaXphdGlvbiwgYnV0IEkgaGF2bid0IGRvbmUgc28gYXMgSSBoYXZlIG5vdCB0ZXN0ZWQgaWYgaXQKICAgIGlzIGEgd2luIHRoZXJlIHRvby4KICAgIE9uIG15IE1QQzgzMjEgdGhpcyBpcyBhYm91dCAxNyUgZmFzdGVyIG9uIG15IEpGRlMyIHJvb3QgRlMKICAgIHRoYW4gdGhlIG9yaWdpbmFsLiBObyBzcGVlZCB0ZXN0IGhhcyBiZWVuIHBlcmZvcm1lZCBpbiB1LWJvb3QuCgogICAgU2l6ZSBpbmNyZWFzZSBvbiBwcGM6IDQ4NCBieXRlcwoKICAgIFNpZ25lZC1vZmYtYnk6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgogICAgQWNrZWQtYnk6IFBldGVyIEtvcnNnYWFyZCA8amFjbWV0QHN1bnNpdGUuZGs+Cgpjb21taXQgMjBkZGU0OGJjYWRkODU2Yzg2YTkxZDU0NjM4MzFhMTBiZTQ2ZGI4MwpBdXRob3I6IFBldGVyIEtvcnNnYWFyZCA8amFjbWV0QHN1bnNpdGUuZGs+CkRhdGU6CVRodSBOb3YgMTkgMTE6Mzc6NTEgMjAwOSArMDEwMAoKICAgIGFkZCBsem9wIGRlY29tcHJlc3Npb24gc3VwcG9ydAoKICAgIEFkZCBsem9wIGRlY29tcHJlc3Npb24gc3VwcG9ydCB0byB0aGUgZXhpc3RpbmcgbHpvIGJpdHN0cmVhbSBoYW5kbGluZwogICAgKHRoaW5rIGd6aXAgdmVyc3VzIHpsaWIpLCBhbmQgc3VwcG9ydCBpdCBmb3IgdUltYWdlIGRlY29tcHJlc3Npb24gaWYKICAgIENPTkZJR19MWk8gaXMgZW5hYmxlZC4KCiAgICBMem9wIGRvZXNuJ3QgY29tcHJlc3MgYXMgZ29vZCBhcyBnemlwICh+MTAlIHdvcnNlKSwgYnV0IGRlY29tcHJlc3Npb24KICAgIGlzIHZlcnkgZmFzdCAofjAuN3MgZmFzdGVyIGhlcmUgb24gYSBzbG93IHBwYykuIFRoZSBsem9wIGRlY29tcHJlc3Npb24KICAgIGNvZGUgaXMgYmFzZWQgb24gQWxiaW4gVG9ubmVycmUncyByZWNlbnQgQVJNIExpbnV4IGx6byBzdXBwb3J0IHBhdGNoLgoKICAgIENjOiBhbGJpbi50b25uZXJyZUBmcmVlLWVsZWN0cm9ucy5jb20KICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIEtvcnNnYWFyZCA8amFjbWV0QHN1bnNpdGUuZGs+Cgpjb21taXQgYzgxMjk2YzE2ZmQ5ZDEyNDIyYzk5NjhjYzBmMWQ5YmY0NDBhN2Q4OApBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVR1ZSBOb3YgMjQgMTY6NDI6MTAgMjAwOSAtMDYwMAoKICAgIHRvb2xzL21raW1hZ2U6IFByaW50IEZJVCBpbWFnZSBjb250ZW50cyBhZnRlciBjcmVhdGlvbgoKICAgIFByZXZpb3VzbHksIHRoZXJlIHdhcyBubyBpbmRpY2F0aW9uIHRvIHRoZSB1c2VyIHRoYXQgYSBGSVQgaW1hZ2Ugd2FzCiAgICBzdWNjZXNzZnVsbHkgY3JlYXRlZCBhZnRlciBleGVjdXRpbmcgbWtpbWFnZS4gIEZvciBleGFtcGxlOgoKICAgICAgJCBta2ltYWdlIC1mIHVJbWFnZS5pdHMgdUltYWdlLml0YgogICAgICBEVEM6IGR0cy0+ZHRiICBvbiBmaWxlICJ1SW1hZ2UuaXRzIgoKICAgIEFkZGluZyBzb21lIGFkZGl0aW9uYWwgb3V0cHV0IGFmdGVyIGNyZWF0aW5nIGEgRklUIGltYWdlIGxldHMgdGhlIHVzZXIKICAgIGtub3cgZXhhY3RseSB3aGF0IGlzIGNvbnRhaW5lZCBpbiB0aGVpciBpbWFnZSwgZWc6CgogICAgICAkIG1raW1hZ2UgLWYgdUltYWdlLml0cyB1SW1hZ2UuaXRiCiAgICAgIERUQzogZHRzLT5kdGIgIG9uIGZpbGUgInVJbWFnZS5pdHMiCiAgICAgIEZJVCBkZXNjcmlwdGlvbjogTGludXgga2VybmVsIDIuNi4zMi1yYzctMDAyMDEtZzc1NTBkNmYtZGlydHkKICAgICAgQ3JlYXRlZDoJICAgICAgIFR1ZSBOb3YgMjQgMTU6NDM6MDEgMjAwOQogICAgICAgSW1hZ2UgMCAoa2VybmVsQDEpCglEZXNjcmlwdGlvbjogIExpbnV4IEtlcm5lbCAyLjYuMzItcmM3LTAwMjAxLWc3NTUwZDZmLWRpcnR5CglUeXBlOgkgICAgICBLZXJuZWwgSW1hZ2UKCUNvbXByZXNzaW9uOiAgZ3ppcCBjb21wcmVzc2VkCglEYXRhIFNpemU6ICAgIDI3MDczMTEgQnl0ZXMgPSAyNjQzLjg2IGtCID0gMi41OCBNQgoJQXJjaGl0ZWN0dXJlOiBQb3dlclBDCglPUzoJICAgICAgTGludXgKCUxvYWQgQWRkcmVzczogMHgwMDAwMDAwMAoJRW50cnkgUG9pbnQ6ICAweDAwMDAwMDAwCglIYXNoIGFsZ286ICAgIGNyYzMyCglIYXNoIHZhbHVlOiAgIGVmZTA3OThiCglIYXNoIGFsZ286ICAgIHNoYTEKCUhhc2ggdmFsdWU6ICAgZWNhZmJhOGM5NTY4NGYyYzhmZWM2N2UzM2M0MWVjODhkZjE1MzRkNwogICAgICAgSW1hZ2UgMSAoZmR0QDEpCglEZXNjcmlwdGlvbjogIEZsYXR0ZW5lZCBEZXZpY2UgVHJlZSBibG9iCglUeXBlOgkgICAgICBGbGF0IERldmljZSBUcmVlCglDb21wcmVzc2lvbjogIHVuY29tcHJlc3NlZAoJRGF0YSBTaXplOiAgICAxMjI4OCBCeXRlcyA9IDEyLjAwIGtCID0gMC4wMSBNQgoJQXJjaGl0ZWN0dXJlOiBQb3dlclBDCglIYXNoIGFsZ286ICAgIGNyYzMyCglIYXNoIHZhbHVlOiAgIGE1Y2FiNjc2CglIYXNoIGFsZ286ICAgIHNoYTEKCUhhc2ggdmFsdWU6ICAgMTY4NzIyYjEzZTMwNTI4M2NmZDY2MDNkZmU4MjQ4Y2MzMjlhZGVhNgogICAgICAgRGVmYXVsdCBDb25maWd1cmF0aW9uOiAnY29uZmlnQDEnCiAgICAgICBDb25maWd1cmF0aW9uIDAgKGNvbmZpZ0AxKQoJRGVzY3JpcHRpb246ICBEZWZhdWx0IExpbnV4IGtlcm5lbAoJS2VybmVsOiAgICAgICBrZXJuZWxAMQoJRkRUOgkgICAgICBmZHRAMQoKICAgIFRoaXMgYnJpbmdzIHRoZSBiZWhhdmlvciBvZiBjcmVhdGluZyBhIEZJVCBpbWFnZSBpbiBsaW5lIHdpdGggY3JlYXRpbmcgYQogICAgc3RhbmRhcmQgdUltYWdlLCB3aGljaCBhbHNvIHByaW50cyBvdXQgdGhlIHVJbWFnZSBjb250ZW50cyBhZnRlcgogICAgY3JlYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCA4ZTFjODk2NjNjYzg3OTZiODU1ODg5MTAwNDZlMDNiMzg4YTc1OTdjCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJVHVlIE5vdiAyNCAxNjo0MjowOSAyMDA5IC0wNjAwCgogICAgdG9vbHMvZml0X2ltYWdlLmM6IFJlbW92ZSB1bnVzZWQgZml0X3NldF9oZWFkZXIoKQoKICAgIFRoZSBGSVQgZml0X3NldF9oZWFkZXIoKSBmdW5jdGlvbiB3YXMgY29waWVkIGZyb20gdGhlIHN0YW5kYXJkIHVJbWFnZSdzCiAgICBpbWFnZV9zZXRfaGVhZGVyKCkgZnVuY3Rpb24gZHVyaW5nIG1raW1hZ2UgcmVvcmdhbml6YXRpb24uCUhvd2V2ZXIsIHRoZQogICAgZml0X3NldF9oZWFkZXIoKSBmdW5jdGlvbiBpcyBub3QgdXNlZCBzaW5jZSBGSVQgaW1hZ2VzIHVzZSBhIHN0YW5kYXJkCiAgICBkZXZpY2UgdHJlZSBibG9iIGhlYWRlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDFhOTlkZTJjYjRkMDhlYjNiZjlmYjNmNjBhOWQ1MzMxNTBkZThjMGUKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglUdWUgTm92IDI0IDE2OjQyOjA4IDIwMDkgLTA2MDAKCiAgICB0b29scy9ta2ltYWdlOiBBc3N1bWUgRkRUIGltYWdlIHR5cGUgZm9yIEZJVCBpbWFnZXMKCiAgICBXaGVuIGJ1aWxkaW5nIGEgRmxhdHRlbmVkIEltYWdlIFRyZWUgKEZJVCkgdGhlIGltYWdlIHR5cGUgbmVlZHMgdG8gYmUKICAgICJmbGF0X2R0Ii4JQ29tbWl0IDg5YTRkNmIxMmZkNjM5NDg5OGI4YTQ1NGNiYWJlYWYxY2Q1OWJhZTUgaW50cm9kdWNlZCBhCiAgICByZWdyZXNzaW9uIHdoaWNoIGNhdXNlZCB0aGUgdXNlciB0byBuZWVkIHRvIHNwZWNpZnkgdGhlICItVCBmbGF0X2R0IgogICAgcGFyYW1ldGVyIG9uIHRoZSBjb21tYW5kIGxpbmUgd2hlbiBidWlsZGluZyBhIEZJVCBpbWFnZS4gIFRoZSAiLVQKICAgIGZsYXRfZHQiIHBhcmFtZXRlciBzaG91bGQgbm90IGJlIG5lZWRlZCBhbmQgaXMgYXQgb2RkcyB3aXRoIHRoZSBjdXJyZW50CiAgICBGSVQgaW1hZ2UgZG9jdW1lbnRhdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDNlYjkwYmFkNjUxZmFiMzljZmZiYTc1MGVjNDQyMWE5YzAxZDYwZTcKQXV0aG9yOiBJbmdvIHZhbiBMaWwgPGluZ3VpbkBnbXguZGU+CkRhdGU6CVR1ZSBOb3YgMjQgMTQ6MDk6MjEgMjAwOSArMDEwMAoKICAgIEdlbmVyaWMgdWRlbGF5KCkgd2l0aCB3YXRjaGRvZyBzdXBwb3J0CgogICAgQWNjb3JkaW5nIHRvIHRoZSBQUEMgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIHRoZSB1ZGVsYXkoKSBmdW5jdGlvbiBpcwogICAgcmVzcG9uc2libGUgZm9yIHJlc2V0dGluZyB0aGUgd2F0Y2hkb2cgdGltZXIgYXMgZnJlcXVlbnRseSBhcyBuZWVkZWQuCiAgICBNb3N0IG90aGVyIGFyY2hpdGVjdHVyZXMgZG8gbm90IG1lZXQgdGhhdCByZXF1aXJlbWVudCwgc28gbG9uZy1ydW5uaW5nCiAgICBvcGVyYXRpb25zIG1pZ2h0IHJlc3VsdCBpbiBhIHdhdGNoZG9nIHJlc2V0LgoKICAgIFRoaXMgcGF0Y2ggYWRkcyBhIGdlbmVyaWMgdWRlbGF5KCkgZnVuY3Rpb24gd2hpY2ggdGFrZXMgY2FyZSBvZgogICAgcmVzZXR0aW5nIHRoZSB3YXRjaGRvZyBiZWZvcmUgY2FsbGluZyBhbiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMKICAgIF9fdWRlbGF5KCkuCgogICAgU2lnbmVkLW9mZi1ieTogSW5nbyB2YW4gTGlsIDxpbmd1aW5AZ214LmRlPgoKY29tbWl0IDFjNDA5YmM3MTAxYTI0ZWNkNDdhMTNhNGU4NTE4NDVkNjZkYzIzY2UKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglUdWUgTm92IDI0IDIwOjA0OjIxIDIwMDkgKzExMDAKCiAgICBpMzg2OiBGaW5hbCBSZWxvY2F0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KCmNvbW1pdCBjYWJlNTc5NDgwM2ZiZTE4YmVkYWMyZDljN2YyNDE3YTBmYTk1ZWMxCkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJVHVlIE5vdiAyNCAyMDowNDoyMCAyMDA5ICsxMTAwCgogICAgaTM4NjogTW92ZSByZWZlcmVuY2VzIHRvIGxpbmsgc2NyaXB0IGV4cG9ydHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgoKY29tbWl0IDBmYzFiNDllY2JkN2VjNzM3MWY5ZWRlMDYwMGU0ZmQyOGNlYzdmMzMKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglUdWUgTm92IDI0IDIwOjA0OjE5IDIwMDkgKzExMDAKCiAgICBpMzg2OiBSZW1vdmUgaW5saW5lIGFzbSBzeW1ib2xzIGZyb20gLmR5bnN5bQoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Cgpjb21taXQgNTY0YTk5ODRiZGJmODZhMDJjZjRmMGQ4NDg5MzNhOWZmZjRhMWQxOApBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CVR1ZSBOb3YgMjQgMjA6MDQ6MTggMjAwOSArMTEwMAoKICAgIGkzODY6IFJlYXJyYW5nZSBJbnRlcnVwdCBIYW5kbGluZwoKICAgIEluIHByZXBlcmF0aW9uIGZvciBmdWxsIHJlbG9jYXRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgoKY29tbWl0IDI3ZjEzMDc1YTY1OWRhMDQ2MzcyZGZlMjQ5ZDgwOGYyZjZkZGI0MzIKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglUdWUgTm92IDI0IDIwOjA0OjE3IDIwMDkgKzExMDAKCiAgICBpMzg2OiBGaXggcmFjZSBjb25kaXRpb24gd2hlbiB1c2luZyBTQzUyMCB0aW1lcnMKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgoKY29tbWl0IDE0MWE2MmNjMTJiZmJhYjQ5ZjBmNDRhMzk0NTE4YTM2MGRjZGRhZDgKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglUdWUgTm92IDI0IDIwOjA0OjE2IDIwMDkgKzExMDAKCiAgICBpMzg2OiBGaXggZ2xvYmFsIGxhYmVsIGluIGlubGluZSBhc20gY29tcGlsZSBlcnJvcgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Cgpjb21taXQgNGVlNGU0MTNiYWE4ZTk1MWUzYzQyYzE3YTgwODU3ODg2N2E2MzU3MgpBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CVR1ZSBOb3YgMjQgMjA6MDQ6MTUgMjAwOSArMTEwMAoKICAgIGkzODY6IFJlb3JkZXIgc291cmNlIG9iamVjdHMgaW4gbGliX2kzODYgTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgoKY29tbWl0IGFlYTE0NDIxYzUyZjMxZTM5ODM3YWEyODkwZTA3ZTljNzBlZTYxZmQKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglUdWUgTm92IDI0IDIwOjA0OjE0IDIwMDkgKzExMDAKCiAgICBpMzg2OiBGaXggbGluayBjb2xsaXNpb25zIHJlc3VsdGluZyBmcm9tIGdjYzQuNC4xIHVwZ3JhZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgoKY29tbWl0IGI0ZmVlYjRlOGExZDkxMjRiYWUzOTk4NWE5N2I5OWQwOGUwNjE4NmQKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglUdWUgTm92IDI0IDIwOjA0OjEzIDIwMDkgKzExMDAKCiAgICBpMzg2OiBGaXggbWFsbG9jIGluaXRpYWxpemF0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KCmNvbW1pdCBjNzRiZmNlMGZiMjBlYzRkMDE4MDlmYTA1NjYyNjM4OTQ5MjM0NjdiCkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJVHVlIE5vdiAyNCAyMDowNDoxMiAyMDA5ICsxMTAwCgogICAgaTM4NjogRml4IGRsbWFsbG9jIGNvbXBpbGUgd2FybmluZwoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Cgpjb21taXQgMjcwNzM3YWNjYTIxZjM5MzlmODE0ZGU1ZGNmMzUwYTFjM2Q4MGQ4MwpBdXRob3I6IE1pY2hhZWwgQnJhbmR0IDxNaWNoYWVsLkJyYW5kdEBlbXN5c28uZGU+CkRhdGU6CVN1biBOb3YgMjIgMTQ6MTM6MjcgMjAwOSArMDEwMAoKICAgIEVYVDJGUzogZml4IGlub2RlIHNpemUgZm9yIGV4dDJmcyByZXYjMAoKICAgIGV4dGZzLmMgYXNzdW1lcyB0aGF0IHRoZXJlIGlzIGFsd2F5cyBhIHZhbGlkIGlub2RlX3NpemUgZmllbGQgaW4gdGhlCiAgICBzdXBlcmJsb2NrLiBCdXQgdGhpcyBpcyBub3QgdHJ1ZSBmb3IgZXh0MmZzIHJldiAwLiBTdWNoIGV4dDJmcyBpbWFnZXMKICAgIGFyZSBmb3IgaW5zdGFuY2UgZ2VuZXJhdGVkIGJ5IGdlbmV4dDJmcy4gU3ltcHRvbXMgb24gQVJNIG1hY2hpbmVzIGFyZQogICAgbWVzc2FnZXMgbGlrZTogInJhaXNlOiBTaWduYWwgIyA4IGNhdWdodCI7IG9uIFBvd2VyUEMgImV4dDJscyIgd2lsbAogICAgcHJpbnQgbm90aGluZy4KICAgIFRoaXMgZml4IGNoZWNrcyBmb3IgcmV2IDAgYW5kIHVzZXMgdGhlbiAxMjggYnl0ZXMgYXMgaW5vZGUgc2l6ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEJyYW5kdCA8TWljaGFlbC5CcmFuZHRAZW1zeXNvLmRlPgogICAgVGVzdGVkIG9uOiBUUU01MjAwUwogICAgVGVzdGVkLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBiY2IzMjRkNjhmNzk1NWMxMTM2ZGFmYzk0NGViNTVkYjhlYmFhNjAxCkF1dGhvcjogUm9iZXJ0IFAuIEouIERheSA8cnBqZGF5QGNyYXNoY291cnNlLmNhPgpEYXRlOglUaHUgTm92IDE5IDExOjAwOjI4IDIwMDkgLTA1MDAKCiAgICBSZW1vdmUgc3VwZXJmbHVvdXMgcHJlcHJvY2Vzc29yIHRlc3RzIGZyb20gc29tZSBjbWRfKi5jIGZpbGVzLgoKICAgIEEgc21hbGwgbnVtYmVyIG9mIGNvbW1vbi9jbWRfKi5jIGZpbGVzIGNvbnRhaW4gcHJlcHJvY2Vzc29yIHRlc3RzIHRoYXQKICAgIGFyZSBhcHBhcmVudGx5IHN1cGVyZmx1b3VzIHNpbmNlIHRob3NlIHNhbWUgdGVzdHMgYXJlIHVzZWQgaW4gdGhlCiAgICBNYWtlZmlsZSB0byBjb250cm9sIHRoZSBjb21waWxhdGlvbiBvZiB0aG9zZSBmaWxlcy4gIFRob3NlIHRlc3RzIGFyZQogICAgY2xlYXJseSByZWR1bmRhbnQgYXMgbG9uZyBhcyB0aGV5IHN1cnJvdW5kIHRoZSBlbnRpcmV0eSBvZiB0aGUgc291cmNlCiAgICBpbiB0aG9zZSBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgUC4gSi4gRGF5IDxycGpkYXlAY3Jhc2hjb3Vyc2UuY2E+Cgpjb21taXQgM2VlOGMxMjA3MWYwZTNiZGRhMjUxMjViNjNjOWQzZmQ1NGE3YzlkOApBdXRob3I6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgpEYXRlOglUaHUgTm92IDE5IDEzOjQ0OjE2IDIwMDkgKzAxMDAKCiAgICBjcmMzMjogSW1wbC4gbGludXggb3B0aW1pemVkIGNyYzMyKCkKCiAgICBQb3J0ZWQgb3ZlciB0aGUgbW9yZSBlZmZpY2llbnQgbGludXggY3JjMzIoKSBmdW5jdGlvbi4KICAgIEEgcXVpY2sgY29tcGFyc2lvbiBvbiBwcGM6CiAgICBBZnRlciBjaGFuZ2luZyB0aGUgb2xkIGNyYzMyIHRvIGRvIDQgYnl0ZXMgaW4gdGhlCiAgICBpbm5lciBsb29wIHRvIGJlIGFibGUgdG8gY29tcGFyZSB3aXRoIG5ldyB2ZXJzaW9uIG9uZSBjYW4gbm90ZToKICAgIC0gb2xkIGlubmVyIGxvb3AgaGFzIDYxIGluc24sIG5ldyBoYXMgMTkgaW5zbi4KICAgIC0gbmV3IGNyYzMyIGRvZXMgb25lIDMyIGJpdCBsb2FkIG9mIGRhdGEgdG8gY3JjIHdoaWxlCiAgICAgIHRoZSBvbGQgZG9lcyBmb3VyIDggYml0cyBsb2Fkcy4KICAgIC0gc2l6ZSBpcyBiaXQgYmlnZ2VyIGZvciB0aGUgbmV3IGNyYzMyOgogICAgICAxMzkyKG9sZCkgMTQxNihuZXcpIG9mIHRleHQuIFRoZSBpcyBiZWNhdXNlIHRoZSBuZXcgdmVyc2lvbgogICAgICBzaGFyZXMgY29kZSB3aXRoIGNyYzMyX25vX2NvbXAoKSBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIGNvZGUuCiAgICAtIGFib3V0IDMzJSBmYXN0ZXIgb24gcHBjOgogICAgICBOZXcgPiBjcmMgMCAweGZmZmZmZmYgLT4gMzkgc2VjcwogICAgICBPbGQgPiBjcmMgMCAweGZmZmZmZmYgLT4gNjAgc2VjcwoKICAgIFNpZ25lZC1vZmYtYnk6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgoKY29tbWl0IGFkNTMyMjYxNTZmYTY0YjZkMDRjMGQxZDZlOTFlMDk5NzljYmVhMTUKQXV0aG9yOiBSb2JlcnQgUC4gSi4gRGF5IDxycGpkYXlAY3Jhc2hjb3Vyc2UuY2E+CkRhdGU6CVR1ZSBOb3YgMTcgMDE6NTk6MjkgMjAwOSAtMDUwMAoKICAgIFJFQURNRTogVXBkYXRlIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzLgoKICAgIEJyaW5nIHRoZSBkaXJlY3RvcnkgbGlzdGluZyBtb3JlIGludG8gbGluZSB3aXRoIGN1cnJlbnQgY29udGVudC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgUC4gSi4gRGF5IDxycGpkYXlAY3Jhc2hjb3Vyc2UuY2E+Cgpjb21taXQgYmQzNzg0ZGY5NGJmZWNhNDNmYmYzNDA5NGRmOWNiMWJkM2VjY2EzYgpBdXRob3I6IFByYXRhcCBDaGFuZHUgPHByYXRhcC5ycmtlQGdtYWlsLmNvbT4KRGF0ZToJVGh1IE5vdiAxMiAxOToyODoyNSAyMDA5ICswNTMwCgogICAgUmVtb3ZlcyBkZWFkIGNvZGUgaW4gdGhlIGZpbGUgY29tbW9uL2NtZF9pMmMuYwoKICAgIFRoZXJlIGlzIHNvbWUgZGVhZCBjb2RlIGVuY2xvc2VkIGJ5ICNpZiAwIC4uLi4gI2VuZGlmIGluIHRoZSBmaWxlCiAgICBjb21tb24vY21kX2kyYy5jCiAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGRlYWQgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQcmF0YXAgQ2hhbmR1IDxwcmF0YXAucnJrZUBnbWFpbC5jb20+Cgpjb21taXQgNjRhNDgwNjAxYTU2MTRiNDQxZGU2OTJhZTE1YTYyYzUxZTBiYjM4MQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIE5vdiAxMSAxNzo1MTo1NiAyMDA5IC0wNTAwCgogICAgc21jOTExMTFfZWVwcm9tOiBkcm9wIENPTkZJRyBzdHViIHByb3RlY3Rpb24KCiAgICBTaW5jZSB0aGUgTWFrZWZpbGUgbm93IGNvbnRyb2xzIHRoZSBjb21waWxhdGlvbiBvZiB0aGlzLCB0aGVyZSBpcyBubyBuZWVkCiAgICBmb3IgQ09ORklHIGNoZWNraW5nIG5vciB0aGUgc3R1YiBmdW5jdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZjNhN2JkZGMwNmM5MjdjMzZhMWE5OWE5NzEzMTI5OTQ3OWVmMjA3YQpBdXRob3I6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KRGF0ZToJV2VkIE5vdiAxMSAxOTo1Njo1OCAyMDA5ICswMTAwCgogICAgUlRDOiBGaXggcmV0dXJuIGNvZGUgaW4gTUMxMzc4MyBSVEMgZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KCmNvbW1pdCBkNTJlM2UwMTc2YTc0YzMwNTQ5MjUxZTE2YzVjMDBhMzYzYzU0NGQyCkF1dGhvcjogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgpEYXRlOglXZWQgTm92IDExIDE5OjU2OjM2IDIwMDkgKzAxMDAKCiAgICBjbWRfZGF0ZTogRml4IHNwZWxsaW5nIGluIGVycm9yIG1lc3NhZ2UuCgogICAgU2lnbmVkLW9mZi1ieTogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgoKY29tbWl0IGMyNTMxMjIzOTU3NTNhYmI5ZTUzMWQ4OTA2YzUyNjVkYzg4MDNmYjEKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglXZWQgTm92IDExIDEwOjM2OjI4IDIwMDkgLTA2MDAKCiAgICBNb3ZlIGRvX2lycWluZm8oKSB0byBjb21tb24vY21kX2lycS5jCgogICAgY21kX2lycS5jIGlzIGEgbXVjaCBiZXR0ZXIgaG9tZSBhbmQgaXQgaXMgYWxyZWFkeSBjb25kaXRpb25hbGx5CiAgICBjb21waWxlZCBiYXNlZCBvbiBDT05GSUdfQ01EX0lSUS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IGE1ZGQ0ZGM2NGZlNjhlNTQ5YzVmZmNmNmEwNDgyODFiNWJhOTQ3NTIKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglXZWQgTm92IDExIDEwOjM2OjE5IDIwMDkgLTA2MDAKCiAgICBjbWRfbGljZW5zZTogUmVtb3ZlIHVubmVlZGVkICNpZmRlZiBDT05GSUdfQ01EX0xJQ0VOU0UKCiAgICBjbWRfbGljZW5zZSBpcyBhbHJlYWR5IGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgYXQgdGhlIE1ha2VmaWxlLWxldmVsLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgMDYwMTUxNDZhMTVhZGM3NDU1NDQwYzQ5MWQ1NDNmNmE4MDkxNTUxZApBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBOb3YgOSAxNToxODo1MiAyMDA5IC0wNjAwCgogICAgbTQxdDExOiBSZW1vdmUgdW51c2VkIGZ1bmN0aW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgOWVmNzg1MTFjZGEzOTk4N2U1ZmMxMGZlYmYzODZmZDE5ZjU4ZWNmNwpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBOb3YgOSAxNToxNzo1MCAyMDA5IC0wNjAwCgogICAgY2lyY2J1ZjogTW92ZSB0byBsaWJfZ2VuZXJpYyBhbmQgY29uZGl0aW9uYWxseSBjb21waWxlCgogICAgY2lyY2J1ZiBjb3VsZCBiZSB1c2VkIGFzIGEgZ2VuZXJpYyBsaWJyYXJ5IGFuZCBpcyBvbmx5IGN1cnJlbnRseQogICAgbmVlZGVkIHdoZW4gQ09ORklHX1VTQl9UVFkgaXMgZGVmaW5lZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDYwNGY3Y2U1NWFkNzQ2OTRlZjg3NDNhZDJlOTk5MzNkYzAyNjVlNDYKQXV0aG9yOiBTYW5qZWV2IFByZW1pIDxwcmVtaUB0aS5jb20+CkRhdGU6CU1vbiBOb3YgOSAyMjo0MzowMCAyMDA5ICswNTMwCgogICAgRml4IGJ1aWxkIGZhaWx1cmUgaW4gZXhhbXBsZXMvc3RhbmRhbG9uZQoKICAgIFNvbWUgdmVyc2lvbnMgb2YgJ21ha2UnIGRvIG5vdCBoYW5kbGUgdHJhaWxpbmcgd2hpdGUtc3BhY2VzCiAgICBwcm9wZXJseS4gVHJhaWxpbmcgc3BhY2VzIGluIEVMRiBjYXVzZXMgYSAnZmFrZScgc291cmNlIHRvCiAgICBiZSBhZGRlZCB0byB0aGUgdmFyaWFibGUgQ09CSlM7IGxlYWRpbmcgdG8gYnVpbGQgZmFpbHVyZQogICAgKGxpc3RlZCBiZWxvdykuIFRoZSBwcm9ibGVtIHdhcyBmb3VuZCB3aXRoIEdOVSBNYWtlIDMuODAuCgogICAgVXNpbmcgdGV4dC1mdW5jdGlvbiAnc3RyaXAnIGFzIGEgd29ya2Fyb3VuZCBmb3IgdGhlIHByb2JsZW0uCgogICAgbWFrZVsxXTogRW50ZXJpbmcgZGlyZWN0b3J5IGAvaG9tZS9zYW5qZWV2L3UtYm9vdC9leGFtcGxlcy9zdGFuZGFsb25lJwogICAgYXJtLW5vbmUtbGludXgtZ251ZWFiaS1nY2MgLWcgIC1PcwkgLWZuby1jb21tb24gLWZmaXhlZC1yOCAtbXNvZnQtZmxvYXQKICAgIC1EX19LRVJORUxfXyAtRFRFWFRfQkFTRT0weDgwZTgwMDAwIC1JL2hvbWUvc2FuamVldi91LWJvb3QvaW5jbHVkZQogICAgLWZuby1idWlsdGluIC1mZnJlZXN0YW5kaW5nIC1ub3N0ZGluYyAtaXN5c3RlbSAvb3B0L2NvZGVzb3VyY2VyeS8yMDA5cTEtCiAgICAyMDMvYmluLy4uL2xpYi9nY2MvYXJtLW5vbmUtbGludXgtZ251ZWFiaS80LjMuMy9pbmNsdWRlIC1waXBlICAtRENPTkZJR18KICAgIEFSTSAtRF9fQVJNX18gLW1hcm0gIC1tYWJpPWFhcGNzLWxpbnV4IC1tbm8tdGh1bWItaW50ZXJ3b3JrIC1tYXJjaD1hcm12NQogICAgLVdhbGwgLVdzdHJpY3QtcHJvdG90eXBlcyAtZm5vLXN0YWNrLXByb3RlY3RvciAtZyAgLU9zICAgLWZuby1jb21tb24gLWZmCiAgICBpeGVkLXI4IC1tc29mdC1mbG9hdCAgIC1EX19LRVJORUxfXyAtRFRFWFRfQkFTRT0weDgwZTgwMDAwIC1JL2hvbWUvc2FuamUKICAgIGV2L3UtYm9vdC9pbmNsdWRlIC1mbm8tYnVpbHRpbiAtZmZyZWVzdGFuZGluZyAtbm9zdGRpbmMgLWlzeXN0ZW0gL29wdC9jbwogICAgZGVzb3VyY2VyeS8yMDA5cTEtMjAzL2Jpbi8uLi9saWIvZ2NjL2FybS1ub25lLWxpbnV4LWdudWVhYmkvNC4zLjMvaW5jbHVkCiAgICBlIC1waXBlICAtRENPTkZJR19BUk0gLURfX0FSTV9fIC1tYXJtICAtbWFiaT1hYXBjcy1saW51eCAtbW5vLXRodW1iLWludGUKICAgIHJ3b3JrIC1tYXJjaD1hcm12NSAtSS4uIC1Cc3RhdGljIC1UIHUtYm9vdC5sZHMgIC1UdGV4dCAweDgwZTgwMDAwIC1vIC5jCiAgICBhcm0tbm9uZS1saW51eC1nbnVlYWJpLWdjYzogbm8gaW5wdXQgZmlsZXMKICAgIG1ha2VbMV06ICoqKiBbLmNdIEVycm9yIDEKICAgIG1ha2VbMV06IExlYXZpbmcgZGlyZWN0b3J5IGAvaG9tZS9zYW5qZWV2L3UtYm9vdC9leGFtcGxlcy9zdGFuZGFsb25lJwogICAgbWFrZTogKioqIFtleGFtcGxlcy9zdGFuZGFsb25lXSBFcnJvciAyCiAgICBwcmVtaSAjCgogICAgU2lnbmVkLW9mZi1ieTogU2FuamVldiBQcmVtaSA8cHJlbWlAdGkuY29tPgoKICAgIEZpeGVkIHR5cG8gKHMvRWxGL0VMRi8pLgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBkOTg0ZmVkMDY4YjNiZWM4YTdlZGFmN2EzZGU3MTQ3OWFiZGUwODBhCkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBOb3YgNCAxODo0MTo0MSAyMDA5IC0wNjAwCgogICAgbWFrZWZpbGVzOiBmaXhlcyBmb3IgYnVpbGRpbmcgYnVpbGQgdG9vbHMKCiAgICBDdXJyZW50bHksIHNvbWUgb2YgdGhlIHRvb2xzIGluc3RlYWQgc2V0IENDIHRvIGJlIEhPU1RDQyBpbiBvcmRlciB0byByZS11c2UKICAgIHNvbWUgcGF0dGVybiBydWxlcyAtLSBidXQgdGhpcyBmYWlscyB3aGVuIHRoZSB1c2VyIG92ZXJyaWRlcyBDQyBvbiB0aGUgbWFrZQogICAgY29tbWFuZCBsaW5lLiAgQWxzbywgdGhlIEhPU1RDRkxBR1MgaW4gdG9vbHMvTWFrZWZpbGUgYXJlIGN1cnJlbnRseSBub3QKICAgIGJlaW5nIHVzZWQgYmVjYXVzZSBjb25maWcubWsgb3ZlcndyaXRlcyB0aGVtLgoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdGF0aWMgcGF0dGVybiBydWxlcyBmb3IgZmlsZXMgdGhhdCBoYXZlIGJlZW4gcmVxdWVzdGVkIHRvCiAgICBiZSBidWlsdCB3aXRoIHRoZSBuYXRpdmUgY29tcGlsZXIgdXNpbmcgJChIT1NUU1JDUykgYW5kICQoSE9TVE9CSlMpLCBhbmQKICAgIGNvbnZlcnRzIHRoZSB0b29scyB0byB1c2UgdGhlbS4KCiAgICBJdCByZXN0b3JlcyBlYXN5bG9nbyB0byB1c2luZyB0aGUgaG9zdCBjb21waWxlciwgd2hpY2ggd2FzIGJyb2tlbiBieSBjb21taXQKICAgIDM4ZDI5OWMyZGI4MWJkODg5YzYwMWI1ZGZjMTJjNGU4M2VmODMzMzMgKGlmIHRoaXMgd2FzIGFuIGludGVudGlvbmFsIGNoYW5nZSwKICAgIHBsZWFzZSBsZXQgbWUga25vdyAtLSBidXQgaXQgc2VlbXMgdG8gYmUgYSBidWlsZCB0b29sKS4KCiAgICBJdCByZXN0b3JlcyAtcGVkYW50aWMgYW5kIHRoZSBzcGVjaWFsIGZsYWdzIGZvciBkYXJ3aW4gYW5kIGN5Z3dpbiB0aGF0IHdlcmUKICAgIHJlcXVlc3RlZCBpbiB0b29scy9tYWtlZmlsZSAoYnV0IGtlZXBzIHRoZSBmbGFncyBhZGRlZCBieSBjb25maWcubWspIC0tCiAgICBob3BlZnVsbHkgc29tZW9uZSBjYW4gdGVzdCB0aGlzIG9uIHRob3NlIHBsYXRmb3Jtcy4gIEl0IG5vIGxvbmdlcgogICAgY29uZGl0aW9uYWxpemVzIC1wZWRhbnRpYyBvbiBub3QgYmVpbmcgZGFyd2luOyBpdCB3YXNuJ3QgY2xlYXIgdGhhdCB0aGF0IHdhcwogICAgaW50ZW50aW9uYWwsIGFuZCB1bmxlc3MgdGhlcmUncyBhIHJlYWwgcHJvYmxlbSBpdCdzIGp1c3QgaW52aXRpbmcgcGVvcGxlIHRvCiAgICBjb250cmlidXRlIG5vbi1wZWRhbnRpYyBwYXRjaGVzIHRvIHRob3NlIGZpbGVzIChJJ20gbm90IGEgZmFuIG9mIC1wZWRhbnRpYwogICAgcGVyc29uYWxseSwgYnV0IGlmIGl0J3Mgb24gZm9yIG9uZSBwbGF0Zm9ybSBpdCBzaG91bGQgYmUgb24gZm9yIGFsbCkuCgogICAgSE9TVF9MREZMQUdTIGlzIHJlbmFtZWQgSE9TVExERkxBR1MgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlIHByZXZpb3VzCiAgICBIT1NUX0NGTEFHUyB0byBIT1NUQ0ZMQUdTIHJlbmFtZS4gIEEgbmV3IEhPU1RDRkxBR1NfTk9QRUQgaXMgbWFkZSBhdmFpbGFibGUKICAgIGZvciB0aG9zZSBmaWxlcyB3aGljaCBjdXJyZW50bHkgY2Fubm90IGJlIGJ1aWx0IHdpdGggLXBlZGFudGljLCBhbmQgcmVwbGFjZXMKICAgIHRoZSBvbGQgRklUX0NGTEFHUy4KCiAgICBpbWxzIG5vdyB1c2VzIHRoZSBjcm9zcyBjb21waWxlciBwcm9wZXJseSwgcmF0aGVyIHRoYW4gYnkgdHJ5aW5nIHRvCiAgICByZWNvbnN0cnVjdCBDQyB1c2luZyB0aGUgdHlwb2VkICQoQ1JPU1NfQ09NUElMRVIpLgoKICAgIGVudmNyYy5jIGlzIG5vdyBkZXBlbmRlbmN5LXByb2Nlc3NlZCB1bmNvbmRpdGlvbmFsbHkgLS0gcHJldmlvdXNseSBpdCB3b3VsZAogICAgYmUgYnVpbHQgd2l0aG91dCBiZWluZyBvbiAoSE9TVClTUkNTIGlmIENPTkZJR19FTlZfSVNfRU1CRURERUQgd2FzIG5vdAogICAgc2VsZWN0ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYWY4NjA5NjJiNTQ0ZGRmMzIzYzRmZjY4NDU0ZjAwZDMxZTQ0ZGYwYQpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIE5vdiA0IDE4OjMwOjA4IDIwMDkgLTA2MDAKCiAgICA4NXh4OiBSZW1vdmUgdW51c2VkIENPTkZJR19BU1NVTUVfQU1EX0ZMQVNIIGZyb20gY29uZmlnIGZpbGVzCgogICAgQSBidW5jaCBvZiB0aGUgODV4eCBib2FyZHMgaGF2ZSB0aGlzIGNydWZ0IGluIHRoZW0gLSBpdCdzIG5vdCB1c2VkCiAgICBhbnl3aGVyZS4gIERlbGV0ZSBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYmY0NGYzZjMyN2FjZGRiYTIwMmZmNjdmNzAxOTI5MjZlYTQ3ZGZkMQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIE5vdiA0IDE2OjM0OjQyIDIwMDkgLTA1MDAKCiAgICBleHBvcnRzOiByZXdyaXRlIGp1bXAgdGFibGUgaW5pdAoKICAgIFRoZSBjdXJyZW50IGp1bXAgdGFibGUgaW5pdCBmYWlscyB0byBpbml0aWFsaXplIGEgYnVuY2ggb2YgZXhwb3J0ZWQKICAgIHN5bWJvbHMgKGZvcmNlZW52L2RvX3Jlc2V0L2V0Yy4uLikuICBSYXRoZXIgdGhhbiBmaXgganVzdCB0aGVzZSBmZXcKICAgIG1pc3NpbmcgcGllY2VzLCByZXdyaXRlIHRoZSBjb2RlIHRvIHV0aWxpemUgdGhlIGV4aXN0aW5nIGxpc3Qgb2YKICAgIGV4cG9ydGVkIHN5bWJvbHMgLS0gX2V4cG9ydHMuaC4gIFNpbmNlIGV2ZXJ5IGV4cG9ydGVkIHN5bWJvbCBoYXMgdG8KICAgIGJlIGxpc3RlZCBpbiB0aGlzIGhlYWRlciwgaXQgbWFrZXMgc2Vuc2UgdG8gdXNlIGl0IHNvIHRoYXQgd2Ugb25seQogICAgZXZlciBoYXZlIG9uZSBsaXN0IHRoYXQgbmVlZHMgdG8gYmUgdXBkYXRlZCBhbmQgdGhpbmdzIGNhbid0IGZhbGwKICAgIG91dCBvZiBzeW5jIGFnYWluLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBkZWVjMWZiZDRmNzA0ZGRlZDJlNjY4YmI5ZTM2ODYzMTk4MWVhMTM5CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIERlYyAyIDIyOjI2OjMwIDIwMDkgKzAxMDAKCiAgICBNQUlOVEFJTkVSUzogdXBkYXRlIHJlc3BvbnNpYmxlIGZvciBNUEM4NXh4Lzg2eHgKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgQ2M6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBDYzogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDcxNjM2ZmE3YzNkZTYzZGUyOWMwZjUxNGQ1YzcyNWVjY2IwMTE2NTcKQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CkRhdGU6CVN1biBOb3YgMjkgMTc6NTY6MzYgMjAwOSAtMDYwMAoKICAgIEFSTSBVcGRhdGUgbWFjaC10eXBlcwoKICAgIEZldGNoZWQgZnJvbSBodHRwOi8vd3d3LmFybS5saW51eC5vcmcudWsvZGV2ZWxvcGVyL21hY2hpbmVzL2Rvd25sb2FkLnBocAogICAgQW5kIGJ1aWx0IHdpdGgKCiAgICByZXBvIGh0dHA6Ly9mdHAuYXJtLmxpbnV4Lm9yZy51ay9wdWIvbGludXgvYXJtL2tlcm5lbC9naXQtY3VyL2xpbnV4LTIuNi1hcm0KICAgIGNvbW1pdCAzZmNjYTlhYzZjYmNlMzViM2U4MWUyNDdkMzc1NTM0MTE3ZDVmNGNkCgogICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgoKY29tbWl0IDdjMTUxMjFmNDAwNzc1MWFmOGM0NWM5NzhjNGFkN2Q2YzVmZjExZjkKQXV0aG9yOiBWYWliaGF2IEhpcmVtYXRoIDxodmFpYmhhdkB0aS5jb20+CkRhdGU6CU1vbiBOb3YgMjMgMTY6MzY6MDUgMjAwOSArMDUzMAoKICAgIG9tYXAzX21tYzogRW5jYXBzdWxhdGUgdHdsNDAzMCB1bmRlciBvcHRpb24gQ09ORklHX1RXTDQwMzBfUE9XRVIKCiAgICBGaXhlcyB0aGUgYnVpbGQvY29tcGlsYXRpb24gZXJyb3IgaWYgd2UgdHJ5IHRvIHJlLXVzZSB0aGUgb21hcDNfbW1jIGNvZGUKICAgIHdpdGhvdXQgVFdMNDAzMF9QT1dFUi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBWYWliaGF2IEhpcmVtYXRoIDxodmFpYmhhdkB0aS5jb20+Cgpjb21taXQgNjQwNmQ2ZGFlYTUxYmJlZWQyMWYzODI5YjM3ZDNmMzk1YzE5OGU1NApBdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KRGF0ZToJU2F0IE5vdiAyMSAxMzoxMzo1OSAyMDA5IC0wNTAwCgogICAgVEkgRGFWaW5jaTogQWRkaW5nIGEgUkVBRE1FIGZvciB0aGUgRGFWaW5jaSBzZXJpZXMgb2YgU09DJ3MKCiAgICBBZGRpbmcgYW4gaW5pdGlhbCBSRUFETUUgZm9yIHRoZSBEYVZpbmNpIHNlcmllcyBvZiBTT0MncwoKICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KCmNvbW1pdCA5OTBmNTY5YzRmYTZiOWU3NmIzMWQwYTUyMjk5ODFjMDkyYjAyZGNmCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qIGF0PgpEYXRlOglTYXQgSnVuIDYgMTA6MzA6NTggMjAwOSArMDAwMAoKICAgIGF2cjMyL2hzZHJhbWM6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2ogPGF0PiBqY3Jvc29mdC5jb20+CiAgICBDYzogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW4gPGF0PiBhdG1lbC5jb20+Cgpjb21taXQgM2YxMmY1MjE3ZThiZGY4ZjY4NDJiZjFiOGM1YzViOTg0MjVhYzNkYgpBdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KRGF0ZToJU2F0IE5vdiAyMSAxMzoyNDoxNyAyMDA5IC0wNTAwCgogICAgTkFORDogQWRkIGNvbmZpZyBvcHRpb24gZm9yIGlteDI3bGl0ZQoKICAgIFdlIHdpbGwgZ2V0IGNvbXBpbGF0aW9uIHdhcm5pbmdzIHdpdGhvdXQKICAgICJDT05GSUdfU1lTXzY0QklUX1ZTUFJJTlRGIiBiZWluZyBkZWZpbmVkCiAgICBpbiB0aGUgYm9hcmQgY29uZmlnLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KCmNvbW1pdCA0M2E1ZjBkZjJmMmUzYTJiNWVhYjA1ZDY3NDI1MDFjOThkM2MwZDBjCkF1dGhvcjogUG8tWXUgQ2h1YW5nIDxyYXRiZXJ0LmNodWFuZ0BnbWFpbC5jb20+CkRhdGU6CVdlZCBOb3YgMTEgMTc6Mjc6MzAgMjAwOSArMDgwMAoKICAgIGFybTogQTMyMDogQWRkIHN1cHBvcnQgZm9yIEZhcmFkYXkgQTMyMCBldmFsdWF0aW9uIGJvYXJkCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIEEzMjAgZXZhbHVhdGlvbiBib2FyZCBmcm9tIEZhcmFkYXkuIFRoaXMgYm9hcmQKICAgIHVzZXMgRkE1MjYgcHJvY2Vzc29yIGJ5IGRlZmF1bHQgYW5kIGhhcyA1MTJrQiBhbmQgMzJNQiBOT1IgZmxhc2gsIDY0TSBSQU0uCiAgICBGQTUyNiBpcyBhbiBBUk12NCBwcm9jZXNzb3IgYW5kIHVzZXMgdGhlIEFSTTkyMFQgc291cmNlIGluIHRoaXMgcGF0Y2guCgogICAgU2lnbmVkLW9mZi1ieTogUG8tWXUgQ2h1YW5nIDxyYXRiZXJ0QGZhcmFkYXktdGVjaC5jb20+Cgpjb21taXQgMzliYTc3NGY5YjAyYzQ0YjhmZDRkZjQ0YWZhYzkzMjgwMGMxODY2MgpBdXRob3I6IFBvLVl1IENodWFuZyA8cmF0YmVydC5jaHVhbmdAZ21haWwuY29tPgpEYXRlOglXZWQgTm92IDExIDE3OjI2OjAwIDIwMDkgKzA4MDAKCiAgICBhcm06IEEzMjA6IGRyaXZlciBmb3IgRlRSVEMwMTAgcmVhbCB0aW1lIGNsb2NrCgogICAgVGhpcyBwYXRjaCBhZGRzIGFuIEZUUlRDMDEwIGRyaXZlciBmb3IgRmFyYWRheSBBMzIwIGV2YWx1YXRpb24gYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogUG8tWXUgQ2h1YW5nIDxyYXRiZXJ0QGZhcmFkYXktdGVjaC5jb20+Cgpjb21taXQgYzFlZTYzY2VlODljNTgyMmZiYmNjNjM1ODZjOGYyYTFhZGQ3MDYxNApBdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KRGF0ZToJU2F0IE5vdiAyMSAxODowODo0OSAyMDA5IC0wNTAwCgogICAgVEkgRGFWaW5jaSBETTY0Nng6IEVuYWJsZSBOQU5EIG9uIERNNjQ2NyBFVk0KCiAgICBUaGlzIHBhdGNoIGVuYWJsZXMgTkFORCBvbiB0aGUgRE02NDY3IEVWTQoKICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KCmNvbW1pdCBkNDE0YWFlNTUyYmMyMjlkYWZjYWQ5MjAyOGVmZmI0YTgzMDZjN2E1CkF1dGhvcjogTmlzaGFudGggTWVub24gPG5tQHRpLmNvbT4KRGF0ZToJTW9uIE5vdiA5IDA5OjI5OjM0IDIwMDkgLTA1MDAKCiAgICBPTUFQMzogRml4IFNEUkMgaW5pdAoKICAgIERlZmF1bHRzIGFyZSBmb3IgSW5maW5lb24gRERSIHRpbWluZ3MuCiAgICBTaW5jZSBub25lIG9mIHRoZSBzdXBwb3J0ZWQgYm9hcmRzIGN1cnJlbnRseSBkbwogICAgWElQIGJvb3QsIHRoZXNlIHNlZW0gdG8gYmUgZmF1bHR5LiBmaXggdGhlIHZhbHVlcwogICAgYXMgcGVyIHRoZSBjYWxjdWxhdGlvbnMoQUNUSU1BLEIpLCBjb25mCiAgICB0aGUgc2RyYyBwb3dlciB3aXRoIHB3ZG5lbiBhbmQgd2FrZXVwcHJvYyBiaXRzCgogICAgU2lnbmVkLW9mZi1ieTogTmlzaGFudGggTWVub24gPG5tQHRpLmNvbT4KCmNvbW1pdCAzMDU2M2EwNGJmZjczZmQ0ZmJkODQwYjg0NmY0YjY0NTk3NTlhODM5CkF1dGhvcjogTmlzaGFudGggTWVub24gPG5tQHRpLmNvbT4KRGF0ZToJU2F0IE5vdiA3IDEwOjUxOjI0IDIwMDkgLTA1MDAKCiAgICBPTUFQMzpTRFJDOiBpbnRyb2R1Y2UgRERSIHR5cGVzCgogICAgTWljcm9uIEREUiB0aW1pbmdzIGJhc2VkIG9uOgogICAgaHR0cDovL3d3dy5zYWtvbWFuLm5ldC9jZ2ktYmluL2dpdHdlYi5jZ2k/cD14LWxvYWQtb21hcDMuZ2l0O2E9YmxvYjtmPWluY2x1ZGUvYXNtL2FyY2gtb21hcDMvbWVtLmg7aD1lNmZiZmUzOTQ3ZjVkMGQ4NWZlYTc3NmUzMDgyMWQ0MDE3MzE2ZDg2O2hiPUhFQUQKCiAgICBJbnRyb2R1Y2UgTWljcm9uIEREUiB0aW1pbmdzIGFuZCBwcm92aWRlCiAgICBDT05GSUdfT01BUDNfSU5GSU5FT05fRERSIGFuZCBDT05GSUdfT01BUDNfTUlDUk9OX0REUiBjb25maWcKICAgIG9wdGlvbnMgdG8gYWxsb3cgZm9yIHBsYXRmb3JtIGZpbGVzIHRvIHNldHVwIHRoZWlyIHRpbWluZ3MgYXMKICAgIHBlciB0aGUgdHlwZSBvZiBERFIgc2VsZWN0ZWQKCiAgICBSZXBvcnRlZC1ieTogU3RldmUgU2Frb21hbiBpbiBodHRwOi8vd3d3Lm5hYmJsZS5jb20vZm9ydW0vUGVybWFsaW5rLmp0cD9yb290PTI1Nzc5NTE4JnBvc3Q9MjU5NTk3MzQmcGFnZT15CgogICAgU2lnbmVkLW9mZi1ieTogTmlzaGFudGggTWVub24gPG5tQHRpLmNvbT4KCmNvbW1pdCAxNjlhNGM4MDRkYmFmMTFmYWNiMDQxYjEzMzNkMzk0YzZjZWI4ZDY4CkF1dGhvcjogTmlzaGFudGggTWVub24gPG5tQHRpLmNvbT4KRGF0ZToJU2F0IE5vdiA3IDEwOjQwOjQ3IDIwMDkgLTA1MDAKCiAgICBPTUFQMzpTRFJDOiBDbGVhbnVwIHJlZmVyZW5jZXMgdG8gU0RQCgogICAgUmVtb3ZlIFNEUCByZWZlcmVuY2VkIHVudXNlZCBkZWZpbmVzCgogICAgU2lnbmVkLW9mZi1ieTogTmlzaGFudGggTWVub24gPG5tQHRpLmNvbT4KCmNvbW1pdCAyODE5ZTEzNjViZTBjODFhMDE0MWVmNWM2YTc5OTZiNDA4ODhmNmQ4CkF1dGhvcjogU2VraGFyIE5vcmkgPG5zZWtoYXJAdGkuY29tPgpEYXRlOglUaHUgTm92IDEyIDExOjA5OjI1IDIwMDkgLTA1MDAKCiAgICBUSSBEQTh4eDogSW50ZWdyYXRlIERBODMwIEVWTSBzdXBwb3J0IGludG8gVS1Cb290CgogICAgSW50ZWdyYXRlIERBODMwIEVWTSBzdXBwb3J0IGludG8gVS1Cb290LgoKICAgIFByb3ZpZGVzIGluaXRpYWwgc3VwcG9ydCBmb3IgVEkgT01BUC1MMTM3L0RBODMwIFNvQyBkZXZpY2VzIG9uIGEgU3BlY3RydW0KICAgIERpZ2l0YWwgRVZNIGJvYXJkLiBTZWUgaHR0cDovL3d3dy5zcGVjdHJ1bWRpZ2l0YWwuY29tLwoKICAgIFNpZ25lZC1vZmYtYnk6IE5pY2sgVGhvbXBzb24gPG5pY2sudGhvbXBzb25AZ2VmYW51Yy5jb20+Cgpjb21taXQgYmRjOWM2YzdmNzdhOWE2MzM0OWVjYjlmNTRiMjBhZDM0MDMzYTJhZQpBdXRob3I6IFNla2hhciBOb3JpIDxuc2VraGFyQHRpLmNvbT4KRGF0ZToJVGh1IE5vdiAxMiAxMTowODozOSAyMDA5IC0wNTAwCgogICAgVEkgREE4eHg6IEFkZCBuZXcgZGlyZWN0b3J5IGZvciBkYTgzMGV2bSBib2FyZAoKICAgIEFkZCBuZXcgZGlyZWN0b3J5IGZvciBkYTgzMGV2bSBib2FyZAoKICAgIFByb3ZpZGVzIGluaXRpYWwgc3VwcG9ydCBmb3IgVEkgT01BUC1MMTM3L0RBODMwIFNvQyBkZXZpY2VzIG9uIGEgU3BlY3RydW0KICAgIERpZ2l0YWwgRVZNIGJvYXJkLiBTZWUgaHR0cDovL3d3dy5zcGVjdHJ1bWRpZ2l0YWwuY29tLwoKICAgIFByb3ZpZGVzOgogICAgSW5pdGlhbCBib290IGFuZCBjb25maWd1cmF0aW9uLgogICAgU3VwcG9ydCBmb3IgaTJjLgogICAgVUFSVCBzdXBwb3J0IChjb25zb2xlKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlZmFudWMuY29tPgoKY29tbWl0IDkxMTcyYmFmNDZhNTc4MDcyMzNlYjdiY2Q3MjRiOWYxMDEwOWNmZTAKQXV0aG9yOiBTZWtoYXIgTm9yaSA8bnNla2hhckB0aS5jb20+CkRhdGU6CVRodSBOb3YgMTIgMTE6MDc6MjIgMjAwOSAtMDUwMAoKICAgIFRJIERBOHh4OiBBZGQgREE4eHggY3B1IGZ1bmN0aW9ucwoKICAgIFByb3ZpZGVzIGluaXRpYWwgc3VwcG9ydCBmb3IgVEkgT01BUC1MMXgvREE4eHggU29DIGRldmljZXMuCiAgICBTZWUgaHR0cDovL3d3dy50aS5jb20KCiAgICBQcm92aWRlczoKICAgIExvdyBsZXZlbCBpbml0aWFsaXNhdGlvbi4KICAgIFN5c3RlbSBjbG9jayBBUEkuCiAgICBUaW1lciBjb250cm9sLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pY2sgVGhvbXBzb24gPG5pY2sudGhvbXBzb25AZ2VmYW51Yy5jb20+Cgpjb21taXQgYmJlZDA1NmU1NTBiMjY3MTJlZGMxNzM0MTFjOWQ3ZmY5Y2I3ZTBlNgpBdXRob3I6IE5pY2sgVGhvbXBzb24gPG5pY2sudGhvbXBzb25AZ2VmYW51Yy5jb20+CkRhdGU6CVRodSBOb3YgMTIgMTE6MDY6MDggMjAwOSAtMDUwMAoKICAgIEFkZCBUSSBEQTh4eCBzdXBwb3J0OiBEQTh4eCBpbmNsdWRlcwoKICAgIFByb3ZpZGVzIGluaXRpYWwgc3VwcG9ydCBmb3IgVEkgT01BUC1MMXgvREE4eHggU29DIGRldmljZXMuCiAgICBTZWUgaHR0cDovL3d3dy50aS5jb20KCiAgICBUaGUgREE4eHggZGV2aWNlcyBhcmUgc2ltaWxhciB0byBEYVZpbmNpIGRldmljZXMgYnV0IGhhdmUgYSBkaWZmZXJpbmcKICAgIG1lbW9yeSBtYXAgYW5kIHVwZGF0ZWQgcGVyaXBoZXJhbCB2ZXJzaW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlZmFudWMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2VraGFyIE5vcmkgPG5zZWtoYXJAdGkuY29tPgoKY29tbWl0IGNhODQ4MGQ0NDRiZGNjMTY3MGU0MmE2MTNjNWE1ZTRlODM2NmQyZDkKQXV0aG9yOiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlZmFudWMuY29tPgpEYXRlOglUaHUgTm92IDEyIDExOjAzOjIzIDIwMDkgLTA1MDAKCiAgICBUSSBEYXZpbmNpOiBhZGQgYSBwaW4gbXVsdGlwbGV4ZXIgY29uZmlndXJhdGlvbiBBUEkKCiAgICBDcmVhdGVzIGEgbWV0aG9kIGFsbG93aW5nIHBpbiBzZXR0aW5ncyB0byBiZSBsb2dpY2FsbHkgZ3JvdXBlZCBpbnRvIGRhdGEKICAgIHN0cnVjdHVyZSBhcnJheXMgYW5kIHByb3ZpZGVzIGFuIEFQSSB0byBjb25maWd1cmUgdGhlIHBpbm11eCBzZXR0aW5ncyB0bwogICAgZW5hYmxlIHRoZSByZWxldmFudCBwaW4gZnVuY3Rpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pY2sgVGhvbXBzb24gPG5pY2sudGhvbXBzb25AZ2VmYW51Yy5jb20+Cgpjb21taXQgOTg2OGEzNmRmYjhkZTRiYjk4YjQ4ZTRmNGViOTEyMzEyZDY3Mjc5ZQpBdXRob3I6IE5pY2sgVGhvbXBzb24gPG5pY2sudGhvbXBzb25AZ2VmYW51Yy5jb20+CkRhdGU6CVRodSBOb3YgMTIgMTE6MDI6MTcgMjAwOSAtMDUwMAoKICAgIFRJIERhdmluY2kgdGltZXIuYzogUmVtb3ZlIHZvbGF0aWxlcyBhbmQgbWVtb3J5IG1hcHBlZCBzdHJ1Y3R1cmVzCgogICAgUmVtb3ZlIHZvbGF0aWxlcyBhbmQgbWVtb3J5IG1hcHBlZCBzdHJ1Y3R1cmUgYWNjZXNzZXMgYW5kIHJlcGxhY2Ugd2l0aAogICAgcmVhZGwgYW5kIHdyaXRlbCBtYWNybyB1c2FnZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlZmFudWMuY29tPgoKY29tbWl0IGM5MGIzMjczOWE1MGNhNTJkOWI4ZDIyMGVhNjg3NWFlOTk0NTY2ZWMKQXV0aG9yOiBHcmF6dnlkYXMgSWdub3RhcyA8bm90YXNhc0BnbWFpbC5jb20+CkRhdGU6CVRodSBOb3YgMTIgMTE6NDY6MDcgMjAwOSArMDIwMAoKICAgIE9NQVAzOiBwYW5kb3JhOiBmaXggYm9vdGluZyB3aXRob3V0IHNlcmlhbCBhdHRhY2hlZAoKICAgIFdoZW4gdGhlIGJvYXJkIGlzIGJvb3RlZCB3aXRob3V0IHNlcmlhbCBjYWJsZSBhdHRhY2hlZCAod2hpY2gKICAgIGlzIGhvdyBtb3N0IG9mIHRoZW0gd2lsbCBiZSB1c2VkKSBVQVJUIFJYIGlzIGxlZnQgZmxvYXRpbmcgYW5kCiAgICBzb21ldGltZXMgcGlja3Mgbm9pc2UsIHdoaWNoIGludGVycnVwdHMgY291bnRkb3duIGFuZCBlbnRlcnMKICAgIFUtQm9vdCBwcm9tcHQgaW5zdGVhZCBvZiBib290aW5nIHRoZSBrZXJuZWwuCgogICAgRml4IHRoaXMgYnkgc2V0dGluZyB1cCBpbnRlcm5hbCBwdWxsdXAgb24gVUFSVCBSWCBwaW4uIFRoaXMKICAgIGRvZXMgbm90IHByZXZlbnQgc2VyaWFsIGZyb20gd29ya2luZyBhcyB0aGUgaW50ZXJuYWwgcHVsbHVwCiAgICBpcyB3ZWFrLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYXp2eWRhcyBJZ25vdGFzIDxub3Rhc2FzQGdtYWlsLmNvbT4KCmNvbW1pdCBhYzY3ODA0ZmJiMmQ4MmExOTE3MDA2NmMwMmFmNzA1M2Q0NzRjZThkCkF1dGhvcjoga2V2aW4ubW9yZml0dEBmZWFybnNpZGUtc3lzdGVtcy5jby51ayA8a2V2aW4ubW9yZml0dEBmZWFybnNpZGUtc3lzdGVtcy5jby51az4KRGF0ZToJVHVlIE5vdiAxNyAxODozMDozNCAyMDA5ICswOTAwCgogICAgQWRkIGEgdW5pZmllZCBzM2MyNHgwIGhlYWRlciBmaWxlCgogICAgVGhpcyBwYXRjaCBhZGRzIGEgdW5pZmllZCBzM2MyNHgwIGNwdSBoZWFkZXIgZmlsZSB0aGF0IHNlbGVjdHMgdGhlIGhlYWRlcgogICAgZmlsZSBmb3IgdGhlIHNwZWNpZmljIHMzYzI0eDAgY3B1IGZyb20gdGhlIFNPQyBhbmQgQ1BVIGNvbmZpZ3MgZGVmaW5lZCBpbgogICAgYm9hcmQgY29uZmlnIGZpbGUuIFRoaXMgcmVtb3ZlcyB0aGUgY3VycmVudCBjaGFpbiBvZiBzM2MyNC10eXBlICNpZmRlZidzCiAgICBmcm9tIHRoZSBzM2MyNHgwIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogS2V2aW4gTW9yZml0dCA8a2V2aW4ubW9yZml0dEBmZWFybnNpZGUtc3lzdGVtcy5jby51az4KICAgIFNpZ25lZC1vZmYtYnk6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KCmNvbW1pdCBhNTlhMjNkNjhhZTRmNGExYzA3ZDEwNTUyMGM5M2U2ZTI4OWQxODZmCkF1dGhvcjogU2V1bmdoeWVvbiBSaGVlIDxyaGVlNGoxQGdtYWlsLmNvbT4KRGF0ZToJRnJpIE5vdiAxMyAxNjo0OTo0MSAyMDA5ICswOTAwCgogICAgUzNDNjQwMC9TTURLNjQwMDogZml4IHN0YWNrX3NldHVwIGluIHN0YXJ0LlMKCiAgICBGaXggc3RhY2tfc2V0dXAgdG8gcGxhY2UgdGhlIHN0YWNrIG9uIHRoZSBjb3JyZWN0IGFkZHJlc3MgaW4gRFJBTQogICAgYWNjcm9kaW5nIHRvIFUtQm9vdCBzdGFuZGFyZCBhbmQgcmVtb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJ5CiAgICBDT05GSUdfTUVNT1JZX1VQUEVSX0NPREUgbWFjcm8gdGhhdCBpcyBub3QgbmVjZXNzcnkuIFRoaXMgbWFjcm8KICAgIHdhcyBpbnRyb2R1Y2VkIGFuZCB1c2VkIG9ubHkgYnkgdGhpcyBib2FyZCBmb3Igc29tZSB1bmNsZWFyIHJlYXNvbi4KCiAgICBUaGUgZGVmaW5pdGlvbiBvZiB0aGlzIG1hY3JvIGlzIGFsc28gcmVtb3ZlZCBiZWNhdXNlIGl0J3Mgbm90CiAgICByZWZlcmVuY2VkIGVsc2V3aGVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTZXVuZ2h5ZW9uIFJoZWUgPHNldW5naHllb25AbHBtdGVjLmNvbT4KICAgIFRlc3RlZC1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgoKY29tbWl0IDk0MDAzMjI2MDkxNDA3NmIxNTk0OTA2MzM0YjJlM2Y3YWY2ZmI3Y2YKQXV0aG9yOiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+CkRhdGU6CVR1ZSBOb3YgMTAgMjA6MjM6NTAgMjAwOSArMDkwMAoKICAgIHM1cGMxeHg6IHNlcmlhbDogZml4IHRoZSBlcnJvciBjaGVjayBsb2dpYwoKICAgIEJlY2F1c2Ugb2YgRnJhbWUgZXJyb3IsIFBhcml0eSBlcnJvciBhbmQgT3ZlcnJ1biBlcnJvciBhcmUgb2NjdXJlZCBvbmx5IHJlY2VpdmUKICAgIG9wZXJhdGlvbiwgbmVlZCB0byBtYXNraW5nIHdoZW4gZXJyb3IgY2hlY2tpbmcuCgogICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgoKY29tbWl0IDllYmZkYzIwMjI3NWJjZDllYjRhZjU2ZTMyYmZiNDI1M2ZmMWI3ODEKQXV0aG9yOiBrZXZpbi5tb3JmaXR0QGZlYXJuc2lkZS1zeXN0ZW1zLmNvLnVrIDxrZXZpbi5tb3JmaXR0QGZlYXJuc2lkZS1zeXN0ZW1zLmNvLnVrPgpEYXRlOglXZWQgTm92IDQgMTc6NDk6MzEgMjAwOSArMDkwMAoKICAgIENsZWFuLXVwIG9mIHMzYzI0eDAgaGVhZGVyIGZpbGVzCgogICAgQ2xlYW5zIHVwIHRoZSBzM2MyNHgwIGhlYWRlciBmaWxlczoKCiAgICBzNGMyNHgwLmg6IHJlbW92ZXMgdGhlIHVzZSBvZiAndm9sYXRpbGUnIGZyb20gdGhlIFMzQzI0WDBfUkVHOCwKICAgIFMzQzI0WDBfUkVHMTYgYW5kIFMzQzI0WDBfUkVHMzIgcmVnaXN0ZXIgdHlwZWRlZidzLiBSZWdpc3RlcnMgYXJlIGFsd2F5cwogICAgYWNjZXNzZWQgdXNpbmcgdGhlIElPIGFjY2Vzc29yIGZ1bmN0aW9ucyB3aGljaCBjYXN0IHRoZSByZWdpc3RlciBhZGRyZXNzCiAgICBhcyAndm9sYXRpbGUnIGFueXdheSBzbyBpdCBpc24ndCByZXF1aXJlZCBoZXJlLgoKICAgIHMzYzI0MDAuaCBhbmQgczNjMjQxMC5oOiBpbnNlcnQgYSBibGFuayBsaW5lIGJldHdlZW4gdGhlIHN0YXRpYyBpbmxpbmUKICAgIGZ1bmN0aW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IEtldmluIE1vcmZpdHQgPGtldmluLm1vcmZpdHRAZmVhcm5zaWRlLXN5c3RlbXMuY28udWs+Cgpjb21taXQgNDdlODAxYmVjMzYwZTY5ZTRiMDg3YTE0MWQwMTViMzE4ZTFiMDIxMgpBdXRob3I6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KRGF0ZToJV2VkIE5vdiA0IDE2OjA3OjU5IDIwMDkgKzA5MDAKCiAgICBzM2M2NHh4OiBtb3ZlIHMzYzY0eHggaGVhZGVyIGZpbGVzIHRvIGFzbS1hcm0vYXJjaC1zM2M2NHh4CgogICAgVGhpcyBwYXRjaCBtb3ZlcyB0aGUgczNjNjR4eCBoZWFkZXIgZmlsZXMgZnJvbSBpbmNsdWRlLwogICAgdG8gaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjNjR4eAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KCmNvbW1pdCA0OTJmYjFmZGJjZGQ1ZTIxYmUwYjY3NDJjMTVmNzZjNjQ4ZjA2NTNiCkF1dGhvcjoga2V2aW4ubW9yZml0dEBmZWFybnNpZGUtc3lzdGVtcy5jby51ayA8a2V2aW4ubW9yZml0dEBmZWFybnNpZGUtc3lzdGVtcy5jby51az4KRGF0ZToJVHVlIE5vdiAzIDE4OjA4OjQxIDIwMDkgKzA5MDAKCiAgICBNb3ZlIHMzYzI0eDAgaGVhZGVyIGZpbGVzIHRvIGFzbS1hcm0vYXJjaC1zM2MyNHgwLwoKICAgIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIHMzYzI0eDAgaGVhZGVyIGZpbGVzIGZyb20gaW5jbHVkZS8gdG8KICAgIGluY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0eDAvLgoKICAgIGNoZWNrcGF0Y2gucGwgc2hvd2VkIDIgZXJyb3JzIGFuZCAzIHdhcm5pbmdzLiBUaGUgMiBlcnJvcnMgd2VyZSBib3RoIGR1ZQogICAgdG8gYSBub24tVVRGOCBjaGFyYWN0ZXIgaW4gRGF2aWQgTT9sbGVyJ3MgbmFtZToKCiAgICBFUlJPUjogSW52YWxpZCBVVEYtOCwgcGF0Y2ggYW5kIGNvbW1pdCBtZXNzYWdlIHNob3VsZCBiZSBlbmNvZGVkIGluIFVURi04CiAgICAjNDg5OiBGSUxFOiBpbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNHgwL3MzYzI0MTAuaDozOgogICAgKyAqIERhdmlkIE0/bGxlciBFTFNPRlQgQUcgU3dpdHplcmxhbmQuIGQubXVlbGxlckBlbHNvZnQuY2gKCiAgICBBcyBEYXZpZCdzIG5hbWUgY29ycmVjdGx5IGNvbnRhaW5zIGEgbm9uLVVURjggY2hhcmFjdGVyIEkgaGF2ZW4ndCBmaXhlZAogICAgdGhlc2UgZXJyb3JzLgoKICAgIFRoZSAzIHdhcm5pbmdzIHdlcmUgYWxsIGJlY2F1c2Ugb2YgdGhlIHVzZSBvZiAndm9sYXRpbGUnIGluIHMzYzI0eDAuaDoKCiAgICBXQVJOSU5HOiBVc2Ugb2Ygdm9sYXRpbGUgaXMgdXN1YWxseSB3cm9uZzogc2VlIERvY3VtZW50YXRpb24vdm9sYXRpbGUtY29uc2lkZXJlZC1oYXJtZnVsLnR4dAogICAgIzY3MzogRklMRTogaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjR4MC9zM2MyNHgwLmg6MzU6CiAgICArdHlwZWRlZiB2b2xhdGlsZSB1OAlTM0MyNFgwX1JFRzg7CiAgICArdHlwZWRlZiB2b2xhdGlsZSB1MTYJUzNDMjRYMF9SRUcxNjsKICAgICt0eXBlZGVmIHZvbGF0aWxlIHUzMglTM0MyNFgwX1JFRzMyOwoKICAgIEknbGwgZml4IHRoZXNlIGVycm9ycyBpbiBhbm90aGVyIHBhdGNoLgoKICAgIFRlc3RlZCBieSBydW5uaW5nIE1BS0VBTEwgZm9yIEFSTTggdGFyZ2V0cyBhbmQgZW5zdXJpbmcgdGhlcmUgd2VyZSBubyBuZXcKICAgIGVycm9ycyBvciB3YXJuaW5ncy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLZXZpbiBNb3JmaXR0IDxrZXZpbi5tb3JmaXR0QGZlYXJuc2lkZS1zeXN0ZW1zLmNvLnVrPgogICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgoKY29tbWl0IDJkMjUxY2NhYTkwOTk3MDEyZTBiMWYxM2JmNzkxZGYyYmYwM2ExNDQKQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CkRhdGU6CVN1biBOb3YgMTUgMTA6NTg6MDYgMjAwOSAtMDYwMAoKICAgIEFSTSBVcGRhdGUgbWFjaC10eXBlcwoKICAgIEZldGNoZWQgZnJvbSBodHRwOi8vd3d3LmFybS5saW51eC5vcmcudWsvZGV2ZWxvcGVyL21hY2hpbmVzL2Rvd25sb2FkLnBocAogICAgQW5kIGJ1aWx0IHdpdGgKCiAgICByZXBvIGh0dHA6Ly9mdHAuYXJtLmxpbnV4Lm9yZy51ay9wdWIvbGludXgvYXJtL2tlcm5lbC9naXQtY3VyL2xpbnV4LTIuNi1hcm0KICAgIGNvbW1pdCAxNTYxNzFjNzFhMGRjNGJjZTEyYjQ0MDhiYjE1OTFmOGZlMzJkYzFhCgogICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgoKY29tbWl0IGM4OGVkNGNiMmVlZDI5YTY5MGFjNjY4OWVkMWRjMmY1ZTk1NDdkMTUKQXV0aG9yOiBNYXJrIEFzc2Vsc3RpbmUgPFttYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbV0+CkRhdGU6CVR1ZSBPY3QgMjcgMTk6NDA6NDAgMjAwOSArMDUzMAoKICAgIHNoZWV2YXBsdWc6IGNvcnJlY3QgU0RSQU0gYWRkcmVzcyBjb250cm9sIHJlZ2lzdGVyCgogICAgdmFsdWUKCiAgICBUaGUgU2hlZXZhUGx1ZyBEZXZLaXQgaXMgc2hpcHBlZCB3aXRoIDR4OCBieSAxR2IgRERSIGRldmljZXMgaW4KICAgIHR3byBiYW5rcyBmb3IgYSB0b3RhbCBvZiA1MTJNQiBvZiBSQU0uIEJhc2VkIG9uIHRoaXMgY29uZmlndXJhdGlvbgogICAgdGhlIGV4aXN0aW5nIHZhbHVlcyBmb3IgU0RSQU0gYWRkcmVzcyBjb250cm9sIHJlZ2lzdGVyIGFyZSBpbmNvcnJlY3QKICAgIGFuZCByZXN1bHQgaW4gcmFuZG9tIGtlcm5lbCBvb3BzIGFzIG1lbW9yeSBpcyBpbmNvcnJlY3RseSBhY2Nlc3NlZAogICAgKHdoaWxlIGZvciBleGFtcGxlIGV4dHJhY3RpbmcgYSBsYXJnZSB0YXJiYWxsIHN1Y2ggYXMgYSByb290ZnMpLgogICAgQmFzZWQgb24gdGhlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gYWxvbmcgd2l0aCB0aGUgc3VwcG9ydGluZwogICAgZG9jdW1lbnRhdGlvbiBmcm9tIE1hcnZlbGwgdGhlc2UgYXJlIHRoZSBjb3JyZWN0IHZhbHVlcywgYXMKICAgIHdlbGwgdGhpcyBjaGFuZ2UgbWltaWNzIHZhbHVlcyBwcmV2aW91c2x5IHVzZWQgaW4gTWFydmVsbCdzIG93bgogICAgdS1ib290IGdpdCB0cmVlIGZvciB0aGUgU2hlZXZhUGx1Zy4KCiAgICBPdGhlciB2YXJpYW50cyBvZiB0aGUgaGFyZHdhcmUgc3VjaCBhcyB0aGUgUG9nb1BsdWcgYW5kIFRvbmlkb1BsdWcKICAgIG1heSBoYXZlIGRpZmZlcmVudCBtZW1vcnkgY29uZmlndXJhdGlvbnMgYnV0IHRvIHByb3Blcmx5IHN1cHBvcnQKICAgIHRob3NlIGFkZGl0aW9uYWwgYm9hcmQgZGlyZWN0b3JpZXMgc2hvdWxkIGJlIG1haW50YWluZWQgb3IgYSBiZXR0ZXIKICAgIHN5c3RlbSB0byBzdXBwb3J0IG90aGVyIGt3YiouY2ZnIGlzIG5lZWRlZC4KCiAgICBUZXN0ZWQgb24gU2hlZXZhUGx1ZyBEZXZLaXQuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KCmNvbW1pdCA5ODI5Y2FiYmFhMDQ3NGU5NDA3NWJmN2Q2MmM5OWJkYmE5OTY1MThiCkF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgpEYXRlOglXZWQgT2N0IDI4IDE5OjE2OjQzIDIwMDkgLTA0MDAKCiAgICBGaXggZm9yIFZvaWQgZnVuY3Rpb24gcmV0dXJuaW5nIHZhbHVlIGluIHNiYzM1LWE5ZzIwCgogICAgVm9pZCBmdW5jdGlvbiB3YXMgcmV0dXJuaW5nIDAgaW4gdGhlIG00MXQ5NCBydGMgZHJpdmVyLgogICAgVGhpcyBtYWtlcyBpdCBzaW1pbGFyIHRvIG00MXQ2MiBydGMgZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KCmNvbW1pdCBkNWUyZDYyNWM3NGM4NGFhNDE5YmE3ZmEwYzgxYmFkOTNmYzY5YTYwCkF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgpEYXRlOglTYXQgT2N0IDI0IDE0OjQ4OjMzIDIwMDkgLTA1MDAKCiAgICBBUk0gVXBkYXRlIG1hY2gtdHlwZXMuaAoKICAgIEZyb20gaHR0cDovL2Z0cC5hcm0ubGludXgub3JnLnVrL3B1Yi9saW51eC9hcm0va2VybmVsL2dpdC1jdXIvbGludXgtMi42LWFybQoKICAgIENvbW1pdCBpZCAwOTk2MzkxMTM5ZjQzZDAzMjMzNWI1MzYwZGIxMWRhNjJhMmNiYjM5CgogICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgoKY29tbWl0IDM0ZGRiZDE3MWJhMTU0ZTlhZmQ4M2YwN2EwN2FkOGI1N2FjNTkyZTMKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVGh1IE9jdCAyMiAyMzowNjo1OSAyMDA5ICswMjAwCgogICAgcHBjNHh4OiBSZW1vdmUgYXV0b3VwZGF0ZSBmZWF0dXJlIGZyb20gUExVNDA1IGJvYXJkCgogICAgVGhlIGF1dG91cGRhdGUgZmVhdHVyZSBpcyBub3QgdXNlZCBvbiBQTFU0MDUgYm9hcmRzLgogICAgU28gcmVtb3ZlIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODI0ZDgyOTk3ZmJjZjI4ZTQ5MDgxZDM2ZmRkNWQzYmUxYjkyYjAzZApBdXRob3I6IElyYSBXLiBTbnlkZXIgPGl3c0BvdnJvLmNhbHRlY2guZWR1PgpEYXRlOglXZWQgTm92IDQgMTM6Mzc6NTkgMjAwOSAtMDgwMAoKICAgIEZpeCBleGFtcGxlIEZJVCBpbWFnZSBzb3VyY2UgZmlsZXMKCiAgICBUaGUgZXhhbXBsZSBGSVQgaW1hZ2Ugc291cmNlIGZpbGVzIGRvIG5vdCBjb21waWxlIHdpdGggdGhlIGxhdGVzdCBkdGMgYW5kCiAgICBta2ltYWdlLiBUaGUgZm9sbG93aW5nIGVycm9yIG1lc3NhZ2UgaXMgcHJvZHVjZWQ6CgogICAgRFRDOiBkdHMtPmR0YiAgb24gZmlsZSAia2VybmVsLml0cyIKICAgIEVycm9yOiBrZXJuZWwuaXRzIDc6MCAtIDE6MCBzeW50YXggZXJyb3IKICAgIEZBVEFMIEVSUk9SOiBVbmFibGUgdG8gcGFyc2UgaW5wdXQgdHJlZQogICAgLi9ta2ltYWdlOiBDYW4ndCByZWFkIGtlcm5lbC5pdGIudG1wOiBJbnZhbGlkIGFyZ3VtZW50CgogICAgVGhlIEZJVCBpbWFnZSBzb3VyY2UgZmlsZXMgYXJlIG1pc3NpbmcgdGhlICIvZHRzLXYxLzsiIGRpcmVjdGl2ZSBhdCB0aGUKICAgIGJlZ2lubmluZyBvZiB0aGUgZmlsZS4gQWRkIHRoZSBkaXJlY3RpdmUgdG8gdGhlIGV4YW1wbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IElyYSBXLiBTbnlkZXIgPGl3c0BvdnJvLmNhbHRlY2guZWR1PgoKY29tbWl0IGZkNjYwNjZlZTNjZTE1YzI5NjZmZWI5YjJiZTBmMGQ1MWE5NWRiNDgKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBOb3YgNCAxNjoxMzoxOSAyMDA5IC0wNTAwCgogICAgaW1nMnNyZWM6IHVzZSBzdGFuZGFyZCB0eXBlcwoKICAgIFRoZSBpbWcyc3JlYyBjb2RlIGNyZWF0ZXMgYSBsb3Qgb2YgdHlwZWRlZnMgd2l0aCBjb21tb24gbmFtZXMuICBUaGVzZQogICAgZWFzaWx5IGNsYXNoIHdpdGggc3lzdGVtIGhlYWRlcnMgdGhhdCBpbmNsdWRlIHRoZXNlIHR5cGVkZWZzIChsaWtlIG1pbmd3KS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgODIwNGUwNjgxMTBlOGFiZTVkYjljM2I3ZGY5OTcxYjU4Y2RhOGYyNgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIE5vdiA0IDE2OjAzOjI1IDIwMDkgLTA1MDAKCiAgICB0b29sczogZ2l0aWdub3JlICouZXhlIGJpbmFyaWVzCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDQyNWQzYjY2NmVlZTVjNThmZGI4MmZiODk0YTUzNWRkNzE3ODJhMDUKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglUdWUgTm92IDMgMjM6MzE6MDcgMjAwOSAtMDYwMAoKICAgIHBwYzogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvZiBrZ2RiLmMgdG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IGUwNmFiNjU0NmIzMzJhY2M1NWFjNGU3YzMxMzM4NjYyMzI4YjBmYjMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVR1ZSBOb3YgMyAxMTozNjozOSAyMDA5IC0wNTAwCgogICAgc3BpX2ZsYXNoLmg6IHB1bGwgaW4gbGludXgvdHlwZXMuaCBmb3IgdSMjIHR5cGVzCgpjb21taXQgMDAwODU1NWY0ZDU3YzE1YWQ4NmVlNzM1ODYxY2EwZDc4MzA0MmY2MQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIE5vdiAzIDExOjM2OjI2IDIwMDkgLTA1MDAKCiAgICBib290bTogbWFyayBsb2NhbCBib290X29zW10gdGFibGUgc3RhdGljCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGE4ZmEzNzlkNDdmMDZjN2QzZWQ3NWM4ZmIyNmFlNDNlZTM4ZTFmZDcKQXV0aG9yOiBOaXNoYW50aCBNZW5vbiA8bm1AdGkuY29tPgpEYXRlOglNb24gTm92IDIgMDk6NDA6MTggMjAwOSAtMDYwMAoKICAgIG1rY29uZmlnOiBkZW55IG1lc3NlZCB1cCBBUkNIIGRlZmluaXRpb24KCiAgICBSZWZ1c2UgdG8gc2V0dXAgYSBwbGF0Zm9ybSBpZiB0aGUgY29tbWFuZCBsaW5lIEFSQ0g9IGlzIG5vdCB0aGUgc2FtZQogICAgYXMgdGhlIG9uZSByZXF1aXJlZCBmb3IgdGhlIGJvYXJkLiBUaGlzIHByZXZlbnRzIGFueSB1c2VyIHdpdGgKICAgIHByZWhpc3RvcmljIGFsaWFzZXMgZnJvbSBtZXNzaW5nIHVwIHRoZWlyIGJ1aWxkcy4KCiAgICBSZXBvcnRlZCBpbiB0aHJlYWQ6CiAgICBodHRwOi8vb2xkLm5hYmJsZS5jb20vLVUtQm9vdC0tQnVpbGQtYnJlYWtzLW9uLXNvbWUtT01BUDMtY29uZmlncy10bzI2MTMyNzIxLmh0bWwKCiAgICBJbnB1dHMgZnJvbTogTWlrZSBGcnlzaW5nZXIgYW5kIFdvbGZnYW5nIERlbms6CiAgICBodHRwOi8vbGlzdHMuZGVueC5kZS9waXBlcm1haWwvdS1ib290LzIwMDktTm92ZW1iZXIvMDYzNjQyLmh0bWwKCiAgICBDYzogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIENjOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBDYzogQW5hbmQgR2FkaXlhciA8Z2FkaXlhckB0aS5jb20+CiAgICBDYzogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5pc2hhbnRoIE1lbm9uIDxubUB0aS5jb20+Cgpjb21taXQgNjdiOTZlODdkYTFiODQ2NjBmYTFlNWI3OGNjNzYwMjQ2ZDExNjgxNApBdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgpEYXRlOglXZWQgT2N0IDI4IDIyOjEzOjM5IDIwMDkgKzAxMDAKCiAgICBSZXBhaXIgdGhlICduZXRyZXRyeT1vbmNlJyBvcHRpb24uCgogICAgJ25ldHJldHJ5ID0gb25jZScgZG9lcyB0aGUgc2FtZSBhcyAnbmV0cmV0cnkgPSB5ZXMnLCBiZWNhdXNlIGl0IGlzIG5vdCBzdG9yZWQKICAgIHdoZW4gaXQgd2FzIHRyaWVkIG9uY2UuCgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGIyNWUzOGZjMzZlMTNmYTgwMzdmYTRkMzdmZTkwOWQxZDZlNmYzNzIKQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KRGF0ZToJVGh1IE9jdCAyOSAxNDoyNDoyMiAyMDA5ICswMTAwCgogICAgUmVwYWlyIGJ1aWxkIGZhaWwgaW4gY2FzZSBDT05GSUdfUFBDPW4gYW5kIENPTkZJR19GSVQ9eQoKICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IDAxODI2YWJjMDJjZTE2MDUwMTUzNDc4OGU2MzYyOWNjYmUzMWIwNWMKQXV0aG9yOiBHcmF6dnlkYXMgSWdub3RhcyA8bm90YXNhc0BnbWFpbC5jb20+CkRhdGU6CVRodSBOb3YgMTIgMTE6NDY6MDcgMjAwOSArMDIwMAoKICAgIE9NQVAzOiBwYW5kb3JhOiBmaXggYm9vdGluZyB3aXRob3V0IHNlcmlhbCBhdHRhY2hlZAoKICAgIFdoZW4gdGhlIGJvYXJkIGlzIGJvb3RlZCB3aXRob3V0IHNlcmlhbCBjYWJsZSBhdHRhY2hlZCAod2hpY2gKICAgIGlzIGhvdyBtb3N0IG9mIHRoZW0gd2lsbCBiZSB1c2VkKSBVQVJUIFJYIGlzIGxlZnQgZmxvYXRpbmcgYW5kCiAgICBzb21ldGltZXMgcGlja3Mgbm9pc2UsIHdoaWNoIGludGVycnVwdHMgY291bnRkb3duIGFuZCBlbnRlcnMKICAgIFUtQm9vdCBwcm9tcHQgaW5zdGVhZCBvZiBib290aW5nIHRoZSBrZXJuZWwuCgogICAgRml4IHRoaXMgYnkgc2V0dGluZyB1cCBpbnRlcm5hbCBwdWxsdXAgb24gVUFSVCBSWCBwaW4uIFRoaXMKICAgIGRvZXMgbm90IHByZXZlbnQgc2VyaWFsIGZyb20gd29ya2luZyBhcyB0aGUgaW50ZXJuYWwgcHVsbHVwCiAgICBpcyB3ZWFrLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYXp2eWRhcyBJZ25vdGFzIDxub3Rhc2FzQGdtYWlsLmNvbT4KCmNvbW1pdCA0MWRmZDhhNjAzMjQyNDNkYmUyZGMzMTNhNjA3OTEwODI0YTY4YWE3CkF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CkRhdGU6CVdlZCBPY3QgMjggMjI6MTM6MzcgMjAwOSArMDEwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBDUzIgZGF0YWZsYXNoIGZvciBBdG1lbC1TUEkuCgogICAgVGhlIG9ubHkgbWlzc2luZyBjaGlwc2VsZWN0IGxpbmUgc3VwcG9ydCBpcyBDUzIsIGFuZCBJIG5lZWQgaXQgb24KICAgIENTMi4uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IGZhZjM2YzE0MzdjOTVlNGE4NjgzNTYzM2Q5ODAxYzVmNjM5NmEzYzcKQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KRGF0ZToJV2VkIE9jdCAyOCAyMjoxMzozNiAyMDA5ICswMTAwCgogICAgRml4IG1pbmd3IHRvb2xzIGJ1aWxkCgogICAgbWtpbWFnZSBkb2VzIG5vdCBidWlsZCBkdWUgdG8gbWlzc2luZyBzdHJ0b2tfcigpIGFuZCBnZXRsaW5lKCkgaW1wbGVtZW50YXRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCA2YTU5MGM1ZjVmZDEyY2RkMjdmMzE1MzUyMmFjZmFjMzg1NDU5MGU3CkF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CkRhdGU6CVdlZCBPY3QgMjggMjI6MTM6MzUgMjAwOSArMDEwMAoKICAgIEJ1aWxkaW5nIG9mIEZJVCBpbWFnZXMgZG9lcyBub3Qgd29yay4KCiAgICBUaGUgdHlwZSBpcyBub3Qgc2V0IGZvciBnZW5lcmF0aW9uIG9mIHRoZSBGSVQgaW1hZ2VzLCByZXN1bHRpbmcKICAgIGluIG5vIGltYWdlcyBiZWluZyBjcmVhdGVkIHdpdGhvdXQgcHJpbnRpbmcgb3IgcmV0dXJuaW5nIGFuIGVycm9yCgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgMGE3NjkxZTgyMGUzM2IyM2Y2MWM2ZWEwZWY2ZmE3MjA5OWQxYTZhZQpBdXRob3I6IFJlbmF0byBBbmRyZW9sYSA8cmVuYXRvLmFuZHJlb2xhQGltYWdvcy5pdD4KRGF0ZToJTW9uIE5vdiAyMyAxNjo0NToxNCAyMDA5IC0wNTAwCgogICAgTmlvczI6IGRvX2Jvb21fbGludXgoKToga2VybmVsIGd1bnppcCBpbnB1dCBkYXRhIGludGVncml0eSBwcm9ibGVtIGR1ZSB0bwoJbWlzc2luZyBjYWNoZSBmbHVzaC4KCglBZGRlZCBpbnN0cnVjdGlvbiBhbmQgZGF0YSBjYWNoZXMgZmx1c2guCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Cgpjb21taXQgZGUwMzgyNTM4NmVhZWRiNWUxNzI2MWRkODdjZGU4NmU5YTc2NGJhOQpBdXRob3I6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgpEYXRlOglNb24gTm92IDIzIDE2OjI5OjQwIDIwMDkgLTA1MDAKCiAgICBOaW9zMjogRml4IGNvbXBpbGVyIHdhcm5pbmdzIGluIGxpYl9uaW9zMi9ib2FyZC5jICh1bnVzZWQgdmFyaWFibGVzKQoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgoKY29tbWl0IDU3YmFhMzc5Y2YyZjY3ZGY4OWE1YzYwNTI3NjdmZDI1ZGFmZjIwYmQKQXV0aG9yOiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KRGF0ZToJTW9uIE5vdiAyMyAxNTo1NDoyNSAyMDA5IC0wNTAwCgogICAgTmlvczIvTmlvczogUmVtb3ZlIHVubmVjZXNzYXJ5IChyZXNpZHVhbCkgbGlua2VyIE5pb3MgY29tbWFuZCBzY3JpcHRzIGZyb20KCXRoZSBzdGFuZGFsb25lIGV4YW1wbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgoKY29tbWl0IGViNWViMmIwZjc0NGYwY2JhNDA1MTYwYzVkMDEzMzVjNDBmMDlhY2YKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBOb3YgMTkgMTQ6MDM6MTcgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogQ2xlYW51cCBQUEM0eHggSTJDIGluZnJhc3RydWN0dXJlCgogICAgVGhpcyBwYXRjaCBjbGVhbnMgdXAgdGhlIFBQQzR4eCBJMkMgaW50cmFzdHJ1Y3R1cmU6CgogICAgLSBVc2UgQyBzdHJ1Y3QgdG8gZGVzY3JpYmUgdGhlIEkyQyByZWdpc3RlcnMgaW5zdGVhZCBvZiBkZWZpbmVzCiAgICAtIENvZGluZyBzdHlsZSBjbGVhbnVwIChicmFjZXMsIHdoaXRlc3BhY2UsIGNvbW1lbnRzLCBsaW5lIGxlbmd0aCkKICAgIC0gRXh0cmFjdCBjb21tb24gY29kZSBmcm9tIGkyY19yZWFkKCkgYW5kIGkyY193cml0ZSgpCiAgICAtIFJlbW92ZSB1bm5lZWRlZCBJSUMgZGVmaW5lcyBmcm9tIHBwYzQwNS5oICYgcHBjNDQwLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYjJmNjE4ZjIxNTBiMTViMjY3NGYxMWQwOWUxYzBmZGZlNDYwYzFjZApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE5vdiAxOSAxMTo0OTozNiAyMDA5ICswMTAwCgogICAgcHBjNHh4OiBSZW1vdmUgc29tZSB0ZXN0aW5nIGNvZGUgZnJvbSA0eHhfcGNpZS5jCgogICAgVGhpcyBjb2RlIGdvdCBpbmNsdWRlZCBhY2NpZGVudGFsbHkuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDRlNTc0YzRlMmQzNzc2ZDlkYjYyZGNhNGNhM2M3M2JlMTU3NGFmNDMKQXV0aG9yOiBEYW5pZWwgR29yc3Vsb3dza2kgPERhbmllbC5Hb3JzdWxvd3NraUBlc2QuZXU+CkRhdGU6CU1vbiBNYXkgMTggMTM6MjA6NTQgMjAwOSArMDIwMAoKICAgIGF0OTE6IEV4dGVuZGVkIHNvZnRfaTJjIGRyaXZlciBmb3IgQVQ5MVNBTTkyNjMgU29DCgogICAgV2hpbGUgaGFyZF9pMmMgc3VwcG9ydCBpcyBub3QgYXZhaWxhYmxlCiAgICAoc2VlIGh0dHA6Ly9saXN0cy5kZW54LmRlL3BpcGVybWFpbC91LWJvb3QvMjAwOS1NYXJjaC8wNDk3NTEuaHRtbCksCiAgICB0aGlzIHBhdGNoIGVuYWJsZXMgc29mdF9pMmMgb24gQVQ5MVNBTTkyNjMgU29DLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBHb3JzdWxvd3NraSA8RGFuaWVsLkdvcnN1bG93c2tpQGVzZC5ldT4KCmNvbW1pdCAzOTZmZDE3MzM4YjliZjFmODRmNDk0ZWMxODYwNDI3ZTE4ODY4ZWRlCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJRnJpIE9jdCAxNiAxNzozNjoyNyAyMDA5IC0wNTAwCgogICAgQWRkICd0cnVlJyBhbmQgJ2ZhbHNlJyBjb21tYW5kcwoKICAgIFRoZXNlIGNvbW1hbmRzIGFyZSBvbmx5IGVuYWJsZWQgd2hlbiB0aGUgaHVzaCBzaGVsbCBpcyBlbmFibGVkIGFuZCBjYW4KICAgIGJlIHVzZWZ1bCBpbiBzY3JpcHRzIHN1Y2ggYXM6CgogICAgd2hpbGUgdHJ1ZSBkbwoJZWNobyAiQm9vdGluZyBPUy4uLiI7CglydW4gJGJvb3RjbWQ7CgllY2hvICJCb290aW5nIE9TIGZhaWxlZCI7CglzbGVlcCAxMDsKICAgIGRvbmUKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDRlMWNhOTNiNmJhZTM0YjY4YmU5MjgwYjQzYmYwMjg5ZDk5NDY1NmMKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglGcmkgT2N0IDE2IDE3OjM2OjI2IDIwMDkgLTA1MDAKCiAgICBjbWRfaGVscDogR2VuZXJhbCBjbGVhbnVwCgogICAgU2hvcnRlbiB0aGUgb3Zlcmx5LXZlcmJvc2UgaGVscCBtZXNzYWdlIG9mICdoZWxwJyBhbmQgY2xlYW4gdXAgc29tZQogICAgcmVkdW5kYW50IGlmZGVmZXJ5IHdoaWxlIHdlJ3JlIGF0IGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgNmI4ZjVhZDEwZjU2NzM2MmEzNjgyODQwZjU5YmEwZmM0NzBhZjMxOQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBPY3QgMTYgMTc6MzY6MjUgMjAwOSAtMDUwMAoKICAgIGNvbW1hbmQuYzogQnJlYWsgY29tbWFuZHMgb3V0IHRvIGFwcHJvcHJpYXRlIGNtZF8qLmMgZmlsZXMKCiAgICBjb21tYW5kLmMgc2hvdWxkIGNvbnRhaW4gY29tbW9uIGNvZGUgcmVsYXRlZCB0byBjb21tYW5kcywgbm90CiAgICBtaXNjZWxsYW5lb3VzIGNvbW1hbmQgaW1wbGVtZW50YXRpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgZmNmZmI2ODBlNzdmY2I0ODU5OGQ0YTk5NDRkYmUyZDQ1MDMxNzBlMApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIE9jdCAxNCAxOToyODowMyAyMDA5IC0wNDAwCgogICAgc2Y6IGZpeCBzdG1pY3JvIG9mZnNldCBzZXR1cCB3aGlsZSBlcmFzaW5nCgogICAgUmVwb3J0ZWQtYnk6IFBldGVyIEdvbWJvcyA8Z29tYm9zQHByb3RlY3RhLmh1PgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGQzOTRhNzc5NTAyN2Q5NmNhNTU3OTlkZjQwYmQ1YzRhMTNkYmVlYmUKQXV0aG9yOiBKYXNvbiBNY011bGxhbiA8bWNtdWxsYW5AbmV0YXBwLmNvbT4KRGF0ZToJRnJpIE9jdCA5IDE3OjEyOjIzIDIwMDkgLTA0MDAKCiAgICBzZjogbmV3IGRyaXZlciBmb3IgV2luYm9uZCBXMjVYMTYvMzIvNjQgZGV2aWNlcwoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIE1jTXVsbGFuIDxqYXNvbi5tY211bGxhbkBnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgY2FkYTMxNTEwMGM4ODg5NGI4NTk3MmE5MTMwOWE2ZjI0MTM5NjZiNgpBdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KRGF0ZToJVGh1IE9jdCAxIDIzOjU1OjE3IDIwMDkgKzAyMDAKCiAgICBtcGM4MjYwOiBtb3ZlIEZEVCBtZW1vcnkgbm9kZSBmaXh1cCBpbnRvIGNvbW1vbiBDUFUgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbC56aXN3aWxlckBub3Nlci5jb20+CiAgICBUZXN0ZWQtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IGYyY2VhNDA1ZjgzZGE0NmI3MjA5OGVhODc0ZmIzZWVmZTE4NWQzMTIKQXV0aG9yOiBQby1ZdSBDaHVhbmcgPHJhdGJlcnQuY2h1YW5nQGdtYWlsLmNvbT4KRGF0ZToJV2VkIFNlcCAyMyAxNTo1MjozNSAyMDA5ICswODAwCgogICAgQWRkIGRyaXZlciBmb3IgRlRSVEMwMTAgcmVhbCB0aW1lIGNsb2NrCgogICAgU2lnbmVkLW9mZi1ieTogUG8tWXUgQ2h1YW5nIDxyYXRiZXJ0QGZhcmFkYXktdGVjaC5jb20+CgogICAgRWRpdGVkIGNvbW1pdCBtZXNzYWdlLgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjMDM1NmE4ODAxMTMzMDY0NmU5NjBkZmFjOGEyYzkwOWJlZGUzMzA0CkF1dGhvcjogTWFyayBKYWNrc29uIDxtcGZqLWxpc3RAbWltYy5jby51az4KRGF0ZToJTW9uIEF1ZyAxNyAxNjo0Mjo1MiAyMDA5ICswMTAwCgogICAgTUlNQzIwMDogc2V0IGRlZmF1bHQgZmJtZW0gdmFsdWUKCiAgICBUaGlzIHBhdGNoIGFkZHMgYSBkZWZhdWx0IGJvb3RhcmdzICJmYm1lbSIgdmFsdWUgdG8gdGhlCiAgICBDT05GSUdfQk9PVEFSR1Mgc3RyaW5nIGZvciB0aGUgTUlNQzIwMCBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrIEphY2tzb24gPG1wZmpAbWltYy5jby51az4KCmNvbW1pdCAxMGE1YTc5OTEyNTgwMTlhZjE1NWJjMTliM2IyNDZhYWE3MDhiMGUyCkF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgpEYXRlOglUaHUgTm92IDE5IDIzOjA0OjQyIDIwMDkgLTA1MDAKCiAgICBOQU5EOiBBZGQgU3VwcG9ydCBmb3IgNEsgcGFnZSBzaXplIGluIERhVmluY2kgTkFORCBkcml2ZXIKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgTkFORCBkZXZpY2VzIHdpdGggYSBwYWdlIHNpemUgb2YKICAgIDRLIGluIHRoZSBEYVZpbmNpIE5BTkQgZHJpdmVyLiBUaGUgbGF5b3V0IG1hdGNoZXMgdGhlIGxheW91dCB0aGF0IFRJIHVzZXMKICAgIGZvciA0SyBwYWdlIHNpemUgTkFORCBkZXZpY2VzIGluIHRoZSBrZXJuZWwgTkFORCBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgoKY29tbWl0IDE0Y2UwMmM4ODExNjMxNmEwMjg1Y2M3ZDljMDVmODMzNjdhNWFhZTgKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgpEYXRlOglXZWQgTm92IDE4IDE2OjI5OjI5IDIwMDkgKzAxMDAKCiAgICBwcGM0eHg6IFJlbW92ZSB1bnVzZWQgZmVhdHVyZXMgZnJvbSBQTUM0NDAgYm9hcmQgc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggc2hyaW5rcyB0aGUgUE1DNDQwIHUtYm9vdCBiaW5hcnkgKGZyb20gbmV4dCBicmFuY2gpCiAgICB0byBmaXQgaW50byAzODRrQiBhZ2Fpbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDYyOWFiOTliM2IxOWMxYjdlMDZhN2M0ZTVkNjY2MTM4YmM5MjRjN2MKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgpEYXRlOglXZWQgTm92IDE4IDE2OjI4OjQyIDIwMDkgKzAxMDAKCiAgICBwcGM0eHg6IFJlbW92ZSBjb25mdXNpbmcgY29tbWVudAoKICAgIFRoaXMgaXMgbm90IHRoZSBzZXF1b2lhIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNzllMmQ4ZGYzNzc2YjY2NzI1N2U2MDlhZWZlZmEwNzFiNGZlMTNhMgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIE5vdiAxNyAxNTo1MzowMCAyMDA5ICswMTAwCgogICAgcHBjNHh4OiBhbHByOiBSZW1vdmUgc29tZSBub3QgbmVlZGVkIGNvbW1hbmRzIHRvIG1ha2UgaW1hZ2UgZml0IGFnYWluCgogICAgVGhlIGxhdGVzdCBjaGFuZ2VzIGluIHRoZSB1LWJvb3QvbmV4dCBicmFuY2ggaW5jcmVhc2VkIHRoZSBzaXplIG9mIHRoZQogICAgYWxwciBpbWFnZSBhIGJpdCBtb3JlLiBOb3cgaXQgZG9lc24ndCBmaXQgaW50byB0aGUgMjU2ayByZXNlcnZlZCBmb3IgaXQuCiAgICBUaGlzIHBhdGNoIG5vdyByZW1vdmVzIHRoZSBjb21tYW5kcyAiYXNrZW52IiBhbmQgImlycSIgd2hpY2ggYXJlIG5vdAogICAgbmVlZGVkIGluIHRoZSBwcm9kdWN0aW9uIHN5c3RlbXMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQ2M6IFBpZXRlciBWb29ydGh1aWpzZW4gPHBpZXRlci52b29ydGh1aWpzZW5AcHJvZHJpdmUubmw+Cgpjb21taXQgNmM3MDA0OWJkMTRlOGU4MTc2NDU3MDczMmJlN2YzNGE4OTgzMWYwOQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE5vdiAxMiAxNzoxOTozNyAyMDA5ICswMTAwCgogICAgcHBjNHh4OiBDb25zb2xpZGF0ZSBwY2lfbWFzdGVyX2luaXQoKSBmdW5jdGlvbgoKICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgZHVwbGljdGVkIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgcGNpX21hc3Rlcl9pbml0KCkKICAgIGZ1bmN0aW9uIGJ5IGludHJvZHVjaW5nIGEgd2VhayBkZWZhdWx0IGZ1bmN0aW9uIGZvciBpdC4gSXQgY2FuIGJlCiAgICBvdmVycmlkZGVuIGJ5IGEgYm9hcmQgc3BlY2lmaWMgdmVyc2lvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYTc2MGIwMjAzMTU1ZGE2ZmI4YjhlOTA4NjE2OWJiODdkMDlkNzZmYQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE5vdiAxMiAxNjo0MTowOSAyMDA5ICswMTAwCgogICAgcHBjNHh4OiBDb25zb2xpZGF0ZSBwY2lfcHJlX2luaXQoKSBmdW5jdGlvbgoKICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgZHVwbGljdGVkIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgcGNpX3ByZV9pbml0KCkKICAgIGZ1bmN0aW9uIGJ5IGludHJvZHVjaW5nIGEgd2VhayBkZWZhdWx0IGZ1bmN0aW9uIGZvciBpdC4gVGhpcyB3ZWFrIGRlZmF1bHQKICAgIGhhcyBhIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBmb3Igc29tZSBQUEMgdmFyaWFudHMuIEl0IGNhbiBiZQogICAgb3ZlcnJpZGRlbiBieSBhIGJvYXJkIHNwZWNpZmljIHZlcnNpb24uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDEwOTU0OTNhNWQ0YzE2ZjQ4MWE3ODNmNmY1NGQ4M2FkMGUwN2RmYTAKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBOb3YgMTIgMTI6MDA6NDkgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogQ29uc29saWRhdGUgcGNpX3RhcmdldF9pbml0KCkgZnVuY3Rpb24KCiAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGR1cGxpY3RlZCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHBjaV90YXJnZXRfaW5pdCgpCiAgICBmdW5jdGlvbiBieSBpbnRyb2R1Y2luZyBhIHdlYWsgZGVmYXVsdCBmdW5jdGlvbiBmb3IgaXQuIFRoaXMgd2VhayBkZWZhdWx0CiAgICBoYXMgYSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZm9yIDQ0MEVQKHgpL0dSKHgpIFBQQydzLiBJdCBjYW4gYmUKICAgIG92ZXJyaWRkZW4gYnkgYSBib2FyZCBzcGVjaWZpYyB2ZXJzaW9uIChlLmcuIFBNQzQ0MCwga29yYXQpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgoKY29tbWl0IDVlMWRlZDU1OGI3Y2MyOGE2MmMxNDU5OGY2NDM3MDIzYjYyNjI0NDQKQXV0aG9yOiBIdWkuVGFuZyA8emV0YWxhYnNAZ21haWwuY29tPgpEYXRlOglXZWQgTm92IDE4IDE2OjI0OjA0IDIwMDkgKzA4MDAKCiAgICBTM0MyNDEwIE5BTkQgRmxhc2ggQWRkIE1pc3NpbmcgRnVuY3Rpb24KCiAgICBUaGlzIHBhdGNoIGFkZCBuYW5kX3JlYWRfYnVmKCkgZm9yIFMzQzI0MTAgTkFORCBTUEwuCiAgICBJbiBuYW5kX3NwbC9uYW5kX2Jvb3QuYywgbmFuZF9ib290KCkgd2lsbCBjaGVjayBuYW5kLT5zZWxlY3RfY2hpcCwKICAgIHNvIG5hbmQtPnNlbGVjdF9jaGlwIHNob3VsZCBhbHNvIGJlIGluaXRpYWxpemVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEh1aS5UYW5nIDx6ZXRhbGFic0BnbWFpbC5jb20+Cgpjb21taXQgNmNkNzUyZjkyN2U1MTVlNjNhMDM4ZmEzNjNlZGNlZWM1YTU5YzAyOApBdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KRGF0ZToJTW9uIE5vdiAxNiAxMzozMjowMSAyMDA5IC0wNTAwCgogICAgTkFORDogVXBkYXRlIHJlYWRfcmVhZF9zdWJwYWdlIEFQSSBjaGVjawoKICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyBhIGNoZWNrIGNvbmRpdGlvbiBpbiB0aGUgTkFORCBkcml2ZXIuCiAgICBUaGUgY2hlY2sgY29uZGl0aW9uIGlzIHNpbWlsYXQgdG8gd2hhdCBpcyBpbiBsaW51eC9uZXh0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KCmNvbW1pdCBiYjNlOTgyOGU3ZmJjYzllNDUxOGU1MTU5Mjg3NmY0YTA5OTdkOWVjCkF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgpEYXRlOglNb24gTm92IDE2IDEzOjMxOjQ3IDIwMDkgLTA1MDAKCiAgICBOQU5EOkV4dGVuZGluZyB0aGUgbmFuZF9lY2NsYXlvdXQgc3RydWN0dXJlCgogICAgTkFORHMgd2l0aCBwYWdlIHNpemUgb2YgbGVzc2VyIHRoYW4gYW5kIGVxdWFsIHRvIDJLIGFyZQogICAgcmVhY2hpbmcgRU9MLiBUaGV5IGFyZSBiaW5nIHJlcGxhY2VkIHdpdGggTkFORHMgb2YKICAgIHBhZ2Ugc2l6ZSA0SyBhbmQgYWJvdmUuCiAgICBUbyBzdXBwb3J0IHRoaXMgd2UgaGF2ZSB0byBleHRlbmQgdGhlIGVjY3BvcyBmaWVsZAoKICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KCmNvbW1pdCAzZmZjMGQ2MWJhZDdkOTg2ZTM0NGNlNzA2MmIzN2M1YzhmMDRmYjBlCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVR1ZSBPY3QgMjcgMTk6NTg6MDkgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogSW5pdGlhbGl6ZSBtYWduZXRpYyBjb3VwbGVyIG9uIFZPTTQwNSBib2FyZHMKCiAgICBUaGlzIHBhdGNoIGZpeGVzIGFuIHVnbHkgYmVoYXZpb3Igb2YgdGhlIElMNzEyIG1hZ25ldGljIGNvdXBsZXIKICAgIGFzIHVzZWQgb24gVk9NNDA1LiBUaGVzZSBwYXJ0cyB3aWxsIHJlbWVtYmVyIHRoZWlyIGxhc3Qgc3RhdGUKICAgIG92ZXIgYSBwb3dlciBjeWNsZSB3aGljaCBtaWdodCBjYXVzZSB1bndhbnRlZCBiZWhhdmlvci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGJlMGRiM2UzMTQxYzZjNmI0ZTIzMmI1MTA5MWYzNWEyODRjYzU0ZTUKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgpEYXRlOglNb24gT2N0IDI2IDA5OjU4OjQ1IDIwMDkgKzAxMDAKCiAgICBwcGM0eHg6IEluaXRpYWxpemUgbWFnbmV0aWMgY291cGxlcnMgaW4gUExVNDA1CgogICAgVGhpcyBwYXRjaCBmaXhlcyBhbiB1Z2x5IGJlaGF2aW9yIG9mIHRoZSBJTDcxMiBtYWduZXRpYyBjb3VwbGVycwogICAgYXMgdXNlZCBvbiBQTFU0MDUuIFRoZXNlIHBhcnRzIHdpbGwgcmVtZW1iZXIgdGhlaXIgbGFzdCBzdGF0ZQogICAgb3ZlciBhIHBvd2VyIGN5Y2xlIHdoaWNoIG1pZ2h0IGNhdXNlIHVud2FudGVkIGJlaGF2aW9yLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDY3ZjU0YzY2YWNkNDY5ODcwZWY2OTQ2ZTE1OTFiZmNjMDJkZTFiMwpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+CkRhdGU6CU1vbiBPY3QgMjYgMDk6NTU6NDAgMjAwOSArMDEwMAoKICAgIEFkZCBtaW5pbWFsIFNKQTEwMDAgaGVhZGVyIGZvciBiYXNpYyBDQU4gbW9kZQoKICAgIFRoaXMgcGF0Y2ggaXMgaW4gcHJlcGFyYXRpb24gZm9yIHRoZSB1cGNvbWluZyBQTFU0MDUgYm9hcmQgZml4LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMWQyZTk2ZGU1NmNjNTdlMjVhMTliYzQwZDI5N2YzNmM0YzQ0NDNhMgpBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CU1vbiBOb3YgMiAyMDozNjoyNiAyMDA5ICswMTAwCgogICAgT01BUDIvMzogSTJDOiBBZGQgc3VwcG9ydCBmb3Igc2Vjb25kIGFuZCB0aGlyZCBidXMKCiAgICBBZGQgc3VwcG9ydCB0byB1c2Ugc2Vjb25kIGFuZCB0aGlyZCBJMkMgYnVzLCB0b28uCgogICAgQnVzIDAgaXMgc3RpbGwgdGhlIGRlZmF1bHQsIGJ1dCBieSBjYWxsaW5nIGkyY19zZXRfYnVzX251bSgxLzIpIGJlZm9yZSBkb2luZwogICAgSTJDIGFjY2Vzc2VzLCBjb2RlIGNhbiBzd2l0Y2ggdG8gYnVzIDEgYW5kIDIsIHRvby4gRG9uJ3QgZm9yZ2V0IHRvIHN3aXRjaAogICAgYmFjayBhZnRlcndhcmRzLCB0aGVuLgoKICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Cgpjb21taXQgYzc1OGU5NDdhYTdkMzlhMmJlNjA3ZWNkZWRkODE4YWQzMDA4MDdiMgpBdXRob3I6IEFtdWwgS3VtYXIgU2FoYSA8YW11bC5zYWhhQHNhbXN1bmcuY29tPgpEYXRlOglXZWQgTm92IDQgMTA6Mzg6NDYgMjAwOSArMDUzMAoKICAgIEVOViBWYXJpYWJsZSBzdXBwb3J0IGZvciBGbGV4LU9uZU5BTkQKCiAgICBEZWZpbmUgYW5kIHVzZSBDT05GSUdfRU5WX0FERFJfRkxFWCBhbmQgQ09ORklHX0VOVl9TSVpFX0ZMRVgKICAgIGZvciBzdG9yaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSb2hpdCBIYWdhcmd1bmRnaSA8aC5yb2hpdEBzYW1zdW5nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFtdWwgS3VtYXIgU2FoYSA8YW11bC5zYWhhQHNhbXN1bmcuY29tPgoKY29tbWl0IGNhY2JlOTE5NTg0MTkzZjY0ZTc0MDg4ZTAzZjA2OGU1Mjc3NWJiODYKQXV0aG9yOiBBbXVsIEt1bWFyIFNhaGEgPGFtdWwuc2FoYUBzYW1zdW5nLmNvbT4KRGF0ZToJRnJpIE5vdiA2IDE3OjE1OjMxIDIwMDkgKzA1MzAKCiAgICBGbGV4LU9uZU5BTkQgZHJpdmVyIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgRmxleC1PbmVOQU5EIGRldmljZXMuCgogICAgU2lnbmVkLW9mZi1ieTogUm9oaXQgSGFnYXJndW5kZ2kgPGgucm9oaXRAc2Ftc3VuZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbXVsIEt1bWFyIFNhaGEgPGFtdWwuc2FoYUBzYW1zdW5nLmNvbT4KCmNvbW1pdCAzNTIwOWNiY2VlYmUyMTJhOGM1ZWMxN2Q1NTI5NjBmOGJkNDcyNWYzCkF1dGhvcjogTWluZ2thaSBIdSA8TWluZ2thaS5odUBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgT2N0IDIwIDE2OjU4OjE3IDIwMDkgKzA4MDAKCiAgICBmc2xfZWxiY19uYW5kOiByZW1vdmUgdGhlIGJidCBkZXNjcmlwdG9ycyByZWxvY2F0aW9uIGZpeHVwCgogICAgVGhlIGNvbW1pdCA2NjM3MmZlMiBtYW51YWxseSByZWxvY2F0ZWQgdGhlIGJidCBwYXR0ZXJuIHBvaW50ZXIsCiAgICB3aGljaCBjYW4gYmUgcmVtb3ZlZCBieSB1c2luZyBmdWxsIHJlbG9jYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogTWluZ2thaSBIdSA8TWluZ2thaS5odUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDI1NjQzZDRkYTI1N2U1MWY2MjAwYjIxM2M3NWRlNGZiNWIzNDU3ODAKQXV0aG9yOiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBPY3QgMjAgMTY6NTg6MTYgMjAwOSArMDgwMAoKICAgIHBwYy84NXh4OiBtYWtlIGJvb3QgZnJvbSBOQU5EIGZ1bGwgcmVsb2NhdGlvbiB0byBSQU0KCiAgICBUYWtlIGFkdmFudGFnZSBvZiB0aGUgbGF0ZXN0IGZ1bGwgcmVsb2NhdGlvbiBjb21taXQgb2YgUFBDIHBsYXRmb3JtCiAgICBmb3IgYm9vdCBmcm9tIE5BTkQuCgogICAgU2lnbmVkLW9mZi1ieTogTWluZ2thaSBIdSA8TWluZ2thaS5odUBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgN2U4NjY2MWNkNzc3ZWVjMWU4MWM1ZTU3YzQ2OGU4MTEzOGZkYTk4MwpBdXRob3I6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgpEYXRlOglTYXQgTm92IDcgMTY6Mjc6MDEgMjAwOSAtMDUwMAoKICAgIE5BTkQ6IGZpeCAicmF3IiByZWFkcyB3aXRoIEVDQyBzeW5kcm9tZSBsYXlvdXRzCgogICAgVGhlIHN5bmRyb21lIGJhc2VkIHBhZ2UgcmVhZC93cml0ZSByb3V0aW5lcyBzdG9yZSBFQ0MsIGFuZCBwb3NzaWJseSBvdGhlcgogICAgIk9PQiIgZGF0YSwgcmlnaHQgYWZ0ZXIgZWFjaCBjaHVuayBvZiBFQ0MnZCBkYXRhLiAgV2l0aCBFQ0MgY2h1bmsgc2l6ZSBvZgogICAgNTEyIGJ5dGVzIGFuZCBhIGxhcmdlIHBhZ2UgKDJLaUIpIE5BTkQsIHRoZSBsYXlvdXQgaXM6CgogICAgICBkYXRhLTAgT09CLTAgZGF0YS0xIE9PQi0xIGRhdGEtMiBPT0ItMiBkYXRhLTMgT09CLTMgT09CLWxlZnRvdmVyCgogICAgV2hlcmUgT09CeCBpcyAocHJlcGFkLCBFQ0MsIHBvc3RwYWQpLiAgSG93ZXZlciwgdGhlIGN1cnJlbnQgInJhdyIgcm91dGluZXMKICAgIHVzZSBhIHRyYWRpdGlvbmFsIGxheW91dCAtLSBkYXRhIE9PQiwgZGlzcmVnYXJkaW5nIHRoZSBwcmVwYWQgYW5kIHBvc3RwYWQKICAgIHZhbHVlcyAtLSBzbyB3aGVuIHRoZXkncmUgdXNlZCB3aXRoIHRoYXQgdHlwZSBvZiBFQ0MgaGFyZHdhcmUsIHRob3NlIGNhbGxzCiAgICBtaXggdXAgdGhlIGRhdGEgYW5kIE9PQi4gIFdoaWNoIG1lYW5zLCBpbiBwYXJ0aWN1bGFyLCB0aGF0IGJhZCBibG9jawogICAgdGFibGVzIHdvbid0IGJlIGZvdW5kIG9uIHN0YXJ0dXAsIHdpdGggZGF0YSBjb3JydXB0aW9uIGFuZCByZWxhdGVkIGNoYW9zCiAgICBlbnN1aW5nLgoKICAgIFRoZSBjdXJyZW50IHN5bmRyb21lLWJhc2VkIGRyaXZlcnMgaW4gbWFpbmxpbmUgYWxsIHNlZW0gdG8gdXNlIG9uZSBjaHVuawogICAgcGVyIHBhZ2U7IHByZXN1bWFibHkgdGhleSBoYXZlbid0IG5vdGljZWQgc3VjaCBidWdzLgoKICAgIEZpeCB0aGlzLCBieSBhZGRpbmcgcmVhZC93cml0ZSBwYWdlX3Jhd19zeW5kcm9tZSgpIHJvdXRpbmVzIGFzIHNpYmxpbmdzIG9mCiAgICB0aGUgZXhpc3Rpbmcgbm9uLXJhdyByb3V0aW5lczsgInJhdyIganVzdCBtZWFucyB0byBieXBhc3MgdGhlIEVDQwogICAgY29tcHV0YXRpb25zLCBub3QgY2hhbmdlIGRhdGEgYW5kIE9PQiBsYXlvdXQuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgTW9ydG9uIDxha3BtQGxpbnV4LWZvdW5kYXRpb24ub3JnPgogICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgV29vZGhvdXNlIDxEYXZpZC5Xb29kaG91c2VAaW50ZWwuY29tPgoKY29tbWl0IDVkZjNjMmI2MmNlYmFhMGRkYjI4MTczNjRmOTM3MjZlNWRiZTM1MjUKQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+CkRhdGU6CVNhdCBOb3YgNyAxNDoyNToxOCAyMDA5IC0wNTAwCgogICAgTkFORDogRG9uJ3Qgd2FsayBwYXN0IGVuZCBvZiBvb2JmcmVlW10KCiAgICBXaGVuIGNvbXB1dGluZyBvb2JhdmFpbCBmcm9tIHRoZSBsaXN0IG9mIGZyZWUgYXJlYXMgaW4gdGhlIE9PQiwKICAgIGRvbid0IGFzc3VtZSB0aGVyZSB3aWxsIGFsd2F5cyBiZSBhbiB1bnVzZWQgc2xvdCBhdCB0aGUgZW5kLgogICAgVGhpcyBzeW5jcyB1cCB3aXRoIHRoZSBrZXJuZWwgTkFORCBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgoKY29tbWl0IDE4YjVhNGI0M2FmM2M4MzU5Y2I1NjhmNGZhMzJkNmI5ZGNlYmJmMjYKQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+CkRhdGU6CVNhdCBOb3YgNyAxNDoyNTowMyAyMDA5IC0wNTAwCgogICAgTkFORDogVXBkYXRlIGNoZWNrIGNvbmRpdGlvbiBmb3IgbmFuZF9yZWFkX3BhZ2VfaHdlY2MgQVBJCgogICAgVGhlIHBhdGNoIHVwZGF0ZXMgdGhlIGNoZWNrIGNvbmRpdGlvbiBmb3IgZGV0ZXJtaW5pbmcKICAgIHdoZXRoZXIgdGhlIEVDQyBjb3JyZWN0aW9ucyBoYXMgZmFpbGVkLgogICAgVGhpcyBtYWtlcyBpdCBzaW1pbGFyIHRvIHdoYXQgaXMgaW4gdGhlIGtlcm5lbCBOQU5EIGRyaXZlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Cgpjb21taXQgZTI1ZWUwMzk2MjI2ZmI1NjY3OTcwMmQwMzYxY2YyNjQ1NTA0ZTdmNgpBdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KRGF0ZToJU2F0IE5vdiA3IDE0OjI0OjUwIDIwMDkgLTA1MDAKCiAgICBOQU5EOiBVcGRhdGluZyBjb21tZW50cy9leHBsYW5hdGlvbnMgaW4gdGhlIE5BTkQgZHJpdmVyCgogICAgUGF0Y2ggdXBkYXRlcyB0aGUgY29tbWVudHMgYW5kIGV4cGxhbmF0aW9ucyBmb3IKICAgIHRoZSBhcmd1bWVudHMgdG8gdmFyaW91cyBmdW5jdGlvbnMuCgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgoKY29tbWl0IGFhZDRhMjhiMjUxOGUxZDI0ZWU2MDZkOWVhMzFmOWI0ZGQwMjk3NzcKQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+CkRhdGU6CVNhdCBOb3YgNyAxNDoyNDozNCAyMDA5IC0wNTAwCgogICAgTkFORDogU3VicGFnZSBzaGlmdCBmb3IgZWNjX3N0ZXBzIGVxdWFsIHRvIDE2CgogICAgVGhpcyB3YXMgb3JpZ2luYWxseSBwYXJ0IG9mIFRob21hcyBHbGVpeG5lcidzIHBhdGNoIGZvcgogICAgYWRkaW5nIHN1cHBvcnQgZm9yIDRLaUIgcGFnZXMuCiAgICBUaGlzIGlzIG5vdCBwYXJ0IG9mIHRoZSBVLUJvb3QgTkFORCBkcml2ZXIgc28gdXBkYXRpbmcgdGhlCiAgICBkcml2ZXIgd2l0aCB0aGlzIHRvIHN5bmMgdXAgd2l0aCB0aGUga2VybmVsIE5BTkQgZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KCmNvbW1pdCAzNmUwYjk4ZWM4MzJiYjVlYzQyZDZlMjQ5MDU4ZDViODRmNzVkZmY4CkF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgpEYXRlOglTYXQgTm92IDcgMTQ6MjQ6MjAgMjAwOSAtMDUwMAoKICAgIE5BTkQ6IFJlbW92ZSBjb21tZW50ZWQgb3V0IGNvZGUKCiAgICBQYXRjaCByZW1vdmVzIGFscmVhZHkgY29tbWVudGVkIG91dCBkZWFkIGNvZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Cgpjb21taXQgNGY0MWU3ZWExYTE3YmE3MjA3Y2E0MTM3OWJmMzQ0YjMxN2U3MmMxMgpBdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KRGF0ZToJU2F0IE5vdiA3IDE0OjI0OjA2IDIwMDkgLTA1MDAKCiAgICBOQU5EOiBDb3JyZWN0IHRoZSAiY2hpcF9zaGlmdCIgY2FsY3VsYXRpb24KCiAgICBUaGlzIHBhdGNoIHVwZGF0ZXMgdGhlICJjaGlwX3NoaWZ0IiBjYWxjdWxhdGlvbiBpbiB0aGUKICAgIE5BTkQgZHJpdmVyLiBUaGlzIGlzIGJlaW5nIGRvbmUgdG8gc3luYyB1cCB0aGUgTkFORCBkcml2ZXIgd2l0aAogICAgdGhlIGtlcm5lbCBOQU5EIGRyaXZlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Cgpjb21taXQgYWFhOGVlYzUzMjg3NmM0N2FjZmQzMWJmOWI1NzNhMDBlYWFkOTJhZQpBdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KRGF0ZToJRnJpIE9jdCAzMCAxMzo1MToyMyAyMDA5IC0wNDAwCgogICAgTkFORDogVXBkYXRlIHRvIHN1cHBvcnQgNjQgYml0IGRldmljZSBzaXplCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIE5BTkRzIGdyZWF0ZXIgdGhhbiAyIEdCLgogICAgUGF0Y2ggaXMgYmFzZWQgb24gdGhlIE1URCBOQU5EIGRyaXZlciBpbiB0aGUga2VybmVsLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDU4MWQwNGYxNGQ3YTM5YjYzZDQxOGUyYTIxZTQ0MTAxMjMzMDk2ZDEKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglUaHUgT2N0IDE1IDEwOjQ4OjE4IDIwMDkgLTA1MDAKCiAgICBjbWRfbmFuZDogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgOTU3NGZkNjNhOTdkMDgwZTM3OWYzMGI2YTgxYTEyMjFlYWViNzk3ZQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVRodSBPY3QgMTUgMTA6NDg6MTcgMjAwOSAtMDUwMAoKICAgIGNtZF9uYW5kOiBSZW1vdmUgZHVwbGljYXRlIGluY2x1ZGUKCiAgICBBbHNvIHJlbW92ZSB2YWd1ZSwgdW5uZWNlc3NhcnkgY29tbWVudAoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgY2RiZGJlNjVmNWYwMDZjYmEyMDhhY2NlZTVhMTI2YzY1OWQ0Yjg2NwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CUZyaSBOb3YgMTMgMDg6NTI6MjEgMjAwOSAtMDYwMAoKICAgIHBwYy84NXh4OiBGaXggaG93IHdlIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIENBTSBlbnRyaWVzCgogICAgV2Ugd2VyZSBpbmNvcnJlY3RseSB1c2UgdGhlIG1heCBDQU0gc2l6ZSBhcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4KICAgIHRoZSBhcnJheSBmb3Igc2V0dGluZyB1cCB0aGUgYWRkcm1hcC4gIFdlIHNob3VsZCBiZSB1c2luZyB0aGUgTkVOVFJZCiAgICBmaWVsZCB3aGljaCBpcyB0aGUgbG93IDEyLWJpdHMgb2YgVExCMUNGRy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGZiZDQ3YjY3NTNiMDgxNjI0MzZkOWNjYWQxZTYzYzhkNDNlZGU1NGMKQXV0aG9yOiBNaWtlIFJhcG9wb3J0IDxtaWtlQGNvbXB1bGFiLmNvLmlsPgpEYXRlOglUaHUgTm92IDEyIDE1OjM1OjA4IDIwMDkgKzAyMDAKCiAgICBzbWM5MTF4OiBtYWtlIHNtYzkxMXhfaW5pdGlhbGl6ZSByZXR1cm4gY29ycmVjdCB2YWx1ZQoKICAgIE1ha2Ugc21jOTExeF9pbml0aWFsaXplIHJldHVybiAtMSBvbiBlcnJvciBhbmQgbnVtYmVyIG9mIGludGVyZmFjZXMKICAgIGRldGVjdGVkIG90aGVyd2lzZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIFJhcG9wb3J0IDxtaWtlQGNvbXB1bGFiLmNvLmlsPgogICAgQWNrZWQtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYzQ0ZWZjZjk3YjMzNWRjZWY3ZDAxNGY2NWI3ZDMwOTRlNzlhZGIxMwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IE5vdiAxMiAyMjoyNjowMiAyMDA5IC0wNTAwCgogICAgc21jOTExeF9lZXByb206IGZpeCBidWlsZGluZyBhZnRlciBzbWM5MTF4IG92ZXJoYXVsCgogICAgV2hlbiB0aGUgc21jOTExeCBkcml2ZXIgd2FzIGNvbnZlcnRlZCB0byBORVRfTVVMVEksIHRoZSBzbWM5MTF4IGVlcHJvbSB3YXMKICAgIG1pc3NlZC4gIFRoZSBjb25maWcgb3B0aW9uIG5lZWRlZCB1cGRhdGluZyBhcyB3ZWxsIGFzIG92ZXJoYXVsaW5nIG9mIHRoZQogICAgcmVyZ2lzdGVyIHJlYWQvd3JpdGUgZnVuY3Rpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIFRlc3RlZC1ieTogTWlrZSBSYXBvcG9ydCA8bWlrZS5yYXBvcG9ydEBnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDNhZDk1ZGViMzBhYzczYmQ1N2U5NjZkMzIxMjE1YTE3ZDMyMzZmOWYKQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTm92IDEyIDA3OjI2OjM3IDIwMDkgKzA4MDAKCiAgICBmc2wtZGRyOiBGaXggdGhlIGNoaXAtc2VsZWN0IGludGVybGVhdmluZyBpc3N1ZQoKICAgIGNvbW1pdCAxNTQyZmJkZWVjMGQxZTJhNmRmMTMxODlkZjhkY2IxY2U4ODAyYmUzCiAgICBpbnRyb2R1Y2VkIG9uZSBuZXcgYnVnIHRvIGNoaXAtc2VsZWN0IGludGVybGVhdmluZy4KCiAgICBTaW5nbGUgRERSIGNvbnRyb2xsZXIgYWxzbyBjYW4gZG8gdGhlIGNoaXAtc2VsZWN0CiAgICBpbnRlcmxlYXZpbmcgaWYgdGhlcmUgaXMgZHVhbC1yYW5rIG9yIHF1YWwtcmFuayBESU1Ncy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA2NTFlZjkwZmE2Y2E4MjRjOGU1ODFhZWVmOWUwNGJiYmU3ZjdlOWNlCkF1dGhvcjogamF2aWVyIE1hcnRpbiA8amF2aWVyLm1hcnRpbkB2aXN0YS1zaWxpY29uLmNvbT4KRGF0ZToJVGh1IE9jdCAyOSAwODoyMjo0MyAyMDA5ICswMTAwCgogICAgbXhjX2ZlYzogYXZvaWQgZnJlZSgpIGNhbGxzIHRvIGFscmVhZHkgZnJlZWQgcG9pbnRlcnMuCgogICAgU29tZXRpbWVzLCBpbnNpZGUgTmV0TG9vcCwgZXRoX2hhbHQoKSBpcyBjYWxsZWQgYmVmb3JlIGV0aF9pbml0KCkgaGFzCiAgICBiZWVuIGNhbGxlZC4gVGhpcyBpcyBoYXJtbGVzcyBleGNlcHQgZm9yIGZyZWUoKSBjYWxscyB0byBwb2ludGVycwogICAgd2hpY2ggaGF2ZSBub3QgYmVlbiBhbGxvY2F0ZWQgeWV0LgoKICAgIFRoaXMgcGF0Y2ggaW5pdGlhbGl6ZXMgdGhvc2UgcG9pbnRlcnMgdG8gTlVMTCBhbmQgYWxsb2NhdGVzIHRoZW0gb25seQogICAgdGhlIGZpcnN0IHRpbWUuIFRoaXMgd2F5IHdlIGNhbiBnZXQgcmlkIG9mIGZyZWUgY2FsbHMgaW4gaGFsdCBjYWxsYmFjay4KCiAgICBUaGlzIGhhcyBiZWVuIHRlc3RlZCBpbiBpLk1YMjcgTGl0ZWtpdCBib2FyZCBhbmQgZWxkay00LjIgdG9vbGNoYWlucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYXZpZXIgTWFydGluIDxqYXZpZXIubWFydGluQHZpc3RhLXNpbGljb24uY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBlOGYxNTQ2YTg4YjRhZGU2YTkxMGM0YTc5NThhNzc0ZWUxYjQwMDIzCkF1dGhvcjogamF2aWVyIE1hcnRpbiA8amF2aWVyLm1hcnRpbkB2aXN0YS1zaWxpY29uLmNvbT4KRGF0ZToJVGh1IE9jdCAyOSAwODoxODozNCAyMDA5ICswMTAwCgogICAgbXhjX2ZlYzogZml4IHNvbWUgZXJyb25lb3VzIFBIWSBhY2Nlc3Nlcy4KCiAgICBUaGlzIHBhdGNoIGZpeGVzIGVycm9uZW91cyBhY2Nlc3MgdG8gdGhlIGV0aGVybmV0IFBIWSB3aGljaCBicm9rZSB0aGUgZHJpdmVyLgogICAgMS4gU2VsZWN0b3IgZmllbGQgaW4gdGhlIGF1dG8tbmVnb3RpYXRpb24gcmVnaXN0ZXIgbXVzdCBiZSAweDAwMDAxIGZvcgogICAgdXNpbmcgODAyLjMsIG5vdCAweDAwMDAwIHdoaWNoIGlzIHJlc2V2ZWQuCiAgICAyLiBBY2Nlc3MgdG8gdGhlIFBIWSBhZGRyZXNzIHNwZWNpZmllZCBieSBDT05GSUdfRkVDX01YQ19QSFlBRERSLCBub3QKICAgIDB4MCBmaXhlZCBhZGRyZXNzLgoKICAgIFRoaXMgaGFzIGJlZW4gdGVzdGVkIGluIGkuTVgyNyBMaXRla2l0IGJvYXJkIGFuZCBlbGRrLTQuMiB0b29sY2hhaW5zLgoKICAgIE5vdyB1c2luZyBwcm9wZXIgZGVmaW5lcyBmb3IgYXV0by1uZWdvdGlhdGlvbiByZWdpc3Rlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYXZpZXIgTWFydGluIDxqYXZpZXIubWFydGluQHZpc3RhLXNpbGljb24uY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBmODY1ZmNiYmIzNTg1MWU3NWZlZTljM2EzZmE4ZTBmNzFkOWU2NDYzCkF1dGhvcjogUm9uIExlZSA8cm9uQGRlYmlhbi5vcmc+CkRhdGU6CVdlZCBBdWcgNSAyMDoxNDowMSAyMDA5ICswMjAwCgogICAgQVJNIERvbid0IGlubGluZSB3ZWFrIHN5bWJvbHMKCiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBHQ0MgNC40IGNvbXBsYWlucyBhYm91dCB0aGlzIG5vdy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSb24gTGVlIDxyb25AZGViaWFuLm9yZz4KCmNvbW1pdCBlZmUxMmJjZWM1NWMzZDc3YjllYWQ1NmU2MjAxMGQyNmI2Njc4MWYzCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gTm92IDkgMTQ6MTU6NDIgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogS2F0bWFpOiBBZGQgY2hpcF9jb25maWcgY29tbWFuZAoKICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgS2F0bWFpICJib290c3RyYXAiIGNvbW1hbmQgYW5kIHJlcGxhY2VzIGl0CiAgICB3aXRoIHRoZSBub3cgY29tbW9uIGNvbW1hbmQgImNoaXBfY29uZmlnIi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgY2RhZWQ1ZGMzMWY0MDIzNjEwZjE4MGZlMTU4ZWM4YzZmNWU4NTVhMwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE5vdiA5IDE0OjEzOjQzIDIwMDkgKzAxMDAKCiAgICBwcGM0eHg6IFN3aXRjaCB0byBJMkMgYnVzIG51bWVyIDAgZm9yIGNoaXBfY29uZmlnIGNvbW1hbmQKCiAgICBBbGwgY3VycmVudGx5IGF2YWlsYWJsZSA0eHggZGVyaXZhdHMgaGF2ZSB0aGUgSTJDIGJvb3RzdHJhcCBFRVBST00KICAgIGxvY2F0ZWQgb24gSTJDIGJ1cyBudW1iZXIgMC4gVGhpcyBwYXRjaCBub3cgZmlyc3Qgc2V0cyB0aGlzIGJ1cyBudW1iZXIsCiAgICBzbyB0aGF0IHRoZSBjaGlwX2NvbmZpZyBjb21tYW5kIGFsc28gd29ya3MgZm9yIGJvYXJkIHdpdGggbXVsdGlwbGUKICAgIEkyQyBidXNzZXMsIGxpa2UgS2F0bWFpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5ODVlZGFjY2M0ZmJhZWY2ZDM1N2QxMDRhZWQwOGY4MzkwNThhMzJmCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KRGF0ZToJVHVlIE9jdCAyNyAxMjoxOToxMSAyMDA5ICswMTAwCgogICAgcHBjNHh4OiBBZGQgVUJJIHN1cHBvcnQgdG8gUExVNDA1IGJvYXJkcwoKICAgIC1hZGQgVUJJIHN1cHBvcnQKICAgIC1pbmNyZWFzZSBtYWxsb2MnYWJsZSBtZW1vcnkgc2l6ZQogICAgLWNsZWFudXAgTU9OSVRPUnxGTEFTSF9CQVNFfExFTiBjb25zdGFudHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGQxNGM3ZWMyYjUxZmI5MmM0YTUyMThiMjk5Yjc3MmMzZDE4NjUxMGQKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglNb24gTm92IDkgMTM6MDk6NTcgMjAwOSAtMDgwMAoKICAgIEZpeCBTTUM5MTExMSByZWdyZXNzaW9uOiBscGQ3YTQweCBidWlsZCBmYWlsdXJlcwoKICAgIEJvdGggbHBkN2E0MDAgYW5kIGxwZDdhNDA0IGZhaWxlZCB0byBjb21waWxlIGJlY2F1c2UgdGhleSBoYWQKICAgIENPTkZJR19TTUNfVVNFX0lPRlVOQ1MgZGVmaW5lZDoKCiAgICBleGFtcGxlcy9zdGFuZGFsb25lL3NtYzkxMTExX2VlcHJvbS5jOjM4ODogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgU01DX291dHcnCgogICAgQWxzbyByZW1vdmVkIGFuIG9ycGhhbmVkIHBhcmVuIGluIGxwZDdhNDA0LmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDEwMzFhZTk2MGNlNmNlODMzMjE5MDI3OGEwNmUyZDcyYzJiMjc5M2UKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglNb24gTm92IDkgMTQ6MDE6MDggMjAwOSAtMDgwMAoKICAgIFNNQzkxMTExOiBDbGVhbiB1cCBTTUNfaW54IG1hY3JvcyBvbiB4c2VuZ2luZSBhbmQgeGFlbmlheAoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIGZvbGxvd2luZyB3YXJuaW5nczoKCiAgICBDb25maWd1cmluZyBmb3IgeGFlbmlheCBib2FyZC4uLgogICAgc21jOTExMTFfZWVwcm9tLmM6IEluIGZ1bmN0aW9uICdwcmludF9tYWNhZGRyJzoKICAgIHNtYzkxMTExX2VlcHJvbS5jOjI3ODogd2FybmluZzogc3VnZ2VzdCBwYXJlbnRoZXNlcyBhcm91bmQgKyBvciAtIGluIG9wZXJhbmQgb2YgJgogICAgc21jOTExMTFfZWVwcm9tLmM6MjgxOiB3YXJuaW5nOiBzdWdnZXN0IHBhcmVudGhlc2VzIGFyb3VuZCArIG9yIC0gaW4gb3BlcmFuZCBvZiAmCiAgICAuLi4KICAgIENvbmZpZ3VyaW5nIGZvciB4c2VuZ2luZSBib2FyZC4uLgogICAgc21jOTExMTFfZWVwcm9tLmM6IEluIGZ1bmN0aW9uICdwcmludF9tYWNhZGRyJzoKICAgIHNtYzkxMTExX2VlcHJvbS5jOjI3ODogd2FybmluZzogc3VnZ2VzdCBwYXJlbnRoZXNlcyBhcm91bmQgKyBvciAtIGluc2lkZSBzaGlmdAogICAgc21jOTExMTFfZWVwcm9tLmM6MjgxOiB3YXJuaW5nOiBzdWdnZXN0IHBhcmVudGhlc2VzIGFyb3VuZCArIG9yIC0gaW5zaWRlIHNoaWZ0CgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA4MzBjN2I2NzIyYzZhOTc2MjQxMWJmNTJhN2JmMmZhZTRkYzcxZGFiCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJTW9uIE5vdiA5IDExOjQzOjE4IDIwMDkgLTA4MDAKCiAgICBGaXggQ1M4OTAwIHJlZ3Jlc3Npb24gb24gaW1wYTcgYm9hcmQKCiAgICBUaGUgZm9sbG93aW5nIGVycm9yIHdhcyBzZWVuIG9uIGltcGE3IGJvYXJkLCBkdWUgdG8gaXRzIHVzZSBvZiBhIDMyLWJpdCBidXMKICAgIG9uIENTODkwMC4KICAgIGNzODkwMC5jOjEzNzozNzogZXJyb3I6IG1hY3JvICJnZXRfcmVnX2luaXRfYnVzIiBwYXNzZWQgMiBhcmd1bWVudHMsIGJ1dCB0YWtlcyBqdXN0IDEKCiAgICBUaGlzIHBhdGNoIGdpdmVzIHRoZSBtYWNybyB0aGUgY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBlNWM1ZDllMDgzNGJhY2YxYzQ3ODdmYTc2Y2M0ZTM2OWYyNTk3Y2Y1CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gTm92IDEgMjI6Mzk6NTYgMjAwOSAtMDUwMAoKICAgIGNsYXJpZnkgZXRoIGRyaXZlciBoYWx0L3JlY3Ygc3RlcHMKCiAgICBUaGUgZGV2LT5oYWx0KCkgZnVuYyBjYW4gYmUgY2FsbGVkIGF0IGFueSB0aW1lLCBhbmQgdGhlIGRldi0+cmVjdigpIGZ1bmMKICAgIGRvZXMgbm90IG5lZWQgdG8gdXNlIE5ldFJ4UGFja2V0c1tdIHdoZW4gY2FsbGluZyBOZXRSZWNlaXZlKCkuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA0OTdhYjBlZWM1ZTFlMmRmY2NjMTQxYTQ0ODVjZDZiOTQwZTE0MjRhCkF1dGhvcjogSHVpLlRhbmcgPHpldGFsYWJzQGdtYWlsLmNvbT4KRGF0ZToJVGh1IE5vdiA1IDA5OjU4OjQ0IDIwMDkgKzA4MDAKCiAgICBGaXggY3M4OTAwIGRldi0+cHJpdiBub3QgaW5pdCBpc3N1ZQoKICAgIEVuc3VyZSBhbGwgQ1M4OTAwIGRhdGEgc3RydWN0dXJlcyBhcmUgYXNzaWduZWQgYmVmb3JlIGFjY2Vzc2luZyBkZXZpY2UKCiAgICBTaWduZWQtb2ZmLWJ5OiBIdWkuVGFuZyA8emV0YWxhYnNAZ21haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA0ZmU1MTkzZDQ2NGVjZGFjMjZkZGM3MWIxMzUxYmU1Yjg2YmJmZjI5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgTm92IDMgMTQ6MzQ6NDUgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogNDR4X3NwZF9kZHIyLmM6IEZpeCByZWdpc3RlciBtYWNybyBFQ0NDUiAtPiBFQ0NFUyAoU0RSQU1fRUNDRVMpCgogICAgVGhpcyBlcnJvciBvbmx5IGFwcGVhcnMgd2hlbiBERUJVRyBpcyBlbmFibGVkIGluIHRoaXMgZHJpdmVyLiBUaGF0J3Mgd2h5CiAgICBpdCB3ZW50IHVubm90aWNlZCB0aWxsIG5vdy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOTE2ZWQ5NDQ0ZDNhYjdiNWNkNjMxMjU1NzAwNWYyYTc2NGE4YmFmNwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE9jdCAyOSAxODozNzo0NSAyMDA5ICswMTAwCgogICAgcHBjNHh4OiBDYW55b25sYW5kczogQ2hhbmdlIEVCQyBidXMgY29uZmlnIHRvIGRyaXZlIGFsd2F5cyAobm8gaGlnaC16KQoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBwcm9ibGVtIG9ubHkgc2VlbiB2ZXJ5IG9jY2FzaW9uYWxseSBvbiBDYW55b25sYW5kcy4KICAgIFRoZSBOT1IgZmxhc2ggaW50ZXJmYWNlIChDRkkgZHJpdmVyKSBkb2Vzbid0IHdvcmsgcmVsaWFibHkgaW4gYWxsIGNhc2VzLgogICAgRXJhc2luZyBhbmQvb3IgcHJvZ3JhbW1pbmcgc29tZXRpbWVzIGRvZXNuJ3Qgd29yay4gU29tZXRpbWVzIHdpdGgKICAgIGFuIGVycm9yIG1lc3NhZ2UsIGxpa2UgImZsYXNoIG5vdCBlcmFzZWQiIHdoZW4gdHJ5aW5nIHRvIHByb2dyYW0gYW4KICAgIGFyZWEgdGhhdCBzaG91bGQgaGF2ZSBqdXN0IGJlZW4gZXJhc2VkLiBBbmQgc29tZXRpbWVzIHdpdGhvdXQgYW55IGVycm9yCiAgICBtZXNzYWdlcy4gQXMgbWVudGlvbmVkIGFib3ZlLCB0aGlzIHByb2JsZW0gd2FzIG9ubHkgc2VlbiByYXJlbHkgYW5kIHdpdGgKICAgIHNvbWUgUExMIGNvbmZpZ3VyYXRpb24gKENQVSBzcGVlZCwgRUJDIHNwZWVkKS4KCiAgICBOb3cgSSBzcG90dGVkIHRoaXMgcHJvYmxlbSBhIGZldyB0aW1lcywgd2hlbiBydW5uaW5nIG15IENhbnlvbmxhbmRzIHdpdGgKICAgIHRoZSBmb2xsb3dpbmcgc2V0dXAgKGNoaXBfY29uZmlnKToKCiAgICAxMDAwLW5vcgkgICAgIC0gTk9SICBDUFU6MTAwMCBQTEI6IDIwMCBPUEI6IDEwMCBFQkM6IDEwMAoKICAgIENoYW5naW5nIHRoZSBFQkMgY29uZmlndXJhdGlvbiB0byBub3QgcmVsZWFzZSB0aGUgYnVzIGludG8gaGlnaAogICAgaW1wZWRhbmNlIHN0YXRlIGluYmV0d2VlbiB0aGUgdHJhbnNmZXJzIChBVEMsIERUQyBhbmQgQ1RDIGJpdHMgc2V0IHRvIDEKICAgIGluIEVCQzBfQ0ZHKSBzZWVtcyB0byBmaXggdGhpcyBwcm9ibGVtLiBJIGhhdmVuJ3Qgc2VlbiBhbnkgZmFpbHVyZQogICAgYW55bW9yZSB3aXRoIHRoaXMgcGF0Y2ggYXBwbGllZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBDYzogRGF2aWQgTWl0Y2hlbGwgPGRtaXRjaGVsbEBhbWNjLmNvbT4KICAgIENjOiBKZWZmIE1hbm4gPE1hbm5KQGVtYmVkZGVkcGxhbmV0LmNvbT4KCmNvbW1pdCA1NmY5YjM5ZDFmNWQzYzUxZTRiMTk3OTJhZGI2NWJkOTNhOGI2ZmNiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gTm92IDkgMTM6MDE6MTkgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogRml4IE5BTkQgYm9vdGluZyB0YXJnZXRzIGFmdGVyIDR4eCBsaW5rZXIgc2NyaXB0IGNvbnNvbGlkYXRpb24KCiAgICBTb21laG93IEkgbWlzc2VkIHRoZSBOQU5EIGJvb3RpbmcgdGFyZ2V0cyBpbiB0aGUgNHh4IGxpbmtlciBzY3JpcHQKICAgIGNvbnNvbGlkYXRpb24gcGF0Y2hzZXQuIFRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBpc3N1ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOWE4MWM2MTI0OWQ4MzYxZWQ1N2Q4MWY0OTYxMjFmM2ViOWMwZWVlOApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE9jdCAyOSAxNjo1NDo1MiAyMDA5ICswMTAwCgogICAgcHBjNHh4OiBSZW1vdmUgZHVwbGljYXRlZCBpc19wY2lfaG9zdCgpIGZ1bmN0aW9ucwoKICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIHdlYWsgZGVmYXVsdCBmdW5jdGlvbiBmb3IgaXNfcGNpX2hvc3QoKSwKICAgIHJldHVybmluZyAxLiBUaGlzIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW91ciwgc2luY2UgbW9zdCBib2FyZHMgb25seQogICAgaW1wbGVtZW50IFBDSSBob3N0IGZ1bmN0aW9uYWxpdHkuIFRoaXMgd2VhayBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuCiAgICBieSBhIGJvYXJkIHNwZWNpZmljIHZlcnNpb24gaWYgbmVlZGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBiMGI4Njc0NjJjNTY5ZTdhY2NkNmY3OGM5NDJjYmFiMDI4MTE2ZWNmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgT2N0IDI5IDE1OjA0OjM1IDIwMDkgKzAxMDAKCiAgICBwcGM0eHg6IENvbnNvbGlkYXRlIDR4eCBQQ0llIGJvYXJkIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24KCiAgICBUaGlzIHBhdGNoIGNvbnNvbGlkYXRlcyB0aGUgUFBDNHh4IGJvYXJkIHNwZWNpZmljIFBDSWUgY29uZmlndXJhdGlvbgogICAgY29kZS4gVGhpcyB3YXkgdGhlIGR1cGxpY2F0ZWQgY29kZSBpcyByZW1vdmVkLiBCb2FyZHMgY2FuIGltcGxlbWVudCBhCiAgICBzcGVjaWFsLCBub24gc3RhbmRhcmQgYmVoYXZpb3VyIChlLmcuIG51bWJlciBvZiBQQ0llIHNsb3RzLCBldGMpIGJ5CiAgICBvdmVycmlkaW5nIHRoZSB3ZWFrIGRlZmF1bHQgZnVuY3Rpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyNTc5M2Y3NmJmOWE3YmU1OWM5NDE1ZWYwZjc4ZDAzNGU4ZDUzZGFlCkF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CkRhdGU6CVRodSBPY3QgMjkgMTI6Mjk6MzcgMjAwOSArMDEwMAoKICAgIEFSTTogVXNlIExpbnV4IHZlcnNpb24gZm9yIHVuYWxpZ25lZCBhY2Nlc3MgY29kZQoKICAgIFRoZSBhc20tYXJtL3VuYWxpZ25lZC5oIGluY2x1ZGVzIGxpbnV4L3VuYWxpZ25lZC9hY2Nlc3Nfb2suaAogICAgVGhpcyBmaWxlIGlzIHVuc2FmZSB0byBiZSB1c2VkIG9uIEFSTSwgc2luY2UgaXQgZG9lcyBhbiB1bmFsaWduZWQgbWVtb3J5CiAgICBhY2Nlc3NlcyB3aGljaCBmYWlscyBvbiBBUk0uCgogICAgTG9va2luIGF0IExpbnV4IHRoZSBiYXNpYyBkaWZmZXJlbmNlIHNlZW1zIHRvIGJlIHRoZSBoZWFkZXIKICAgICJpbmNsdWRlL2FzbS1hcm0vdW5hbGlnbmVkLmgiLiBUaGUgTGludXggdmVyc2lvbiBvZiAidW5hbGlnbmVkLmgiCiAgICBkb2VzICpub3QqIGluY2x1ZGUgImFjY2Vzc19vay5oIiBhdCBhbGwuIEl0IGluY2x1ZGVzICJsZV9ieXRlc2hpZnQuaCIKICAgIGFuZCAiYmVfYnl0ZXNoaWZ0LmgiIGluc3RlYWQuCgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICAtLQogICAgIGluY2x1ZGUvYXNtLWFybS91bmFsaWduZWQuaAkgICAgfAkgMyAtCiAgICAgaW5jbHVkZS9saW51eC91bmFsaWduZWQvYmVfYnl0ZXNoaWZ0LmggfAk3MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKICAgICBpbmNsdWRlL2xpbnV4L3VuYWxpZ25lZC9sZV9ieXRlc2hpZnQuaCB8CTcwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogICAgIDMgZmlsZXMgY2hhbmdlZCwgMTQyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9saW51eC91bmFsaWduZWQvYmVfYnl0ZXNoaWZ0LmgKICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9saW51eC91bmFsaWduZWQvbGVfYnl0ZXNoaWZ0LmgKCmNvbW1pdCA2ZDZlN2M1M2Q1Yzc1ZTVlMjQ4NDFjNTUwNmY0ZWQ5ZDgyYWRlZTA5CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIE5vdiA0IDE4OjAyOjEwIDIwMDkgLTA2MDAKCiAgICBwcGMvODV4eDogRml4IGluY2x1c2lvbiBvZiA4M3h4IGltbWFwIGluIDg1eHggYnVpbGRzCgogICAgVGhlIG5hbmRfYm9vdF9mc2xfZWxiYy5jIGlzIHNoYXJlZCBiZXR3ZWVuIDgzeHggJiA4NXh4IGhvd2V2ZXIgd2Ugc2hvdWxkCiAgICBub3QgYmUgaW5jbHVkaW5nIHRoZSBpbW1hcF84M3h4Lmggd2hlbiBidWlsZGluZyA4NXh4LiAgV2UgY2FuIGp1c3QgZ2V0CiAgICB0aGlzIGFsbCBmcm9tIGNvbW1vbi5oCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAxMDdiNTc5Yzc1MjU2MjEyZDRiZjhiOTllZThkNjhlMDA3OGYzNjQ2CkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgTm92IDQgMTc6MzQ6MDQgMjAwOSAtMDYwMAoKICAgIDg2eHg6IFJlbW92ZSByZWR1bmRhbnQgY29kZSBpbiBpbml0ZHJhbQoKICAgIFRoZSBzYW1lIGNvZGUgZXhpc3RzIGJvdGggaW5zaWRlIGFuICNpZmRlZiBhbmQgb3V0c2lkZSBvZiBpdC4KICAgIFJlbW92ZSB0aGUgZXh0cmEgY29kZSBmb3IgYWxsIHRoZSA4Nnh4IGJvYXJkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDcxNWQ4Zjc2MDhmNzdjOTNmMTgwN2EwMzI2NDQ4OTNmZDViNmQwOGIKQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gTm92IDIgMDk6MDU6NDkgMjAwOSAtMDYwMAoKICAgIGZzbF9wY2lfaW5pdF9wb3J0IGVuZC1wb2ludCBpbml0aWFsaXphdGlvbiBpcyBicm9rZW4KCiAgICBjb21taXQgNzBlZDg2OWUgYnJva2UgZnNsIHBjaWUgZW5kLXBvaW50IGluaXRpYWxpemF0aW9uLgogICAgUmV0dXJuaW5nIDAgaXMgbm90IGNvcnJlY3QuICBUaGUgZnVuY3Rpb24gbXVzdCByZXR1cm4gdGhlIGZpcnN0IGZyZWUKICAgIGJ1cyBudW1iZXIgZm9yIHRoZSBuZXh0IGNvbnRyb2xsZXIuCgogICAgZnNsX3BjaV9pbml0KCkgbXVzdCBzdGlsbCBiZSBjYWxsZWQgYW5kIGEgYnVzIGFsbG9jYXRlZCBldmVuIGlmIHRoZQogICAgY29udHJvbGxlciBpcyBhbiBlbmQtcG9pbnQuCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBWaXZlayBNYWhhamFuIDx2aXZlay5tYWhhamFuQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDAxNDcxZDUzOGZiMTYzZjQ3MmE3NjlmMjEyNjdkNzY3NmM5MTI2N2MKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgTm92IDQgMDE6Mjk6MDQgMjAwOSAtMDYwMAoKICAgIFJldmVydCAicHBjLzg1eHgvcGNpOiBmc2xfcGNpX2luaXQ6IHBjaWUgYWdlbnQgbW9kZSBzdXBwb3J0IgoKICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgNzBlZDg2OWVhNWY2YjFkMTNkN2IxNDBjODNlYzBkY2Q4YTEyN2RkYy4KCiAgICBUaGVyZSBpc24ndCBhbnkgbmVlZCB0byBtb2RpZnkgdGhlIEFQSSBmb3IgZnNsX3BjaV9pbml0X3BvcnQgdG8gcGFzcyB0aGUKICAgIHN0YXR1cyBvZiBob3N0L2FnZW50KGVuZC1wb2ludCkgc3RhdHVzLiAgV2UgY2FuIGRldGVybWluZSB0aGF0CiAgICBpbnRlcm5hbGx5IHRvIGZzbF9wY2lfaW5pdF9wb3J0LiAgUmV2ZXJ0IHRoZSBwYXRjaCB0aGF0IG1ha2VzIHRoZSBBUEkKICAgIGNoYW5nZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDJjZDk1YTI1Y2IwZWU4MjE4YjI3MWQyM2Q2NGZiM2Y3MTlhYzUzOTAKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBPY3QgMjcgMTY6MjA6MDUgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogUmVtb3ZlIGJvYXJkIHNwZWNpZmljIGxpbmtlciBzY3JpcHRzIGZyb20gbW9zdCBQUEM0eHggYm9hcmRzCgogICAgQWxsIHRoZXNlIGxpbmtlciBzY3JpcHRzIGNhbiBiZSByZW1vdmVkIHNpbmNlIHRoZSBuZXcgY29tbW9uIHBwYzR4eAogICAgbGlua2VyIHNjcmlwdCBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgYWxsIG9mIHRob3NlIGJvYXJkcy4KCiAgICBQbGVhc2UgdGVzdCBhbmQgcmVwb3J0IHByb2JsZW1zLiBUaGFua3MuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDQ2NDk5MTNlYTVmNDQwZDc1NmQxNTBhNmZkZjJmYjJlOGVjYjc1ZmQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBPY3QgMjcgMTY6MTE6MjYgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogQWRkIGNvbW1vbiBwcGM0eHggbGlua2VyIHNjcmlwdAoKICAgIFRoaXMgbGlua2VyIHNjcmlwdCBjYW4gYmUgdXNlZCBieSBhbGwgUFBDNHh4IHBsYXRmb3Jtcy4gSXQgd29ya3MgZm9yCiAgICBQUEM0MDUgYW5kIFBQQzQ0MCBwbGF0Zm9ybXMuIEJvYXJkcyB3aGljaCBuZWVkIGEgYm9hcmQgc3BlY2lmaWMgbGlua2VyCiAgICBzY3JpcHQgY2FuIG92ZXJyaWRlIHRoaXMgZGVmYXVsdCBsaW5rZXIgc2NyaXB0IGluIGJvYXJkLyovY29uZmlnLm1rLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBiMTI0NWRkM2M2NDA5Yzc0M2Y2YzI3NjhkMDBlOTA5YTRjOGNjNGVhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgT2N0IDI3IDE2OjE2OjEzIDIwMDkgKzAxMDAKCiAgICBwcGM0eHg6IEFkZCBjdXN0b20gbGlua2VyIHNjcmlwdCB0byBib2FyZC8qL2NvbmZpZy5tawoKICAgIFRoZXNlIGJvYXJkcyBoYXZlIHNwZWNpYWwgbGlua2VyIHNjcmlwdHMgcmlnaHQgbm93LiBXZSBjYW4ndCB1c2UgdGhlCiAgICBjb21tb24gNHh4IGxpbmtlciBzY3JpcHQgaGVyZS4gU28gb3ZlcnJyaWRlIHRoZSBsaW5rZXIgc2NyaXB0IChMRFNDUklQVCkKICAgIGluIGJvYXJkLyovY29uZmlnLm1rIGFuZCBjaG9vc2UgdGhlIGJvYXJkIHNwZWNpZmljIHZlcnNpb24uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGNlYWE2MmE2ZjAyMzdhOGRkZDJhNWY2NTllNjUzNWZjZDA1NDMzMmYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBPY3QgMjcgMTU6NTc6MjQgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogRml4IHByb2JsZW1zIGluIHNvbWUgcHBjNHh4IGJvYXJkIE1ha2VmaWxlcwoKICAgIFNvbWUgNHh4IE1ha2VmaWxlcyBkaWRuJ3QgYWRkICQoU09CSikgdG8gdGhlaXIgYm9hcmQgbGlicmFyeS4gVGhpcyB3YXMKICAgIG5vIHRpbGwgbm93IHByb2JsZW0sIHNpbmNlIHRob3NlIGJvYXJkcyBpbmNsdWRlZCB0aGlzIG9iamVjdCAoaW5pdC5vCiAgICBtb3N0IG9mIHRoZSB0aW1lKSBkaXJlY3RseSBmcm9tIHRoZWlyIGxpbmtlciBzY3JpcHRzLiBUaGlzIHBhdGNoIGNsZWFuCiAgICB0aGlzIHVwLCBzbyB0aGF0IGFsbCBvYmplY3RzIGFyZSBub3cgY29sbGVjdGVkIGluIHRoZSBib2FyZCBsaWJyYXJ5LiBUaGlzCiAgICBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIHVwY29taW5nIFBQQzR4eCBsaW5rZXIgc2NyaXB0IGNvbnNvbGlkYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGEwZmYxZjEyOWEwZTFhNDY2ZTRmODU2OGZjZTEyYjdiODQ1NzhlNGMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBPY3QgMjcgMTE6MjA6NTMgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogc2MzOiBSZW1vdmUgdW5yZWZlcmVuY2VkIGV4dGVybmFsIGRlY2xhcmF0aW9ucyBmcm9tIHNjMy5oCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQWNrZWQtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDdlYzFmZWRkYTZhYzU1MWM2N2YyMjE0Y2VkOTRlNGI0OWI2NjgwZTQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBPY3QgMjcgMTE6NDY6MjMgMjAwOSArMDEwMAoKICAgIG1rY29uZmlnOiBDcmVhdGUgYm9hcmQgZGlyZWN0b3J5IChDT05GSUdfQk9BUkRESVIpIGluIGluY2x1ZGUvY29uZmlnLmgKCiAgICBUaGlzIHBhdGNoIGV4dGVuZHMgdGhlIG1rY29uZmlnIHNjcmlwdCB0byBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhIGRlZmluZQogICAgZm9yIHRoZSBib2FyZCBkaXJlY3RvcnkgaW4gaW5jbHVkZS9jb25maWcuaDoKCiAgICAjZGVmaW5lIENPTkZJR19CT0FSRERJUiBib2FyZC9hbWNjL2NhbnlvbmxhbmRzCgogICAgVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSB1cGNvbWluZyBQUEM0eHggbGlua2VyIHNjcmlwdCBjb25zb2xpZGF0aW9uLAogICAgd2hlcmUgdGhlIFBQQzQ0MCBwbGF0Zm9ybXMgbmVlZCB0byBpbmNsdWRlIGEgYm9hcmQgc3BlY2lmaWMgZmlsZSBpbgogICAgdGhlIGNvbW1vbiBsaW5rZXIgc2NyaXB0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmZjg4MjI5NTQ5ZTA4ZmRkM2Y5MTI3YzFjYzRkYjExYTM1NzYyNTBmCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU2F0IE9jdCAzMSAwNzo1OTo1NSAyMDA5ICswODAwCgogICAgcHBjLzg1eHg6IEZpeCBtaXNjIEwyIGNhY2hlIGVuYWJsaW5nIGJ1ZwoKICAgIFdlIG5lZWQgbG9vcC1jaGVjayB0aGUgZmxhc2ggY2xlYXIgbG9jayBhbmQgZW5hYmxlIGJpdCBmb3IgTDIgY2FjaGUuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgY2QxMmY2MTVlNGRkMWRkMjRjYWFiOTNmNDE1Nzg5NDc4M2M2YzFjMApBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGRlbnguZGU+CkRhdGU6CUZyaSBPY3QgMjMgMTI6MDM6MTYgMjAwOSArMDIwMAoKICAgIG1wYzUyeHg6IGFkZCBzdXBwb3J0IGZvciB0aGUgSVBFSzAxIGJvYXJkCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBib2FyZCBJUEVLMDEgYmFzZWQgb24gdGhlIE1QQzUyMDAuCiAgICBUaGUgRnV0aml0c3UgTGltZSBncmFwaGljcyBjb250cm9sbGVyIGlzIGNvbmZpZ3VyZWQgaW4gMTYgYnBwIG1vZGUuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZGVueC5kZT4KCmNvbW1pdCAyMjliNmRjZTY3NWM3MjllZTBlYTJkN2I2MWZiY2RhODliMjNiNmI4CkF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZGVueC5kZT4KRGF0ZToJRnJpIE9jdCAyMyAxMjowMzoxNSAyMDA5ICswMjAwCgogICAgdmlkZW86IG1iODYyeHg6IGFkZCBvcHRpb24gVklERU9fRkJfMTZCUFBfV09SRF9TV0FQIGZvciBJUEVLMDEKCiAgICBJbiAxNiBicHAgbW9kZSwgdGhlIG5ldyBJUEVLMDEgYm9hcmQgb25seSByZXF1aXJlcyBzd2FwcGluZyBvZiBEMTYgd29yZHMKICAgIGZvciBEMzIgYWNjZXNzZXMgZHVlIHRvIHRoZSBkaWZmZmVyZW50IGNvbm5lY3RpbmcgdG8gdGhlIEdEQyBidXMuIFRoaXMKICAgIHBhdGNoIGludHJvZHVjZXMgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIFZJREVPX0ZCXzE2QlBQX1dPUkRfU1dBUCwKICAgIHdoaWNoIHNob3VsZCBiZSBzZXQgZm9yIGFsbCBib2FyZCB1c2luZyB0aGUgbWI4NjJ4eCBpbiAxNiBicHAgbW9kZS4gRm9yCiAgICB0aGUgSVBFSzAxLCBWSURFT19GQl8xNkJQUF9QSVhFTF9TV0FQIHNob3VsZCBub3QgYmUgc2V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGRlbnguZGU+Cgpjb21taXQgNWQxNmNhODcxMDBlYTU4YzkzYzQ2YjlmMDI2NDk4MWVhZWQ0OTU2OApBdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KRGF0ZToJRnJpIE9jdCAyMyAxMjowMzoxNCAyMDA5ICswMjAwCgogICAgdmlkZW86IG1iODYyeHg6IGFkZCBvcHRpb24gQ09ORklHX1ZJREVPX01CODYyeHhfQUNDRUwgZm9yIDMyYnBwIG1vZGUKCiAgICBUaGUgbmV3IElQRUswMSBib2FyZCBjYW4gdXNlIHRoZSAzMiBicHAgbW9kZSBmb3IgdGhlIExpbWUgZ3JhcGhpY3MKICAgIGNvbnRyb2xsZXIuIEZvciB0aGlzIG1vZGUsIHZpZGVvIGFjY2VsYXJhdGlvbiBkb2VzIG5vdCB3b3JrLiBUaGlzIHBhdGNoCiAgICBtYWtlcyB0aGUgYWNjZWxhcmF0aW9uIGNvbmZpZ3VyYWJsZSB2aWEgQ09ORklHX1ZJREVPX01CODYyeHhfQUNDRUwsCiAgICB3aGljaCBpcyBlbmFibGVkIGZvciB0aGUgbHdtb241IGFuZCB0aGUgc29jcmF0ZXMgYm9hcmQgZm9yIGJhY2t3YXJkCiAgICBjb21wYXRpYmlsaXR5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGRlbnguZGU+Cgpjb21taXQgYzI4ZDNiYmU5NjNmNGM1NzkzN2Q2ZmRjMWRkNjNjZDM1NjJjMTQ3YwpBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGRlbnguZGU+CkRhdGU6CUZyaSBPY3QgMjMgMTI6MDM6MTMgMjAwOSArMDIwMAoKICAgIHZpZGVvOiBtYjg2Mnh4OiBpbXByb3ZlIGJvYXJkLXNwZWNpZmljIExpbWUgY29uZmlndXJhdGlvbgoKICAgIFRvIGF2b2lkIGJvYXJkLXNwZWNpZmljIGNvZGUgYWNjZXNzaW5nIHRoZSBtYjg2Mnh4IHJlZ2lzdGVycyBkaXJlY3RseSwKICAgIHRoZSBwdWJsaWMgZnVuY3Rpb24gbWI4NjJ4eF9wcm9iZSgpIGhhcyBiZWVuIGludHJvZHVjZWQuIEZ1cnRoZXJtb3JlLAogICAgdGhlICJDaGFuZ2Ugb2YgQ2xvY2sgRnJlcXVlbmN5IiBhbmQgIlNldCBNZW1vcnkgSS9GIE1vZGUiIHJlZ2lzdGVycwogICAgYXJlIG5vdyBkZWZpbmVkIGJ5IENPTkZJR19TWVNfTUI4NjJ4eF9DQ0YgYW5kIENPTkZJR19TWVNfTUI4NjJ4eF9fTU1SLAogICAgcmVzcGVjdGl2ZWx5LiBUaGUgQlNQcyBmb3IgdGhlIHNvY3JhdGVzIGFuZCBsd21vbjUgYm9hcmRzIGhhdmUgYmVlbgogICAgYWRhcHRlZCBhY2NvcmRpbmdseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BkZW54LmRlPgoKY29tbWl0IDA4ZWE1NTBlZWYzMTBlOWQ1OWQ4M2YzY2ZkNTdhOTAyMzczYmYxN2YKQXV0aG9yOiBWYWxlbnRpbiBZYWtvdmVua292IDx5YWtvdmVua292QG5paXN0dC5ydT4KRGF0ZToJTW9uIE9jdCAyNiAxODo0OTowNiAyMDA5IC0wNDAwCgogICAgbmV3IFBDQTk1NjQgaTJjIGJyaWRnZSBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBWYWxlbnRpbiBZYWtvdmVua292IDx5YWtvdmVua292QG5paXN0dC5ydT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAwOGExYzYyNThjMmEwNGNlYWQzM2VhYzUwZDk2ZWE4OTk3OWRjYjk0CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglXZWQgT2N0IDE0IDE5OjI3OjI3IDIwMDkgLTA0MDAKCiAgICBCbGFja2ZpbjogVFdJL0kyQzogaW1wbGVtZW50IGJ1cyBzcGVlZCBnZXQvc2V0IGZ1bmN0aW9ucwoKICAgIFdoaWxlIHdlJ3JlIGhlcmUsIGltcHJvdmUgdGhlIHNwZWVkIGNhbGN1bGF0aW9uIGEgYml0IHRvIG1hdGNoIHRoZSBIUk0uCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDM4MTRlYTRmMDAwMjUzNmFjNTkyNDgwYjJjZGFmYTMxOWExNmUzMjkKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBPY3QgMTQgMTk6Mjc6MjYgMjAwOSAtMDQwMAoKICAgIEJsYWNrZmluOiBUV0kvSTJDOiBhZGQgdGltZW91dCB0byB0cmFuc2ZlcgoKICAgIFRoZSBjdXJyZW50IHRyYW5zZmVyIGNvZGUgcmVsaWVzIG9uIGN0cmxjKCkgdG8gYWJvcnQgdHJhbnNmZXJzLCBidXQgdGhpcwogICAgcmVxdWlyZXMgdXNlciBpbnRlcmFjdGl2aXR5LiAgTmF0dXJhbGl6ZSB0aGUgcHJvY2VzcyB3aXRoIGEgdGltZW91dC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNTk0MzRmZTI0Mzk2Mjc1ODc0MmFmNWNiOGUyY2VkOTc2ZTE3YzMwMgpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJRnJpIE9jdCAzMCAxMDoxNjoyNyAyMDA5ICswOTAwCgogICAgc2g6IFVwZGF0ZSBsb3dsZXZlbF9pbml0LlMgb2YgZXNwdC1naWdhCgogICAgVGhlcmUgd2FzIHRoZSBwb2ludCB0aGF0IGRpZCBub3QgdXNlIHdyaXRlIG1hY3JvLgogICAgQ2hhbmdlIHRvIHdyaXRlIG1hY3JvLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBmMWNhZTE5NjlkOWU5NzFmYjcyODI3YTU3MzFjZTdlNzUyNDY0YWEyCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglGcmkgT2N0IDMwIDEwOjAxOjI1IDIwMDkgKzA5MDAKCiAgICBzaDogTW92ZSBzb21lIGRlZnMgdG8gY29udmluY2UgJ3BjcmVsIHRvbyBmYXInCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgogICAgU2lnbmVkLW9mZi1ieTogVGFrYXNoaSBZb3NoaWkgPHlvc2hpaS50YWthc2hpQGdtYWlsLmNvbT4KCmNvbW1pdCAwZjllYWY0YjMyM2VhMGNhOTU5NDRiODRjNzQ2NWI4MWJhNTc1NTE0CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglUaHUgT2N0IDE1IDEzOjM2OjM0IDIwMDkgKzA5MDAKCiAgICBzaDogUmVtb3ZlIG1hbGxvY19iaW5fcmVsb2MgZnJvbSBsaWJfc2gsIGxpYl9uaW9zMiBhbmQgbGliX25pb3MuCgogICAgQnkgImFybS9taWNyb2JsYXplL25pb3MvbmlvczIvc2g6IFJlbW92ZSByZWxvY2F0aW9uIGZpeHVwcyIKICAgIChjb21taXQ6IDA2MzA1MzVlMmQwNjJkZDczYzFjZWNhNWM2MTI1Yzg2ZDExMjdhNDkiLCBkb2Vzbid0IG5lZWQKICAgIG1hbGxvY19iaW5fcmVsb2MgZnVuY3Rpb24uIFRoaXMgY29tbWl0IHJlbW92ZSB0aGlzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCAwNzc1NDM3MjkzYTY5NjNjYjIxMjQ0ZGZhZTY5NzhjYmY2N2M2YmZlCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJV2VkIE9jdCAyMSAyMTo1MzozOSAyMDA5IC0wNzAwCgogICAgRml4IERNOTAwMCBNQUMgYWRkcmVzcyBoYW5kbGluZwoKICAgIFByb3BlciBiZWhhdmlvciBpcyB0byBwdWxsIE1BQyBhZGRyZXNzIGZyb20gTlZSQU0gaW4gdGhlIGluaXRpYWxpemF0aW9uKCkgYW4KICAgIHN0dWZmIGl0IGluIGRldi0+YWRkcmVzcywgdGhlbiBwcm9ncmFtIHRoZSBkZXZpY2UgZnJvbSBkZXYtPmFkZHJlc3MgaW4KICAgIHRoZSBpbml0KCkgZnVuY3Rpb24uCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA5OGQ5MmQ4YzlmNDAyMTYyOWE0NTI2MWFkNWVjM2YzNTk1ZjNhMjdhCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIE9jdCAyOCAyMjowNzo1NiAyMDA5ICswMTAwCgogICAgc2JjODM0OTogZml4IGluY29ycmVjdCBjb21tZW50CgogICAgVGhlIGNvbW1lbnQgZm9yIHRoZSBCUjBfUFJFTElNIHBvcnQgc2l6ZSBpbml0aWFsaXphdGlvbiBpbmNvcnJlY3RseQogICAgc3RhdGVkIDMyIGJpdCwgd2hpbGUgaXQncyBhY3R1YWxseSAxNiBiaXQuIFRoZSBjb2RlIGlzIGNvcnJlY3QuCgogICAgUmVwb3J0ZWQtYnk6IEd1ZW50ZXIgS29lbGxuZXIgPGd1ZW50ZXIua29lbGxuZXJAbnNuLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYTM4Zjg1ZTE4MGEzMGI2MjI1ODA4ODI4ZGVkMTAxN2IxYTU0MThjNgpBdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KRGF0ZToJV2VkIE9jdCAyOCAxMTowNTowMyAyMDA5IC0wNDAwCgogICAgRml4IENvbXBsaWF0aW9uIHdhcm5pbmcgZm9yIFROWS1BOTI2MCBhbmQgVE5ZLUE5RzIwCgogICAgVGhlIHBhdGNoIGZpeGVzIGEgY29tcGlsYXRpb24gd2FybmluZyBieSBkZWZpbmluZwogICAgQ09ORklHX1NZU182NEJJVF9WU1BSSU5URiBpbiB0aGUgY29uZmlnIGZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Cgpjb21taXQgMjY0ZTQyZWU1NGYxZDMyMjgwNWQ5MDY4MTY4ZmQzNjJiNDEzZmQwOQpBdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KRGF0ZToJV2VkIE9jdCAyOCAxMTowNDo1MyAyMDA5IC0wNDAwCgogICAgRml4IENvbXBsaWF0aW9uIHdhcm5pbmcgZm9yIFNCQzM1LUE5RzIwIGJvYXJkCgogICAgVGhlIHBhdGNoIGZpeGVzIGEgY29tcGlsYXRpb24gd2FybmluZyBieSBkZWZpbmluZwogICAgQ09ORklHX1NZU182NEJJVF9WU1BSSU5URiBpbiB0aGUgY29uZmlnIGZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Cgpjb21taXQgMzUzNDYyZjZmZjk3NjkwOTFmYjY0NGQ0NGQ4MDI1ZjIwYTQxOTJkOQpBdXRob3I6IEVyaWMgTWlsbGJyYW5kdCA8ZW1pbGxicmFuZHRAY29sZGhhdXMuY29tPgpEYXRlOglXZWQgT2N0IDI4IDA5OjM3OjMzIDIwMDkgLTA1MDAKCiAgICBnYWxheHk1MjAwOiBBZGQgZGVmYXVsdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKCiAgICBFeHRlbmQgYm9vdGRlbGF5IHRvIDEwIHNlY29uZHMuICBTZXQgYm9vdCByZXRyeSB0aW1lIHRvIDEyMCBzZWNvbmRzIGFuZCB1c2UKICAgIHJlc2V0IHRvIHJldHJ5LiAgRGVmaW5lIGRlZmF1bHQgYm9vdGNvbW1hbmQgYW5kIGJvb3RhcmdzIGZvciBwcm9kdWN0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVyaWMgTWlsbGJyYW5kdCA8ZW1pbGxicmFuZHRAZGVrYXJlc2VhcmNoLmNvbT4KCmNvbW1pdCBmYTM2YWU3OTBlYjEwY2U3MDkzNWY5YTc4ZjA3NzAzNzE5ZGNhNDIyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgT2N0IDI3IDE1OjE1OjU1IDIwMDkgKzAxMDAKCiAgICBjZmk6IEFkZCB3ZWFrIGRlZmF1bHQgZnVuY3Rpb24gZm9yIGZsYXNoX2NtZF9yZXNldCgpCgogICAgQ3VycmVudGx5IHRoZSBDRkkgZHJpdmVyIGlzc3VlcyBib3RoIEFNRCBhbmQgSW50ZWwgcmVzZXQgY29tbWFuZHMuCiAgICBUaGlzIGlzIGJlY2F1c2UgdGhlIGRyaXZlciBkb2Vzbid0IGtub3cgeWV0IHdoaWNoIGNoaXBzIGFyZSBjb25uZWN0ZWQuCiAgICBUaGlzIGR1YWwgcmVzZXQgc2VlbXMgdG8gY2F1c2UgcHJvYmxlbXMgd2l0aCB0aGUgTTI5VzEyOEcgY2hpcHMgYXMKICAgIHJlcG9ydGVkIGJ5IFJpY2hhcmQgUmV0YW51YnVuLiBUaGlzIHBhdGNoIG5vdyBpbnRyb2R1Y2VzIGEgd2VhayBkZWZhdWx0CiAgICBmdW5jdGlvbiBmb3IgdGhlIENGSSByZXNldCBjb21tYW5kLCBzdGlsbCB3aXRoIGJvdGggcmVzZXRzLiBUaGlzIGNhbgogICAgYmUgb3ZlcnJpZGRlbiBieSBhIGJvYXJkIHNwZWNpZmljIHZlcnNpb24gaWYgbmVjZXNzYXJ5LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIENjOiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBydWdnZWRjb20uY29tPgoKY29tbWl0IDQ5NDY3NzVjNmRiNTJkYmEyOGY3MmJhMzUyNTc2NGI1NGYxZDQ1OTMKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgT2N0IDI4IDAwOjQ5OjQ3IDIwMDkgKzAxMDAKCiAgICBDb2RpbmcgU3R5bGUgY2xlYW51cDsgdXBkYXRlIENIQU5HRUxPRywgcHJlcGFyZSAtcmMxCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAyNDZjNjkyMjVjN2I5NjJkNWM5M2U5MjI4MmI3OGNhOWZjNWZlZmVlCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJU3VuIE9jdCAyNSAxNToxMjo1NiAyMDA5IC0wNTAwCgogICAgQWRkICdlZGl0ZW52JyBjb21tYW5kCgogICAgVGhlIGVkaXRlbnYgY29tbWFuZCBjYW4gYmUgdXNlZCB0byBlZGl0IGFuIGVudmlyb25tZW50IHZhcmlhYmxlLgogICAgRWRpdGluZyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyB1c2VmdWwgd2hlbiBvbmUgd2FudHMgdG8gdHdlYWsgYW4KICAgIGV4aXN0aW5nIHZhcmlhYmxlLCBmb3IgZXhhbXBsZSBmaXggYSB0eXBvIG9yIGNoYW5nZSB0aGUgYmF1ZHJhdGUgaW4gdGhlCiAgICAnYm9vdGFyZ3MnIGVudmlyb25tZW50IHZhcmlhYmxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgYjBmYThlNTA2MzJhNjI4NzY2ZGIyM2Y1Yzg4NGVjNjNmMTQ2OTU1MgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVN1biBPY3QgMjUgMTU6MTI6NTUgMjAwOSAtMDUwMAoKICAgIHNldGVudigpOiBEZWxldGUgMC1sZW5ndGggZW52aXJvbm1lbnQgdmFyaWFibGVzCgogICAgUHJldmlvdXNseSBzZXRlbnYoKSB3b3VsZCBvbmx5IGRlbGV0ZSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpZiBpdAogICAgd2FzIHBhc3NlZCBhIE5VTEwgc3RyaW5nIHBvaW50ZXIgYXMgYSB2YWx1ZS4gIEl0IHNob3VsZCBhbHNvIGRlbGV0ZSBhbgogICAgZW52aXJvbm1lbnQgdmFyaWFibGUgd2hlbiBpdCBlbmNvdW50ZXJzIGEgdmFsaWQgc3RyaW5nIHBvaW50ZXIgb2YKICAgIDAtbGVuZ3RoLgoKICAgIFRoaXMgY2hhbmdlL2ZpeCBpcyBnZW5lcmFsbHkgdXNlZnVsIGFuZCBpcyBuZWNlc3NhcnkgZm9yIHRoZSB1cGNvbWluZwogICAgImVkaXRlbnYiIGNvbW1hbmQuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCBlY2M1NTAwZWU0ODcxNzBkOGFmNmZmODkzZmQxZTAwODIzODBhMDFhCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJU3VuIE9jdCAyNSAxNToxMjo1NCAyMDA5IC0wNTAwCgogICAgcmVhZGxpbmUoKTogQWRkIGFiaWxpdHkgdG8gbW9kaWZ5IGEgc3RyaW5nIGJ1ZmZlcgoKICAgIElmIHRoZSAnYnVmJyBwYXJhbWV0ZXIgaXMgYSBub24tMC1sZW5ndGggc3RyaW5nLCBpdHMgY29udGVudHMgd2lsbCBiZQogICAgZWRpdGVkLiAgUHJldmlvdXNseSwgdGhlIGluaXRpYWwgY29udGVudHMgb2YgJ2J1Zicgd2VyZSBpZ25vcmVkIGFuZCB0aGUKICAgIHVzZXIgZW50ZXJlZCBpdHMgY29udGVudHMgZnJvbSBzY3JhdGNoLgoKICAgIFRoaXMgY2hhbmdlIGlzIG5lY2Vzc2FyeSB0byBzdXBwb3J0IHRoZSB1cGNvbWluZyAiZWRpdGVudiIgY29tbWFuZCBidXQKICAgIGNvdWxkIGFsc28gYmUgdXNlZCBmb3IgZnV0dXJlIGNvbW1hbmRzIHdoaWNoIHJlcXVpcmUgYSB1c2VyIHRvIG1vZGlmeQogICAgYW4gZXhpc3Rpbmcgc3RyaW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgZjkyMzk0Mzg0M2NkNjE3ZDY4MTM4N2U3ZmU4MWE0ODA2MGNjNjQwMQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVN1biBPY3QgMjUgMTU6MTI6NTMgMjAwOSAtMDUwMAoKICAgIGNyZWFkX2xpbmUoKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IGU0OTFhNzFlNTc4ZTkzYmQzYjJmOGYyMGQ4ZWY4ZjExMWM5ODAxMGQKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglTdW4gT2N0IDI1IDE1OjEyOjUyIDIwMDkgLTA1MDAKCiAgICBDaGVjayBmb3IgTlVMTCBwcm9tcHQgaW4gcmVhZGxpbmVfaW50b19idWZmZXIoKQoKICAgIFByZXZpb3VzbHksIHBhc3NpbmcgcmVhZGxpbmUoKSBvciByZWFkbGluZV9pbnRvX2J1ZmZlcigpIGEgTlVMTCAncHJvbXB0JwogICAgcGFyYW1ldGVyIHdvdWxkIHJlc3VsdCBpbiBwdXRzKCkgcHJpbnRpbmcgZ2FyYmFnZSB3aGVuCiAgICBDT05GSUdfQ01ETElORV9FRElUSU5HIHdhcyBlbmFibGVkLgoKICAgIE5vdGUgdGhhdCBubyBib2FyZCBjdXJyZW50bHkgdHJpZ2dlcnMgdGhpcyBidWcuICBFbmFibGluZwogICAgQ09ORklHX0NNRExJTkVfRURJVElORyBvbiBzb21lIGJvYXJkcyAoZWcgYmFiN3h4KSB3b3VsZCByZXN1bHQgaW4KICAgIHRoZSBidWcgYXBwZWFyaW5nLglUaGlzIGNoYW5nZSBpcyBvbmx5IGludGVuZGVkIHRvIHByZXZlbnQgc29tZW9uZQogICAgZnJvbSBydW5uaW5nIGludG8gdGhpcyBpc3N1ZSBpbiB0aGUgZnV0dXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgMTZkMWMxMDc4MzY2MGYzZmRiYzNjMTkxNDFmNDJmM2IwZDE4MzRkMwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBPY3QgMjUgMjM6MDA6MDkgMjAwOSArMDEwMAoKICAgIGRyaXZlcnMvbmV0L3BoeS9taWlwaHliYi5jOiBmaXggd2FybmluZzogbm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKICAgIEFkZCBtaXNzaW5nIG5ld2xpbmUuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIENjOiBMdWlnaSBNYW50ZWxsaW5pIDxsdWlnaS5tYW50ZWxsaW5pQGlkZi1oaXQuY29tPgogICAgQ2M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYTc0N2E3ZjMxMDU5YjkwNjllOTdjNzhiYmE1NDk2NDA5YzMzYWEwNQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBPY3QgMjcgMDA6MDM6MzIgMjAwOSArMDEwMAoKICAgIFJldmVydCAiZW52OiBvbmx5IGJ1aWxkIGVudl9lbWJlZGRlZCBhbmQgZW52Y3JjIHdoZW4gbmVlZGVkIgoKICAgIEJyZWFrcyBidWlsZGluZyBvbiBtYW55IGJvYXJkcywgYW5kIG5vIHJlYWxseSBjbGVhbiBmaXggYXZhaWxhYmxlIHlldC4KCiAgICBUaGlzIHJldmVydHMgY29tbWl0IDZkYWI2YWRkMmQ4ZWU4MDkwNTIzNGIzMjZhYmMzZGUxMWJlMWQxNzguCgpjb21taXQgM2ZjYTgwMzc1OTgxZmU4M2Q0Njc0YTAyNjcxODNiNDY5YTFlYTdmZgpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglUaHUgT2N0IDE1IDE3OjQ3OjE2IDIwMDkgKzA0MDAKCiAgICBtcGM4NXh4OiBDb25maWd1cmUgUUUgVVNCIGZvciBNUEM4NTY5RS1NRFMgYm9hcmRzCgogICAgU2V0dXAgUUUgcGluIG11bHRpcGxleGluZyBmb3IgVVNCIGZ1bmN0aW9uLCBjb25maWd1cmUgbmVlZGVkIEJDU1JzCiAgICBhbmQgYWRkIHNvbWUgZmR0IGZpeHVwcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMTQ4MDliNmMyMWM4OWRkNjVhYmFmM2ZlYTc2MjdmYjVlYTBmNzhhMwpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglUaHUgT2N0IDE1IDE3OjQ3OjEzIDIwMDkgKzA0MDAKCiAgICBtcGM4NXh4OiBDb25maWd1cmUgUUUgVUFSVCBmb3IgTVBDODU2OUUtTURTIGJvYXJkcwoKICAgIFRvIG1ha2UgUUUgVUFSVCB1c2FibGUgYnkgTGludXggd2Ugc2hvdWxkIHNldHVwIHBpbiBtdWx0aXBsZXhpbmcKICAgIGFuZCB0dXJuIFVDQzIgRXRoZXJuZXQgbm9kZSBpbnRvIFVDQzIgUUUgVUFSVCBub2RlLgoKICAgIEFsc28sIFFFIFVBUlQgaXMgbXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggVUFSVDAsIHNvIHdlIGNhbid0IGVuYWJsZQogICAgaXQgaWYgZVNESEMgaXMgaW4gNC1iaXRzIG1vZGUgb24gcGlsb3QgYm9hcmRzLCBvciBpZiBpdCdzIGEgcHJvdG90eXBlCiAgICBib2FyZCB3aXRoIGVTREhDIGluIDEtIG9yIDQtYml0cyBtb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA3MGQ2NjViMWQyMzBiOTU3NWE2NDc5NDhlOGRiM2RhMWU2NzQzZTVjCkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CVRodSBPY3QgMTUgMTc6NDc6MTEgMjAwOSArMDQwMAoKICAgIG1wYzg1eHg6IFNldHVwIFFFIHBpbm11eCBmb3IgU1BJIEZsYXNoIG9uIE1QQzg1NjlFLU1EUyBib2FyZHMKCiAgICBTUEkgRmxhc2ggKE0yNVA0MCkgaXMgY29ubmVjdGVkIHRvIHRoZSBTUEkxIGJ1cywgd2UgbmVlZCBhIGZldwogICAgcWVfaW9wIGVudHJpZXMgdG8gYWN0dWFsbHkgZW5hYmxlIFNQSTEgb24gdGhlc2UgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA2NWRlYzNiNDU5OWExN2U4M2VjNjlkZmQwNTllNGVhMWU3OTVlZjM3CkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CVRodSBPY3QgMTUgMTc6NDc6MDkgMjAwOSArMDQwMAoKICAgIG1wYzg1eHg6IFNldHVwIFNSSU8gbWVtb3J5IHJlZ2lvbiBMQVcgZm9yIE1QQzg1NjlFLU1EUyBib2FyZHMKCiAgICBUaGlzIHBhdGNoIHNldHMgbWVtb3J5IHdpbmRvdyBmb3IgU2VyaWFsIFJhcGlkSU8gb24gTVBDODU2OUUtTURTCiAgICBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGEyOTE1NWUxMjI4NmNjNWVjMmRmNzJjMWNhYjI4ZTM2NTliZmRhZDUKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJVGh1IE9jdCAxNSAxNzo0NzowOCAyMDA5ICswNDAwCgogICAgbXBjODV4eDogQWRkIGVMQkMgTkFORCBzdXBwb3J0IGZvciBNUEM4NTY5RS1NRFMgYm9hcmRzCgogICAgU2ltcGx5IGFkZCBzb21lIGRlZmluZXMsIGFuZCBhZGp1c3QgVExCZSBzZXR1cCB0byBpbmNsdWRlIHNvbWUKICAgIHNwYWNlIGZvciBlTEJDIE5BTkQuCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDdmNTJlZDVlZjFiNDkwZGEyODJhY2UzMzE2YmUzODFhNmFiZjk2YTUKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJVGh1IE9jdCAxNSAxNzo0NzowNiAyMDA5ICswNDAwCgogICAgbXBjODV4eDogQWRkIGVTREhDIHN1cHBvcnQgZm9yIE1QQzg1NjlFLU1EUyBib2FyZHMKCiAgICBlU0RIQyBpcyBtdXR1YWxseSBleGx1c2l2ZSB3aXRoIFVBUlQwIChpbiA0LWJpdHMgbW9kZSkgYW5kIEkyQzIKICAgIChpbiAxLWJpdCBtb2RlKS4gV2hlbiBlU0RIQyBpcyB1c2VkLCB3ZSBzaG91bGQgc3dpdGNoIHUtYm9vdCBjb25zb2xlIHRvCiAgICBVQVJUMSwgYW5kIG1ha2UgdGhlIHByb3BlciBkZXZpY2UtdHJlZSBmaXh1cHMuCgogICAgQmVjYXVzZSBvZiBhbiBlcnJhdHVtIGluIHByb3RvdHlwZSBib2FyZHMgaXQgaXMgaW1wb3NzaWJsZSB0byB1c2UgZVNESEMKICAgIHdpdGhvdXQgZGlzYWJsaW5nIFVBUlQwICh3aGljaCBtYWtlcyBpdCBxdWl0ZSBlYXN5IHRvICdicmljaycgdGhlIGJvYXJkCiAgICBieSBzaW1wbHkgaXNzdW5nICdzZXRlbnYgaHdjb25maWcgZXNkaGMnLCBhbmQgbm90IGFibGUgdG8gaW50ZXJhY3Qgd2l0aAogICAgVS1Cb290IGFueWxvbmdlcikuCgogICAgU28sIGJ1dCBkZWZhdWx0IHdlIGFzc3VtZSB0aGF0IHRoZSBib2FyZCBpcyBhIHByb3RvdHlwZSwgd2hpY2ggaXMgYSBtb3N0CiAgICBzYWZlIGFzc3VtcHRpb24uIFRoZXJlIGlzIG5vIHdheSB0byBkZXRlcm1pbmUgYm9hcmQgcmV2aXNpb24gZnJvbSBhCiAgICByZWdpc3Rlciwgc28gd2UgdXNlIGh3Y29uZmlnLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA0ODYxODEyNmY3OGYwNTA0MmRhZTQyODgxMTgwOWI1OTRmNzQ3ZWI5CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJRnJpIE9jdCAyMyAxNTo1NTo0OCAyMDA5IC0wNTAwCgogICAgeHBlZGl0ZTUzNzA6IEVuYWJsZSBtdWx0aS1jb3JlIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA1Y2NkMjljMzY3OWIzNjY5YjBiZGU1YzUwMWMxYWEwZjMyNWE3YWNiCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJRnJpIE9jdCAyMyAxNTo1NTo0NyAyMDA5IC0wNTAwCgogICAgODV4eDogTVAgQm9vdCBQYWdlIFRyYW5zbGF0aW9uIHVwZGF0ZQoKICAgIFRoaXMgY2hhbmdlIGhhcyAzIGdvYWxzOgogICAgLSBIYXZlIHNlY29uZGFyeSBjb3JlcyBiZSByZWxlYXNlZCBpbnRvIHNwaW4gbG9vcHMgYXQgdGhlaXIgJ3RydWUnCiAgICAgIGFkZHJlc3MgaW4gU0RSQU0uICBQcmV2aW91c2x5LCBzZWNvbmRhcnkgY29yZXMgd2VyZSBwdXQgaW50byBzcGluCiAgICAgIGxvb3BzIGluIHRoZSAweGZmZmZmeHh4IGFkZHJlc3MgcmFuZ2Ugd2hpY2ggcmVxdWlyZWQgdGhhdCBib290IHBhZ2UKICAgICAgdHJhbnNsYXRpb24gd2FzIGFsd2F5cyBlbmFibGVkIHdoaWxlIGNvcmVzIHdlcmUgaW4gdGhlaXIgc3BpbiBsb29wcy4KCiAgICAtIEFsbG93IHRoZSBUTEIgd2luZG93IHRoYXQgdGhlIHByaW1hcnkgY29yZSB1c2VzIHRvIGFjY2VzcyB0aGUKICAgICAgc2Vjb25kYXJ5IGNvcmVzIGJvb3QgcGFnZSB0byBiZSBwbGFjZWQgYXQgYW55IGFkZHJlc3MuICBQcmV2aW91c2x5LCBhCiAgICAgIFRMQiB3aW5kb3cgYXQgMHhmZmZmZjAwMCB3YXMgYWx3YXlzIHVzZWQgdG8gYWNjZXNzIHRoZSBzZWNvbmFyeSBjb3JlcycKICAgICAgYm9vdCBwYWdlLiAgVGhpcyBUTEIgYWRkcmVzcyByZXF1aXJlbWVudCBvdmVybGFwcGVkIHdpdGggb3RoZXIKICAgICAgcGVyaXBoZXJhbHMgb24gc29tZSBib2FyZHMgKGVnIFhQZWRpdGU1MzcwKS4gIEJ5IGRlZmF1bHQsIHRoZSBib290CiAgICAgIHBhZ2UgVExCIHdpbGwgc3RpbGwgdXNlIHRoZSAweGZmZmZmeHh4IGFkZHJlc3MgcmFuZ2UsIGJ1dCB0aGlzIGNhbiBiZQogICAgICBvdmVycmlkZGVuIG9uIGEgYm9hcmQtYnktYm9hcmQgYmFzaXMgYnkgZGVmaW5pbmcgYSBjdXN0b20KICAgICAgQ09ORklHX0JQVFJfVklSVF9BRERSLiAgTm90ZSB0aGF0IHRoZSBUTEIgdXNlZCB0byBtYXAgdGhlIGJvb3QgcGFnZQogICAgICByZW1haW5zIGluIHVzZSB3aGlsZSBVLUJvb3QgZXhlY3V0ZXMuICBQcmV2aW91c2x5IGl0IHdhcyBvbmx5CiAgICAgIHRlbXBvcmFyaWx5IHVzZWQsIHRoZW4gcmVzdG9yZWQgdG8gaXRzIGluaXRpYWwgdmFsdWUuCgogICAgLSBBbGxvdyBCb290IFBhZ2UgVHJhbnNsYXRpb24gdG8gYmUgZGlzYWJsZWQgb24gYm9vdHVwLiAgUHJldmlvdXNseSwKICAgICAgQm9vdCBQYWdlIFRyYW5zbGF0aW9uIHdhcyBhbHdheXMgbGVmdCBlbmFibGVkIGFmdGVyIHNlY29uZGFyeSBjb3JlcwogICAgICB3ZXJlIGJyb3VnaHQgb3V0IG9mIHJlc2V0LiAgVGhpcyBjYXVzZWQgdGhlIDB4ZmZmZmZ4eHggYWRkcmVzcyByYW5nZQogICAgICB0byBzb21ld2hhdCAibWFnaWNhbGx5IiBiZSB0cmFuc2xhdGVkIHRvIGFuIGFkZHJlc3MgaW4gU0RSQU0uICBTb21lCiAgICAgIGJvYXJkcyBtYXkgbm90IHdhbnQgdGhpcyBvZGRpdHkgaW4gdGhlaXIgbWVtb3J5IG1hcCwgc28gZGVmaW5pbmcKICAgICAgQ09ORklHX01QQzh4eHhfRElTQUJMRV9CUFRSIHdpbGwgdHVybiBvZmYgQm9vdCBQYWdlIFRyYW5zbGF0aW9uIGFmdGVyCiAgICAgIHRoZSBzZWNvbmRhcnkgY29yZXMgYXJlIGluaXRpYWxpemVkLgoKICAgIFRoZXNlIGNoYW5nZXMgYXJlIG9ubHkgYXBwbGljYWJsZSB0byA4NXh4IGJvYXJkcyB3aXRoIENPTkZJR19NUCBkZWZpbmVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDcwZWQ4NjllYTVmNmIxZDEzZDdiMTQwYzgzZWMwZGNkOGExMjdkZGMKQXV0aG9yOiBWaXZlayBNYWhhamFuIDx2aXZlay5tYWhhamFuQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBPY3QgMjcgMTI6MTg6NTUgMjAwOSArMDUzMAoKICAgIHBwYy84NXh4L3BjaTogZnNsX3BjaV9pbml0OiBwY2llIGFnZW50IG1vZGUgc3VwcG9ydAoKICAgIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBKYXNvbiBKaW4gYW5kIE1pbmdrYWkgSHUgZm9yIG1wYzg1MzYuCgogICAgV2hlbiBRb3JJUSBiYXNlZCBib2FyZCBpcyBjb25maWd1cmVkIGFzIGEgUENJZSBhZ2VudCwgdGhlbiB1bmxvY2svZW5hYmxlCiAgICBpbmJvdW5kIFBDSSBjb25maWd1cmF0aW9uIGN5Y2xlcyBhbmQgaW5pdCBhIDRLIGluYm91bmQgbWVtb3J5IHdpbmRvdzsKICAgIHNvIHRoYXQgYSBQQ0llIGhvc3QgY2FuIGFjY2VzcyB0aGUgUENJZSBhZ2VudHMgU0RSQU0gYXQgYWRkcmVzcyAweDAKCiAgICAqIFN1cHBvcnRlZCBpbiBmc2xfcGNpX2luaXRfcG9ydCgpIGFmdGVyIGFkZGluZyBwY2llX2VwIGFzIGEgcGFyYW0KICAgICogUmV2YW1wZWQgY29weXJpZ2h0IGluIGRyaXZlcnMvcGNpL2ZzbF9wY2lfaW5pdC5jCiAgICAqIE1vZHMgaW4gODV4eCBiYXNlZCBib2FyZCBzcGVjaWZpYyBwY2kgaW5pdCBhZnRlciB0aGlzIGNoYW5nZQoKICAgIFNpZ25lZC1vZmYtYnk6IFZpdmVrIE1haGFqYW4gPHZpdmVrLm1haGFqYW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMjczYTI4YWQ5ZWY1OWRjZmNkNGMwNTZlYzFmNjFmMWUwODk2Y2ZhYQpBdXRob3I6IFBvb25hbSBBZ2dyd2FsIDxwb29uYW0uYWdncndhbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgT2N0IDI3IDA5OjM2OjM4IDIwMDkgKzA1MzAKCiAgICA4NXh4L3AxX3AyX3JkYjogRml4aW5nIEREUiBjb25maWd1cmF0aW9uIGZvciA4MDBNSHogZGF0YSByYXRlCgogICAgU2lnbmVkLW9mZi1ieTogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDkyNDAyNGMzOTY3NjFjMjY3Yjk0OGYzOGQ3OGU5OTA1ZjIwMzY1MDEKQXV0aG9yOiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE9jdCAyNyAwOToyNjo1NSAyMDA5ICswNTMwCgogICAgODV4eC9wMV9wMnJkYjogRml4IGNyYXNoIHdoaWxlIGNvbmZpZ3VyaW5nIDMyIGJpdCBERFIgaS9mIGZvciBQMTAyMFJEQi4KCiAgICBUaGUgZGF0YSBiZWluZyBtb2RpZmllZCB3YXMgaW4gTk9SIGZsYXNoIHdoaWNoIGNhdXNlZCB0aGUgY3Jhc2guCgogICAgU2lnbmVkLW9mZi1ieTogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDJjMGM1OGI5MmRiYjY4MDA3MDYxYmRjMGVkZDIzYmRmMTQyZWZlYmYKQXV0aG9yOiBTZXJnZXkgTWlyb25vdiA8aWVydG9uQGdtYWlsLmNvbT4KRGF0ZToJV2VkIFNlcCAyMyAxNjo0NzozOCAyMDA5ICswNDAwCgogICAgRml4IGJ1ZyBpbiBqdW1wdGFibGUgY2FsbCBzdHVicyBmb3IgU1BBUkMuCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2V5IE1pcm9ub3YgPGllcnRvbkBnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+Cgpjb21taXQgM2UzMDNmNzQ4Y2Y1N2ZiMjNlOGVjOTVhYjdlYWMwMDc0YmU1MGUyYgpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglUaHUgT2N0IDE1IDE3OjQ3OjA0IDIwMDkgKzA0MDAKCiAgICBmZHRfc3VwcG9ydDogQWRkIG11bHRpLXNlcmlhbCBzdXBwb3J0IGZvciBzdGRvdXQgZml4dXAKCiAgICBDdXJyZW50bHkgZmR0X2ZpeHVwX3N0ZG91dCgpIGlzIHVzaW5nIGhhcmQtY29kZWQgQ09ORklHX0NPTlNfSU5ERVgKICAgIGNvbnN0YW50LiBXaXRoIG11bHRpLXNlcmlhbCBzdXBwb3J0LCB0aGUgQ09OU19JTkRFWCBtYXkgbm8gbG9uZ2VyCiAgICByZXByZXNlbnQgYWN0dWFsIGNvbnNvbGUsIHNvIHdlIHNob3VsZCB0cnkgdG8gZXh0cmFjdCBwb3J0IG51bWJlcgogICAgZnJvbSB0aGUgY3VycmVudCBzdGRpbyBkZXZpY2UgbmFtZSBpbnN0ZWFkIG9mIGFsd2F5cyBoYXJkLWNvZGluZyB0aGUKICAgIGNvbnN0YW50IHZhbHVlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgQWNrZWQtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGRhMGU1ZjdlZTgyOGYyNDZkODU5OTc0ODZmZmYzMDg4MzcwNjk0NTMKQXV0aG9yOiBMZW9uIFdvZXN0ZW5iZXJnIDxsZW9uLndvZXN0ZW5iZXJnQGdtYWlsLmNvbT4KRGF0ZToJTW9uIE9jdCAyNiAxMDowMzozMiAyMDA5ICswMTAwCgogICAgcHBjLzg1eHg6IEZpeCBjcmFzaGVzIGR1ZSB0byBnZW5lcmF0aW9uIG9mIFNQRSBpbnN0cnVjdGlvbgoKICAgIFUtQm9vdCBjcmFzaGVkIG9uIHRoZSBsYXN0IGluc3RydWN0aW9uOgoKICAgIGludCBwYXJzZV9zdHJlYW1fb3V0ZXIoc3RydWN0IGluX3N0ciAqaW5wLCBpbnQgZmxhZykKICAgIHsKICAgIGVmZmE0Nzg0OgkgICAgOTQgMjEgZmYgMzggICAgIHN0d3UgICAgcjEsLTIwMChyMSkKICAgIGVmZmE0Nzg4OgkgICAgN2MgMDggMDIgYTYgICAgIG1mbHIgICAgcjAKICAgIGVmZmE0NzhjOgkgICAgNDIgOWYgMDAgMDUgICAgIGJjbC0gICAgMjAsNCpjcjcrc28sZWZmYTQ3OTAgPHBhcnNlX3N0cmVhbV9vdXRlcisweGM+CiAgICBlZmZhNDc5MDoJICAgIDdkIDgwIDAwIDI2ICAgICBtZmNyICAgIHIxMgogICAgZWZmYTQ3OTQ6CSAgICAxMyBjMSBiMyAyMSAgICAgZXZzdGRkICByMzAsMTc2KHIxKQoKICAgIC4uLndoaWNoIGlzIGEgIFNQRSBpbnN0cnVjdGlvbiwgYWx0aG91Z2ggLW1uby1zcGUgd2FzIHVzZWQuCgogICAgdG1wL2Nyb3NzL3BwY2U1MDB2Mi9iaW4vcG93ZXJwYy1hbmdzdHJvbS1saW51eC1nbnVzcGUtZ2NjIC0tdmVyc2lvbgogICAgcG93ZXJwYy1hbmdzdHJvbS1saW51eC1nbnVzcGUtZ2NjIChHQ0MpIDQuMy4zCgogICAgU2VlbXMgdG8gYmUgYSBrbm93biBpc3N1ZSAoc2luY2UgMjAwOC0wND8hKQoKICAgIEdvb2dsZWQgc29tZSwgdHVybnMgb3V0IHRoaXMgcGF0Y2gvd29ya2Fyb3VuZCB3b3JrcyBmb3IgbWUgb24gTVBDODUzNkRTLgoKICAgIFNlZSBodHRwOi8vZ2NjLmdudS5vcmcvbWwvZ2NjLXBhdGNoZXMvMjAwOC0wNC9tc2cwMDMxMS5odG1sIGZvciBtb3JlIGluZm8KCiAgICBTaWduZWQtb2ZmLWJ5OiBMZW9uIFdvZXN0ZW5iZXJnIDxsZW9uQHNpZGVicmFuY2guY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA2NTRlYTFmMzE4NDIzNTY5NDMwNmRkYzU4NzRiYWEyN2FkMzAxOGZlCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE9jdCAyMiAwMDoxMDoyMyAyMDA5IC0wNTAwCgogICAgcHBjLzg1eHg6IE1ha2UgTDIgc3VwcG9ydCBtb3JlIHJvYnVzdAoKICAgIEFjY29yZGluZyB0aGUgdXNlciBtYW51YWwsIHdlIG5lZWQgbG9vcC1jaGVjayB0aGUgTDIgZW5hYmxlIGJpdCBzZXQuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNjEzYWQyOGMzZGE0YzdmYzYzMzZlZjlkOTQ5OTNiMjVhNWQwNTg2ZQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBPY3QgMjYgMjE6MjE6MjUgMjAwOSAtMDUwMAoKICAgIHBwYy84NXh4OiBGaXggY29tcGlsZXIgd2FybmluZyBpbiBuYW5kX3NwbC8uLi4vcDFfcDJfcmRiL25hbmRfYm9vdC5jCgogICAgbmFuZF9ib290LmM6IEluIGZ1bmN0aW9uICdib2FyZF9pbml0X2YnOgogICAgbmFuZF9ib290LmM6NDQ6IHdhcm5pbmc6ICdzeXNfY2xrJyBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIGluIHRoaXMgZnVuY3Rpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGU4OTY3ZDk2YTBlOGQwOWQ5MWEzYjdiZDI5Mjc0Njk5NmRkOGU3YWMKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gT2N0IDI2IDIxOjE4OjMzIDIwMDkgLTA1MDAKCiAgICBwcGMvODV4eDogRml4IGJ1aWxkaW5nIE5BTkRfU1BMIG91dCBvZiB0cmVlCgogICAgV2UgbmVlZCB0byBzb3VyY2UgZmlsZXMgdG8gZXhpc3QgaW4gdGhlIE89PEZPTz4gbmFuZF9zcGwgZGlyIHdoZW4KICAgIHdlIGJ1aWxkIG91dCBvZiB0cmVlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZjNlZTI1ODU5ZTM5MjBlZTdjN2NjNTE5YTNlNmY2MGQ3MGQ3YTUzZgpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+CkRhdGU6CUZyaSBPY3QgMjMgMTA6NTI6MzggMjAwOSArMDIwMAoKICAgIExpY2Vuc2UgY2xlYW51cDogRml4IGxpY2Vuc2UgaGVhZGVyIGZvciBzb21lIGVzZCBkaXNwbGF5IGNvbmZpZ3VyYXRpb25zCgogICAgVGhlc2UgZmlsZXMgd2VyZSBhdXRvZ2VuZXJhdGVkIGJ5IEVQU09OIGNvbmZpZ3VyYXRpb24gdG9vbHMuCiAgICBUaGlzIHBhdGNoIHJlcGxhY2VzIHRoZSBhdXRvZ2VuZXJhdGVkIGZpbGUgaGVhZGVycyBieSB0aGUgR1BMCiAgICBsaWNlbnNlIG5vdGljZS4KCiAgICBUaGlzIGNoYW5nZSBpcyBkb25lIHdpdGggdGhlIGV4cGxpY2l0IHBlcm1pc3Npb24KICAgIG9mIEVwc29uIFJlc2VhcmNoICYgRGV2ZWxvcG1lbnQgLyBJQyBTb2Z0d2FyZSBEZXZlbG9wbWVudC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgoKY29tbWl0IDQxNjZlZTU4ZDMwYWRhN2IyOThiOWM5NDEwNjdmMDM0MWMyZGNjYmUKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CUZyaSBPY3QgOSAxNzoxMjo0NCAyMDA5IC0wNDAwCgogICAgc2Y6IGFkZCBHUEwtMiBsaWNlbnNlIGluZm8KCiAgICBTb21lIG9mIHRoZSBuZXcgc3BpIGZsYXNoIGZpbGVzIHdlcmUgbWlzc2luZyBleHBsaWNpdCBsaWNlbnNlIGxpbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIENDOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgZDUzNWE0OTMwMDRmYjcwMWYxMzFiMTMyNDAyYTc3MDRmOWM5MzQyZApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBPY3QgMjEgMjM6Mjk6NTEgMjAwOSAtMDUwMAoKICAgIGZkdDogRml4IGZkdCBwYWRkaW5nIGlzc3VlIGZvciBpbml0cmQgbWVtX3JzdgoKICAgIEl0cyBwb3NzaWJsZSB0aGF0IHdlIGVuZCB1cCB3aXRoIGEgZGV2aWNlIHRyZWUgdGhhdCBoYXBwZW5zIHRvIGJlIGEKICAgIHBhcnRpY3VsYXIgc2l6ZSB0aGF0IGFmdGVyIHdlIGNhbGwgZmR0X3Jlc2l6ZSgpIHdlIGRvbid0IGhhdmUgYW55CiAgICBzcGFjZSBsZWZ0IGZvciB0aGUgaW5pdHJkIG1lbV9yc3YuCgogICAgRml4IHRoaXMgYmUgYWRkaW5nIGEgc2Vjb25kIG1lbV9yc3YgaW50byB0aGUgc2l6ZSBjYWxjdWxhdGlvbi4gIFdlCiAgICBoYWQgb25lIHRvIGNvdmVyIHRoZSBmZHQgaXRzZWxmIGFuZCB3ZSBoYXZlIHRoZSBwb3RlbnRpYWwgb2YgYWRkaW5nCiAgICBhIHNlY29uZCBmb3IgdGhlIGluaXRyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgQWNrZWQtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgNGJjM2QyYWZiMzgwZTc4ZmRiYjljNTAxZDlhOGRhNmQ1OWViMTc4ZQpBdXRob3I6IFN0ZXZlIFNha29tYW4gPHNha29tYW5AZ21haWwuY29tPgpEYXRlOglUdWUgT2N0IDIwIDE4OjIxOjE4IDIwMDkgKzAyMDAKCiAgICBBUk06IE9NQVAzOiBSZWZhY3RvcnMgdGhlIFNNOTExeCBkcml2ZXIKCiAgICBNb3ZlIHRoZSB0ZXN0IHVwIGluIHRoZSBmdW5jdGlvbiB0byBub3QgaGFuZyBvbiBzeXN0ZW1zIHdpdGhvdXQgZXRoZXJuZXQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RldmUgU2Frb21hbiA8c2Frb21hbkBnbWFpbC5jb20+CiAgICBBY2tlZC1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBmMzgwNzM3NDc4N2U0Mzk0ZWZiNzY3ZTJlODUyNzg4N2Y1N2U1MWI4CkF1dGhvcjogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgpEYXRlOglUaHUgT2N0IDE1IDExOjE5OjE1IDIwMDkgKzA5MDAKCiAgICBzNXBjMXh4OiBTTURLQzEwMDogZml4IGNvbXBpbGUgd2FybmluZ3MKCiAgICBmaXggdGhlIGZvbGxvd2luZyBjb21waWxlIHdhcm5pbmdzCiAgICB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Cgpjb21taXQgODAwM2MzNjFkZWVjM2VlNjUxNDUxNjYyZWZkMDUzNTJmMWFiZGQ0MApBdXRob3I6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KRGF0ZToJVHVlIE9jdCA2IDA4OjQ0OjIyIDIwMDkgKzAyMDAKCiAgICBhcm05MjZlanM6IDgtYnl0ZSBhbGlnbiBzdGFjayB0byBhdm9pZCBMRFJEL1NUUkQgcHJvYmxlbXMKCiAgICBVLWJvb3QgZm9yIE1hcnZlbGwgS2lya3dvb2QgYm9hcmRzIG5vIGxvbmdlciB3b3JrIGFmdGVyIHRoZSBFQUJJIGNoYW5nZXMKICAgIGludHJvZHVjZWQgaW4gY29tbWl0IGY3NzJhY2Y4YTU4NDA2NzAzM2VmZjFlMjMxZmNkMWZiM2EwMGQzZDkuIFRoaXMKICAgIHR1cm5zIG91dCB0byBiZSBjYXVzZWQgYnkgYSBzdGFjayBhbGlnbm1lbnQgaXNzdWUuIFRoZSBhcm12NXRlCiAgICBpbnN0cnVjdGlvbnMgbGRyZC9zdHJkIGluc3RydWN0aW9ucyByZXF1aXJlIDgtYnl0ZSBhbGlnbm1lbnQgdG8gd29yawogICAgcHJvcGVybHkgKG90aGVyd2lzZSB1bmRlZmluZWQgYmVoYXZpb3IpLgoKICAgIFRlc3RlZCBvbiBhbiBPcGVuUkQgYmFzZSBib2FyZCwgd2hlcmUgYm90aCBwcmludG91dHMgYW5kIHViaWZzIHN0dWZmIG5vdwogICAgd29ya3MuCgogICAgU2lnbmVkLW9mZi1ieTogU2ltb24gS2Fnc3Ryb20gPHNpbW9uLmthZ3N0cm9tQG5ldGluc2lnaHQubmV0PgoKY29tbWl0IGU2M2U1OTA0YjQ4NTI4ZjNmM2NjOTgzMTdkZjZmYzYyZmFiMjViZjkKQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CkRhdGU6CVNhdCBPY3QgMTcgMTI6NDE6MDYgMjAwOSAtMDUwMAoKICAgIFRJIE9NQVAzIFNEUDM0MzA6IEluaXRpYWwgU3VwcG9ydAoKICAgIFN0YXJ0IG9mIHN1cHBvcnQgb2YKICAgIFRleGFzIEluc3RydW1lbnRzIFNvZnR3YXJlIERldmVsb3BtZW50IFBsYXRmb3JtKFNEUCkKICAgIGZvciBPTUFQMzQzMCAtIFNEUDM0MzAKCiAgICBIaWdobGlnaHRzIG9mIHRoaXMgcGxhdGZvcm0gYXJlOgogICAgRmxhc2ggTWVtb3J5IGRldmljZXM6CglTaWJsZXkgTk9SLCBNaWNyb24gOGJpdCBOQU5EIGFuZCBPbmVOQU5ECiAgICBDb25uZWN0aXZpdHk6CgkzIFVBUlRzIGFuZCBleHBhbmRlZCA0IFVBUlQgcG9ydHMgKyBJckRBCglFdGhlcm5ldCwgVVNCCiAgICBPdGhlciBwZXJpcGhlcmFsczoKCVRXTDUwMzAgUE1JQytBdWRpbytLZXlwYWQKCVZHQSBkaXNwbGF5CiAgICBFeHBhbnNpb24gcG9ydHM6CglNZW1vcnkgZGV2aWNlcyBwbHVnaW4gYm9hcmRzIChQSVNNTykKCUNvbm5lY3Rpdml0eSBib2FyZCBmb3IgR1BTLFdMQU4gZXRjLgogICAgQ29tcGxldGVseSBjb25maWd1cmFibGUgYm9vdCBzZXF1ZW5jZSBhbmQgZGV2aWNlIG1hcHBpbmcKICAgIGV0Yy4KCiAgICBTdXBwb3J0IGRlZmF1bHQganVtcGVyaW5nIGFuZDoKICAgICAtIFVBUlQxL3R0eVMwIGNvbnNvbGUobGVnYWN5IHNkcDM0MzAgdS1ib290KQogICAgIC0gVUFSVDMvdHR5UzIgY29uc29sZSAobWF0Y2hpbmcgb3RoZXIgYm9hcmRzLAoJCSBhbmQgU0RQIEhXIGRvY3MpCiAgICAgLSBFdGhlcm5ldAogICAgIC0gbW1jMAogICAgIC0gTk9SIGJvb3QKCiAgICBDdXJyZW50bHkgdGhlIFVBUlQxIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4JZm9yCiAgICBjb21wYXRpYmlsaXR5IHdpdGggb3RoZXIgT01BUDMgdS1ib290IHBsYXRmb3JtcywKICAgIGVuYWJsZSB0aGUgI2RlZmluZSBvZiBDT05TT0xFX0o5LgoKICAgIENvbmZsaWN0czoKCglNYWtlZmlsZQoKICAgIEZpeGVkIHRoZSBjb25mbGljdCB3aXRoIHNtZGtjMTAwX2NvbmZpZyBieSBtb3Zpbmcgb21hcF9zZHAzNDMwX2NvbmZpZwogICAgdG8gaXQgaXMgYWxwaGFiZXRpY2FsbHkgc29ydGVkIGxvY2F0aW9uIGFib3ZlIHpvb20xLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEJyb3duZWxsIDxkYXZpZC1iQHBhY2JlbGwubmV0PgogICAgU2lnbmVkLW9mZi1ieTogTmlzaGFudGggTWVub24gPG5tQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KCmNvbW1pdCBhNDQ3NGZmODYyOWJlNWYyOGFlZmI4YTlmNDhkNDQxMWQ2MmZiMGQyCkF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgpEYXRlOglUdWUgT2N0IDEzIDE5OjM1OjExIDIwMDkgLTA0MDAKCiAgICBUSSBEYVZpbmNpOiBBZGRpbmcgQ29weXJpZ2h0IGZvciBETTM2NSBFVk0KCiAgICBGb3Jnb3QgdG8gYWRkIENvcHlyaWdodCB3aGlsZSBzdWJtaXR0aW5nIHRoZSBwYXRjaC4KICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgY29weXJpZ2h0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KCmNvbW1pdCAxMWIwMTAyMjE4YmJiNTBhYzVjMDRmMTUyMWYyYTIyZWQ0ZTkwY2YxCkF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgpEYXRlOglUdWUgT2N0IDEzIDEyOjMyOjMyIDIwMDkgLTA0MDAKCiAgICBUSSBEYVZpbmNpOiBGaXggRE02NDY3IEVWTSBDb21waWxhdGlvbiBXYXJuaW5nCgogICAgRHVlIHRvIG5ldyBUSSBib2FyZHMgYmVpbmcgYWRkZWQgdG8gVS1Cb290LCB0aGUgaGFyZHdhcmUuaAogICAgaXMgZ2V0dGluZyB2ZXJ5IG1lc3N5LiBUaGUgd2FybmluZyBiZWluZyBmaXhlZCBpcyBkdWUgdG8KICAgIHRoZSBFTUlGIGFkZHJlc3NlcyBiZWluZyByZWRlZmluZWQuCgogICAgVGhlIGxvbmcgdGVybSBzb2x1dGlvbihhZnRlciAyMDA5LjExKSB0byB0aGlzIGlzIHRvCiAgICBoYXZlIFNPQyBzcGVjaWZpYyBoZWFkZXIgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgoKY29tbWl0IGZhYzFlZjRiYTY4NTYwNmJmMjgzNDlkMThlMDUwZWEwOGI1MGU2NjkKQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+CkRhdGU6CVR1ZSBPY3QgMTMgMTI6MDE6NTIgMjAwOSAtMDQwMAoKICAgIFRJIERhVmluY2k6IERNMzU1IExlb3BhcmQ6IEZpeCBjb21waWxhdGlvbiB3YXJuaW5nCgogICAgV2UgZ2V0IGEgY29tcGxpYXRpb24gd2FybmluZyB3aGVuIHdlIGVuYWJsZSB0aGUgTkFORCBkcml2ZXIKICAgIGZvciBETTM1NSBsZW9wYXJkLiBUaGUgd2FyaW5nIHdlIGdldCBpcyB0aGF0IHdlIGhhdmUKICAgIGFuIGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGRhdmluY2lfbmFuZF9pbml0LgoKICAgIEl0IGlzIGZpeGVkIGJ5IGluY2x1ZGluZyB0aGUgYXNtL2FyY2gvbmFuZF9kZWZzLmggaGVhZGVyIGZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Cgpjb21taXQgZjhhODEyYWE2NTZiYzM0NjIyMzAzYTI2ZmE1MDAzZDE5YzM0YWVlZApBdXRob3I6IE5pc2hhbnRoIE1lbm9uIDxubUB0aS5jb20+CkRhdGU6CVR1ZSBPY3QgMTMgMTI6NDk6NTUgMjAwOSAtMDQwMAoKICAgIFRJIE9NQVAzOiBtYWtlIGdwbWNfY29uZmlnIGFzIGNvbnN0CgogICAgZ3BtY19jb25maWcgc2hvdWxkIG5vdCBiZSBhIHZhcmlhbnQgYXMgaXQgaXMgYm9hcmQgc3BlY2lmaWMKICAgIGhlbmNlIG1ha2UgaXQgYSBjb25zdCBwYXJhbWV0ZXIKCiAgICBGaXhlcyBpc3N1ZXMgaWRlbnRpZmllZCBieSBEaXJrOgogICAgLSBidWlsZCBpc3N1ZSBmb3Igem9vbTIKICAgIC0gd2FybmluZ3MgZm9yIGFsbCBvdGhlciBPTUFQMyBwbGF0Zm9ybXMgdXNpbmcgbmFuZC9vbmVuYW5kIGV0YwoKICAgIFNpZ25lZC1vZmYtYnk6IE5pc2hhbnRoIE1lbm9uIDxubUB0aS5jb20+Cgpjb21taXQgY2ZjMjU4NzQ2MjRhMzI4ZjUzYWQ1OWIxMjA2ZTIxMDNmMmU2MmQ3NApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE9jdCAxOSAxNjoxOTozNiAyMDA5ICswMjAwCgogICAgcHBjNHh4OiBTZXF1b2lhOiBBZGQgY2hpcF9jb25maWcgY29tbWFuZAoKICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgU2VxdW9pYSAiYm9vdHN0cmFwIiBjb21tYW5kIGFuZCByZXBsYWNlcyBpdAogICAgd2l0aCB0aGUgbm93IGNvbW1vbiBjb21tYW5kICJjaGlwX2NvbmZpZyIuCgogICAgUGxlYXNlIG5vdGUgdGhhdCB0aGUgcGF0Y2hlcyB3aXRoIHRoZSBkeW5hbWljIFBDSSBzeW5jIGNsb2NrCiAgICBjb25maWd1cmF0aW9uIGhhdmUgdG8gYmUgYXBwbGllZCwgYmVmb3JlIHRoaXMgb25lIHNob3VsZCBnbyBpbi4KICAgIFRoaXMgaXMgYmVjYXVzZSBTZXF1b2lhIGhhcyAyIGRpZmZlcmVudCBib290c3RyYXAgRUVQUk9NcywgYW5kCiAgICB0aGUgb2xkIGJvb3RzdHJhcCBjb21tYW5kIGNvbmZpZ3VyZWQgZGlmZmVyZW50IHZhbHVlcyBkZXBlbmRpbmcKICAgIG9uIHRoZSBkZXRlY3RlZCBQQ0kgYXN5bmMgY2xvY2sgKDMzIHZzLiA2Nk1IeikuIFdpdGggdGhlIFBDSSBzeW5jCiAgICBjbG9jayBwYXRjaGVzLCB0aGlzIGlzIG5vdCBuZWNlc3NhcnkgYW55bW9yZS4gVGhlIFBDSSBzeW5jIGNsb2NrCiAgICB3aWxsIGJlIGNvbmZpZ3VyZWQgY29ycmVjdGx5IG9uLXRoZS1mbHkgbm93LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjODViNTgzOTcwMzBlMjVlMTQ2Y2NmNTA4NWM4NjIyMWM0MGM1M2IzCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gT2N0IDE5IDE0OjE0OjA4IDIwMDkgKzAyMDAKCiAgICBwcGM0eHg6IFlvc2VtaXRlL1llbGxvd3N0b25lOiBDaGVjayBhbmQgcmVjb25maWd1cmUgdGhlIFBDSSBzeW5jIGNsb2NrCgogICAgVGhpcyBwYXRjaCBub3cgdXNlcyB0aGUgNDQwRVAoeCkvR1IoeCkgZnVuY3Rpb24gdG8gY2hlY2sgYW5kIGR5bmFtaWNhbGx5CiAgICByZWNvbmZpZ3VyZSB0aGUgUENJIHN5bmMgY2xvY2suCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDIzYzUxYTJkNjM5M2NkM2JlOWViNjJjYjQyZDkyMTM4ZmY2ZGI4YTkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBPY3QgMTkgMTQ6MTA6NTAgMjAwOSArMDIwMAoKICAgIHBwYzR4eDogU2VxdW9pYS9SYWluZXI6IENoZWNrIGFuZCByZWNvbmZpZ3VyZSB0aGUgUENJIHN5bmMgY2xvY2sKCiAgICBUaGlzIHBhdGNoIG5vdyB1c2VzIHRoZSA0NDBFUCh4KS9HUih4KSBmdW5jdGlvbiB0byBjaGVjayBhbmQgZHluYW1pY2FsbHkKICAgIHJlY29uZmlndXJlIHRoZSBQQ0kgc3luYyBjbG9jay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDhjNmEyNjI4NDc4YWNlODA4YjM3NjdkYjE3ZTQxNDhjYWM1YTdmYgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE9jdCAxOSAxNDo0NDoxMSAyMDA5ICswMjAwCgogICAgcHBjNHh4OiBQcmludCBQQ0kgc3luY2hyb25vdXMgY2xvY2sgZnJlcXVlbmN5IHVwb24gYm9vdHVwCgogICAgU29tZSA0eHggdmFyaWFudHMgKGUuZy4gNDQwRVAoeCkvR1IoeCkpIGhhdmUgYW4gaW50ZXJuYWwKICAgIHN5bmNocm9ub3VzIFBDSSBjbG9jay4gS25vd2xlZGdlIGFib3V0IHRoZSBjdXJyZW50bHkgY29uZmlndXJlZAogICAgdmFsdWUgbWlnaHQgYmUgaGVscGZ1bC4gU28gbGV0J3MgcHJpbnQgaXQgb3V0IHVwb24gYm9vdHVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1ZTQ3Zjk1MzVmNTNmZDRjYzA1ZjMyZmI2MTY2ODcwZjk3NmZiYjRlCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gT2N0IDE5IDE0OjA2OjIzIDIwMDkgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBmdW5jdGlvbiB0byBjaGVjayBhbmQgZHluYW1pY2FsbHkgY2hhbmdlIFBDSSBzeW5jIGNsb2NrCgogICAgUFBDNDQwRVAoeCkvUFBDNDQwR1IoeCk6CiAgICBJbiBhc3luY2hyb25vdXMgUENJIG1vZGUsIHRoZSBzeW5jaHJvbm91cyBQQ0kgY2xvY2sgbXVzdCBtZWV0CiAgICBjZXJ0YWluIHJlcXVpcmVtZW50cy4gVGhlIGZvbGxvd2luZyBlcXVhdGlvbiBkZXNjcmliZXMgdGhlCiAgICByZWxhdGlvbnNoaXAgdGhhdCBtdXN0IGJlIG1haW50YWluZWQgYmV0d2VlbiB0aGUgYXN5bmNocm9ub3VzIFBDSQogICAgY2xvY2sgYW5kIHN5bmNocm9ub3VzIFBDSSBjbG9jay4gU2VsZWN0IGFuIGFwcHJvcHJpYXRlIFBDSTpQTEIKICAgIHJhdGlvIHRvIG1haW50YWluIHRoZSByZWxhdGlvbnNoaXA6CgogICAgQXN5bmNQQ0lDbGsgLSAxTUh6IDw9IFN5bmNQQ0ljbG9jayA8PSAoMiAqIEFzeW5jUENJQ2xrKSAtIDFNSHoKCiAgICBUaGlzIHBhdGNoIG5vdyBhZGRzIGEgZnVuY3Rpb24gdG8gY2hlY2sgYW5kIHJlY29uZmlndXJlIHRoZSBzeW5jCiAgICBQQ0kgY2xvY2sgdG8gbWVldCB0aGlzIHJlcXVpcmVtZW50LiBUaGlzIGlzIGluIHByZXBhcmF0aW9uIGZvcgogICAgc29tZSBBTUNDIGJvYXJkcyAoU2VxdW9pYS9SYWluaWVyIGFuZCBZb3NlbWl0ZS9ZZWxsb3dzdG9uZSkgdXNpbmcgdGhpcwogICAgZnVuY3Rpb24gdG8gbm90IHZpb2xhdGUgdGhlIFBDSSBjbG9ja2luZyBydWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOTJiODk2NGJlZDBkMWI3NzlkOWUyNmJlNGUxNjc1NWI1YzYzNTQxNQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIE9jdCAxNiAxMDowMTowOSAyMDA5ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgZmxhc2ggc2l6ZSBpbiByZWcgcHJvcGVydHkgb2YgdGhlIE5PUiBmbGFzaCBub2RlCgogICAgVGlsbCBub3cgb25seSB0aGUgcmFuZ2VzIGluIHRoZSBlYmMgbm9kZSBhcmUgdXBkYXRlZCB3aXRoIHRoZSB2YWx1ZXMKICAgIGN1cnJlbnRseSBjb25maWd1cmVkIGluIHRoZSBQUEM0eHggRUJDIGNvbnRyb2xsZXIuIFdpdGggdGhpcyBwYXRjaCBub3cKICAgIHRoZSBOT1IgZmxhc2ggc2l6ZSBpcyB1cGRhdGVkIGluIHRoZSBkZXZpY2UgdHJlZSBibG9iIGFzIHdlbGwuIFRoaXMgaXMKICAgIGRvbmUgYnkgc2Nhbm5pbmcgdGhlIGNvbXBhdGlibGUgbm9kZXMgImNmaS1mbGFzaCIgYW5kICJqZWRlYy1mbGFzaCIKICAgIGZvciB0aGUgY29ycmVjdCBjaGlwIHNlbGVjdCBudW1iZXIuCgogICAgVGhpcyBzaXplIGZpeHVwIGlzIGVuYWJsZWQgZm9yIGFsbCBBTUNDIGV2YWwgYm9hcmQgcmlnaHQgbm93LiBPdGhlcgogICAgNHh4IGJvYXJkcyBtYXkgd2FudCB0byBlbmFibGUgaXQgYXMgd2VsbCwgaWYgdGhpcyBwcm9ibGVtIHdpdGggbXVsdGlwbGUKICAgIE5PUiBGTEFTSCBzaXplcyBleGlzdHMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQ2M6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMzBkNDVjMGQzZWEyMjMxZjkxMzEyNzZlYTExMzU5NTk1OWEwNzIwZQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE9jdCAyMSAxMTo1OTo1MiAyMDA5ICswMjAwCgogICAgZmR0OiBBZGQgZmR0X2ZpeHVwX25vcl9mbGFzaF9zaXplKCkgdG8gZml4dXAgTk9SIEZMQVNIIHNpemUgaW4gZHRiCgogICAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byB1cGRhdGUgdGhlIHNpemUgaW4gdGhlICJyZWciIHByb3BlcnR5CiAgICBvZiB0aGUgTk9SIEZMQVNIIGRldmljZSBub2Rlcy4gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGJvYXJkcyB3aXRoCiAgICBub24tZml4ZWQgTk9SIEZMQVNIIHNpemVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgogICAgQWNrZWQtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNzY3MDZjYjg2YjFjNzY5NTRmZjUzNTNkYjY3NTdhYjk5Y2ZkOTVmYgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBPY3QgMjAgMjM6MTI6MTMgMjAwOSArMDIwMAoKICAgIGNwdS9wcGM0eHgvZmR0LmM6IGF2b2lkIHN0cmNweSgpIHRvIGNvbnN0YW50IHN0cmluZwoKICAgIHN0cmNweSgpIHdhcyBpdXNlZCB3aXRoIHRoZSB0YXJnZXQgYWRkcmVzcyBiZWluZyBhIHBvaW50ZXIgdG8gYQogICAgY29uc3RhbnQgc3RyaW5nLCB3aGljaCBwb3RlbnRpYWxseSBpcyByZWFkLW9ubHkuIFVzZSBhICh3cml0YWJsZSkKICAgIGFycmF5IG9mIGNoYXJhY3RlcnMgaW5zdGVhZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDBlMWFjOTgxMTk0YWEwZDkyZWZmMDkzNDQ0MmNlYzQ4YTRmNTc4MzQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgT2N0IDIwIDIzOjA3OjA0IDIwMDkgKzAyMDAKCiAgICBjcHUvcHBjNHh4L2ZkdC5jOiBhdm9pZCBzdHJjcHkoKSB0byBjb25zdGFudCBzdHJpbmcKCiAgICBzdHJjcHkoKSB3YXMgaXVzZWQgd2l0aCB0aGUgdGFyZ2V0IGFkZHJlc3MgYmVpbmcgYSBwb2ludGVyIHRvIGEKICAgIGNvbnN0YW50IHN0cmluZywgd2hpY2ggcG90ZW50aWFsbHkgaXMgcmVhZC1vbmx5LiBVc2UgYSAod3JpdGFibGUpCiAgICBhcnJheSBvZiBjaGFyYWN0ZXJzIGluc3RlYWQuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjNTUwOTZjMDg0MzA4YzA4YmY4ODkxYzE5MGY5MGJkYzNhMjMyMzk0CkF1dGhvcjogRGFuaWVsIE1hY2sgPGRhbmllbEBjYWlhcS5kZT4KRGF0ZToJV2VkIEFwciA4IDEzOjIzOjM4IDIwMDkgKzAyMDAKCiAgICBzbWM5MTF4OiBhZGQgc3VwcG9ydCBmb3IgTEFOOTIyMAoKICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBNYWNrIDxkYW5pZWxAY2FpYXEuZGU+CiAgICBDYzogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBmNjcwNjZiNmIwNzQwYjgyNmVkODYyNjE1YzVhYjAyMmFhZjQ3NzlhCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gT2N0IDE4IDIwOjQzOjE0IDIwMDkgLTA0MDAKCiAgICBlbnZjcmM6IGNoZWNrIHJldHVybiB2YWx1ZSBvZiBmd3JpdGUoKQoKICAgIE5ld2VyIHRvb2xjaGFpbnMgd2lsbCBvZnRlbiBjb21wbGFpbiBhYm91dCB1bmNoZWNrZWQgZndyaXRlKCk6CgllbnZjcmMuYzoxMTc6IHdhcm5pbmc6IGlnbm9yaW5nIHJldHVybiB2YWx1ZSBvZiBgZndyaXRltCwgZGVjbGFyZWQKCQl3aXRoIGF0dHJpYnV0ZSB3YXJuX3VudXNlZF9yZXN1bHQKCiAgICBTbyBjaGVjayB0aGUgcmV0dXJuIHZhbHVlIHRvIHNpbGVuY2UgdGhlIHdhcm5pbmdzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBlZmQ5ODhlYmFhMjQxYmFiMjY1YjE1MTEwNTIzNTAyMDdjYjdhYWEwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIE9jdCAxOSAwOToxODo1NyAyMDA5ICswMjAwCgogICAgbWNjMjAwOiBmaXggYnVpbGQgZXJyb3IKCiAgICBGaXggY29tcGlsZSBlcnJvcjoKICAgIGluY2x1ZGUvY29uZmlncy9tY2MyMDAuaDo0MDE6NjogZXJyb3I6ICNlbGlmIHdpdGggbm8gZXhwcmVzc2lvbgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNGUwNTM5ZDI2OTY5OTJhNWUzMjY0M2EwYzgzMWU4NzBjZmU5YTAzNgpBdXRob3I6IE5pc2hhbnRoIE1lbm9uIDxubUB0aS5jb20+CkRhdGU6CVR1ZSBPY3QgMTMgMTI6NDc6MzkgMjAwOSAtMDQwMAoKICAgIE9NQVAzOiBmaXggd2FybmluZ3Mgd2hlbiBOQU5EL09ORU5BTkQgaXMgbm90IHVzZWQKCiAgICBGaXggYnVpbGQgd2FybmluZ3MgYnkgcHV0dGluZyBzcGVjaWZpYyB1c2VkIHZhcmlhYmxlcwogICAgdW5kZXIgcmVxdWlyZWQgI2lmZGVmcyBmb3IgcmVtb3Zpbmc6CiAgICBtZW0uYzoyMjc6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAnZl9zZWMnCiAgICBtZW0uYzoyMjY6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAnZl9vZmYnCiAgICBtZW0uYzoyMjU6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAnc2l6ZScKICAgIG1lbS5jOjIyNDogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdiYXNlJwogICAgbWVtLmM6MjIyOiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ2dwbWNfY29uZmlnJwoKICAgIFNpZ25lZC1vZmYtYnk6IE5pc2hhbnRoIE1lbm9uIDxubUB0aS5jb20+Cgpjb21taXQgNzNkYjBjNzFkYTM2NWEyZDEwMTg3OGFlM2FlYjhmZjM1NDVhMTgyOApBdXRob3I6IE5pc2hhbnRoIE1lbm9uIDxubUB0aS5jb20+CkRhdGU6CVR1ZSBPY3QgMTMgMTI6NDc6MjQgMjAwOSAtMDQwMAoKICAgIE9NQVAzOiBleHBvcnQgZW5hYmxlX2dwbWNfY3NfY29uZmlnIHRvIGJvYXJkIGZpbGVzCgogICAgRXhwb3J0IGVuYWJsZV9ncG1jX2NzX2NvbmZpZyBpbnRvIGNvbW1vbiBoZWFkZXIgdG8KICAgIHByZXZlbnQgd2FybmluZzoKCiAgICB3YXJuaW5nOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnZW5hYmxlX2dwbWNfY3NfY29uZmlnJwoKICAgIFNpZ25lZC1vZmYtYnk6IE5pc2hhbnRoIE1lbm9uIDxubUB0aS5jb20+Cgpjb21taXQgOTZhMjdjNmRjMjlhYmYxMTc0MDYzMmVjZDhjY2FiNjA3YjIwOWM1ZApBdXRob3I6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KRGF0ZToJTW9uIE9jdCAxMiAxMjowNzo0MCAyMDA5IC0wNDAwCgogICAgWm9vbTIgRml4IHNlcmlhbCBncG1jIHNldHVwCgogICAgVGhlIG9mZnNldCB0byB0aGUgY2hpcCBzZWxlY3QgaXMgaW5jb3JyZWN0LgoKICAgIFRoZSBjaGFuZ2UgMTg3YWY5NTRjZjc5NThjMjRlZmNmMGZkNjIyODliYmRiNGYxZjI0ZSwKCiAgICBvbWFwMzogZW1iZWRkIGdwbWNfY3MgaW50byBncG1jIGNvbmZpZyBzdHJ1Y3QKCiAgICBpbnRyb2R1Y2VkIGEgcHJvYmxlbSB3aXRoIHRoZSBzZXJpYWwgZ3BtYyBzZXR1cC4KCiAgICBUaGlzIHBhdGNoIHJldmVydHMgdGhlIGNoaXAgc2VsZWN0IHRvIGl0cyBwcmV2aW91cyB2YWx1ZS4KCiAgICBUaGUgc3ltcHRvbXMgb2YgdGhpcyBwcm9ibGVtIGFyZSB0aGF0IHRoZSBab29tMgogICAgY3VycmVudGx5IGhhbmdzLgoKICAgIFRoaXMgd2FzIHJ1biB0ZXN0ZWQgb24gWm9vbTIuCgogICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgoKY29tbWl0IDY0ZDk0NWFiZThjZmZiYWNkYWVjYTVmNjNiOWI4NGY4OTVkMmQ5YWIKQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+CkRhdGU6CVN1biBPY3QgMTEgMDk6MTA6MjcgMjAwOSAtMDQwMAoKICAgIFRJIERhVmluY2kgU29uYXRhOiBBZGQgQ29uZmlnIG9wdGlvbiBmb3IgNjQgYml0IFN1cHBvcnQKCiAgICBBZGRpbmcgdGhlIENPTkZJR19TWVNfNjRCSVRfVlNQUklOVEYgZm90IHRoZSBETTY0NHggYmFzZWQgU29uYXRhCiAgICBXaXRob3V0IHRoaXMgb3B0aW9uIGVuYWJsZWQgd2hpbGUgcGVyZm9ybWluZyBOQU5EIG9wZXJhdGlvbnMgd2Ugd2lsbCBnZXQKICAgIHdyb25nIGRpYWdub3N0aWMgbWVzc2FnZXMuCiAgICBFeGFtcGxlIGlmIHRoZSBNVEQgTkFORCBkcml2ZXIgZmluZCBhIGJhZCBibG9jayB3aGlsZSBlcmFzaW5nIGZyb20KICAgIGEgY2VydGFpbiBhZGRyZXNzLCBpdCB3aWxsIHNheSBiYWQgYmxvY2sgc2tpcHBlZCBhdCAweDAwMDAwMDAwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KCmNvbW1pdCA1NGFhNjAzZDJjZTFkOTM3NGExZjVjNjMzNjM2MjAzN2FkMmQ4YjUxCkF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgpEYXRlOglTdW4gT2N0IDExIDA5OjE0OjU4IDIwMDkgLTA0MDAKCiAgICBUSSBEYVZpbmNpIERWRVZNOiBBZGQgQ29uZmlnIG9wdGlvbiBmb3IgNjQgYml0IFN1cHBvcnQKCiAgICBBZGRpbmcgdGhlIENPTkZJR19TWVNfNjRCSVRfVlNQUklOVEYgaW4gdGhlIERWRVZNIGNvbmZpZy4KICAgIFdpdGhvdXQgdGhpcyBvcHRpb24gZW5hYmxlZCB3aGlsZSBwZXJmb3JtaW5nIE5BTkQgb3BlcmF0aW9ucyB3ZSB3aWxsIGdldAogICAgd3JvbmcgZGlhZ25vc3RpYyBtZXNzYWdlcy4KICAgIEV4YW1wbGUgaWYgdGhlIE1URCBOQU5EIGRyaXZlciBmaW5kIGEgYmFkIGJsb2NrIHdoaWxlIGVyYXNpbmcgZnJvbQogICAgYSBjZXJ0YWluIGFkZHJlc3MsIGl0IHdpbGwgc2F5IGJhZCBibG9jayBza2lwcGVkIGF0IDB4MDAwMDAwMDAuCgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgoKY29tbWl0IGI4ZDBhYTBjNzhiOGMwZmE1MWFjYWRhM2M0ODZiODEwODU5MjRiNTMKQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+CkRhdGU6CVNhdCBPY3QgMTAgMTA6MTk6MjAgMjAwOSAtMDQwMAoKICAgIFRJIERhVmluY2kgRE0zNjU6IEFkZCBDb25maWcgb3B0aW9uIGZvciA2NCBiaXQgU3VwcG9ydAoKICAgIEFkZGluZyB0aGUgQ09ORklHX1NZU182NEJJVF9WU1BSSU5URiBpbiB0aGUgRE0zNjUgRVZNIGNvbmZpZy4KICAgIFdpdGhvdXQgdGhpcyBvcHRpb24gZW5hYmxlZCB3aGlsZSBwZXJmb3JtaW5nIE5BTkQgb3BlcmF0aW9ucyB3ZSB3aWxsIGdldAogICAgd3JvbmcgZGlhZ25vc3RpYyBtZXNzYWdlcy4KICAgIEV4YW1wbGUgaWYgdGhlIE1URCBOQU5EIGRyaXZlciBmaW5kIGEgYmFkIGJsb2NrIHdoaWxlIGVyYXNpbmcgZnJvbQogICAgYSBjZXJ0YWluIGFkZHJlc3MsIGl0IHdpbGwgc2F5IGJhZCBibG9jayBza2lwcGVkIGF0IDB4MDAwMDAwMDAuCgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgoKY29tbWl0IDg2YTcyNWI5YzhiODI5YzIxN2JlOTBlNTkwZjNjYTJjOTFmYTFkY2EKQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+CkRhdGU6CVNhdCBPY3QgMTAgMTA6MTg6NDYgMjAwOSAtMDQwMAoKICAgIFRJIERhVmluY2kgRE0zNTU6IEFkZCBDb25maWcgb3B0aW9uIGZvciA2NCBiaXQgU3VwcG9ydAoKICAgIEFkZGluZyB0aGUgQ09ORklHX1NZU182NEJJVF9WU1BSSU5URiBpbiB0aGUgRE0zNTUgRVZNIGNvbmZpZy4KICAgIFdpdGhvdXQgdGhpcyBvcHRpb24gZW5hYmxlZCB3aGlsZSBwZXJmb3JtaW5nIE5BTkQgb3BlcmF0aW9ucyB3ZSB3aWxsIGdldAogICAgd3JvbmcgZGlhZ25vc3RpYyBtZXNzYWdlcy4KICAgIEV4YW1wbGUgaWYgdGhlIE1URCBOQU5EIGRyaXZlciBmaW5kIGEgYmFkIGJsb2NrIHdoaWxlIGVyYXNpbmcgZnJvbQogICAgYSBjZXJ0YWluIGFkZHJlc3MsIGl0IHdpbGwgc2F5IGJhZCBibG9jayBza2lwcGVkIGF0IDB4MDAwMDAwMDAuCgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgoKY29tbWl0IDljNDRkZGNjYjY2MDJmNjIwZmMwMzc5NzRmM2U0NDY4YWQ4YTdjMGMKQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+CkRhdGU6CVdlZCBTZXAgOSAxMTo1MDo0MCAyMDA5IC0wNDAwCgogICAgVEk6IE9NQVAzOiBSZW1vdmUgU1pfeHggcmVmZXJlbmNlcwoKICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBkZXBlbmRlbmN5IG9uIHRoZSBzaXplcy5oIGhlYWRlciBmaWxlCiAgICBhbmQgcmVtb3ZlcyBhbGwgcmVmZXJlbmNlcyB0byBTWl94eC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Cgpjb21taXQgMTNkMmNiOTg4ZmYwN2FkZGNlNmUxMGFiMmNiODk2NWE5ZGQyM2M2MwpBdXRob3I6IFN0ZXZlIFNha29tYW4gPHNha29tYW5AZ21haWwuY29tPgpEYXRlOglTYXQgT2N0IDEwIDE0OjI5OjM3IDIwMDkgLTA0MDAKCiAgICBPTUFQMzogVXBkYXRlIE92ZXJvIGFuZCBCZWFnbGUgZW52aXJvbm1lbnQKCiAgICBVcGRhdGUgZGVmYXVsdCBlbnZpcm9ubWVudCB0byBzdXBwb3J0IG5ldyBrZXJuZWwgRFNTMiBzdWJzeXN0ZW0gYW5kCiAgICBzaW1wbGlmeSByb290ZnMgdHlwZSBhbmQgbG9jYXRpb24gY2hhbmdlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGV2ZSBTYWtvbWFuIDxzYWtvbWFuQGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Cgpjb21taXQgYzczNjA3YzU1MjVjNjk1N2M4MTVlNjRmN2U4NjVmZGQzYmFmZmU5OApBdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KRGF0ZToJU2F0IE9jdCAxMCAxMzo0NjoyNiAyMDA5IC0wNDAwCgogICAgVEkgRGFWaW5jaTogTWFpbnRhaW5lciBmb3IgRE0zNTUgYW5kIERNMzY1IEVWTQoKICAgIEFkZGluZyBlbnRyaWVzIHRvIHRoZSBNQUlOVEFJTkVSUyBkaXJlY3RvcnkgZm9yIHRoZQogICAgRE0zNTUgYW5kIERNMzY1IEVWTS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Cgpjb21taXQgNWRmNjVjZjU2YWVlZjlmZGVhYjgzYTI1OWMzN2FhN2QyMzgzNmRkMwpBdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KRGF0ZToJU2F0IE9jdCAxMCAxMzozNzoxMCAyMDA5IC0wNDAwCgogICAgVEk6IERhVmluY2k6IERNMzU1IExlb3BhcmQgYm9hcmQgc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgbGVvcGFyZCBib2FyZCB3aGljaCBpcwogICAgYmFzZWQgb24gdGhlIERNMzU1IFNPQy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Cgpjb21taXQgNmFiMTc2ZDcwOTFkMjE5NjBhMWJkODlmY2I3ZmQ4N2I5ZTkxYWNhMQpBdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KRGF0ZToJU2F0IE9jdCAxMCAxMjowMDo0NyAyMDA5IC0wNDAwCgogICAgVEkgRGFWaW5jaSBETTY0Nng6IEFkZGluZyBpbml0aWFsIHN1cHBvcnQgZm9yIERNNjQ2NyBFVk0KCiAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGluaXRpYWwgc3VwcG9ydCBmb3IgRE02NDY3IEVWTS4KICAgIE90aGVyIGZlYXR1cmVzIGxpa2UgTkVUIGFuZCBOQU5EIHN1cHBvcnQgd2lsbCBiZSBhZGRlZCBhcyBmb2xsb3cgdXAgcGF0Y2hlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Cgpjb21taXQgZDg4NGY2NGE3Yjg0ODJmNmM5Njg4NjAwZTBhNDczMWZhNTY3OGUwYwpBdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KRGF0ZToJVGh1IE9jdCAxIDIwOjIyOjA5IDIwMDkgLTA0MDAKCiAgICBUSSBEYVZpbmNpIERNMzY1OiBGaXggQ29tcGlsYXRpb24gd2FybmluZyBmb3IgRE0zNjUgRVZNCgogICAgVGhpcyBwYXRjaCBmaXhlcyBhIGNvbXBpbGF0aW9uIHdhcm5pbmcgd2hpbGUgY29tcGlsaW5nCiAgICB0aGUgRE0zNjUgRVZNLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KCmNvbW1pdCA2ZmU1ZTg3YmU0Yjk0NGVkZjQyODgzNTIxMDA1NmUwMjBjOGJiNzk0CkF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgpEYXRlOglUaHUgT2N0IDEgMjA6MjE6MTMgMjAwOSAtMDQwMAoKICAgIFRJIERhVmluY2kgRE0zNTU6IEZpeCBDb21waWxhdGlvbiB3YXJuaW5nIGZvciBETTM1NSBFVk0KCiAgICBUaGlzIHBhdGNoIGZpeGVzIGEgY29tcGlsYXRpb24gd2FybmluZyB3aGlsZSBjb21waWxpbmcKICAgIHRoZSBETTM1NSBFVk0uCgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgoKY29tbWl0IDUxM2JiZTFiMTcyMDY4MmU2ZGUwYWJhMmQ5ZGI1ZTYwZjNhNDI4YmIKQXV0aG9yOiBFcmljIEJlbmFyZCA8ZXJpY0BldWtyZWEuY29tPgpEYXRlOglNb24gT2N0IDEyIDEwOjE1OjM5IDIwMDkgKzAyMDAKCiAgICBBVDkxIENQVUFUOTEgRml4IGNvbXBpbGVyIHdhcm5pbmcKCiAgICBUaGlzIGNoYW5nZSBmaXhlcyB0aGUgY29tcGlsZXIgd2FybmluZwoKICAgIG1haW4uYzogSW4gZnVuY3Rpb24gJ2Fib3J0Ym9vdCc6CiAgICBtYWluLmM6MTIyOiB3YXJuaW5nOiB0b28gZmV3IGFyZ3VtZW50cyBmb3IgZm9ybWF0CgogICAgU2lnbmVkLW9mZi1ieTogRXJpYyBCZW5hcmQgPGVyaWNAZXVrcmVhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KCmNvbW1pdCBiMWU4MWY3MDFkMDQ0ZWVlMzg4NDIwMmIxMjdkNWQxZjA2NjhiZGI5CkF1dGhvcjogRXJpYyBCZW5hcmQgPGVyaWNAZXVrcmVhLmNvbT4KRGF0ZToJTW9uIE9jdCAxMiAxMDoxNTo0MCAyMDA5ICswMjAwCgogICAgQVQ5MSBDUFU5MjYwIENQVTlHMjAgRml4IGNvbXBpbGUgd2FybmluZ3MKCiAgICBUaGlzIGNoYW5nZSBmaXhlcyB0aGUgY29tcGlsZXIgd2FybmluZwoKICAgIG5hbmRfdXRpbC5jOjQ1OjI6IHdhcm5pbmc6ICN3YXJuaW5nIFBsZWFzZSBkZWZpbmUgQ09ORklHX1NZU182NEJJVF9WU1BSSU5URgogICAgICBmb3IgY29ycmVjdCBvdXRwdXQhCgogICAgU2lnbmVkLW9mZi1ieTogRXJpYyBCZW5hcmQgPGVyaWNAZXVrcmVhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KCmNvbW1pdCA5NGQ1MGM1MjdhM2NlZGI2YTQxZmJlNjc3MzI1NmNkZDE4NTUzMTdmCkF1dGhvcjogRXJpYyBCZW5hcmQgPGVyaWNAZXVrcmVhLmNvbT4KRGF0ZToJTW9uIE9jdCAxMiAxMDowODoyMCAyMDA5ICswMjAwCgogICAgQVQ5MSBDUFU5MjYwIEZpeCBtYWNoaW5lIElEIHdoZW4gdXNpbmcgYSBDUFU5RzIwLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVyaWMgQmVuYXJkIDxlcmljQGV1a3JlYS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Cgpjb21taXQgOGMwYTkyYzhmNGNmMzk5ZTg3M2MyNjExOTM5ZjM2MTc5ODM3ODVhOQpBdXRob3I6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+CkRhdGU6CVNhdCBPY3QgMTAgMTE6NTE6MjYgMjAwOSArMDIwMAoKICAgIGxjZDogcmVtb3ZlICcjaWYgMCcgMzItYml0IHNjcm9sbCwgbm93IG1lbWNweSBkb2VzIGl0CgogICAgU2lnbmVkLW9mZi1ieTogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUB1bmlwdi5pdD4KICAgIEFja2VkLWJ5OiBBbmRyZWEgR2FsbG8gPGFuZHJlYS5nYWxsb0BzdGVyaWNzc29uLmNvbT4KCmNvbW1pdCBlM2VhOTQ4ZDQ1ODhlN2VmZGRiZjBlZTkyMTQ3ZDkzZjgyN2Q3Y2VhCkF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUB1bmlwdi5pdD4KRGF0ZToJU2F0IE9jdCAxMCAxMTo1MToxNiAyMDA5ICswMjAwCgogICAgbGliX2dlbmVyaWMgbWVtc2V0OiBmaWxsIG9uZSB3b3JkIGF0IGEgdGltZSBpZiBwb3NzaWJsZQoKICAgIElmIHRoZSBkZXN0aW5hdGlvbiBpcyBhbGlnbmVkLCBmaWxsIHVsb25nIHZhbHVlcyB1bnRpbCBwb3NzaWJsZS4KICAgIFRoZW4gZmlsbCByZW1haW5pbmcgcGFydCBieSBieXRlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+CiAgICBBY2tlZC1ieTogQW5kcmVhIEdhbGxvIDxhbmRyZWEuZ2FsbG9Ac3Rlcmljc3Nvbi5jb20+CiAgICBBY2tlZC1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGVjZDgzMGI4NjNlNWM2YWM1ZDgwNGQzYjNhOTI0NTNhOThkNTI2ZmMKQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgpEYXRlOglTYXQgT2N0IDEwIDExOjUxOjA1IDIwMDkgKzAyMDAKCiAgICBsaWJfZ2VuZXJpYyBtZW1jcHk6IGNvcHkgb25lIHdvcmQgYXQgYSB0aW1lIGlmIHBvc3NpYmxlCgogICAgSWYgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhcmUgYWxpZ25lZCwgdGhpcyBjb3BpZXMgdWxvbmcgdmFsdWVzCiAgICB1bnRpbCBwb3NzaWJsZSwgdHJhaWxpbmcgcGFydCBpcyBjb3BpZWQgYnkgYnl0ZS4gVGhhbmtzIGZvciB0aGUgZGV0YWlscwogICAgdG8gV29sZmdhbmcgRGVuaywgTWlrZSBGcnlzaW5nZXIsIFBldGVyIFR5c2VyLCBDaHJpcyBNb29yZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgogICAgQWNrZWQtYnk6IEFuZHJlYSBHYWxsbyA8YW5kcmVhLmdhbGxvQHN0ZXJpY3Nzb24uY29tPgogICAgQWNrZWQtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA5YzU1ODZhYTE5YmJlZGYyOTBkMmE2NjM4MTM0MDRkMmRiODdkZmE1CkF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUB1bmlwdi5pdD4KRGF0ZToJVGh1IE9jdCA4IDE0OjI5OjE0IDIwMDkgKzAyMDAKCiAgICBzZXRlbnY6IGRvIGNvbnNvbGUgcmVkaXJlY3Rpb24gZXZlbiBpZiBwcmV2aW91c2x5IHVuc2V0CgogICAgSWYgInN0ZG91dCIgaXMgbm90IHByZXZpb3VzbHkgc2V0LCBkb2luZyAic2V0ZW52IHN0ZG91dCBsY2QiIGhhZCBubwogICAgZWZmZWN0LCBzaW5jZSBjb25zb2xlIHJlZGlyZWN0aW9uIG9ubHkgd29ya2VkIGlmIHRoZSBlbnZpcm9ubWVudAogICAgdmFyaWFibGUgd2FzIGFscmVhZHkgc2V0OyB0aGUgc2Vjb25kIHRpbWUgeW91IHJ1biBzZXRlbnYgaXQgd29ya2VkLgogICAgTW9zdCBkZWZhdWx0IGVudmlyb25tZW50cyBsYWNrIHN0ZGluL291dC9lcnIgZGVmaW5pdGlvbnMsIHNvIEknbSBzdXJlCiAgICBJJ20gbm90IGFsb25lIHdpdGggdGhpcyBwcm9ibGVtLgoKICAgIFRoaXMgcGF0Y2ggc2ltcGx5IG1vdmVzIGEgYmxvY2sgb2YgY29kZSBvdXQgb2YgYSBjb25kaXRpb25hbCwgdG8gZG8KICAgIHRoZSBzYW1lIHdvcmsgZXZlbiBpZiB0aGUgdmFyaWFibGUgd2FzIHByZXZpb3VzbHkgdW5zZXQuCgogICAgU2lnbmVkLW9mZi1ieTogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUB1bmlwdi5pdD4KICAgIEFja2VkLWJ5OiBBbmRyZWEgR2FsbG8gPGFuZHJlYS5nYWxsb0BzdGVyaWNzc29uLmNvbT4KCmNvbW1pdCBjOWVlMzk5NzJhNzc1OGU4ODNiNzNjNmMwZTNjM2ExNGNkNWIyZjQzCkF1dGhvcjogTWFydGhhIFN0YW4gPG1tYXJ4QHNpbGljb250a3guY29tPgpEYXRlOglXZWQgT2N0IDcgMDQ6Mzg6NDYgMjAwOSAtMDQwMAoKICAgIG1wYzUxMng6IGZpeCBTeXN0ZW0gQ2xvY2sgQ29udHJvbCBjb25zdGFudHMgZm9yIFVTQjEgJiBVU0IyCgogICAgU2lnbmVyLW9mZi1ieTogTWFydGhhIFN0YW4gPG1tYXJ4QHNpbGljb250a3guY29tPgoKY29tbWl0IDg3YjIyYjc3ODdmMzk3ZmMzZGFhZDU3MGQ3MTFlNDc4YjFhN2QyNTMKQXV0aG9yOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KRGF0ZToJRnJpIE9jdCAyIDE4OjE4OjMzIDIwMDkgLTA0MDAKCiAgICBtZW1fbXRlc3Q6IGZpeCBlcnJvciByZXBvcnRpbmcsIGFsbG93IGVzY2FwZSB3aXRoIF5DCgogICAgVGhlIGJhc2ljIG1lbXRlc3QgZnVuY3Rpb24gdHJpZXMgdG8gd2F0Y2ggZm9yIF5DIGFmdGVyIGVhY2gKICAgIHBhdHRlcm4gcGFzcyBhcyBhbiBlc2NhcGUgbWVjaGFuaXNtLCBidXQgaWYgdGhpbmdzIGFyZSBob3JyaWJseQogICAgd3JvbmcsIHdlJ2xsIGJlIHN0dWNrIGluIGFuIGlubmVyIGxvb3AgZmxvb2RpbmcgdGhlIGNvbnNvbGUgd2l0aAogICAgZXJyb3IgbWVzc2FnZXMgYW5kIG5ldmVyIGNoZWNrIGZvciBeQy4gIFRvIG1ha2UgbWF0dGVycyB3b3JzZSwKICAgIGlmIHRoZSB1c2VyIHdhaXRzIGZvciBhbGwgdGhlIGVycm9yIG1lc3NhZ2VzIHRvIGNvbXBsZXRlLCB3ZQogICAgdGhlbiBpbmNvcnJlY3RseSByZXBvcnQgdGhlIHRlc3QgcGFzc2VkIHdpdGhvdXQgZXJyb3JzLgoKICAgIEFkZGluZyBhIGNoZWNrIGZvciBeQyBhZnRlciBhbnkgZXJyb3IgaXMgcHJpbnRlZCB3aWxsIGdpdmUKICAgIHRoZSBlbmQgdXNlciBhbiBlc2NhcGUgbWVjaGFuaXNtIGZyb20gYSBjb25zb2xlIGZsb29kIHdpdGhvdXQKICAgIHNsb3dpbmcgZG93biB0aGUgb3ZlcmFsbCB0ZXN0IHNwZWVkIG9uIGEgc2xvdyBwcm9jZXNzb3IuCgogICAgQWxzbywgdGhlIG1vcmUgZXh0ZW5zaXZlIG1lbXRlc3QgcXVpdCBhZnRlciBqdXN0IGEgc2luZ2xlIGVycm9yLAogICAgd2hpY2ggaXMgaW5jb25zaXN0ZW50IHdpdGggdGhlIG5vcm1hbCBtZW10ZXN0LCBhbmQgbm90IHVzZWZ1bCBpZgogICAgaWYgeW91IGFyZSBkb2luZyBkeW5hbWljIGVudmlyb25tZW50YWwgaW1wYWN0IHRlc3RpbmcsIHN1Y2ggYXMKICAgIGhlYXRpbmcvY29vbGluZyBldGMuCgogICAgQm90aCB0ZXN0cyBub3cgdHJhY2sgdGhlIGVycm9yIGNvdW50IGFuZCByZXBvcnQgaXQgcHJvcGVybHkKICAgIGF0IHRlc3QgY29tcGxldGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KICAgIEFja2VkLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgOWY0YTQyMDY2MzQxOWRjMTNmMDhhMGNlNjViOTMwMzNjNjE3MmM2OQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IE9jdCAxIDEyOjExOjU0IDIwMDkgLTA0MDAKCiAgICBuZXcgZGVmYXVsdCBzaG9ydGN1dCB0byBjb25maWcgJiBidWlsZCBhIGJvYXJkCgogICAgVGhlIG1ham9yaXR5IG9mIHRoZSB0aW1lIHRoYXQgSSBidWlsZCB0aGluZ3MgaW4gVS1Cb290LCBJIHdhbnQgdG8ganVzdAogICAgYnVpbGQgZm9yIHRoZSBib2FyZC4gIEkgZG9uJ3QgbWFrZSBib2FyZCBjb25maWcgdHdlYWtzIGFmdGVyIHNlbGVjdGluZyB0aGUKICAgIGJvYXJkLiAgU28gYWRkIGEgbmV3IHBhdHRlcm4gcnVsZSB0aGF0IGFsbG93cyBwZW9wbGUgdG8gY29tYmluZSB0d28gc3RlcHMKICAgIGluIG9uZSBnbzoKCWBtYWtlIGZvb19jb25maWcgJiYgbWFrZWAgPT4gYG1ha2UgZm9vYAoKICAgIFRoaXMgc2hvdWxkbid0IGNvbmZsaWN0IHdpdGggYW55IGV4aXN0aW5nIG1ha2UgcnVsZXMgYXMgdGhlIHBhdHRlcm4gcnVsZQogICAgaXMgdXNlZCBvbmx5IHRoZSBydWxlIGRvZXNuJ3QgYWxyZWFkeSBleGlzdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNmRhYjZhZGQyZDhlZTgwOTA1MjM0YjMyNmFiYzNkZTExYmUxZDE3OApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIFNlcCAzMCAxNToyOTo1OCAyMDA5IC0wNDAwCgogICAgZW52OiBvbmx5IGJ1aWxkIGVudl9lbWJlZGRlZCBhbmQgZW52Y3JjIHdoZW4gbmVlZGVkCgogICAgVGhlIGVudiBjb2RlIGlzIHByb3RlY3RlZCBieSB0aGUgRU5WX0lTX0VNQkVEREVEIGRlZmluZSwgc28gYXR0ZW1wdGluZyB0bwogICAgY29tcGlsZSB0aGUgY29kZSB3aGVuIHRoaXMgaXNuJ3QgZGVmaW5lZCBpcyBwb2ludGxlc3MuICBOb3cgdGhhdCB0aGUgZW52CiAgICBoZWFkZXJzIGhhdmUgdW5pZmllZCBhcm91bmQgQ09ORklHX0VOVl9JU19FTUJFRERFRCwgY29udmVydCB0aGUgYnVpbGQKICAgIHN5c3RlbSB0byBvbmx5IGJ1aWxkIHRoZSBlbnYgb2JqZWN0cyB3aGVuIHRoaXMgaXMgZW5hYmxlZC4JQW5kIG5vdyB0aGF0CiAgICB0aGUgZW52IGNvZGUgaXMgY29uZGl0aW9uYWxseSBjb21waWxlZCwgd2UgY2FuIGRyb3AgdGhlIHNvdXJjZSBjb2RlIGNoZWNrcy4KCiAgICBGb3IgcGVvcGxlIHdobyB3YW50IHRvIGV4dHJhY3QgdGhlIGVudmlyb25tZW50IG1hbnVhbGx5LCBhZGQgYSBuZXcgb3B0aW9uCiAgICBDT05GSUdfQlVJTERfRU5WQ1JDIHRoYXQgb25seSBlbmFibGVzIHRoZSBlbnZjcmMgdXRpbGl0eS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNzhmNGNhNzk3Njc0ODE1OTA4MGM5ZDkyMGQ1ZWI1NDJkMWIzMmQ0ZgpBdXRob3I6IERhbmllbCBNYWNrIDxkYW5pZWxAY2FpYXEuZGU+CkRhdGU6CU1vbiBTZXAgMjggMTE6NDA6MzggMjAwOSArMDIwMAoKICAgIHBhcnRfZG9zOiBjaGVjayBzdGF0dXMgZmxhZ3Mgb2YgcGFydGl0aW9ucwoKICAgIE9ubHkgcmVhZCBwYXJ0aXRpb25zIHdoaWNoIGhhdmUgMHgwMCBvciAweDgwIHNldCBpbiB0aGVpciBzdGF0dXMgZmllbGQuCiAgICBBbGwgb3RoZXJzIGFyZSBpbnZhbGlkLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBNYWNrIDxkYW5pZWxAY2FpYXEuZGU+Cgpjb21taXQgNDVkZWYwYWI5ZDFkZWRjZDJhNzM5MzlhYWQ4MzczZjc2MDQ5ODc2MgpBdXRob3I6IEVyaWMgTWlsbGJyYW5kdCA8ZW1pbGxicmFuZHRAY29sZGhhdXMuY29tPgpEYXRlOglGcmkgU2VwIDI1IDE3OjQ3OjQzIDIwMDkgLTA1MDAKCiAgICBnYWxheHk1MjAwOiBjaGFuZ2UgY3MxIGNvbmZpZ3VyYXRpb24KCiAgICBDb3JyZWN0IHRoZSBjaGlwIHNlbGVjdCBjb25maWd1cmF0aW9uIGZvciB0aGUgbmFuZCBmbGFzaCBjaGlwIHNlbGVjdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBFcmljIE1pbGxicmFuZHQgPGVtaWxsYnJhbmR0QGRla2FyZXNlYXJjaC5jb20+Cgpjb21taXQgNzkzNmI1MTE2NWI1MTlhMTZlY2YzZGIzMDJmYjg4ZGY4YjhiM2IzZApBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+CkRhdGU6CVdlZCBTZXAgMjMgMDg6MTI6MTQgMjAwOSArMDIwMAoKICAgIENsZWFudXA6IHVzZSBjb25zdGFudAoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgNzEyMGM4ODgxMDE5NTJiN2U2MWI5ZTU0YmI0MjM3MDkwNGFhMGU2OApBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBPY3QgMTIgMTE6MDY6MTkgMjAwOSAtMDUwMAoKICAgIG1wYzgzeHg6IG1wYzgzMTMgLSBoYW5kbGUgZXJyYXR1bSBJUElDMSAoVFNFQyBJUlEgbnVtYmVyIHN3YXBwYWdlKQoKICAgIG1wYzgzMTNlIGVycmF0dW0gSVBJQzEgc3dhcHBlZCBUU0VDIGludGVycnVwdCBJRCBudW1iZXJzIG9uIHJldi4gMQogICAgaC93IChzZWUgQU4zNTQ1KS4gIFRoZSBiYXNlIGRldmljZSB0cmVlIGluIHVzZSBoYXMgcmV2LiAxIElEIG51bWJlcnMsCiAgICBzbyBpZiBvbiBSZXYuIDIgKGFuZCBoaWdoZXIpIGgvdywgd2UgZml4IHRoZW0gdXAgaGVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgogICAgUmV2aWV3ZWQtYnk6IFJvbGFuZCBMZXp1byA8cm9sYW5kLmxlenVvQGNoZWxsby5hdD4KCmNvbW1pdCA5MTUyNWM2NzE1M2ZjZjJjMTliMmZjOGQ5YzYzNzZhYzFhMDE5ZjUyCkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CU1vbiBPY3QgMTIgMjM6NTU6MzkgMjAwOSArMDQwMAoKICAgIG1wYzg1eHg6IEZpeCBib290aW5nIG9uIHZhcmlvdXMgYm9hcmRzCgogICAgY29tbWl0IDBlODcwOTgwYTY0NTg0YTU5MWFmNzc1YmI5YzlmZTk0NTAxMjRkZjkgKCI4eHh4OiBSZW1vdmVkCiAgICBDT05GSUdfTlVNX0NQVVMgZnJvbSA4NXh4Lzg2eHgiKSBicmVha3MgVS1Cb290IG9uIHZhcmlvdXMgYm9hcmRzLAogICAgbmFtZWx5IHRoZSBvbmVzIHRoYXQgY2FsbCBnZXRfc3lzX2luZm8oKSBmcm9tIGJvYXJkX2Vhcmx5X2luaXRfZigpLgoKICAgIGdldF9zeXNfaW5mbygpIGNhbGxzIGNwdV9udW1jb3JlcygpLCB3aGljaCBkZXBlbmRzIG9uIHByb2JlY3B1KCkKICAgIGJlaW5nIGNhbGxlZCBiZWZvcmUuIEJ1dCBwcm9iZWNwdSgpIGlzIGNhbGxlZCBhZnRlciBib2FyZF9lYXJseV9pbml0X2YoKSwKICAgIGFuZCBzbyBjcHVfbnVtY29yZXMoKSByZXR1cm5zIHJhbmRvbSB2YWx1ZXMsIHdoaWNoIGluIHR1cm4gY3Jhc2hlcwogICAgZ2V0X3N5c19pbmZvKCkuCgogICAgVG8gZml4IHRoZSBpc3N1ZSB3ZSBwbGFjZSBwcm9iZWNwdSgpIGJlZm9yZSBib2FyZF9lYXJseV9pbml0X2YoKQogICAgaW4gYW4gaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuCgogICAgQm9vdGluZyBvbiB0aGUgZm9sbG93aW5nIGJvYXJkcyBzaG91bGQgYmUgcmV2aXZlZCBub3c6CiAgICAgbXBjODU0MGFkcwogICAgIG1wYzg1NDFjZHMKICAgICBtcGM4NTQ4Y2RzCiAgICAgbXBjODU1NWNkcwogICAgIG1wYzg1NjBhZHMKICAgICBtcGM4NTY4bWRzCiAgICAgbXBjODU2OW1kcwogICAgIGFuZCBtYXliZSBtb3JlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAyNmRmNmFhOTkxNjQ0MzA3NzEzOWY4ZjAwOGZiYzVmNDE0YmEwNWU1CkF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CkRhdGU6CUZyaSBPY3QgMiAxODo0ODowNyAyMDA5IC0wNDAwCgogICAgbXBjODZ4eDogZGVsZXRlIHVudXNlZCBNUEM4Nnh4X0REUl9TRFJBTV9DTEtfQ05UTCBkZWZpbmUKCiAgICBUaGlzIGlzIGFuIG9ycGhhbmVkIGxlZ2FjeSBsZWZ0b3ZlciB0aGF0IGlzIGp1c3QgcG9sbHV0aW5nCiAgICB0aGUgY29uZmlnIGZpbGUgbmFtZXNwYWNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmYWQxNTA5NmUzYjM0OTI3NDQ0YmE1ZjYxMzM3NDJkNDBkNzhhNDI1CkF1dGhvcjogRGlwZW4gRHVkaGF0IDxkaXBlbi5kdWRoYXRAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE9jdCA4IDEzOjMzOjI5IDIwMDkgKzA1MzAKCiAgICBwcGMvUDFfUDJfUkRCOiBPbi1jaGlwIEJvb3RST00gc3VwcG9ydAoKICAgIE9uIENoaXAgQm9vdFJPTSBzdXBwb3J0IGZvciBQMSBhbmQgUDIgc2VyaWVzIFJEQiBwbGF0Zm9ybXMuCgogICAgVGhpcyBwYXRjaCBpcyBkZXJpdmVkIGZyb20gbGF0ZXN0IE9uIENoaXAgQm9vdFJPTSBzdXBwb3J0IG9uIE1QQzg1MzZEUwoKICAgIFNpZ25lZC1vZmYtYnk6IERpcGVuIER1ZGhhdCA8ZGlwZW4uZHVkaGF0QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGY3NzgwZWM5NzdlNTQ1YjgzYmM1MDY4ZTA5NTdkNjQwZjFkOThmMTMKQXV0aG9yOiBEaXBlbiBEdWRoYXQgPGRpcGVuLmR1ZGhhdEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgT2N0IDggMTM6MzM6MTggMjAwOSArMDUzMAoKICAgIHBwYy9QMV9QMl9SREI6IE5BTkQgQm9vdCBTdXBwb3J0CgogICAgTkFORCBCb290IHN1cHBvcnQgZm9yIFAxIGFuZCBQMiBzZXJpZXMgUkRCIHBsYXRmb3Jtcy4KCiAgICBUaGlzIHBhdGNoIGlzIGRlcml2ZWQgZnJvbSBOQU5EIEJvb3Qgc3VwcG9ydCBvbiBNUEM4NTM2RFMuCgogICAgU2lnbmVkLW9mZi1ieTogRGlwZW4gRHVkaGF0IDxkaXBlbi5kdWRoYXRAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZDExODIzY2EzY2I1NTE4MTRmZmNkOTI2NDAyYzhiY2YzYTdlZmYzNQpBdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgpEYXRlOglXZWQgT2N0IDcgMTY6MzQ6MjggMjAwOSAtMDQwMAoKICAgIG1wYzh4eHg6IGltcHJvdmUgTEFXIGVycm9yIG1lc3NhZ2VzIHdoZW4gc2V0dGluZyB1cCBERFIKCiAgICBXaGVuIHNldHRpbmcgdXAgdGhlIExBV3MgZm9yIHRoZSBERFIsIGlmIHRoZXJlIHdhcyBhbiBlcnJvciwKICAgIHlvdSBnb3QgdGhlIG5vdC1zby1oZWxwZnVsIGVycm9yIHRleHQgIkVSUk9SIiBhbmQgbm90aGluZwogICAgZWxzZS4gIE5vdCBvbmx5IGlzIGl0IG5vbi1pbmZvcm1hdGl2ZSwgYnV0IGl0IGlzIGFsc28KICAgIHByZXR0eSBmcnVzdHJhdGluZyB0cnlpbmcgdG8gZ3JlcCBmb3IgIkVSUk9SIiBpbiB0aGUgc291cmNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBhOTk0NmUzZmM3MDg5ZGRjNmI3NzExYTQ0ZTA3YTZiMDgyN2I3OWE3CkF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CkRhdGU6CVdlZCBTZXAgMzAgMTY6MTI6MzEgMjAwOSAtMDQwMAoKICAgIHNiYzg2NDFkOiBmaXggTEFXIHNvIGJvYXJkIGRvZXNuJ3QgaGFuZyBvbiBERFIgaW5pdAoKICAgIEFsbCB2ZXJzaW9ucyBiZXR3ZWVuIG5vdyBhbmQgc2luY2UgdGhpcyBjb21taXQ6CgogICAgICBjb21taXQgYmQ3NjcyOWJjYmZkNjRiNWQwMTZhOWI5MzZmMDU4OTMxZmMwNmVhZgogICAgICBNUEM4Nnh4OiBzZXQgQ09ORklHX01BWF9NRU1fTUFQUEVEIHRvIDJHIGJ5IGRlZmF1bHQKCiAgICB3aWxsIGZhaWwgdG8gYWxsb3cgdGhlIFNCQzg2NDFEIHRvIGdldCBwYXN0IEREUiBpbml0LCBiZWNhdXNlIHRoZQogICAgTEFXIGNvbmZpZyB3YXMgb3ZlcmxhcHBpbmcuICBFdmVudHVhbGx5IHRoaXMgYm9hcmQgd2lsbCBkbyBTUEQKICAgIEVFUFJPTSBjb25maWcsIGJ1dCBmb3Igbm93IHRoaXMgZ2V0cyB0aGUgYm9hcmQgd29ya2luZyBhZ2Fpbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgM2QxOTg4YWI0N2NjMGUyNjUyNzI5NjdlMDdkNzQ3ZWM2MDBhNDRjOQpBdXRob3I6IGtldmluLm1vcmZpdHRAZmVhcm5zaWRlLXN5c3RlbXMuY28udWsgPGtldmluLm1vcmZpdHRAZmVhcm5zaWRlLXN5c3RlbXMuY28udWs+CkRhdGU6CVNhdCBPY3QgMTAgMTM6MzQ6MDkgMjAwOSArMDkwMAoKICAgIENsZWFuLXVwIG9mIHMzYzI0eDAgbmFuZCBkcml2ZXIKCiAgICBUaGlzIHBhdGNoIHJlLWZvcm1hdHMgdGhlIGFybTkyMHQgczNjMjR4MCBuYW5kIGRyaXZlciBpbiBwcmVwYXJhdGlvbiBmb3IgY2hhbmdlcwogICAgdG8gYWRkIHN1cHBvcnQgZm9yIHRoZSBFbWJlc3QgU0JDMjQ0MC1JSSBCb2FyZC4KCiAgICBUaGUgY2hhbmdlcyBhcmUgYXMgZm9sbG93czoKICAgIC0gcmUtaW5kZW50IHRoZSBjb2RlIHVzaW5nIExpbmRlbnQKICAgIC0gbWFrZSBzdXJlIHJlZ2lzdGVyIGxheW91dHMgYXJlIGRlZmluZWQgdXNpbmcgYSBDIHN0cnVjdAogICAgLSByZXBsYWNlIHRoZSB1cHBlci1jYXNlIHR5cGVkZWYnZWQgQyBzdHJ1Y3QgbmFtZXMgd2l0aCBsb3dlciBjYXNlCiAgICBub24tdHlwZWRlZidlZCBvbmVzCiAgICAtIG1ha2Ugc3VyZSByZWdpc3RlcnMgYXJlIGFjY2Vzc2VkIHVzaW5nIHRoZSBwcm9wZXIgYWNjZXNzb3IgZnVuY3Rpb25zCiAgICAtIHJ1biBjaGVja3BhdGNoLnBsIGFuZCBmaXggYW55IGVycm9yIHJlcG9ydHMKCiAgICBJdCBhc3N1bWVzIHRoZSBmb2xsb3dpbmcgcGF0Y2ggaGFzIGJlZW4gYXBwbGllZCBmaXJzdDoKICAgIC0gW1UtQm9vdF1bUEFUQ0gtQVJNXSBDT05GSUdfU1lTX0haIGZpeCBmb3IgQVJNOTAyVCBTM0MyNFgwIEJvYXJkcywgMDUvMDkvMjAwOQogICAgIC0gcGF0Y2hlcyAxLzQsIDIvNCBhbmQgMy80IG9mIHRoaXMgc2VyaWVzCgogICAgVGVzdGVkIG9uIGFuIEVtYmVzdCBTQkMyNDQwLUlJIEJvYXJkIHdpdGggbG9jYWwgdS1ib290IHBhdGNoZXMgYXMgSSBkb24ndCBoYXZlCiAgICBhbnkgczNjMjQwMCBvciBzM2MyNDEwIGJvYXJkcyBidXQgbmVlZCB0aGlzIHBhdGNoIGFwcGx5aW5nIGJlZm9yZSBJIGNhbiBzdWJtaXQKICAgIHBhdGNoZXMgZm9yIHRoZSBTQkMyNDQwLUlJIEJvYXJkLiBBbHNvLCB0ZW1wb3JhcmlseSBtb2RpZmllZCBzYmMyNDEweCwgc21kazI0MDAsCiAgICBzbWRrMjQxMCBhbmQgdHJhYiBjb25maWdzIHRvIHVzZSB0aGUgbXRkIG5hbmQgZHJpdmVyICh3aGljaCBpc24ndCB1c2VkIGJ5IGFueQogICAgYm9hcmQgYXQgdGhlIG1vbWVudCksIHJhbiBNQUtFQUxMIGZvciBhbGwgQVJNOSB0YXJnZXRzIGFuZCBubyBuZXcgd2FybmluZ3Mgb3IKICAgIGVycm9ycyB3ZXJlIGZvdW5kLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtldmluIE1vcmZpdHQgPGtldmluLm1vcmZpdHRAZmVhcm5zaWRlLXN5c3RlbXMuY28udWs+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Cgpjb21taXQgZWIwYWU3ZjU0OWI3MTQyODI2YThiY2RkMmRjOTQ1ZmFjOWMzNjM0OQpBdXRob3I6IGtldmluLm1vcmZpdHRAZmVhcm5zaWRlLXN5c3RlbXMuY28udWsgPGtldmluLm1vcmZpdHRAZmVhcm5zaWRlLXN5c3RlbXMuY28udWs+CkRhdGU6CVNhdCBPY3QgMTAgMTM6MzM6MTEgMjAwOSArMDkwMAoKICAgIENsZWFuLXVwIG9mIHMzYzI0eDAgZHJpdmVycyBleGNsdWRpbmcgbmFuZCBkcml2ZXIKCiAgICBUaGlzIHBhdGNoIHJlLWZvcm1hdHMgdGhlIGFybTkyMHQgczNjMjR4MCBkcml2ZXIgZmlsZXMsIGV4Y2x1ZGluZyB0aGUgbmFuZAogICAgZHJpdmVyLCBpbiBwcmVwYXJhdGlvbiBmb3IgY2hhbmdlcyB0byBhZGQgc3VwcG9ydCBmb3IgdGhlIEVtYmVzdCBTQkMyNDQwLUlJIEJvYXJkLgoKICAgIFRoZSBjaGFuZ2VzIGFyZSBhcyBmb2xsb3dzOgogICAgLSByZS1pbmRlbnQgdGhlIGNvZGUgdXNpbmcgTGluZGVudAogICAgLSBtYWtlIHN1cmUgcmVnaXN0ZXIgbGF5b3V0cyBhcmUgZGVmaW5lZCB1c2luZyBhIEMgc3RydWN0CiAgICAtIHJlcGxhY2UgdGhlIHVwcGVyLWNhc2UgdHlwZWRlZidlZCBDIHN0cnVjdCBuYW1lcyB3aXRoIGxvd2VyIGNhc2UKICAgICAgbm9uLXR5cGVkZWYnZWQgb25lcwogICAgLSBtYWtlIHN1cmUgcmVnaXN0ZXJzIGFyZSBhY2Nlc3NlZCB1c2luZyB0aGUgcHJvcGVyIGFjY2Vzc29yIGZ1bmN0aW9ucwogICAgLSBydW4gY2hlY2twYXRjaC5wbCBhbmQgZml4IGFueSBlcnJvciByZXBvcnRzCgogICAgSXQgYXNzdW1lcyB0aGUgZm9sbG93aW5nIHBhdGNoIGhhcyBiZWVuIGFwcGxpZWQgZmlyc3Q6CiAgICAtIFtVLUJvb3RdW1BBVENILUFSTV0gQ09ORklHX1NZU19IWiBmaXggZm9yIEFSTTkwMlQgUzNDMjRYMCBCb2FyZHMsIDA1LzA5LzIwMDkKICAgIC0gcGF0Y2hlcyAxLzQgYW5kIDIvNCBvZiB0aGlzIHNlcmllcwoKICAgIFRlc3RlZCBvbiBhbiBFbWJlc3QgU0JDMjQ0MC1JSSBCb2FyZCB3aXRoIGxvY2FsIHUtYm9vdCBwYXRjaGVzIGFzIEkgZG9uJ3QgaGF2ZQogICAgYW55IHMzYzI0MDAgb3IgczNjMjQxMCBib2FyZHMgYnV0IG5lZWQgdGhpcyBwYXRjaCBhcHBseWluZyBiZWZvcmUgSSBjYW4gc3VibWl0CiAgICBwYXRjaGVzIGZvciB0aGUgU0JDMjQ0MC1JSSBCb2FyZC4gQWxzbywgdGVtcG9yYXJpbHkgbW9kaWZpZWQgc2JjMjQxMHgsIHNtZGsyNDAwLAogICAgc21kazI0MTAgYW5kIHRyYWIgY29uZmlncyB0byB1c2UgdGhlIG10ZCBuYW5kIGRyaXZlciAod2hpY2ggaXNuJ3QgdXNlZCBieSBhbnkKICAgIGJvYXJkIGF0IHRoZSBtb21lbnQpLCByYW4gTUFLRUFMTCBmb3IgYWxsIEFSTTkgdGFyZ2V0cyBhbmQgbm8gbmV3IHdhcm5pbmdzIG9yCiAgICBlcnJvcnMgd2VyZSBmb3VuZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLZXZpbiBNb3JmaXR0IDxrZXZpbi5tb3JmaXR0QGZlYXJuc2lkZS1zeXN0ZW1zLmNvLnVrPgogICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgoKY29tbWl0IDgyNTBkMGJhZTg0MjI5YWJlYTM5N2Y2YjQ3NGIzNTU2YjBmMDRlODAKQXV0aG9yOiBrZXZpbi5tb3JmaXR0QGZlYXJuc2lkZS1zeXN0ZW1zLmNvLnVrIDxrZXZpbi5tb3JmaXR0QGZlYXJuc2lkZS1zeXN0ZW1zLmNvLnVrPgpEYXRlOglTYXQgT2N0IDEwIDEzOjMyOjAxIDIwMDkgKzA5MDAKCiAgICBDbGVhbi11cCBvZiBzM2MyNHgwIGhlYWRlciBmaWxlcwoKICAgIFRoaXMgcGF0Y2ggcmUtZm9ybWF0cyB0aGUgYXJtOTIwdCBzM2MyNHgwIGhlYWRlciBmaWxlcyBpbiBwcmVwYXJhdGlvbiBmb3IKICAgIGNoYW5nZXMgdG8gYWRkIHN1cHBvcnQgZm9yIHRoZSBFbWJlc3QgU0JDMjQ0MC1JSSBCb2FyZC4KCiAgICBUaGUgY2hhbmdlcyBhcmUgYXMgZm9sbG93czoKICAgIC0gcmUtaW5kZW50IHRoZSBjb2RlIHVzaW5nIExpbmRlbnQKICAgIC0gbWFrZSBzdXJlIHJlZ2lzdGVyIGxheW91dHMgYXJlIGRlZmluZWQgdXNpbmcgYSBDIHN0cnVjdAogICAgLSByZXBsYWNlIHRoZSB1cHBlci1jYXNlIHR5cGVkZWYnZWQgQyBzdHJ1Y3QgbmFtZXMgd2l0aCBsb3dlciBjYXNlCiAgICBub24tdHlwZWRlZidlZCBvbmVzCiAgICAtIG1ha2Ugc3VyZSByZWdpc3RlcnMgYXJlIGFjY2Vzc2VkIHVzaW5nIHRoZSBwcm9wZXIgYWNjZXNzb3IgZnVuY3Rpb25zCiAgICAtIHJ1biBjaGVja3BhdGNoLnBsIGFuZCBmaXggYW55IGVycm9yIHJlcG9ydHMKCiAgICBJdCBhc3N1bWVzIHRoZSBmb2xsb3dpbmcgcGF0Y2ggaGFzIGJlZW4gYXBwbGllZCBmaXJzdDoKICAgIC0gW1UtQm9vdF1bUEFUQ0gtQVJNXSBDT05GSUdfU1lTX0haIGZpeCBmb3IgQVJNOTAyVCBTM0MyNFgwIEJvYXJkcywgMDUvMDkvMjAwOQogICAgLSBwYXRjaCAxLzQgb2YgdGhpcyBzZXJpZXMKCiAgICBUZXN0ZWQgb24gYW4gRW1iZXN0IFNCQzI0NDAtSUkgQm9hcmQgd2l0aCBsb2NhbCB1LWJvb3QgcGF0Y2hlcyBhcyBJIGRvbid0IGhhdmUKICAgIGFueSBzM2MyNDAwIG9yIHMzYzI0MTAgYm9hcmRzIGJ1dCBuZWVkIHRoaXMgcGF0Y2ggYXBwbHlpbmcgYmVmb3JlIEkgY2FuIHN1Ym1pdAogICAgcGF0Y2hlcyBmb3IgdGhlIFNCQzI0NDAtSUkgQm9hcmQuIEFsc28sIHRlbXBvcmFyaWx5IG1vZGlmaWVkIHNiYzI0MTB4LCBzbWRrMjQwMCwKICAgIHNtZGsyNDEwIGFuZCB0cmFiIGNvbmZpZ3MgdG8gdXNlIHRoZSBtdGQgbmFuZCBkcml2ZXIgKHdoaWNoIGlzbid0IHVzZWQgYnkgYW55CiAgICBib2FyZCBhdCB0aGUgbW9tZW50KSwgcmFuIE1BS0VBTEwgZm9yIGFsbCBBUk05IHRhcmdldHMgYW5kIG5vIG5ldyB3YXJuaW5ncyBvcgogICAgZXJyb3JzIHdlcmUgZm91bmQuCgogICAgU2lnbmVkLW9mZi1ieTogS2V2aW4gTW9yZml0dCA8a2V2aW4ubW9yZml0dEBmZWFybnNpZGUtc3lzdGVtcy5jby51az4KICAgIFNpZ25lZC1vZmYtYnk6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KCmNvbW1pdCBkNjdjY2UyZGRhM2E0MGMzYmQ5MGE2YzZlMTI5ZmJiMjZkZDRjZmFiCkF1dGhvcjoga2V2aW4ubW9yZml0dEBmZWFybnNpZGUtc3lzdGVtcy5jby51ayA8a2V2aW4ubW9yZml0dEBmZWFybnNpZGUtc3lzdGVtcy5jby51az4KRGF0ZToJU2F0IE9jdCAxMCAxMzozMDoyMiAyMDA5ICswOTAwCgogICAgQ2xlYW4tdXAgb2YgY3B1X2FybTkyMHQgYW5kIGNwdV9hcm05MjB0X3MzYzI0eDAgY29kZQoKICAgIFRoaXMgcGF0Y2ggcmUtZm9ybWF0cyB0aGUgY29kZSBpbiBjcHUvYXJtOTIwdCBhbmQgY3B1L2FybTkyMHQvMjNjMjR4MCBpbgogICAgcHJlcGFyYXRpb24gZm9yIGNoYW5nZXMgdG8gYWRkIHN1cHBvcnQgZm9yIHRoZSBFbWJlc3QgU0JDMjQ0MC1JSSBCb2FyZC4KCiAgICBUaGUgY2hhbmdlcyBhcmUgYXMgZm9sbG93czoKICAgIC0gcmUtaW5kZW50IHRoZSBjb2RlIHVzaW5nIExpbmRlbnQKICAgIC0gbWFrZSBzdXJlIHJlZ2lzdGVyIGxheW91dHMgYXJlIGRlZmluZWQgdXNpbmcgYSBDIHN0cnVjdAogICAgLSByZXBsYWNlIHRoZSB1cHBlci1jYXNlIHR5cGVkZWYnZWQgQyBzdHJ1Y3QgbmFtZXMgd2l0aCBsb3dlciBjYXNlCiAgICAgIG5vbi10eXBlZGVmJ2VkIG9uZXMKICAgIC0gbWFrZSBzdXJlIHJlZ2lzdGVycyBhcmUgYWNjZXNzZWQgdXNpbmcgdGhlIHByb3BlciBhY2Nlc3NvciBmdW5jdGlvbnMKICAgIC0gcnVuIGNoZWNrcGF0Y2gucGwgYW5kIGZpeCBhbnkgZXJyb3IgcmVwb3J0cwoKICAgIEl0IGFzc3VtZXMgdGhlIGZvbGxvd2luZyBwYXRjaCBoYXMgYmVlbiBhcHBsaWVkIGZpcnN0OgogICAgLSBbVS1Cb290XVtQQVRDSC1BUk1dIENPTkZJR19TWVNfSFogZml4IGZvciBBUk05MDJUIFMzQzI0WDAgQm9hcmRzLCAwNS8wOS8yMDA5CgogICAgVGVzdGVkIG9uIGFuIEVtYmVzdCBTQkMyNDQwLUlJIEJvYXJkIHdpdGggbG9jYWwgdS1ib290IHBhdGNoZXMgYXMgSSBkb24ndCBoYXZlCiAgICBhbnkgczNjMjQwMCBvciBzM2MyNDEwIGJvYXJkcyBidXQgbmVlZCB0aGlzIHBhdGNoIGFwcGx5aW5nIGJlZm9yZSBJIGNhbiBzdWJtaXQKICAgIHBhdGNoZXMgZm9yIHRoZSBTQkMyNDQwLUlJIEJvYXJkLiBBbHNvLCByYW4gTUFLRUFMTCBmb3IgYWxsIEFSTTkgdGFyZ2V0cyBhbmQgbm8KICAgIG5ldyB3YXJuaW5ncyBvciBlcnJvcnMgd2VyZSBmb3VuZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLZXZpbiBNb3JmaXR0IDxrZXZpbi5tb3JmaXR0QGZlYXJuc2lkZS1zeXN0ZW1zLmNvLnVrPgogICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgoKY29tbWl0IGNkODU2NjJiMzQ1YzBjMjI0OGZkNzYzN2Y2NWJiMmZiYjRkNTNkZDkKQXV0aG9yOiBrZXZpbi5tb3JmaXR0QGZlYXJuc2lkZS1zeXN0ZW1zLmNvLnVrIDxrZXZpbi5tb3JmaXR0QGZlYXJuc2lkZS1zeXN0ZW1zLmNvLnVrPgpEYXRlOglTdW4gU2VwIDYgMDA6MzM6MTMgMjAwOSArMDkwMAoKICAgIENPTkZJR19TWVNfSFogZml4IGZvciBBUk05MDJUIFMzQzI0WDAgQm9hcmRzCgogICAgVGhpcyBzZXRzIENPTkZJR19TWVNfSFogdG8gMTAwMCBmb3IgYWxsIGJvYXJkcyB0aGF0IHVzZSB0aGUgczNjMjQwMCBhbmQKICAgIHMzYzI0MTAgY3B1J3Mgd2hpY2ggZml4ZXMgdmFyaW91cyBwcm9ibGVtcyBzdWNoIGFzIHRoZSB0aW1lb3V0cyBpbiB0ZnRwIGJlaW5nCiAgICB0b28gc2hvcnQuCgogICAgVGVzdGVkIG9uIGFuIEVtYmVzdCBTQkMyNDQwLUlJIEJvYXJkIHdpdGggbG9jYWwgdS1ib290IHBhdGNoZXMgYXMgSSBkb24ndAogICAgaGF2ZSBhbnkgczNjMjQwMCBvciBzM2MyNDEwIGJvYXJkcyBidXQgbmVlZCB0aGlzIHBhdGNoIGFwcGx5aW5nIGJlZm9yZSBJIGNhbgogICAgc3VibWl0IHBhdGNoZXMgZm9yIHRoZSBTQkMyNDQwLUlJIEJvYXJkLiBBbHNvLCByYW4gTUFLRUFMTCBmb3IgYWxsIEFSTTkgdGFyZ2V0cwogICAgYW5kIG5vIG5ldyB3YXJuaW5ncyBvciBlcnJvcnMgd2VyZSBmb3VuZC4KCiAgICBJdCB3YXMgb3JpZ2luYWxseSBzdWJtaXR0ZWQgb24gMjEvMDYvMjAwOSBidXQgZGlkbid0IGdldCBpbnRvIHRoZSAyMDA5LjA4CiAgICByZWxlYXNlLCBhbmQgSmVhbi1QaWVycmUgbWFkZSBvbmUgY29tbWVudCBvbiB0aGUgb3JpZ2luYWwgcGF0Y2ggKHNlZQogICAgaHR0cDovL2xpc3RzLmRlbnguZGUvcGlwZXJtYWlsL3UtYm9vdC8yMDA5LUp1bHkvMDU1NDcwLmh0bWwpLiBJJ3ZlIG1hZGUgdHdvCiAgICBjaGFuZ2VzIHRvIHRoZSBvcmlnaW5hbCBwYXRjaDoKICAgIC0gaXQncyBiZWVuIHJlLWJhc2VkIHRvIHRoZSBjdXJyZW50IHJlbGVhc2UKICAgIC0gSSd2ZSByZS1uYW1lZCBnZXRfdGltZXJfcmF3KCkgdG8gZ2V0X3RpY2tzKCkgaW4gcmVzcG9uc2UgdG8gSmVhbi1QaWVycmUncyBjb21tZW50CgogICAgVGhpcyBhZmZlY3RzIHRoZSBzYmMyNDEwLCBzbWRrMjQwMCwgc21kazI0MTAgYW5kIHRyYWIgYm9hcmRzLiBJJ3ZlIGNvcGllZCBpdAogICAgZGlyZWN0bHkgdG8gdGhlIG1haW50YWluZXJzIG9mIGFsbCBleGNlcHQgdGhlIHNiYzI0MTAgd2hpY2ggZG9lc24ndCBoYXZlIGFuCiAgICBlbnRyeSBpbiBNQUlOVEFJTkVSUy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLZXZpbiBNb3JmaXR0IDxrbW9yZml0dEBhc2VsYXB0b3AtMS5sb2NhbGRvbWFpbj4KICAgIFRlc3RlZC1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KCmNvbW1pdCA4YmM0ZWU5ZTgyMTNhYmU0MDMxZWExNzIwYWEwMmZhOThkNDQwMmFkCkF1dGhvcjogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgpEYXRlOglUaHUgT2N0IDEgMTc6MjA6NDAgMjAwOSArMDkwMAoKICAgIHM1cGMxeHg6IGFkZCBzdXBwb3J0IFNNREtDMTAwIGJvYXJkCgogICAgQWRkcyBuZXcgYm9hcmQgU01ES0MxMDAgdGhhdCB1c2VzIHM1cGMxMDAgU29DCgogICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSGV1bmdKdW4sIEtpbSA8cml2ZXJmdWwua2ltQHNhbXN1bmcuY29tPgoKY29tbWl0IGRkMmM5ZTZhM2I2N2M4ZmY1NjY5NGU1MTVlNmUzYzdiYWRkZDhmNTIKQXV0aG9yOiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+CkRhdGU6CVRodSBPY3QgMSAxNzoyMDoyOCAyMDA5ICswOTAwCgogICAgczVwYzF4eDogc3VwcG9ydCBzZXJpYWwgZHJpdmVyCgogICAgVGhpcyBwYXRjaCBpbmNsdWRlcyB0aGUgc2VyaWFsIGRyaXZlciBmb3IgczVwYzF4eC4KICAgIHM1cGMxeHggdWFydCBkcml2ZXIgbmVlZHMgb3duIHJlZ2lzdGVyIHNldHRpbmcgYW5kIGNsb2NrIGNvbmZpZ3VyYXRpb24uCiAgICBTbywgbmVlZCB0byBzcGVjaWFsIGRyaXZlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Cgpjb21taXQgNDY3OGQ2NzRmMGNhY2M5ODNkY2E3ZjZiOTkzM2NkODI5MWM5Nzk3YwpBdXRob3I6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KRGF0ZToJVGh1IE9jdCAxIDE3OjIwOjA4IDIwMDkgKzA5MDAKCiAgICBzNXBjMXh4OiBzdXBwb3J0IG9uZW5hbmQgZHJpdmVyCgogICAgVGhpcyBwYXRjaCBpbmNsdWRlcyB0aGUgb25lbmFuZCBkcml2ZXIgZm9yIHM1cGMxMDAKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgoKY29tbWl0IDM5OWU1YWUwZDBiMmViNDY2M2ZjNTc4NDIwMTk2OGMwN2Q0NWFmYWMKQXV0aG9yOiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+CkRhdGU6CVRodSBPY3QgMSAxNzoyMDowMSAyMDA5ICswOTAwCgogICAgczVwYzF4eDogc3VwcG9ydCBTYW1zdW5nIHM1cGMxeHggU29DCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBTYW1zdW5nIHM1cGMxMDAgYW5kIHM1cGMxMTAKICAgIFNvQ3MuIFRoZSBzNXBjMXh4IFNvQyBpcyBhbiBBUk0gQ29ydGV4IEE4IHByb2Nlc3Nvci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBIZXVuZ0p1biwgS2ltIDxyaXZlcmZ1bC5raW1Ac2Ftc3VuZy5jb20+Cgpjb21taXQgZDA4N2QxOWE5OTRlNzQxZjBjZTUyNjEyNGJlMTE3YzkwYmU0ODJhZQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIE9jdCAxMyAyMTo1ODoyNiAyMDA5IC0wNDAwCgogICAgQmxhY2tmaW46IGRyb3AgTUFDIGRpc3BsYXkgYXQgYm9vdAoKICAgIFRoZSBkZWZhdWx0IEJsYWNrZmluIGJvb3Qgd291bGQgZGlzcGxheSB0aGUgTUFDIGFkZHJlc3MgZm9yIHRoZSBmaXJzdCBOSUMsCiAgICBidXQgdGhpcyByZWxpZXMgb24gdGhlIGVudmlyb25tZW50LiAgVGhlIGN1cnJlbnQgbmV0IG11bHRpIHN0YWNrIG5vIGxvbmdlcgogICAgd3JpdGVzIHRoZSBkZWZhdWx0IGhhcmR3YXJlIHNldHRpbmdzIHRvIHRoZSBlbnZpcm9ubWVudCwgc28gbW9zdCBvZiB0aGUKICAgIHRpbWUgdGhlIGRpc3BsYXkgc2hvd3MgYWxsIHplcm9zLiAgVGhpcyBjYW4gYmUgcHJldHR5IGNvbmZ1c2luZyBhbmQgcmVhbGx5CiAgICBkb2Vzbid0IGFkZCBhbnl0aGluZyB1c2VmdWwsIHNvIGp1c3QgZHJvcCBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMWYwMDNjZjQ3MzhhMTk5ZDk5YzgxODEyNDc4NDA1ODUyNmQyZDQwZQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJRnJpIE9jdCA5IDAyOjI0OjMzIDIwMDkgLTA0MDAKCiAgICBCbGFja2ZpbjogcmVzZXQgd2F0Y2hkb2cgaW4gdWRlbGF5KCkKCiAgICBBbGwgYXJjaGVzIGFwcGFyZW50bHkgc2hvdWxkIHJlc2V0IHRoZSB3YXRjaGRvZyBpbiB0aGVpciB1ZGVsYXkgbG9vcCBhcwogICAgbm90ZWQgb24gdGhlIG1haWxpbmcgbGlzdCByZWNlbnRseToKCiAgICAgID4gQSBjb21tZW50IGluIGZsYXNoX3N0YXR1c19jaGVjaygpIHN1Z2dlc3RzIHRoYXQgdWRlbGF5KCkgaXMKICAgICAgPiBleHBlY3RlZCB0byByZXNldCB0aGUgd2F0Y2hkb2csIGJ1dCBJIGNhbid0IGZpbmQgYW55IGFyY2hpdGVjdHVyZQogICAgICA+IHdoZXJlIGl0IGRvZXMuCgogICAgICBJZiB0aGlzIGlzIG1pc3NpbmcgaW4gb3RoZXIgYXJjaGl0ZWN0dXJlcywgaXQgc2hvdWxkIGJlIGZpeGVkIGF0IHRoZQogICAgICByb290IGNhdXNlLCBpLiBlLiBpbiB1ZGVsYXkoKSBvciBpbiB0aGUgcmVzcGVjdGl2ZSBzdXBwb3J0IHJvdXRpbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAzNzBlYzczNDU1N2QwYjBmMjY2ZTZkMDk1MzIyOWVlMTJjYWU1ZWRkCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglGcmkgT2N0IDkgMDI6MjI6MTEgMjAwOSAtMDQwMAoKICAgIEJsYWNrZmluOiBSZW1vdmUgcmVsb2NhdGlvbiBmaXh1cHMKCiAgICBCbGFja2ZpbiBwaWVjZXMgbGlrZSBjb21taXQgMDYzMDUzNWUyZDA2MmRkNzNjMWNlY2E1YzYxMjVjODZkMTEyN2E0OS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYTM4MDI3OWIyYWJlMTMwYzJkM2QyYzhkZTM2ZjhmZjk4YmM2YjNiMApBdXRob3I6IERhbmllbCBHb3JzdWxvd3NraSA8RGFuaWVsLkdvcnN1bG93c2tpQGVzZC5ldT4KRGF0ZToJVHVlIFNlcCAyOSAwODowMzoxMiAyMDA5ICswMjAwCgogICAgYXQ5MTogVXBkYXRlIE1FRVNDIGJvYXJkIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgc2V2ZXJhbCB1cGRhdGVzOgogICAgLWRpc2FibGUgQ09ORklHX0VOVl9PVkVSV1JJVEUKICAgIC1hZGQgbmV3IGhhcmR3YXJlIHN0eWxlIHZhcmlhbnRzIGFuZCBzZXQgdGhlIGFyY2ggbnVtYmVycyBhcHByb3ByaWF0ZQogICAgLXBhc3MgdGhlIHNlcmlhbCMgYW5kIGhhcmR3YXJlIHJldmlzaW9uIHRvIHRoZSBrZXJuZWwKICAgIC1yZW1vdmVkIHVudXNlZCBtYWNyb3MgZnJvbSBpbmNsdWRlL2NvbmZpZ3MvbWVlc2MuaAogICAgLWZpeGVkIG11bHRpbGluZSBjb21tZW50IHN0eWxlCgogICAgU2lnbmVkLW9mZi1ieTogRGFuaWVsIEdvcnN1bG93c2tpIDxEYW5pZWwuR29yc3Vsb3dza2lAZXNkLmV1PgoKY29tbWl0IDlkZjIwY2UyMTE1NzZhYTdhYzc1NzEwZGNkOGQwYTYyMzZhYmZkNzAKQXV0aG9yOiBTaW1vbiBLYWdzdHJvbSA8W3NpbW9uLmthZ3N0cm9tQG5ldGluc2lnaHQubmV0XT4KRGF0ZToJVGh1IE9jdCAxIDE5OjQxOjUwIDIwMDkgKzA1MzAKCiAgICBhcm06IENvcnJlY3QgYnVpbGQgd2l0aCBDT05GSUdfU1lTX0hVU0hfUEFSU0VSIHNldAoKICAgIEZMQUdfUEFSU0VfU0VNSUNPTE9OIGlzIG5vdCBkZWZpbmVkIHdpdGhvdXQgaHVzaC5oLCBzbyBpbmNsdWRlIHRoYXQuCgogICAgU2lnbmVkLW9mZi1ieTogU2ltb24gS2Fnc3Ryb20gPHNpbW9uLmthZ3N0cm9tQG5ldGluc2lnaHQubmV0PgogICAgU2lnbmVkLW9mZi1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgoKY29tbWl0IGRmMzgyNjI2MmMwZWZkMmJhZWM0ZGYyM2Q0NGIzOTQyYWY5OGY1YTcKQXV0aG9yOiBPbG9mIEpvaGFuc3NvbiA8b2xvZkBsaXhvbS5uZXQ+CkRhdGU6CVR1ZSBTZXAgMjkgMTA6MjI6NDUgMjAwOSAtMDQwMAoKICAgIFRJOiBPTUFQMzogT3Zlcm8gVG9iaSBldGhlcm5ldCBzdXBwb3J0CgogICAgQWRkIHNldHVwIGZvciBldGhlcm5ldCBvbiBUb2JpLCBhbGxvd2luZyBrZXJuZWwvcmFtZGlzayB0byBiZSBsb2FkZWQKICAgIG92ZXIgdGZ0cC4KCiAgICBUaGlzIGFsc28gcmVmYWN0b3JzIHRoZSBzbWM5MTF4IGRyaXZlciB0byBhbGxvdyBmb3IgZGV0ZWN0aW5nIHdoZW4gdGhlCiAgICBjaGlwIGlzIG1pc3NpbmcuIEkuZS4gdGhlIGRldGVjdF9jaGlwKCkgZnVuY3Rpb24gaXMgY2FsbGVkIGVhcmxpZXIgYW5kCiAgICB3aWxsIGFib3J0IGdyYWNlZnVsbHkgd2hlbiB0aGUgQ2hpcCBJRCByZWFkIHJldHVybnMgYWxsIDEncy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBPbG9mIEpvaGFuc3NvbiA8b2xvZkBsaXhvbS5uZXQ+CiAgICBBY2tlZC1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KICAgIEFja2VkLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDJhNmNjOTdiOTE5OTdhZTQ4NTMxMmFjOTFmZmJjZWE2YTg5YjY2M2EKQXV0aG9yOiBPbG9mIEpvaGFuc3NvbiA8b2xvZkBsaXhvbS5uZXQ+CkRhdGU6CVR1ZSBTZXAgMjkgMTA6MjE6MjkgMjAwOSAtMDQwMAoKICAgIFNNQzkxMVg6IEFkZCBjaGlwIGF1dG8gZGV0ZWN0aW9uCgogICAgUmVmYWN0b3IgdGhlIHNtYzkxMXggZHJpdmVyIHRvIGFsbG93IGZvciBkZXRlY3Rpbmcgd2hlbiB0aGUgY2hpcCBpcyBtaXNzaW5nLgogICAgSS5lLiB0aGUgZGV0ZWN0X2NoaXAoKSBmdW5jdGlvbiBpcyBjYWxsZWQgZWFybGllciBhbmQgd2lsbCBhYm9ydCBncmFjZWZ1bGx5CiAgICB3aGVuIHRoZSBDaGlwIElEIHJlYWQgcmV0dXJucyBhbGwgMSdzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE9sb2YgSm9oYW5zc29uIDxvbG9mQGxpeG9tLm5ldD4KICAgIEFja2VkLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgogICAgQWNrZWQtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMDI5N2VjN2UyYTQwMzliOGEyODM0NmY1MmYzY2NjYTRkYjFkZGM2MgpBdXRob3I6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KRGF0ZToJVHVlIFNlcCAyOSAxMDoxOTo0OSAyMDA5IC0wNDAwCgogICAgVEkgT01BUDMgVXNlIGFybSBpbml0IHNlcXVlbmNlIHRvIGluaXRpYWxpemUgaTJjCgogICAgVGhpcyBjaGFuZ2VzIGZpeGVzIGFuIGVhcmx5IGkyYyBlcnJvci4KCiAgICBJdCBhcHBlYXJzIHRoYXQgSTJDIGlzIHdvcmtpbmcgYmVjYXVzZSBvbmNlIGEgcmVhZCBvciB3cml0ZQogICAgZXJyb3IgaXMgZGV0ZWN0ZWQsIHRoZSBvbWFwMjR4eF9pMmMgZHJpdmVyIGNhbGxzIGkyY19pbml0CiAgICBpbnNpZGUgaXRzIGVycm9yIGhhbmRsaW5nIGNoZWNrLgoKICAgIFdoaWxlIGl0IGlzIG9rIHRvIGF0dGVtcHQgZXJyb3IgaGFuZGxpbmcgdGhpcyB3YXksIHRoZSBib2FyZHMKICAgIG11c3Qgbm90IGRlcGVuZCBvbiB0aGlzIHNpZGUgZWZmZWN0IHRvIGluaXRpYWxpemUgaXQncyBpMmMuCgogICAgSW5zdGVhZCBvZiBleHBsaWNpdGx5IGNhbGxpbmcgaTJjX2luaXQgZm9yIGV2ZXJ5IGJvYXJkLCB1c2UKICAgIHRoZSBnZW5lcmljIGFybSBpbml0aWFsaXphdGlvbiBpbiBsaWJfYXJtL2JvYXJkLmMuIEJ5IGRlZmluaW5nCiAgICB0aGUgY29uZmlnIHZhcmlhYmxlIENPTkZJR19IQVJEX0kyQywgdGhlIG9tYXAzIGkyYyBpbml0aWFsaXphdGlvbgogICAgaXMgaW5jbHVkZWQgaW4gdGhlIGluaXRfc2VxdWVuY2UgdGFibGUuCgogICAgUnVuIHRlc3RlZCBvbiBCZWFnbGUuCiAgICBDb21waWxlIHRlc3RlZCBvbiB0aGUgb21hcDMncwoKICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KICAgIEFja2VkLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgoKY29tbWl0IDRkZjMwZjNiYjcyODViMmM5NjI3MTNhNWM2OTNjMTZmZDkwODg1ZTAKQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+CkRhdGU6CVR1ZSBTZXAgMjkgMDk6NDM6MDQgMjAwOSAtMDQwMAoKICAgIFRJOiBEYVZpbmNpIERNMzY1OiBFbmFibGluZyBuZXR3b3JrIFN1cHBvcnQgb24gRE0zNjUgRVZNCgogICAgVGhpcyBwYXRjaCBlbmFibGVzIEVNQUMgb24gdGhlIERNMzY1IEVWTS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+CiAgICBBY2tlZC1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgoKY29tbWl0IDAwZTE2NjVhM2NmOTU2ZTA5YWMyY2U4NmVmNmVjNDU5ZjZiZmIzM2MKQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+CkRhdGU6CVR1ZSBTZXAgMjkgMTA6MDI6MzggMjAwOSAtMDQwMAoKICAgIFRJOiBEYVZpbmNpOiBHUElPIGhlYWRlciBmaWxlIGFuZCBkZWZpbml0aW9ucwoKICAgIFNvbWUgRGFWaW5jaSBTT0MncyB1c2UgR1BJT3MgdG8gZW5hYmxlIEVNQUMgYW5kIERNOTAwMC4KICAgIFRoaXMgcGF0Y2ggYWRkcyBzb21lIGRlZmluaXRpb25zIGZvciBHUElPIHJlZ2lzdGVycyBhbmQgYWxzbyBhZGRzCiAgICBzdHJ1Y3R1cmVzIGZvciBHUElPLgogICAgQSBzZXBhcmF0ZSBoZWFkZXIgZmlsZSBpcyBiZWluZyBhZGRlZCBzbyB0aGF0IGluIGZ1dHVyZSB3ZQogICAgY2FuIGhhdmUgYSBEYVZpbmNpIEdQSU8gZHJpdmVyIHNpbWlsZXIgdG8gT01BUC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+CiAgICBBY2tlZC1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgoKY29tbWl0IDk1YWU4MDNhZmJkZDlmNjczYzk0Yjk5MmVhNjI0YTEwZDI1MmFmYzIKQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+CkRhdGU6CUZyaSBTZXAgMTggMTc6MzA6MDUgMjAwOSAtMDQwMAoKICAgIFRJOiBEYVZpbmNpIERNNjQ2eDogVXBkYXRlIGZsYWcgdXNlZCB0byByZXByZXNlbnQgRE02NDZ4IFNPQydzCgogICAgSW4gdGhlIERhVmluY2kgc3BlY2lmaWMgY29kZSwgd2UgdXNlIGJvdGggQ09ORklHX1NPQ19ETTY0NlggYW5kCiAgICBDT05GSUdfU09DX0RNNjQ2eCB0byByZXByZXNlbnQgRE02NDZ4IHNwZWNpZmljIGNvZGUuCiAgICBUaGlzIHBhdGNoIGNoYW5nZXMgb2NjdXJyZW5jZXMgb2YgQ09ORklHX1NPQ19ETTY0NnggdG8KICAgIENPTkZJR19TT0NfRE02NDZYLiBUaGlzIGlzIGJlY2F1c2UgZm9yIERNNjQ0eCBzZXJpZXMgb2YgU09DcyB3ZSB1c2UKICAgIHRoZSBmbGFnIENPTkZJR19TT0NfRE02NDRYLiBXZSB3YW50IHNvbWUgdW5pZm9ybWl0eS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+CiAgICBBY2tlZC1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgoKY29tbWl0IGZjOTE2NWZkYjNiMDIxYWE4ZmYwMjQxNzY5MjIyMGZlOTM0NDA3MmIKQXV0aG9yOiBPbG9mIEpvaGFuc3NvbiA8b2xvZkBsaXhvbS5uZXQ+CkRhdGU6CU1vbiBTZXAgMjggMDg6MTk6MzAgMjAwOSAtMDQwMAoKICAgIE9NQVAzOiBDbGVhbiB1cCB3aGl0ZXNwYWNlIGluIG11eCBjb25maWdzCgogICAgU3dpdGNoIGZyb20gc3BhY2UtYmFzZWQgaW5kZW50YXRpb24gdG8gdGFiLWJhc2VkIGluIG11eCBjb25maWdzLCBhcyBwb2ludGVkCiAgICBvdXQgYnkgV0QgYXQ6CgogICAgaHR0cDovL2xpc3RzLmRlbnguZGUvcGlwZXJtYWlsL3UtYm9vdC8yMDA5LVNlcHRlbWJlci8wNjEyNDEuaHRtbAoKICAgIE5vdGhpbmcgYnV0IHdoaXRlc3BhY2UgY2hhbmdlcyBpbiB0aGlzIHBhdGNoIChkaWZmIC13IGdpdmVzIG5vIG91dHB1dCkuCgogICAgU2lnbmVkLW9mZi1ieTogT2xvZiBKb2hhbnNzb24gPG9sb2ZAbGl4b20ubmV0PgoKY29tbWl0IDlkZTAyMTJiZDdjNGM4MmE3ZThjMmEyYzg3MTRmOGM3YWJjNTdkMDgKQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgpEYXRlOglNb24gU2VwIDI4IDA4OjE3OjUwIDIwMDkgLTA0MDAKCiAgICBPTUFQMyBNTUM6IEZpeCB3YXJuaW5nIGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlcgoKICAgIEZpeCB3YXJuaW5nCiAgICBEZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgogICAgQ0M6IFN0ZXZlIFNha29tYW4gPHNha29tYW5AZ21haWwuY29tPgogICAgQWNrZWQtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KCmNvbW1pdCBlOTJkYWViNWMyMDUwNDM4NDAyYjg3YzdkNjE0ZThhMTNjMjk0MzQ4CkF1dGhvcjogU2ltb24gS2Fnc3Ryb20gPFtzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldF0+CkRhdGU6CVR1ZSBTZXAgMjIgMDQ6MDE6MDEgMjAwOSArMDUzMAoKICAgIFN1cHBvcnQgZm9yIHRoZSBPcGVuUkQgYmFzZSBib2FyZAoKICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBib3Jyb3dlZCBmcm9tIHRoZSBzaGVldmFwbHVnIGJvYXJkIGFuZCB0aGUgTWFydmVsbAogICAgMS4xLjQgY29kZS4gVW5zdXBwb3J0ZWQgKG9yIHVudGVzdGVkKSBpcyB0aGUgU0QgY2FyZCwgUENJZSBhbmQgU0FUQS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+Cgpjb21taXQgYTYyZTc4ZmM0NDRjNjdmOTU4YmU0ODg5MWJlZjNkYWIwZTllYjI4NQpBdXRob3I6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KRGF0ZToJTW9uIFNlcCAyMSAyMDoxNToxNyAyMDA5ICswNTMwCgogICAgS2lya3dvb2Q6IG12ODhmNjI4MWd0d19nZTogQWRkIGt3YmltYWdlIGJ1aWxkIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZHMga3diaW1hZ2UgY29uZmlndXJhdGlvbiBmaWxlCiAgICAodXNlZCBieSBta2ltYWdlIHV0aWxpdHkpCiAgICB0byBzdXBwb3J0IHUtYm9vdC5rd2IgdGFyZ2V0IG9uIG12ODhmNjI4MWd0d19nZSBib2FyZC4KCiAgICBUbyBjcmVhdGUgS2lya3dvb2QgYm9vdCBpbWFnZSB0byBiZSBmbGFzaGVkIG9uIFNQSSBGbGFzaCwKICAgIGFkZGl0aW9uYWwgcGFyYW1ldGVyIHUtYm9vdC5rd2IgbmVlZCB0byBiZSBwYXNzZWQgZHVyaW5nIG1ha2UuCgogICAgU2lnbmVkLW9mZi1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgoKY29tbWl0IDViYzdjYmMxNWIxODkwNjgyYzBiMjc5ZjcwODkxNDUxOGJkMjVmOGQKQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+CkRhdGU6CU1vbiBTZXAgMjEgMTg6MjM6MTEgMjAwOSArMDUzMAoKICAgIEtpcmt3b29kOiByZDYyODFhOiBBZGQga3diaW1hZ2UgYnVpbGQgc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBrd2JpbWFnZSBjb25maWd1cmF0aW9uIGZpbGUKICAgICh1c2VkIGJ5IG1raW1hZ2UgdXRpbGl0eSkKICAgIHRvIHN1cHBvcnQgdS1ib290Lmt3YiB0YXJnZXQgb24gcmQ2MjgxYSBwbGF0Zm9ybS4KCiAgICBUbyBjcmVhdGUgS2lya3dvb2QgYm9vdCBpbWFnZSB0byBiZSBmbGFzaGVkIG9uIE5BTkQsCiAgICBhZGRpdGlvbmFsIHBhcmFtZXRlciB1LWJvb3Qua3diIG5lZWQgdG8gYmUgcGFzc2VkIGR1cmluZyBtYWtlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KCmNvbW1pdCAyM2I4MDk4MmEwMmE0M2JmNGVhZDkxNTc0YzlkNmYxYjY0N2NjYzhmCkF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgpEYXRlOglTdW4gU2VwIDI3IDExOjEwOjA5IDIwMDkgLTA1MDAKCiAgICBBZGQgc3VwcG9ydCBmb3IgRXVrcmVhIENQVTkyNjAvQ1BVOUcyMCBTQkMKCiAgICB0aGVzZSBib2FyZHMgYXJlIGJ1aWx0IGFyb3VuZCBBdG1lbCdzIEFUOTFTQU05MjYwLzlHMjAgYW5kIGhhdmUKICAgIHVwIHRvIDY0TUIgb2YgTk9SIGZsYXNoLCB1cCB0byAxMjhNQiBvZiBTRFJBTSwgdXAgdG8gMkdCIG9mIE5BTkQKICAgIGFuZCBpbmNsdWRlIGEgMTAvMTAwIEV0aGVybmV0IFBIWSBpbiBSTUlJIG1vZGUuCgogICAgU2lnbmVkLW9mZi1ieTogRXJpYyBCZW5hcmQgPGVyaWNAZXVrcmVhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KCmNvbW1pdCBkODM4MGM5ZDM1ZTg4NzU5Yzk2ZTY4YTAzNzM4NDQ2Y2EwY2IyOTJmCkF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgpEYXRlOglTdW4gU2VwIDI3IDA3OjQ3OjI0IDIwMDkgLTA1MDAKCiAgICBBZGQgc3VwcG9ydCBmb3IgRXVrcmVhIENQVUFUOTEgU0JDCgogICAgQ1BVQVQ5MSBpcyBidWlsdCBhcm91bmQgQXRtZWwncyBBVDkxUk05MjAwIGFuZCBoYXMgdXAgdG8gMTZNQiBvZiBOT1IKICAgIGZsYXNoLCB1cCB0byAxMjhNQiBvZiBTRFJBTSwgYW5kIGluY2x1ZGVzIGEgTWljcmVsIEtTODcyMSBQSFkgaW4gUk1JSQogICAgbW9kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBFcmljIEJlbmFyZCA8ZXJpY0BldWtyZWEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgoKY29tbWl0IGViOTVhYTE1ZTY0NGMyOWIwMTgzMjcwM2FhNDk2NGZlNDE5MTcwZjAKQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+CkRhdGU6CU1vbiBTZXAgMTQgMTQ6NTc6NDcgMjAwOSAtMDQwMAoKICAgIFRJOiBEYVZpbmNpIERNMzY1OiBNaW5vciBjb25maWcgY2xlYW51cAoKICAgIFRoZSBETTM2NSBjb25maWcgd2FzIHVzaW5nIHRoZSAnQ09ORklHX0NNRF9TQVZFRU5WJyBmbGFnLgogICAgVGhpcyBpcyBhbHJlYWR5IGluY2x1ZGVkIHdoZW4gd2UgaW5jbHVkZSB0aGUKICAgIGNvbmZpZ19jbWRfZGVmYXVsdC5oIGhlYWRlciBmaWxlLiBTbyB0aGlzIGZsYWcgaXMgcmVtb3ZlZC4KICAgIEFsc28gYW5vdGhlciBmbGFnIHRvIGVuYWJsZSBOQU5EIGZ1bmN0aW9ucyB3YXMgYmVpbmcKICAgIGVuYWJsZWQgaW5jb3JyZWN0bHkuCgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgoKY29tbWl0IDVkNzgzYzFmZmQ2OTFmZmRhZGJjMmMyZjc5NmM0MTQ4MWI3Y2RjZTcKQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+CkRhdGU6CU1vbiBTZXAgMTQgMTU6MDM6MDYgMjAwOSAtMDQwMAoKICAgIFRJIERhVmluY2kgRE0zNjU6IFJlbW92aW5nIGhlYWRlciBmaWxlIHdoaWNoIGRvZXMgbm90IGV4aXN0CgogICAgVGhlIERhVmluY2kgRE0zNjUgRVZNIGJvYXJkIHNwZWNpZmljIGNvZGUgd2FzIGluY2x1ZGluZyBhIGhlYWRlciBmaWxlCiAgICB3aGljaCBkb2VzIG5vdCBleGlzdC4gU28gcmVtb3ZpbmcgdGhpcyBoZWFkZXIgZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Cgpjb21taXQgNDA5ZWMzN2JkOGFlODgyMmQyNzZlNzc0MTlkODk5NTcxODkxYjE5MQpBdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KRGF0ZToJVHVlIFNlcCA4IDE4OjA4OjA2IDIwMDkgLTA0MDAKCiAgICBUSSBEYVZpbmNpOiBETTM1NTogQ29uZmlnIENsZWFudXAgYW5kIFVwZGF0ZQoKICAgIFRoaXMgcGF0Y2ggZG9lcyB0aGUgZm9sbG93aW5nCiAgICAxKSBFbmFibGVzIHRoZSBOQU5EIGRyaXZlciB3aGljaCBpcyBub3cgYXZhaWxhYmxlLgogICAgMikgRW5hYmxlcyB0aGUgJ0NPTkZJR19NVERfREVWSUNFJyBhcyB3aXRob3V0IHRoaXMgdGhlCiAgICBjb21waWxhdGlvbiB3aWxsIGZhaWwKICAgIDMpIFdlIG5vdyBoYXZlIGEgc2FmZSBwbGFjZSB0byBzdG9yZSBlbnZpcm9ubWVudCBhbmQgZGVmaW5lcwogICAgYW4gb2Zmc2V0IHdoZXJlIHRoaXMgY2FuIGJlIHN0b3JlZC4gVGhpcyBvZmZzZXQgdmFsdWUgaXMgc3VjaCB0aGF0IGl0IGlzIGFmdGVyCiAgICB0aGUgbG9jYXRpb24gd2hlcmUgVS1Cb290IGlzIGZsYXNoZWQgdXNpbmcgVEkgZmxhc2ggdXRpbGl0aWVzLgogICAgNCkgRW5hYmxlcyBCb290ZGVsYXkKICAgIDUpIEluY3JlYXNlcyBtYWxsb2MoKSBhcmVuYSBzaXplLiBNYW51ZmFjdHVyZXJzIGFyZSBjb21pbmcgb3V0IHdpdGgKICAgIE5BTkQgd2l0aCBsYXJnZSBibG9ja3Mgc2l6ZXMgb2YgdXB0byAxIE1pQi4gSXQgaGFzIGJlZW4gbm90aWNlZCB0aGF0CiAgICBhcyB0aGUgYmxvY2sgc2l6ZSBvZiB0aGUgTkFORCB1c2VkIGlzIGluY3JlYXNlZCwgaWYgdGhpcyBwYXJ0aWN1bGFyCiAgICB2YWx1ZSBpcyBub3QgaW5jcmVhc2VkLCB0aGUgTkFORCBkcml2ZXIgd2lsbCBvdXRwdXQgb3V0IG9mIG1lbW9yeQogICAgZXJyb3JzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KCmNvbW1pdCA3OTA4Yzk3YTEwNjc2NWFkODgxNmJmMjI3MWE1YmYzMTU3MjhiMjc0CkF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgpEYXRlOglUdWUgU2VwIDggMTE6Mzc6MzkgMjAwOSAtMDQwMAoKICAgIFRJIERhVmluY2k6IERNNjQ2eDogSW5pdGlhbCBTdXBwb3J0IGZvciBETTY0NnggU09DCgogICAgRE02NDZ4IGlzIGFuIFNPQyBmcm9tIFRJIHdoaWNoIGhhcyBib3RoIGFuIEFSTSBhbmQgYSBEU1AuCiAgICBUaGVyZSBhcmUgbXVsdGlwbGUgdmFyaWFudHMgb2YgdGhlIFNPQyBtYWlubHkgZGVhbGluZyB3aXRoIGRpZmZlcmVudAogICAgY29yZSBzcGVlZHMuCiAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGluaXRpYWwgZnJhbWV3b3JrIGZvciB0aGUgRE02NDZ4IFNPQy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Cgpjb21taXQgNWQwZjUzNjI0YzI0ZWFmODJkNTgzNjhhNmE1Yjg0NzYzOTJkZDVjNwpBdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KRGF0ZToJV2VkIFNlcCA5IDE1OjI2OjAwIDIwMDkgLTA0MDAKCiAgICBUSSBEYVZpbmNpOiBETTY0NDY6IEZpeCBDb21waWxhdGlvbiBlcnJvciBpbiBOQU5EIG1vZGUKCiAgICBUaGUgRGVmYXVsdCBtb2RlIHRoYXQgaXMgYnVpbHQgZm9yIHRoZSBEYXZpbmNpIERWRVZNIGhhcHBlbnMKICAgIHRvIGJlIHRoZSBOT1IgbW9kZS4KICAgIFdoZW4gd2Ugd2FudCB0byBidWlsZCBmb3IgdGhlIE5BTkQgbW9kZSwgd2UgZ2V0IGEgY29tcGlsYXRpb24KICAgIGVycm9yLiBUaGlzIGlzIG92ZXJjb21lIGJ5IGRlZmluaW5nIHRoZSBDT05GSUdfTVREX0RFVklDRQogICAgZmxhZyBpbiB0aGUgTkFORCBtb2RlLgogICAgVGhlIGltYWdlIGJ1aWx0IGZvciBOQU5EIG1vZGUgd2FzIHN1Y2Nlc3NmdWxseSB0ZXN0ZWQgb24gdGhlCiAgICBEYVZpbmNpIERNNjQ0NiBFVk0uCgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgoKY29tbWl0IDdhMmFhOGI2ODEyMGYzMzNlZDJlZGMzMzQ3NWNhMTk1ODEwZDZjYjEKQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CkRhdGU6CVRodSBTZXAgMTAgMTU6Mjc6NTcgMjAwOSAtMDQwMAoKICAgIE9NQVAzIE1vdmUgY2FjaGUgcm91dGluZSB0byBjYWNoZS5TCgogICAgdjdfZmx1c2hfZGNhY2hlX2FsbCwgYmVjYXVzZSBpdCBkZXBlbmRzIG9uIG9tYXAgUk9NIGNvZGUgaXMgbm90CiAgICBnZW5lcmljLiAgUmVuYW1lIHRoZSBmdW5jdGlvbiB0byAnaW52YWxpZGF0ZV9kY2FjaGUnIGFuZCBtb3ZlIGl0CiAgICB0byB0aGUgb21hcCBjcHUgZGlyZWN0b3J5LgoKICAgIENvbGxlY3QgdGhlIG90aGVyIG9tYXAgY2FjaGUgcm91dGluZXMgbDJfY2FjaGVfZW5hYmxlIGFuZAogICAgbDJfY2FjaGVfZGlzYWJsZSB3aXRoIGludmFsaWRlX2RjYWNoZSBpbnRvIGNhY2hlLlMuICBUaGlzCiAgICBtZWFucyByZW1vdmluZyB0aGUgb2xkIGNhY2hlLmMgZmlsZSB0aGF0IGNvbnRhaW5lZCBsMl9jYWNoZV9lbmFibGUKICAgIGFuZCBsMl9jYWNoZV9kaXNhYmxlLgoKICAgIFRoZSBjb252ZXJzaW9uIGZyb20gY2FjaGUuYyB0byBjYWNoZS5TIHdhcyBkb25lIG1vc3QgdGhyb3VnaAogICAgZGlzYXNzZW1ibGluZyB0aGUgdWJvb3QgYmluYXJ5LiAgVGhlIG9ubHkgc2lnbmlmaWNhbnQgY2hhbmdlIHdhcwogICAgdG8gY2hhbmdlIHRoZSBjb21wYXJpc2lvbiBmb3IgdGhlIHJldHVybiBvZiBnZXRfY3B1X3JldiBmcm9tCgogICAgICAgY21wCXIwLCAjMAogICAgICAgYmVxCWVhcmxpZXJfdGhhbl9sYWJlbAoKICAgIFdoaWNoIHdhcyBsb3N0IGluZm9ybWF0aW9uIHRvCgogICAgICAgY21wCXIwLCAjQ1BVXzNYWF9FUzIwCiAgICAgICBibHQJZWFybGllcl90aGFuX2xhYmVsCgogICAgVGhlIHBhdGhzIHRocm91Z2ggdGhlIGVuYWJsZSByb3V0aW5lIHdlcmUgdmVyaWZpZWQgYnkKICAgIGFkZGluZyBhbiBpbmZpbml0ZSBsb29wIGFuZCBzZWVpbmcgdGhlIGhhbmcuICBUaGVuCiAgICByZW1vdmluZyB0aGUgaW5maW5pdGUgbG9vcCBhbmQgc2VlaW5nIGl0IGNvbnRpbnVlLgoKICAgIFRoZSBkaXNhYmxlIHJvdXRpbmUgaXMgc2ltaWxhciBlbm91Z2ggdGhhdCBpdCB3YXMgbm90CiAgICB0ZXN0ZWQgd2l0aCB0aGlzIG1ldGhvZC4KCiAgICBSdW4gdGVzdGVkIGJ5IGNvbGQgYm9vdGluZyBmcm9tIG5hbmQgb24gYmVhZ2xlIGFuZCB6b29tMS4KICAgIENvbXBpbGUgdGVzdGVkIG9uIE1BS0VBTEwgYXJtLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KCmNvbW1pdCBhMTZkZjJjMTExODgyOTdlY2E0M2NmNjA4MGM3MGZiNjliOTYwMjMyCkF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgpEYXRlOglUdWUgU2VwIDggMTc6MDk6NTIgMjAwOSAtMDQwMAoKICAgIFRJIERhVmluY2k6IFJlbW92ZSByZWZlcmVuY2VzIHRvIFNaX3h4CgogICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSBhc20vc2l6ZXMuaCBoZWFkZXIgZmlsZSBmcm9tIGJlaW5nCiAgICBpbmNsdWRlZCBpbiB0aGUgRGFWaW5jaSBTT0MgY29uZmlncy4KICAgIFJlZmVyZW5jZXMgdG8gU1pfeHggaGF2ZSBiZWVuIHJlcGxhY2VkIGJ5IGFwcHJvcHJpYXRlCiAgICBiaXQgc2hpZnRlZCB2YWx1ZXMuCgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgogICAgQWNrZWQtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMjg1ODcwZjc1Mzc4YWNhNDFjNTA2M2U0MzU4YWQ5M2JmMzAxNGZkOApBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBPY3QgOSAwMToyNzoxOCAyMDA4IC0wNTAwCgogICAgTGVhdmUgeDg2ZW11IG9wIGNvZGUgdGFibGVzIGluIGRlZmF1bHQgc2VjdGlvbgoKICAgIEZvcmNpbmcgdGhlIHRhYmxlcyBpbnRvIGdvdDIgY2F1c2VkIGV4dHJhIHJlbG9jYXRpb24gd2hlbiB1c2luZyAtbXJlbG9jYXRhYmxlLgogICAgVGhpcyBwYXRjaCByZXF1aXJlcyBhbnkgYm9hcmQgZGVmaW5pbmcgQ09ORklHX0JJT1NFTVUgdG8gdXNlIC1tcmVsb2NhdGFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBKaW4gWmhlbmd4aW9uZyA8SmFzb24uSmluQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYmUyMjU0NDIzYjg2NTcyODQxYWE3MGZmMDVkMjA5MzNkMWI0OTgyMwpBdXRob3I6IEx1aWdpICdDb21pbycgTWFudGVsbGluaSA8bHVpZ2kubWFudGVsbGluaUBpZGYtaGl0LmNvbT4KRGF0ZToJU2F0IE9jdCAxMCAxMjo0MjoyMiAyMDA5ICswMjAwCgogICAgVXBkYXRlIGFsbCBib2FyZCB0byBzdXBwb3J0IG5ldyBiYm1paXBoeSBkcml2ZXIgKHdpdGggbXVsdGlidXMgc3VwcG9ydCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBMdWlnaSAnQ29taW8nIE1hbnRlbGxpbmkgPGx1aWdpLm1hbnRlbGxpbmlAaWRmLWhpdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDMxMGNlY2I4Y2NkYmM4YTliZTU4MGU3NWIyZmQzNjIxNzlkNzg1MzUKQXV0aG9yOiBMdWlnaSAnQ29taW8nIE1hbnRlbGxpbmkgPGx1aWdpLm1hbnRlbGxpbmlAaWRmLWhpdC5jb20+CkRhdGU6CVNhdCBPY3QgMTAgMTI6NDI6MjEgMjAwOSArMDIwMAoKICAgIEFkZCBiYl9taWlwaHlfaW5pdCBjYWxsIGJlZm9yZSBhbnkgZXRoZXJuZXQgYnJpbmctdXAgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMdWlnaSAnQ29taW8nIE1hbnRlbGxpbmkgPGx1aWdpLm1hbnRlbGxpbmlAaWRmLWhpdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDRiYTMxYWIzM2FjODI0NjM1ZmNiNDlhYzYwOTA3MGE5ZWJjYWI3ZjAKQXV0aG9yOiBMdWlnaSAnQ29taW8nIE1hbnRlbGxpbmkgPGx1aWdpLm1hbnRlbGxpbmlAaWRmLWhpdC5jb20+CkRhdGU6CVNhdCBPY3QgMTAgMTI6NDI6MjAgMjAwOSArMDIwMAoKICAgIFJld3JpdGUgdGhlIG1paXBoeWJiIChCaXQtYmFuZ2VkIE1JSSBidXMgZHJpdmVyKSBpbiBvcmRlciB0byBzdXBwb3J0IGFuIGFyYml0cmFyeSBudW1iZXIgb2YgbWlpIGJ1c2VzLgoKICAgIFRoaXMgZmVhdHVyZSBpcyB1c2VmdWwgd2hlbiB5b3VyIGJvYXJkIHVzZXMgZGlmZmVyZW50IG1paSBidXNlcyBmb3IgZGlmZmVyZW50CiAgICBwaHlzIGFuZCBhbGwgKG9yIGEgcGFydCkgb2YgdGhlc2UgYnVzZXMgYXJlIGltcGxlbWVudGVkIHZpYSBiaXQtYmFuZ2luZyBtb2RlLgoKICAgIFRoZSBkcml2ZXIgcmVxdWlyZXMgdGhhdCB0aGUgZm9sbG93aW5nIG1hY3JvcyBzaG91bGQgYmUgZGVmaW5lZCBpbnRvIHRoZSBib2FyZAogICAgY29uZmlndXJhdGlvbiBmaWxlOgoKICAgIENPTkZJR19CSVRCQU5HTUlJCSAgICAtIEVuYWJsZSB0aGUgbWlpcGh5YmIgZHJpdmVyCiAgICBDT05GSUdfQklUQkFOR01JSV9NVUxUSSAtIEVuYWJsZSB0aGUgbXVsdGkgYnVzIHN1cHBvcnQKCiAgICBJZiB0aGUgQ09ORklHX0JJVEJBTkdNSUlfTVVMVEkgaXMgbm90IGRlZmluZWQsIHRoZSBib2FyZCdzIGNvbmZpZyBmaWxlIG5lZWRzCiAgICB0byBkZWZpbmUgYXQgbGVhc3QgdGhlIGZvbGxvd2luZyBtYWNyb3M6CgogICAgTUlJX0lOSVQJICAtIEdlbmVyaWMgY29kZSB0byBlbmFibGUgdGhlIE1JSSBidXMgKG9wdGlvbmFsKQogICAgTURJT19ERUNMQVJFICAtIERlY2xhcmF0aW9uIG5lZWRlZCB0byBhY2Nlc3MgdG8gdGhlIE1ESU8gcGluIChvcHRpb25hbCkKICAgIE1ESU9fQUNUSVZFICAgLSBBY3RpdmF0ZSB0aGUgTURJTyBwaW4gYXMgb3V0IHBpbgogICAgTURJT19UUklTVEFURSAtIEFjdGl2YXRlIHRoZSBNRElPIHBpbiBhcyBpbnB1dC90cmlzdGF0ZSBwaW4KICAgIE1ESU9fUkVBRAkgIC0gUmVhZCB0aGUgTURJTyBwaW4KICAgIE1ESU8odikJICAtIFdyaXRlIHYgb24gdGhlIE1ESU8gcGluCiAgICBNRENfREVDTEFSRSAgIC0gRGVjbGFyYXRpb24gbmVlZGVkIHRvIGFjY2VzcyB0byB0aGUgTURDIHBpbiAob3B0aW9uYWwpCiAgICBNREModikJICAtIFdyaXRlIHYgb24gdGhlIE1EQyBwaW4KCiAgICBUaGUgcHJldmlvdXMgbWFjcm9zIG1ha2UgdGhlIGRyaXZlciBjb21wYXRpYmxlIHdpdGggdGhlIHByZXZpb3VzIHZlcnNpb24KICAgICh0aGF0IGRpZG4ndCBzdXBwb3J0IHRoZSBtdWx0aS1idXMpLgoKICAgIFdoZW4gdGhlIENPTkZJR19CSVRCQU5HTUlJX01VTFRJIGlzIGFsc28gZGVmaW5lZCwgdGhlIGJvYXJkIGNvZGUgbmVlZHMgdG8gZmlsbAogICAgdGhlIGJiX21paXBoeV9idXNlc1tdIGFycmF5IHdpdGggYSByZWNvcmQgZm9yIGVhY2ggcmVxdWlyZWQgYnVzIGFuZCBkZWNsYXJlCiAgICB0aGUgYmJfbWlpcGh5X2J1c2VzX251bSB2YXJpYWJsZSB3aXRoIHRoZSBudW1iZXIgb2YgbWlpIGJ1c2VzLgogICAgVGhlIHJlY29yZCAoc3RydWN0IGJiX21paXBoeV9idXMpIGhhcyB0aGUgZm9sbG93aW5nIGZpZWxkcy9jYWxsYmFja3MgKHNlZQogICAgbWlpcGh5LmggZm9yIGRldGFpbHMpOgoKICAgIGNoYXIgbmFtZVtdCQkgICAtIFRoZSBzeW1ib2xpYyBuYW1lIHRoYXQgbXVzdCBiZSBlcXVhbCB0byB0aGUgTUlJIGJ1cwoJCQkgICAgIHJlZ2lzdGVyZWQgbmFtZQogICAgaW50ICgqaW5pdCkoKQkgICAtIEluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGNhbGxlZCBhdCBzdGFydHVwIHRpbWUgKGp1c3QKCQkJICAgICBiZWZvcmUgdGhlIEV0aGVybmV0IGluaXRpYWxpemF0aW9uKQogICAgaW50ICgqbWRpb19hY3RpdmUpKCkgICAtIEFjdGl2YXRlIHRoZSBNRElPIHBpbiBhcyBvdXRwdXQKICAgIGludCAoKm1kaW9fdHJpc3RhdGUpKCkgLSBBY3RpdmF0ZSB0aGUgTURJTyBwaW4gYXMgaW5wdXQvdHJpc3RhdGUgcGluCiAgICBpbnQgKCpzZXRfbWRpbykoKQkgICAtIFdyaXRlIHRoZSBNRElPIHBpbgogICAgaW50ICgqZ2V0X21kaW8pKCkJICAgLSBSZWFkIHRoZSBNRElPIHBpbgogICAgaW50ICgqc2V0X21kYykoKQkgICAtIFdyaXRlIHRoZSBNREMgcGluCiAgICBpbnQgKCpkZWxheSkoKQkgICAtIERlbGF5IGZ1bmN0aW9uCiAgICB2b2lkICpwcml2CQkgICAtIFByaXZhdGUgZGF0YSB1c2VkIGJ5IGJvYXJkIHNwZWNpZmljIGNvZGUKCiAgICBUaGUgYm9hcmQgY29kZSB3aWxsIGxvb2sgbGlrZToKCiAgICBzdHJ1Y3QgYmJfbWlpcGh5X2J1cyBiYl9taWlwaHlfYnVzZXNbXSA9IHsKICAgICB7IC5uYW1lID0gbWlpYnVzIzEsIC5pbml0ID0gYjFfaW5pdCwgLm1kaW9fYWN0aXZlID0gYjFfbWRpb19hY3RpdmUsIC4uLiB9LAogICAgIHsgLm5hbWUgPSBtaWlidXMjMiwgLmluaXQgPSBiMl9pbml0LCAubWRpb19hY3RpdmUgPSBiMl9tZGlvX2FjdGl2ZSwgLi4uIH0sCiAgICAgLi4uCiAgICBpbnQgYmJfbWlpcGh5X2J1c2VzX251bSA9IHNpemVvZihiYl9taWlwaHlfYnVzZXMpIC8KCQkJICAgICAgc2l6ZW9mKGJiX21paXBoeV9idXNlc1swXSk7CgogICAgU2lnbmVkLW9mZi1ieTogTHVpZ2kgJ0NvbWlvJyBNYW50ZWxsaW5pIDxsdWlnaS5tYW50ZWxsaW5pQGlkZi1oaXQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBlZmFmNmYxYmY2ZWJkZDhmMTZiMGQwYzI5NjBhYmU4ZDA2Zjk1YWY0CkF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CkRhdGU6CUZyaSBPY3QgMiAxODo1NDoyMCAyMDA5IC0wNDAwCgogICAgbXBjODN4eDogY29zbWV0aWMgY29tbWVudCB1cGRhdGUgcmVsYXRpbmcgdG8gU1BEIEVFUFJPTQoKICAgIGNvbW1pdCA2ZDBmNmJjZjMzN2M1MjYxYzA4ZmFiZTEyOTgyMTc4YzJjNDg5ZDc2IGRpZCB0aGUgYmlnCiAgICByZW5hbWUgb2YgQ0ZHXyBtYWNyb3MgdG8gQ09ORklHX1NZUyBtYWNyb3MuICBCdXQgaXQgbWlzc2VkCiAgICBhIGNvdXBsZSBvZiBpbnN0YW5jZXMgd2l0aGluIGNvbW1lbnRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhZmMzYmEwZmM0MTk1NjI0ZTc5ZTIxMjQ0MzgwZWQ3Y2MyZmQ2OTY5CkF1dGhvcjogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+CkRhdGU6CVRodSBPY3QgOCAwMjowMzo1MSAyMDA5ICswMjAwCgogICAgcmVsb2NhdGlvbjogRG8gbm90IHJlbG9jYXRlIE5VTEwgcG9pbnRlcnMuCgogICAgTlVMTCBpcyBhbiBhYnNvbHV0ZSB2YWx1ZSBhbmQgc2hvdWxkIG5vdCBiZSByZWxvY2F0ZWQuCiAgICBBZnRlciB0aGlzIGNvcnJlY3Rpb24gY29kZSBsaWtlOgogICAgIHZvaWQgd2Vha19mdW4odm9pZCkgX19hdHRyaWJ1dGVfXygod2VhaykpOwogICAgIHByaW50Zigid2Vha19mdW46JXBcbiIsIHdlYWtfZnVuKTsKICAgIHdpbGwgc3RpbGwgcHJpbnQgbnVsbCBhZnRlciByZWxvY2F0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgoKY29tbWl0IDNiZWI0MGMyNDczZjBkZDM3MzIzMWM3MjNkODhjNTFlNDZhZDk2ZjcKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglXZWQgT2N0IDcgMTE6NDU6MDAgMjAwOSAtMDUwMAoKICAgIDg1eHg6IEVuc3VyZSBCU1Mgc2VnbWVudCBpc24ndCBsaW5rZWQgYXQgYWRkcmVzcyAwCgogICAgV2hlbiBVLUJvb3QgaXMgcmVsb2NhdGVkIGZyb20gZmxhc2ggdG8gUkFNIHBvaW50ZXJzIGFyZSBtb2RpZmllZAogICAgYWNjb3JkaW5nbHkuICBIb3dldmVyLCBwb2ludGVycyBpbml0aWFsemVkIHdpdGggTlVMTCB2YWx1ZXMgc2hvdWxkIG5vdAogICAgYmUgbW9kaWZpZWQgc28gdGhhdCB0aGV5IG1haW50YWluIHRoZWlyIGludGVuZGVkIE5VTEwgdmFsdWUuICBJZiB0aGUKICAgIEJTUyBzZWdtZW50IGlzIGxpbmtlZCBhdCBhZGRyZXNzIDAgaXRzIGFkZHJlc3Mgd2lsbCBub3QgYmUKICAgIHVwZGF0ZWQgYXMgbmVjZXNzYXJ5IGR1cmluZyByZWxvY2F0aW9uLgoKICAgIFRoaXMgaXMgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZC4gIFRoZSBlbmQgZ29hbCBpcyB0byBhZGQgc3VwcG9ydCB0bwogICAgVS1Cb290IHRvIGR5bmFtaWNhbGx5IGxvY2F0ZSB0aGUgQlNTIGF0IGFuIGFyYml0cmFyeSBhZGRyZXNzIGF0CiAgICBydW50aW1lLiAgV2hlbiB0aGUgYWJpbGl0eSB0byBmaXh1cCB0aGUgQlNTIGludGVsaWdlbnRseSBpcwogICAgYWRkZWQsIHRoaXMgd29ya2Fyb3VuZCBjYW4gYmUgcmVtb3ZlZCBhbmQgdGhlIDg1eHggbGluayBzY3JpcHQKICAgIGNhbiBwdXQgdGhlIEJTUyBhdCBhIGZpeGVkIGFkZHJlc3MgYXQgbGluayB0aW1lLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgOTVjNDRlYzQ4NWI0NmZmYjQzZGJkYWEyOTlmMTQ5MWE1MDBmZGFkZgpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglXZWQgT2N0IDcgMTY6Mzg6MDUgMjAwOSArMDIwMAoKICAgIHRxbTUyMDA6IENvcnJlY3QgY29tbWVudCBhbmQgY29kZSBpbiBwb3N0X2hvdGtleXNfcHJlc3NlZC4KCiAgICBUaGlzIGZpeGVzIHRoZSBjb2RlIGFuZCB0aGUgY29tbWVudCBhY2NvcmRpbmcgdG8gdGhlIG9yaWdpbmFsIGludGVudCBvZgogICAgZG9pbmcgYW4gaW50ZW5zaXZlIG1lbW9yeSB0ZXN0IHdoZW4gUFNDNl8zIGlzIHB1bGxlZCBsb3cgb24gdGhlIFNUSzUyeHguCiAgICBOb3RhYmx5IFBPUlRfQ09ORklHIHdpbGwgYmUgb3ZlcnJpZGRlbiB3aXRoIHRoaXMgY29ycmVjdCBjb2RlIG5vdywKICAgIHNvIGJld2FyZS4KCiAgICBUaGUgb3JpZ2luYWwgY29kZSBvbmx5IHdvcmtlZCBieSBjb2luY2lkZW5jZSBkZXBlbmRpbmcgb24gdGhlIFBPUlRfQ09ORklHCiAgICBzZXR0aW5nIGZyb20gdGhlIGhlYWRlciBmaWxlLiAgVGhlIG5ldyBjb2RlIHdhcyB0ZXN0ZWQgdG8gZW5zdXJlIHRoYXQgdGhlCiAgICAodW5kb2N1bWVudGVkKSBtZW1vcnkgdGVzdCBzdGlsbCB3b3JrcyBvbiB0aGUgU1RLNTJ4LgoKICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgogICAgQ0M6IE1hcnRpbiBLcmF1c2UgPE1hcnRpbi5LcmF1c2VAdHFzLmRlPgoKICAgIE1pbm9yIHdoaXRlLXNwYWNlIGNsZWFudXAuCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGRhMDFmNTM0MDRmOTlkYjE4NWQxOTY4NjdhZjc5MzcxNzI1ZDQ2ODMKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gT2N0IDQgMjI6NTY6MDggMjAwOSArMDIwMAoKICAgIG1wYzUxMng6IGZpeCBmaXhlZF9zZHJhbSgpIGluaXQgY29kZS4KCiAgICBDb21taXQgMDU0MTk3YmEgYW5kIGxhdGVyIGZpeGVzIHVzZWQgYW4gYXJyYXkgdG8gaW5pdGlhbGl6ZSBzb21lIG9mCiAgICB0aGUgTUREUkMgcGFyYW1ldGVyczsgaG93ZXZlciwgdGhlIHVzZSBvZiBhbiBhcnJheSB0dXJuZWQgb3V0IHRvIGJlIGEKICAgIGJhZCBpZGVhIGFzIGl0IHdhcyBub3QgcG9zc2libGUgdG8gY29ycmVsYXRlIHN0cnVjdHVyZSBlbnRyaWVzIHRvCiAgICBhcnJheSBpbmRpY2VzIGluIHJlYWRhYmxlIGFuZCByZWxpYWJsZSB3YXkuIE5vdyB3ZSB1c2UgYSBzdHJ1Y3QKICAgIGluc3RlYWQsIHdoaWNoIG1ha2VzIHRoaXMgc2VsZi1leHBsYW5hdG9yeS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGRiY2MzNTcxNjZiZWQyMGRmMTM0NTBlOTNhNTAxZjMwYjE5N2VmZDEKQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG1lbWJlci5mc2Yub3JnPgpEYXRlOglTdW4gT2N0IDQgMjA6MDQ6MjIgMjAwOSArMDIwMAoKICAgIHBwYzR4eDogcmVzcGVjdCA4MC1jaGFycyBwZXIgbGluZSBpbiBwcGMqLmggZmlsZXMKCiAgICBBZnRlciBydW5uaW5nIGNoZWNrc3R5bGUucGwgb24gdGhlIHRocmVlIHByZXZpb3VzIHBhdGNoZXMgSSBub3RlZCB0aGF0IGluCiAgICB0aGUgKi5oIGZpbGVzIHRoZXJlIHdlcmUgYSBsb3Qgb2YgbG9uZyBsaW5lcy4gVGhpcyBwYXRjaCBzb2x2ZXMgdGhpcyBwcm9ibGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbWVtYmVyLmZzZi5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNzhkMmE2NDEzNzFlYzcxY2MzNzg2YjE2N2EzMThjN2IxMTVmYmI5MApBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbWVtYmVyLmZzZi5vcmc+CkRhdGU6CVN1biBPY3QgNCAyMDowNDoyMSAyMDA5ICswMjAwCgogICAgcHBjNHh4OiBSZXdvcmsgY21kIHJlZ2luZm8KCiAgICBUaGUgY29tbWFuZCAicmVnaW5mbyIgZ290IGFuIG92ZXJoYXVsIGZvciB0aGUgcHBjNHh4LiBJdCBkdW1wcyBhbGwgdGhlCiAgICByZWxldmFudCBIVyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyAoYWRkcmVzcywgc3ltYm9saWMgbmFtZSwgY29udGVudCkuCiAgICBUaGlzIGFsbG93cyB0byBlYXNpbHkgZGV0ZWN0IGVycm9ycyBpbiAqLmggZmlsZXMgYW5kIGNoYW5nZXMgaW4gdGhlIEhXCiAgICBjb25maWd1cmF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbWVtYmVyLmZzZi5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZGRjOTIyZmYyYzIwYWUwYjdmOWNlMmRmMWFjMjgxNDNlMmYzMjViZApBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbWVtYmVyLmZzZi5vcmc+CkRhdGU6CVN1biBPY3QgNCAyMDowNDoyMCAyMDA5ICswMjAwCgogICAgcHBjXzR4eDogQXBwbHkgbmV3IEhXIHJlZ2lzdGVyIG5hbWVzCgogICAgTW9kaWZ5IGFsbCBleGlzdGluZyAqLmMgZmlsZXMgdG8gdXNlIHRoZSBuZXcgcmVnaXN0ZXIgbmFtZXMKICAgIGFzIHNlZW4gaW4gdGhlIEFNQ0MgbWFudWFscy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG1lbWJlci5mc2Yub3JnPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGY4MGU2MWRjZmU1M2ZhM2E1OTM2NjU5ODgzNDE1YzliZDFiNWEzZDkKQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG1lbWJlci5mc2Yub3JnPgpEYXRlOglTdW4gT2N0IDQgMjA6MDQ6MTkgMjAwOSArMDIwMAoKICAgIHBwYzR4eDogQ2xlYW51cCBzb21lIEhXIHJlZ2lzdGVyIG5hbWVzCgogICAgSGVyZSB5b3UgZmluZCBhbGwgdGhlIGNoYW5nZXMgaW4gdGhlIGluY2x1ZGUgZGlyZWN0b3J5IGZvciBuZXcgcmVnaXN0ZXIgbmFtZXMKICAgIGFuZCBhZGFwdGluZyBvdGhlciBvbmVzIHRvIHRoZSBuYW1lcyB1c2VkIGJ5IEFNQ0MgaW4gdGhlaXIgbWFudWFscywgZS5nLgogICAgRm9yIDQ0MEVQeC9HUlBQQzQ0MEVQeC9HUlgsIFJldmlzaW9uIDEuMTUg4oCTIFNlcHRlbWJlciAyMiwgMjAwOAogICAgRm9yIFBQQzQwNUdQIEVtYmVkZGVkIFByb2Nlc3NvciwgUmV2aXNpb24gMS4wMiDigJMgTWFyY2ggMjIsIDIwMDYKCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG1lbWJlci5mc2Yub3JnPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDU2ZjE0ODE4ZjY2YzY4YThiOWU0NTkyNWYyOWNlYjk3NDQwNWFkNDgKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBPY3QgNiAwNzoyMTowOCAyMDA5ICswMjAwCgogICAgcHBjNHh4OiBBZGQgUFBDNDA1RVgocikgUmV2IEQgc3VwcG9ydAoKICAgIFVuZm9ydHVuYXRlbHkgc29tZSBSZXYgRCBQUEM0MDVFWC80MDVFWHIgUFZSJ3MgYXJlIGlkZW50aWNhbCB3aXRoIG9sZGVyCiAgICA0MDVFWChyKSBwYXJ0cy4gSGVyZSBhIGxpc3Q6CgogICAgMHgxMjkxMTQ3NSAtIDQwNUVYIFJldiBEIHdpdGggU2VjdXJpdHkgKmFuZCogNDA1RVggUmV2IEEvQiB3aXRvdXQgU2VjCiAgICAweDEyOTExNDczIC0gNDA1RVggUmV2IEQgd2l0aG91dCBTZWN1cml0eSAqYW5kKiA0MDVFWHIgUmV2IEEvQiB3aXRoIFNlYwoKICAgIFNpbmNlIHRoZXJlIGFyZSBvbmx5IGEgZmV3IG9sZGVyIHBhcnRzIGluIHRoZSBmaWVsZCwgdGhpcyBwYXRjaCBub3cKICAgIGNoYW5nZXMgdGhlIFBWUidzIGFib3ZlIHRvIHJlcHJlc2VudCB0aGUgbmV3IFJldiBEIHZlcnNpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIENjOiBQaG9uZyBWbyIgPHB2b0BhbWNjLmNvbT4KCmNvbW1pdCAwNmRmYWVlZjUyYTVmNzczYWU0MjkyNDMyZTNjNzRmZjUyZWFkMzE2CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgT2N0IDIgMTQ6MzU6MTYgMjAwOSArMDIwMAoKICAgIHBwYzR4eDogRml4IG1zZyAiaW5pdGlhbGl6YXRpb24gYXMgcm9vdC1jb21wbGV4IGZhaWxlZCIgdXBvbiBQQ0llIHNjYW4KCiAgICBUaGlzIG1lc3NhZ2UgaXMgcHJpbnRlZCB1cG9uIFBDSWUgYnVzIHNjYW4sIG5vdCBvbmx5IHVwb24gZXJyb3IsIGJ1dCBhbHNvCiAgICBpZiBubyBQQ0llIGRldmljZSBpcyBkZXRlY3RlZCBhdCBhbGwuIFNpbmNlIHRoaXMgaXMgbm90IGFuIGVycm9yLCBsZXQncwogICAgcmVtb3ZlIHRoaXMgbWVzc2FnZSBpbiB0aGlzIGNhc2UuIFdlIGFscmVhZHkgaGF2ZSB0aGUgbWVzc2FnZQogICAgImxpbmsgaXMgbm90IHVwLiIgaWYgdGhlcmUgaXMgbm8gUENJZSBkZXZpY2UgcHJlc2VudC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBBY2tlZC1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1NGY1ZjA1NmFhMWRhYTNlMzliYWQxYzVjM2ZiNDNhNzJjZGI5ZTg0CkF1dGhvcjogTWlrZSBOdXNzIDxtaWtlQHRlcmFzY2FsYS5jb20+CkRhdGU6CU1vbiBPY3QgNSAxMjozMzoyOCAyMDA5IC0wNDAwCgogICAgUFBDNHh4OiBEZW5hbGkgY29yZTogRml4IGluY29ycmVjdCBERFIgcm93IGJpdHMKCiAgICBUaGUgU1BEIGRldGVjdGlvbiBjb2RlIGZvciB0aGUgRGVuYWxpIG1lbW9yeSBjb250cm9sbGVyIHVzZWQgb24gc29tZQogICAgcHBjNHh4CiAgICBwcm9jZXNzb3JzIGluY29ycmVjdGx5IGVuY29kZXMgRERSMF80Mi4gV2l0aCBjZXJ0YWluIG1lbW9yeQogICAgY29uZmlndXJhdGlvbnMsCiAgICB0aGlzIGNhbiBjYXVzZSB0aGUgYm9vdHdyYXBwZXIgdG8gaW5jb3JyZWN0bHkgY2FsY3VsYXRlIHRoZSBpbnN0YWxsZWQKICAgIG1lbW9yeQogICAgc2l6ZSwgYmVjYXVzZSB0aGUgbnVtYmVyIG9mIHJvdyBiaXRzIGlzIHdyb25nLiBUaGlzIHBhdGNoIGZpeGVzIHRoYXQKICAgIGVuY29kaW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgTnVzcyA8bWlrZUB0ZXJhc2NhbGEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDk5ZGJkNGVmZDZkNWVjYzM3ZDdlOGYyOGIyMGQ5YmU4YzgzMDU1YzcKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglNb24gT2N0IDUgMDA6MDI6NTEgMjAwOSAtMDcwMAoKICAgIEFkZCBpbmZvcm1hdGlvbiBhYm91dCByZXR1cm4gdmFsdWVzIG9mIHh4eF9ldGhfcmVnaXN0ZXIoKSBpbiBkb2N1bWVudGF0aW9uCgogICAgQXMgZGlzY3Vzc2VkIG9uIG1haWxpbmcgbGlzdCwgPDAgaW5kaWNhdGVzIGZhaWx1cmUsID49MCBpbmRpY2F0ZXMgbnVtYmVyCiAgICBvZiBpbnRlcmZhY2VzIGZvdW5kLgoKICAgIEFsc28gYWRkZWQgYmx1cmIgYWJvdXQgcHJpdmF0ZSBkYXRhCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAxZjFlNzc0ZWM2MjQyZDRlYTM0ZTVjZmY1NzIzMmRlYjViYjU4N2UwCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglXZWQgU2VwIDkgMTQ6NDE6MjIgMjAwOSAtMDQwMAoKICAgIGRvY3VtZW50IG5ldHdvcmsgZHJpdmVyIGZyYW1ld29yawoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIEFja2VkLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBhYmE4MjM3MjU3ZGQxNWIwZTc2Y2M1MTdmMGU3NDFjMDkwOGVlMGI5CkF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgpEYXRlOglXZWQgU2VwIDkgMTU6NTk6MTkgMjAwOSArMDUzMAoKICAgIG5ldDoga2lya3dvb2RfZWdpZ2EuYzogZml4ZWQgYnVpbGQgd2FybmluZwoKICAgIGlmIGxpbmsgdXAgZGV0ZWN0aW9uIGNvZGUgaXMgZGlzYWJsZWQgdGhyb3VnaCBjb25maWcgb3B0aW9uLCBpdCBnaXZlcyBidWlsZCB3YXJuaW5nLgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgc2FtZQoKICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNzE5NGFiODA5NTMyZWVjYTNlMmVlNWRjMTIwMTdjYjkwMWNjNTg0MgpBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVN1biBPY3QgNCAyMjozNzowMyAyMDA5IC0wNzAwCgogICAgQ29udmVydCBTTUM5MTExMSBFdGhlcm5ldCBkcml2ZXIgdG8gQ09ORklHX05FVF9NVUxUSSBBUEkKCiAgICBBbGwgaW4tdHJlZSBib2FyZHMgdGhhdCB1c2UgdGhpcyBjb250cm9sbGVyIGhhdmUgQ09ORklHX05FVF9NVUxUSQogICAgYWRkZWQKICAgIEFsc286CiAgICAgIC0gY2hhbmdlZCBDT05GSUdfRFJJVkVSX1NNQzkxMTExIHRvIENPTkZJR19TTUM5MTExMQogICAgICAtIGNsZWFuZWQgdXAgbGluZSBsZW5ndGhzCiAgICAgIC0gbW9kaWZpZWQgYWxsIGJvYXJkcyB0aGF0IG92ZXJyaWRlIHdlYWsgZnVuY3Rpb24gaW4gdGhpcyBkcml2ZXIKICAgICAgLSBtb2RpZmllZCBhbGwgZWVwcm9tIHN0YW5kYWxvbmUgYXBwcyB0byB3b3JrIHdpdGggbmV3IGRyaXZlcgogICAgICAtIHVwZGF0ZWQgYmxhY2tmaW4gc3RhbmRhbG9uZSBFRVBST00gYXBwIGFmdGVyIHRlc3RpbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDMyZTdmMjM5ZGRhODYzODM3N2VkYjBkM2U3YWMyNjljYWJiYWZiZTYKQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+CkRhdGU6CU1vbiBTZXAgMjEgMjA6Mjg6MTggMjAwOSArMDUzMAoKICAgIG5ldDogcGh5OiBtdjg4ZTYxeHguYyA6IGZpeGVkIGJ1aWxkIHdhcm5pbmcKCiAgICBmb2xsb3dpbmcgYnVpbGQgd2FybmluZyB3YXMgb2JzZXJ2ZWQKCiAgICBtdjg4ZTYxeHguYzogSW4gZnVuY3Rpb24g4oCYbXY4OGU2MXh4X2J1c3ljaGvigJk6CiAgICBtdjg4ZTYxeHguYzoyMDg6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIHNhbWUKICAgIFBhdGNoIHRlc3RlZCBmb3IgcmQ2MjgxYSBib2FyZCBidWlsZAoKICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYzBiNDZkOGVhZDNjNmM1YjU2OWM4MzU0NGZkNzFiOWQ3MzM1Njg2OQpBdXRob3I6IEphbWVzIENsb3VnaCA8amFtZXNAcnRldGMuY29tPgpEYXRlOglUaHUgU2VwIDEwIDA5OjExOjUwIDIwMDkgKzAyMDAKCiAgICBuZXQ6IEZpeCBwcm9ibGVtIHdpdGggNDA1RVogZXRoZXJuZXQgaW50ZXJydXB0CgogICAgT24gNDA1RVogdGhlIFJYLS9UWC1pbnRlcnJ1cHRzIGFyZSBjb2FsZXNjZWQgaW50byBvbmUgSVJRIGJpdCBpbiB0aGUKICAgIFVJQy4gV2UgbmVlZCB0byBhY2tub3dsZWRnZSB0aGUgUlgtL1RYLWludGVycnVwdHMgaW4gdGhlCiAgICBTRFIwX0lDSU5UU1RBVCByZWcgYXMgd2VsbC4KCiAgICBUaGlzIHByb2JsZW0gd2FzIGludHJvZHVjZWQgd2l0aCBjb21taXQKICAgIGQxNjMxZmUxIFtwcGM0eHg6IENvbnNvbGlkYXRlIFBQQzR4eCBVSUMgZGVmaW5lc10KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYW1lcyBDbG91Z2ggPGphbWVzQHJ0ZXRjLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgOTFiNDY5Yzk1ZmFmOTI0MzVlM2Q1ZDc4MjkyYmE3ODA3NWEzYzVjYQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIFNlcCAyIDA0OjE4OjU1IDIwMDkgLTA0MDAKCiAgICBuZXQ6IGFkZCByYW5kb21fcG9ydCgpIHByb3RvdHlwZQoKICAgIFRoZSByYW5kb21fcG9ydCgpIGlzIG1lYW50IHRvIGJlIHVzZWQgYnkgb3RoZXIgbmV0IGNvZGUsIGJ1dCB3aXRob3V0IGEKICAgIHByb3RvdHlwZSwgd2UgZ2V0IGZ1biB3YXJuaW5ncyBsaWtlOgogICAgZG5zLmM6IEluIGZ1bmN0aW9uICdEbnNTZW5kJzoKICAgIGRucy5jOjg5OiB3YXJuaW5nOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAncmFuZG9tX3BvcnQnCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAzNDY5NDI0Y2I2ZDkzOWM3YWVkZjFlMGVmZGVjNDRhNzk3YzBhMThjCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJTW9uIFNlcCAyMSAxMToyMDozNyAyMDA5IC0wNTAwCgogICAgcHBjOiBSZW1vdmUgcmVsb2Nfb2ZmIGZpZWxkIGZyb20gZ2xvYmFsX2RhdGEgc3RydWN0dXJlCgogICAgTm93IHRoYXQgcHJvcGVyIHJlbG9jYXRpb24gaXMgc3VwcG9ydGVkLCB0aGUgcmVsb2Nfb2ZmIGZpZWxkIGlzIG5vIGxvbmdlcgogICAgbmVjZXNzYXJ5LgoKICAgIE5vdGUgdGhhdCB0aGUgbG9jYXRpb24gb2YgdGhlIHN0YW5kYWxvbmUgYXBwbGljYXRpb24ganVtcCB0YWJsZSBwb2ludGVyCiAgICBpbiB0aGUgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGlzIGFmZmVjdGVkIGJ5IHRoaXMgY2hhbmdlLCBicmVha2luZwogICAgZXhlY3V0aW9uIG9mIHN0YW5kYWxvbmUgYXBwbGljYXRpb25zIGNvbXBpbGVkIGZvciBwcmV2aW91cyB2ZXJzaW9ucyBvZgogICAgVS1Cb290LgoKICAgIFdlIHRoZXJlZm9yZSBpbmNyZW1lbnQgWEZfVkVSU0lPTiB0byA2CgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMDYzMDUzNWUyZDA2MmRkNzNjMWNlY2E1YzYxMjVjODZkMTEyN2E0OQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVR1ZSBTZXAgMjIgMDk6Mjc6NTUgMjAwOSAtMDUwMAoKICAgIGFybS9taWNyb2JsYXplL25pb3MvbmlvczIvc2g6IFJlbW92ZSByZWxvY2F0aW9uIGZpeHVwcwoKICAgIFRoZXNlIGFyY2hpdGVjdHVyZXMgZG9uJ3QgbmVlZCByZWxvY2F0aW9uIGZpeHVwcywgc28gcmVkdWNlIHRoZWlyCiAgICBjb2Rlc2l6ZSBhIGJpdCBieSBkZWZpbmluZyBDT05GSUdfUkVMT0NfRklYVVBfV09SS1MuCgogICAgQWxzbyByZW1vdmUgdGhlIHJlbG9jX29mZiBmaWVsZCBmcm9tIHRoZWlyIGdsb2JhbCBkYXRhIHN0cnVjdHVyZXMKICAgIGFzIGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuCgogICAgTm90ZSB0aGF0IHRoZSBsb2NhdGlvbiBvZiB0aGUgc3RhbmRhbG9uZSBhcHBsaWNhdGlvbiBqdW1wIHRhYmxlIHBvaW50ZXIKICAgIGluIHRoZSBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgaXMgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UsIGJyZWFraW5nCiAgICBleGVjdXRpb24gb2Ygc3RhbmRhbG9uZSBhcHBsaWNhdGlvbnMgY29tcGlsZWQgZm9yIHByZXZpb3VzIHZlcnNpb25zIG9mCiAgICBVLUJvb3QuIFdlIHdpbGwgdGhlcmVmb3JlIGluY3JlbWVudCBYRl9WRVJTSU9OIGluIHRoZSBuZXh0IGNvbW1pdCwKICAgIHdoaWNoIGFsc28gdG91Y2hlcyB0aGlzIGFyZWEuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNTIxYWYwNGQ4NTMzNjFiNDkzNDRiNjE4OTJlYjA2MThmOWY3MTNjNQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBTZXAgMjEgMTE6MjA6MzYgMjAwOSAtMDUwMAoKICAgIENvbmRpdGlvbmFsbHkgcGVyZm9ybSBjb21tb24gcmVsb2NhdGlvbiBmaXh1cHMKCiAgICBBZGQgI2lmZGVmcyB3aGVyZSBuZWNlc3NhcnkgdG8gbm90IHBlcmZvcm0gcmVsb2NhdGlvbiBmaXh1cHMuICBUaGlzCiAgICBhbGxvd3MgYm9hcmRzL2FyY2hpdGVjdHVyZXMgd2hpY2ggc3VwcG9ydCByZWxvY2F0aW9uIHRvIHRyaW0gYSBkZWNlbnQKICAgIGNodW5rIG9mIGNvZGUuCgogICAgTm90ZSB0aGF0IHRoaXMgcGF0Y2ggZG9lc24ndCBhZGQgI2lmZGVmcyB0byBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZQogICAgd2hpY2ggZG9lcyBub3Qgc3VwcG9ydCByZWxvY2F0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgM2NiY2ZhNzBiMTE2ZGYxYmJkYzkwYmEzMWM2MWFkY2FlYzA1OGE4YQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBTZXAgMjEgMTE6MjA6MzUgMjAwOSAtMDUwMAoKICAgIHAzbXg6IFJlbW92ZSBzZXJpYWwgcmVsb2NhdGlvbiBmaXh1cHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDgwZjczYjkyYTE5MTI5ODU0ODc2ZWMzZjFhZWY1MzFhMDllODZkMmQKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglNb24gU2VwIDIxIDExOjIwOjM0IDIwMDkgLTA1MDAKCiAgICBsd21vbiwgbHdtb241OiBSZW1vdmUgc3lzbW9uIFBPU1QgcmVsb2NhdGlvbiBmaXh1cHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDMzMWFiNjBjNGE0MThjMzllNWIxYTA1ZDQ2NDhhNDE1NWQwYWQxM2UKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglNb24gU2VwIDIxIDExOjIwOjMzIDIwMDkgLTA1MDAKCiAgICBtcGw6IFJlbW92ZSBtZW1vcnkgdGVzdCByZWxvY2F0aW9uIGZpeHVwcwoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgNjM4NWIyODExNmY3NzVkYTQ3NzFiNzY4YmE5YmY5M2MzYWFhZjI2ZQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBTZXAgMjEgMTE6MjA6MzIgMjAwOSAtMDUwMAoKICAgIGZwZ2E6IFJlbW92ZSByZWxvY2F0aW9uIGZpeHVwcwoKICAgIFBQQyBib2FyZHMgYXJlIHRoZSBvbmx5IHVzZXJzIG9mIHRoZSBjdXJyZW50IEZQR0EgY29kZSB3aGljaCBpcyBsaXR0ZXJlZAogICAgd2l0aCBtYW51YWwgcmVsb2NhdGlvbiBmaXh1cHMuICBOb3cgdGhhdCBwcm9wZXIgcmVsb2NhdGlvbiBpcyBzdXBwb3J0ZWQKICAgIGZvciBQUEMgYm9hcmRzLCByZW1vdmUgRlBHQSBtYW51YWwgcmVsb2NhdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IGNkMTAxMWRiODAyODdlZWY5MzNkMTU5OWI3NGNmZjExMTZjOTMxMzQKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglNb24gU2VwIDIxIDExOjIwOjMxIDIwMDkgLTA1MDAKCiAgICB0c2VjOiBSZW1vdmUgUEhZIGNvbW1hbmQgcmVsb2NhdGlvbiBmaXh1cHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IGI1NjUwYzVkOGM5OTEwMDE0NGQ4ZTRlOWFmOTEwNDA1Zjg1N2JiN2EKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglNb24gU2VwIDIxIDExOjIwOjMwIDIwMDkgLTA1MDAKCiAgICBwcGM6IFJlbW92ZSBib2FyZC1zcGVjaWZpYyBjb21tYW5kIHRhYmxlIHJlbG9jYXRpb24gZml4dXBzCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCBlNmIwNWU3NzRkN2NlMTY0MTYxM2NkZWZmYjY5YzFkNDgxMzlhODY5CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJTW9uIFNlcCAyMSAxMToyMDoyOSAyMDA5IC0wNTAwCgogICAgcHBjOiBSZW1vdmUgZXh0YWJsZSByZWxvY2F0aW9uIGZpeHVwcwoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgYjMyYTg5NDAxMWIxNDM2NzU4OTA1ZmExMGU2YTAzYjg1MzljNDNjOQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBTZXAgMjEgMTE6MjA6MjggMjAwOSAtMDUwMAoKICAgIHBwYzogUmVtb3ZlIHBjaSBjb25maWcgdGFibGUgcG9pbnRlciByZWxvY2F0aW9uIGZpeHVwcwoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgYTBlMjA2NmYzOTI3ODI3MzBmMDM5ODA5NWU1ODNjODc4MTJkOTdmMgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBTZXAgMjEgMTE6MjA6MjcgMjAwOSAtMDUwMAoKICAgIHBwYzogUmVtb3ZlIGJvYXJkLmMgcmVsb2NhdGlvbiBmaXh1cHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDI0NDYxNTE5NzQ2OWRkNmZlNzVhZTA4MmYzODQyNGI5N2M3OWFlYWYKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglNb24gU2VwIDIxIDExOjIwOjI2IDIwMDkgLTA1MDAKCiAgICBwcGM6IENoZWNrIGZvciBjb21waWxlcnMgdGhhdCBkb24ndCBzdXBwb3J0IHJlbG9jYXRpb24KCiAgICBDZXJ0YWluIHBwYyBjb21waWxlcnMgYXJlIGtub3duIG5vdCB0byBnZW5lcmF0ZSB0aGUgLmZpeHVwIHNlY3Rpb24KICAgIHByb3Blcmx5LiAgVGhlIC5maXh1cCBzZWN0aW9uIGlzIG5lY2Vzc2FyeSB0byBjcmVhdGUgYSByZWxvY2F0YWJsZQogICAgVS1Cb290IGltYWdlLiAgQSBiYXNpYyBjaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgLmZpeHVwIHNlY3Rpb24KICAgIHNob3VsZCBob3BlZnVsbHkgY2F0Y2ggdGhlIG1ham9yaXR5IG9mIGJyb2tlbiBjb21waWxlcnMgd2hpY2ggZG9uJ3QKICAgIHN1cHBvcnQgcmVsb2NhdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDg1ODI5MDE3OGYyMjJkOTk4YjY0MjVkODVjZjA2ODIyNDY3OTE4ZjMKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglNb24gU2VwIDIxIDExOjIwOjI1IDIwMDkgLTA1MDAKCiAgICBwcGM6IEVuYWJsZSBmdWxsIHJlbG9jYXRpb24gdG8gUkFNCgogICAgVGhlIGZvbGxvd2luZyBjaGFuZ2VzIGFsbG93IFUtQm9vdCB0byBmdWxseSByZWxvY2F0ZSBmcm9tIGZsYXNoIHRvCiAgICBSQU06CiAgICAgLSBSZW1vdmUgbGlua2VyIHNjcmlwdHMnIC5maXh1cCBzZWN0aW9ucyBmcm9tIHRoZSAudGV4dCBzZWN0aW9uCiAgICAgLSBBZGQgLW1yZWxvY2F0YWJsZSB0byBQTEFURk9STV9SRUxGTEFHUyBmb3IgYWxsIGJvYXJkcwogICAgIC0gRGVmaW5lIENPTkZJR19SRUxPQ19GSVhVUF9XT1JLUyBmb3IgYWxsIGJvYXJkcwoKICAgIFByZXZpb3VzbHksIFUtQm9vdCB3b3VsZCBwYXJ0aWFsbHkgcmVsb2NhdGUsIGJ1dCBzdGF0aWNhbGx5IGluaXRpYWxpemVkCiAgICBwb2ludGVycyBuZWVkZWQgdG8gYmUgbWFudWFsbHkgcmVsb2NhdGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgM2I0YmQyZDc1YzRiM2MxYTQ1NzBmNDdmZmFhZWQ2NmY1NmE3OGZmNApBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+CkRhdGU6CVdlZCBTZXAgMzAgMTE6NTU6MDQgMjAwOSArMDIwMAoKICAgIHBwYzR4eDogQWRkIFNEUkFNIGRldGVjdGlvbiBmb3IgUE1DNDQwIGJvYXJkcwoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IHRvIGRldGVjdCB0aGUgYW1vdW50IG9mIEREUjIgU0RSQU0KICAgIG9uIFBNQzQ0MCBtb2R1bGVzLiBEZXRlY3Rpb24gaXMgZG9uZSBieSBwcm9iaW5nIHRocm91Z2gKICAgIGEgbGlzdCBvZiBhdmFpbGFibGUgYW5kIHN1cHBvcnRlZCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucwogICAgZnJvbSAxR0J5dGUgZG93biB0byAyNTZNQi4KCiAgICBUaGUgc3RhdGljIFRMQiBlbnRyeSBpcyByZXBsYWNlZCBieSBkeW5hbWljYWxseSBjcmVhdGVkIGVudHJpZXMuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmYjk1MTY5ZTM5ZjJkMDMyNzBiZWQ1NTJkMjdiYmIwMjYyN2E0NDNlCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gU2VwIDI4IDE3OjMzOjQ1IDIwMDkgKzAyMDAKCiAgICBwcGM0eHg6IE1lcmdlIFBQQzR4eCBERFIgYW5kIEREUjIgRUNDIGhhbmRsaW5nCgogICAgVGhpcyBwYXRjaCBtZXJnZXMgdGhlIEVDQyBoYW5kbGluZyAoRUNDIHBhcml0eSBieXRlIHdyaXRpbmcpIGludG8gb25lCiAgICBmaWxlIChlY2MuYykgZm9yIGFsbCBQUEM0eHggU0RSQU0gY29udHJvbGxlcnMgZXhjZXB0IGZvciBQUEM0NDBFUHgvR1J4LgogICAgVGhpcyBleGNlcHRpb24gaXMgYmVjYXVzZSBvbmx5IHRob3NlIFBQQydzIHVzZSB0aGUgY29tcGxldGVseSBkaWZmZXJlbnQKICAgIERlbmFsaSBTRFJBTSBjb250cm9sbGVyIGNvcmUuCgogICAgUHJldmlvdXNseSB3ZSBoYWQgdHdvIHJvdXRpbmVzIHRvIGdlbmVyYXRlL3dyaXRlIHRoZSBFQ0MgcGFyaXR5IGJ5dGVzLgogICAgV2l0aCB0aGlzIHBhdGNoIHdlIG5vdyBvbmx5IGhhdmUgb25lIGNvcmUgZnVuY3Rpb24gbGVmdC4KCiAgICBUZXN0ZWQgb24gS2lsYXVlYSAobm8gRUNDKSBhbmQgS2F0bWFpICh3aXRoIGFuZCB3aXRob3V0IEVDQykuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQ2M6IEZlbGl4IFJhZGVuc2t5IDxmZWxpeEBlbWJlZGRlZC1zb2wuY29tPgogICAgQ2M6IEdyYW50IEVyaWNrc29uIDxnZXJpY2tzb25AbnVvdmF0aW9ucy5jb20+CiAgICBDYzogUGlldGVyIFZvb3J0aHVpanNlbiA8cHZAcHJvZHJpdmUubmw+Cgpjb21taXQgZDI0YmQyNTE3YTJiODQ3Zjc3MzQ1M2VhYjBlZTViMWM4ZWJjNzRiYQpBdXRob3I6IEZlbGl4IFJhZGVuc2t5IDxmZWxpeEBlbWJlZGRlZC1zb2wuY29tPgpEYXRlOglTdW4gU2VwIDI3IDIzOjU2OjEyIDIwMDkgKzAyMDAKCiAgICBwcGM0eHg6IFJlb3JnYW5pemUgRERSMiBFQ0MgaGFuZGxpbmcKCiAgICBSZW9yZ2FuaXplIEREUjIgRUNDIGhhbmRsaW5nIHRvIHVzZSBjb21tb24gY29kZSBmb3IKICAgIFNQRCBESU1NcyBhbmQgc29sZGVyZWQgU0RSQU0uIEFsc28sIHVzZSBjb21tb24gY29kZQogICAgdG8gZGlzcGxheSBTRFJBTSBpbmZvIChFQ0MsIENBUyBsYXRlbmN5KSBmb3IgU1BEIGFuZAogICAgc29sZGVyZWQgU0RSQU0gdmFyaWFudHMuCgogICAgU2lnbmVkLW9mZi1ieTogRmVsaXggUmFkZW5za3kgPGZlbGl4QGVtYmVkZGVkLXNvbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNDZhODg3OTQ5ZTExZDJjZGRiOTFlMTdjYTQ3ZTczMzQxZDcxYTM3OQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIFNlcCAzMCAwMzowOToxNiAyMDA5IC0wNDAwCgogICAgQmxhY2tmaW46IHVwZGF0ZSBkZWZhdWx0IGNvbnNvbGU9IHNldHRpbmdzCgogICAgVGhlIExpbnV4IGtlcm5lbCBoYXMgY2hhbmdlZCB0aGUgd2F5IGl0IG51bWJlcnMgc2VyaWFsIHBvcnRzLCBzbyB1cGRhdGUKICAgIHRoZSBkZWZhdWx0IGNvbW1hbmQgbGluZSB0byBtYXRjaCBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNGM1ZjMwN2Q1ODYwNGRlYTAwMWNjY2YzODhhYTA3N2E5MDJhYjBhNQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIFNlcCAyMSAxODowNDo0OSAyMDA5IC0wNDAwCgogICAgQmxhY2tmaW46IGJmNTMzLWV6a2l0OiB1cGRhdGUgZW52IGxvY2F0aW9uCgogICAgVGhlIHUtYm9vdCBpbWFnZSBoYXMgb3V0Z3Jvd24gdGhlIGN1cnJlbnQgc3BhY2UgYW5kIG92ZXJmbG93ZWQgaW50byB0aGUKICAgIGVudiBzZWN0b3IuICBTbyBtb3ZlIHRoZSBlbnYgdG8gdGhlIG5leHQgYXZhaWxhYmxlIHNlY3RvciAod2UndmUgYWxyZWFkeQogICAgYWxsb2NhdGVkIHRoZSBmaXJzdCBmZXcgc2VjdG9ycyBhbnl3YXlzIGZvciB1LWJvb3QpLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAyNGIxN2Q4YTNjM2E0YjljZWFmNjM2M2ViZTAwMjEwMTFiMGI4YmQ4CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIFNlcCAzMCAwODozOTo0NCAyMDA5IC0wNTAwCgogICAgcHBjLzg1eHg6IGdldF9sYXdfZW50cnkgaXNuJ3QgdXNlZCBpbiBDT05GSUdfTkFORF9TUEwKCiAgICBEb24ndCBpbmNsdWRlIGdldF9sYXdfZW50cnkgYXMgcGFydCBvZiB0aGUgTkFORF9TUEwgYnVpbGQgc2luY2UgdGhlCiAgICBjb2RlIGlzbnQgdXNlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDY5M2EwNDhkOGFjMTkxMTgxZjViOWFkYmZmNjQyZDNmMWJiZDQ3OWYKQXV0aG9yOiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBTZXAgMjMgMTU6MjA6MzkgMjAwOSArMDgwMAoKICAgIEFkZCBSRUFETUUubXBjODUzNmRzCgogICAgQWRkIGJvb3QgZnJvbSBOQU5EL2VTREhDL2VTUEkgZGVzY3JpcHRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGU0MGFjNDg3MGM2ZTcyMzAyMDQ0ZTk4MzM4MzIyZjQ1YzM0NDM1YmQKQXV0aG9yOiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBTZXAgMjMgMTU6MjA6MzggMjAwOSArMDgwMAoKICAgIE9uLWNoaXAgUk9NIGJvb3Q6IE1QQzg1MzZEUyBzdXBwb3J0CgogICAgVGhlIE1QQzg1MzZFIGlzIGNhcGFibGUgb2YgYm9vdGluZyBmcm9tIHRoZSBvbi1jaGlwIFJPTSAtIGJvb3QgZnJvbQogICAgZVNESEMgYW5kIGJvb3QgZnJvbSBlU1BJLiBXaGVuIHBvd2VyIG9uLCB0aGUgcG9yY2Vzc29yIGV4Y3V0ZXMgdGhlCiAgICBST00gY29kZSB0byBpbml0aWFsaXplIHRoZSBlU1BJL2VTREhDIGNvbnRyb2xsZXIsIGFuZCBsb2FkcyB0aGUgbWlhbgogICAgVS1Cb290IGltYWdlIGZyb20gdGhlIG1lbW9yeSBkZXZpY2UgdGhhdCBpbnRlcmZhY2VkIHRvIHRoZSBjb250cm9sbGVyLAogICAgc3VjaCBhcyB0aGUgU0RDYXJkIG9yIFNQSSBFRVBST00sIHRvIHRoZSB0YXJnZXQgbWVtb3J5LCBlLmcuIFNEUkFNIG9yCiAgICBMMlNSQU0sIHRoZW4gYm9vdCBmcm9tIGl0LgoKICAgIFRoZSBtZW1vcnkgZGV2aWNlIHNob3VsZCBjb250YWluIGEgc3BlY2lmaWMgZGF0YSBzdHJ1Y3R1cmUgd2l0aCBjb250cm9sCiAgICB3b3JkIGFuZCBjb25maWcgd29yZCBhdCB0aGUgZml4ZWQgYWRkcmVzcy4gVGhlIGNvbmZpZyB3b3JkIGRpcmVjdCB0aGUKICAgIHByb2Nlc3MgaG93IHRvIGNvbmZpZyB0aGUgbWVtb3J5IGRldmljZSwgYW5kIHRoZSBjb250cm9sIHdvcmQgZGlyZWN0CiAgICB0aGUgcHJvY2Vzc29yIHdoZXJlIHRvIGZpbmQgdGhlIGltYWdlIG9uIHRoZSBtZW1vcnkgZGV2aWNlLCBvciB3aGVyZQogICAgY29weSB0aGUgbWFpbiBpbWFnZSB0by4gVGhlIHVzZXIgY2FuIHVzZSBhbnkgbWV0aG9kIHRvIHN0b3JlIHRoZSBkYXRhCiAgICBzdHJ1Y3R1cmUgdG8gdGhlIG1lbW9yeSBkZXZpY2UsIG9ubHkgaWYgc3RvcmUgaXQgb24gdGhlIGFzc2lnbmVkIGFkZHJlc3MuCgogICAgVGhlIG9uLWNoaXAgUk9NIGNvZGUgd2lsbCBtYXAgdGhlIHdob2xlIDRHQiBhZGRyZXNzIHNwYWNlIGJ5IHNldHRpbmcKICAgIGVudHJ5MCBpbiB0aGUgVExCMSwgc28gdGhlIG1haW4gaW1hZ2UgbmVlZCB0byBzd2l0Y2ggdG8gQWRkcmVzcyBzcGFjZSAxCiAgICB0byBkaXNhYmxlIHRoaXMgbWFwcGluZyBhbmQgbWFwIHRoZSBhZGRyZXNzIHNwYWNlIGFnYWluLgoKICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBsb2FkaW5nIHRoZSBtaWFuIFUtQm9vdCBpbWFnZSBpbnRvIEwyU1JBTSwgc28KICAgIHRoZSBpbWFnZSBjYW4gY29uZmlndXJlIHRoZSBzeXN0ZW0gbWVtb3J5IGJ5IHVzaW5nIFNQRCBFRVBST00uCgogICAgU2lnbmVkLW9mZi1ieTogTWluZ2thaSBIdSA8TWluZ2thaS5odUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA5YTFhMGFlZGJiZDU2ZjkwMWJmYmMxMjRmMThlYzZkOWRjZWZlMjgyCkF1dGhvcjogTWluZ2thaSBIdSA8TWluZ2thaS5odUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgU2VwIDIzIDE1OjIwOjM3IDIwMDkgKzA4MDAKCiAgICBOQU5EIGJvb3Q6IE1QQzg1MzZEUyBzdXBwb3J0CgogICAgTVBDODUzNkUgY2FuIHN1cHBvcnQgYm9vdGluZyBmcm9tIE5BTkQgZmxhc2ggd2hpY2ggdXNlcyB0aGUKICAgIGltYWdlIHUtYm9vdC1uYW5kLmJpbi4gVGhpcyBpbWFnZSBjb250YWlucyB0d28gcGFydHM6IGEgNEsKICAgIE5BTkQgbG9hZGVyIGFuZCBhIG1haW4gVS1Cb290IGltYWdlLiBUaGUgZm9ybWVyIGlzIGFwcGVuZGVkCiAgICB0byB0aGUgbGF0dGVyIHRvIHByb2R1Y2UgdS1ib290LW5hbmQuYmluLiBUaGUgNEsgTkFORCBsb2FkZXIKICAgIGluY2x1ZGVzIHRoZSBjb3JyZXNwb25kaW5nIG5hbmRfc3BsIGRpcmVjdG9yeSwgYWxvbmcgd2l0aCB0aGUKICAgIGNvZGUgdHdpc3RlZCBieSBDT05GSUdfTkFORF9TUEwuIFRoZSBtYWluIFUtQm9vdCBpbWFnZSBqdXN0CiAgICBsaWtlIGEgZ2VuZXJhbCBVLUJvb3QgaW1hZ2UgZXhjZXB0IHRoZSBwYXJ0cyB0aGF0IGluY2x1ZGVkIGJ5CiAgICBDT05GSUdfU1lTX1JBTUJPT1QuCgogICAgV2hlbiBwb3dlciBvbiwgZUxCQyB3aWxsIGF1dG9tYXRpY2FsbHkgbG9hZCBmcm9tIGJhbmsgMCB0aGUKICAgIDRLIE5BTkQgbG9hZGVyIGludG8gdGhlIEZDTSBidWZmZXIgUkFNIHdoZXJlIENQVSBjYW4gZXhlY3V0ZQogICAgdGhlIGJvb3QgY29kZSBkaXJlY3RseS4gSW4gdGhlIGZpcnN0IHN0YWdlLCB0aGUgTkFORCBsb2FkZXIKICAgIGNvcGllcyBpdHNlbGYgdG8gUkFNIG9yIEwyU1JBTSB0byBmcmVlIHVwIHRoZSBGQ00gYnVmZmVyIFJBTSwKICAgIHRoZW4gbG9hZHMgdGhlIG1haW4gaW1hZ2UgZnJvbSBOQU5EIGZsYXNoIHRvIFJBTSBvciBMMlNSQU0KICAgIGFuZCBib290IGZyb20gaXQuCgogICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSBOQU5EIGxvYWRlciB0byBsb2FkIHRoZSBtYWluIGltYWdlCiAgICBpbnRvIEwyU1JBTSwgc28gdGhlIG1haW4gaW1hZ2UgY2FuIGNvbmZpZ3VyZSB0aGUgUkFNIGJ5IHVzaW5nCiAgICBTUEQgRUVQUk9NLiBJbiB0aGUgZmlyc3Qgc3RhZ2UsIHRoZSBOQU5EIGxvYWRlciBjb3BpZXMgaXRzZWxmCiAgICB0byB0aGUgc2Vjb25kIHRvIGxhc3QgNEsgYWRkcmVzcyBzcGFjZSwgYW5kIHVzZXMgdGhlIGxhc3QgNEsKICAgIGFkZHJlc3Mgc3BhY2UgYXMgdGhlIGluaXRpYWwgUkFNIGZvciBzdGFjay4KCiAgICBPYnZpb3VzbHksIHRoZSBzaXplIG9mIEwyU1JBTSBzaG91bGRuJ3QgYmUgbGVzcyB0aGFuIHRoZSBzaXplCiAgICBvZiB0aGUgaW1hZ2UgdXNlZC4gSWYgc28sIHRoZSB3b3JrYXJvdW5kIGlzIHRvIGdlbmVyYXRlIGFub3RoZXIKICAgIGltYWdlIHRoYXQgaW5jbHVkZXMgdGhlIGNvZGUgdG8gY29uZmlndXJlIHRoZSBSQU0gYnkgU1BEIGFuZAogICAgbG9hZCBpdCB0byBMMlNSQU0gZmlyc3QsIHRoZW4gcmVsb2NhdGUgdGhlIG1haW4gaW1hZ2UgdG8gUkFNCiAgICB0byBib290IHVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pbmdrYWkgSHUgPE1pbmdrYWkuaHVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMDczNTU3MDA1MjMyMDNjNWY3MjAxODcxMmNmMGQ5MzY4M2YyNTVjOApBdXRob3I6IE1pbmdrYWkgSHUgPE1pbmdrYWkuaHVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIFNlcCAyMyAxNToxOTozMiAyMDA5ICswODAwCgogICAgbXBjODUzNjogZml4IGJvYXJkIGNvbmZpZyBmaWxlIGxpbmUgbGVuZ3RoCgogICAgU2lnbmVkLW9mZi1ieTogTWluZ2thaSBIdSA8TWluZ2thaS5odUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBkZDljYTk4ZjI2MDAwMDBlNWMyNzQ0NzM1MDQwMTAwYjc3MDY1MGU3CkF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CkRhdGU6CUZyaSBTZXAgMjUgMTE6MTQ6MTEgMjAwOSAtMDQwMAoKICAgIHNiYzg1NDg6IHJlY2xhaW0gd2FzdGVkIHNlY3RvciBpbiBib290IGZsYXNoCgogICAgQnkgbmF0dXJlIG9mIGJlaW5nIGJhc2VkIG9mZiB0aGUgTVBDODU0OENEUyBib2FyZCwgdGhpcwogICAgYm9hcmQgaW5oZXJpdGVkIGFuIEVOVl9TSVpFIHNldHRpbmcgb2YgMjU2ay4gIEJ1dCBzaW5jZQogICAgaXQgaGFzIGEgc21hbGxlciBmbGFzaCBkZXZpY2UgKDhNQiBzb2xkZXJlZCBvbiksIGl0IGhhcwogICAgYSBuYXRpdmUgc2VjdG9yIHNpemUgb2YgMTI4aywgYW5kIGhlbmNlIHRoZSBFTlZfU0laRSB3YXMKICAgIGNhdXNpbmcgMiBzZWN0b3JzIHRvIGJlIHVzZWQgZm9yIHRoZSBlbnZpcm9ubWVudC4KCiAgICBCeSByZW1vdmluZyB0aGUgdW51c2VkIHNlY3Rvciwgd2UgY2FuIHB1c2ggVEVYVF9CQVNFIHVwCiAgICBjbG9zZXIgdG8gdGhlIGVuZCBvZiBhZGRyZXNzIHNwYWNlIGFuZCByZWNsYWltIHRoYXQKICAgIHNlY3RvciBmb3IgYW55IG90aGVyIGFwcGxpY2F0aW9uLiAgVGhpcyBhbHNvIGZpeGVzIHRoZQogICAgbWlzbWF0Y2ggYmV0d2VlbiBURVhUX0JBU0UgYW5kIE1PTklUT1JfTEVOIHJlcG9ydGVkIGJ5CiAgICBLdW1hciBlYXJsaWVyLgoKICAgIFNpbmNlIHRoaXMgYm9hcmQgYWxzbyBzdXBwb3J0cyB0aGUgYWJpbGl0eSB0byBib290IG9mZgogICAgdGhlIDY0TUIgU09ESU1NIGZsYXNoLCB0aGlzIGNoYW5nZSBpcyBmb3J3YXJkIGxvb2tpbmcKICAgIHdpdGggdGhhdCBpbiBtaW5kOyBpLmUuIHRoZSBzZXR0aW5ncyBmb3IgTU9OSVRPUl9MRU4KICAgIGFuZCBFTlZfU0laRSB3aWxsIHdvcmsgd2hlbiB0aGUgNTEyayBzZWN0b3JzIG9mIHRoZQogICAgU09ESU1NIGZsYXNoIGFyZSB1c2VkIGZvciBhbHRlcm5hdGUgYm9vdCBpbiB0aGUgZnV0dXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA4MjgwOTEyZTA2NTdlOTZhN2I3ZDhkYTcwMDM2NTZkNjJiMGZkMTA5CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIFNlcCAyOCAyMTozODowMCAyMDA5IC0wNTAwCgogICAgcHBjLzg1eHg6IENsZWFuIHVwIGltbWFwXzg1eHguaAoKICAgICogQ29udmVydGVkIGFsbCB3aGl0ZSBzcGFjZSB0byB0YWJzCiAgICAqIENvbnZlcnRlZCBhbGwgdHlwZXMgdG8gdTgvdTE2L3UzMgogICAgKiBSZWR1Y2UgbGluZXMgdG8gZml0IGluIDgwIGNvbHVtbnMKICAgICogUmVuYW1lZCBNUEM4NXh4X3tRLEJ9TUFOIC0+IEZTTF9DT1JFTkVUX3tRLEJ9TUFOCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBkNDRlOWMxNzM2MjgzZjBhYmM1ZDNjNWQyOGNmZWE4NDgwYzkzYTc5CkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBTZXAgMjggMTY6MzM6MTggMjAwOSAtMDUwMAoKICAgIE5BTkQ6IGRhdmluY2k6IEZpeCB3YXJuaW5ncyB3aGVuIDQtYml0IEVDQyBub3QgdXNlZAoKICAgIEkgYWNjaWRlbnRhbGx5IGxlZnQgdjIgb2YgIk5BTkQ6IERhVmluY2k6QWRkaW5nIDQgQklUIEVDQyBzdXBwb3J0IgogICAgYXBwbGllZCB3aGVuIEkgcHVzaGVkIHRoZSB0cmVlIGxhc3QgbWVyZ2Ugd2luZG93LCBhbmQgbWlzc2VkIHRoZXNlIGZpeGVzCiAgICB3aGljaCB3ZXJlIGluIHYzIG9mIHRoYXQgcGF0Y2guCgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgY2E2MTg5ZGI0ODQ4ODI3OThmMmEzNWE0NzZjMDdlNjE4ZTIxZjZkMwpBdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgpEYXRlOglUdWUgU2VwIDIyIDA5OjA1OjAwIDIwMDkgKzA5MDAKCiAgICBSZWZhY3RvciBPbmVOQU5EIElQTCBjb2RlCgogICAgUmVmYWN0b3JpbmcgdGhlIE9uZU5BTkQgSVBMIGNvZGUKCiAgICBhbmQgc29tZSBtaW5vciBmaXhlZDoKICAgIC0gUmVtb3ZlIHVubmVjZXNzYXJ5IGhlYWRlciBmaWxlCiAgICAtIEZpeCB3cm9uZyBhY2Nlc3MgYXQgcmVhZCBpbnRlcnJ1cHQKICAgIC0gVGhlIHJlY2VudCBPbmVOQU5EIGhhcyA0S2lCIHBhZ2VzaXplCgogICAgQWxzbyBCb2FyZCBjYW4gb3ZlcnJpZGUgT25lTkFORCBJUEwgaW1hZ2UKCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgoKY29tbWl0IGEwNWUzZjlhMDg0ZmM4OTUxZDg3NzQ1YjNhOTFkZjI0NjQzMmRmN2QKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHBvYm94LmNvbT4KRGF0ZToJU2F0IFNlcCAxMiAxODowMTo0MCAyMDA5ICswOTAwCgogICAgTUlQUzogVkNUOiBSZW1vdmUgcmVhZF9zcGFyZXJhbSByZWZlcmVuY2UKCiAgICBUaGUgY29tbWl0IGVjYWQyODlmYzZiZDlkODllZjRkNTA5M2NjN2I2ZmQ3MTJmZDBkMjkgKE9uZU5BTkQ6IFJlbW92ZQogICAgdW51c2VkIHJlYWRfc3BhcmVyYW0gYW5kIGFkZCB1bmxvY2tfYWxsIGFzIGtlcm5lbCBkb2VzKSBmb3Jnb3QgdG8gcmVtb3ZlCiAgICBhIGxvY2FsIHJlZmVyZW5jZSB0byByZWFkX3NwYXJlcmFtIGluIGJvYXJkL21pY3JvbmFzL3ZjdC9lYmlfb25lbmFuZC5jLAogICAgd2hpY2ggY2F1c2VzIHRoZSBmb2xsb3dpbmcgYnVpbGQgZmFpbHVyZSB3aGVuIGNvbmZpZ3VyZWQgd2l0aCBPbmVOQU5EOgoKICAgIGViaV9vbmVuYW5kLmM6IEluIGZ1bmN0aW9uICdvbmVuYW5kX2JvYXJkX2luaXQnOgogICAgZWJpX29uZW5hbmQuYzoxOTY6IGVycm9yOiAnc3RydWN0IG9uZW5hbmRfY2hpcCcgaGFzIG5vIG1lbWJlciBuYW1lZCAncmVhZF9zcGFyZXJhbScKICAgIG1ha2VbMV06ICoqKiBbZWJpX29uZW5hbmQub10gRXJyb3IgMQogICAgbWFrZVsxXTogKioqIFdhaXRpbmcgZm9yIHVuZmluaXNoZWQgam9icy4uLi4KICAgIG1ha2U6ICoqKiBbYm9hcmQvbWljcm9uYXMvdmN0L2xpYnZjdC5hXSBFcnJvciAyCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBwb2JveC5jb20+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQ2M6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlZjM3YzY4MzVlYWM2NjIwNmE5YzdjMTFmMGM3MTg2ZjVkNjRiZjkxCkF1dGhvcjogU2ltb24gS2Fnc3Ryb20gPHNpbW9uLmthZ3N0cm9tQG5ldGluc2lnaHQubmV0PgpEYXRlOglGcmkgU2VwIDI1IDE0OjA1OjU3IDIwMDkgKzAyMDAKCiAgICB1YmlmczogQ29ycmVjdCBkZXJlZmVyZW5jaW5nIG9mIGZpbGVzLWFmdGVyLXN5bWxpbmtzCgogICAgRmlsZXMgaW4gZGlyZWN0b3JpZXMgd2hpY2ggYXJlIHN5bWxpbmtlZCB0byB3ZXJlIG5vdCBkZXJlZmVyZW5jZWQKICAgIGNvcnJlY3RseSBpbiBsYXN0IGNvbW1pdC4gRS5nLiwgd2l0aCBhIHN5bWxpbmsKCiAgICAgICAvYm9vdC9sbmsgLT4gL2Jvb3QvcmVhbF9kaXIKCiAgICBsb2FkaW5nCgogICAgICAgL2Jvb3QvbG5rL3VJbWFnZQoKICAgIHdpbGwgZmFpbC4gVGhpcyBwYXRjaCBmaXhlcyB0aGF0IGJ5IHNpbXBseSBzZWVpbmcgdG8gaXQgdGhhdCB0aGUgdGFyZ2V0CiAgICBiYXNlIGRpcmVjdG9yeSBoYXMgYSBzbGFzaCBhZnRlciBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYjMwNmRiMmYxYmY1NjFiNTgyM2E2NTVjNjc3ZmUyOGNmYWQ4MGNmYgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IFNlcCAyNCAxNDoxMDozMCAyMDA5ICswMjAwCgogICAgcHBjNHh4OiBSZW1vdmUgbXRzZHJhbTAoKSBtYXJjb3MgYW5kIHVzZSBjb21tb24gbXRzZHJhbSgpIGluc3RlYWQKCiAgICBBZGRpdGlvbmFsbHkgc29tZSB3aGl0ZXNwYWNlIGNvZGluZyBzdHlsZSBmaXhlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOTViNjAyYmFiNWZlYzJmZmZhYjA3YTAxZWEzOTQ3YzcwZDFiYWNjMQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IFNlcCAyNCAxMzo1OTo1NyAyMDA5ICswMjAwCgogICAgcHBjNHh4OiBDb252ZXJ0IFBQQzR4eCBTRFJBTSBkZWZpbmVzIGZyb20gbG93ZXIgY2FzZSB0byB1cHBlciBjYXNlCgogICAgVGhlIGxhdGVzdCBQUEM0eHggcmVnaXN0ZXIgY2xlYW51cCBwYXRjaCBtaXNzZWQgc29tZSBTRFJBTSBkZWZpbmVzLgogICAgVGhpcyBwYXRjaCBub3cgY2hhbmdlcyBsb3dlciBjYXNlIFVJQyBkZWZpbmVzIHRvIHVwcGVyIGNhc2UuIEFsc28KICAgIHNvbWUgbmFtZXMgYXJlIGNoYW5nZWQgdG8gbWF0Y2ggdGhlIG5hbWluZyBpbiB0aGUgSUJNL0FNQ0MgdXNlcnMKICAgIG1hbnVhbHMgKGUuZy4gbWVtX21jb3B0MSAtPiBTRFJBTTBfQ0ZHKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOTUyZTc3NjBiZmM1YjBlM2IxNDJiOWNlMzRlN2ZiYjdkMDA4YzkwMApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IFNlcCAyNCAwOTo1NTo1MCAyMDA5ICswMjAwCgogICAgcHBjNHh4OiBDb252ZXJ0IFBQQzR4eCBVSUMgZGVmaW5lcyBmcm9tIGxvd2VyIGNhc2UgdG8gdXBwZXIgY2FzZQoKICAgIFRoZSBsYXRlc3QgUFBDNHh4IHJlZ2lzdGVyIGNsZWFudXAgcGF0Y2ggbWlzc2VkIHRoZSBVSUMgZGVmaW5lcy4KICAgIFRoaXMgcGF0Y2ggbm93IGNoYW5nZXMgbG93ZXIgY2FzZSBVSUMgZGVmaW5lcyB0byB1cHBlciBjYXNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkMWM5ZTViMzc5MDFiNTNmZmMxY2UzZjA4ZWM4ZWQ2MWJmZDU1N2I2CkF1dGhvcjogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+CkRhdGU6CVR1ZSBTZXAgMjIgMTM6NDA6NDQgMjAwOSArMDIwMAoKICAgIGZzbF9pMmM6IERvIG5vdCBnZW5lcmF0ZSBTVE9QIGFmdGVyIHJlYWQuCgogICAgX19pMmNfcmVhZCBhbHdheXMgZW5kcyB3aXRoIGEgU1RPUCBjb25kaXRpb24gdGhlcmVieSByZWxlYXNpbmcKICAgIHRoZSBidXMuIEl0IGlzIGNsZWFuZXIgdG8gZG8gdGhlIFNUT1AgbWFnaWMgaW4gaTJjX3JlYWQoKSwgbGlrZQogICAgaTJjX3dyaXRlKCkgZG9lcy4gVGhpcyBtYXkgYWxzbyBoZWxwIGZ1dHVyZSBtdWx0aW1hc3RlciBzeXN0ZW1zIHdoaWNoCiAgICB3YW50cyB0byBob2xkIG9uIHRvIHRoZSBidXMgdW50aWwgYWxsIHRyYW5zYWN0aW9ucyBhcmUgZmluaXNoZWQuCgogICAgU2lnbmVkLW9mZi1ieTogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+Cgpjb21taXQgOTk0MDQyMDIxMjczNDZiOWU5MTUwM2JiZDY5ZGVhZmExOGM5ODBjNApBdXRob3I6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgpEYXRlOglUaHUgU2VwIDE3IDExOjA3OjE3IDIwMDkgKzAyMDAKCiAgICBmc2xfaTJjOiBJbXBsLiBBTjI5MTksIHJldiA1IHRvIGNhbGN1bGF0ZSBGRFIvREZTUgoKICAgIFRoZSBsYXRlc3QgQU4yOTE5IGhhcyBjaGFuZ2VkIHRoZSB3YXkgRkRSL0RGU1Igc2hvdWxkIGJlIGNhbGN1bGF0ZWQuCiAgICBVcGRhdGUgdGhlIGRyaXZlciBhY2NvcmRpbmcgdG8gc3BlYy4gSG93ZXZlciwgQ29uZGl0aW9uIDIKICAgIGlzIG5vdCBhY2NvdW50ZWQgZm9yIGFzIGl0IGlzIG5vdCBjbGVhciBob3cgdG8gZG8gc28uCgogICAgU2lnbmVkLW9mZi1ieTogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+CiAgICBBY2tlZC1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Cgpjb21taXQgZDAxZWU0ZGI5MzAyY2ZjY2FhNWM1NDhhMWM0ZTg3M2I0MTU2ODFhMApBdXRob3I6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgpEYXRlOglUaHUgU2VwIDE3IDExOjA3OjE2IDIwMDkgKzAyMDAKCiAgICBmc2xfaTJjOiBBZGQgQ09ORklHX0ZTTF9JMkNfQ1VTVE9NX3tERlNSL0ZEUn0KCiAgICBTb21lIGJvYXJkcyBuZWVkIGEgaGlnaGVyIERGU1IgdmFsdWUgdGhhbiB0aGUgc3BlYyBjdXJyZW50bHkKICAgIHJlY29tbWVuZHMgc28gZ2l2ZSB0aGVzZSBib2FyZHMgdGhlIG1lYW5zIHRvIGRlZmluZSB0aGVyZSBvd24uCgogICAgRm9yIGNvbXBsZXRlbmVzcywgYWRkIENPTkZJR19GU0xfSTJDX0NVU1RPTV9GRFIgdG9vLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgoKY29tbWl0IDIxZjRjYmI3NzI5OTc4OGUyYjA2YzliMGY0OGNmMjBhNWFiMDBkNGEKQXV0aG9yOiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KRGF0ZToJVGh1IFNlcCAxNyAxMTowNzoxNSAyMDA5ICswMjAwCgogICAgZnNsX2kyYzogV2FpdCBmb3IgU1RPUCBjb25kaXRpb24gdG8gcHJvcGFnYXRlCgogICAgQWZ0ZXIgaXNzdWluZyBhIFNUT1Agb25lIG11c3Qgd2FpdCB1bnRpbCB0aGUgU1RPUCBoYXMgY29tcGxldGVkCiAgICBvbiB0aGUgYnVzIGJlZm9yZSBkb2luZyBzb21ldGhpbmcgbmV3IHRvIHRoZSBjb250cm9sbGVyLgoKICAgIEFsc28gYWRkIGFuIGV4dHJhIHJlYWQgb2YgU1IgYXMgdGhlIG1hbnVhbCBtZW50aW9ucyBkb2luZyB0aGF0CiAgICBpcyBhIGdvb2QgaWRlYS4KCiAgICBSZW1vdmUgc3VycGx1cyB3cml0ZSBvZiBDUiBqdXN0IGJlZm9yZSBhIHdyaXRlLCBpc24ndCByZXF1aXJlZCBhbmQKICAgIGNvdWxkIHBvdGVudGlhbGx5IGRpc3R1cmIgdGhlIEkyQyBidXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+Cgpjb21taXQgYzcxOTBmMDI4ZmE5NTBkNGQzNmI2ZDBiNGJiM2ZjNzI2MDJlYzU0YwpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBTZXAgMjUgMTg6MTk6NDQgMjAwOSAtMDUwMAoKICAgIG1wYzgzeHg6IHJldGFpbiBQT1IgdmFsdWVzIG9mIG5vbi1jb25maWd1cmVkIEFDUiwgU1BDUiwgU0NDUiwgYW5kIExDUlIgYml0ZmllbGRzCgogICAgc29tZSBMQ1JSIGJpdHMgYXJlIG5vdCBkb2N1bWVudGVkIHRocm91Z2hvdXQgdGhlIDgzeHggZmFtaWx5IFJNcy4KICAgIE5ldyBib2FyZCBwb3J0ZXJzIGNvcHlpbmcgc2ltaWxhciBib2FyZCBjb25maWd1cmF0aW9ucyBtaWdodCBvbWl0CiAgICBzZXR0aW5nIGUuZy4sIERCWVAgc2luY2UgaXQgd2FzIG5vdCBkb2N1bWVudGVkIGluIHRoZWlyIFNvQydzIFJNLgoKICAgIFByZXZlbnQgdGhlbSBicmlja2luZyB0aGVpciBib2FyZCBieSByZXRhaW5pbmcgcG93ZXIgb24gcmVzZXQgdmFsdWVzCiAgICBpbiBiaXQgZmllbGRzIHRoYXQgdGhlIGJvYXJkIHBvcnRlciBkb2Vzbid0IGV4cGxpY2l0bHkgY29uZmlndXJlCiAgICB2aWEgQ09ORklHX1NZU188cmVnaXN0ZXJuYW1lPl88Yml0ZmllbGQ+IGFzc2lnbm1lbnRzIGluIHRoZSBib2FyZAogICAgY29uZmlnIGZpbGUuCgogICAgYWxzbyBtb3ZlIExDUlIgYXNzaWdubWVudCB0byBjcHVfaW5pdF9yW2FtXSB0byBoZWxwIGVuc3VyZSBubwogICAgdHJhbnNhY3Rpb25zIGFyZSBiZWluZyBleGVjdXRlZCB2aWEgdGhlIGxvY2FsIGJ1cyB3aGlsZSBDTEtESVYgaXMgYmVpbmcKICAgIG1vZGlmaWVkLgoKICAgIGFsc28gc3RhcnQgdG8gdXNlIGkvbyBhY2Nlc3NvcnMuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwMGVjMGZmNTQ5YjhjYjZmYjZkNDBlMjc1YWViNWE0NjA2NDJhM2JkCkF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CkRhdGU6CU1vbiBTZXAgMjEgMTc6NDQ6NTEgMjAwOSAtMDQwMAoKICAgIHNiYzgzNDk6IHRpZHkgdXAgTWFrZWZpbGUgdG8gdXNlIG5ldyBjb25maWd1cmF0aW9uIHNjcmlwdC4KCiAgICBDb21taXQgODA0ZDgzYTUgYWxsb3dzIHVzIHRvIG1vdmUgYWxsIHRoZSBjb25maWd1cmF0aW9uCiAgICB2YXJpYXRpb24gdHdlYWtzIG91dCBvZiB0aGUgdG9wIGxldmVsIE1ha2VmaWxlIGFuZCBkb3duCiAgICBpbnRvIHRoZSBib2FyZCBjb25maWcgaGVhZGVyLiAgVGhpcyB0YWtlcyBhZHZhbnRhZ2Ugb2YKICAgIHRoYXQgZm9yIHRoZSBzYmM4MzQ5IGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkYTZlZWEwZjQ4YzI0YTMxOGU2ZGU2OWQ2YmNhMGJiNWFiNzA1NzJiCkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CVdlZCBTZXAgMTYgMjM6MjI6MDggMjAwOSArMDQwMAoKICAgIG1wYzgzeHg6IG1wYzgzNjBlbWRzOiBBZGQgUUUgVVNCIGRldmljZSB0cmVlIGZpeHVwcwoKICAgIFdpdGggdGhpcyBwYXRjaCB3ZSBjYW4gY2hhbmdlIFFFIFVTQiBtb2RlIHdpdGhvdXQgbmVlZCB0byBoYW5kLWVkaXQKICAgIHRoZSBkZXZpY2UgdHJlZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgODlkYTQ0Y2UzZmUxNjM4MzEyZDcxY2IzYWRkOGM2YTZkMmM3YzFmMwpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglXZWQgU2VwIDE2IDIzOjIxOjU5IDIwMDkgKzA0MDAKCiAgICBtcGM4M3h4OiBtcGM4MzYwZW1kczogVXNlIFJHTUlJLUlEIG1vZGUsIGFkZCB3b3JrYXJvdW5kcyBmb3IgcmV2LiAyLjEgQ1BVcwoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgdmFyaW91cyBldGhlcm5ldCBpc3N1ZXMgd2l0aCBnaWdhYml0IGxpbmtzIGhhbmRsaW5nCiAgICBpbiBVLUJvb3QuIFRoZSB3b3JrYXJvdW5kcyBvcmlnaW5hbGx5IGltcGxlbWVudGVkIGJ5IEtpbSBQaGlsbGlwcyBmb3IKICAgIExpbnV4IGtlcm5lbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMDM0NDc3YmIzMTk0OGQ2OThkMThiODRiYzA4MzRjM2UyNWExNGQwNApBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglXZWQgU2VwIDE2IDIzOjIxOjU3IDIwMDkgKzA0MDAKCiAgICBtcGM4M3h4OiBtcGM4MzYwZW1kczogRG9uJ3QgdXNlIExCQyBTRFJBTSB3aGVuIEREUiBpcyBhdmFpbGFibGUKCiAgICBTaW5jZSBjb21taXQgNWMyZmYzMjNhOTRlMjdlNDgxZjcwYzQ0ODM4ZDQzZmNkODQ0ZGQ0NiAoIm1wYzgzNjBlbWRzOgogICAgcmV3b3JrIExCQyBTRFJBTSBzZXR1cCIpLCBMQkMgU0RSQU0gaXMgYXZhaWxhYmxlIGZvciB1c2UgaW4gTGludXguCgogICAgVGhvdWdoLCBpdCBhcHBlYXJzIHRoYXQgUUUgRXRoZXJuZXQgaW4gR2lnYWJpdCBtb2RlIGNhbid0IHRyYW5zbWl0CiAgICBsYXJnZSBwYWNrZXRzIHdoZW4gaXQgdHJpZXMgdG8gd29yayB3aXRoIGEgZGF0YSBpbiBMQkMgU0RSQU0gKG1lbXRlc3QKICAgIGRpZG4ndCBkaXNjb3ZlciBhbnkgaXNzdWVzLCBpcyBMQkMgU0RSQU0ganVzdCB0b28gc2xvdz8pLgoKICAgIFdpdGggdGhpcyBwYXRjaCB3ZSBjYW4gc3RpbGwgdXNlIHRoZSBib2FyZCB3aXRob3V0IEREUiBtZW1vcnksIGJ1dAogICAgaWYgRERSIGlzIGF2YWlsYWJsZSwgd2UgZG9uJ3QgdXNlIExCQyBTRFJBTS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDc3Yzc3OWJjMjM1OTZhYTM2OTNkMWM1YzRkNWI2ZTEwNzJmOTNmMgpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglXZWQgU2VwIDE2IDIzOjIxOjU1IDIwMDkgKzA0MDAKCiAgICBuZXQ6IHVlYzogRml4IHVjY2YuaCBhbmQgdWVjLmggaGVhZGVycyB0byBpbmNsdWRlIGhlYWRlcnMgdGhleSBkZXBlbmQgb24KCiAgICBIZWFkZXJzIHNob3VsZCBpbmNsdWRlIGhlYWRlcnMgY29udGFpbmluZyBwcm90b3R5cGVzIGFuZCBkZWZpbmVzIHRoZXkKICAgIGRlcGVuZCBvbiwgZG9uJ3QgYXNzdW1lIHRoYXQgdGhleSdyZSBpbmNsdWRlZCBieSBzb21lYm9keSBlbHNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2MTg1ZjgwYzMxMWNjM2JkZWYyZjhkNTA5NmM2MWU0MGNhNmY0OGIyCkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CVdlZCBTZXAgMTYgMjM6MjE6NTMgMjAwOSArMDQwMAoKICAgIG5ldDogdWVjX3BoeTogSW1wbGVtZW50IFRYSUQgYW5kIFJYSUQgUkdNSUkgbW9kZXMgZm9yIE1hcnZlbGwgUEhZcwoKICAgIFRoaXMgd2lsbCBiZSBuZWVkZWQgZm9yIE1QQzgzNjBFLU1EUyBib2FyZHMgd2l0aCByZXYuIDIuMSBDUFVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5ODRmMTBiYWFjOGVmNjAzMmRmNTJmMTM1OTQzZDZiMGJjOTZmNzI0CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIFNlcCAyNSAxNDoxNjowMCAyMDA5ICswMjAwCgogICAgbXBjNTEyMWFkczogZml4IGJyZWFrYWdlIGludHJvZHVjZWQgd2hlbiByZW9yZGVyaW5nIGVscGlkYV9tZGRyY19jb25maWdbXQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNmU3NDhlYTAwNDQ3M2NjZTk5ZmJkZTYzODJkZDU4MGMxMGZmZGI2MApBdXRob3I6IEtlbiBNYWNMZW9kIDxrZW5AYml0c2tvLnNsYy51dC51cz4KRGF0ZToJRnJpIFNlcCAxMSAxNToxNjoxOCAyMDA5IC0wNTAwCgogICAgY21kX2ZkdC5jOiBmaXggcGFyc2Ugb2YgYnl0ZSBzdHJlYW1zIGFuZCBzdHJpbmdzCgogICAgQ29tbWl0IDRhYmQ4NDRkOGUgZXh0ZW5kZWQgdGhlIGZkdCBjb21tYW5kIHBhcnNlciB0byBoYW5kbGUgcHJvcGVydHkKICAgIHN0cmluZ3Mgd2hpY2ggYXJlIHNwbGl0IGFjcm9zcyBtdWx0aXBsZSBhcmd1bWVudHMgYnV0IGl0IHdhcyBicm9rZW4gZm9yCiAgICBieXRlIHN0cmVhbXMgYW5kIHN0cmluZ3MuCgogICAgQnl0ZSBzdHJlYW0gcGFyc2luZzoKCiAgICAgKiBGaXhlcyB3aGVyZSBpdCB3b3VsZCB0ZXJtaW5hdGUgZWFybHkgb3IgZ28gaW50byBhbiBlbmRsZXNzIGxvb3AuCgogICAgICogRml4ZXMgYSAweDAwIGJlaW5nIGluc2VydGVkIGludG8gdGhlIGRhdGEgaWYgdGhlcmUgaXMgYSBzcGFjZSBhZnRlcgogICAgICAgJ1snIG9yIGEgc2VwYXJhdGUgYXJndW1lbnQuCgogICAgICogRml4ZXMgZGVyZWZlcmVuY2luZyB0aGUgYXJndW1lbnQgcG9pbnRlciBhZnRlciB0aGUgbGFzdCBhcmd1bWVudC4KCiAgICAgKiBDaGVja3MgZm9yIGJhZCBjaGFyYWN0ZXJzLgoKICAgIFN0cmluZyBwYXJzaW5nOgoKICAgICAqIFRyZWF0IG11bHRpcGxlIGFyZ3VtZW50cyBhcyBhIHN0cmluZyBsaXN0LiAgVGhpcyBmaXhlcyBhbiBpc3N1ZSB3aGVyZQogICAgICAgb25seSB0aGUgbGFzdCBhcmd1bWVudCB3YXMgc3RvcmVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtlbiBNYWNMZW9kIDxrZW5AYml0c2tvLnNsYy51dC51cz4KCmNvbW1pdCAzODg3YzNmYmRiYmU2YmJiNGRmNjBlZDQxNWM4ZTFhYjlmZTU2YjVlCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVdlZCBTZXAgMjMgMDc6NTY6MDggMjAwOSArMDIwMAoKICAgIG11Y21jNTIsIHVjMTAxOiBkZWxldGUgYXRhQDNhMDAgbm9kZSwgaWYgbm8gQ0YgY2FyZCBpcyBkZXRlY3RlZAoKICAgIFUtQm9vdCBjYW4gZGV0ZWN0IGlmIGFuIElERSBkZXZpY2UgaXMgcHJlc2VudCBvciBub3QuCiAgICBJZiBub3QsIGFuZCB0aGlzIG5ldyBjb25maWcgb3B0aW9uIGlzIGFjdGl2YXRlZCwgVS1Cb290CiAgICByZW1vdmVzIHRoZSBBVEEgbm9kZSBmcm9tIHRoZSBEVFMgYmVmb3JlIGJvb3RpbmcgTGludXgsCiAgICBzbyB0aGUgTGludXggSURFIGRyaXZlciBkb2VzIG5vdCBwcm9iZSB0aGUgZGV2aWNlIGFuZAogICAgY3Jhc2guIFRoaXMgaXMgbmVlZGVkIGZvciBidWdneSBoYXJkd2FyZSAodWMxMDEpIHdoZXJlCiAgICBubyBwdWxsIGRvd24gcmVzaXN0b3IgaXMgY29ubmVjdGVkIHRvIHRoZSBzaWduYWwgSURFNVZfREQ3LgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDdmNjI1ZmM2ZDNiYThmODkwZTg0M2FjMDE3MTc4MDRjMjQ2MmVkNTMKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJV2VkIFNlcCAyMyAwNzo1NjowNCAyMDA5ICswMjAwCgogICAgbXBjNTIwMCwgbXVjbWM1MiwgdWMxMDE6IGNvbmZpZyBjbGVhbnVwCgogICAgLSBBcyB0aGVzZSBib2FyZHMgYXJlIHNpbWlsaWFyLCBjb2xsZWN0IGNvbW1vbiBjb25maWcgb3B0aW9ucwogICAgICBpbiBtYW5yb2xhbmQvY29tbW9uLmggYW5kIG1hbnJvbGFuZC9tcGM1Mnh4LWNvbW1vbi5oCiAgICAgIGZvciBtcGM1MjAwIHNwZWNpZmljIGNvbW1vbiBvcHRpb25zIGZvciB0aGlzIG1hbnVmYWN0dXJlci4KICAgIC0gYWRkIE9GIHN1cHBvcnQKICAgIC0gdXBkYXRlIGRlZmF1bHQgZW52aXJvbm1lbnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCiAgICBNaW5vciBlZGl0IG9mIGNvbW1pdCBtZXNzYWdlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgOWQxNDJlYThmNzg3ODgyYWI3MzJmYTUzMWEzNGRiMDkxYmZhMzYzZApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBTZXAgMjUgMDA6NTc6NDkgMjAwOSArMDIwMAoKICAgIEZpeCAicHBjLzg1eHg6IENsZWFuIHVwIHVzZSBvZiBMQVdBUiBkZWZpbmVzIiBicmVha2FnZQoKICAgIENvbW1pdCAwMDI3NDFhZTg2IG1vZGlmaWVkIGluY2x1ZGUvYXNtLXBwYy9tbXUuaCBzdWNoIHRoYXQgdGhlIExBV0FSXwogICAgZGVmaW5lcyB3ZXJlIG9ubHkgZW5hYmxlZCBmb3IgdGhlIDgzeHggcGxhdGZvcm0sIGJ1dCB0aGV5IGFyZSBhbHNvCiAgICBuZWVkZWQgb24gTVBDNTEyeCBzeXN0ZW0uIEVuYWJsaW5nIHRoZXNlIGZvciBFMzAwIHN5c3RlbXMgc2VlbXMgdGh1cwogICAgbW9yZSBhcHByb3ByaWF0ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGE1YWEzOTk4YWI2NDA4YTZhYzczOGEzY2U4MDA1ZTY0N2I5NDY1ZjgKQXV0aG9yOiBNYXJ0aGEgTSBTdGFuIDxtbWFyeEBzaWxpY29udGt4LmNvbT4KRGF0ZToJTW9uIFNlcCAyMSAxNDowODowMCAyMDA5IC0wNDAwCgogICAgQWRkIEVscGlkYSBNZW1vcnkgQ29uZmlndXJhdGlvbiB0byBtcGM1MTIxYWRzIEJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRoYSBNIFN0YW4gPG1tYXJ4QHNpbGljb250a3guY29tPgoKICAgIE1pbm9yIGNvZGluZyBzdHlsZSBjbGVhbnVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMDU0MTk3YmE4ZWU1ZWYxZTQxNjk0ZGY1ODUzMWI2ZTUzZWM0M2YyZApBdXRob3I6IE1hcnRoYSBNIFN0YW4gPG1tYXJ4QHNpbGljb250a3guY29tPgpEYXRlOglNb24gU2VwIDIxIDE0OjA3OjE0IDIwMDkgLTA0MDAKCiAgICBtcGM1MTJ4OiBTdHJlYW1saW5lZCBmaXhlZF9zZHJhbSgpIGluaXQgc2VxdWVuY2UuCgogICAgU2lnbmVkLW9mZi1ieTogTWFydGhhIE0gU3RhbiA8bW1hcnhAc2lsaWNvbnRreC5jb20+CgogICAgTWlub3IgY2xlYW51cDoKCiAgICBSZS1vcmRlcmVkIGRlZmF1bHRfbWRkcmNfY29uZmlnW10gdG8gaGF2ZSBtYXRjaGluZyBpbmRpY2VzLgoKICAgIFRoaXMgYWxsb3dzIHRvIHVzZSB0aGUgc2FtZSBpbmRleCAiTiIgZm9yIHNvdXJjZSBhbmQgdGFyZ2V0IGZpZWxkczsKICAgIGJlZm9yZSwgd2UgaGFkIGNvZGUgbGlrZSB0aGlzCgoJb3V0X2JlMzIoJmltLT5tZGRyYy5kZHJfdGltZV9jb25maWcyLCBtZGRyY19jb25maWdbM10pOwoKICAgIHdoaWNoIGFsd2F5cyBsb29rZWQgbGlrZSBhIGNvcHkgJiBwYXN0ZSBlcnJvciBiZWNhdXNlIDIgIT0gMy4KCiAgICBBbHNvLCB1c2UgTlVMTCB3aGVuIG1lYW5pbmcgYSBudWxsIHBvaW50ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAzOWFhY2ExZjY2YTBlNWIxMjA0YjA3ODlmNmMwMDk3OTM4YzAwYWQxCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IE1hciAxOSAwMjo0NjoxOSAyMDA5IC0wNTAwCgogICAgcHBjL3A0MDgwOiBEZXRlcm1pbmUgdmFyaW91cyBjaGlwIGZyZXF1ZW5jaWVzIG9uIENvcmVOZXQgcGxhdGZvcm1zCgogICAgVGhlIG1lYW5zIHRvIGRldGVybWluZSB0aGUgY29yZSwgYnVzLCBhbmQgRERSIGZyZXF1ZW5jaWVzIGFyZSBjb21wbGV0ZWx5CiAgICBuZXcgb24gQ29yZU5ldCBzdHlsZSBwbGF0Zm9ybXMuICBBZGRpdGlvbmFsbHkgb24gcDQwODAgd2UgY2FuIGhhdmUKICAgIGRpZmZlcmVudCBmcmVxdWVuY2llcyBmb3IgRk1BTiBhbmQgUE1FIElQIGJsb2Nrcy4gIFdlIG5lZWQgdG8ga2VlcCB0cmFjawogICAgb2YgdGhlIEZNQU4gJiBQTUUgZnJlcXVlbmNpZXMgc2luY2UgdGhleSBhcmUgdXNlZCBmb3IgdGltZSBzdGFtcGluZwogICAgY2FwYWJpbGl0aWVzIGluc2lkZSBlYWNoIGJsb2NrLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgM2MyYTY3ZWVjOGEwZmFjYzg2NWI0MDBjYWNhNTJlN2Y2YjdhZGYwMQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBTZXAgMTcgMDE6NTI6MzcgMjAwOSAtMDUwMAoKICAgIHBwYy9wNDA4MDogSGFuZGxlIHRpbWViYXNlIGVuYWJsaW5nIGFuZCBmcmVxdWVuY3kgcmVwb3J0aW5nCgogICAgT24gQ29yZU5ldCBzdHlsZSBwbGF0Zm9ybXMgdGhlIHRpbWViYXNlIGZyZXF1ZW5jeSBpcyB0aGUgYnVzIGZyZXF1ZW5jeQogICAgZGVmaW5lZCBieSAxNiAob24gUFEzIGl0IGlzIGRpdmlkZSBieSA4KS4gIEFsc28gb24gdGhlIENvcmVOZXQgcGxhdGZvcm1zCiAgICB0aGUgY29yZSBub3QgbG9uZ2VyIGNvbnRyb2xzIHRoZSBlbmFibGluZyBvZiB0aGUgdGltZWJhc2UuCVdlIG5vdyBuZWVkCiAgICB0byBlbmFibGUgdGhlIGJvb3QgY29yZSdzIHRpbWViYXNlIHZpYSBDQ1NSIHJlZ2lzdGVyIHdyaXRlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDdlNDI1OWJiYTRjNTY1MzY3NjBlNDJkMzJkYWNmYjMyMzNmMjE2ZmQKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgTWFyIDE5IDAyOjM5OjE3IDIwMDkgLTA1MDAKCiAgICBwcGMvcDQwODA6IEFkZCB2YXJpb3VzIHA0MDgwIHJlbGF0ZWQgZGVmaW5lcyAoYW5kIHA0MDQwKQoKICAgIFRoZXJlIGFyZSB2YXJpb3VzIGxvY2F0aW9ucyB0aGF0IHdlIGhhdmUgY2hpcCBzcGVjaWZpYyBpbmZvOgoKICAgICogTWFrZWZpbGUgZm9yIHdoaWNoIGRkciBjb2RlIHRvIGJ1aWxkCiAgICAqIEFkZGVkIHA0MDgwICYgcDQwNDAgdG8gY3B1X3R5cGVfbGlzdCBhbmQgU1ZSIGxpc3QKICAgICogQWRkZWQgbnVtYmVyIG9mIExBV3MgZm9yIHA0MDgwCiAgICAqIFNldCBDT05GSUdfTUFYX0NQVVMgdG8gOCBmb3IgcDQwODAKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDM5YTdlN2ZkNTM4Y2RmNDllN2U4YTJmMDYzNGVhNWUxNWUxMmI0ZWMKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgU2VwIDE3IDAxOjQ0OjM5IDIwMDkgLTA1MDAKCiAgICBwcGMvcDQwODA6IENvcmVOZXQgcGxhdGZyb20gc3R5bGUgc2Vjb25kYXJ5IGNvcmUgcmVsZWFzZQoKICAgIFRoZSBDb3JlTmV0IHBsYXRmb3JtIHN0eWxlIG9mIGJyaW5naW5nIHNlY29uZGFyeSBjb3JlcyBvdXQgb2YgcmVzZXQgaXMKICAgIGEgYml0IGRpZmZlcmVudCB0aGF0IHRoZSBQUTMgc3R5bGUuICBNb3N0bHkgdGhlIHJlZ2lzdGVycyB0aGF0IHdlIHVzZQogICAgdG8gc2V0dXAgYm9vdCB0cmFuc2xhdGlvbiwgZW5hYmxlIHRpbWUgYmFzZXMsIGFuZCBib290IHJlbGVhc2UgdGhlIGNvcmVzCiAgICBoYXZlIG1vdmVkIGFyb3VuZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGE4ODBjZjNlMGUxYzIyMGQ3ODBlY2NkMGIxMDExNzBjNDQ5OTQ4NWQKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgU2VwIDE3IDAxOjQ0OjAwIDIwMDkgLTA1MDAKCiAgICBwcGMvcDQwODA6IENvcmVOZXQgcGxhdGZyb20gc3R5bGUgQ0NTUkJBUiBzZXR0aW5nCgogICAgT24gQ29yZU5ldCBiYXNlZCBwbGF0Zm9ybXMgdGhlIENDU1JCQVIgYWRkcmVzcyBpcyBzcGxpdCBiZXR3ZWVuIGFuIGhpZ2ggJgogICAgbG93IHJlZ2lzdGVyIGFuZCB3ZSBubyBsb25nZXIgc2hpZnQgdGhlIGFkZHJlc3MuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQxOGVjODU4NDM0M2YwNDA0OGUyY2M3ZWU5NmI2YjI5YmU1NGFkOTcKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgTWFyIDE5IDAyOjMyOjIzIDIwMDkgLTA1MDAKCiAgICBwcGMvcDQwODA6IEFkZCBzdXBwb3J0IGZvciBDb3JlTmV0IHN0eWxlIHBsYXRmb3JtIExBV3MKCiAgICBPbiBDb3JlTmV0IGJhc2VkIHBsYXRmb3JtcyB0aGUgTEFXIGFkZHJlc3MgaXMgc3BsaXQgYmV0d2VlbiBhbiBoaWdoICYKICAgIGxvdyByZWdpc3RlciBhbmQgd2Ugbm8gbG9uZ2VyIHNoaWZ0IHRoZSBhZGRyZXNzLiAgQWxzbywgdGhlIHRhcmdldCBJRHMKICAgIG9uIENvcmVOZXQgcGxhdGZvcm1zIGhhdmUgYmVlbiBjb21wbGV0ZWx5IHJlLWFzc2lnbmVkLgoKICAgIEFkZGl0aW9uYWxseSwgYWRkZWQgYSBuZXcgZmluZF9sYXcoKSBBUEkgdG8gd2hpY2ggTEFXIGFuIGFkZHJlc3MgaGl0cyBpbi4KICAgIFRoaXMgaXMgbmVlZCBmb3IgdGhlIENvcmVOZXQgc3R5bGUgYm9vdCByZWxlYXNlIGNvZGUgc2luY2UgaXQgd2lsbCBuZWVkCiAgICB0byBkZXRlcm1pbmUgd2hhdCB0aGUgdGFyZ2V0IElEIHNob3VsZCBiZSBzZXQgdG8gZm9yIGJvb3Qgd2luZG93CiAgICB0cmFuc2xhdGlvbi4KCiAgICBGaW5hbGx5LCBlbmFtZWQgTEFXQVJfRU4gdG8gTEFXX0VOIGFuZCBtb3ZlZCB0byBoZWFkZXIgc28gd2UgY2FuIHVzZQogICAgaXQgZWxzZXdoZXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMDFkZjUyMTIxNzk1N2Q3N2Q1M2MyZDU3MDE4M2VkZWQ3MDMwOTM4ZgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBTZXAgMTYgMDk6NDM6MTIgMjAwOSAtMDUwMAoKICAgIHBwYy9wNDA4MDogQWRkIHA0MDgwIHBsYXRmb3JtIGltbWFwIGRlZmluaXRpb25zCgogICAgVGhlIHA0MDgwIFNvQyBoYXMgYSBzaWduaWZpY2FudCBhbW91bnQgb2YgY29tbW9uYWxpdHkgd2l0aCB0aGUgODV4eC9QUTMKICAgIHBsYXRmb3JtLiAgV2UgcmV1c2UgdGhlIDg1eHggaW1tYXAgYW5kIGp1c3QgYWRkIG5ldyBkZWZpbml0aW9ucyBmb3IKICAgIGxvY2FsIGFjY2VzcyBhbmQgZ2xvYmFsIHV0aWxzLiAgVGhlIGdsb2JhbCB1dGlscyBpcyBub3cgYnJva2VuIGludG8KICAgIGdsb2JhbCB1dGlscywgY2xvY2tpbmcgYW5kIHJ1biBjb250cm9sL3Bvd2VyIG1hbmFnZW1lbnQuCgogICAgVGhlIG9mZnNldHMgZnJvbSBDQ1NSIGZvciBhIG51bWJlciBvZiBibG9ja3MgaGF2ZSBhbHNvIGNoYW5nZWQuICBXZQogICAgaW50cm9kdWNlIHRoZSBDT05GSUdfRlNMX0NPUkVORVQgZGVmaW5lIHRvIGRpc3RpbnF1aXNoIHRoZSBQUTMgc3R5bGUgb2YKICAgIHBsYXRmb3JtIGZyb20gdGhlIG5ldyBwNDA4MCBwbGF0Zm9ybS4gIFdlIGRvbid0IHVzZSBRb2lyUSBhcyB0aGVyZSBhcmUKICAgIHByb2R1Y3RzIChsaWtlIHAyMDIwKSB0aGF0IGFyZSBQUTMgYmFzZWQgcGxhdGZvcm1zIGJ1dCBoYXZlIHRoZSBRb2lyUQogICAgbmFtZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDI1YmFjZjdhMmIwOTY0OTZlMmM1OGYyZGU0ZTViMmJjZThmYmEwMzgKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgU2VwIDIyIDE1OjQ1OjQ0IDIwMDkgLTA1MDAKCiAgICBwcGMvODV4eDogRml4IGVuYWJsaW5nIG9mIEwyIGNhY2hlCgogICAgV2UgbmVlZCB0byBmbGFzaCBpbnZhbGlkYXRlIHRoZSBsb2NrcyBpbiBhZGRpdGlvbiB0byB0aGUgY2FjaGUKICAgIGJlZm9yZSB3ZSBlbmFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBjYjBmZjY1YzYxOWVmYWNkYzBiYTY5YWE4ZWU2ZWRlN2RkMzY0YTM4CkF1dGhvcjogVml2ZWsgTWFoYWphbiA8dml2ZWsubWFoYWphbkBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgU2VwIDIyIDEyOjQ4OjI3IDIwMDkgKzA1MzAKCiAgICA4NXh4LWZkdDogRml4ZWQgbDItY3RscidzIGNvbXBhdGlibGUgcHJvcCBmb3IgUW9ySVEKCiAgICBUaGUgY29kZSBhc3N1bWVkIG5hbWVzIHdoZXJlIGp1c3QgbnVtYmVycyBhbmQgYWx3YXlzIHByZWZpeGVkICdtcGMnLgogICAgSG93ZXZlciBuZXdlciBRb3JJUSBkb24ndCBmb2xsb3cgdGhlIG1wYyBuYW1pbmcgc2NoZW1lLgoKICAgIFNpZ25lZC1vZmYtYnk6IFZpdmVrIE1haGFqYW4gPHZpdmVrLm1haGFqYW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMjM0YTg5ZDkxMWNlMjhlNDYzNzJmNTU1ZDdjMTRlMjg0MjRmMmIwZApBdXRob3I6IE1pbmdrYWkgSHUgPE1pbmdrYWkuaHVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIFNlcCAyMiAxNDo1MzoyMSAyMDA5ICswODAwCgogICAgcHBjLzg1eHg6IGFkZCBjcHUgaW5pdCBjb25maWcgZmlsZSBmb3IgYm9vdCBmcm9tIE5BTkQKCiAgICBXaGVuIGJvb3QgZnJvbSBOQU5ELCB0aGUgTkFORCBmbGFzaCBtdXN0IGJlIGNvbm5lY3RlZCB0byBici9vcjAuCiAgICBBbHNvIGluaXQgUkFNKEwyIFNSQU0gb3IgRERSIFNEUkFNKSBmb3IgbG9hZCB0aGUgc2Vjb25kIGltYWdlIHRvCiAgICBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDI2NjEzOWI4OGI0M2FlMWQ4N2FiYjVmNTQzMWU2ZjU3YjgwMTc5NWYKQXV0aG9yOiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBTZXAgMjIgMTQ6NTM6MzQgMjAwOSArMDgwMAoKICAgIGltbWFwXzg1eHg6IGFkZCBwb3JwbGxzcidzIHBsYXQgcmF0aW8gZGVmaW5pdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pbmdrYWkgSHUgPE1pbmdrYWkuaHVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMDk4YmNiYWUzMTcyZDczZDI0Y2E4YmExOTYzMjhkOTAxZWVkNDEzMgpBdXRob3I6IE1pbmdrYWkgSHUgPE1pbmdrYWkuaHVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIFNlcCAyMiAxNDo1MzoxMCAyMDA5ICswODAwCgogICAgcHBjLzg1eHg6IGFkZCBsZCBzY3JpcHQgZmlsZSBmb3IgYm9vdCBmcm9tIE5BTkQKCiAgICBUaGUgZmlyc3Qgc3RhZ2UgNEsgaW1hZ2UgdXNlcyBhIHNlcGVyYXRlIGxkIHNjcmlwdCBmaWxlIHRvCiAgICBnZW5lcmF0ZSA0SyBpbWFnZS4gVGhpcyBwYXRjaCBtb3ZlcyBpdCB0byB0aGUgY3B1L21wYzg1eHgvKgogICAgdG8gbWFrZSBpdCBhdmFsaWFibGUgZm9yIDg1eHggcGxhdGZvcm0uCgogICAgU2lnbmVkLW9mZi1ieTogTWluZ2thaSBIdSA8TWluZ2thaS5odUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA4NDM5ZjA1Y2ZkOGNiYjM4NDg1Mzc2YTM0ZDlmZTI5N2JhMjYyNzM3CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJTW9uIFNlcCAyMSAyMzowOToyOCAyMDA5IC0wNTAwCgogICAgbXBjODYxMGhwY2Q6IFVzZSBjb21tb24gODZ4eCBmZHQgZml4dXAgY29kZQoKICAgIFVzaW5nIHRoZSBjb21tb24gODZ4eCBmZHQgZml4dXBzIHJlbW92ZXMgc29tZSBib2FyZC1zcGVjaWZpYyBjb2RlIGFuZAogICAgc2hvdWxkIG1ha2UgdGhlIG1wYzg2MTBocGNkIGVhc2llciB0byBtYWludGFpbiBpbiB0aGUgbG9uZyBydW4uCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgOTI4NDM1ZDExYjg5ODg3MDQxNTkxMGVmZmY4N2E0ZDYzOTljZWNiOApBdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgpEYXRlOglNb24gU2VwIDIxIDE3OjE5OjE3IDIwMDkgLTA0MDAKCiAgICBzYmM4NXgwOiB0aWR5IHVwIE1ha2VmaWxlIHRvIHVzZSBuZXcgY29uZmlndXJhdGlvbiBzY3JpcHQuCgogICAgQ29tbWl0IDgwNGQ4M2E1IGFsbG93cyB1cyB0byBtb3ZlIGFsbCB0aGUgY29uZmlndXJhdGlvbgogICAgdmFyaWF0aW9uIHR3ZWFrcyBvdXQgb2YgdGhlIHRvcCBsZXZlbCBNYWtlZmlsZSBhbmQgZG93bgogICAgaW50byB0aGUgYm9hcmRzIGNvbmZpZyBoZWFkZXIuICBUaGlzIHRha2VzIGFkdmFudGFnZSBvZgogICAgdGhhdCBmb3IgdGhlIHNiYzg1NDAvc2JjODU2MCBib2FyZHMuCgogICAgVGhlcmUgd2VyZSBhIGNvdXBsZSBvZiBjaGVlenkgY29tbWVudHMgcG9pbnRpbmcgYXQgaW5jb3JyZWN0CiAgICBmaWxlcywgb3IgZmlsZXMgdGhhdCBkb24ndCBleGlzdCwgc28gSSd2ZSBjbGVhbmVkIHRob3NlIHVwIHRvby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMjczOGJjOGRmNjVlYzkwNTA5NGQ4M2Y2MmY4N2ZlZDEyM2EwM2I5YwpBdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgpEYXRlOglTdW4gU2VwIDIwIDIwOjM2OjA2IDIwMDkgLTA0MDAKCiAgICBzYmM4NTQ4OiBhbGxvdyBlbmFibGluZyBQQ0kgdmlhIGEgbWFrZSBjb25maWcgb3B0aW9uCgogICAgUHJpb3IgdG8gdGhpcyBjb21taXQsIHRvIGVuYWJsZSBQQ0ksIHlvdSBoYWQgdG8gZ28gbWFudWFsbHkKICAgIGVkaXQgdGhlIGJvYXJkIGNvbmZpZyBoZWFkZXIsIGFuZCBpZiB5b3UgaGFkIDMzTUh6IFBDSSwgeW91CiAgICBoYWQgdG8gbWFudWFsbHkgY2hhbmdlIENPTkZJR19TWVNfTlMxNjU1MF9DTEsgdG9vLCB3aGljaCB3YXMKICAgIG5vdCByZWFsIHVzZXIgZnJpZW5kbHksCgogICAgVGhpcyBhZGRzIHRoZSB0eXBpY2FsIFBDSSBhbmQgY2xvY2sgc3BlZWQgbWFrZSB0YXJnZXRzIHRvIHRoZQogICAgdG9wbGV2ZWwgTWFrZWZpbGUgaW4gYWNjb3JkYW5jZSB3aXRoIHdoYXQgaXMgYmVpbmcgZG9uZSB3aXRoCiAgICBvdGhlciBib2FyZHMgKGkuZS4gdXNpbmcgdGhlICItdCIgdG8gbWtjb25maWcpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmZGM3ZWI5MGI1MDRkYWEwMjBmMjkwNjA0ZDUwZGE4ZjdjYjcwZDhhCkF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CkRhdGU6CVN1biBTZXAgMjAgMjA6MzY6MDUgMjAwOSAtMDQwMAoKICAgIHNiYzg1NDg6IHVwZGF0ZSBQQ0kvUENJLWUgc3VwcG9ydCBjb2RlCgogICAgVGhlIFBDSS9QQ0ktZSBzdXBwb3J0IGZvciB0aGUgc2JjODU0OCB3YXMgYmFzZWQgb24gYW4gZWFybGllcgogICAgdmVyc2lvbiBvZiB3aGF0IHRoZSBNUEM4NTQ4Q0RTIGJvYXJkIHdhcyB1c2luZywgYW5kIGluIGl0cwogICAgY3VycmVudCBzdGF0ZSBpdCB3b24ndCBldmVuIGNvbXBpbGUuICBUaGlzIHJlLXN5bmNzIGl0IHRvIG1hdGNoCiAgICB0aGUgbGF0ZXN0IGNvZGViYXNlIGFuZCBtYWtlcyB1c2Ugb2YgdGhlIG5ldyBzaGFyZWQgUENJIGZ1bmN0aW9ucwogICAgdG8gcmVkdWNlIGJvYXJkIGR1cGxpY2F0aW9uLgoKICAgIEl0IGJvcnJvd3MgZnJvbSB0aGUgTVBDODU2OE1EUywgaW4gdGhhdCBpdCBwdWxscyB0aGUgUENJLWUgSS9PCiAgICBiYWNrIHRvIDB4ZTI4MF8wMDAwICh3aGVyZSBQQ0kyIHdvdWxkIGJlIG9uIE1QQzg1NDhDRFMpLCBhbmQKICAgIHNpbWlsYXJseSBpdCBjb2FsZXNjZXMgdGhlIFBDSSBhbmQgUENJLWUgbWVtIGludG8gb25lIHNpbmdsZSBUTEIuCgogICAgQm90aCBQQ0kteCBhbmQgUENJLWUgaGF2ZSBiZWVuIHRlc3RlZCB3aXRoIGludGVsIGUxMDAwIGNhcmRzCiAgICB1bmRlciBsaW51eCAod2l0aCBhbiBhY2NvbXBhbnlpbmcgZHRzIGNoYW5nZSBpbiBwbGFjZSkKCiAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYThiM2U5MGY3OThlMGNjYTVmMTFjOTEyZjlkMDgyM2ExYzViNmMyNApBdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgpEYXRlOglTdW4gU2VwIDIwIDIwOjM2OjAxIDIwMDkgLTA0MDAKCiAgICBmc2xfcGNpOiBjcmVhdGUgYSBTRVRfU1REX1BDSV9JTkZPKCkgaGVscGVyIHdyYXBwZXIKCiAgICBSZWN5Y2xlIHRoZSByZWNlbnRseSBhZGRlZCBQQ0ktZSB3cmFwcGVyIHVzZWQgdG8gcmVkdWNlIGJvYXJkCiAgICBkdXBsaWNhdGlvbiBvZiBjb2RlIGJ5IGNyZWF0aW5nIGEgc2ltaWxhciB2ZXJzaW9uIGZvciBwbGFpbiBQQ0kuCgogICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDExZDVhNjI5ZjhhNDBmOWQ3Y2ZmYzc0ZTU4ZjRlM2VkMjU4ZTU2YWIKQXV0aG9yOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KRGF0ZToJU3VuIFNlcCAyMCAyMDozNjowNCAyMDA5IC0wNDAwCgogICAgc2JjODU0ODogY29ycmVjdCBsb2NhbCBidXMgU0RSQU0gc2l6ZSBmcm9tIDY0TSB0byAxMjhNCgogICAgVGhlIHNpemUgb2YgdGhlIExCIFNEUkFNIG9uIHRoaXMgYm9hcmQgaXMgMTI4TUIsIHNwYW5uaW5nIENTMwogICAgYW5kIENTNC4gIEl0IHdhcyBwcmV2aW91c2x5IG9ubHkgYmVpbmcgY29uZmlndXJlZCBmb3IgNjRNQiBvbgogICAgQ1MzLCBzaW5jZSB0aGF0IHdhcyB3aGF0IHRoZSBvcmlnaW5hbCBjb2RlYmFzZSBvZiB0aGUgTVBDODU0OENEUwogICAgaGFkLiAgSW4gYWRkaXRpb24gdG8gc2V0dGluZyB1cCBCUjQvT1I0LCB0aGlzIGFsc28gYWRkcyB0aGUgVExCCiAgICBlbnRyeSBmb3IgdGhlIHNlY29uZCBoYWxmIG9mIHRoZSBTRFJBTS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMGM3ZTRkNDVkOWZiM2M5ZTUwM2VlOTNkNTA1NzJkMzQ2ZGFlMTUwZQpBdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgpEYXRlOglTdW4gU2VwIDIwIDIwOjM2OjAzIDIwMDkgLTA0MDAKCiAgICBzYmM4NTQ4OiB1c2UgSS9PIGFjY2Vzc29ycwoKICAgIFN3ZWVwIHRocm91Z2h0IHRoZSBib2FyZCBzcGVjaWZpYyBmaWxlIGFuZCByZXBsYWNlIHRoZSB2YXJpb3VzCiAgICByZWdpc3RlciBwcm9kZGluZ3Mgd2l0aCB0aGUgZXF1aXZhbGVudCBJL08gYWNjZXNzb3JzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmYzM4ZWI5OGZmMjI2ZjJjNTNlZWNiZWUwMzNhNmFiNzYxOTQ3M2RjCkF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CkRhdGU6CVN1biBTZXAgMjAgMjA6MzY6MDIgMjAwOSAtMDQwMAoKICAgIHNiYzg1NDg6IHJlbW92ZSBlVFNFQzMvNCB2b2x0YWdlIGhhY2sKCiAgICBXaXRoIG9ubHkgZVRTRUMxIGFuZCAyIGJlaW5nIGJyb3VnaHQgb3V0IHRvIFJKLTQ1IGNvbm5lY3RvcnMsIHdlCiAgICBhcmVuJ3QgaW50ZXJlc3RlZCBpbiB0aGUgZVRTRUMzLzQgdm9sdGFnZSBoYWNrIG9uIHRoaXMgYm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgOWIzYmEyNGYxODkwMDYzM2EzOTQ0MTZjYzA1NmM0NGExYTZlYjc1NApBdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgpEYXRlOglGcmkgU2VwIDE4IDE5OjA4OjQxIDIwMDkgLTA0MDAKCiAgICBzYmM4NTQ4OiBlbmFibGUgYWNjZXNzIHRvIHNlY29uZCBiYW5rIG9mIGZsYXNoCgogICAgVGhlIHNiYzg1NDggaGFzIGEgNjRNQiBTT0RJTU0gZmxhc2ggbW9kdWxlIG9mZiBvZiBDUzYgdGhhdAogICAgcHJldmlvdXNseSB3YXNuJ3QgZW51bWVyYXRlZCBieSB1LWJvb3QuICBUaGVyZSB3ZXJlIGFscmVhZHkKICAgIEJSNi9PUjYgc2V0dGluZ3MgZm9yIGl0IFt1c2VkIGJ5IGNwdV9pbml0X2YoKV0gYnV0IHRoZXJlCiAgICB3YXMgbm8gVExCIGVudHJ5IGFuZCBpdCB3YXNuJ3QgaW4gdGhlIGxpc3Qgb2YgZmxhc2ggYmFua3MKICAgIHJlcG9ydGVkIHRvIHUtYm9vdC4KCiAgICBUaGUgbG9jYXRpb24gb2YgdGhlIDY0TUIgZmxhc2ggaXMgInB1bGxlZCBiYWNrIiA4TUIgZnJvbQogICAgYSA2NE1CIGJvdW5kYXJ5LCBpbiBvcmRlciB0byBhbGxvdyBhZGRyZXNzIHNwYWNlIGZvciB0aGUKICAgIDhNQiBib290IGZsYXNoIHRoYXQgaXMgYXQgdGhlIGVuZCBvZiAzMiBiaXQgYWRkcmVzcyBzcGFjZS4KICAgIFRoaXMgbWVhbnMgY3JlYXRpbmcgdHdvIDRNQiBUTEIgZW50cmllcyBmb3IgdGhlIDhNQiBjaHVuaywKICAgIGFuZCB0aGVuIGV4cGFuZGluZyB0aGUgb3JpZ2luYWwgYm9vdCBmbGFzaCBlbnRyeSB0byA2NE1CCiAgICBpbiBvcmRlciB0byBjb3ZlciB0aGUgOE1CIGJvb3QgZmxhc2ggYW5kIHRoZSByZW1haW5kZXIKICAgICg1Nk1CKSBvZiB0aGUgdXNlciBmbGFzaC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZGVkNThmNDE1MzkyM2RmZmYxNmQyZjk2NDk1YmQ3YWNmMWY3ZTEwZQpBdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgpEYXRlOglXZWQgU2VwIDIzIDE3OjMwOjU3IDIwMDkgLTA0MDAKCiAgICBzYmM4NTQ4OiBjb3NtZXRpYyBsaW5lIHJlLXdyYXAKCiAgICBGaXggdGhlIGV4dHJhIGxvbmcgbGluZXMgdG8gYmUgY29uc2lzdGVudCB3aXRoIHUtYm9vdCBjb2Rpbmcgc3R5bGUuCiAgICBObyBmdW5jdGlvbmFsIGNoYW5nZSBoZXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgoKY29tbWl0IDJjNDBhY2QzNTI1Yjc1ZGIzZmNkM2Y1YTViZDQwNDQ1Njc5YjU1NDcKQXV0aG9yOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KRGF0ZToJRnJpIFNlcCAxOCAxOTowODo0MCAyMDA5IC0wNDAwCgogICAgc2JjODU0ODogZ2V0X2Nsb2NrX2ZyZXEgaXMgbm90IHZhbGlkIGZvciB0aGlzIGJvYXJkCgogICAgVGhlIGdldF9jbG9ja19mcmVxKCkgY29tZXMgZnJvbSBmcmVlc2NhbGUvY29tbW9uL2NhZG11cy5jIGFuZCBpcwogICAgb25seSB2YWxpZCBmb3IgdGhlIENEUyBiYXNlZCA4NXh4IHJlZmVyZW5jZSBwbGF0Zm9ybXMuICBJdCB3b3VsZAogICAgYmUgbmljZSBpZiB3ZSBjb3VsZCByZWFkIHRoZSAzMyB2cy4gNjZNSHogc3RhdHVzIHNvbWVob3csIGJ1dCBpbgogICAgdGhlIG1lYW50aW1lLCB0aWUgaXQgdG8gQ09ORklHX1NZU19DTEtfRlJFUSBsaWtlIGFsbCB0aGUgb3RoZXIKICAgIG5vbi1DRFMgYm9hcmRzIGRvLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA3YjFmMTM5OWU4NzY1ODdlMGEyNjhhNWE0NzFkZDQ0NGJmYmMzMTE0CkF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CkRhdGU6CUZyaSBTZXAgMTggMTk6MDg6MzkgMjAwOSAtMDQwMAoKICAgIHNiYzg1NDg6IGRlbGV0ZSB1bnVzZWQgTVBDODU0OENEUyBpbmZvIGNhcnJpZWQgb3ZlciBmcm9tIHBvcnQKCiAgICBUaGVyZSBhcmUgYSBjb3VwbGUgZGVmaW5lcyBhbmQgUENJIGJyaWRnZSBxdWlya3MgcmVsYXRlZCB0byB0aGUgUENJCiAgICBiYWNrcGxhbmUgb2YgdGhlIE1QQzg1NDhDRFMgdGhhdCBoYXZlIG5vIG1lYW5pbmcgaW4gdGhlIGNvbnRleHQgb2YKICAgIHRoZSBwb3J0IHRvIHRoZSBzYmM4NTQ4IGJvYXJkLCBzbyBkZWxldGUgdGhlbS4KCiAgICBBbHNvLCB0aGUgZm9ybSBmYWN0b3Igb2YgdGhlIHNiYzg1NDggaXMgYSBzdGFuZGFsb25lIGJvYXJkIHdpdGggYQogICAgc2luZ2xlIFBDSS1YIGFuZCBhIHNpbmdsZSBQQ0ktZSBzbG90LiAgVGhhdCBwcmV0dHkgbXVjaCBndWFyYW50ZWVzCiAgICB0aGF0IGl0IHdpbGwgbmV2ZXIgYmUgYSBQQ0kgYWdlbnQgaXRzZWxmLCBzbyB0aGUgaG9zdC9hZ2VudCBhbmQgcm9vdAogICAgY29tcGxleC9lbmQgbm9kZSBkaXN0aW5jdGlvbnMgaGF2ZSBiZWVuIHJlbW92ZWQuCgogICAgU2ltaWxhcmx5LCBzaW5jZSB0aGVyZSBpcyBubyBwaHlzaWNhbCBjb25uZWN0b3IgbWFwcGluZyB0byBQQ0kyLCBzbwogICAgYWxsIHJlZmVyZW5jZXMgb2YgUENJMiBpbiB0aGUgYm9hcmQgc3VwcG9ydCBmaWxlcyBoYXZlIGJlZW4gcmVtb3ZlZAogICAgYXMgd2VsbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgOTRjYTA5MTQ1NmQ1YzMwNDBkZGQ2MzUxYzgwY2YzZTc0MzkzZjliZQpBdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgpEYXRlOglGcmkgU2VwIDE4IDE5OjA4OjQ0IDIwMDkgLTA0MDAKCiAgICBzYmM4NTQ4OiBlbmFibGUgdXNlIG9mIFBDSSBuZXR3b3JrIGNhcmRzCgogICAgQ3JlYXRlIGEgYm9hcmRfZXRoX2luaXQgdG8gYWxsb3cgYSBwbGFjZSB0byBob29rIGluCiAgICB0aGUgUENJIGV0aGVybmV0IGluaXQgYWZ0ZXIgYWxsIHRoZSBlVFNFQyBhcmUgdXAKICAgIGFuZCBjb25maWd1cmVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA4MmI3NzI1YjZkNDZkOWFkMmI5NjJiNGNkZmE4OTZiZDVlZTMyZmI1CkF1dGhvcjogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVNhdCBTZXAgMTkgMTc6NTA6MTcgMjAwOSArMDUzMAoKICAgIHBwYy84NXh4OiAzMmJpdCBERFIgY2hhbmdlcyBmb3IgUDEwMjAvUDEwMTEKCiAgICBUaGUgUDEwMjAvUDEwMTEgU09DcyBzdXBwb3J0IG1heCAzMmJpdCBERFIgd2lkdGggYXMgb3Bwb3NlZCB0byBQMjAyMC9QMjAxMAogICAgd2hlcmUgbWF4IEREUiBkYXRhIHdpZHRoIHN1cHBvcnRlZCBpcyA2NGJpdC4KCiAgICBBcyBhIG5leHQgc3RlcCB0aGUgRERSIGRhdGEgd2lkdGggaW5pdGlhbGl6YXRpb24gd291bGQgYmUgbWFkZSBtb3JlIGR5bmFtaWMKICAgIHdpdGggbW9yZSBmbGV4aWJpbGl0eSBmcm9tIHRoZSBib2FyZCBwZXJzcGVjdGl2ZSBhbmQgdXNlciBjaG9pY2UuCiAgICBHb2luZyBmb3J3YXJkIHdlIHdvdWxkIGFsc28gcmVtb3ZlIHRoZSBoYXJkY29kaW5ncyBmb3IgcGxhdGZvcm1zIHdpdGggb25ib2FyZAogICAgbWVtb3JpZXMgYW5kIHRyeSB0byB1c2UgdGhlIEZTTCBTUEQgY29kZSBmb3IgRERSIGluaXRpYWxpemF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBvb25hbSBBZ2dyd2FsIDxwb29uYW0uYWdncndhbEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBiZDQyYmJiODU4ZGRlNzEzZjAyM2ZjMmU0ZjUxMmVjMTc0YTFhOGQyCkF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CkRhdGU6CUZyaSBTZXAgMTggMTk6MDg6NDYgMjAwOSAtMDQwMAoKICAgIHNiYzg1NDg6IHJlcGxhY2UgUkVBRE1FIHdpdGggY29tcGxldGVseSBuZXcgZG9jdW1lbnQKCiAgICBUaGUgcHJldmlvdXMgUkVBRE1FLnNiYzg1NDggd2FzIHByZXR0eSBtdWNoIGNvbnRlbnQtZnJlZS4gUmVwbGFjZQogICAgaXQgd2l0aCBzb21ldGhpbmcgdGhhdCBhY3R1YWxseSBnaXZlcyB0aGUgZW5kIHVzZXIgc29tZSByZWxldmFudAogICAgaGFyZHdhcmUgZGV0YWlscywgYW5kIGFsc28gbGlzdHMgdGhlIHUtYm9vdCBjb25maWd1cmF0aW9uIGNob2ljZXMuCgogICAgQWxzbyBpbiB0aGUgY29zbWV0aWMgZGVwYXJ0bWVudCwgZml4IHRoZSBib2d1cyBsaW5lIGluIHRoZSBNYWtlZmlsZQogICAgdGhhdCB3YXMgY2FycmllZCBvdmVyIGZyb20gdGhlIFNCQzg1NjAgTWFrZWZpbGUsIGFuZCB0aGUgdHlwbyBpbgogICAgdGhlIHNiYzg1NDguYyBjb3B5cmlnaHQuCgogICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDAwMjc0MWFlODYyYzFjN2UzZGFkODlkMDIwZTM5MmU2YWRkMWMwNWQKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglTYXQgU2VwIDE5IDExOjIwOjU0IDIwMDkgLTA1MDAKCiAgICBwcGMvODV4eDogQ2xlYW4gdXAgdXNlIG9mIExBV0FSIGRlZmluZXMKCiAgICBPbiA4NXh4IHBsYXRmb3JtcyB3ZSBzaG91bGRuJ3QgYmUgdXNpbmcgYW55IExBV0FSXyogZGVmaW5lcwogICAgYnV0IHVzaW5nIHRoZSBMQVdfKiBvbmVzIHByb3ZpZGVkIGJ5IGZzbC1sYXcuaC4gIFJlbmFtZSBhbnkgc3VjaAogICAgdXNlcyBhbmQgbGltaXQgdGhlIExBV0FSXyB0byB0aGUgODN4eCBwbGF0Zm9ybSBhcyB0aGUgb25seSB1c2VyIHNvCiAgICB3ZSB3aWxsIGdldCBjb21waWxlIGVycm9ycyBpbiB0aGUgZnV0dXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZjYxZGFlN2M5ZGM1MjY0MTBmYWVjMTVjZTM1MmIxMWZjMzZhNTYwYgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBTZXAgMyAxMDoyMDowOSAyMDA5IC0wNTAwCgogICAgcHBjLzg1eHg6IENsZWFuIHVwIG1wYzg1NzJEUyBQQ0kgc2V0dXAgY29kZQoKICAgIFVzZSBuZXcgZnNsX3BjaV9pbml0X3BvcnQoKSB0aGF0IHJlZHVjZXMgYW1vdW50IG9mIGR1cGxpY2F0ZWQgY29kZSBpbiB0aGUKICAgIGJvYXJkIHBvcnRzLCB1c2UgSU8gYWNjZXNzb3JzIGFuZCBjbGVhbiB1cCBwcmludGluZyBvZiBzdGF0dXMgaW5mby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDQ5NThhZjg3MzUyMDc2NDAxODFjNDQyM2U0MWIyNGVlNzQxODM2MWEKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgU2VwIDMgMDk6NDI6MDEgMjAwOSAtMDUwMAoKICAgIHBwYy84NXh4OiBDbGVhbiB1cCBwMjAyMGRzIFBDSSBzZXR1cCBjb2RlCgogICAgVXNlIG5ldyBmc2xfcGNpX2luaXRfcG9ydCgpIHRoYXQgcmVkdWNlcyBhbW91bnQgb2YgZHVwbGljYXRlZCBjb2RlIGluIHRoZQogICAgYm9hcmQgcG9ydHMsIHVzZSBJTyBhY2Nlc3NvcnMgYW5kIGNsZWFuIHVwIHByaW50aW5nIG9mIHN0YXR1cyBpbmZvLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgOTNhODM4NzJjNzA3ODkxYmFkMjJmNzc3NmQ3OWE2NTBjODcwNjAxZgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBTZXAgMyAxMDowOTowNCAyMDA5IC0wNTAwCgogICAgcHBjLzg1eHg6IENsZWFuIHVwIHAxX3AyX3JkYiBQQ0kgc2V0dXAKCiAgICBHZW5lcmFsIGNvZGUgY2xlYW51cCB0byB1c2UgaW4vb3V0IElPIGFjY2Vzc29ycyBhcyB3ZWxsIGFzIG1ha2luZwogICAgdGhlIGNvZGUgdGhhdCBwcmludHMgb3V0IGluZm8gc2FuZSBiZXR3ZWVuIGJvYXJkIGFuZCBnZW5lcmljIGZzbCBwY2kKICAgIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA2MmNhMjFjNDQyZTE4ZmVjMTE4ZWM4M2UxODNkNjRlYTQ5OTY2Y2U3CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IFNlcCAxMCAxNjozMTo1MyAyMDA5IC0wNTAwCgogICAgcHBjLzg1eHg6IFNpbXBsaWZ5IHRoZSB0b3AgbWFrZWZpbGUgZm9yIFAxX1AyX1JEQiBib2FyZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGEwZjllMGUwZjA2MDMzODA3ZGUwYWUwMTdhZDRkOWNmNWRkZmY4NGIKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgU2VwIDEwIDE2OjI2OjM3IDIwMDkgLTA1MDAKCiAgICBwcGMvODV4eDogU2ltcGxpZnkgdGhlIHRvcCBtYWtlZmlsZSBmb3IgMzYtYml0IGNvbmZpZyBmb3IgUDIwMjBEUwoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZjllZGNjMTBlNmNiNDk3ZGQ3ZGNiYWY2OTFjZmQxODU5YWJhZTI3YQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBTZXAgMTAgMTY6MjM6NDUgMjAwOSAtMDUwMAoKICAgIHBwYy84NXh4OiBTaW1wbGlmeSB0aGUgdG9wIG1ha2VmaWxlIGZvciAzNi1iaXQgY29uZmlnIGZvciBNUEM4NTcyRFMKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDBlOTA1YWMyOGIxZTAzOWQ3NGU2MzIzMjI5Mzk3MmJmZjZiNWEwY2UKQXV0aG9yOiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBTZXAgMTggMTE6NDU6MDkgMjAwOSArMDgwMAoKICAgIHBwYy84NXh4OiBzaW1wbGlmeSB0aGUgdG9wIG1ha2VmaWxlIGZvciAzNi1iaXQgY29uZmlnIGZvciBtcGM4NTM2ZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDIwMmQ5NDg3NWM5OGI3YjU3M2YxMzZjNGYzNTM2MDk3NThlZDk3MzMKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgU2VwIDE1IDIyOjIxOjU4IDIwMDkgLTA1MDAKCiAgICBwcGMvODV4eDogRml4IExDUlJfQ0xLRElWIGRlZmluZXMKCiAgICBGb3Igc29tZSByZWFzb24gdGhlIENMS0RJViBmaWVsZCB2YXJpZXMgYmV0d2VlbiBTb0MgaW4gaG93IGl0IGludGVycHJldHMKICAgIHRoZSBiaXQgdmFsdWVzLgoKICAgIEFsbCA4M3h4IGFuZCBlYXJseSAoZTUwMHYxKSBQUTMgZGV2aWNlcyBzdXBwb3J0OgogICAgIGNsay8yOiBDTEtESVYgPSAyCiAgICAgY2xrLzQ6IENMS0RJViA9IDQKICAgICBjbGsvODogQ0xLRElWID0gOAoKICAgIE5ld2VyIFBRMyAoZTUwMHYyKSBhbmQgTVBDODZ4eCBzdXBwb3J0OgogICAgIGNsay80OiBDTEtESVYgPSAyCiAgICAgY2xrLzg6IENMS0RJViA9IDQKICAgICBjbGsvMTY6IENMS0RJViA9IDgKCiAgICBFbnN1cmUgdGhhdCB0aGUgTVBDODZ4eCBhbmQgTVBDODV4eCBzdGlsbCBnZXQgdGhlIHNhbWUgYmVoYXZpb3IgYW5kIG1ha2UKICAgIHRoZSBkZWZpbmVzIHJlZmxlY3QgdGhlaXIgbG9naWNhbCB2aWV3IChub3QgdGhlIHZhbHVlIG9mIHRoZSBmaWVsZCkuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIEFja2VkLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDU1Zjc4NmQ4YmE4Y2U1OGE4MTQyODUzNmRhMzRhMjE5MmI5YmFkOWYKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglNb24gU2VwIDIxIDEyOjA0OjMzIDIwMDkgLTA1MDAKCiAgICBNQUtFQUxMOiBVc2UgUE9TSVggbWF0aAoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgNDBhMjhmMDg4NWU2MmI2NjA3ZTEyZWQ2YmFhNjI4NDkyN2Y1MjYzZQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBTZXAgMjEgMTI6MDQ6MzIgMjAwOSAtMDUwMAoKICAgIE1BS0VBTEw6IEFkZCBzdW1tYXJ5IGluZm9ybWF0aW9uCgogICAgVGhpcyBjaGFuZ2UgYWRkcyBzb21lIGJhc2ljIHN1bW1hcnkgaW5mb3JtYXRpb24gdG8gdGhlIE1BS0VBTEwgc2NyaXB0LgogICAgVGhlIHN1bW1hcnkgaW5mb3JtYXRpb24gaW5jbHVkZXMgaG93IG1hbnkgYm9hcmRzIHdlcmUgY29tcGlsZWQsIGhvdyBtYW55CiAgICBib2FyZHMgaGFkIGNvbXBpbGUgd2FybmluZ3Mgb3IgZXJyb3JzLCBhbmQgd2hpY2ggc3BlY2lmaWMgYm9hcmRzIGhhZAogICAgY29tcGlsZSB3YXJuaW5ncyBvciBlcnJvcnMuCgogICAgVGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VmdWwgd2hlbiBkb2luZyBjb21waWxlIHRlc3RpbmcgdG8gcXVpY2tseQogICAgZGV0ZXJtaW5lIHdoaWNoIGJvYXJkcyBhcmUgYnJva2VuLgoKICAgIEFzIGEgc2lkZSBiZW5lZml0LCBubyBlbXB0eSAkQk9BUkQuRVJSIGZpbGVzIGFyZSBnZW5lcmF0ZWQgYnkgTUFLRUFMTC4KICAgIFByZXZpb3VzbHksIGVhY2ggYm9hcmQgaGFkIGEgY29ycmVzcG9uZGluZyAkQk9BUkQuRVJSIGZpbGUsIGV2ZW4gaWYgdGhlCiAgICBib2FyZCBjb21waWxlZCBjbGVhbmx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgNzFjZTliZDdmNTUxZTQ0YzRkZGI0Yzk4NWMwOTVkYTZkMzQ1MmQ3OQpBdXRob3I6IEVyaWMgTWlsbGJyYW5kdCA8ZW1pbGxicmFuZHRAY29sZGhhdXMuY29tPgpEYXRlOglNb24gU2VwIDIxIDExOjA1OjU1IDIwMDkgLTA1MDAKCiAgICBnYWxheHk1MjAwOiBlbmFibGUgdmVyc2lvbiBlbnZpcm9ubWVudCB2YXJpYWJsZQoKICAgIEFkZCB2ZXJzaW9uIGVudmlyb25tZW50IHZhcmlhYmxlIGNvbmZpZ3VyYXRpb24gdG8gdGhlIGdhbGF4eTUyMDAKICAgIGJvYXJkIGhlYWRlciBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVyaWMgTWlsbGJyYW5kdCA8ZW1pbGxicmFuZHRAZGVrYXJlc2VhcmNoLmNvbT4KCiAgICBFZGl0ZWQgY29tbWl0IG1lc3NhZ2UuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjNTY5YWQ2ZTFlODc2OGEwZmVjNTEzZmZjMTU2NDEyMjQwYjdlYjM1CkF1dGhvcjogV2VybmVyIFBmaXN0ZXIgPHdlcm5lci5wZmlzdGVyQGludGVyY29udHJvbC5kZT4KRGF0ZToJTW9uIFNlcCAyMSAxNDo0OTo1NiAyMDA5ICswMjAwCgogICAgZGlnc3lfbXRjOiBBZGQgVENSIHJlZ2lzdGVyIHZhbHVlIGZvciBSVEMgKERTMTMzOSkKCiAgICBTaWduZWQtb2ZmLWJ5OiBXZXJuZXIgUGZpc3RlciA8d2VybmVyLnBmaXN0ZXJAaW50ZXJjb250cm9sLmRlPgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgYjAwNzhjODc5MmJhZGQ4MWFlZDUxYjdlYWJlODVlOTYwMDM2MzYxYwpBdXRob3I6IFdlcm5lciBQZmlzdGVyIDx3ZXJuZXIucGZpc3RlckBpbnRlcmNvbnRyb2wuZGU+CkRhdGU6CU1vbiBTZXAgMjEgMTQ6NDk6NTUgMjAwOSArMDIwMAoKICAgIHJ0Yy9kczEzMzcuYzogQWxsb3cgdG8gc2V0IFRDUiByZWdpc3RlcgoKICAgIFRoaXMgaXMgbmVlZGVkIHRvIGNvcnJlY3RseSBzdGFydCB0aGUgY2hhcmdpbmcgb2YgYW4gYXR0YWNoZWQgY2FwYWNpdG9yCiAgICBvciBiYXR0ZXJ5LgoKICAgIFNpZ25lZC1vZmYtYnk6IFdlcm5lciBQZmlzdGVyIDx3ZXJuZXIucGZpc3RlckBpbnRlcmNvbnRyb2wuZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KCmNvbW1pdCA5ZDc5NTJlNGM2MzZiOGM5OTI4OWE0NGRiZTI4YzZmOTNjNDNiOWY3CkF1dGhvcjogU2ltb24gS2Fnc3Ryb20gPHNpbW9uLmthZ3N0cm9tQG5ldGluc2lnaHQubmV0PgpEYXRlOglUdWUgU2VwIDE1IDA5OjUzOjI5IDIwMDkgKzAyMDAKCiAgICB1YmlmczogQWRkIHN1cHBvcnQgZm9yIGxvb2tpbmcgdXAgZGlyZWN0b3J5IGFuZCByZWxhdGl2ZSBzeW1saW5rcwoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciByZXNvbHZpbmcgc3ltbGlua3MgdG8gZGlyZWN0b3JpZXMgYXMgd2VsbCBhcwogICAgcmVsYXRpdmUgc3ltbGlua3MuIFN5bWxpbmtzIGFyZSBub3cgYWx3YXlzIHJlc29sdmVkIGR1cmluZyBmaWxlIGxvb2t1cCwKICAgIHNvIHRoZSBsb2FkIHN0YWdlIG5vIGxvbmdlciBuZWVkcyB0byBzcGVjaWFsLWNhc2UgdGhlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZmNkYjM2Yjg1YWMwMzNjMDlhOTc2MmEwYTE0ODA4ZjdjYjJlZDU0YwpBdXRob3I6IFJ1cGp5b3RpIFNhcm1haCA8cnNhcm1haEBhbWNjLmNvbT4KRGF0ZToJTW9uIFNlcCAyMSAxMToyNjoxOSAyMDA5IC0wNzAwCgogICAgcHBjNHh4OiBGaXggUENJRSBQTEwgbG9jayBvbiA0NDBTUGUgWXVjY2EgYm9hcmQKCiAgICB1LWJvb3QgcmVwb3J0cyBhIFBDSUUgUExMIGxvY2sgZXJyb3IgYXQgYm9vdCB0aW1lIG9uIFl1Y2NhIGJvYXJkLCBhbmQKICAgIGxlZnQgUENJZSBub25mdW5jdGlvbmFsLiBUaGlzIGlzIGZpeGVkIGJ5IG1ha2luZyB1LWJvb3QgZnVuY3Rpb24KICAgIHBwYzR4eF9pbml0X3BjaWUoKSB0byB3YWl0IDMwMCB1UyBhZnRlciBuZWdhdGluZyByZXNldCBiZWZvcmUgdGhlCiAgICBmaXJzdCBjaGVjayBvZiB0aGUgUExMIGxvY2suCgogICAgU2lnbmVkLW9mZi1ieTogUnVwanlvdGkgU2FybWFoIDxyc2FybWFoQGFtY2MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDkxZDU5OTA0NGNhYWM0YThjMjI4MTE1YjE2Y2YzYjA3M2Y5MDIwODAKQXV0aG9yOiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgpEYXRlOglNb24gU2VwIDIxIDEzOjI3OjE0IDIwMDkgKzAyMDAKCiAgICBwcGM0eHg6IE1ha2UgRERSMiB0aW1pbmcgZm9yIGludGlwIG1vcmUgcm9idXN0CgogICAgRERSMiB0aW1pbmcgZm9yIGludGlwIHdhcyBvbiB0aGUgZWRnZSBmb3Igc29tZSBvZiB0aGUgYXZhaWxhYmxlIGNoaXBzCiAgICBmb3IgdGhpcyBib2FyZC4gTm93IGl0IGlzIHZlcmZpZWQgdG8gd29yayB3aXRoIGFsbCBvZiB0aGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgRWliYWNoIDxlaWJhY2hAZ2RzeXMuZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMTg0YTNhMjdmNWNkMmM2NDY2NmY3NGRmOTRjODZiOTRjNDM4M2VmOApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBTZXAgMTUgMDA6MjY6MDIgMjAwOSArMDIwMAoKICAgIGJvYXJkL2xpbmtzdGF0aW9uL2lkZS5jOiBGaXggY29tcGlsZSB3YXJuaW5nCgogICAgRml4IHdhcm5pbmc6IGlkZS5jOjYwOiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbAogICAgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIENjOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgMDA0ZWNhMGM5YmEzMjhkZTQ1N2Q1ZGM5ZWY4ODA1NjM5ZGZlZjg5MwpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVdlZCBTZXAgMTYgMjI6MDM6MDggMjAwOSAtMDUwMAoKICAgIHBwYzogQ2xlYW4gdXAgY2FsbGluZyBvZiBwaHlfcmVzZXQoKSBkdXJpbmcgaW5pdAoKICAgIFJlbW92ZSBib2FyZC1zcGVjaWZpYyAjaWZkZWZzIGZvciBjYWxsaW5nIHBoeV9yZXNldCgpIGR1cmluZwogICAgaW5pdGlhbGl6dGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgM2E4ZjI4ZDBhNmQ5Zjg1MDUwMTc2ODAyMzMwNjRjMTNlNDU4NzE3NApBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVdlZCBTZXAgMTYgMjI6MDM6MDcgMjAwOSAtMDUwMAoKICAgIHBwYzogQ2xlYW4gdXAgY2FsbGluZyBvZiBtaXNjX2luaXRfcigpIGR1cmluZyBpbml0CgogICAgUmVtb3ZlIGJvYXJkLXNwZWNpZmljICNpZmRlZnMgZm9yIGNhbGxpbmcgbWlzY19pbml0X3IoKSBkdXJpbmcKICAgIGluaXRpYWxpenRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgogICAgQWNrZWQtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDMyMDJkMzMxNjlkZjA0ZGE1Y2YzZGVhOGM1YWIwYTkwMmI5MGVjYWEKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglXZWQgU2VwIDE2IDIxOjM4OjEwIDIwMDkgLTA1MDAKCiAgICBSZW1vdmUgZGVwcmVjYXRlZCAnYXV0b3NjcicgY29tbWFuZC92YXJpYWJsZXMKCiAgICBUaGUgbW9yZSBzdGFuZGFyZCAnc291cmNlJyBjb21tYW5kIHByb3ZpZGVzIGlkZW50aWNhbCBmdW5jdGlvbmFsaXR5IHRvCiAgICB0aGUgYXV0b3NjciBjb21tYW5kLgoKICAgIEVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVzL3ZhbHVlcyBvbiB0aGUgTVZCQ19QLCBNVkJNTDcsIGttZXRlcjEsCiAgICBtZ2NvZ2UsIGFuZCBrbTh4eCBib2FyZHMgYXJlIHVwZGF0ZWQgdG8gbm8gbG9uZ2VyIHJlZmVybmNlICdhdXRvc2NyJy4KCiAgICBUaGUgJ2F1dG9zY3JpcHQnIGFuZCAnYXV0b3NjcmlwdF91bmFtZScgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZQogICAgYWxzbyByZW1vdmVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBBY2tlZC1ieTogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgogICAgQWNrZWQtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IGQzZjQ5NDE4NzRhMjBkOGEzOTBhMzZiYTcxMzM1YWUxZGIyZjliYTAKQXV0aG9yOiBQYXVsIEdpYnNvbiA8cGF1bC5naWJzb24yMDc0QGdtYWlsLmNvbT4KRGF0ZToJV2VkIFNlcCAxNiAxMDowNTowMCAyMDA5ICsxMDAwCgogICAgbXBjNTEyeC4gTWljcm9uIG5hbmQgZmxhc2ggbmVlZHMgYSByZXNldCBiZWZvcmUgYSByZWFkIGNvbW1hbmQgaXMgaXNzdWVkLgoKICAgIE1pY3JvbiBuYW5kIGZsYXNoIG5lZWRzIGEgcmVzZXQgYmVmb3JlIGEgcmVhZCBjb21tYW5kIGlzIGlzc3VlZC4KICAgIFRoZSBjdXJyZW50IG1wYzUxMjFfbmZjIGRyaXZlciBpZ25vcmVzIHRoZSByZXNldCBjb21tYW5kLgoKY29tbWl0IGI1NWFlNDAyNDk1NDVlYWJiOWQ2YmZiODUwYjE0MDBhMzI1NjFiMWYKQXV0aG9yOiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+CkRhdGU6CVdlZCBTZXAgOSAyMToxODo0MSAyMDA5ICswMjAwCgogICAgRkRUOiByZW1vdmUgb2Jzb2xldGUgT0ZfQ1BVIGFuZCBPRl9TT0MgbWFjcm9zLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsLnppc3dpbGVyQG5vc2VyLmNvbT4KICAgIEFja2VkLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGcubGlha2hvdmV0c2tpQGdteC5kZT4KICAgIEFja2VkLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAzYjZhOTI2N2YwZGU3Yjg1ZDM4N2ZhNDEyM2QwYjU4Mzc5MzYzNDQ3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIFNlcCAxNSAwMDowOToyMSAyMDA5ICswMjAwCgogICAgYm9hcmQvZmxhZ2FkbS9mbGFzaC5jOiBmaXggY29tcGlsZSB3YXJuaW5nCgogICAgRml4IHdhcm5pbmc6IGZsYXNoLmM6NTMxOiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIKICAgIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIENjOiBL4XJpIERhdu3wc3NvbiA8a2RAZmxhZ2EuaXM+Cgpjb21taXQgMDQxM2NmZWNlYTM1MDAwMGVhYjVlNTkxYTA5NjVjM2UzZWUwZmYwMApBdXRob3I6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KRGF0ZToJVGh1IFNlcCAxNyAxNToxNTo1MiAyMDA5ICswMjAwCgogICAgQ29ycmVjdCBmZnMvZmxzIHJlZ3Jlc3Npb24gZm9yIFBvd2VyUEMgZXRjCgogICAgQ29tbWl0cwoKICAgICAgMDJmOTk5MDFlZDFjOWQ4MjhlM2VhMTE3Zjk0Y2UyMjY0YmY4Mzg5ZQogICAgICA1MmQ2MTIyN2I2NmQ0MDk5YjM5YzgzMDlhYjM3Y2I2N2VlMDlhNDA1CgogICAgaW50cm9kdWNlZCBhIHJlZ3Jlc3Npb24gd2hlcmUgcGxhdGZvcm0tc3BlY2lmaWMgZmZzL2ZscyBpbXBsZW1lbnRhdGlvbnMKICAgIHdlcmUgZGVmaW5lZCBhd2F5LiBUaGlzIHBhdGNoIGNvcnJlY3RzIHRoYXQgYnkgdXNpbmcgUExBVEZPUk1feHh4CiAgICBpbnN0ZWFkIG9mIHRoZSBuYW1lIGl0c2VsZi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+CiAgICBBY2tlZC1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZTY3YWY0NGQwMTY3ZDgyMzdkZDJjMmRkZjhlMzAxZDE5Y2ExMjkxNApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIFNlcCAxNCAxMToxMzozNCAyMDA5ICswMjAwCgogICAgcHBjNHh4OiBDb25zb2xpZGF0ZSBnZXRfT1BCX2ZyZXEoKQoKICAgIEFsbCA0eHggdmFyaWFudHMgaGFkIHRoZWlyIG93biwgbW9zdGx5IGlkZW50aWNhbCBnZXRfT1BCX2ZyZXEoKQogICAgZnVuY3Rpb24uIFNvbWUgdmFyaWFudHMgZXZlbiBvbmx5IGhhZCB0aGUgT1BCIGZyZXF1ZW5jeSBjYWxjdWxhdGVkCiAgICBpbiB0aGlzIHJvdXRpbmUgYW5kIG5vdCBzdXBwbGllZCB0aGUgc3lzX2luZm8uZnJlcU9QQiB2YXJpYWJsZQogICAgY29ycmVjdGx5IChlLmcuIDQwNUVaKS4gVGhpcyByZXN1bHRlZCBpbiBpbmNvcnJlY3QgT1BCIHZhbHVlcyBwYXNzZWQKICAgIHZpYSB0aGUgRkRUIHRvIExpbnV4LgoKICAgIFRoaXMgcGF0Y2ggbm93IHJlbW92ZXMgYWxsIHRob3NlIGNvcGllcyBhbmQgb25seSB1c2VzIG9uZSBmdW5jdGlvbgogICAgZm9yIGFsbCA0eHggdmFyaWFudHMgKGV4Y2VwdCBmb3IgSU9QNDgwIHdoaWNoIGRvZXNuJ3QgaGF2ZSBhbiBPUEIpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4NGE0NWQzM2MyY2MyNjFkYmQ1NDExZjdjMmFkNDVmNjAwMzAyNWI2CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgU2VwIDExIDE3OjA5OjQ1IDIwMDkgKzAyMDAKCiAgICBwcGM0eHg6IEVuYWJsZSBjb21tYW5kcyBmb3IgRkRUIGVuYWJsZWQgTGludXggYm9vdGluZyBvbiBBTUNDIEFjYWRpYQoKICAgIEFjYWRpYSBzdGlsbCB1c2VkIHRoZSAib2xkIiBhcmNoL3BwYyBib290bSBjb21tYW5kcyBmb3IgYm9vdGluZwogICAgTGludXggaW1hZ2VzIHdpdGhvdXQgRkRULiBUaGlzIHBhdGNoIG5vdyBlbmFibGVzIHRoZXNlIGZkdC1hd2FyZQogICAgYm9vdCBjb21tYW5kcyBmb3IgQWNhZGlhIGFzIHdlbGwuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDk1YTRhNTkzYjU3N2I2ZTJmMWRhMmQ0YjBmNWVjODY5NzVjMzM0MTMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBTZXAgMTEgMTc6MDc6NTUgMjAwOSArMDIwMAoKICAgIHBwYzR4eDogRml4IDQwNUVaIHVhcnQgYmFzZSBiYXVkIGNhbGN1bGF0aW9uCgogICAgV2l0aCB0aGlzIGZpeCwgTGludXggY29ycmVjdGx5IGNvbmZpZ3VyZXMgdGhlIGJhdWRyYXRlIHdoZW4gYm9vdGluZwogICAgd2l0aCBGRFQgcGFzc2VkIGZyb20gVS1Cb290IHRvIExpbnV4LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxNWZiYTMyNzliNTYzMzNiZGI2NWVhZDM2NmY4MmM5NDVlZDMyMGQxCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIFNlcCAxMSAxNToyODo0MSAyMDA5IC0wNTAwCgogICAgcHBjLzg1eHg6IERpc2FibGUgYWxsIGFzeW5jIGludGVycnVwdCBzb3VyY2VzIHdoZW4gd2UgYm9vdAoKICAgIFdlIHNob3VsZCBtYWtlIHN1cmUgdG8gY2xlYXIgTVNSW01FLCBDRSwgREVdIHdoZW4gd2UgYm9vdCBhbiBPUyBpbWFnZQogICAgc2luY2Ugd2UgaGF2ZSBjaGFuZ2VkIHRoZSBleGNlcHRpb24gdmVjdG9ycyBhbmQgdGhlIE9TZXMgdmVjdG9ycyBtaWdodAogICAgbm90IGJlIHNldHVwIHdlIHNob3VsZCBhdm9pZCBhc3luYyBpbnRlcnJ1cHRzIGF0IGFsbCBjb3N0cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDlmMDA0MDlhOWQwNGNmNTMzMzA1NTMxZGEzMjQzNzEzMDgwMmYzYTMKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglGcmkgU2VwIDExIDEzOjUyOjQ1IDIwMDkgLTA1MDAKCiAgICBwcGMvODV4eDogU3BsaXQgb3V0IGNwdV9pbml0X2Vhcmx5IGludG8gaXRzIG93biBmaWxlIGZvciBOQU5EX1NQTAoKICAgIEJ5IHB1bGxpbmcgb3V0IGNwdV9pbml0X2Vhcmx5IHdlIGNhbiBidWlsZCBqdXN0IGl0IGFuZCBub3QgYWxsIG9mCiAgICBjcHVfaW5pdCBmb3IgTkFORF9TUEwuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAwNDU2ZGJmMzQ3NWQwYWVjNDI4NzNhOTY3YWM5N2VkODFmMzc2MTE5CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIFNlcCAxMSAxMzo0MTo0OSAyMDA5IC0wNTAwCgogICAgcHBjLzg1eHg6IENoYW5nZSBjcHVfaW5pdF9lYXJseV9mIHNvIHdlIGNhbiB1c2Ugd2l0aCBOQU5EIFNQTAoKICAgIFVzZSB3cml0ZV90bGIgYW5kIGRvbid0IHVzZSBtZW1zZXQgc28gd2UgY2FuIHVzZSB0aGUgc2FtZSBjb2RlIGZvcgogICAgY3B1X2luaXRfZWFybHlfZiBiZXR3ZWVuIE5BTkQgU1BMIGFuZCBub3QuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA2ZTEzODVkNWY4ZDEzN2U3NDFkZmVmMDI0NjVkN2RjMzI4MDQwYWQ3CkF1dGhvcjogTWluZ2thaSBIdSA8TWluZ2thaS5odUBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgU2VwIDExIDEwOjUzOjA4IDIwMDkgKzA4MDAKCiAgICBOQU5EIGJvb3Q6IGNoYW5nZSBOQU5EIGxvYWRlcidzIHJlbG9jYXRlIFNQIHRvIENPTkZJRyBwYXJhbQoKICAgIFNvIHRoYXQgd2UgY2FuIHNldCB0aGUgTkFORCBsb2FkZXIncyByZWxvY2F0ZSBzdGFjayBwb2ludGVyCiAgICB0byB0aGUgdmFsdWUgb3RoZXIgdGhhbiB0aGUgcmVsb2NhdGUgYWRkcmVzcyArIDB4MTAwMDAuCgogICAgU2lnbmVkLW9mZi1ieTogTWluZ2thaSBIdSA8TWluZ2thaS5odUBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDdkYTUzMzUxZDgxN2M2ZDc3MzY0Y2ZkZTkyMjg5MWYzN2QwZTVlZDgKQXV0aG9yOiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBTZXAgMTEgMTQ6MTk6MTAgMjAwOSArMDgwMAoKICAgIHBwYy84NXh4OiBhZGQgYm9vdCBmcm9tIE5BTkQvZVNESEMvZVNQSSBzdXBwb3J0CgogICAgVGhlIE1QQzg1MzZFIGlzIGNhcGFibGUgb2YgYm9vdGluZyBmb3JtIE5BTkQvZVNESEMvZVNQSSwgdGhpcyBwYXRjaAogICAgaW1wbGVtZW50cyB0aGVzZSB0aHJlZSBib290dXAgbWV0aG9kcyBpbiBhIHVuaWZpZWQgd2F5IC0gYWxsIG9mIHRoZXNlCiAgICB1c2UgdGhlIGdlbmVyYWwgY3B1L21wYzg1eHgvc3RhcnQuUywgYW5kIGxvYWQgdGhlIG1haW4gaW1hZ2UgdG8gTDJTUkFNCiAgICB3aGljaCBsZXRzIHVzIHVzZSB0aGUgU1BEIHRvIGluaXRpYWxpemUgdGhlIFNEUkFNLgoKICAgIEZvciBhbGwgdGhyZWUgYm9vdHVwIG1ldGhvZHMsIHRoZSBib290dXAgcHJvY2VzcyBjYW4gYmUgZGl2aWRlZCBpbnRvIHR3bwogICAgc3RhZ2VzOiB0aGUgZmlyc3Qgc3RhZ2Ugd2lsbCBpbml0aWFsaXplIHRoZSBjb3JyZXNwb25kaW5nIGNvbnRyb2xsZXIsCiAgICBjb25maWd1cmUgdGhlIEwyU1JBTSwgdGhlbiBjb3B5IHRoZSBzZWNvbmQgc3RhZ2UgaW1hZ2UgdG8gTDJTUkFNIGFuZAogICAganVtcCB0byBpdC4gVGhlIHNlY29uZCBzdGFnZSBpbWFnZSBpcyBqdXN0IGxpa2UgdGhlIGdlbmVyYWwgVS1Cb290IGltYWdlCiAgICB0byBjb25maWd1cmUgYWxsIHRoZSBoYXJkd2FyZSBhbmQgYm9vdCB1cCB0byBVLUJvb3QgY29tbWFuZCBsaW5lLgoKICAgIFdoZW4gYm9vdCBmcm9tIE5BTkQsIHRoZSBlTEJDIGNvbnRyb2xsZXIgd2lsbCBmaXJzdCBsb2FkIHRoZSBmaXJzdCBzdGFnZQogICAgaW1hZ2UgdG8gaW50ZXJuYWwgNEsgUkFNIGJ1ZmZlciBiZWNhdXNlIGl0J3MgYWxzbyBzdG9yZWQgb24gdGhlIE5BTkQKICAgIGZsYXNoLiBUaGUgZmlyc3Qgc3RhZ2UgaW1hZ2UsIGFsc28gY2FsbCA0SyBOQU5EIGxvYWRlciwgd2lsbCBpbml0aWFsaXplCiAgICB0aGUgTDJTUkFNLCBsb2FkIHRoZSBzZWNvbmQgc3RhZ2UgaW1hZ2UgdG8gTDJTUkFNIGFuZCBqdW1wIHRvIGl0LiBUaGUgNEsKICAgIE5BTkQgbG9hZGVyJ3MgY29kZSBjb21lcyBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIG5hbmRfc3BsIGRpcmVjdG9yeSwgYWxvbmcKICAgIHdpdGggdGhlIGNvZGUgdHdpc3RlZCBieSBDT05GSUdfTkFORF9TUEwuCgogICAgV2hlbiBib290IGZyb20gZVNESEMvZVNQSSwgdGhlcmUncyBubyBzdWNoIGEgZmlyc3Qgc3RhZ2UgaW1hZ2UgYmVjYXVzZQogICAgdGhlIENQVSBST00gY29kZSBkb2VzIHRoZSBzYW1lIHdvcmsuIEl0IHdpbGwgaW5pdGlhbGl6ZSB0aGUgTDJTUkFNCiAgICBhY2NvcmRpbmcgdG8gdGhlIGNvbmZpZyBhZGRyL3dvcmQgcGFpcnMgb24gdGhlIGZpeGVkIGFkZHJlc3MgYW5kCiAgICBpbml0aWFsaXplIHRoZSBlU0RIQy9lU1BJIGNvbnRyb2xsZXIsIHRoZW4gbG9hZCB0aGUgc2Vjb25kIHN0YWdlIGltYWdlCiAgICB0byBMMlNSQU0gYW5kIGp1bXAgdG8gaXQuCgogICAgVGhlIG1hY3JvIENPTkZJR19TWVNfUkFNQk9PVCBpcyB1c2VkIHRvIGNvbnRyb2wgdGhlIGNvZGUgdG8gcHJvZHVjZSB0aGUKICAgIHNlY29uZCBzdGFnZSBpbWFnZSBmb3IgYWxsIGRpZmZlcmVudCBib290dXAgbWV0aG9kcy4gSXQncyBzZXQgaW4gdGhlCiAgICBib2FyZCBjb25maWcgZmlsZSB3aGVuIG9uZSBvZiB0aGUgYm9vdHVwIG1ldGhvZHMgYWJvdmUgaXMgc2VsZWN0ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTWluZ2thaSBIdSA8TWluZ2thaS5odUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBiMmVlYzI4MWE4MTFiYjUyOTQxZjYxMjAzZDhmZTM1MjU2YjM1ODJjCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIFNlcCAxMSAxMjozMjowMSAyMDA5IC0wNTAwCgogICAgcHBjLzg1eHg6IE1vdmUgY29kZSBhcm91bmQgdG8gcHJlcCBmb3IgTkFORF9TUEwKCiAgICBJZiB3ZSBtb3ZlIHNvbWUgb2YgdGhlIGZ1bmN0aW9ucyBpbiB0bGIuYyBhcm91bmQgd2UgbmVlZCBsZXNzCiAgICBpZmRlZnMuICBUaGUgZmlyc3Qgc3RhZ2UgbG9hZGVyIGp1c3QgbmVlZHMgaW52YWxpZGF0ZV90bGIgYW5kCiAgICBpbml0X3RsYnMuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAyMDZhZjM1MjdjMDVlNTIwZTI4ZDM4YTQ4YTFkMTU0MzNlMzQ2NzVkCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIFNlcCAxMSAxMTozMDozMCAyMDA5IC0wNTAwCgogICAgcHBjLzg1eHg6IFJlcGFjayB0bGJfdGFibGUgdG8gc2F2ZSBzcGFjZQoKICAgIFdlIGNhbiBwYWNrIHRoZSBpbml0aWFsIHRsYl90YWJsZSBpbiBNQVMgcmVnaXN0ZXIgZm9ybWF0IGFuZCB1c2UKICAgIHdyaXRlX3RsYiB0byBzZXQgdGhpbmdzIHVwLiAgVGhpcyBzYXZpbmdzIGNhbiBiZSBoZWxwZnVsIGZvciBOQU5ECiAgICBzdHlsZSBmaXJzdCBzdGFnZSBib290IGxvYWRlcnMuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBkMzBmOTA0MzUzOWQzNzJjZjY2NDA2YmMyZjIxYmI4YzIwZTY3MDA5CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIFNlcCAxMSAxMToyNzowMCAyMDA5IC0wNTAwCgogICAgcHBjLzg1eHg6IEludHJvZHVjZSBsb3cgbGV2ZWwgd3JpdGVfdGxiIGZ1bmN0aW9uCgogICAgRmFjdG9yIG91dCB0aGUgY29kZSB3ZSB1c2UgdG8gYWN0dWFsbHkgd3JpdGUgYSB0bGIgZW50cnkuCgogICAgc2V0X3RsYiBpcyBhIGxvZ2ljYWwgdmlldyBvZiB0aGUgVExCIHdoaWxlIHdyaXRlX3RsYiBpcyBhIGxvdyBsZXZlbAogICAgbWF0Y2hpbmcgdGhlIE1BUyByZWdpc3RlcnMuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAwZWFkNmYyZWQ3Y2Y0ZTFmNzBkYWI1YjUyOWFkMTIxZTM4MzU5NDg1CkF1dGhvcjogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgU2VwIDEwIDE0OjQ0OjQ4IDIwMDkgKzA4MDAKCiAgICBwcGMvODV4eDogRW5hYmxlIHVzYiBlaGNpIHN1cHBvcnQgZm9yIHAyMDIwZHMgYm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDZkODU2NWExZWQ1YWNiMDFiYWQ0YTRjZDc0YTkzYmU1ZjdmYjdmN2MKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgU2VwIDEwIDE0OjU0OjU1IDIwMDkgLTA1MDAKCiAgICBwcGMvOHh4eDogTWlzYyBERFIgcmVsYXRlZCBmaXhlcwoKICAgICogRml4IHNldHRpbmcgb2YgRVNETU9ERSAoTVIxKSByZWdpc3RlciAtIHRoZSBiaXQgc2hpZnRpbmcgd2FzIHdyb25nCiAgICAqIEZpeCB0aGUgZm9ybWF0IHN0cmluZyB0byBtYXRjaCBzaXplIGluIGEgZGVidWcgcHJpbnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDNlM2M5YzE1N2I4OWVhYjJkYzJmODk3ODk5YjFiOTVjZDcwYzFhNTgKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEF1ZyAyMCAxNzo0NTowMCAyMDA5IC0wNTAwCgogICAgcHBjLzg1eHg6IFJlbW92ZSBzb21lIGJvZ3VzIGNvZGUgZnJvbSBleHRlcm5hbCBpbnRlcnJ1cHQgaGFuZGxlci4KCiAgICBTa2lwcGluZyB0aGUgaW50ZXJydXB0ZWQgaW5zdHJ1Y3Rpb24gd2lsbCBhY2NvbXBsaXNoIG5vdGhpbmcgb3RoZXIKICAgIHRoYW4gdHVybmluZyBhIHNwdXJpb3VzIGludGVycnVwdCBpbnRvIGEgY3Jhc2guCgogICAgRXh0ZXJuYWwgaW50ZXJydXB0cyBhcmUgbm90IG1hY2hpbmUgY2hlY2tzLCBzbyBkb24ndCBjb3VudCB0aGVtIGFzIHN1Y2guCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZGNjODdkZDU4ZGI0NjZjYWEyZDY2NzU1YzVlYzk0NTVlZGY0MmZlOApBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXVnIDIwIDE3OjQ1OjA1IDIwMDkgLTA1MDAKCiAgICBwcGMvODV4eDogRW5zdXJlIHRoYXQgTUFTOCBpcyB6ZXJvIHdoZW4gd3JpdGluZyBUTEIgZW50cmllcy4KCiAgICBJdHMgcmVzZXQgdmFsdWUgaXMgcmFuZG9tLCBhbmQgd2Ugc29tZXRpbWVzIHJlYWQgdW5pbml0aWFsaXplZCBUTEIKICAgIGFycmF5cy4gIE1ha2Ugc3VyZSB0aGF0IHdlIGRvbid0IHJldGFpbiBNQVM4IGZyb20gcmVhZGluZyBzdWNoIGFuIGVudHJ5CiAgICBpZiB0aGUgVkYgYml0IGluIE1BUzggaXMgc2V0LCBhdHRlbXB0cyB0byB1c2UgdGhlIG1hcHBpbmcgd2lsbCB0cmFwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFiNzJkYmVjY2EyZDdhZDdhMjFjOTJkODAyMjdkYWEyZDhlYzVhNTcKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEF1ZyAyMCAxNzo0NDoyMCAyMDA5IC0wNTAwCgogICAgcHBjLzg1eHg6IERvbid0IGVuYWJsZSBpbnRlcnJ1cHRzIGJlZm9yZSB3ZSdyZSByZWFkeQoKICAgIFdlIGNhbm5vdCBoYW5kbGUgYW55IGV4Y2VwdGlvbnMgd2hpbGUgcnVubmluZyBpbiBBUzEsIGFzIHRoZSBleGNlcHRpb25zCiAgICB3aWxsIHRyYW5zaXRpb24gYmFjayB0byBBUzAgd2l0aG91dCBhIHZhbGlkIG1hcHBpbmcuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgM2NhNTViY2U5YzhiZjAwZGYwNmEyMDQ4N2ZhZmMxNmZhMmY4MDg0YgpBdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KRGF0ZToJRnJpIFNlcCAxMSAwNzo1MDozMyAyMDA5IC0wNDAwCgogICAgbXBjODI2MDogcmVtb3ZlIEV0aGVybmV0IG5vZGUgZml4dXAgdG8gdXNlIGdlbmVyaWMgRkRUIGNvZGUuCgogICAgUmVtb3ZlIEV0aGVybmV0IG5vZGUgZml4dXAgZnJvbSBtZ2NvZ2UgYW5kIG11YXMzMDAxIGJvYXJkcyBhbmQgbW9kaWZ5IGl0cwogICAgY29uZmlncyBmb3IgdGhlIGNvbW1vbiBtcGM4MjYwIGNvZGUgdG8gdXNlIGdlbmVyaWMgRXRoZXJuZXQgZml4dXAuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyY2VsIFppc3dpbGVyIDxtYXJjZWwuemlzd2lsZXJAbm9zZXIuY29tPgogICAgVGVzdGVkLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAxYzIwZTRhOWZiYzUzMWUyMTQ5YWUwNjFlODU4M2Y1ZmFkODJmMTYzCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglXZWQgU2VwIDkgMTI6MjA6MjEgMjAwOSAtMDQwMAoKICAgIHRvb2xzL25ldGNvbnNvbGU6IHVzZSBuY2IgYXV0b21hdGljYWxseSBpZiBhdmFpbGFibGUKCiAgICBUaGUgc3RhbmRhcmQgbmV0Y2F0LCB3aGlsZSB1YmlxdWl0b3VzLCBkb2Vzbid0IGhhbmRsZSBicm9hZGNhc3QgdWRwIHBhY2tldHMKICAgIHByb3Blcmx5LiAgVGhlIGxvY2FsIG5jYiB1dGlsIGRvZXMgaG93ZXZlci4gIFNvIGlmIG5jYiBjYW4gYmUgbG9jYXRlZCBpbgogICAgdGhlIHN0YW5kYXJkIGxvY2F0aW9ucywgYXV0b21hdGljYWxseSB1c2UgdGhhdCBpbnN0ZWFkLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA3NzA5MzE4MDVkMjkyOTA4YTU3YTNkMmM1ZjlhNGZjZGU4ODhiNWEyCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglXZWQgU2VwIDkgMTI6MjA6MjAgMjAwOSAtMDQwMAoKICAgIHRvb2xzL25ldGNvbnNvbGU6IG1ha2UgYSBiaXQgbW9yZSByb2J1c3QKCiAgICBUaGUgbmV0Y2F0IHV0aWxpdHkgbGlrZXMgdG8gZXhpdCB3aGVuIGl0IHJlY2VpdmVzIGFuIGVtcHR5IHBhY2tldCAoYXMgaXQKICAgIHRoaW5rcyB0aGlzIG1lYW5zIEVPRikuICBUaGlzIGNhbiBlYXNpbHkgb2NjdXIgd2hlbiB3b3JraW5nIHdpdGggY29tbWFuZAogICAgbGluZSBlZGl0aW5nIGFzIHRoaXMgYmVoYXZpb3Igd2lsbCBiZSB0cmlnZ2VyZWQgd2hlbiB1c2luZyBiYWNrc3BhY2UuICBPcgogICAgd2l0aCB0YWJzIGFuZCBjb21tYW5kIGxpbmUgY29tcGxldGlvbi4gIFNvIGNyZWF0ZSB0d28gbmV0Y2F0IHByb2Nlc3NlcyAtCiAgICBvbmUgdG8gb25seSBsaXN0ZW4gKGFuZCBwdXQgaXQgaW50byBhIGxvb3ApLCBhbmQgb25lIHRvIGRvIHRoZSBzZW5kaW5nLgogICAgT25jZSB0aGUgdXNlciBxdWl0cyB0aGUgdHJhbnNtaXR0aW5nIG5ldGNhdCwgdGhlIGxpc3RlbmluZyBvbmUgd2lsbCBiZQogICAga2lsbGVkIGF1dG9tYXRpY2FsbHkuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGE2ZTE5ZDY5ZjYzYzE0Yjc2NzJjNjVjYTRiMDE0NjIxYzZmZDAyMDEKQXV0aG9yOiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+CkRhdGU6CU1vbiBBdWcgMjQgMDk6MTA6MTYgMjAwOSArMDIwMAoKICAgIGFybTogRGVmaW5lIHRlc3RfYW5kX3NldF9iaXQgYW5kIHRlc3RfYW5kX2NsZWFyIGJpdCBmb3IgQVJNCgogICAgTmVlZGVkIGZvciAoZS5nLikgdWJpZnMgc3VwcG9ydCB0byB3b3JrLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KCmNvbW1pdCA1MmQ2MTIyN2I2NmQ0MDk5YjM5YzgzMDlhYjM3Y2I2N2VlMDlhNDA1CkF1dGhvcjogU2ltb24gS2Fnc3Ryb20gPHNpbW9uLmthZ3N0cm9tQG5ldGluc2lnaHQubmV0PgpEYXRlOglNb24gQXVnIDI0IDA5OjEwOjEyIDIwMDkgKzAyMDAKCiAgICBEZWZpbmUgZmZzL2ZscyBmb3IgYWxsIGFyY2hpdGVjdHVyZXMKCiAgICBVQklGUyByZXF1aXJlcyBmbHMoKSwgd2hpY2ggaXMgbm90IGRlZmluZWQgZm9yIGFybSAoYW5kIHNvbWUgb3RoZXIKICAgIGFyY2hpdGVjdHVyZXMpIGFuZCB0aGlzIHBhdGNoIGFkZHMgaXQuIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyB0YWtlbiBmcm9tCiAgICBMaW51eCBhbmQgaXMgZ2VuZXJpYy4gZmZzKCkgaXMgYWxzbyBkZWZpbmVkIGZvciB0aG9zZSB0aGF0IG1pc3MgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogU2ltb24gS2Fnc3Ryb20gPHNpbW9uLmthZ3N0cm9tQG5ldGluc2lnaHQubmV0PgoKY29tbWl0IDRiMTVkZTA4ZmU0ZDJjOWQxMmEzNzY0Mzk0NzMxMDE4YTc2MzIxNmIKQXV0aG9yOiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+CkRhdGU6CU1vbiBBdWcgMjQgMDk6MTA6MDMgMjAwOSArMDIwMAoKICAgIGFybTogTWFrZSBhcm0gYml0b3BzIGVuZGlhbm5lc3MtaW5kZXBlbmRlbnQKCiAgICBCcmluZyBvdmVyIHRoZSBiaXRvcCBpbXBsZW1lbnRhdGlvbnMgZnJvbSB0aGUgTGludXgKICAgIGluY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL25vbi1hdG9taWMuaCB0byBwcm92aWRlCiAgICBlbmRpYW5uZXNzLWluZGVwZW5kZW5jZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+Cgpjb21taXQgMDJmOTk5MDFlZDFjOWQ4MjhlM2VhMTE3Zjk0Y2UyMjY0YmY4Mzg5ZQpBdXRob3I6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KRGF0ZToJTW9uIEF1ZyAyNCAwOTowOTo1MCAyMDA5ICswMjAwCgogICAgTW92ZSBfX3NldC9jbGVhcl9iaXQgZnJvbSB1Ymlmcy5oIHRvIGJpdG9wcy5oCgogICAgX19zZXRfYml0IGFuZCBfX2NsZWFyX2JpdCBhcmUgZGVmaW5lZCBpbiB1Ymlmcy5oIGFzIHdlbGwgYXMgaW4KICAgIGFzbS9pbmNsdWRlL2JpdG9wcy5oIGZvciBzb21lIGFyY2hpdGVjdHVyZXMuIFRoaXMgcGF0Y2ggbW92ZXMKICAgIHRoZSBnZW5lcmljIGltcGxlbWVudGF0aW9uIHRvIGluY2x1ZGUvbGludXgvYml0b3BzLmggYW5kIHVzZXMKICAgIHRoYXQgdW5sZXNzIGl0J3MgZGVmaW5lZCBieSB0aGUgYXJjaGl0ZWN0dXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KCmNvbW1pdCA1NTc1NTVmZTBiODI5NDBiYTdjYzY5ZjgxZDMxZDZlZjRkNDkzM2I0CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglGcmkgU2VwIDQgMTk6NTQ6NDUgMjAwOSAtMDQwMAoKICAgIHN0YW5kYWxvbmU6IGNvbnZlcnQgdG8ga2J1aWxkIHN0eWxlCgogICAgQ2xlYW4gdXAgdGhlIGFyY2gvY3B1L2JvYXJkL2NvbmZpZyBjaGVja3MgYXMgd2VsbCBhcyByZWR1bmRhbnQgc2V0dGluZyBvZgogICAgc3JlYy9iaW4gdmFyaWFibGVzIGJ5IHVzaW5nIHRoZSBrYnVpbGQgVkFSLSQoLi4uKSBzdHlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgODA0ZDgzYTU2M2M0N2I1NWUxZjE0ZjVkZTNiNmU5ZDdlMmE3ZWY1ZQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBTZXAgMTUgMjI6MTI6MzEgMjAwOSArMDIwMAoKICAgIG1rY29uZmlnOiBzcGxpdCB0aGUgYm9hcmQgbWFrZSB0YXJnZXQgdG8gbXVsdGlwbGUgY29uZmlnIHRhcmdldHMKCiAgICBUbyBzaW1wbGlmeSB0aGUgdG9wIGxldmVsIG1ha2VmaWxlIGl0IHVzZWZ1bCB0byBiZSBhYmxlIHRvIHBhcnNlCiAgICB0aGUgdG9wIGxldmVsIG1ha2VmaWxlIHRhcmdldCB0byBtdWx0aXBsZSBpbmRpdmlkdWFsIHRhcmdldCwgdGhlbgogICAgcHV0IHRoZW0gdG8gdGhlIGNvbmZpZy5oLCBsZWF2ZSB0aGUgYm9hcmQgY29uZmlnIGZpbGUgdG8gaGFuZGxlCiAgICB0aGUgZGlmZmVyZW50IHRhcmdldHMuCgogICAgTm90ZSB0aGF0IHRoaXMgbWV0aG9kIHVzZXMgdGhlICdfJyh1bmRlcmxpbmUpIGFzIHRoZSBkZWxpbWl0ZXIgd2hlbgogICAgc3BsaXRzIHRoZSBib2FyZCBtYWtlIHRhcmdldC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+CgogICAgVGhpcyBhbHNvIHJldmVydHMgY29tbWl0IDUxMWMwMmY2MTFjYjVhZmExYjhjYTU5ODBjYWFhYWJhYTBkZTM3N2YuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjZWIyZDU3YzIyMDVkYjViYmQ4Njg1NzdmNzU2Yzc0YTI1NjgxNjBjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIFNlcCAxNSAyMToxMzoyNyAyMDA5ICswMjAwCgogICAga3diaW1hZ2UuYzogRml4IGNvbXBpbGUgd2FybmluZyB3aGVuIGJ1aWxkaW5nIG9uIDY0IGJpdCBzeXN0ZW1zIChhZ2FpbikKCiAgICBDb21taXQgNTEwMDNiODkgYXR0ZW1wdGVkIHRvIGZpeCBhIGJ1aWxkIHByb2JsZW0gb24gNjQgYml0IHN5c3RlbXMsCiAgICBidXQganVzdCB0dXJuZWQgaXQgaW50byBhIGJ1aWxkIHByb2JsZW0gb24gMzIgYml0IHN5c3RlbXMgKHNpbGx5IG1lKS4KCiAgICBOb3cgZG8gdGhlIFJpZ2h0IFRoaW5nIChUTSkgYW5kIHVzZSBhICIlenUiIHByaW50ZiBmb3JtYXQuCgogICAgQWxzbyBmaXggc3BlbGxpbmcgZXJyb3IuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA2YzdiYzkxZmIzZGJhMTg2ZDMzOThhMTY1M2Y2ZGIyMzY1MTBmZmE3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIFNlcCAxMSAxMTozMDozNCAyMDA5ICswMjAwCgogICAgYm9hcmQvYW1jYy9jb21tb24vZmxhc2guYzogRml4IGNvbXBpbGUgd2FybmluZwoKICAgIEZpeCB3YXJuaW5nOiAuLi9jb21tb24vZmxhc2guYzo5MTc6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQKICAgIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgQ2M6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNzBmYjgwOWM1NjNjMzQwNTM4MjY0ZDJhOTQzNjEzNWU3NGMzOGJmZQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBTZXAgMTEgMTE6NDc6MDcgMjAwOSArMDIwMAoKICAgIGJvYXJkL2FtY2MveXVjY2EvZmxhc2guYzogRml4IGNvbXBpbGUgd2FybmluZwoKICAgIEZpeCB3YXJuaW5nOiBmbGFzaC5jOjkxOTogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZCBwb2ludGVyCiAgICB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBDYzogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwMzBlYzUyZjhjYzgzMDE1Zjk2OGRiMzAyMDhmNGJkMDdmZWZmYTZjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIFNlcCAxMSAxMTo0NDozOSAyMDA5ICswMjAwCgogICAgYm9hcmQvYW1jYy90YWlodS9mbGFzaC5jOiBGaXggY29tcGlsZSB3YXJuaW5nCgogICAgRml4IHdhcm5pbmdzOgogICAgZmxhc2guYzogSW4gZnVuY3Rpb24gJ3dyaXRlX3dvcmRfMSc6CiAgICBmbGFzaC5jOjY5Njogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZCBwb2ludGVyIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCiAgICBmbGFzaC5jOiBJbiBmdW5jdGlvbiAnd3JpdGVfd29yZF8yJzoKICAgIGZsYXNoLmM6MTA0NDogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZCBwb2ludGVyIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIENjOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDBmZDNkOTAyZDkyMGYzZTYwZjg4NTMwYzMzZjFhZTc1ODEyNjA5NTEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgU2VwIDExIDExOjM3OjIwIDIwMDkgKzAyMDAKCiAgICBib2FyZC9ldGluL2RlYnJpcy9waGFudG9tLmM6IEZpeCBjb21waWxlIGVycm9yCgogICAgRml4IGJ1aWxkIHByb2JsZW0gY2F1c2VkIGJ5IGNvbW1pdCBlODRhYmExMzogIlJlcGxhY2UgQkNEMkJJTiBhbmQKICAgIEJJTjJCQ0QgbWFjcm9zIHdpdGggaW5saW5lIGZ1bmN0aW9ucyIKCiAgICBwaGFudG9tLmM6MTYzOiBlcnJvcjogcmVkZWZpbml0aW9uIG9mICdiY2QyYmluJwogICAgL2hvbWUvd2QvZ2l0L3UtYm9vdC93b3JrL2luY2x1ZGUvYmNkLmg6MTY6IGVycm9yOiBwcmV2aW91cyBkZWZpbml0aW9uIG9mICdiY2QyYmluJyB3YXMgaGVyZQogICAgcGhhbnRvbS5jOjE2ODogZXJyb3I6IHJlZGVmaW5pdGlvbiBvZiAnYmluMmJjZCcKICAgIC9ob21lL3dkL2dpdC91LWJvb3Qvd29yay9pbmNsdWRlL2JjZC5oOjIxOiBlcnJvcjogcHJldmlvdXMgZGVmaW5pdGlvbiBvZiAnYmluMmJjZCcgd2FzIGhlcmUKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgQ2M6IFNhbmdtb29uIEtpbSA8ZG9nb2lsQGV0aW5zeXMuY29tPgoKY29tbWl0IDUxNjg4MDFmNGI3MWMyZjhkY2Q5MmE4MGNmY2ZkYTg0MjQ2ZTY3ZmUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgU2VwIDExIDExOjI4OjIxIDIwMDkgKzAyMDAKCiAgICBib2FyZC9kYXZlL2NvbW1vbi9mbGFzaC5jOiBmaXggY29tcGlsZSB3YXJuaW5nCgogICAgRml4IHdhcm5pbmc6IC4uL2NvbW1vbi9mbGFzaC5jOjY2ODogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZAogICAgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBDYzogQW5kcmVhIE1hcnNvbiA8YW5kcmVhLm1hcnNvbkBkYXZlLXRlY2guaXQ+Cgpjb21taXQgOTcxMzhmYzQ4MDkxZjJiMDYzYzRlMzJmMzZkMDU4NTRiOWQxMTNmYgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBTZXAgMTEgMTE6MTU6MzEgMjAwOSArMDIwMAoKICAgIGJvYXJkL2VzZC9jcGNpNzUwL2lkZS5jOiBmaXggY29tcGlsZSB3YXJuaW5nCgogICAgRml4IHdhcm5pbmc6IGlkZS5jOjU0OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbAogICAgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIENjOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIENjOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGJhNzMwNjBjZjQxNjNiZDVlYjE3MTEwMjAxMjZlMmY3ZjYyZDM2M2UKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgU2VwIDExIDEwOjEzOjI2IDIwMDkgKzAyMDAKCiAgICBib2FyZC9lc2QvY29tbW9uL2ZsYXNoLmM6IEZpeCBjb21waWxlIHdhcm5pbmcKCiAgICBGaXggd2FybmluZzogLi4vY29tbW9uL2ZsYXNoLmM6NjM1OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkCiAgICBwb2ludGVyIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIENjOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIENjOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBBY2tlZC1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMmQ2ZDlmMDg0OGU5NTJlYTMzYzY1OGRmYmEzMzU2ODVhMjcyNWI4YgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBTZXAgMTEgMDk6MzY6MzEgMjAwOSArMDIwMAoKICAgIHNrOThsaW46IGZpeCBjb21waWxlIHdhcm5pbmdzCgogICAgRml4IHdhcm5pbmdzOgogICAgc2tnZS5jOiBJbiBmdW5jdGlvbiAnQm9hcmRJbml0TWVtJzoKICAgIHNrZ2UuYzoxMzg5OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKICAgIHNrZ2UuYzoxMzkwOiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKICAgIHNrZ2UuYzoxMzkxOiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKICAgIHNrZ2VzaXJxLmM6IEluIGZ1bmN0aW9uICdTa0dlUG9ydENoZWNrVXBYbWFjJzoKICAgIHNrZ2VzaXJxLmM6MTMwMTogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZCBwb2ludGVyIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCiAgICBza2dlc2lycS5jOjEzMDE6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwogICAgc2tnZXNpcnEuYzoxMzk4OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKICAgIHNrZ2VzaXJxLmM6MTM5ODogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZCBwb2ludGVyIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCiAgICBza3JsbXQuYzogSW4gZnVuY3Rpb24gJ1NrUmxtdEluaXQnOgogICAgc2tybG10LmM6NjYxOiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKICAgIHNreG1hYzIuYzogSW4gZnVuY3Rpb24gJ1NrTWFjUHJvbWlzY01vZGUnOgogICAgc2t4bWFjMi5jOjc1Mzogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZCBwb2ludGVyIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCiAgICBza3htYWMyLmM6NzUzOiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKICAgIHNreG1hYzIuYzogSW4gZnVuY3Rpb24gJ1NrTWFjSGFzaGluZyc6CiAgICBza3htYWMyLmM6ODAzOiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKICAgIHNreG1hYzIuYzo4MDM6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwogICAgc2t4bWFjMi5jOiBJbiBmdW5jdGlvbiAnU2tNYWNGbHVzaFR4Rmlmbyc6CiAgICBza3htYWMyLmM6MTExNTogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZCBwb2ludGVyIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCiAgICBza3htYWMyLmM6MTExNTogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZCBwb2ludGVyIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCiAgICBza3htYWMyLmM6IEluIGZ1bmN0aW9uICdTa01hY0ZsdXNoUnhGaWZvJzoKICAgIHNreG1hYzIuYzoxMTQ1OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKICAgIHNreG1hYzIuYzoxMTQ1OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKICAgIHNreG1hYzIuYzogSW4gZnVuY3Rpb24gJ1NrWG1Jbml0UGF1c2VNZCc6CiAgICBza3htYWMyLmM6MTk4Nzogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZCBwb2ludGVyIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCiAgICBza3htYWMyLmM6MTk4Nzogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZCBwb2ludGVyIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCiAgICBza3htYWMyLmM6IEluIGZ1bmN0aW9uICdTa1htT3ZlcmZsb3dTdGF0dXMnOgogICAgc2t4bWFjMi5jOjQyMzY6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwogICAgc2t4bWFjMi5jOjQyMzY6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwogICAgc2t4bWFjMi5jOjQyNDI6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwogICAgc2t4bWFjMi5jOjQyNDI6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBDYzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAzNzA4ZTRjZGIxZjFkM2Q1MTI4Y2Y4N2JlMDQwZDdlNmI4NWY2MGRkCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIFNlcCAxMSAwOToxMzo1OCAyMDA5ICswMjAwCgogICAgZHJpdmVycy9uZXQvbmF0c2VtaS5jOiBmaXggY29tcGlsZSB3YXJuaW5nCgogICAgRml4IHdhcm5pbmc6IG5hdHNlbWkuYzo3NTc6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlcgogICAgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgQ2M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNzhkMTlhMzk4Nzc4YTU4ZDdiNDBiMGM3OGUwMjY1MTUyNzFiMWE4NApBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJTW9uIFNlcCA3IDA5OjA4OjAyIDIwMDkgKzAyMDAKCiAgICBuZXQ6IGVtYWNsaXRlOiBDbGVhbnVwIGxpY2Vuc2UgdG8gYmUgR1BMIGNvbXBhdGlibGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVwaGVuIE5ldWVuZG9yZmZlciA8c3RlcGhlbi5uZXVlbmRvcmZmZXJAeGlsaW54LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KCmNvbW1pdCAwOTAwYmVlOWFiOTgxODQzOWIyZDEyOThmYTg5MDlhODhmNzRlYzBkCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglGcmkgQXVnIDE0IDEzOjQxOjE3IDIwMDkgKzAyMDAKCiAgICBtaWNyb2JsYXplOiBFbmFibGUgaHVzaCBwYXJzZXIKCiAgICBXaXRoIEh1c2ggcGFyc2VyIGlzIHBvc3NpYmxlIHRvIGNoYW5nZSBjb21tYW5kIGxpbmUgaW4gZHRiCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgoKY29tbWl0IDEzOTE2YWJmOTk2YjEyN2I2ODFkZGMyNjY2NGMyMzZkZWQyOGJhN2YKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CVRodSBBdWcgMjAgMjI6NDQ6MDIgMjAwOSArMDIwMAoKICAgIG1pY3JvYmxhemU6IFJlbW92ZSBBdG1hcmtUZWNobm8gU3V6YWt1IGJvYXJkCgogICAgVXNlcnMgc2hvdWxkIHVzZSBtaWNyb2JsYXplLWdlbmVyaWMgcGxhdGZvcm0uCiAgICBUaGlzIHBsYXRmb3JtIGlzIGxvbmdlciBub3Qgc3VwcG9ydGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KCmNvbW1pdCAzY2ViYTFkNDVkMDA3MTQ0ZDEwMzY4ZjkxZmY5ZTM2ZjNiNWYzOWExCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglUaHUgQXVnIDIwIDIyOjM2OjIwIDIwMDkgKzAyMDAKCiAgICBuZXQ6IFJlbW92ZSBvbGQgWGlsaW54IEVtYWMgZHJpdmVyCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgoKY29tbWl0IDJmZGRkNDQ0NjRkMDJlMGYzYWRlMDZkYWJlMGUxNjU4MzVmYTYxZjAKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CVdlZCBBdWcgMTkgMDg6MTA6MDggMjAwOSArMDIwMAoKICAgIG1pY3JvYmxhemU6IFNob3J0IHNpemUgb2YgZ2xvYmFsIGRhdGEgYW5kIGZpeCBtYWxsb2Mgc2l6ZQoKICAgIElmIGlzIGZ1bGwgbWFsbG9jIGFyZWEgZ2xvYmFsLCBkYXRhIGFyZSByZXdyaXRlIGJlY2F1c2UKICAgIHRoZXJlIHdhcyBiYWQgc2l6ZSBvZiBtYWxsb2MgYXJlYS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Cgpjb21taXQgYWVkYjQ2ODMwOTdkM2U1ZGU4ODMzZjRhOWUzNDY2NGQzZDJiZDA3NwpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJRnJpIEF1ZyAxNCAxNzowMjozNSAyMDA5ICswMjAwCgogICAgbWljcm9ibGF6ZTogQWRkIHNic3MsIHNjb21tb24gYW5kIENPTU1PTiBzeW1ib2xzIGZvciBjbGVhcmluZwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KCmNvbW1pdCA0YzE4ODM2NzBhY2JmMWNjODNjMDRkZjE4NzYyMzVjM2FlZGRlMTI4CkF1dGhvcjogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KRGF0ZToJV2VkIFNlcCA5IDEyOjM2OjA3IDIwMDkgKzAyMDAKCiAgICBwcGM0eHg6IFJlbmFtZSBjb21wYWN0Y2VudGVyIHRvIGludGlwCgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkMWMzYjI3NTI1YjY2NGU4YzRkYjZiYjE3M2VlZDUxYmZjODIyMGRlCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgU2VwIDkgMTY6MjU6MjkgMjAwOSArMDIwMAoKICAgIHBwYzR4eDogQmlnIGNsZWFudXAgb2YgUFBDNHh4IGRlZmluZXMKCiAgICBUaGlzIHBhdGNoIGNsZWFucyB1cCBtdWx0aXBsZSBpc3N1ZXMgb2YgdGhlIDR4eCByZWdpc3RlciAobW9zdGx5CiAgICBEQ1IsIFNEUiwgQ1BSLCBldGMpIGRlZmluaXRpb25zOgoKICAgIC0gQ2hhbmdlIGxvd2VyIGNhc2UgZGVmaW5lcyB0byB1cHBlciBjYXNlIChwbGI0X2FjciAtPiBQTEI0X0FDUikKICAgIC0gQ2hhbmdlIHRoZSBkZWZpbmVzIHRvIGJldHRlciBtYXRjaCB0aGUgbmFtZXMgZnJvbSB0aGUKICAgICAgdXNlcidzIG1hbnVhbHMgKGUuZy4gY3BycGxsYyAtPiBDUFIwX1BMTEMpCiAgICAtIFJlbW92YWwgb2Ygc29tZSB1bnVzZWQgZGVmaW5lcwoKICAgIFBsZWFzZSB0ZXN0IHRoaXMgcGF0Y2ggaW50ZW5zaXZlIG9uIHlvdXIgUFBDNHh4IHBsYXRmb3JtLiBFdmVuIHRob3VnaAogICAgSSB0cmllZCBub3QgdG8gYnJlYWsgYW55dGhpbmcgYW5kIHRlc3RlZCBzdWNjZXNzZnVsbHkgb24gbXVsdGlwbGUKICAgIDR4eCBBTUNDIHBsYXRmb3JtcywgdGVzdGluZyBvbiBjdXN0b20gcGxhdGZvcm1zIGlzIHJlY29tbWVuZGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkOGQ4NzI0YmUwNmRmNDM3NzIxNjJkYzM0NGFlMjBkZmE4MTRkYzcyCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIFNlcCAxMSAwOTowNTozMiAyMDA5ICswMjAwCgogICAgbmV0L2Jvb3RwLmM6IGZpeCBjb21waWxlIHdhcm5pbmcKCiAgICBGaXggd2FybmluZzogYm9vdHAuYzo2OTU6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlcgogICAgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgQ2M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNTEwMDNiODk4MTY4NDhjYmU4NmE4ZmU0OGY5NzBiYThiMTQwMDVmNQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBTZXAgMTEgMDg6NTg6MTEgMjAwOSArMDIwMAoKICAgIGt3YmltYWdlLmM6IEZpeCBjb21waWxlIHdhcm5pbmcgd2hlbiBidWlsZGluZyBvbiA2NCBiaXQgc3lzdGVtcwoKICAgIEZpeCB0aGlzIHdhcm5pbmcgd2hlbiBidWlsZGluZyBvbiA2NCBiaXQgc3lzdGVtczoKICAgIHRvb2xzL2t3YmltYWdlLmM6IEluIGZ1bmN0aW9uICdrd2JpbWFnZV9jaGVja3N1bTMyJzoKICAgIHRvb2xzL2t3YmltYWdlLmM6MTM1OiB3YXJuaW5nOiBmb3JtYXQgJyVkJyBleHBlY3RzIHR5cGUgJ2ludCcsCiAgICBidXQgYXJndW1lbnQgNCBoYXMgdHlwZSAnbG9uZyB1bnNpZ25lZCBpbnQnCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIENjOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Cgpjb21taXQgZTc5NjM3NzJlYjc4YTZhYTFmYTY1MDYzZDY0ZWFiM2E4NjI2ZGFhYwpBdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KRGF0ZToJV2VkIFNlcCA5IDIxOjExOjE4IDIwMDkgKzAyMDAKCiAgICBtdWFzMzAwMTogcmVtb3ZlIEJSRyBjbG9jayBub2RlIGZpeHVwIHRvIHVzZSBjb21tb24gbXBjODI2MCBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsLnppc3dpbGVyQG5vc2VyLmNvbT4KICAgIEFja2VkLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBjN2MxZGJiZjcxNTliMzhmMzMwMmI4NDVkZDk3ZDI4YTU0M2ZmOTFiCkF1dGhvcjogTWFyY2VsIFppc3dpbGVyIDxtYXJjZWxAemlzd2lsZXIuY29tPgpEYXRlOglXZWQgU2VwIDkgMjE6MDk6MDAgMjAwOSArMDIwMAoKICAgIHI3NzgwbXA6IGZpeCB0eXBvIGluIEV0aGVybmV0IGNoaXAgbW9kZWwgbnVtYmVyIGNvbW1lbnQuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyY2VsIFppc3dpbGVyIDxtYXJjZWwuemlzd2lsZXJAbm9zZXIuY29tPgoKY29tbWl0IDQ1Zjg5ZjM0MGI0ZDhhYTA5OWZkMDIyMjYwZGNiMTNjZjMzMjFiNjEKQXV0aG9yOiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+CkRhdGU6CVdlZCBTZXAgOSAyMToyMjowOCAyMDA5ICswMjAwCgogICAgZXA4MjQ4OiBhZGQgc3VwcG9ydCBmb3IgZGV2aWNlIHRyZWUgYW5kIHNlY29uZGFyeSBFdGhlcm5ldCBpbnRlcmZhY2UuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyY2VsIFppc3dpbGVyIDxtYXJjZWwuemlzd2lsZXJAbm9zZXIuY29tPgoKY29tbWl0IGFhMGM3YTg2Y2QyMzZiODE5MzIxOGEwOWUxMzY1Yzg5OTFiYjVkZGMKQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+CkRhdGU6CU1vbiBTZXAgNyAxNTowNTowMiAyMDA5ICswNTMwCgogICAgbWtpbWFnZTogQWRkIEtpcmt3b29kIEJvb3QgSW1hZ2Ugc3VwcG9ydCAoa3diaW1hZ2UpCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yICJrd2JpbWFnZSIgKEtpcmt3b29kIEJvb3QgSW1hZ2UpCiAgICBpbWFnZSB0eXBlcyB0byB0aGUgbWtpbWFnZSBjb2RlLgoKICAgIEZvciBkZXRhaWxzIHJlZmVyIHRvIGRvY3MvUkVBRE1FLmt3YmltYWdlCgogICAgVGhpcyBwYXRjaCBpcyB0ZXN0ZWQgd2l0aCBTaGVldmFwbHVnIGJvYXJkCgogICAgU2lnbmVkLW9mZi1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgogICAgQWNrZWQtYnk6IFJvbiBMZWUgPHJvbkBkZWJpYW4ub3JnPgoKICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KCmNvbW1pdCA3ODA5ZmJiOWFhZmQ2MGUzYTZlNWRmZTQ1NmFlMzBiOTNhYzYxMzM4CkF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgpEYXRlOglNb24gU2VwIDcgMTQ6NTk6MDkgMjAwOSArMDUzMAoKICAgIEtpcmt3b29kOiBTaGVldmFwbHVnOiBBZGQga3dpbWFnZSBjb25maWd1cmF0aW9uIGZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Cgpjb21taXQgYjAyOWRkZGM5YWU5NThiMWNjZjg3NTY0OWY1MmM2ZGIzOTZhNzQyZApBdXRob3I6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KRGF0ZToJTW9uIFNlcCA3IDE0OjU5OjA4IDIwMDkgKzA1MzAKCiAgICBta2ltYWdlOiBNYWtlIHRhYmxlX2VudHJ5IGNvZGUgZ2xvYmFsCgogICAgLSBtYWtlIGdldF90YWJsZV9lbnRyeV9pZCgpIGdsb2JhbAogICAgLSBtYWtlIGdldF90YWJsZV9lbnRyeV9uYW1lKCkgZ2xvYmFsCiAgICAtIG1vdmUgc3RydWN0IHRhYmxlX2VudHJ5IHRvIGltYWdlLmgKCiAgICBDdXJyZW50bHkgdGhpcyBjb2RlIGlzIHVzZWQgYnkgaW1hZ2UuYyBvbmx5LgoKICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhpcyBBUEkgZ2xvYmFsIHNvIGl0IGNhbiBiZSB1c2VkIGJ5IG90aGVyIHBhcnRzIG9mCiAgICBjb2RlLCB0b28uCgogICAgU2lnbmVkLW9mZi1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgogICAgQWNrZWQtYnk6IFJvbiBMZWUgPHJvbi5kZWJpYW4ub3JnPgoKICAgIEVkaXQgY29tbWVudHMgYW5kIGNvbW1pdCBtZXNzYWdlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZjY2NmRlYThhYjIxNWM3NmMzYzJhMDc3YWQyOTlmOTBkZDFhY2U3YwpBdXRob3I6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KRGF0ZToJTW9uIFNlcCA3IDE0OjU5OjA3IDIwMDkgKzA1MzAKCiAgICBta2ltYWdlOiBNYWtlIGdlbmltZ19wcmludF9zaXplKCkgZ2xvYmFsCgogICAgQ3VycmVudGx5IGl0IGlzIHVzZWQgYnkgaW1hZ2UuYyBvbmx5LCBidXQgdGhlIHRoZSBmdW5jdGlvbiBjYW4gYmUKICAgIHVzZWQgdG8gc3VwcG9ydCBhZGRpdGlvbmFsIG1raW1hZ2UgdHlwZXMgbGlrZSBmb3IgZXhhbXBsZSBrd2JpbWFnZSwKICAgIHNvIG1ha2UgdGhpcyBmdW5jdGlvbiBnbG9iYWxseSB2aXNpYmxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KCiAgICBFZGl0ZWQgY29tbWl0IG1lc3NhZ2UuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAzN2I4MDE4ODhjZjczYjE4Zjc4YzExMDkxNDBmZjQ0ZTNlMzc5MTRmCkF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgpEYXRlOglNb24gU2VwIDcgMTQ6NTk6MDYgMjAwOSArMDUzMAoKICAgIG1raW1hZ2U6IEluY2x1ZGUgbWlzc2luZyBmaWxlcyBpbiBidWlsZCBkZXBlbmRlbmN5IGNhbGN1bGF0aW9ucwoKICAgIEluY2x1ZGUgZGVmYXVsdF9pbWFnZS5vIGFuZCBmaXRfaW1hZ2UubyBpbnRvIHRoZSBidWlsZCBkZXBlbmRlbmN5CiAgICBjYWxjdWxhdGlvbnMuIFRoaXMgbWFrZXMgc3VyZSB0aGV5IGdldCByZWJ1aWx0IGlmIGFueSBvZiB0aGUgaGVhZGVycwogICAgdGhleSBpbmNsdWRlIGFyZSBtb2RpZmllZAoKICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KICAgIEFja2VkLWJ5OiBSb24gTGVlIDxyb25AZGViaWFuLm9yZz4KCiAgICBFZGl0ZWQgY29tbWl0IG1lc3NhZ2UuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAzYTIwMDNmNjFlZTc5YWM1M2QyMGMyNGNjODk2YzI2MzdhMmRmYzI0CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEF1ZyAxOSAxMTo0Mjo1NiAyMDA5ICswMjAwCgogICAgdG9vbHMvbWtpbWFnZTogZml4IGNvbXBpbGVyIHdhcm5pbmdzLCB1c2UgImNvbnN0IgoKICAgIFRoaXMgZml4ZXMgc29tZSBjb21waWxlciB3YXJuaW5nczoKICAgIHRvb2xzL2RlZmF1bHRfaW1hZ2UuYzoxNDE6IHdhcm5pbmc6IGluaXRpYWxpemF0aW9uIGZyb20gaW5jb21wYXRpYmxlIHBvaW50ZXIgdHlwZQogICAgdG9vbHMvZml0X2ltYWdlLmM6MjAyOiB3YXJuaW5nOiBpbml0aWFsaXphdGlvbiBmcm9tIGluY29tcGF0aWJsZSBwb2ludGVyIHR5cGUKICAgIGFuZCBjaGFuZ2VzIHRvIGNvZGUgdG8gdXNlICJjb25zdCIgYXR0cmlidXRlcyBpbiBhIGZldyBwbGFjZXMgd2hlcmUKICAgIGl0J3MgYXBwcm9wcmlhdGUuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA4OWE0ZDZiMTJmZDYzOTQ4OThiOGE0NTRjYmFiZWFmMWNkNTliYWU1CkF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgpEYXRlOglXZWQgQXVnIDE5IDE3OjM2OjQ2IDIwMDkgKzA1MzAKCiAgICB0b29sczogbWtpbWFnZTogc3BsaXQgY29kZSBpbnRvIGNvcmUsIGRlZmF1bHQgYW5kIEZJVCBpbWFnZSBzcGVjaWZpYwoKICAgIFRoaXMgaXMgYSBmaXJzdCBzdGVwIHRvd2FyZHMgcmVvcmdhbml6aW5nIHRoZSBta2ltYWdlIGNvZGUgdG8gbWFrZSBpdAogICAgZWFzaWVyIHRvIGFkZCBzdXBwb3J0IGZvciBhZGRpdGlvbmFsIGltYWdlcyB0eXBlcy4gQ3VycmVudCBta2ltYWdlCiAgICBjb2RlIGlzIHNwZWNpZmljIHRvIGdlbmVyYXRpbmcgdUltYWdlIGFuZCBGSVQgaW1hZ2UgZmlsZXMsIGJ1dCB0aGUKICAgIHNhbWUgZnJhbWV3b3JrIGNhbiBiZSB1c2VkIHRvIGdlbmVyYXRlIG90aGVyIGltYWdlIHR5cGVzIGxpa2UKICAgIEtpcmt3b29kIGJvb3QgaW1hZ2VzIChrd2JpbWFnZS1UQkQpLiBGb3IgdGhpcywgdGhlIG1raW1hZ2UgY29kZSBnZXRzCiAgICByZXdvcmtlZDoKCiAgICBIZXJlIGlzIHRoZSBicmllZiBwbGFuIGZvciB0aGUgc2FtZTotCiAgICBhKSBTcGxpdCBta2ltYWdlIGNvZGUgaW50byBjb3JlIGFuZCBpbWFnZSBzcGVjaWZpYyBzdXBwb3J0CiAgICBiKSBJbXBsZW1lbnQgY2FsbGJhY2sgZnVuY3Rpb25zIGZvciBpbWFnZSBzcGVjaWZpYyBjb2RlCiAgICBjKSBNb3ZlIGltYWdlIHR5cGUgc3BlY2lmaWMgY29kZSB0byByZXNwZWN0aXZlIEMgZmlsZXMKCSAgIEN1cnJlbnRseSB0aGVyZSBhcmUgdHdvIHR5cGVzIG9mIGZpbGUgZ2VuZXJhdGlvbi9saXN0CgkgICBzdXBwb3J0ZWQgKGkuZSB1SW1hZ2UsIEZJVCksIHRoZSBjb2RlIGlzIGFic3RyYWN0ZWQgZnJvbQoJICAgbWtpbWFnZS5jLy5oIGFuZCBwdXQgaW4gZGVmYXVsdF9pbWFnZS5jIGFuZCBmaXRfaW1hZ2UuYzsKCSAgIGFsbCBjb2RlIGluIHRoZXNlIGZpbGUgaXMgc3RhdGljIGV4Y2VwdCBpbml0IGZ1bmN0aW9uIGNhbGwKICAgIGQpIG1raW1hZ2VfcmVnaXN0ZXIgQVBJIGlzIGFkZGVkIHRvIGFkZCBuZXcgaW1hZ2UgdHlwZSBzdXBwb3J0CiAgICBBbGwgYWJvdmUgaXMgYWRkcmVzc2VkIGluIHRoaXMgcGF0Y2gKICAgIGUpIEFkZCBrd2JpbWFnZSB0eXBlIHN1cHBvcnQgdG8gdGhpcyBuZXcgZnJhbWV3b3JrIChUQkQpCiAgICBUaGlzIHdpbGwgYmUgaW1wbGVtZW50ZWQgaW4gYSBmb2xsb3dpbmcgY29tbWl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KICAgIEVkaXQgY29tbWl0IG1lc3NhZ2UsIGZpeCBjb2Rpbmcgc3R5bGUgYW5kIHR5cG9zLgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0NDk2MDlmNWIxMWNjZTZiZWJhNzMzOGJjNGNlMGYzMzQ1Mzc2YTBiCkF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgpEYXRlOglTdW4gQXVnIDE2IDA1OjI4OjE5IDIwMDkgKzA1MzAKCiAgICB0b29sczogbWtpbWFnZTogRml4ZWQgYnVpbGQgd2FybmluZ3MKCiAgICB1bmluaXRpYWxpemVkIHJldHZhbCB2YXJpYWJsZSB3YXJuaW5nIGZpeGVkCiAgICBjcmMzMiBBUElzIG1vdmVkIHRvIGNyYy5oIChuZXdseSBhZGRlZCkgYW5kIGJ1aWxkIHdhcm5pbmdzIGZpeGVkCgogICAgU2lnbmVkLW9mZi1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAxNDgyMWQ3ZGVhOGQ3MjA5ZjI0NTdjMzE3OWZhNjU1MWMwODhiYTcxCkF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgpEYXRlOglNb24gQXVnIDEwIDIwOjQ0OjA2IDIwMDkgKzA1MzAKCiAgICB0b29sczogbWtpbWFnZTogTWFrZWZpbGUgc29ydGVkCgogICAgVGhlIHRvb2xzL01ha2VmaWxlIGlzIHNvcnRlZCBmb3IgYWxsIGVudHJpZXMsCgogICAgU2lnbmVkLW9mZi1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgoKY29tbWl0IGY3NjQ0YzBiZjM1MDI1MjkwMzE2NTdhODY5ZmEyMTNjZGE1YTI0MjQKQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+CkRhdGU6CU1vbiBBdWcgMTAgMTg6NDk6MzcgMjAwOSArMDUzMAoKICAgIHRvb2xzOiBta2ltYWdlIDogYnVnZml4IHJldHVybnMgY29ycmVjdCB2YWx1ZSBmb3IgbGlzdCBjb21tYW5kCgogICAgTGlzdCBjb21tYW5kIGFsd2F5cyByZXR1cm4gIkVYSVRfU1VDQ0VTUyIgZXZlbiBpbiBjYXNlIG9mCiAgICBmYWlsdXJlIGJ5IGFueSBtZWFucy4KCiAgICBUaGlzIHBhdGNoIHJldHVybiAwIGlmIGxpc3QgY29tbWFuZCBpcyBzdWNlc3NmdWwsCiAgICByZXR1cm5zIG5lZ2F0aXZlIHZhbHVlIHJlcG9ydGVkIGJ5IGNoZWNrX2hlYWRlciBmdW5jdGlvbnMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDUxMWMwMmY2MTFjYjVhZmExYjhjYTU5ODBjYWFhYWJhYTBkZTM3N2YKQXV0aG9yOiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBTZXAgOCAxNTowNzoxMiAyMDA5ICswODAwCgogICAgbWtjb25maWc6IHBhc3MgdGhlIGJvYXJkIG5hbWUgdG8gYm9hcmQgY29uZmlnIGZpbGUKCiAgICBUaGVuIHdlIGNhbiBoYW5kbGUgZGlmZmVyZW50IGNvbmZpZyB0YXJnZXRzIGluIHRoZSBib2FyZCBmaWxlLCB3aGljaAogICAgc2ltcGxpZmllcyB0aGUgdG9wIGxldmVsIE1ha2VmaWxlIGZvciBib2FyZHMgdGhhdCBoYXZlIG11bHRpcGxlCiAgICBjb25maWcgdGFyZ2V0cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDY0MGFjNThkYmY2MWM3Njk4NjRiM2ZlNzYzMTQzMDZiNzMzNmNmMQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBTZXAgNyAyMzo1MjozMSAyMDA5ICswMjAwCgogICAgUmVtb3ZlICJhdG1lbF9kZl9wb3cyIiBiaW5hcnkgd2l0aCAibWFrZSBjbGVhbiIKCiAgICBDb21taXQgNjVmNmYwN2IgYWRkZWQgc3VwcG9ydCBmb3IgdGhlIGF0bWVsX2RmX3BvdzIgc3RhbmRhbG9uZSBwcm9ncmFtCiAgICBidXQgbWlzc2VkIHRvIGFkZCBhIHJ1bGUgdG8gcmVtb3ZlIGl0IHRvIHRoZSAiY2xlYW4iIG1ha2UgdGFyZ2V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMGIzNGRiYmQwYjY5NjljOThjNDQzMTNiMjkxODM2ZDkwNTZlYzQwYQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIFNlcCA3IDEwOjUyOjI0IDIwMDkgKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBjb21waWxhdGlvbiB3YXJuaW5nIGluIDR4eCBtaWlwaHkuYwoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIGZvbGxvd2luZyBjb21waWxhdGlvbiB3YXJuaW5nOgoKICAgIG1paXBoeS5jOiBJbiBmdW5jdGlvbiAnZW1hYzR4eF9taWlwaHlfcmVhZCc6CiAgICBtaWlwaHkuYzozNTM6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrCiAgICBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODIzNzliNTU2NDgxOWU2MjYyNGEzYzU4ZmJjNDNmMWFmZWRmNGY1ZgpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+CkRhdGU6CU1vbiBTZXAgNyAxNzowMDo0MSAyMDA5ICswMjAwCgogICAgcHBjNHh4OiBBZGQgQ09ORklHX1BDSV80eHhfUFRNX09WRVJXUklURSB0byBzb21lIGVzZCA0eHggYm9hcmRzCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5OWJjZjE0ZDU1M2YzOTkxNDhhNzY2MGI5OGY3YWNiZDhjYzcyZDgwCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KRGF0ZToJTW9uIFNlcCA3IDE3OjAwOjQwIDIwMDkgKzAyMDAKCiAgICBwcGM0eHg6IEFsbG93IG92ZXJ3cml0aW5nIHBjaSB0YXJnZXQgcmVnaXN0ZXJzIGZvciBhbGwgNHh4IGJvYXJkcwoKICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgQ09ORklHX1BDSV80eHhfUFRNX09WRVJXUklURSBvcHRpb24gYW5kIHJlcGxhY2VzCiAgICB0aGUgdWdseSAnaWYgZGVmaW5lZChCT0FSRDEpIHx8IC4uLiB8fCBkZWZpbmVkKEJPQVJEbiknIGNvbnN0cnVjdAogICAgaW4gNHh4IHBjaSBjb2RlLgoKICAgIFdoZW4gQ09ORklHX1BDSV80eHhfUFRNX09WRVJXUklURSBpcyBkZWZpbmVkIHRoZSBkZWZhdWx0IHB0bSByZWdpc3RlcgogICAgc2V0dXAgY2FuIGJlIG92ZXJ3cml0dGVuIHRocm91Z2ggZW52aXJvbm1lbnQgdmFyaWFibGVzIHB0bTFsYSwgcHRtMW1zLAogICAgcHRtMmxhIGFuZCBwdG0ybXMgdG8gZG8gYXBwbGljYXRpb24gc3BlY2lmaWMgcGNpIHRhcmdldCBCQVIgY29uZmlndXJhdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGNmYWIyYWUzMjJhOTlhZDU1MzY0ZDA1NDA1NGYxMzhmNTExMzBjMmEKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgpEYXRlOglGcmkgU2VwIDQgMTA6Mzc6MDQgMjAwOSArMDIwMAoKICAgIHBwYzR4eDogRml4IFBNQzQwNURFIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGZpeGVzIFBNQzQwNURFIHN1cHBvcnQuIFBhdGNoIDg1ZDZiZjBiIGZpeGVkIG91dC1vZi10cmVlCiAgICBidWlsZGluZyBmb3IgdGhpcyBib2FyZCBidXQgdGhlIGxvYWRwY2kgb2JqZWN0IGRpZCBub3QgZ2V0IGxpbmtlZAogICAgYWZ0ZXIgdGhhdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGM4MzU1YjlkOWY3NzhiZDEyZWUxOWM4ZjM0ZDg4ZTEzNzU4YTRlZmQKQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KRGF0ZToJV2VkIFNlcCAyIDE3OjI0OjU3IDIwMDkgKzAyMDAKCiAgICBhbWNjLWNvbW1vbi5oOiBVc2UgZmlsZW5hbWVzIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB1cGRhdGUgcHJvY2VkdXJlLgoKICAgIFVzaW5nIGEgc2VwYXJhdGUgInUtYm9vdCIgZW52aXJvbm1lbnQgdmFyaWFibGUgYWxsb3dzIHRvIGVhc2lseQogICAgc3BlY2lmeSBkaWZmZXJlbnQgZmlsZW5hbWVzIGZvciB0aGUgdXBkYXRlIHByb2NlZHVyZS4gIFRoaXMgaXMgYWxzbyBpbgogICAgbGluZSB3aXRoIG1hbnkgb3RoZXIgYm9hcmQgY29uZmlndXJhdGlvbnMgZGVmaW5pbmcgYW4gInVwZGF0ZSIgc2NyaXB0LgoKICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgogICAgQWNrZWQtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNmM5N2EyMGQwYjJmNTZjYjRmMzc0NWQ5NGIxZjk2OTg2ZThjY2VkNQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBTZXAgOSAxMTo0MDo0MSAyMDA5IC0wNTAwCgogICAgcHBjLzg1eHg6IEludHJvZHVjZSBSRVNFVF9WRUNUT1JfQUREUkVTUyB0byBoYW5kbGUgbm9uLXN0YW5kYXJkIGxpbmsgYWRkcmVzcwoKICAgIFNvbWUgYm9hcmQgcG9ydHMgcGxhY2UgVEVYVF9CQVNFIGF0IGEgbG9jYXRpb24gdGhhdCB3b3VsZCBjYXVzZSB0aGUKICAgIFJFU0VUX1ZFQ1RPUl9BRERSRVNTIG5vdCB0byBiZSBhdCAweGZmZmZmZmZjIHdoZW4gd2UgbGluay4JQnkgZGVmYXVsdAogICAgd2UgYXNzdW1lIFJFU0VUX1ZFQ1RPUl9BRERSRVNTIHdpbGwgYmUgMHhmZmZmZmZmYyBpZiB0aGUgYm9hcmQgZG9lc24ndAogICAgZXhwbGljaXRseSBzZXQgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIEFja2VkLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGMzNDgzMjJhYzdmNzYzMTgyOTVjZjI1ZmZhYjJjYzJhNDkwMGEyMzQKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgU2VwIDggMTM6NDY6NDYgMjAwOSAtMDUwMAoKICAgIHBwYy84NXh4OiBDbGVhbiB1cCBkb19yZXNldAoKICAgIFRoZXJlIGlzIG5vIHJlYXNvbiB0byBkbyBhIHJ1biB0aW1lIGNoZWNrIGZvciBlNTAwIHYxIGJhc2VkIGNvcmVzIHRvCiAgICBkZXRlcm1pbmUgaWYgd2UgaGF2ZSB0aGUgR1VUcyBSU1RDUiBmYWNpbGl0eS4gIE9ubHkgdGhlIGZpcnN0IGdlbmVyYXRpb24KICAgIG9mIFBRMyBwYXJ0cyAoTVBDODU0MC80MS81NS82MCkgZG8gbm90IGhhdmUgaXQuICBTbyBjaGVja2luZyB0byBzZWUgaWYKICAgIHdlIGFyZSBlNTAwIHYyIHdvdWxkIG1pc3MgZnV0dXJlIHBhcnRzIChsaWtlIGU1MDBtYykuCgogICAgSnVzdCBjaGFuZ2UgdGhpcyB0byBiZSBpZmRlZidkIGJhc2VkIG9uIENPTkZJR19NUEM4NXs0MCw0MSw1NSw2MH0uCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAyMTE3MGM4MGE4M2YxZTYwY2U3ZjZmODMwMDVlMDZhNWMyZDE1YThlCkF1dGhvcjogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBTZXAgMyAxOTo0Mjo0MCAyMDA5ICswNTMwCgogICAgcHBjLzg1eHgvODZ4eDogQnVnIGZpeDogY2FsbCB0byBwdXRzIGluIHByb2JlY3B1KCkgbW92ZWQgdG8gY2hlY2tjcHUoKS4KCiAgICBXaGlsZSBpbiBwcm9iZWNwdSgpIFVBUlQgaXMgc3RpbGwgbm90IGluaXRpYWxpemVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBvb25hbSBBZ2dyd2FsIDxwb29uYW0uYWdncndhbEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmODAyN2Y2YjQ3ODllMzM0MGYxMDYyMGQ4ZmI2MTEzYjk1Yjg4ZDljCkF1dGhvcjogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBTZXAgMiAxOTo0MDozNiAyMDA5ICswNTMwCgogICAgcHBjLzg1eHgvODZ4eDogRGV2aWNlIHRyZWUgZml4dXAgZm9yIG51bWJlciBvZiBjb3JlcwoKICAgIEZpeGluZyB0aGUgbnVtYmVyIG9mIGNvcmVzIGluIHRoZSBkZXZpY2UgdHJlZSBiYXNlZCBvbiB0aGUgYWN0dWFsIG51bWJlciBvZgogICAgY29yZXMgb24gdGhlIHN5c3RlbS4gIFdpdGggdGhpcyBzYW1lIGRldmljZSB0cmVlIGltYWdlIGNhbiBiZSB1c2VkIGZvciBkdWFsCiAgICBjb3JlIGFuZCBzaW5nbGUgY29yZSBtZW1iZXJzIG9mIG90aGVyd2lzZSBleGFjdGx5IHNhbWUgU09DLgoKICAgIEZvciBleGFtcGxlOgogICAgKiBQMjAyMFJEQiBhbmQgUDIwMTBSREIKICAgICogUDEwMjBSREIgYW5kIFAxMDExUkRCCiAgICAqIE1QQzg2NDFEIGFuZCBNUEM4NjQxCgogICAgU2lnbmVkLW9mZi1ieTogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDU4NDQyZGMwMWU0N2NjOGNlNDJhZjRmMjk0ODZhMzRjYWQ2MGI5ZDIKQXV0aG9yOiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIFNlcCAyIDEzOjM1OjIxIDIwMDkgKzA1MzAKCiAgICBwcGMvODV4eCw4Nnh4OiBIYW5kbGluZyBVbmtub3duIFNPQyB2ZXJzaW9uCgogICAgSW5jYXNlIHRoZSBzeXN0ZW0gaXMgZGV0ZWN0ZWQgd2l0aCBVbmtub3duIFNWUiwgbGV0IHRoZSBzeXN0ZW0gYm9vdAogICAgd2l0aCBhIGRlZmF1bHQgdmFsdWUgYW5kIGEgcHJvcGVyIG1lc3NhZ2UuCgogICAgTm93IHdpdGggZHluYW1pYyBkZXRlY3Rpb24gb2YgU09DIHByb3BlcnRpZXMgZnJvbSBTVlIsIHRoaXMgaXMgbmVjZXNzYXJ5CiAgICB0byBwcmV2ZW50IGEgY3Jhc2guCgogICAgU2lnbmVkLW9mZi1ieTogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDNlN2I2YzFmMmRiNWVjMzFmOWU3ZGJjM2UwY2JjYTYwMjE2N2E0NmEKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgU2VwIDIgMDk6MDM6MDggMjAwOSAtMDUwMAoKICAgIHBwYy84eHh4OiBSZWZhY3RvciBjb2RlIHRvIGRldGVybWluZSBpZiBQQ0kgaXMgZW5hYmxlZCAmIGFnZW50L2hvc3QKCiAgICBSZWZhY3RvciB0aGUgY29kZSBpbnRvIGEgc2ltcGxlIGJpdG1hc2sgbG9va3VwIHRhYmxlIHRoYXQgZGV0ZXJtaW5lcyBpZgogICAgYSBnaXZlbiBQQ0kgY29udHJvbGxlciBpcyBlbmFibGVkIGFuZCBpZiBpdHMgaW4gaG9zdC9yb290LWNvbXBsZXggb3IKICAgIGFnZW50L2VuZC1wb2ludCBtb2RlLgoKICAgIEVhY2ggcHJvY2Vzc29yIGluIHRoZSBQUTMvTVBDODZ4eCBmYW1pbHkgc3BlY2lmaWVkIGRpZmZlcmVudCBlbmNvZGluZ3MKICAgIGZvciB0aGUgY2ZnX2hvc3RfYWd0W10gYW5kIGNmZ19JT19wb3J0c1tdIGJvb3Qgc3RyYXBwaW5nIHNpZ25hbHMuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA1MDUyYTc3MWNmMTcyMmMzN2M3MzJmM2MzNDA3NzViNTVmYmUzYTIyCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIFNlcCAyIDA5OjAwOjUwIDIwMDkgLTA1MDAKCiAgICBwcGMvODV4eDogQ2xlYW51cCBtYWtlZmlsZSBhbmQgcmVsYXRlZCBvcHRpb25hbCBmaWxlcwoKICAgIENsZWFuZWQgdXAgY3B1L21wYzg1eHgvTWFrZWZpbGUgdG8gdXNlIENPTkZJR18qIGZvciB0aG9zZSBvYnZpb3VzIGNhc2VzCiAgICB3ZSBoYXZlIGxpa2UgUENJLCBDUE0yLCBRRS4gIEFsc28gcmV3b3JrZWQgaXQgdG8gdXNlIG9uZSBsaW5lIHBlciBmaWxlCiAgICBmb3IgZXZlcnl0aGluZyBhbmQgc29ydGVkIGluIGFscGhhYmV0aWNhbCBvcmRlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDc0YzVkZmQ4MWY5NGEyYTFmMGQ2OTkwZDE3YzQ5MWQ3MThlOGI5ZWEKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgU2VwIDQgMTc6MDU6MjQgMjAwOSAtMDUwMAoKICAgIGZzbDogYWRkIHJlZ2lzdGVyIHJlYWQtYmFjayB0byBzZXRfbGF3KCkKCiAgICBBZnRlciBwcm9ncmFtbWluZyBhIG5ldyBMQVcsIHdlIHNob3VsZCByZWFkLWJhY2sgdGhlIExBV0FSIHJlZ2lzdGVyIHNvIHRoYXQKICAgIHdlIHN5bmMgdGhlIHdyaXRlcy4gIE90aGVyd2lzZSwgY29kZSB0aGF0IGF0dGVtcHRzIHRvIHVzZSB0aGUgbmV3IExBVy1tYXBwZWQKICAgIG1lbW9yeSBtaWdodCBmYWlsIHJpZ2h0IGF3YXkuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYzcyNTkwODY4MTY0MDVmZTBlYjc3ZjRkYzIyZTc2OTgwYTA0MGNlZgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBTZXAgMyAwODo0MTozMSAyMDA5IC0wNTAwCgogICAgcHBjLzg1eHg6IEZpeCBidWcgaW4gc2V0dXBfbXAgY29kZQoKICAgIEl0cyBwb3NzaWJsZSB0aGF0IHdlIHRyeSBhbmQgY29weSB0aGUgYm9vdCBwYWdlIGNvZGUgb3V0IG9mIGZsYXNoIGludG8gYQogICAgRERSIGxvY2F0aW9uIHRoYXQgZG9lc24ndCBoYXZlIGEgVExCIGNvdmVyIGl0LiAgRm9yIGV4YW1wbGUsIGlmIHdlIGhhdmUKICAgIDNHIG9mIEREUiB3ZSB0eXBpY2FsbHkgb25seSBtYXAgdGhlIGZpcnN0IDJHLiAgSW4gdGhlIGNhc2VzIG9mIDRHKyB0aGlzCiAgICB3YXNuJ3QgYW4gaXNzdWUgc2luY2UgdGhlIHJlc2V0IHBhZ2UgVExCIG1hcHBpbmcgY292ZXJlZCB0aGUgbGFzdCBwYWdlCiAgICBvZiBtZW1vcnkgd2hpY2ggd2Ugd2FudGVkIHRvIGNvcHkgdG8uCgogICAgV2Ugbm93IGNoYW5nZSB0aGUgcGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgcmVzZXQgcGFnZSBUTEIgdG8gbWFwIHRvIHRoZQogICAgdHJ1ZSBwaHlzaWNhbCBsb2NhdGlvbiBvZiB0aGUgYm9vdCBwYWdlIGNvZGUsIGNvcHkgYW5kIHRoYW4gc2V0IHRoZQogICAgVExCIGJhY2sgdG8gaXRzIDE6MSBtYXBwaW5nIG9mIHRoZSByZXNldCBwYWdlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYzIyODdhZjE1NTJiZDYzMDk1NjU2OGQzOTU3YzM3MGY4NjgwMWI3ZApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBTZXAgMyAwODoyMDoyNCAyMDA5IC0wNTAwCgogICAgcHBjLzg1eHg6IEFkZCBhIHNpbXBsZSBmdW5jdGlvbiB0byBzZWFyY2ggdGhlIFRMQgoKICAgIEFsbG93IHVzIHRvIHNlYXJjaCB0aGUgVExCIGFycmF5IGJhc2VkIG9uIGFuIGFkZHJlc3MuICBUaGlzIGlzIHVzZWZ1bAogICAgaWYgd2Ugd2FudCB0byBjaGFuZ2UgYW4gZW50cnkgYnV0IGRvbnQga25vdyB3aGVyZSBpdCBoYXBwZW5zIHRvIGJlCiAgICBsb2NhdGVkLgoKICAgIEZvciBleGFtcGxlLCB0aGUgYm9vdCBwYWdlIG1hcHBpbmcgd2UgdXNlIG9uIE1QIG9yIHRoZSBmbGFzaCBUTEIgdGhhdAogICAgd2UgY2hhbmdlIHRoZSBXSU1HRSBzZXR0aW5ncyBmb3IgYWZ0ZXIgd2UndmUgcmVsb2NhdGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMjZmNGNkYmE2YjUxZGVhYjRlYzk5ZDYwYmUzODEyNDQwNjhlZjk1MApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CUZyaSBBdWcgMTQgMTM6Mzc6NTQgMjAwOSAtMDUwMAoKICAgIDg1eHg6IEFkZCBzdXBwb3J0IGZvciBzZXR0aW5nIElWT1JzIHRvIGZpeGVkIG9mZnNldCBkZWZhdWx0cwoKICAgIEluIGZ1dHVyZSBCb29rLUUgaW1wbGVtZW50YXRpb25zIElWT1JzIHdpbGwgbW9zdCBsaWtlbHkgZ28gYXdheSBhbmQgYmUKICAgIHJlcGxhY2VkIHdpdGggZml4ZWQgb2Zmc2V0cy4gIFRoZSBJVlBSIHdpbGwgY29udGludWUgdG8gZXhpc3QgdG8gYWxsb3cKICAgIGZvciByZWxvY2F0aW9uIG9mIHRoZSBpbnRlcnJ1cHQgdmVjdG9ycy4KCiAgICBUaGlzIGNvZGUgYWRkcyBzdXBwb3J0IHRvIHNldHVwIHRoZSBJVk9ScyBhcyB0aGVpciBmaXhlZCBvZmZzZXQgdmFsdWVzCiAgICBwZXIgdGhlIElTQSAyLjA2IHNwZWMgd2hlbiB3ZSB0cmFuc2l0aW9uIGZyb20gdS1ib290IHRvIGFub3RoZXIgT1MKICAgIGVpdGhlciB2aWEgJ2Jvb3RtJyBvciBhIGNwdSByZWxlYXNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZGExY2Q5NTVkZmVjMzViMGUxNTM4MWFkMWVlMjQ4ZmExOTRlZWQ4MgpBdXRob3I6IERpcGVuIER1ZGhhdCA8ZGlwZW4uZHVkaGF0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBTZXAgMiAxMToyNTowOCAyMDA5ICswNTMwCgogICAgcHBjLzg1eHg6IEZpeCB1cCBlU0RIQyBjb250cm9sbGVyIGNsb2NrIGZyZXF1ZW5jeSBpbiB0aGUgZGV2aWNlIHRyZWUKCiAgICBTaWduZWQtb2ZmLWJ5OiBEaXBlbiBEdWRoYXQgPGRpcGVuLmR1ZGhhdEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAyYWJiZDMxZGE2ZDkwMDQ3M2VkNjc4Y2E1MDc4OWVlNThiYzliYjAwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIFNlcCAxIDIyOjAxOjU0IDIwMDkgLTA1MDAKCiAgICBwcGMvOHh4eDogUmVtb3ZlIGRkcl9wZF9jbnRsIHJlZ2lzdGVyIHNpbmNlIGl0IGRvZXNuJ3QgZXhpc3QKCiAgICBUaGUgZGRyX3BkX2NudGwgaXNuJ3QgZGVmaW5lZCBpbiBhbnkgcmVmZXJlbmNlIG1hbnVhbCBhbmQgdGh1cyB3ZSB3aWwKICAgIHJlbW92ZSBlc3BlY2lhbGx5IHNpbmNlIHdlIHNldCBpdCB0byAwLCB3aGljaCB3b3VsZCBtb3N0IGxpa2VseSBiZSBpdHMKICAgIFBPUiB2YWx1ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDEzZDQ2YWIyNTcyYzAyODNkMzRmOTNiZWJjOWE0MTI5NWVmODRjYTUKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgU2VwIDEgMjE6MDc6MDggMjAwOSAtMDUwMAoKICAgIHBwYy84eHh4OiByZWxvY2F0ZSBjcHUgcG9pbnRlciBpbiBnbG9iYWwgZGF0YQoKICAgIE5vdyB0aGF0IHdlIGhhdmUgYSBwb2ludGVyIHRvIHRoZSBjcHUgc3RydWN0IHdlIG5lZWQgdG8gcmVsb2NhdGUgaXQgb25jZQogICAgd2UgZ2V0IGludG8gcmFtLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgOWM2NzFlNzA2MjcyMDA3NGY4OTRlZTMyOWVhYTY5OTViMDgyMzcyNwpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglXZWQgU2VwIDIgMDI6MTc6MjQgMjAwOSArMDQwMAoKICAgIGZzbDogc3lzX2VlcHJvbTogRml4ICdtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkJyB3YXJuaW5nCgogICAgVGhlIHdhcm5pbmcgaXMgYm9ndXMsIHNvIHNpbGVuY2UgaXQgYnkgaW5pdGlhbGl6aW5nIHRoZSAncmV0JyB2YXJpYWJsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KICAgIEFja2VkLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA2YjllYTA4YzUwMTBlYWI1YWQxMDU2YmM5YmYwMzNhZmI2NzJkOWNjCkF1dGhvcjogRGlwZW4gRHVkaGF0IDxkaXBlbi5kdWRoYXRAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIFNlcCAxIDE3OjI3OjAwIDIwMDkgKzA1MzAKCiAgICBwcGMvODV4eDogVXNlIENPTkZJR19GU0xfRVNESEMgdG8gZW5hYmxlIHNkaGMgY2xrCgogICAgRW5hYmxlIGVTREhDIENsb2NrIGJhc2VkIG9uIGdlbmVyaWMgQ09ORklHX0ZTTF9FU0RIQyBkZWZpbmUgaW5zdGVhZCBvZiBhCiAgICBwbGF0Zm9ybSBkZWZpbmUuICBUaGlzIHdpbGwgZW5hYmxlIGFsbCB0aGUgODV4eCBwbGF0Zm9ybXMgdG8gdXNlIHNkaGNfY2xrCiAgICBiYXNlZCBvbiBDT05GSUdfRlNMX0VTREhDLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdhbyBHdWFuaHVhIDxCMjI4MjZAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERpcGVuIER1ZGhhdCA8ZGlwZW4uZHVkaGF0QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDkyNDc3YTYzMWJiZGEyZGMwZGQyMTk0ZTAzZjliZDNkZGI4YjljMjEKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgU2VwIDQgMTY6Mjg6MzUgMjAwOSAtMDUwMAoKICAgIGZzbF9pMmM6IGluY3JlYXNlIEkyQyB0aW1lb3V0IHZhbHVlcyBhbmQgbWFrZSB0aGVtIGNvbmZpZ3VyYWJsZQoKICAgIFRoZSB2YWx1ZSBvZiBJMkNfVElNRU9VVCBpbiBmc2xfaTJjLmMgaGFzIHNldmVyYWwgcHJvYmxlbXMuICBGaXJzdCwgaXQgaXMKICAgIGRlZmluZWQgYXMgQ09ORklHX0haLzQsIGJ1dCBpdCBpcyB1c2VkIGFzIGEgY291bnQgb2YgbWljcm9zZWNvbmRzLCBzbyBpdCBtYWtlcwogICAgbm8gc2Vuc2UgdG8gZGVyaXZlIGl0IGZyb20gYSBjbG9jayByYXRlLiAgU2Vjb25kLCB0aGUgY3VycmVudCB2YWx1ZSAoMjUwKSBpcwogICAgdG9vIGxvdyBmb3Igc29tZSBib2FyZHMsIHNvIGl0IG5lZWRzIHRvIGJlIGluY3JlYXNlZC4gIFRoaXJkLCB0aGUgdGltZW91dAogICAgbmVjZXNzYXJ5IGZvciBtdWx0aXBsZS1tYXN0ZXIgYXJiaXRyYXRpb24gaXMgbGFyZ2VyIHRoYW4gdGhlIHRpbWVvdXQgZm9yIGJhc2ljCiAgICByZWFkL3dyaXRlIG9wZXJhdGlvbnMsIHNvIHdlIHNob3VsZG4ndCBoYXZlIGEgc2luZ2xlIGNvbnN0YW50IGZvciBib3RoIHRpbWVvdXRzLgogICAgRmluYWxseSwgaXQgd291bGQgYmUgbmljZSBpZiB3ZSBjb3VsZCBvdmVycmlkZSB0aGVzZSB2YWx1ZXMgb24gYSBwZXItYm9hcmQKICAgIGJhc2lzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIFRlc3RlZC1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIEFja2VkLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDVkYTcxZWZhMThlOGI0ZWFjOWFmZDhiZmExM2UzYzdlN2RkZGUxZDAKQXV0aG9yOiBFcmljIE1pbGxicmFuZHQgPGVtaWxsYnJhbmR0QGNvbGRoYXVzLmNvbT4KRGF0ZToJVGh1IFNlcCAzIDA4OjA5OjQ0IDIwMDkgLTA1MDAKCiAgICBSZXNldCBpMmMgc2xhdmUgZGV2aWNlcyBkdXJpbmcgaW5pdCBvbiBtcGM1eHh4IGNwdXMKCiAgICBSZXNldCBhbnkgaTJjIGRldmljZXMgdGhhdCBtYXkgaGF2ZSBiZWVuIGludGVycnVwdGVkIGR1cmluZyBhIHN5c3RlbSByZXNldC4KICAgIE5vcm1hbGx5IHRoaXMgd291bGQgYmUgYWNjb21wbGlzaGVkIGJ5IGNsb2NraW5nIHRoZSBsaW5lIHVudGlsIFNDTCBhbmQgU0RBCiAgICBhcmUgcmVsZWFzZWQgYW5kIHRoZW4gc2VuZGluZyBhIHN0YXJ0IGNvbmR0aWlvbiAoRnJvbSBhbiBBdG1lbCBkYXRhc2hlZXQpLgogICAgVGhlcmUgaXMgbm8gZGlyZWN0IGFjY2VzcyB0byB0aGUgaTJjIHBpbnMgc28gaW5zdGVhZCBjcmVhdGUgc3RhcnQgY29tbWFuZHMKICAgIHRocm91Z2ggdGhlIGkyYyBpbnRlcmZhY2UuCVNlbmQgYSBzdGFydCBjb21tYW5kIHRoZW4gZGVsYXkgZm9yIHRoZSBTREEgSG9sZAogICAgdGltZSwgcmVwZWF0IHRoaXMgYnkgZGlzYWJsaW5nL2VuYWJsaW5nIHRoZSBidXMgYSB0b3RhbCBvZiA5IHRpbWVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVyaWMgTWlsbGJyYW5kdCA8ZW1pbGxicmFuZHRAZGVrYXJlc2VhcmNoLmNvbT4KCmNvbW1pdCAyZDQwNzJjMDZiNTU0OTQ0NGU0MTQwMjMxYmJhM2Q0N2Q5YjBiYzUzCkF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgpEYXRlOglTYXQgQXVnIDE1IDExOjIwOjU4IDIwMDkgLTA0MDAKCiAgICBBUk06IERhVmluY2k6IEFkZGluZyBTdXBwb3J0IGZvciBEYVZpbmNpIERNMzY1IEVWTQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgRE0zNjUgRVZNLgogICAgSXQgaGFzIGJlZW4gdGVzdGVkIG9uIGEgRE0zNjUgRVZNLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KCmNvbW1pdCBjZjQ2MzA5MWJjZThiMGY4OTUxZGQwOGY5NDc1NGQwOGQ2NDc5M2I4CkF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgpEYXRlOglTYXQgQXVnIDE1IDExOjIwOjQ0IDIwMDkgLTA0MDAKCiAgICBBUk06IERhVmluY2k6IERhVmluY2kgRE0zNjUgU09DIHNwZWNpZmljIGNvZGUKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgRGFWaW5jaSBETTM2NSBTT0MuCgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgoKY29tbWl0IGU4MzBiNjZiMzU5MmYxMTUzMTY2MDBkMzcwMzk5ZjNlZTE0OGU5MDkKQXV0aG9yOiBJbGtvIElsaWV2IDxpbGlldkByb25ldGl4LmF0PgpEYXRlOglTYXQgU2VwIDUgMDI6NTE6MzQgMjAwOSArMDIwMAoKICAgIERNOTAwMCBpbml0IGZvciBwbTkyNjEKCiAgICBTaWduZWQtb2ZmLWJ5OiBJbGtvIElsaWV2IDxpbGlldkByb25ldGl4LmF0PgoKY29tbWl0IGMzNWQ3Y2YwNzFmMTcxYmQ2YmJhNjlmMTU2M2E2YWM1NzhhMThlYTYKQXV0aG9yOiBGcmVkZXJpayBLcmlld2l0eiA8ZnJlZGVyaWtAa3JpZXdpdHouZXU+CkRhdGU6CVN1biBBdWcgMjMgMTI6NTY6NDIgMjAwOSArMDIwMAoKICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgRGV2S2l0ODAwMCBib2FyZAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgRGV2S2l0ODAwMCBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBGcmVkZXJpayBLcmlld2l0eiA8ZnJlZGVyaWtAa3JpZXdpdHouZXU+Cgpjb21taXQgMTI3ZjlhZTU3NTk5MWFlZTNlMTA1ZTE0NDhjNDliNWI0ZTI1NDk5OApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBBdWcgMjMgMTY6MzI6NDAgMjAwOSArMDIwMAoKICAgIG9tYXAzOiBtb3ZlIHRoZSBvdGhlciBib2FyZHMgdG8gYm9hcmQvCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAzNTBmM2FjNTczMWZhZjBmMDJjYTU1YWIwMTY2OTRiN2M3MjY5Zjk3CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIEF1ZyAyMyAxNjozMjozOSAyMDA5ICswMjAwCgogICAgYXJtOiBtb3ZlIExvZ2ljcGQncyBib2FyZHMgdG8gYm9hcmQvbG9naWNwZC8KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDBhMGU0YmFkOTY5M2VmMWQyY2E4YzMzYmE1NTFkMzk1YTRlM2Q2NDEKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gQXVnIDIzIDE2OjMyOjM4IDIwMDkgKzAyMDAKCiAgICBvbWFwOiBtb3ZlIFRJJ3MgYm9hcmRzIHRvIGJvYXJkL3RpLwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgOWYyM2NhNDJiM2JhMTliMjRlNjZmYWRlNTcyZjJiODZkOTI5YjZlOApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBTZXAgNCAyMzoyMDoyOSAyMDA5ICswMjAwCgogICAgQVJNOiBVcGRhdGUgbWFjaC10eXBlcwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMjYyYWUwYTYxOTNmMTBiNmE5NGU4NmQyZjc1MmU3ZjU1MTA0MTZmYQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IFNlcCAzIDIzOjEyOjQ3IDIwMDkgLTA0MDAKCiAgICBwdXNoIExPQURfQUREUiBvdXQgdG8gYXJjaCBtayBmaWxlcwoKICAgIFJhdGhlciB0aGFuIG1haW50YWluL2V4dGVuZCB0aGUgY3VycmVudCBpZmVxKCQoQVJDSCkpIG1lc3MgdGhhdCBleGlzdHMgaW4KICAgIHRoZSBzdGFuZGFsb25lIE1ha2VmaWxlLCBwdXNoIHRoZSBzZXR0aW5nIHVwIG9mIExPQURfQUREUiBvdXQgdG8gdGhlIGFyY2gKICAgIGNvbmZpZy5tayAoYW5kIHJlbmFtZSB0byBTVEFOREFMT05FX0xPQURfQUREUiBpbiB0aGUgcHJvY2VzcykuICBUaGlzIGtlZXBzCiAgICB0aGUgY29tbW9uIGNvZGUgY2xlYW4gYW5kIGxldHMgdGhlIGFyY2ggZG8gd2hhdGV2ZXIgY3JhenkgY3JhcCBpdCB3YW50cyBpbgogICAgaXRzIG93biBhcmVhLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA3NjYyZWIyYjlkNmZiYzk1ZWNiMWZiM2U1YjUxNDcyMTVlMjUxZTdkCkF1dGhvcjogR2l1c2VwcGUgQ09ORE9SRUxMSSA8Z2l1c2VwcGUuY29uZG9yZWxsaUBzdC5jb20+CkRhdGU6CVRodSBTZXAgMyAwNzozNzo0NiAyMDA5IC0wNDAwCgogICAgemxpYjogZml4IGNvZGUgd2hlbiBERUJVRyBpcyBkZWZpbmVkCgogICAgUmVtb3ZlZCBzdGRpby5oIGluY2x1c2lvbiBhbmQgbW92ZWQgdHJhY2UgbWFjcm9zIHRvIHVzZSBwcmludGYgYXZvaWRpbmcgdG8KICAgIHdyaXRlIGRlYnVnIGluZm9ybWF0aW9ucyB0byBzdGFuZGFyZCBlcnJvci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHaXVzZXBwZSBDb25kb3JlbGxpIDxnaXVzZXBwZS5jb25kb3JlbGxpQHN0LmNvbT4KCmNvbW1pdCBjZmNiZjhjNGNmM2RhOTZiOWUzZjY1MjUwNmI2NjRiZmQ3NjZhNTIwCkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBTZXAgMiAxNjo0NTozMSAyMDA5IC0wNTAwCgogICAgbXhjX25hbmQ6IFJlbW92ZSBGcmVlc2NhbGUncyAiQWxsIFJpZ2h0cyBSZXNlcnZlZC4iCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMDAxZDYxNTY4MTMzMzU2OWM1NTVlNmNkZTA3ZDhkMjNlMmM1MzZmYgpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglXZWQgU2VwIDIgMTc6NTg6NDggMjAwOSArMDQwMAoKICAgIG1wYzgzeHgvc2VyZGVzOiBMaWNlbnNlIGNsZWFudXA6IHJlbW92ZSAiQWxsIFJpZ2h0cyBSZXNlcnZlZCIgbm90aWNlCgogICAgIkFsbCBSaWdodHMgUmVzZXJ2ZWQiIGNvbmZsaWN0cyB3aXRoIHRoZSBHUEwuCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Cgpjb21taXQgNDZmZjZkNDYxMzIxZjViNTY1Y2M3OTBlMDI2NzkyMzdmZmQ5YTIwZgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBTZXAgMiAxNDo1NzoyNyAyMDA5ICswMjAwCgogICAgTGljZW5zZSBjbGVhbnVwOiByZW1vdmUgdW5pbnRlbmRlZCAiQWxsIFJpZ2h0cyBSZXNlcnZlZCIgbm90aWNlcy4KCiAgICBTb21lIGZpbGVzIGluY2x1ZGVkIG15IG9sZCBzdGFuZGVyZCBmaWxlIGhlYWRlciB3aGljaCBoYWQgYSAiQWxsCiAgICBSaWdodHMgUmVzZXJ2ZWQiIHBhcnQuIEFzIHRoaXMgaGFzIG5ldmVyIGJlZW4gbXkgaW50ZW50aW9uLCBJIHJlbW92ZQogICAgdGhlc2UgbGluZXMgdG8gbWFrZSB0aGUgZmlsZXMgY29tcGF0aWJsZSB3aXRoIEdQTCB2LjIgYW5kIGxhdGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMzdkYWE3N2YzY2FmYjVlYzlhOTc0ZWZmM2RiMmFmNGEwNTYwYTllZgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBTZXAgMiAxMDoyMToyMCAyMDA5ICswMjAwCgogICAgY21kX210ZHBhcnRzLmM6IGZpeCBjb21waWxlciB3YXJuaW5nIGluIGRlYnVnIGNvZGUKCiAgICBGaXggd2FybmluZyBtZXNzYWdlczoKICAgIGNtZF9tdGRwYXJ0cy5jOjE0Mjk6IHdhcm5pbmc6IGZvcm1hdCAnJTA4bHgnIGV4cGVjdHMgdHlwZSAnbG9uZwogICAgdW5zaWduZWQgaW50JywgYnV0IGFyZ3VtZW50IDYgaGFzIHR5cGUgJ3UzMicKICAgIGNtZF9tdGRwYXJ0cy5jOjE0Mjk6IHdhcm5pbmc6IGZvcm1hdCAnJTA4bHgnIGV4cGVjdHMgdHlwZSAnbG9uZwogICAgdW5zaWduZWQgaW50JywgYnV0IGFyZ3VtZW50IDcgaGFzIHR5cGUgJ3UzMicKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGQ4YmM1NWE2ZmIyODg3NmFiY2JmNGEzZmMzYjZjM2NlNDI5YzFiYjMKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJVHVlIFNlcCAxIDIwOjU4OjAzIDIwMDkgKzA0MDAKCiAgICBNb3ZlIHVuaW5pdGlhbGl6ZWRfdmFyKCkgbWFjcm8gZnJvbSB1YmlfdWJvb3QuaCB0byBjb21waWxlci5oCgogICAgVGhpcyBpcyBuZWVkZWQgc28gdGhhdCB3ZSBjb3VsZCB1c2UgdGhpcyBtYWNybyBmb3Igbm9uLVVCSSBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgoKY29tbWl0IGQ3Mjg3MWUxMzg3MDk0OTcyNTY5ZTRiNzdjMjVlODgwMjBmN2I2OGYKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgU2VwIDEgMTE6MjQ6NDUgMjAwOSAtMDUwMAoKICAgIGFybTogUmVtb3ZlIC1mbm8tc3RyaWN0LWFsaWFzaW5nCgogICAgLWZuby1zdHJpY3QtYWxpYXNpbmcgaXMgaGlkZGluZyB3YXJuaW5ncy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGQ2MjgxZmYwY2MyZWJiNWQ2YTVjM2UxMDIxODM3MzM0MDc0ZjkyZWMKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgU2VwIDEgMTE6MjQ6NDQgMjAwOSAtMDUwMAoKICAgIHBwYzogUmVtb3ZlIC1mbm8tc3RyaWN0LWFsaWFzaW5nCgogICAgLWZuby1zdHJpY3QtYWxpYXNpbmcgaXMgaGlkZGluZyB3YXJuaW5ncy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDc5NWQyNDZjMjc4ZTcwYjRiYTk4NjhjYzlmMmM4ZmJhZGE0OWQzODgKQXV0aG9yOiBFcmljIE1pbGxicmFuZHQgPGVtaWxsYnJhbmR0QGNvbGRoYXVzLmNvbT4KRGF0ZToJRnJpIEF1ZyAyOCAwNzoxNDowNCAyMDA5IC0wNTAwCgogICAgZ2FsYXh5NTIwMDogQWRkIGNoaXAgc2VsZWN0IHJlZ2lvbiBmb3IgYW4gRXBzb24gUzFEMTUzMTMKCiAgICBTaWduZWQtb2ZmLWJ5OiBFcmljIE1pbGxicmFuZHQgPGVtaWxsYnJhbmR0QGRla2FyZXNlYXJjaC5jb20+Cgpjb21taXQgM2RmYWQ0MGEwNDU5ZjYzMDk5ZTE3N2RjMTVhMWRmMzlkMDQ4Zjg2MApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBBdWcgMjcgMDg6MjM6NTUgMjAwOSAtMDUwMAoKICAgIEFkZCBhYmlsaXR5IGZvciBhcmNoIGNvZGUgdG8gbWFrZSBjaGFuZ2VzIGJlZm9yZSB3ZSBib290CgogICAgQWRkZWQgYSBhcmNoX3ByZWJvb3Rfb3MoKSBmdW5jdGlvbiB0aGF0IGNwdSBzcGVjaWZpYyBjb2RlIGNhbiBpbXBsZW1lbnQgdG8KICAgIGFsbG93IGZvciB2YXJpb3VzIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHN0YXRlIG9mIHRoZSBtYWNoaW5lIHJpZ2h0IGJlZm9yZQogICAgd2UgYm9vdC4gIFRoaXMgY2FuIGJlIHVzZWZ1bCB0byBzZXR1cCByZWdpc3RlciBzdGF0ZSB0byBhIHNwZWNpZmljCiAgICBjb25maWd1cmF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgOWVhMDA1ZmI0NDI4YzkyMjUzNmZhNzU5OTFjZTk5NzIzMDRhMDJmYgpBdXRob3I6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU2F0IEF1ZyAyMiAwMzo0OTo1MiAyMDA5ICswODAwCgogICAgVXNlIGRpZmZlcmVudCBQQkEgdmFsdWUgZm9yIEUxMDAwIFBDSSBhbmQgUENJZSBjYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBBbmRy6SBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Cgpjb21taXQgNWIzNGEyOTZkNDdiMjM2ZGFmYmNhZjFjOTFhZTExYjVhZWIxZWY1MQpBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CVN1biBBdWcgMjMgMTI6NTk6NTggMjAwOSArMTAwMAoKICAgIEFkZCBQQ0kgc3VwcG9ydCB0byBlTkVUIGJvYXJkCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KCmNvbW1pdCBmNTBiNjE5ZDljYjI5N2IwMTI1ZmU3OGRjZDZmMjU1ZWIwZDkxNjU5CkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJU3VuIEF1ZyAyMyAxMjo1OTo1NyAyMDA5ICsxMDAwCgogICAgaTM4NjogTW92ZWQgUENJIGZyb20gI2lmZGVmIHRvIGNvbmRpdGlvbmFsIGNvbXBpbGUgZm9yIHNjNTIwIGJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Cgpjb21taXQgZWQ3YTFiNjgxZGUxZTMxZDE4ZDViOTJlMjc2N2FlOGRmMzI0MTY4NwpBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CVN1biBBdWcgMjMgMTI6NTk6NTYgMjAwOSArMTAwMAoKICAgIGkzODY6IFJlcGxhY2UgW3JlYWQsIHdyaXRlXV9tbWNyX1tieXRlLCB3b3JkLCBsb25nXSB3aXRoIG1lbW9yeSBtYXBwZWQgc3RydWN0dXJlCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KCmNvbW1pdCA5YjMyZjk2YjViOTJiYTEzZmRiNGI1ZWI2Mzc3MzQ3NTIyMzVmMjYwCkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJU3VuIEF1ZyAyMyAxMjo1OTo1NSAyMDA5ICsxMDAwCgogICAgTWlzYyBzYzUyMCBjZHAgZml4dXBzCgogICAgTm93IHRoYXQgdGhlIFBDSSwgU0FUQSBldCBhbCBjb21waWxlIHByb2JsZW1zIGhhdmUgYmVlbiByZXNvbHZlZCwgdGhlCiAgICBjbHVkZ2UgdGhhdCB3YXMgYXBwbGllZCB0byBhdm9pZCB0aGVtIGNhbiBiZSByZW1vdmVkCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KCmNvbW1pdCA5MWVlNGUxODNjYjdhYzVmODZlNzY3M2VhZDUxNDAwZjE5OTA2NjM1CkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJU3VuIEF1ZyAyMyAxMjo1OTo1NCAyMDA5ICsxMDAwCgogICAgRml4dXAgc2M1MjBfc3B1bmsgYm9hcmQKCiAgICBQcmltYXJ5IGludGVudCBpcyB0byByZXNvbHZlIGJ1aWxkIGVycm9ycyBmb3IgdGhpcyBib2FyZCB3aGljaCBoYXMgYmVlbgogICAgbmVnbGVjdGVkIGZvciBhIHZlcnkgbG9uZyB0aW1lLiBJIGRvIG5vdCBoYXZlIG9uZSBvZiB0aGVzZSBib2FyZHMsIHNvIEkKICAgIGNhbm5vdCB0ZXN0IGZ1bmN0aW9uYWxpdHkKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgoKY29tbWl0IDg5MDdiOGRiYzU4MDUwOTRmMTMxNmQ2NDczN2QzNDI4YjM4NjM2OTMKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglTdW4gQXVnIDIzIDEyOjU5OjUzIDIwMDkgKzEwMDAKCiAgICBNaXNjIGRzMTcyMiBmaXh1cHMKCiAgICBUaGlzIHBhdGNoIGlzIGJhc2VkIG9uIGEgcGF0Y2ggc3VibWl0dGVkIGJ5IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJECiAgICBvbiAxOHRoIE1heSAyMDA4IGFzIHBhcnQgb2YgYSBnZW5lcmFsIGkzODYgLyBzYzUyMCBmaXh1cCB3aGljaCB3YXMgbmV2ZXIKICAgIGFwcGxpZWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgoKY29tbWl0IGE5MjUxMGU3ZmFlNTIzMTQ1YjU4NzY1Y2RjNDYxMTBmMTE2MjI2MGQKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglTdW4gQXVnIDIzIDEyOjU5OjUyIDIwMDkgKzEwMDAKCiAgICBNaXNjIHRpX3BjaTE0MTBhIGZpeHVwcwoKICAgIFJlbW92ZWQgZG9fcGluaXQoKSAtIG5vdyBkZWNsYXJlZCBpbiBjbWRfcGNtY2lhLmMKCiAgICBBZGRlZCAjZGVmaW5lIENPTkZJR19DTURfUENNQ0lBIGFyb3VuZCBwY21jaWFfb2ZmKCkgaW4gbGluZSB3aXRoIG90aGVyCiAgICBQQ01DSUEgZHJpdmVycwoKICAgIHNpZ25lZC91bnNpZ25lZCB0eXBlIGZpeHVwcwoKICAgIEFkZGVkIHNlbWktY29sb24gYWZ0ZXIgZGVmYXVsdDogbGFiZWwgYXMgcmVxdWlyZWQgYnkgbmV3ZXIgZ2NjCgogICAgVGhlIG9ubHkgYm9hcmQgdGhhdCBhcHBlYXJzIHRvIHVzZSB0aGlzIGRyaXZlciBpcyB0aGUgc2M1MjBfc3B1bmsgd2hpY2gKICAgIGlzIHZlcnkgb2xkIGFuZCB2ZXJ5IGxpa2VseSB2ZXJ5IGJyb2tlbiBhbnl3YXkuIEkgZG8gbm90IGhhdmUgb25lIHRvIHRlc3QKICAgIHdoZXRoZXIgdGhpcyBwYXRjaCBicmVha3MgYW55dGhpbmcgZnVuY3Rpb25hbHksIEkgaGF2ZSBjYW4gb25seSBjaGVjawogICAgdGhhdCBpdCBjb21waWxlcyB3aXRob3V0IHdhcm5pbmcgb3IgZXJyb3IKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgoKY29tbWl0IDMxYjlhYjMzZDkzZDg4ZmY4OWYzMDQ2YWE0NWM2ODY2N2EzNzhhNTYKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglTdW4gQXVnIDIzIDEyOjU5OjUxIDIwMDkgKzEwMDAKCiAgICBNaXNjIFNBVEEgZml4dXBzCgogICAgQ2FzdCBmaXJzdCBwYXJhbWV0ZXIgdG8gc2F0YV9jcHkoKQoKICAgIEluIC9kcml2ZXJzL2Jsb2NrL2F0YV9waWl4LmgsIGF0YV9pZF9oYXNfbGJhNDgoKSwgYXRhX2lkX2hhc19sYmEoKSwKICAgIGF0YV9pZF9oYXNfZG1hKCksIGF0YV9pZF91MzIoKSwgYXRhX2lkX3U2NCgpIGFyZSBhbGwgZGVmaW5lZCBpbgogICAgaW5jbHVkZS9saWJhdGEuaCB3aGljaCBpcyBpbmNsdWRlZCBpbiBhdGEuaCB3aGljaCBpcyBpbmNsdWRlZCBieSBhbGwgZmlsZXMKICAgIHdoaWNoIGluY2x1ZGUgYXRhX3BpaXguaCAob25seSBhdGFfcGlpeC5jKSBzbyB0aGVzZSBkZWZpbml0aW9ucyBhcmUKICAgIHN1cHVyZmxvdXMgdG8gKGFuZCBjb25saWN0IHdpdGgpIHRoaXMgaW4gbGliYXRhLmguIEludGVyZXN0aW5nbHksIG15CiAgICBjb21waWxlciBjb21wbGFpbnMgYWJvdXQgYXRhX2lkX3U2NCBhbHJlYWR5IGJlaW5nIGRlZmluZWQsIGJ1dCBub3QKICAgIGF0YV9pZF91MzIKCiAgICBhdGFfZHVtcF9pZCgpIGlzIGRlZmluZWQgaW4gaW5jbHVkZS9saWJhdGEuaCBhbmQgc2hvdWxkIG5vdCBiZSBzdGF0aWMKICAgIChtYXliZSBzaG91bGQgZXZlbiB1c2UgYXRhX2R1bXBfaWQoKSBpbiBsaWJhdGEuYwoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Cgpjb21taXQgZDc1NDkwMjQwOThhZjA5Mzc4NTE1MTI2MTI2NmEwMmJlMTlhZjYzMwpBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CVN1biBBdWcgMjMgMTI6NTk6NTAgMjAwOSArMTAwMAoKICAgIGkzODY6IE1pc2MgUENJIGZpeHVwcwoKICAgIENoYW5nZSBQQ0lfUkVHSU9OX01FTU9SWSB0byBQQ0lfUkVHSU9OX1NZU19NRU1PUlkgKE9yaWdpbmFsbHkgZG9uZSBpbgogICAgY29tbWl0IGZmNGU2NmU5M2MxYSwgcmVncmVzc2VkIGJ5IGNvbW1pdCA2ZDdmNjEwYjA5ZjgpCgogICAgQ2FzdCBQQ0lfUk9NX0FERFJFU1NfTUFTSyB0byB1MzIKCiAgICBXcmFwIHByb2JlX3BjaV92aWRlbygpIGNhbGwgaW5zaWRlICNpZmRlZiBDT05GSUdfVklERU8KCiAgICBDaGFuZ2UgY2FsbCB0byBwY2lfZmluZF9jbGFzcygpIHRvIHBjaV9maW5kX2RldmljZXMoKS4gVGhpcyBpcyBiYXNlZCBvbiBhCiAgICBwYXRjaCBzdWJtaXR0ZWQgb24gMXN0IE1hcmNoIDIwMDcgKFBhdGNoIHRoYXQgZml4ZXMgdGhlIGNvbXBpbGF0aW9uIGVycm9ycwogICAgZm9yIHNjNTIwX2NkcCBib2FyZCkgYnkgbXVzaHRhcV9rCgogICAgVGhpcyBwYXRjaCByZXF1aXJlcyB0aGF0IFBDSV9WSURFT19WRU5ET1JfSUQgYW5kIFBDSV9WSURFT19ERVZJQ0VfSUQgYmUKICAgIHNwZWNpZmllZCBpbiB0aGUgYm9hcmQgY29uZmlnIGZpbGUuICBEdW1teSB2YWx1ZXMgaGF2ZSBiZWVuIGFkZGVkIGZvciB0aGUKICAgIFNDNTIwIENEUCBib2FyZCB0byBlbmFibGUgY29tcGlsYXRpb24sIGJ1dCBzaW5jZSBJIGRvIG5vdCBoYXZlIG9uZSBvZiB0aGVzZSwKICAgIEkgZG8ga25vdyB3aGF0IHRoZSB2YWx1ZXMgc2hvdWxkIGJlCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KCmNvbW1pdCAwNGZmOWFiMTU4NzE0ZDQzY2RmMmY0ZjZmMDIzNWMzZWE5ZDI0MWEyCkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJU3VuIEF1ZyAyMyAxMjo1OTo0OSAyMDA5ICsxMDAwCgogICAgRml4IHNjNTIwIHRpbWVyIGludGVycnVwdCBnZW5lcmF0aW9uCgogICAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gaGFzIHRoZSB0aW1lciBiZWluZyBzdGFydGVkIGJlZm9yZSB0aGUgaW50ZXJydXB0CiAgICBoYW5kbGVyIGlzIGluc3RhbGxlZC4gSXQgdGhlIGludGVycnVwdCBvY2N1cnMgYmVmb3JlIHRoZSBoYW5kbGVyIGlzCiAgICBpbnN0YWxsZWQsIHRoZSB0aW1lciBpbnRlcnJ1cHQgaXMgbmV2ZXIgcmVzZXQgYW5kIHRoZSB0aW1lciBzdG9wcwoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Cgpjb21taXQgZjNhOGQ2YjI5YjFjZDAxZmRkOTQwZThmZjdhNjJiMWRmMGViYmY4MgpBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CVN1biBBdWcgMjMgMTI6NTk6NDggMjAwOSArMTAwMAoKICAgIEZpeCBlbnZpcm9ubWVudCBjb25maWd1cmF0aW9uIGZvciBlTkVUIGJvYXJkCgogICAgVGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBvZiB0aGUgRW52aXJvbm1lbnQgaGFzIHRoZSByZWR1bmRhbnQgY29weSBvZiB0aGUKICAgIGVudmlyb25tZW50IGluIHRoZSBCb290IEZsYXNoIC0gVGhpcyB3YXMgbmV2ZXIgdGhlIGludGVudC4gVGhlIEVudmlyb25tZW50CiAgICBzaG91bGQgaW5zdGVhZCBiZSBpbiB0aGUgZmlyc3QgdHdvIHNlY3RvcnMgb2YgdGhlIGZpcnN0IFN0cmF0YSBGbGFzaAoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Cgpjb21taXQgZWEwYzM3Nzk4YzM4MjNmZGQ3N2VkZmZmZDI3YjIwMTkxZjhjYTFmMApBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CVN1biBBdWcgMjMgMTI6NTk6NDcgMjAwOSArMTAwMAoKICAgIGkzODY6IEZpeCByZWdyZXNzaW9uIGludHJvZHVjZWQgYnkgY29tbWl0IDhjNjNkNDc2NTFmNwoKICAgIEEgbG9jYWwgdmFyaWFibGUgd2FzIGRlbGV0ZWQgdGhhdCBzaG91bGQgbm90IGhhdmUgYmVlbgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Cgpjb21taXQgY2ZiM2E3MzZmZmNmZjNlMzc1M2I5MDJjYWQ1MzZmMjJmY2Y4OTYxZApBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CVN1biBBdWcgMjMgMTI6NTk6NDYgMjAwOSArMTAwMAoKICAgIGkzODY6IENoYW5nZSBpbmxpbmUgYXNtIGdsb2JhbCBzeW1ib2xzIHRvIGxvY2FsCgogICAgZ2NjIDQuMy4yIG9wdGltaXNlciBjcmVhdGVzIG11bHRpcGxlIGNvcGllcyBvZiBpbmxpbmUgYXNtICh3aG8ga25vd3Mgd2h5KQogICAgUmVtb3ZlIHVzZSBvZiBnbG9iYWwgbmFtZXMgZm9yIGxhYmVscyB0byBwcmV2ZW50ICdzeW1ib2wgYWxyZWFkeSBkZWZpbmVkJwogICAgZXJyb3JzCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KCmNvbW1pdCBhM2FiOGNhZWU2OTZhMWQ1M2ZjODJmYTMyMWUyYjJmMTc5OTcwMTY4CkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJU3VuIEF1ZyAyMyAxMjo1OTo0NSAyMDA5ICsxMDAwCgogICAgaTM4NjogQWRkIGVycm5vLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgoKY29tbWl0IGQ0ZThhZGEwZjZkNTFlMGUzYjgwNzkwZmI5Mzc1YWM4OTEwZjUzNTIKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglGcmkgQXVnIDIxIDIzOjA1OjIxIDIwMDkgLTA1MDAKCiAgICBDb25zb2xpZGF0ZSBhcmNoLXNwZWNpZmljIG1lbV9tYWxsb2NfaW5pdCgpIGltcGxlbWVudGF0aW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgYTQ4M2ExNjdiYzhkODA4MTQ1Y2ExMjI0YTJjMjM4Y2RhOTBhYTYwYwpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBBdWcgMjEgMjM6MDU6MjAgMjAwOSAtMDUwMAoKICAgIFN0YW5kYXJkaXplIG1lbV9tYWxsb2NfaW5pdCgpIGltcGxlbWVudGF0aW9uCgogICAgVGhpcyBsYXlzIHRoZSBncm91bmR3b3JrIHRvIGFsbG93IGFyY2hpdGVjdHVyZXMgdG8gc2hhcmUgYSBjb21tb24KICAgIG1lbV9tYWxsb2NfaW5pdCgpLgoKICAgIE5vdGUgdGhhdCB0aGUgeDg2IGltcGxlbWVudGF0aW9uIHdhcyBub3QgbW9kaWZpZWQgYXMgaXQgZGlkIG5vdCBmaXQgdGhlCiAgICBtb2xkIG9mIGFsbCBvdGhlciBhcmNoaXRlY3R1cmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgNWU5M2JkMWM5YWFlYTg4NmM1ZTVjN2MxYjYxMTRhYjM2YzMwNjY4ZgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBBdWcgMjEgMjM6MDU6MTkgMjAwOSAtMDUwMAoKICAgIENvbnNvbGlkYXRlIGFyY2gtc3BlY2lmaWMgc2JyaygpIGltcGxlbWVudGF0aW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgNjVmNmYwN2I3MmE3MWI4M2Q3NzVjNGQyMGQ3ZWJjZDZiMmQyMDg2ZApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEp1bCAyMyAxNjozNzowMyAyMDA5IC0wNDAwCgogICAgYXRtZWxfZGZfcG93Mjogc3RhbmRhbG9uZSB0byBjb252ZXJ0IGRhdGFmbGFzaGVzIHRvIHBvdzIKCiAgICBBdG1lbCBEYXRhRmxhc2hlcyBieSBkZWZhdWx0IG9wZXJhdGUgd2l0aCBwYWdlcyB0aGF0IGFyZSBzbGlnaHRseSBiaWdnZXIKICAgIHRoYW4gbm9ybWFsIGJpbmFyeSBzaXplcyAoaS5lLiBtYW55IGFyZSAxMDU2IGJ5dGUgcGFnZXMgcmF0aGVyIHRoYW4gMTAyNAogICAgYnl0ZXMpLiAgSG93ZXZlciwgdGhleSBhbHNvIGhhdmUgYSAicG93ZXIgb2YgMiIgbW9kZSB3aGVyZSB0aGUgcGFnZXMgc2hvdwogICAgdXAgd2l0aCB0aGUgbm9ybWFsIGJpbmFyeSBzaXplLiAgVGhlIGxhdHRlciBtb2RlIGlzIHJlcXVpcmVkIGluIG9yZGVyIHRvCiAgICBib290IHdpdGggYSBCbGFja2ZpbiBwcm9jZXNzb3IsIHNvIG1hbnkgcGVvcGxlIHdpc2ggdG8gY29udmVydCB0aGVpcgogICAgRGF0YUZsYXNoZXMgb24gdGhlaXIgZGV2ZWxvcG1lbnQgc3lzdGVtcyB0byB0aGlzIG1vZGUuICBUaGlzIHN0YW5kYWxvbmUKICAgIGFwcGxpY2F0aW9uIGRvZXMganVzdCB0aGF0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBjYjk1YzdhOTM1YWI5YjUyZGFjNWQwOGU1YmE0MDA3YzVhNDgwZjk3CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglXZWQgU2VwIDIgMDU6NTI6MzcgMjAwOSAtMDQwMAoKICAgIEJsYWNrZmluOiBjbS1iZjU0ODogZml4IGRldmljZS0+c3RkaW9fZGV2IGZhbGxvdXQKCiAgICBUaGUgcmVjZW50IDUyY2I0ZDRmYjM0OCBjb21taXQgd2hpY2ggcmVuYW1lZCBkZXZpY2UgdG8gc3RkaW9fZGV2IG1pc3NlZCB0aGUKICAgIGNtLWJmNTQ4J3MgdmlkZW8gYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGM3YmNkZGU0NmE3ZWY3ODYyOGYwZjA5ZmRjNmNiNjFiYjFiZDdlNzkKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBTZXAgMiAwNDoyMToxNiAyMDA5IC0wNDAwCgogICAgQmxhY2tmaW46IGVuYWJsZSA2NGJpdCBwcmludGYgZm9yIG5hbmQKCiAgICBTaW5jZSB0aGUgTkFORCBjb2RlIG5vdyB1c2VzIDY0Yml0IGNvZGUsIG1ha2Ugc3VyZSB3ZSBlbmFibGUgc3VwcG9ydCBmb3IKICAgIEFESSBCbGFja2ZpbiBib2FyZHMgaW4gcHJpbnRmIHRvIGF2b2lkIHRoZSB3YXJuaW5nOgogICAgbmFuZF91dGlsLmM6NDU6Mjogd2FybmluZzogI3dhcm5pbmcgUGxlYXNlIGRlZmluZSBDT05GSUdfU1lTXzY0QklUX1ZTUFJJTlRGIGZvciBjb3JyZWN0IG91dHB1dCEKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgOWM0NmU3MWFmMmIwM2NjZDcyMWM1NmIxZGM5MDZlYWQ3MDJkNmZiNQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIEF1ZyAyNCAyMDo0ODowNCAyMDA5IC0wNDAwCgogICAgQmxhY2tmaW46IHVzZSBzY3JhdGNoIHBhZCBmb3IgZXhjZXB0aW9uIHN0YWNrCgogICAgSWYgdGhlIG1lbW9yeSBsYXlvdXQgcHVzaGVzIHRoZSBzdGFjayBvdXQgb2YgdGhlIGRlZmF1bHQgRENQTEIgY292ZXJhZ2UsCiAgICB0aGUgZXhjZXB0aW9uIGhhbmRsZXIgbWF5IHRyaWdnZXIgYSBkb3VibGUgZmF1bHQgYnkgdHJ5aW5nIHRvIHB1c2ggb250bwogICAgdGhlIHVuY292ZXJlZCBzdGFjay4gIFNvIGhhbmRsZSB0aGUgZXhjZXB0aW9uIHN0YWNrIHNpbWlsYXIgdG8gdGhlIGtlcm5lbAogICAgYnkgdXNpbmcgdGhlIHRvcCBvZiB0aGUgc2NyYXRjaCBwYWQgU1JBTS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNjlhMjVjZTM1NzhmMzRjOGFjY2I0NzZmNzAwODlmM2E0NGI3OGVkOQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIEF1ZyAyNCAyMDozNjoyNSAyMDA5IC0wNDAwCgogICAgQmxhY2tmaW46IGluY3JlYXNlIGRlZmF1bHQgY29uc29sZSBzaXplCgogICAgVGhlIGRlZmF1bHQgY29uc29sZSBzaXplIGluZGlyZWN0bHkgYXBwbGllcyB0byBsZW5ndGggb2YgZW52IHZhcnMsIHNvIGEKICAgIHNtYWxsZXIgbGVuZ3RoIG1ha2VzIGl0IGhhcmQgdG8gcGFzcyBsb25nZXIgY29tbWFuZCBsaW5lcyB0byBrZXJuZWxzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBmNTQxZTFkNmQ5OWMyMmJiZDRiYzhjODRmZGIwMmJhYWQwMjc3ODQ3CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gQXVnIDI0IDE5OjAzOjE4IDIwMDkgLTA0MDAKCiAgICBCbGFja2ZpbjogZml4IGRlYnVnIHByaW50ZiBtb2RpZmllcnMKCiAgICBUaGUgZGlzcGxheV9nbG9iYWxfZGF0YSgpIGZ1bmN0aW9uIGdlbmVyYXRlZCB3YXJuaW5ncyB3aXRoIHByZXR0eSBtdWNoCiAgICBldmVyeSB2YXJpYWJsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNDY0MGMyYjg2OTliY2RkMjM0NmEyYzYzMzQ4NmYwN2YwNjFhMjkzOQpBdXRob3I6IEhhcmFsZCBLcmFwZmVuYmF1ZXIgPEhhcmFsZC5LcmFwZmVuYmF1ZXJAYmx1ZXRlY2huaXguYXQ+CkRhdGU6CVRodSBBdWcgMjAgMTk6MjA6NDEgMjAwOSAtMDQwMAoKICAgIEJsYWNrZmluOiBjbS1iZjUzN3U6IG5ldyBib2FyZCBwb3J0CgogICAgVGhlIENNLUJGNTM3VSBpcyBzaW1pbGFyIHRvIHRoZSBDTS1CRjUzN0UgbW9kdWxlLCBidXQgZW5vdWdoIHRvIG5lZWQgaXRzCiAgICBvd24gYm9hcmQgcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYXJhbGQgS3JhcGZlbmJhdWVyIDxIYXJhbGQuS3JhcGZlbmJhdWVyQGJsdWV0ZWNobml4LmF0PgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGM0ZGIzMzVjMmUwODA1ZTFjZTRjMzNkMjc4Yjc3NDkyYzA4MTIzNTMKQXV0aG9yOiBSb2JpbiBHZXR6IDxyb2Jpbi5nZXR6QGFuYWxvZy5jb20+CkRhdGU6CU1vbiBBdWcgMTcgMTU6MjM6MDIgMjAwOSArMDAwMAoKICAgIEJsYWNrZmluOiBjaGFuZ2UgZ2xvYmFsIGRhdGEgcmVnaXN0ZXIgZnJvbSBQNSB0byBQMwoKICAgIFNpbmNlIHRoZSBCbGFja2ZpbiBBQkkgZmF2b3JzIGhpZ2hlciBzY3JhdGNoIHJlZ2lzdGVycyBieSBkZWZhdWx0LCB1c2UgdGhlCiAgICBsYXN0IHNjcmF0Y2ggcmVnaXN0ZXIgKFAzKSBmb3IgZ2xvYmFsIGRhdGEgcmF0aGVyIHRoYW4gdGhlIGZpcnN0IChQNSkuCiAgICBUaGlzIGFsbG93cyB0aGUgY29tcGlsZXIncyByZWdpc3RlciBhbGxvY2F0b3IgdG8gdXNlIGhpZ2hlciBudW1iZXIgc2NyYXRjaAogICAgUCByZWdpc3RlcnMsIHdoaWNoIGluIHR1cm4gYmV0dGVyIG1hdGNoZXMgdGhlIEJsYWNrZmluIGluc3RydWN0aW9uIHNldCwKICAgIHdoaWNoIHJlZHVjZXMgdGhlIHNpemUgb2YgVS1Cb290IGJ5IG1vcmUgdGhhbiAxMDI0IGJ5dGVzLi4uCgogICAgU2lnbmVkLW9mZi1ieTogUm9iaW4gR2V0eiA8cm9iaW4uZ2V0ekBhbmFsb2cuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDU3NGI3MGRmMDNmYmEwZWE2MzVlMmZlNzFmYmQ3Yjk3ZDE5YjcwNmEKQXV0aG9yOiBSb2JpbiBHZXR6IDxyb2Jpbi5nZXR6QGFuYWxvZy5jb20+CkRhdGU6CVR1ZSBBdWcgMTEgMTQ6MjA6MTMgMjAwOSArMDAwMAoKICAgIEJsYWNrZmluOiBlbmFibGUgbW9yZSBuZXR3b3JrIGNvbW1hbmRzIGZvciBBREkgZGV2IGJvYXJkcwoKICAgIEFkZCBkbnMgYW5kIG50cCB0byBkZWZhdWx0IG5ldHdvcmtpbmcgY29tbWFuZHMsIGFuZCBhc2sgZm9yIG1vcmUgZGhjcAogICAgb3B0aW9ucyB0byBiZXR0ZXIgY29uZmlndXJlIHRoZSBuZXR3b3JrIGVudmlyb25tZW50LgoKICAgIFNpZ25lZC1vZmYtYnk6IFJvYmluIEdldHogPHJvYmluLmdldHpAYW5hbG9nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBhYTdiMjQ4YTA1MzIzZDQ3MjA5NjkyMjc2MDNlMzlhMjI3NzdlZDk1CkF1dGhvcjogTWljaGFlbCBIZW5uZXJpY2ggPG1pY2hhZWwuaGVubmVyaWNoQGFuYWxvZy5jb20+CkRhdGU6CVRodSBKdW4gMTggMDk6MTI6NTAgMjAwOSArMDAwMAoKICAgIEJsYWNrZmluOiBiZjUzNy1zdGFtcDogY29tbWVudCBDRi1GbGFzaCBDYXJkIFN1cHBvcnQgYmV0dGVyCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBIZW5uZXJpY2ggPG1pY2hhZWwuaGVubmVyaWNoQGFuYWxvZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNjljNmQyNjhhMjljZjZkNjFlMDk2ZDgxNWFiZjVhYmYyNDEzNmY0NQpBdXRob3I6IFJvYmluIEdldHogPHJvYmluLmdldHpAYW5hbG9nLmNvbT4KRGF0ZToJRnJpIEp1bCAxMCAxODozNzoxNSAyMDA5ICswMDAwCgogICAgQmxhY2tmaW46IHVzZSArKGZpbGVzaXplKSB0byBtYWtlIHN1cmUgd2UgYXJlIG9ubHkgZG9pbmcgd2hhdCBpcyBuZWNlc3NhcnkKCiAgICBTaWduZWQtb2ZmLWJ5OiBSb2JpbiBHZXR6IDxyb2Jpbi5nZXR6QGFuYWxvZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMmRjODUxZTNiMGYwN2E1NmY4MzA2MGYxMzg4MmZmNGI2MmNmNTExMgpBdXRob3I6IEFsYmluIFRvbm5lcnJlIDxhbGJpbi50b25uZXJyZUBmcmVlLWVsZWN0cm9ucy5jb20+CkRhdGU6CVRodSBBdWcgMjAgMTY6MDQ6NDkgMjAwOSArMDIwMAoKICAgIFN1cHBvcnQgZm9yIHRoZSBDYWxhbyBUTlktQTkyNjAvVE5ZLUE5RzIwIGJvYXJkcwoKICAgIFRoZSBDYWxhbyBUTlktQTkyNjAgYW5kIFROWS05RzIwIGFyZSBib2FyZHMgbWFudWZhY3R1cmVkIGFuZCBzb2xkIGJ5CiAgICBDYWxhbyBTeXN0ZW1zIDxodHRwOi8vd3d3LmNhbGFvLXN5c3RlbXMuY29tPi4gVGhlaXIgY29tcG9uZW50cyBhcmUgdmVyeQogICAgc2ltaWxhciB0byB0aGUgQVQ5MVNBTTkyNjBFSyBib2FyZCwgc28gdGhlaXIgY29uZmlndXJhdGlvbiBpcyBiYXNlZCBvbgogICAgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhpcyBib2FyZC4gVGhlcmUgYXJlIGhvd2V2ZXIgc29tZSBkaWZmZXJlbmNlczoKICAgIGRpZmZlcmVudCBjbG9ja3MsIG5vIExDRCwgbm8gZXRoZXJuZXQuIFRoZXkgYWxzbyBjYW4gdXNlIFNQSSBFRVBST00gdG8KICAgIHN0b3JlIHRoZSBlbnZpcm9ubWVudC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbGJpbiBUb25uZXJyZSA8YWxiaW4udG9ubmVycmVAZnJlZS1lbGVjdHJvbnMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA0OWQyY2I0ZDYxNTNhNmMxODI0OWRjY2I1ZGU1Y2ZmZWIyNjFhNjFjCkF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgpEYXRlOglUaHUgQXVnIDIwIDIwOjU5OjI4IDIwMDkgKzA1MzAKCiAgICBhcm06IEtpcmt3b29kOiBhZGQgU1lTUlNUbiBEdXJhdGlvbiBDb3VudGVyIFN1cHBvcnQKCiAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIHVzZWQgdG8gdHJpZ2dlciBzcGVjaWFsIGNvbW1hbmQgInN5c3JzdGNtZCIgdXNpbmcKICAgIHJlc2V0IGtleSBsb25nIHByZXNzIGV2ZW50IGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZSAic3lzcnN0ZGVsYXkiIGlzIHNldAogICAgKHVzZWZ1bCBmb3IgcmVzZXQgdG8gZmFjdG9yeSBvciBtYW51ZmFjdHVyaW5nIG1vZGUgZXhlY3V0aW9uKQoKICAgIEtpcmt3b29kIFNvQyBpbXBsZW1lbnRzIGEgaGFyZHdhcmUtYmFzZWQgU1lTUlNUbiBkdXJhdGlvbiBjb3VudGVyLgogICAgV2hlbiBTWVNSU1RuIGlzIGFzc2VydGVkIGxvdywgYSBTWVNSU1RuIGR1cmF0aW9uIGNvdW50ZXIgaXMgcnVubmluZy4KICAgIFRoZSBjb3VudGVyIHZhbHVlIGlzIHN0b3JlZCBpbiB0aGUgU1lTUlNUbiBMZW5ndGggQ291bnRlciBSZWdpc3RlcgogICAgVGhlIGNvdW50ZXIgaXMgYmFzZWQgb24gdGhlIDI1LU1IeiByZWZlcmVuY2UgY2xvY2sgKDQwbnMpCiAgICBJdCBpcyBhIDI5LWJpdCBjb3VudGVyLCB5aWVsZGluZyBhIG1heGltdW0gY291bnRpbmcgZHVyYXRpb24gb2YKICAgIDJeMjkvMjUgTUh6ICgyMS40IHNlY29uZHMpLiBXaGVuIHRoZSBjb3VudGVyIHJlYWNoIGl0cyBtYXhpbXVtIHZhbHVlLAogICAgaXQgcmVtYWlucyBhdCB0aGlzIHZhbHVlIHVudGlsIGNvdW50ZXIgcmVzZXQgaXMgdHJpZ2dlcmVkIGJ5IHNldHRpbmcKICAgIGJpdCAzMSBvZiBLV19SRUdfU1lTUlNUX0NOVAoKICAgIEltcGxlbWVudGF0aW9uOgogICAgVXBvbiBsb25nIHJlc2V0IGFzc2VydGlvbiAoPiAke3N5c3JzdGRlbGF5fSBpbiBzZWNzKSBzeXNyc3RjbWQgd2lsbCBiZQogICAgZXhlY3V0ZWQgaWYgcHJlLWRlZmluZWQgaW4gZW52aXJvbm1lbnQgdmFyaWFibGVzLgogICAgVGhpcyBmZWF0dXJlIHdpbGwgYmUgZGlzYWJsZWQgaWYgInN5c3JzdGRlbGF5IiB2YXJpYWJsZSBpcyB1bnNldC4KCiAgICBmb3ItZXguCiAgICBzZXRlbnYgc3lzcnN0X2NtZCAiZWNobyBzdGFydGluZyBmYWN0b3J5IHJlc2V0OwoJCSAgIG5hbmQgZXJhc2UgMHhhMDAwMCAweDIwMDAwOwoJCSAgIGVjaG8gZmluaXNoIGVkIHN5c3JzdCBjb21tYW5kOyIKICAgIHdpbGwgZXJhc2UgcGFydGljdWxhciBuYW5kIHNlY3RvciBpZiB0cmlnZ2VyZWQgYnkgdGhpcyBldmVudAoKICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KCmNvbW1pdCA5NDUzOTY3ZTI4YzVlM2FiYmY4NTZmOTU3MzVlYTY5YmFlMWU3N2ZhCkF1dGhvcjogQWxiaW4gVG9ubmVycmUgPGFsYmluLnRvbm5lcnJlQGZyZWUtZWxlY3Ryb25zLmNvbT4KRGF0ZToJTW9uIEF1ZyAyNCAxODowMzoyNiAyMDA5ICswMjAwCgogICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBDYWxhbyBTQkMzNS1BOUcyMCBib2FyZAoKICAgIFRoZSBDYWxhbyBTQkMzNS1BOUcyMCBib2FyZCBpcyBtYW51ZmFjdHVyZWQgYW5kIHNvbGQgYnkgQ2FsYW8gU3lzdGVtcwogICAgPGh0dHA6Ly93d3cuY2FsYW8tc3lzdGVtcy5jb20+LiBJdCBpcyBidWlsdCBhcm91bmQgYW4gQVQ5MVNBTTlHMjAgQVJNIFNvQwogICAgcnVubmluZyBhdCA0MDBNSHouIEl0IGZlYXR1cmVzIGFuIEV0aGVybmV0IHBvcnQsIGFuIFNQSSBSVEMgYmFja2VkIGJ5IGFuIG9uYm9hcmQKICAgIGJhdHRlcnkgLCBhbiBTRC9NTUMgc2xvdCwgYSBDb21wYWN0Rmxhc2ggc2xvdCwgNjRNbyBvZiBTRFJBTSwgMjU2TW8gb2YgTkFORAogICAgZmxhc2gsIHR3byBVU0IgaG9zdCBwb3J0cywgYW5kIGFuIFVTQiBkZXZpY2UgcG9ydC4gTW9yZSBpbmZvcm1hdGlvbnMgY2FuIGJlCiAgICBmb3VuZCBhdCA8aHR0cDovL3d3dy5jYWxhby1zeXN0ZW1zLmNvbS9hcnRpY2xlcy5waHA/bG5nPWVuJnBnPTU5MzY+CgogICAgU2lnbmVkLW9mZi1ieTogQWxiaW4gVG9ubmVycmUgPGFsYmluLnRvbm5lcnJlQGZyZWUtZWxlY3Ryb25zLmNvbT4KCmNvbW1pdCAxMGJjMjQxZGZjMTVhMDgyMGQ5YzUyNDY5MTczYjdjY2FmZWMwYjg0CkF1dGhvcjogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CkRhdGU6CVR1ZSBBdWcgMTEgMDI6MzI6MDkgMjAwOSArMDQwMAoKICAgIGlteDI3bGl0ZTogYWRkIHN1cHBvcnQgZm9yIGlteDI3bGl0ZSBib2FyZCBmcm9tIExvZ2ljUEQKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgaS5NWDI3LUxJVEVLSVQgZGV2ZWxvcG1lbnQgYm9hcmQgZnJvbQogICAgTG9naWNQRC4gVGhpcyBib2FyZCB1c2VzIGkuTVgyNyBTb0MgYW5kIGhhcyAyTUIgTk9SIGZsYXNoLCA2NE1CIE5BTkQKICAgIGZsYXNoLCBGRUMgZXRoZXJuZXQgY29udHJvbGxlciBpbnRlZ3JhdGVkIGludG8gaS5NWDI3LgoKICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgogICAgQWNrZWQtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNTBiNWZmZjU1ODI3OTQ2Yzg2YTYwZGI4YjIxYTkzNThiZTcyMDY2NgpBdXRob3I6IEFsYmluIFRvbm5lcnJlIDxhbGJpbi50b25uZXJyZUBmcmVlLWVsZWN0cm9ucy5jb20+CkRhdGU6CVR1ZSBTZXAgMSAxMToyNjoyMCAyMDA5ICswMjAwCgogICAgYXQ5MXNhbTkyNjAvYWZlYjkyNjA6IEZpeCBTUEkgaW5pdGlhbGl6YXRpb24KCiAgICBDb21taXQgN2ViYWZiN2VjMWEwMjg1YWY4MzgwNjIzYzAwOTU3NmY5MjU4M2I5OCBpbnRyb2R1Y2VkIGEgbWlzdGFrZSBpbiB0aGUgc3BpCiAgICBpbml0IGZ1bmN0aW9uIGNhbGwgZm9yIHRob3NlIGJvYXJkcy4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFsYmluIFRvbm5lcnJlIDxhbGJpbi50b25uZXJyZUBmcmVlLWVsZWN0cm9ucy5jb20+Cgpjb21taXQgZjNkNGY4ODcwZTY5ZTBmZDE3NzM5Nzc3OGQ5N2QwNzUxYmJkMDIwYQpBdXRob3I6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KRGF0ZToJVHVlIEF1ZyAxOCAxMToxMzo0NCAyMDA5ICswMjAwCgogICAgUmVtb3ZlIGR1cGxpY2F0ZSBzZXRfY3IKCiAgICBSZW1vdmUgZHVwbGljYXRlIHNldF9jcgoKICAgIHNldF9jciBpcyBkZWZpbmVkIGluIGJvdGggYXNtLWFybS9wcm9jLWFybXYvc3lzdGVtLmggYW5kCiAgICBpbmNsdWRlL2FzbS1hcm0vc3lzdGVtLmguIFRoaXMgcGF0Y2ggcmVtb3ZlcyBpdCAoYW5kIHNvbWUgZHVwbGljYXRlCiAgICBkZWZpbmVzKSBmcm9tIHRoZSBmb3JtZXIuCgogICAgU2lnbmVkLW9mZi1ieTogU2ltb24gS2Fnc3Ryb20gPHNpbW9uLmthZ3N0cm9tQG5ldGluc2lnaHQubmV0PgoKY29tbWl0IDNkMzVkODdkNTQ4MmRlMjNjZDVkYzRkNzcyMWIxMDg2MTA3Y2FlNTAKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gQXVnIDMxIDE5OjU3OjQyIDIwMDkgKzAyMDAKCiAgICBQcmVwYXJlIDIwMDkuMDgKCiAgICBVcGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA2MzJhNmRkMGI2MTJlYjdiMTQzZjc4OWYyYTAyNzM5MTc0NjhjMDQxCkF1dGhvcjogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgpEYXRlOglNb24gQXVnIDMxIDE2OjE4OjI0IDIwMDkgKzAyMDAKCiAgICBBZGQgY29tbW9uIGNvZGUgZGlyIGZvciBNYXRyaXggVmlzaW9uIGJvYXJkcy4KCiAgICBUaGlzIGZpeGVzIGN1cnJlbnQgYnVpbGQgZmFpbHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+CgogICAgbXZibG03LmM6IGZpeCB3YXJuaW5nOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbgogICAgJ212X3Jlc2V0X2Vudmlyb25tZW50JwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNTJmNmMzNGM4NWQ2YzE2ZjJhNDE0MzNiNTAwMDQ5MGVjZjM3NDk5MgpBdXRob3I6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgpEYXRlOglTdW4gQXVnIDMwIDExOjA1OjI5IDIwMDkgLTA3MDAKCiAgICBidWdmaXggQ09ORklHX1NZU19DT05TT0xFX0lORk9fUVVJRVQKCiAgICBUaGUgImNvbnNvbGU6IHVuaWZ5IHByaW50aW5nIGN1cnJlbnQgZGV2aWNlcyIgcGF0Y2ggZ29vZmVkOgogICAgQ09ORklHX1NZU19DT05TT0xFX0lORk9fUVVJRVQgaXMgc3VwcG9zZWQgdG8gKlJFTU9WRSogYm9vdAogICAgdGltZSBub2lzZSwgbm90IGFkZCBpdC4gIFNhaWQgcGF0Y2ggY2hhbmdlZCB0aGUgI2lmbmRlZnMKICAgIHRvICNpZmRlZjsgdGhpcyBvbmUgcmVzdG9yZXMgdGhlbSB0byB0aGUgcHJvcGVyIHNlbnNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKY29tbWl0IDJkMDRkYjA4OGU2ZGY4YTAwOGJiMDlmNjA0ODc2YTQ1MDMxZGY5M2IKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgQXVnIDI4IDE2OjU2OjQ1IDIwMDkgLTA1MDAKCiAgICBmc2w6IHNpbXBsaWZ5IHRoZSAibWFjIGlkIiBjb21tYW5kLCBpbXByb3ZlIGJvb3QtdGltZSBpbmZvcm1hdGlvbmFsIG1lc3NhZ2UKCiAgICBUaGUgIm1hYyBpZCIgY29tbWFuZCB0b29rIGEgNC1jaGFyYWN0ZXIgcGFyYW1ldGVyIGFzIHRoZSBpZGVudGlmaWVyIHN0cmluZy4KICAgIEhvd2V2ZXIsIGZvciBhbnkgZ2l2ZW4gYm9hcmQsIG9ubHkgb25lIGtpbmQgb2YgaWRlbnRpZmllciBpcyBhY2NlcHRhYmxlLCBzbyBpdAogICAgbWFrZXMgbm8gc2Vuc2UgdG8gYXNrIHRoZSB1c2VyIHRvIHR5cGUgaXQgaW4uICBJbnN0ZWFkLCBpZiB0aGUgdXNlciBlbnRlcnMKICAgICJtYWMgaWQiLCB0aGUgaWRlbnRpZmllciAoYW5kIGFsc28gdGhlIHZlcnNpb24sIGlmIGl0J3MgTlhJRCkgd2lsbAogICAgYXV0b21hdGljYWxseSBiZSBzZXQgdG8gdGhlIGNvcnJlY3QgdmFsdWUuCgogICAgSW1wcm92ZSB0aGUgbWVzc2FnZSB0aGF0IGlzIGRpc3BsYXllZCB3aGVuIEVFUFJPTSBpcyByZWFkIGR1cmluZyBib290LiAgSXQgbm93CiAgICBkaXNwbGF5cyAiRUVQUk9NOiIgYW5kIHRoZW4gZWl0aGVyIGFuIGVycm9yIG1lc3NhZ2Ugb3IgdGhlIEVFUFJPTSBpZGVudGlmaWVyCiAgICBpZiBzdWNjZXNzZnVsLgoKICAgIElmIHRoZSBpZGVudGlmaWVyIGluIEVFUFJPTSBpcyB2YWxpZCwgdGhlbiBhbHdheXMgcmVqZWN0IGEgYmFkIENSQywgZXZlbiBpZiB0aGUKICAgIENSQyBmaWVsZCBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQuCgogICAgRG9uJ3QgZm9yY2UgdGhlIE1BQyBhZGRyZXNzIGNvdW50IHRvIE1BWF9OVU1fUE9SVFMgb3IgbGVzcy4gIEZvcmNpbmcgdGhlIHZhbHVlCiAgICB0byBiZSBjaGFuZ2VkIHJlc3VsdGluZyBpbiBhbiBpbi1tZW1vcnkgY29weSB0aGF0IGRvZXMgbm90IG1hdGNoIHdoYXQncyBpbgogICAgaGFyZHdhcmUsIGV2ZW4gdGhvdWdoIHRoZSB1c2VyIGRpZCBub3QgcmVxdWVzdCB0aGF0IGNoYW5nZS4KCiAgICBGaW5hbGx5LCBhbHdheXMgdXBkYXRlIHRoZSBDUkMgdmFsdWUgaW4gdGhlIGluLW1lbW9yeSBjb3B5IGFmdGVyIGFueSBmaWVsZAogICAgaXMgY2hhbmdlZCwgc28gdGhhdCB0aGUgQ1JDIGlzIGFsd2F5cyBjb3JyZWN0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDMzZjNmMzQyNTViZDdjZjBiZTUwMjI3NWM1OWYwZmYyMmRjNTAwODAKQXV0aG9yOiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEF1ZyAyMSAwNzoyOTo1OCAyMDA5ICswNTMwCgogICAgODV4eDogQWRkZWQgUENJZSBzdXBwb3J0IGZvciBQMSBQMiBSREIKCiAgICBDYWxsIGZzbF9wY2lfaW5pdF9wb3J0KCkgdG8gaW5pdGlhbGl6ZSBhbGwgdGhlIFBDSWUgcG9ydHMgb24gdGhlIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBvb25hbSBBZ2dyd2FsIDxwb29uYW0uYWdncndhbEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAwZDNkNjhiMjVhOGU3NzkwZjU4NTMwZGRjY2JkNjFmOWZjMDI0NWVmCkF1dGhvcjogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBBdWcgMjEgMDc6Mjk6NDIgMjAwOSArMDUzMAoKICAgIGRyaXZlci9mc2xfcGNpOiBBZGQgZnNsX3BjaV9pbml0X3BvcnQgZnVuY3Rpb24gdG8gaW5pdGlhbGl6ZSBhIFBDSSBjb250cm9sbGVyCgogICAgZnNsX3BjaV9pbml0X3BvcnQgY2FuIGJlIGNhbGxlZCBmcm9tIGJvYXJkIHNwZWNpZmljIFBDSSBpbml0aWFsaXphdGlvbgogICAgcm91dGluZXMgdG8gc2V0dXAgdGhlIFBDSSAob3IgUENJZSkgY29udHJvbGxlci4gIFRoaXMgd2lsbCByZWR1Y2UgY29kZQogICAgcmVkdW5kYW5jeSBpbiBtb3N0IG9mIHRoZSA4NXh4Lzg2eHggRlNMIGJvYXJkIHBvcnRzIHRoYXQgc2V0dXAgUENJLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBvb25hbSBBZ2dyd2FsIDxwb29uYW0uYWdncndhbEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAwNWY2ZjY2NDc0MzEyYWQwM2MzOWI0Y2E0ODc1YWY0NmM4NzM2NmJmCkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEF1ZyAyMCAxNzo0MToxMSAyMDA5IC0wNTAwCgogICAgODV4eDogSW1wcm92ZSBNUElDIGluaXRpYWxpemF0aW9uCgogICAgVGhlIE1QSUMgaW5pdGlhbGl6YXRpb24gY29kZSBmb3IgRnJlZXNjYWxlIGU1MDAgQ1BVcyB3YXMgbm90IHVzaW5nIEkvTwogICAgYWNjZXNzb3JzLCBhbmQgaXQgd2FzIG5vdCBpc3N1aW5nIGEgcmVhZC1iYWNrIHRvIHRoZSBNUElDIGFmdGVyIHNldHRpbmcKICAgIG1peGVkIG1vZGUuICBUaGlzIG1heSBiZSB0aGUgY2F1c2Ugb2YgYSBzcHVyaW91cyBpbnRlcnJ1cHQgb24gc29tZSBzeXN0ZW1zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGMxN2I3OWZiZDBjNzkyMzk0ODMzMWQ2NWNiNTg4NzM0YTljNjgxZmYKQXV0aG9yOiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEF1ZyAyMCAxODo1OToxOCAyMDA5ICswNTMwCgogICAgODV4eDogQWRkZWQgc3VwcG9ydCBmb3IgUDEwMTFSREIgYW5kIFAyMDEwUkRCCgogICAgUDEwMTEgYW5kIFAyMDEwIGFyZSBzaW5nbGUgY29yZSB2YXJpYW50cyBvZiBQMTAxMCBhbmQgUDIwMjAgcmVzcGVjdGl2ZWx5LgogICAgVGhlIGJvYXJkKFJEQikgd2lsbCBiZSBzYW1lLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBvb25hbSBBZ2dyd2FsIDxwb29uYW0uYWdncndhbEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBhNzEzYmE5MjZiNDVkYTlhNmY5MjNmMWFjOWU2MGE2Njg1MmU1ZjJkCkF1dGhvcjogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBBdWcgMjAgMTg6NTc6NDUgMjAwOSArMDUzMAoKICAgIDg1eHg6IEFkZGVkIHNpbmdsZSBjb3JlIG1lbWJlcnMgb2YgRlNMIFAxeHgvUDJ4eCBwcm9jZXNzb3JzIHNlcmllcwoKICAgIFAxMDExIC0gU2luZ2xlIGNvcmUgdmFyaWFudCBvZiBQMTAyMAogICAgUDIwMTAgLSBTaW5nbGUgY29yZSB2YXJpYW50IG9mIFAyMDIwCgogICAgU2lnbmVkLW9mZi1ieTogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGJmNDg4YmMwOTQ5ZmM5MDBkMTI5NmE3ZjM1YTM4YTZhMjhjYjVmYWIKQXV0aG9yOiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEF1ZyAyMCAxODo1NzowMiAyMDA5ICswNTMwCgogICAgODV4eDogUDEwMjBSREIgU3VwcG9ydCBBZGRlZAoKICAgIFNpZ25lZC1vZmYtYnk6IFBvb25hbSBBZ2dyd2FsIDxwb29uYW0uYWdncndhbEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAzYjFmMjQzYjhkYWQzMGE2NDZhMGYwNTZiMDI2ODUxOWVhZGJjM2M1CkF1dGhvcjogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBBdWcgMjAgMTg6NTU6MzUgMjAwOSArMDUzMAoKICAgIDg1eHg6IEFkZGVkIENPTkZJR19NQVhfQ1BVUyBmb3IgUDEwMjAKCiAgICBTaWduZWQtb2ZmLWJ5OiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNzZiNDc0ZTJmNWEyMjNmY2FiZmVhYTRmMWM4ZmI2OTkwNjJiOTg2YwpBdXRob3I6IE1pbmdrYWkgSHUgPE1pbmdrYWkuaHVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEF1ZyAxOCAxNTozNzoxNSAyMDA5ICswODAwCgogICAgODV4eDogQWRkIEwyU1JBTSBSZWdpc3RlcidzIG1hY3JvIGRlZmluaXRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDE1OGM2NzI0Yzk5MzY4YTRkOGVlZjExZWU3ZTNjN2FkMGVmMDNhMTUKQXV0aG9yOiBGZWxpeCBSYWRlbnNreSA8ZmVsaXhAZW1iZWRkZWQtc29sLmNvbT4KRGF0ZToJU2F0IEF1ZyAxNSAxNTowODozNyAyMDA5ICswMzAwCgogICAgODV4eDogRml4IG1lbW9yeSB0ZXN0IHJhbmdlIG9uIE1QQzg1MzZEUwoKICAgIFdpdGggY3VycmVudCB2YWx1ZXMgb2YgQ09ORklHX1NZU19NRU1URVNUX1NUQVJUIGFuZCBDT05GSUdfU1lTX01FTVRFU1RfRU5ECiAgICBtZW1vcnkgdGVzdCBoYW5ncyBpZiBydW4gd2l0aG91dCBhcmd1bWVudHMuIFNldCB0aGVtIHRvIHNhbmUgdmFsdWVzLCBzbwogICAgdGhhdCBhbGwgYXZhaWxhYmxlIDUxMk1CIG9mIFJBTSBleGNsdWRpbmcgZXhjZXB0aW9uIHZlY3RvcnMgYXQgdGhlIGJvdHRvbQogICAgYW5kIHUtYm9vdCBjb2RlIGFuZCBzdGFjayBhdCB0aGUgdG9wIGNhbiBiZSB0ZXN0ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogRmVsaXggUmFkZW5za3kgPGZlbGl4QGVtYmVkZGVkLXNvbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGVmNDFmMmEyNWM1NTQ2MDQxNTZiNTlmNTk0NWZlYWRhZTJmM2NiNTUKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgQXVnIDEyIDAwOjEwOjQ0IDIwMDkgLTA1MDAKCiAgICA4NXh4OiBSZW1vdmVkIEJFREJVRyBzdXBwb3J0IG9uIFAxX1AyX1JEQgoKICAgIFRvIG1hdGNoIGFsbCBvdGhlciA4NXh4IHBsYXRmb3JtcyB3ZSBhcmUgcmVtb3ZpbmcgQkVEQlVHIHN1cHBvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBiNTYwYWI4NWVkZmI2OGRhNjUzYmYyNTI3YzM5MGMzZTE4MjM5MmExCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJU2F0IEF1ZyA4IDEwOjQyOjMwIDIwMDkgLTA1MDAKCiAgICA4NXh4OiBJbml0IHBjaSBldGhlcm5ldCBjYXJkcyBpZiB3ZSBlbmFibGUgYW55IG9uIE1QQzg1NzJEUwoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMWJiNjFiNjlmN2FiYTQ5MzFlZGUzNWZkY2FiZDhlNWVjYWQxMjFkNwpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBBdWcgNyAxMzoxNjozNCAyMDA5IC0wNTAwCgogICAgeGVzOiBVc2UgcHJvcGVyIElPIGFjY2VzcyBmdW5jdGlvbnMKCiAgICBBbHNvIGZpeCBzb21lIG1pbm9yIHdoaXRlc3BhY2Ugb2RkaXRpZXMgd2hpbGUgd2UncmUgY2xlYW5pbmcgdXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBlYzc5ZDMzYjJjNDFlZThiNmQxMzU0Y2MwOTEwMjE3Yjc2OWM1MDM2CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEF1ZyA3IDEzOjAwOjU1IDIwMDkgLTA1MDAKCiAgICA4NXh4OiBNb3ZlIHRvIGEgY29tbW9uIGxpbmtlciBzY3JpcHQKCiAgICBUaGVyZSBhcmUgcmVhbGx5IG5vIGRpZmZlcmVuY2VzIGJldHdlZW4gYWxsIHRoZSA4NXh4IGxpbmtlciBzY3JpcHRzIHNvCiAgICB3ZSBjYW4ganVzdCBtb3ZlIHRvIGEgc2luZ2xlIGNvbW1vbiBvbmUuICBCb2FyZCBjb2RlIGlzIHN0aWxsIGFibGUgdG8KICAgIG92ZXJyaWRlIHRoZSBjb21tb24gb25lIGlmIG5lZWQgYmUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA4N2M3NjYxYjQyYWE3NjcyNTM5YjU0YjUxZDNkNWM0MDEzZWM2ZjZjCkF1dGhvcjogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBKdWwgMzEgMTI6MDg6MjcgMjAwOSArMDUzMAoKICAgIDg1eHg6IEFkZGVkIFAxMDIwIFByb2Nlc3NvciBTdXBwb3J0LgoKICAgIFAxMDIwIGlzIGFub3RoZXIgbWVtYmVyIG9mIFFvcklRIHNlcmllcyBvZiBwcm9jZXNzb3JzIHdoaWNoIGZhbGxzIGluIFVMRQogICAgY2F0ZWdvcnkuIEl0IGlzIGFuIGU1MDAgYmFzZWQgZHVhbCBjb3JlIFNPQy4KCiAgICBCZWluZyBhIHNjYWxlZCBkb3duIHZlcnNpb24gb2YgUDIwMjAgaXQgaGFzIGZvbGxvd2luZyBkaWZmZXJlbmNlczoKICAgIC0gNTMzTUh6IC0gODAwTUh6IGNvcmUgZnJlcXVlbmN5LgogICAgLSAyNTZLYnl0ZSBMMiBjYWNoZQogICAgLSBFdGhlcm5ldCBjb250cm9sbGVycyB3aXRoIGNsYXNzaWZpY2F0aW9uIGNhcGFiaWxpdGllcy4KICAgIEFsc28gdGhlIFNPQyBpcyBwaW4gY29tcGF0aWJsZSB3aXRoIFAyMDIwCgogICAgU2lnbmVkLW9mZi1ieTogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDcyOGVjZTM0M2U4YmIyYTY2ZWU5NzdjNDlkNDU1NDM5ZTNiMjhkYTkKQXV0aG9yOiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEF1ZyA1IDEzOjI5OjI0IDIwMDkgKzA1MzAKCiAgICA4NXh4OiBBZGQgc3VwcG9ydCBmb3IgUDIwMjBSREIgYm9hcmQKCiAgICBUaGUgY29kZSBiYXNlIGFkZHMgUDEgJiBQMiBSREIgcGxhdGZvcm1zIHN1cHBvcnQuCiAgICBUaGUgZm9sZGVyIGFuZCBmaWxlIG5hbWVzIGNhbiBjYXRlciB0byBmdXR1cmUgU09DcyBvZiBQMS9QMiBmYW1pbHkuCiAgICBQMSAmIFAyIHByb2Nlc3NvcnMgYXJlIDg1eHggcGxhdGZvcm1zLCBwYXJ0IG9mIEZyZWVzY2FsZSBRb3JJUSBzZXJpZXMuCgogICAgVGVzdGVkIGZvbGxvd2luZyBvbiBQMjAyMFJEQjoKICAgIDEuIGVUU0VDcwogICAgMi4gRERSLCBOQU5ELCBOT1IsIEkyQy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMGU4NzA5ODBhNjQ1ODRhNTkxYWY3NzViYjljOWZlOTQ1MDEyNGRmOQpBdXRob3I6IFBvb25hbSBBZ2dyd2FsIDxwb29uYW0uYWdncndhbEBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSnVsIDMxIDEyOjA4OjE0IDIwMDkgKzA1MzAKCiAgICA4eHh4OiBSZW1vdmVkIENPTkZJR19OVU1fQ1BVUyBmcm9tIDg1eHgvODZ4eAoKICAgIFRoZSBudW1iZXIgb2YgQ1BVcyBhcmUgZ2V0dGluZyBkZXRlY3RlZCBkeW5hbWljYWxseSBieSBjaGVja2luZyB0aGUKICAgIHByb2Nlc3NvciBTVlIgdmFsdWUuICBBbHNvIHJlbW92ZWQgQ09ORklHX05VTV9DUFVTIHJlZmVyZW5jZXMgZnJvbSBhbGwKICAgIHRoZSBwbGF0Zm9ybXMgd2l0aCA4NXh4Lzg2eHggcHJvY2Vzc29ycy4KCiAgICBUaGlzIGNhbiBoZWxwIHRvIHVzZSB0aGUgc2FtZSB1LWJvb3QgaW1hZ2UgYWNyb3NzIHRoZSBwbGF0Zm9ybXMuCgogICAgQWxzbyByZXZhbXBlZCBhbmQgY29ycmVjdGVkIGZldyBGcmVlc2NhbGUgQ29weXJpZ2h0IG1lc3NhZ2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBvb25hbSBBZ2dyd2FsIDxwb29uYW0uYWdncndhbEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAxOGJhY2MyMDI3Zjg1MzFkOGRlYzE1YmE4ZGEzMjQyZGZiNGU2M2YzCkF1dGhvcjogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBKdWwgMzEgMTI6MDc6NDUgMjAwOSArMDUzMAoKICAgIDh4eHg6IFJlZmFjdG9yZWQgY29tbW9uIGNwdSBzcGVjaWZpYyBjb2RlIGZvciA4NXh4Lzg2eHggaW50byBvbmUgZmlsZS4KCiAgICBSZW1vdmVkIHNhbWUgY29kZSBwaWVjZXMgZnJvbSBjcHUvbXBjODV4eC9jcHUuYyBhbmQgY3B1L21wYzg2eHgvY3B1LmMKICAgIGFuZCBtb3ZlZCB0byBjcHUvbXBjOHh4eC9jcHUuYyhuZXcgZmlsZSkKCiAgICBTaWduZWQtb2ZmLWJ5OiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgN2IxOGMyMjdiODQ3ZTQ3ODJlYjE0OTIyMTllYmQ1NTVmNTIxYjA4YgpBdXRob3I6IEFsZXggRHVib3YgPG9ha2FkQHlhaG9vLmNvbT4KRGF0ZToJRnJpIEF1ZyA3IDE1OjI4OjMyIDIwMDkgKzEwMDAKCiAgICBzdHg6IGNyZWF0ZSBjb21tb24gdmVuZG9yL2JvYXJkIGhpZXJhcmNoeSBmb3IgU1R4IGJvYXJkcwoKICAgIE1vdmUgZmlsZXMgYmVsb25naW5nIHRvIHRoZSBTVHggYm9hcmRzIGludG8gY29tbW9uIHZlbmRvciBkaXJlY3RvcnkgYW5kCiAgICB1cGRhdGUgdGhlIE1ha2VmaWxlIHRvIHJlZmxlY3QgdGhpcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbGV4IER1Ym92IDxvYWthZEB5YWhvby5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGJhZmRmOWFhOWRiYjY5ZDkzN2I3MmRiMTdlZDU4MDA5OThjNTk1MjMKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglUdWUgQXVnIDQgMTc6Mzg6MDAgMjAwOSAtMDUwMAoKICAgIDg1eHg6IFJlbW92ZSB1bnVzZWQgQ09ORklHX0NMRUFSX0xBVzAgZGVmaW5lcwoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDczYWFjYzUyMjg0OTQ4NmI2MGE1NjExZjY3OGYwYmYxYzMwNTM3NzkKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgQXVnIDYgMTg6Mzg6NDMgMjAwOSAtMDUwMAoKICAgIDg2eHg6IFJlbW92ZSByZWR1ZGFudCBQTEFURk9STV9DUFBGTEFHUwoKICAgIEZvciBoaXN0b3JpYyByZWFzb25zIHdlIGhhZCBkZWZpbmVkIHNvbWUgYWRkaXRpb25hbCBQTEFURk9STV9DUFBGTEFHUyBsaWtlOgoKICAgIFBMQVRGT1JNX0NQUEZMQUdTICs9IC1EQ09ORklHX01QQzg2eHg9MQogICAgUExBVEZPUk1fQ1BQRkxBR1MgKz0gLURDT05GSUdfTVBDODY0MT0xCgogICAgSG93ZXZlciB0aGVzZSBhcmUgYWxsIGNhcHR1cmVkIGluIHRoZSBjb25maWcuaCBhbmQgdGh1cyByZWR1ZGFudC4gIEFsc28KICAgIG1vdmVkIGNvbW1vbiA4Nnh4IGZsYWdzIGludG8gY3B1L21wYzg2eHgvY29uZmlnLm1rLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNTNlZmExZjFhY2FjYWNiNzZmYTlhMjFiMDliMzI5NDc4M2ExMWMwMwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBBdWcgNiAxODoyODozNCAyMDA5IC0wNTAwCgogICAgODV4eDogUmVtb3ZlIHJlZHVkYW50IFBMQVRGT1JNX0NQUEZMQUdTCgogICAgRm9yIGhpc3RvcmljIHJlYXNvbnMgd2UgaGFkIGRlZmluZWQgc29tZSBhZGRpdGlvbmFsIFBMQVRGT1JNX0NQUEZMQUdTCiAgICBsaWtlOgoKICAgIFBMQVRGT1JNX0NQUEZMQUdTICs9IC1EQ09ORklHX0U1MDA9MQogICAgUExBVEZPUk1fQ1BQRkxBR1MgKz0gLURDT05GSUdfTVBDODV4eD0xCiAgICBQTEFURk9STV9DUFBGTEFHUyArPSAtRENPTkZJR19NUEM4NTQ4PTEKCiAgICBIb3dldmVyIHRoZXNlIGFyZSBhbGwgY2FwdHVyZWQgaW4gdGhlIGNvbmZpZy5oIGFuZCB0aHVzIHJlZHVkYW50LgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMzM3ZjlmZGUyZTkzMTdjMWQ5ZTg1YTRhODk1NWEyZjE0NzMwYTAwZgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBKdWwgMzAgMTU6NTQ6MDcgMjAwOSAtMDUwMAoKICAgIDg1eHg6IEFkZCBhIDM2LWJpdCBwaHlzaWNhbCBjb25maWd1cmF0aW9uIGZvciBNUEM4NTM2RFMKCiAgICBXZSBtb3ZlIGFsbCBJTyBhZGRyZXNzZWQgKENDU1IsIGxvY2FsYnVzLCBQQ0kpIGFib3ZlIHRoZSA0RyBib3VuZGFyeQogICAgdG8gYWxsb3cgZm9yIGxhcmdlciBtZW1vcnkgc2l6ZXMuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIEFja2VkLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZWNlYWQ4NGQ1NmIwY2VkNjdiNzI3ZjVjZTIxYmEwOGM1M2I1ZjA5ZQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBdWcgNCAwOToxMDowMyAyMDA5IC0wNTAwCgogICAgODV4eDogQ2xlYW51cCB3aGl0ZXNwYWNlIGluIG1wYzg1MzZkcy5jCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBhZDE5ZTdhNWQyZGUzMzcwNjRjZTc3MjhkNjUwNGRmOTY0OGY1ZDMxCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEF1ZyA1IDA3OjU5OjM1IDIwMDkgLTA1MDAKCiAgICBwY2kvZnNsX3BjaV9pbml0OiBSZXdvcmsgUENJIEFUTVUgc2V0dXAgdG8gaGFuZGxlID40RyBvZiBtZW1vcnkKCiAgICBUaGUgb2xkIFBDSSBBVE1VIHNldHVwIGNvZGUgd291bGQganVzdCBtaW1pYyB0aGUgUENJIHJlZ2lvbnMgaW50byB0aGUKICAgIEFUTVUgcmVnaXN0ZXJzLiAgRm9yIHNpbXBsZSBtZW1vcnkgbWFwcyBpbiB3aGljaCBhbGwgbWVtb3J5LCBNTUlPLCBldGMKICAgIHNwYWNlIGZpdCBpbnRvIDRHIHRoaXMgd29ya3Mgb2suICBIb3dldmVyIHRoZXJlIGFyZSBpc3N1ZXMgd2l0aCB3ZSBoYXZlCiAgICA+NEcgb2YgbWVtb3J5IGFzIHdlIGtub3cgY2FuJ3QgYWNjZXNzIGFsbCBvZiBtZW1vcnkgYW5kIHdlIG5lZWQgdG8KICAgIGVuc3VyZSB0aGF0IFBDSUNTUkJBUiAoUEVYQ1NSQkFSIG9uIFBDSWUpIGlzbid0IG92ZXJsYXBwaW5nIHdpdGgKICAgIGFueXRoaW5nIHNpbmNlIHdlIGNhbid0IHR1cm4gaXQgb2ZmLgoKICAgIFdlIGZpcnN0IHNldHVwIG91dGJvdW5kIHdpbmRvd3MgYmFzZWQgb24gd2hhdCB0aGUgYm9hcmQgY29kZSBzZXR1cAogICAgaW4gdGhlIHBjaSByZWdpb25zIGZvciBNTUlPIGFuZCBJTyBhY2Nlc3MuCU5leHQgd2UgcGxhY2UgUENJQ1NSQkFSCiAgICBiZWxvdyB0aGUgTU1JTyB3aW5kb3cuICBBZnRlciB3aGljaCB3ZSB0cnkgdG8gc2V0dXAgdGhlIGluYm91bmQgd2luZG93cwogICAgdG8gbWFwIGFzIG11Y2ggb2YgbWVtb3J5IGFzIHBvc3NpYmxlLgoKICAgIE9uIFBDSWUgYmFzZWQgY29udHJvbGxlcnMgd2UgYXJlIGFibGUgdG8gb3Zlcm1hcCB0aGUgQVRNVSBzZXR1cCBzaW5jZQogICAgUlggJiBUWCBsaW5rcyBhcmUgc2VwYXJhdGUgYnV0IHJlcG9ydCB0aGUgcHJvcGVyIGFtb3VudCBvZiBpbmJvdW5kCiAgICBhZGRyZXNzIHNwYWNlIHRvIHRoZSByZWdpb24gdHJhY2tpbmcgdG8gZW5zdXJlIHRoZXJlIGlzIG5vIG92ZXJsYXAuCgogICAgT24gUENJIGJhc2VkIGNvbnRyb2xsZXJzIHdlIHVzZSBhcyBtYW55IGluYm91bmQgd2luZG93cyBhcyBhdmFpbGFibGUgdG8KICAgIG1hcCBhcyBtdWNoIG9mIHRoZSBtZW1vcnkgYXMgcG9zc2libGUuCgogICAgQWRkaXRpb25hbGx5IHdlIGNoYW5nZWQgYWxsIHRoZSBDQ1NSIHJlZ2lzdGVyIGFjY2VzcyB0byB1c2UgcHJvcGVyIElPCiAgICBhY2Nlc3NvciBmdW5jdGlvbnMuICBBbHNvIGhhZCB0byBhZGQgQ09ORklHX1NZU19DQ1NSQkFSX1BIWVMgdG8gc29tZQogICAgODZ4eCBwbGF0Zm9ybXMgdGhhdCBkaWRuJ3QgaGF2ZSBpdCBkZWZpbmVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgODI5NWI5NDQwMDQ0OTU4NjUwNWZmZTM0ZWMwMjRmZWIzZDJjOGZlNApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBBdWcgNSAwNzo0OToyNyAyMDA5IC0wNTAwCgogICAgcGNpL2ZzbF9wY2lfaW5pdDogVXNlIFBDSWUgY2FwYWJpbGl0eSB0byBkZXRlcm1pbmUgaWYgY29udHJvbGxlciBpcyBQQ0llCgogICAgQ2hhbmdlIHRoZSBjb2RlIHRvIHVzZSB0aGUgUENJZSBjYXBhYmlsaXRpZXMgcmVnaXN0ZXIgdG8gZGV0ZXJtaW5lIGlmIHdlCiAgICBhcmUgYSBQQ0llIGNvbnRyb2xsZXIgb3Igbm90LiAgQWRkaXRpb25hbGx5IGNsZWFuZWQgdXAgc29tZSB3aGl0ZSBzcGFjZQogICAgYW5kIGZvcm1hdHRpbmcgaW4gdGhlIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBjYjE1MWFhMmNmNWZiYjFlNDEyZmM3NjNhM2E2MTE3NThmMDY2MjM4CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIEF1ZyAzIDIxOjAyOjAyIDIwMDkgLTA1MDAKCiAgICBwY2kvZnNsX3BjaV9pbml0OiBGb2xkIGZzbF9wY2lfc2V0dXBfaW5ib3VuZF93aW5kb3dzIGludG8gZnNsX3BjaV9pbml0CgogICAgRXZlcnkgcGxhdGZvcm0gdGhhdCBjYWxscyBmc2xfcGNpX2luaXQgY2FsbHMgZnNsX3BjaV9zZXR1cF9pbmJvdW5kX3dpbmRvd3MKICAgIGJlZm9yZSBpdCBjYWxscyBmc2xfcGNpX2luaXQuICBUaGVyZSBpc24ndCBhbnkgcmVhc29uIHRvIGp1c3QgY2FsbCBpdAogICAgZnJvbSBmc2xfcGNpX2luaXQgYW5kIHNpbXBsaWZ5IHRoaW5ncyBhIGJpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGZiMzE0M2IzNWViNTg5MGVjNzJlNzlkMTdhNjA2OGE4NGEwNTdkNDcKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gQXVnIDMgMjA6NDQ6NTUgMjAwOSAtMDUwMAoKICAgIHBjaS9mc2xfcGNpX2luaXQ6IEZvbGQgcGNpX3NldHVwX2luZGlyZWN0IGludG8gZnNsX3BjaV9pbml0CgogICAgRXZlcnkgcGxhdGZvcm0gdGhhdCBjYWxscyBmc2xfcGNpX2luaXQgY2FsbHMgcGNpX3NldHVwX2luZGlyZWN0IGJlZm9yZQogICAgaXQgY2FsbHMgZnNsX3BjaV9pbml0LiAgVGhlcmUgaXNuJ3QgYW55IHJlYXNvbiB0byBqdXN0IGNhbGwgaXQgZnJvbQogICAgZnNsX3BjaV9pbml0IGFuZCBzaW1wbGlmeSB0aGluZ3MgYSBiaXQuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAyODg4N2Q4MzFiMDJjNjZjY2MxMGQ3ZjEzNzkyMDRiNWE2MmY0NTQzCkF1dGhvcjogQW5kcsOpIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KRGF0ZToJVGh1IEF1ZyAyNyAxNDo0ODozNSAyMDA5ICswMjAwCgogICAgVXNlIGNvbW1vbiBjb2RlIGZvciBNYXRyaXggVmlzaW9uIGJvYXJkcwoKICAgIENsZWFuIHVwIGV4aXN0aW5nIGJvYXJkcyAobXZCQy1QL01QQzUyMDAgYW5kIG12QkwtTTcvTVBDODM0MykgYnkKICAgIHVzaW5nIGNvbW1vbiBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHLpIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KCmNvbW1pdCAwNWY5MWE2NWFiYzMxODBlMjg5NmNkOGRkZWU3YTM0YjFkMWNlNmUwCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEF1ZyAyNiAyMToyNzozNyAyMDA5IC0wNTAwCgogICAgbXBjODN4eDogbXBjODM0OWl0eCAtIGFjY29tbW9kYXRlIGxhcmdlciBrZXJuZWwgc2l6ZXMgJiB1bnplcm8gdGhlIGJvb3RkZWxheQoKICAgIGFwcGFyZW50bHkgdGhlIElUWCB3YXMgbWlzc2VkIGxhc3Qgcm91bmQuCgogICAgQWxzbyBtYWtlIGJvb3RkZWxheSBjb25zaXN0ZW50IHdpdGggb3RoZXIgYm9hcmRzLCBzbyBhcyB0byBnaXZlIG9uIHRoZQogICAgb3Bwb3J0dW5pdHkgdG8gZml4IG1pc3Rha2VubHkgc2V0IGJvb3RjbWQgd2l0aG91dCBoYXZpbmcgY2hlY2tlZCBmb3IgYW4KICAgIGJvb3RkZWxheSB6ZXJvIHNldHRpbmcgZmlyc3QuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjYzg2MWY3MTI3ZjIwMGU3MDRiYWFmMDYxYTdmNTA4ZTNjOTNmMmEzCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEF1ZyAyNiAyMToyNTo0NiAyMDA5IC0wNTAwCgogICAgbXBjODN4eDogbWF0Y2ggZHRiIGZpbGVuYW1lIHJlZmVyZW5jZXMgdG8gdGhlaXIgZHRzIGVxdWl2YWxlbnRzIGluIHRoZSBsaW51eCBrZXJuZWwKCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDc3YjM1MWNkMGYyMDQ4M2VlZmEwOWJlYmViYjNlMGNiZjU1NTViMmMKQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+CkRhdGU6CVR1ZSBBdWcgMTggMTA6MTA6NDIgMjAwOSAtMDQwMAoKICAgIE5BTkQ6IERhVmluY2k6IFYyIEFkZGluZyA0IEJJVCBFQ0Mgc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggYWRkcyA0IEJJVCBFQ0Mgc3VwcG9ydCBpbiB0aGUgRGFWaW5jaSBOQU5ECiAgICBkcml2ZXIuIFRlc3RlZCBvbiBib3RoIHRoZSBETTM1NSBhbmQgRE0zNjUuCgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjgzYjdmOWU4YTVkMTMzNGUyNDUwNmVhNTk1M2RkODcxNTk2ZWE4YQpBdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KRGF0ZToJTW9uIEF1ZyAxMCAxMzoyNzo1NiAyMDA5IC0wNDAwCgogICAgTVREOk5BTkQ6IEFERCBuZXcgRUNDIG1vZGUgTkFORF9FQ0NfSFdfT09CX0ZJUlNUCgogICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBuZXcgbW9kZSBOQU5EX0VDQ19IV19PT0JfRklSU1QgaW4gdGhlIG5hbmQgY29kZSB0bwogICAgc3VwcG9ydCA0LWJpdCBFQ0Mgb24gVEkgRGFWaW5jaSBkZXZpY2VzIHdpdGggbGFyZ2UgcGFnZSAodXAgdG8gMkspIE5BTkQKICAgIGNoaXBzLiAgVGhpcyBFQ0MgbW9kZSBpcyBzaW1pbGFyIHRvIE5BTkRfRUNDX0hXLCB3aXRoIHRoZSBleGNlcHRpb24gb2YKICAgIHJlYWRfcGFnZSBBUEkgdGhhdCBmaXJzdCByZWFkcyB0aGUgT09CIGFyZWEsIHJlYWRzIHRoZSBkYXRhIGluIGNodW5rcywKICAgIGZlZWRzIHRoZSBFQ0MgZnJvbSBPT0IgYXJlYSB0byB0aGUgRUNDIGh3IGVuZ2luZSBhbmQgcGVyZm9ybSBhbnkKICAgIGNvcnJlY3Rpb24gb24gdGhlIGRhdGEgYXMgcGVyIHRoZSBFQ0Mgc3RhdHVzIHJlcG9ydGVkIGJ5IHRoZSBlbmdpbmUuCgogICAgVGhpcyBwYXRjaCBoYXMgYmVlbiBhY2NlcHRlZCBieSBBbmRyZXcgTW9ydG9uIGFuZCBjYW4gYmUgZm91bmQgYXQKCiAgICBodHRwOi8vdXNlcndlYi5rZXJuZWwub3JnL35ha3BtL21tb3RtL2Jyb2tlbi1vdXQvbXRkLW5hbmQtYWRkLW5ldy1lY2MtbW9kZS1lY2NfaHdfb29iX2ZpcnN0LnBhdGNoCgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU25laGEgTmFybmFrYWplIDxuc25laGFwcmFiaGFAdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzZmYWI5OTdkODVkODllZTdmZDJjN2ZkNjA1N2ZhYjc4NmQ1NTZhYQpBdXRob3I6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgpEYXRlOglUdWUgQXVnIDExIDAyOjMyOjU0IDIwMDkgKzA0MDAKCiAgICBteGNfbmFuZDogYWRkIG5hbmQgZHJpdmVyIGZvciBNWDIvTVgzCgogICAgRHJpdmVyIGZvciBORkMgTkFORCBjb250cm9sbGVyIGZvdW5kIG9uIEZyZWVzY2FsZSdzIE1YMiBhbmQgTVgzCiAgICBwcm9jZXNzb3JzLiBQb3J0ZWQgZnJvbSBMaW51eC4gVGVzdGVkIG9ubHkgd2l0aCBpLk1YMjcgYnV0IHNob3VsZAogICAgd29ya3Mgd2l0aCBvdGhlciBNWDIgYW5kIE1YMyBwcm9jZXNzb3JzIHRvby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGEyYzY1YjQ3ZWZmY2IzZDBhYTIzZTU4NTk2NTM4YWNkMzM4YWM3YzUKQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+CkRhdGU6CU1vbiBBdWcgMTAgMTM6Mjc6NDYgMjAwOSAtMDQwMAoKICAgIE5BTkQ6IEFERCBwYWdlIFBhcmFtZXRlciB0byBhbGwgcmVhZF9wYWdlL3JlYWRfcGFnZV9yYXcgQVBJJ3MKCiAgICBUaGlzIHBhdGNoIGFkZHMgYSBuZXcgInBhZ2UiIHBhcmFtZXRlciB0byBhbGwgTkFORCByZWFkX3BhZ2UvcmVhZF9wYWdlX3JhdwogICAgQVBJcy4gIFRoZSByZWFkX3BhZ2UgQVBJIGZvciB0aGUgbmV3IG1vZGUgRUNDX0hXX09PQl9GSVJTVCByZXF1aXJlcyB0aGUKICAgIHBhZ2UgaW5mb3JtYXRpb24gdG8gc2VuZCB0aGUgUkVBRE9PQiBjb21tYW5kIGFuZCByZWFkIHRoZSBPT0IgYXJlYSBiZWZvcmUKICAgIHRoZSBkYXRhIGFyZWEuCgogICAgVGhpcyBwYXRjaCBoYXMgYmVlbiBhY2NlcHRlZCBieSBBbmRyZXcgTW9ydG9uIGFuZCBjYW4gYmUgZm91bmQgYXQKICAgIGh0dHA6Ly91c2Vyd2ViLmtlcm5lbC5vcmcvfmFrcG0vbW1vdG0vYnJva2VuLW91dC9tdGQtbmFuZC1hZGQtcGFnZS1wYXJhbWV0ZXItdG8tYWxsLXJlYWRfcGFnZS1yZWFkX3BhZ2VfcmF3LWFwaXMucGF0Y2gKCiAgICBXRSB3b3VsZCBsaWtlIHRoaXMgdG8gYmVjb21lIHBhcnQgb2YgdGhlIHUtYm9vdCBHSVQgYXMgd2VsbAoKICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNuZWhhIE5hcm5ha2FqZSA8bnNuZWhhcHJhYmhhQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGRlNDI1MDkyOWYzN2U2YzE2ODYwNzQxYjc0NTQ2YmVkYmUwYmRhYmEKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVHVlIEp1bCAyMSAxNzoxMzo0MCAyMDA5ICswMjAwCgogICAgODN4eCwga21ldGVyMTogYWRkZWQgTkFORCBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlY2FkMjg5ZmM2YmQ5ZDg5ZWY0ZDUwOTNjYzdiNmZkNzEyZmQwZDI5CkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+CkRhdGU6CVR1ZSBKdWwgMjEgMTE6NTg6MDQgMjAwOSArMDkwMAoKICAgIE9uZU5BTkQ6IFJlbW92ZSB1bnVzZWQgcmVhZF9zcGFyZXJhbQoKICAgIFJlbW92ZSB1bnVzZWQgcmVhZF9zcGFyZXJhbSBhbmQgYWRkIHVubG9ja19hbGwgYXMga2VybmVsIGRvZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNDAzY2UxZjc1OWI1YWNlYzg1MTRjZDdlMTBjZTc2NzA0ZmVkNTE5YwpBdXRob3I6IE1hdHRoaWFzIEthZWhsY2tlIDxtYXR0aGlhc0BrYWVobGNrZS5uZXQ+CkRhdGU6CVRodSBKdWwgMTYgMjE6MTk6MjkgMjAwOSArMDIwMAoKICAgIEtCOTIwMjogQWRkIE5BTkQgc3VwcG9ydAoKICAgIEFkZCBLQjkyMDIgTkFORCBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgY2UzMjc3YTZmMmMwODJmMzk1OTZkM2QzZDg4ZGQwYTViYzkxNDM5ZApBdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgpEYXRlOglUdWUgSnVsIDIxIDExOjU4OjA0IDIwMDkgKzA5MDAKCiAgICBPbmVOQU5EOiBSZW1vdmUgdW51c2VkIHJlYWRfc3BhcmVyYW0KCiAgICBSZW1vdmUgdW51c2VkIHJlYWRfc3BhcmVyYW0gYW5kIGFkZCB1bmxvY2tfYWxsIGFzIGtlcm5lbCBkb2VzCgogICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KCmNvbW1pdCAwZDA0MjAzN2IzY2Y4NjkzZWEwZjc5M2QwYzI5MjQzMGJmYzVhOTVjCkF1dGhvcjogRXJpYyBNaWxsYnJhbmR0IDxlbWlsbGJyYW5kdEBjb2xkaGF1cy5jb20+CkRhdGU6CVR1ZSBBdWcgMjUgMTA6MzA6MjYgMjAwOSAtMDUwMAoKICAgIGdhbGF4eTUyMDA6IENsZWFudXAgdHlwbyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZQoKICAgIFNpZ25lZC1vZmYtYnk6IEVyaWMgTWlsbGJyYW5kdCA8ZW1pbGxicmFuZHRAZGVrYXJlc2VhcmNoLmNvbT4KCmNvbW1pdCBmNmEzMDkwODBiMmRhOWU1MDliNWVlOGQwOTFkY2E1ZTE3NTQxNWI3CkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgpEYXRlOglXZWQgSnVsIDIyIDE4OjQyOjQ1IDIwMDkgKzAwMDAKCiAgICBDb2xkRmlyZTogRml4IGNvbXBpbGUgd2FybmluZyBtZXNzYWdlcwoKICAgIENoYW5nZSAlMDhsWCB0byAlMDhYIGluIGJvYXJkLmMuIFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKICAgICdvc2NpbGxhdG9yJyBpbiBtY2Y1MjI3eC9jcHVfaW5pdC5jIGFuZCAnc2NtMicgaW4KICAgIG1jZjUzMngvY3B1X2luaXQuYy4gUHJvdmlkZSBhcmd1bWVudCB0eXBlIGNhc3QgaW4KICAgIGRyaXZlcnMvZG1hL01DRF9kbWFBcGkuYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+Cgpjb21taXQgODhjODExYjE1Mzc3MWEzZDFiZmU5NTgyOTdjNjk3MjJlZmIyNzhlOQpBdXRob3I6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KRGF0ZToJV2VkIEp1bCAyMiAxNjozMjozOSAyMDA5ICswMDAwCgogICAgQ29sZEZpcmU6IEZpeCBtaXNzaW5nIF9JT19CQVNFIHdoaWNoIGNhdXNlZCBjb21waWxlIGVycm9yCgogICAgVGhlIGNvbXBpbGUgZXJyb3Igd2FzIGNhdXNlZCBieSBhIHJlY2VudCBwYXRjaC4gQWZmZWN0ZWQgcGxhdGZvcm1zIC0KICAgIE01MjUzREVNTy5oLCBNNTI1M0VWQkUuaCwgYW5kIE01NDQ1NUVWQi5oLiBBZGRpbmcgdGhlIF9JT19CQVNFCiAgICBhdXRvbWF0aWNhbGx5IGRlZmluZWQgdG8gMCBpbiBhc20tbTY4ay9pby5oIGlmIGl0IGlzbid0IHNldCBpbgogICAgcGxhdGZvcm0gY29uZmlndXJhdGlvbiBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KCmNvbW1pdCAzYTdiMmMyMWZiMDhiMDIyZTNlNjI0Y2QwNzEwMDJiNGFhZWQxNjA2CkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBtZW1iZXIuZnNmLm9yZz4KRGF0ZToJV2VkIEp1bCAyMiAxNzoxMzoyNCAyMDA5ICswMjAwCgogICAgU3VwcG9ydCB1cCB0byA3IGJhbmtzIGZvciBpZHMgYXMgc3BlY2lmaWVkIGluIEpFREVDIEpFUDEwNloKCiAgICBzZWUgaHR0cDovL3d3dy5qZWRlYy5vcmcvZG93bmxvYWQvc2VhcmNoL2plcDEwNloucGRmCiAgICBBZGQgc29tZSBzZWNvbmQgc291cmNlIGxlZ2FjeSBmbGFzaCBjaGlwcyAyNTZ4OC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG1lbWJlci5mc2Yub3JnPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDBkMDcxY2RkNzgyZTkxN2I0M2UwNDg2OTg0M2RmMzE2NzAyMzFmZmQKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXVnIDI0IDE0OjMyOjI2IDIwMDkgLTA1MDAKCiAgICBuZXQ6IHRzZWMgLSBoYW5kbGUgdXNlciBpbnRlcnJ1cHQgd2hpbGUgd2FpdGluZyBmb3IgUEhZIGF1dG8gbmVnb3RpYXRpb24gdG8gY29tcGxldGUKCiAgICBpZiB5b3UgZG9uJ3QgaGF2ZSBmaXJtd2FyZSBpbnN0YWxsZWQgZm9yIHRoZSBQSFkgdG8gY29tZSB0byBsaWZlLCB0aGlzCiAgICB3YWl0IGNhbiBiZSBwYWluZnVsIC0gbGV0J3MgZ2l2ZSB0aGUgb3B0aW9uIHRvIGF2b2lkIGl0IGlmIHdlIHdhbnQuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDRmY2NiODE4ZTdlZTExOTA2MDJlNzlhYTU3MjlhMjNiYzM0OWJmMGMKQXV0aG9yOiBSb2JpbiBHZXR6IDxyZ2V0ekBibGFja2Zpbi51Y2xpbnV4Lm9yZz4KRGF0ZToJVGh1IEF1ZyAyMCAxMDo1MDoyMCAyMDA5IC0wNDAwCgogICAgQWRkIFRyYW5zZmVyIFNpemUgT3B0aW9uIHRvIHRmdHAKCiAgICBPcHRpb25hbGx5IGFkZCBSRkMgMjM0OSAiVHJhbnNmZXIgU2l6ZSBPcHRpb24iLCBzbyB3ZSBjYW4gbWluaW1pemUgdGhlCiAgICB0aW1lIHNwZW50IHNlbmRpbmcgZGF0YSBvdmVyIHRoZSBVQVJUIChub3cgcHJpbnQgYSBzaW5nbGUgbGluZSBkdXJpbmcgYQogICAgdGZ0cCB0cmFuc2ZlcikuCgogICAgIC0gSWYgdHVybmVkIG9uIChDT05GSUdfVEZUUF9UU0laRSksIFUtQm9vdCBhc2tzIGZvciB0aGUgc2l6ZSBvZiB0aGUgZmlsZS4KICAgICAtIGlmIHJlY2VpdmVzIHRoZSBmaWxlIHNpemUsIGEgc2luZ2xlIGxpbmUgKDUwIGNoYXJzKSBhcmUgcHJpbnRlZC4KCSBvbmUgaGFzaCBtYXJrID09IDIlIG9mIHRoZSBmaWxlIGRvd25sb2FkZWQuCiAgICAgLSBpZiBpdCBkb2Vzbid0IHJlY2VpdmUgdGhlIGZpbGUgc2l6ZSAodGhlIHNlcnZlciBkb2Vzbid0IHN1cHBvcnQgUkZDCgkgMjM0OSwgcHJpbnRzIHN0YW5kYXJkIGhhc2ggbWFya3MgKG9uZSBtYXJrIGZvciBlYWNoIFVEUCBmcmFtZSkuCgogICAgU2lnbmVkLW9mZi1ieTogUm9iaW4gR2V0eiA8cmdldHpAYmxhY2tmaW4udWNsaW51eC5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDQ4OGZlZWY4NTIyOWMwOGNkM2FhMWZhMTgzYmM4ZjQ4M2QyYWU4MzIKQXV0aG9yOiBSb2JpbiBHZXR6IDxyZ2V0ekBibGFja2Zpbi51Y2xpbnV4Lm9yZz4KRGF0ZToJTW9uIEF1ZyAyNCAxMDozMzozOSAyMDA5IC0wNDAwCgogICAgQWRkIGRlYnVnIG1lc3NhZ2UgZm9yIEJsYWNrZmluIEV0aGVybmV0IFJ4IGZ1bmN0aW9uLgoKICAgIEFkZCBhIHNpbXBsZSBwcmludCBmb3IgdGhlIEJsYWNrZmluJ3MgRXRoZXJuZXQgUnggZnVuY3Rpb24sCiAgICBzbyB3ZSBjYW4gZGVidWcgaW5jb21taW5nIEV0aGVybmV0IGZ1bmN0aW9ucyBlYXNpZXIuCgogICAgU2lnbmVkLW9mZi1ieTogUm9iaW4gR2V0eiA8cmdldHpAYmxhY2tmaW4udWNsaW51eC5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGIxYzBlYWFjMTEwYmM5MTllNWI0ZTg4ODIxMzQ4ZTcxNDQ5M2YyNjYKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglUdWUgQXVnIDI1IDEzOjA5OjM3IDIwMDkgLTA3MDAKCiAgICBDb252ZXJ0IENTODkwMCBFdGhlcm5ldCBkcml2ZXIgdG8gQ09ORklHX05FVF9NVUxUSSBBUEkKCiAgICBBbGwgaW4tdHJlZSBib2FyZHMgdGhhdCB1c2UgdGhpcyBjb250cm9sbGVyIGhhdmUgQ09ORklHX05FVF9NVUxUSSBhZGRlZAogICAgQWxzbzoKICAgICAgLSBjaGFuZ2VkIENPTkZJR19EUklWRVJfQ1M4OTAwIHRvIENPTkZJR19DUzg5MDAKICAgICAgLSBjaGFuZ2VkIENTODkwMF9CQVNFIHRvIENPTkZJR19DUzg5MDBfQkFTRQogICAgICAtIGNoYW5nZWQgQ1M4OTAwX0JVUz8/IHRvIENPTkZJR19DUzg5MDBfQlVTPz8KICAgICAgLSBjbGVhbmVkIHVwIGxpbmUgbGVuZ3RocwogICAgICAtIG1vZGlmaWVkIFZDTUE5IGNvbW1hbmQgZnVuY3Rpb24gdGhhdCBhY2Nlc3NlcyB0aGUgZGV2aWNlCiAgICAgIC0gcmVtb3ZlZCBNQUMgYWRkcmVzcyBpbml0aWFsaXphdGlvbiBmcm9tIGxpYl9hcm0vYm9hcmQuYwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CiAgICBUZXN0ZWQtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBBY2tlZC1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBkNDc2MjhhNmVjZjgwY2Q0NTg0YTUwYjZjNzk1YjkwYzk4NWE0OGU1CkF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaS1saXN0QGdudWRkLmNvbT4KRGF0ZToJRnJpIEF1ZyA3IDEzOjU5OjI2IDIwMDkgKzAyMDAKCiAgICBhcm0gbm9tYWRpazogYWN0aXZhdGUgZGVmcmFnIGNob29zZSA0ayB0cmFuc2ZlciBibG9jayBzaXplCgogICAgVGhpcyBjaG9vc2VzIDRrQiBkYXRhIHNpemUgZm9yIGJvdGggVEZUUCBhbmQgTkZTLCBhcyBhbiBleGFtcGxlCiAgICBhYm91dCBob3cgdG8gdXNlIHN1cHBvcnQgZm9yIElQIGZyYWdtZW50cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQGdudWRkLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYmQ5MzFjYTYxYzg0MDM5MjQxZDQzOGFkZTRhOTc1NWFlMGU1MzcyZgpBdXRob3I6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmktbGlzdEBnbnVkZC5jb20+CkRhdGU6CUZyaSBBdWcgNyAxMzo1OToxNiAyMDA5ICswMjAwCgogICAgbmZzOiBhY2NlcHQgQ09ORklHX05GU19SRUFEX1NJWkUgZnJvbSBjb25maWcgZmlsZQoKICAgIFRvIHRha2UgYWR2YW50YWdlIG9mIGRlZnJhZ21lbnRlZCBwYWNrZXRzLCB0aGUgY29uZmlnIGZpbGUKICAgIGNhbiBkZWZpbmUgQ09ORklHX05GU19SRUFEX1NJWkUgdG8gb3ZlcnJpZGUgdGhlIDFrQiBkZWZhdWx0LgogICAgTm8gc3VwcG9ydCBpcyB0aGVyZSBmb3IgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgYnkgbm93LgoKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAZ251ZGQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA4OWJhODFkMTA3OWEwN2I4NDMwYTk4YzE3NDZjNmQ0MTEzMTJlYjBkCkF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaS1saXN0QGdudWRkLmNvbT4KRGF0ZToJRnJpIEF1ZyA3IDEzOjU5OjA2IDIwMDkgKzAyMDAKCiAgICB0ZnRwOiBnZXQgdGhlIHRmdHAgYmxvY2sgc2l6ZSBmcm9tIGNvbmZpZyBmaWxlIGFuZCBmcm9tIHRoZSBlbnZpcm9ubWVudAoKICAgIEluY3JlYXNpbmcgdGhlIGJsb2NrIHNpemUgaXMgdXNlZnVsIGlmIENPTkZJR19JUF9ERUZSQUcgaXMKICAgIHVzZWQuIEhvd2VydmVyLCB0aGUgbGFzdCBmcmFnbWVudHMgaW4gYSBidXJzdCBtYXkgb3ZlcmZsb3cgdGhlCiAgICByZWNlaXZpbmcgZXRoZXJuZXQsIHNvIHRoZSBkZWZhdWx0IGlzIGxlZnQgYXQgMTQ2OCwgd2l0aCB0aHJlIG5ldwogICAgQ09ORklHX1RGVFBfQkxPQ0tTSVpFIGZvciBjb25maWcgZmlsZXMuIEZ1cnRoZXIsICJ0ZnRwYmxvY2tzaXplIgogICAgY2FuIGJlIHNldCBpbiB0aGUgZW52aXJvbm1lbnQuCgogICAgU2lnbmVkLW9mZi1ieTogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUBnbnVkZC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDVjZmFhNGU1NGQwZWI4MjMyZmExY2YwOTJkOTU1ZmRhZWQ1YjY3M2QKQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pLWxpc3RAZ251ZGQuY29tPgpEYXRlOglGcmkgQXVnIDcgMTM6NTg6NTYgMjAwOSArMDIwMAoKICAgIG5ldDogZGVmcmFnbWVudCBJUCBwYWNrZXRzCgogICAgVGhlIGRlZnJhZ21lbnRpbmcgY29kZSBpcyBlbmFibGVkIGJ5IENPTkZJR19JUF9ERUZSQUc7IHRoZSBjb2RlIGlzCiAgICB1c2VmdWwgZm9yIFRGVFAgYW5kIE5GUyB0cmFuc2ZlcnMuCVRoZSB1c2VyIGNhbiBzcGVjaWZ5IHRoZSBtYXhpbXVtCiAgICBkZWZyYWdtZW50ZWQgcGF5bG9hZCBhcyBDT05GSUdfTkVUX01BWERFRlJBRyAoZGVmYXVsdCAxNmspLgogICAgU2luY2UgTkZTIGhhcyBhIGJpZ2dlciBwZXItcGFja2V0IG92ZXJoZWFkIHRoYW4gVEZUUCwgdGhlIHN0YXRpYwogICAgcmVhc3NlbWJseSBidWZmZXIgY2FuIGhvbGQgQ09ORklHX05FVF9NQVhERUZSQUcgKyB0aGUgTkZTIG92ZXJoZWFkLgoKICAgIFRoZSBwYWNrZXQgYnVmZmVyIGlzIHVzZWQgYXMgYW4gYXJyYXkgb2YgImhvbGUiIHN0cnVjdHVyZXMsIGFjdGluZyBhcwogICAgYSBkb3VibGUtbGlua2VkIGxpc3QuIEVhY2ggbmV3IGZyYWdtZW50IGNhbiBzcGxpdCBhIGhvbGUgaW4gdHdvLAogICAgcmVkdWNlIGEgaG9sZSBvciBmaWxsIGEgaG9sZS4gTm8gc3VwcG9ydCBpcyB0aGVyZSBmb3IgYSBmcmFnbWVudAogICAgb3ZlcmxhcHBpbmcgdHdvIGRpZmZyZW50IGhvbGVzIChpLmUuLCB0aHJlIG5ldyBmcmFnbWVudCBpcyBhY3Jvc3MgYW4KICAgIGFscmVhZHktcmVjZWl2ZWQgZnJhZ21lbnQpLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAZ251ZGQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA2OGU3NDU2N2NmMzE3MzE4ZGY1MmRiY2IyYWMxNzBmZmM1ZTc3NThhCkF1dGhvcjogRmVuZyBLYW4gPGZrYW5AYW1jYy5jb20+CkRhdGU6CUZyaSBBdWcgMjEgMTA6NTk6NDIgMjAwOSAtMDcwMAoKICAgIHBwYzR4eDogRml4IEVDQyBDb3JyZWN0aW9uIGJ1ZyB3aXRoIFNNQyBvcmRlcmluZyBmb3IgTkRGQyBkcml2ZXIKCiAgICBGaXggRUNDIENvcnJlY3Rpb24gYnVnIHdoZXJlIHRoZSBieXRlIG9mZnNldCBsb2NhdGlvbiB3ZXJlIGRvdWJsZQogICAgZmxpcHBlZCBjYXVzaW5nIGNvcnJlY3Rpb24gcm91dGluZSB0byB0b2dnbGUgdGhlIHdyb25nIGJ5dGUgbG9jYXRpb24KICAgIGluIHRoZSBFQ0Mgc2VnbWVudC4gVGhlIG5kZmNfY2FsY3VsYXRlX2VjYyByb3V0aW5lIGNoYW5nZSB0aGUgb3JkZXIKICAgIG9mIGdldHRpbmcgdGhlIEVDQyBjb2RlLgoJICAgIC8qIFRoZSBOREZDIHVzZXMgU21hcnQgTWVkaWEgKFNNQykgYnl0ZXMgb3JkZXIgKi8KCSAgICBlY2NfY29kZVswXSA9IHBbMl07CgkgICAgZWNjX2NvZGVbMV0gPSBwWzFdOwoJICAgIGVjY19jb2RlWzJdID0gcFszXTsKICAgIEJ1dCBpbiB0aGUgQ29ycmVjdGlvbiBhbGdvcml0aG0gd2hlbiBjYWxjdWxhdGluZyB0aGUgYnl0ZSBvZmZzZXQKICAgIGxvY2F0aW9uLCB0aGUgczEgaXMgdXNlZCBhcyB0aGUgdXBwZXIgcGFydCBvZiB0aGUgYWRkcmVzcy4gV2hpY2gKICAgIGFnYWluIHJldmVyc2UgdGhlIG9yZGVyIG1ha2luZyB0aGUgZmluYWwgYnl0ZSBvZmZzZXQgYWRkcmVzcwogICAgbG9jYXRpb24gaW5jb3JyZWN0LgoJYnl0ZW9mZnMgPSAoczEgPDwgMCkgJiAweDgwOwoJLgoJLgoJYnl0ZW9mZnMgfD0gKHMwID4+IDQpICYgMHgwODsKICAgIFRoZSBvcmRlciBpcyBjaGFuZ2UgdG8gcmVhZCBpdCBpbiBzdHJhaWdodCBhbmQgbGV0IHRoZSBjb3JyZWN0aW9uCiAgICBmdW5jdGlvbiB0byByZXZlcnQgaXQgdG8gU01DIG9yZGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEZlbmcgS2FuIDxma2FuQGFtY2MuY29tPgogICAgQWNrZWQtYnk6IFZpY3RvciBHYWxsYXJkbyA8dmdhbGxhcmRvQGFtY2MuY29tPgogICAgQWNrZWQtYnk6IFByb2R5dXQgSGF6YXJpa2EgPHBoYXphcmlrYUBhbWNjLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzMDdlY2I2ZGIwNGVlYmRjMDZiOGM4N2Q0OGJmNDhkM2NiZDVlOWQ3CkF1dGhvcjogRXJpYyBNaWxsYnJhbmR0IDxlbWlsbGJyYW5kdEBjb2xkaGF1cy5jb20+CkRhdGU6CVRodSBBdWcgMTMgMDg6MzI6MzcgMjAwOSAtMDUwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBVU0Igb24gUFNDMyBmb3IgdGhlIG1wYzUyMDAKCiAgICBTdXBwb3J0IFVTQiBvbiBQU0MzIG9uIHRoZSBtcGM1MjAwLiAgQmVmb3JlIHRoaXMgcGF0Y2gsIGVuYWJsaW5nIFVTQiBzdXBwb3J0CiAgICB3b3VsZCByZWNvbmZpZ3VyZSBQU0M0IGFuZCBQU0M1IHRvIFVTQi4gIFRoZSBtcGM1MjAwIGRvZXMgbm90IHN1cHBvcnQgVVNCCiAgICBlbmFibGVkIG9uIGJvdGggdGhlIHN0YW5kYXJkIFVTQiBwb3J0IGFuZCBQU0MzLiAgVGhpcyBwYXRjaCBtYXNrcyB0aGUKICAgIGFwcHJvcHJpYXRlIGJpdHMgd2hlbiBlbmFibGluZyBVU0IuCgogICAgU2lnbmVkLW9mZi1ieTogRXJpYyBNaWxsYnJhbmR0IDxlbWlsbGJyYW5kdEBkZWthcmVzZWFyY2guY29tPgogICAgQWNrZWQtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KICAgIEFja2VkLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCA2Yjg1NDhiMGY3MDY4Mzc5YWQxZWZhNGZhMjg3MjVmMzYxYjJkM2NkCkF1dGhvcjogQWxiaW4gVG9ubmVycmUgPGFsYmluLnRvbm5lcnJlQGZyZWUtZWxlY3Ryb25zLmNvbT4KRGF0ZToJVGh1IEF1ZyAxMyAxOToxMjo0NCAyMDA5ICswMjAwCgogICAgQWRkIGRyaXZlciBmb3IgdGhlIFNUIE00MVQ5NCBTUEkgUlRDCgogICAgVGhpcyBSVEMgaXMgdXNlZCBpbiBzb21lIENhbGFvIGJvYXJkcy4gVGhlIGRyaXZlciBjb2RlIGlzIHRha2VuIGZyb20KICAgIHRoZSBsaW51eCBydGMtbTQxdDk0IGRyaXZlcgoKICAgIFNpZ25lZC1vZmYtYnk6IEFsYmluIFRvbm5lcnJlIDxhbGJpbi50b25uZXJyZUBmcmVlLWVsZWN0cm9ucy5jb20+Cgpjb21taXQgODg1ZmM3OGMyOGZiZTc3M2JjYjRlZGM5ZGQwZmRhYzA1ZWJiNWIzOApBdXRob3I6IEFsYmluIFRvbm5lcnJlIDxhbGJpbi50b25uZXJyZUBmcmVlLWVsZWN0cm9ucy5jb20+CkRhdGU6CVRodSBBdWcgMTMgMTU6MzE6MTIgMjAwOSArMDIwMAoKICAgIFN3aXRjaCBmcm9tIHBlci1kcml2ZXIgdG8gY29tbW9uIGRlZmluaXRpb24gb2YgYmluMmJjZCBhbmQgYmNkMmJpbgoKICAgIFNpZ25lZC1vZmYtYnk6IEFsYmluIFRvbm5lcnJlIDxhbGJpbi50b25uZXJyZUBmcmVlLWVsZWN0cm9ucy5jb20+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGU4NGFiYTEzNWVkNzE0NTI5OTMwNGVmNTUwZTkyZjA4YjJjOTlkN2EKQXV0aG9yOiBBbGJpbiBUb25uZXJyZSA8YWxiaW4udG9ubmVycmVAZnJlZS1lbGVjdHJvbnMuY29tPgpEYXRlOglUaHUgQXVnIDEzIDE1OjMxOjExIDIwMDkgKzAyMDAKCiAgICBSZXBsYWNlIEJDRDJCSU4gYW5kIEJJTjJCQ0QgbWFjcm9zIHdpdGggaW5saW5lIGZ1bmN0aW9ucwoKICAgIEluIHRoZSBwcm9jZXNzLCBhbHNvIHJlbW92ZSBiYWNrd2FyZC1jb21wYXRpYmxpdHkgbWFjcm9zIEJJTl9UT19CQ0QgYW5kCiAgICBCQ0RfVE9fQklOIGFuZCB1cGRhdGUgdGhlIHNvbGUgYm9hcmQgdXNpbmcgdGhlbSB0byB1c2UgdGhlIG5ldyBiaW4yYmNkCiAgICBhbmQgYmNkMmJpbiBpbnN0ZWFkCgogICAgU2lnbmVkLW9mZi1ieTogQWxiaW4gVG9ubmVycmUgPGFsYmluLnRvbm5lcnJlQGZyZWUtZWxlY3Ryb25zLmNvbT4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBBY2tlZC1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgNWI1M2IyOWJjMmU4MmI4MGI2NjlmMWQyNDAyMDY4YzYwZDdmZWNkMApBdXRob3I6IEVyaWMgTWlsbGJyYW5kdCA8ZW1pbGxicmFuZHRAY29sZGhhdXMuY29tPgpEYXRlOglUaHUgQXVnIDEzIDEwOjE0OjIxIDIwMDkgLTA1MDAKCiAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIGdhbGF4eTUyMDAKCiAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIERFS0EgUmVzZWFyY2ggYW5kIERldmVsb3BtZW50IGdhbGF4eTUyMDAgYm9hcmQKCiAgICBUaGUgZ2FsYXh5NTIwMCBpcyBhbiBGcmVlc2NhbGUgbXBjNTIwMCBiYXNlZCBlbWJlZGRlZCBpbmR1c3RyaWFsCiAgICBjb250cm9sIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVyaWMgTWlsbGJyYW5kdCA8ZW1pbGxicmFuZHRAZGVrYXJlc2VhcmNoLmNvbT4KCmNvbW1pdCAwYTllNGU3NzIxMjNmZTNlMmJiNDk5ZDdkMjE2MGM0Y2ZkOGEzYThkCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglGcmkgSnVsIDI0IDE2OjM0OjMyIDIwMDkgLTA0MDAKCiAgICB1bmlmeSB7Q09ORklHXyx9RU5WX0lTX0VNQkVEREVECgogICAgU29tZSBib2FyZHMgaGF2ZSBmYWxsZW4gb3V0IG9mIHN5bmMgYnkgZGVmaW5pbmcgQ09ORklHX0VOVl9JU19FTUJFRERFRAogICAgbWFudWFsbHkuICBXaGlsZSBpdCBpcyB1c2VmdWwgdG8gaGF2ZSB0aGlzIGF2YWlsYWJsZSB0byB0aGUgYnVpbGQgc3lzdGVtLAogICAgbGV0J3MgZG8gaXQgYXV0b21hdGljYWxseSByYXRoZXIgdGhhbiBmb3JjaW5nIHBlb3BsZSB0byBvcHQgaW50byBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbGJpbiBUb25uZXJyZSA8YWxiaW4udG9ubmVycmVAZnJlZS1lbGVjdHJvbnMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAwMmM5YWExZDQxZjczZmRjZjgzODNhMzZjYzBjYmJmYWY5NTI4NTVkCkF1dGhvcjogUm9iaW4gR2V0eiA8cmdldHpAYmxhY2tmaW4udWNsaW51eC5vcmc+CkRhdGU6CU1vbiBKdWwgMjcgMDA6MDc6NTkgMjAwOSAtMDQwMAoKICAgIEFkZCBtZDVzdW0gYW5kIHNoYTEgY29tbWFuZHMuLi4KCiAgICBOb3cgdGhhdCB3ZSBoYXZlIHNoYTEgYW5kIG1kNSBpbiBsaWJfZ2VuZXJpYywgYWxsb3cgcGVvcGxlIHRvIHVzZQogICAgdGhlbSBvbiB0aGUgY29tbWFuZCBsaW5lLCBmb3IgY2hlY2tpbmcgZG93bmxvYWRlZCBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSb2JpbiBHZXR6IDxyZ2V0ekBhbmFsb2cuY29tPgoKY29tbWl0IDMwZmM1Y2QzMTE2Y2IxMTJkMGFhYjdlNmQ3YzhlZWYxYjY3ZWQwNzUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgQXVnIDI1IDEyOjIyOjM4IDIwMDkgKzAyMDAKCiAgICBpbmNsdWRlL3MzYzI0eDAuaDogZml4IFMzQzI0WDBfU1BJX0NIQU5ORUwgZGVjbGFyYXRpb24KCiAgICBUaGUgU1BJIGNvbnRyb2xsZXIgb24gdGhlIFMzQzI0WDAgaGFzIDggYml0IHJlZ2lzdGVycywgbm90IDMyIGJpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBlNjM3Mzg1ZTY5ZjYzYmM3M2I5ZGZkMmRkZDhkMGYzODM3OTBjYTI4CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgQXVnIDIwIDE5OjE3OjU5IDIwMDkgLTA0MDAKCiAgICBCbGFja2ZpbjogZml4IHR5cG9zIGluIGdwaW8gY29tbWVudHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYzJmYmNiNmFlODZjMTA2MjFhMzg2YzEzYmU1N2VhYTc2NjIyMWVkNQpBdXRob3I6IEhhcmFsZCBLcmFwZmVuYmF1ZXIgPEhhcmFsZC5LcmFwZmVuYmF1ZXJAYmx1ZXRlY2huaXguYXQ+CkRhdGU6CVR1ZSBBdWcgMTggMDQ6NDk6NTcgMjAwOSAtMDQwMAoKICAgIEJsYWNrZmluOiBjbS1iZjUyNy9jbS1iZjUzNzogaW5jcmVhc2UgZmxhc2ggc2VjdG9ycwoKICAgIE5ld2VyIHJldmlzaW9ucyBvZiB0aGVzZSBib2FyZHMgaGF2ZSBzbGlnaHRseSBsYXJnZXIgZmxhc2hlcywgc28gaW5jcmVhc2UKICAgIHRoZSBjb25maWd1cmVkIG51bWJlciBvZiBzZWN0b3JzIHNvIHRoYXQgVS1Cb290IHdvcmtzIG9uIGFsbCByZXZpc2lvbnMuCgogICAgU2lnbmVkLW9mZi1ieTogSGFyYWxkIEtyYXBmZW5iYXVlciA8SGFyYWxkLktyYXBmZW5iYXVlckBibHVldGVjaG5peC5hdD4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBhNzk0ZjU5YTc1YmY5ZmQ0YTQ0ZjFhZDIzNDljYWU5MDNjNDJiODljCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIEF1ZyAyMyAxNDoxNDo1MiAyMDA5ICswMjAwCgogICAgc2gvcnNrNzIwMzogYWRkIG1pc3NpbmcgaW5jbHVkZSBuZXQuaAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNmFjOWY0Nzk3N2E5ZmMxODc2OTc5ODcxZWViMTRmMjZiYTFiZGJlNgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU3VuIEF1ZyAyMyAwMjo0Nzo1OSAyMDA5IC0wNDAwCgogICAgc3RhcnQgYSBsaW5rZXIgc2NyaXB0IGhlbHBlciBmaWxlCgogICAgU3RhcnQgYSBjb21tb24gaGVhZGVyIGZpbGUgZm9yIGNvbW1vbiBsaW5rZXIgc2NyaXB0IGNvZGUgKHN1Y2ggYXMKICAgIHdvcmthcm91bmRzIGZvciBvbGRlciBsaW5rZXJzKSByYXRoZXIgdGhhbiBkb2luZyB0aGlzIGluIHRoZSBidWlsZCBzeXN0ZW0uCgogICAgQXMgZmFsbG91dCwgd2Ugbm8gbG9uZ2VyIGV4ZWN1dGUgdGhlIGxpbmtlciBldmVyeSB0aW1lIGNvbmZpZy5tayBpcwogICAgaW5jbHVkZWQgYnkgYSBidWlsZCBmaWxlICh3aGljaCBjYW4gZWFzaWx5IGJlIDcwKyB0aW1lcyksIGJ1dCByYXRoZXIgb25seQogICAgZXhlY3V0ZSBpdCBvbmNlLgoKICAgIFRoaXMgYWxzbyBmaXhlcyBhIGJ1ZyBpbiB0aGUgbWFqb3IgdmVyc2lvbiBjaGVja2luZyBieSBjcmVhdGluZyBhIG1hY3JvIHRvCiAgICBlYXNpbHkgY29tcGFyZSB2ZXJzaW9ucyBhbmQga2VlcCBwZW9wbGUgZnJvbSBtYWtpbmcgdGhlIHNhbWUgY29tbW9uCiAgICBtaXN0YWtlIChmb3JnZXR0aW5nIHRvIGNoZWNrIG1ham9yIGFuZCBtaW5vciB0b2dldGhlcikuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDJlZDA4NjlkMzA2MDJlYjY2MDU2OWVhYmFiYjhmZWRmZjM2YmQyM2EKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBBdWcgMjIgMTk6NTA6MjIgMjAwOSAtMDQwMAoKICAgIEJsYWNrZmluOiB1c2UgY29tbW9uIGNvZGUgdG8gcHJlcHJvY2VzcyBsaW5rZXIgc2NyaXB0CgogICAgTm93IHRoYXQgdGhlIGNvbW1vbiBjb2RlIHByZXByb2Nlc3NlcyB0aGUgbGlua2VyIHNjcmlwdCwgdGhlIEJsYWNrZmluIGNvZGUKICAgIG5vIGxvbmdlciBuZWVkcyB0byBkbyBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNGQzNzU4YzgzNWM3ZTk2ZGEyYTI5MWU3ZmI1YWNmYzE5YmMwNmU4ZQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IEF1ZyAyMiAxOTo0ODo1NiAyMDA5IC0wNDAwCgogICAgLmdpdGlnbm9yZTogaWdub3JlIGdlbmVyYXRlZCB1LWJvb3QubGRzCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDc5YjkxZGU5NTg1MTE4NDBkMmE3NDkxYmU5MmQ0MzViN2VmNDNmMTcKQXV0aG9yOiBBbGJpbiBUb25uZXJyZSA8YWxiaW4udG9ubmVycmVAZnJlZS1lbGVjdHJvbnMuY29tPgpEYXRlOglTYXQgQXVnIDIyIDE0OjIxOjUzIDIwMDkgKzAyMDAKCiAgICBpbmNsdWRlL21tYy5oOiBGaXggdHlwbyBpbiBJU19TRCgpIG1hY3JvCgogICAgU2lnbmVkLW9mZi1ieTogQWxiaW4gVG9ubmVycmUgPGFsYmluLnRvbm5lcnJlQGZyZWUtZWxlY3Ryb25zLmNvbT4KCmNvbW1pdCA5NjNmMmY2MTE3NDFmOGQ5YzM4YmQ3Y2FmMjBhZThjOTVjYWI3YjNmCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IEF1ZyAyMiAyMzoyNzoyNiAyMDA5ICswMjAwCgogICAgUHJlcGFyZSAyMDA5LjA4LXJjMwoKICAgIFVwZGF0ZSBDSEFOR0VMT0csIG1pbm9yIENvZGluZyBTdHlsZSBjbGVhbnVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNWIyZGE2YTMwOTI2NmYyMWNiYjY4ZjA2ZmNmZGY5YmExNDEwMjJlNwpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJRnJpIEF1ZyAyMSAwNjo1MjoyNSAyMDA5ICsxMDAwCgogICAgcWVtdS1taXBzOiBGaXggUWVtdSB3ZWJzaXRlCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtaWNoYWwuc2ltZWtAcGV0YWxvZ2l4LmNvbT4KICAgIEFja2VkLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHBvYm94LmNvbT4KCmNvbW1pdCA3OWY1MTZiY2NjM2NmZjVhNWNkNGIzZGZmYjdkMjU0ZTc0NmZkYmRlCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEF1ZyAyMSAxNjozNDozOCAyMDA5IC0wNTAwCgogICAgbXBjODN4eDogYWNjb21tb2RhdGUgbGFyZ2VyIGtlcm5lbCBzaXplcyBieSBkZWZhdWx0CgogICAgbGludXggbXBjODN4eF9kZWZjb25maWcga2VybmVscyBhcmUgZ2V0dGluZyBiaWdnZXIsIGFjY29tbW9kYXRlIGZvcgogICAgdGhlaXIgZ3Jvd3RoIGJ5IGFkanVzdGluZyBkZWZhdWx0IGxvYWQgYW5kIGZkdCBhZGRyZXNzZXMuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4ZWNlZWI3ZmQ2NTZkNmQwNzFjMGE4YjYxNWUxNzhhY2E1Nzc1ZmZmCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEF1ZyAyMSAxNjozMzoxNSAyMDA5IC0wNTAwCgogICAgbXBjODN4eDogbXBjODM3N2VyZGIgLSBjaGFuZ2UgRERSIHNldHRpbmdzIHRvIHRob3NlIGZyb20gbGF0ZXN0IGJzcAoKICAgIHdoZW4gdXNpbmcgTGludXMnIDgzeHhfZGVmY29uZmlnLCB0aGUgbXBjODM3N3JkYiB3b3VsZCBoYW5nIGF0IGJvb3QKICAgIGF0IGVpdGhlcjoKCiAgICBORVQ6IFJlZ2lzdGVyZWQgcHJvdG9jb2wgZmFtaWx5IDE2CgogICAgb3IgdGhlCgogICAgaW8gc2NoZWR1bGVyIGNmcSByZWdpc3RlcmVkCgogICAgbWVzc2FnZS4gIEZpeGluZyB1cCB0aGVzZSBERFIgc2V0dGluZ3MgYXBwZWFycyB0byBmaXggdGhlIHByb2JsZW0uCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyN2M1MjQ4ZGQ0YzliYTRhMzY4OTk2ODk1OTU5NTZjNWU1OWUzNDlhCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEF1ZyAyMSAxNjozMToyMCAyMDA5IC0wNTAwCgogICAgbXBjODN4eDogdHFtODM0OSAtIHJlbW92ZSBwY2kgJiBmbGFzaCB3aW5kb3cgY29uZmxpY3QKCiAgICBjb21taXQgOTk5M2UxOTZkYTcwN2EwYTFjZDQ1ODRmMWZjZWYxMjM4MmMxYzE0NCAibXBjODN4eDogY29udmVydCBhbGwKICAgIHJlbWFpbmluZyBib2FyZHMgb3ZlciB0byA4M1hYX0dFTkVSSUNfUENJIiByZW1hcHBlZCBwY2kgd2luZG93cyBvbgogICAgdHFtODM0eCB0byBtYWtlIGl0IG1vcmUgY29uc2lzdGVudCB3aXRoIHRoZSBvdGhlciA4M3h4IGJvYXJkcy4gIER1cmluZwogICAgdGhhdCB0aW1lIGhvd2V2ZXIsIHRoZSBhdXRob3IgZmFpbGVkIHRvIHJlYWxpemUgdGhhdCBGTEFTSF9CQVNFIHdhcwogICAgb2NjdXB5aW5nIHRoZSBzYW1lIHJhbmdlIGFzIHdoYXQgUENJMV9NRU1fQkFTRSB3YXMgYmVpbmcgYXNzaWduZWQuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KICAgIFRlc3RlZC1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA2ZDJjMjZhYzgzMWYwMzNiMDAyNWNmYjI1NjM2NWEwNDdmOGRkMTE1CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CUZyaSBBdWcgMjEgMTY6MzA6MzAgMjAwOSAtMDUwMAoKICAgIG1wYzgzeHg6IGFkZCBtaXNzaW5nIENTQ09ORklHX09EVF9XUl9DRkcgZm9yIDgzMnggQ1BVcwoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxOTNiNGNiM2Y2NDFlZDBmZDliYjc5YjhmYTQ2NzE4ODJjNTBmZmRiCkF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CkRhdGU6CUZyaSBBdWcgMjEgMTY6Mjc6MDUgMjAwOSAtMDUwMAoKICAgIG1wYzgzeHg6IG1wYzgzNDkgLSBkZWxldGUgdW51c2VkIFNZU19NSURfRkxBU0hfSlVNUAoKICAgIFRoaXMgd2FzIGludHJvZHVjZWQgd2l0aCB0aGUgTVBDODM0OUVNRFMgYm9hcmQsIGFuZCB0aGVuIGNvcGllZCB0bwogICAgYSBjb3VwbGUgb3RoZXIgYm9hcmRzIGJ5IG5hdHVyZSBvZiBiZWluZyB0aGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uLgoKICAgICAgdS1ib290JGdpdCBncmVwIENPTkZJR19TWVNfTUlEX0ZMQVNIX0pVTVAKICAgICAgaW5jbHVkZS9jb25maWdzL01QQzgzNDlFTURTLmg6I2RlZmluZSBDT05GSUdfU1lTX01JRF9GTEFTSF9KVU1QIDB4N0YwMDAwMDAKICAgICAgaW5jbHVkZS9jb25maWdzL3NiYzgzNDkuaDojZGVmaW5lIENPTkZJR19TWVNfTUlEX0ZMQVNIX0pVTVAgICAgIDB4N0YwMDAwMDAKICAgICAgaW5jbHVkZS9jb25maWdzL3ZtZTgzNDkuaDojZGVmaW5lIENPTkZJR19TWVNfTUlEX0ZMQVNIX0pVTVAgICAgIDB4N0YwMDAwMDAKICAgICAgdS1ib290JAoKICAgIEl0IGN1cnJlbnRseSBpc24ndCB1c2VkLCBzbyBkZWxldGUgaXQgYmVmb3JlIGl0IHNwcmVhZHMgZnVydGhlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYzBkNjYwZmJiZWRlMzIyNjQ4ZWM3OWQzZTM5Mzg5ZTQ4ZjVmYWIyNApBdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgpEYXRlOglGcmkgQXVnIDIxIDE2OjIxOjU4IDIwMDkgLTA1MDAKCiAgICBtcGM4M3h4OiBzYmM4MzQ5IC0gbWFrZSBlbmFibGluZyBQQ0kgbW9yZSB1c2VyIGZyaWVuZGx5CgogICAgUHJpb3IgdG8gdGhpcyBjb21taXQsIHRvIGVuYWJsZSBQQ0ksIHlvdSBoYWQgdG8gZ28gbWFudWFsbHkKICAgIGVkaXQgdGhlIGJvYXJkIGNvbmZpZyBoZWFkZXIsIHdoaWNoIGlzbid0IHJlYWxseSB1c2VyIGZyaWVuZGx5LgogICAgVGhpcyBhZGRzIHRoZSB0eXBpY2FsIFBDSSBtYWtlIHRhcmdldHMgdG8gdGhlIHRvcGxldmVsIE1ha2VmaWxlCiAgICBpbiBhY2NvcmRhbmNlIHdpdGggd2hhdCBpcyBiZWluZyBkb25lIHdpdGggb3RoZXIgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhM2M1MDU3YTZjMDViNGM3MjM1YTI3MDQ4NjIyMGU0NTExMzY2MTMzCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIEF1ZyA3IDIzOjM3OjU0IDIwMDkgKzAyMDAKCiAgICBlZXByb21fbTk1eHh4OiByZW1vdmUgdW51c2VkIHZhcmlhYmxlIGkKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDhjZjE5YjlmZWM5MmQ4YWEyMmIyZmU0YjRlNjk3Njc0M2IxZGFhNTEKQXV0aG9yOiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KRGF0ZToJRnJpIEp1bCAxNyAxNTowMjo0MiAyMDA5ICswNDAwCgogICAgamZmczI6IHNvbWUgZml4ZXMgdG8gc3VtbWFyeSBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBmaXhlcyBzb21lIGlzc3VlcyB3aXRoIEpGRlMyIHN1bW1hcnkgc3VwcG9ydCBpbiBVLUJvb3QuCiAgICAxLyBTdW1tYXJ5IHN1cHBvcnQgbWFkZSBjb21waWxhdGlvbiBjb25maWd1cmFibGUgKGFzIHN1bW1hcnkgc3VwcG9ydAogICAgY29uc2lkZXJlZCBleHBpcmVtZW50YWwgZXZlbiBpbiBMaW51eCkuCiAgICAyLyBTdW1tYXJ5IGNvZGUgY2FuIGRvIHVuYWxpZ25lZCAxNi1iaXQgYW5kIDMyLWJpdCBtZW1vcnkgYWNjZXNzZXMuCiAgICBXZSBuZWVkIHRvIGdldCBkYXRhIGJ5dGUgYnkgYnl0ZSB0byBleGNsdWRlIGRhdGEgYWJvcnRzLgogICAgMy8gTWFrZSBzdW1tYXJ5IHNjYW4gaW4gdHdvIHBhc3NlcyBzbyB3ZSBjYW4gc2FmZWx5IGZhbGwgYmFjayB0byBmdWxsCiAgICBzY2FuIGlmIHdlIGZvdW5kIHVuc3VwcG9ydGVkIGVudHJ5IGluIHRoZSBzdW1tYXJ5LgoKICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgoKY29tbWl0IDExOTA2OTM2ZTE2OGQxMmQ2ODRiYjNkMjkzMGE2MjY5M2JhM2Q4NGUKQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+CkRhdGU6CU1vbiBBdWcgMTAgMTg6NTU6NTQgMjAwOSArMDUzMAoKICAgIGFybTogcmQ2MjgxYTogRml4ZWQgTkFORCBzcGVjaWZpYyB3YXJuaW5nCgogICAgSXQgaXMgcmVjb21tZW5kZWQgdG8gZGVmaW5lIHRoZSBtYWNybyBDT05GSUdfU1lTXzY0QklUX1ZTUFJJTlRGCiAgICBmb3IgTkFORCBzcGVjaWZpYyB3YXJuaW5nIHJlbW92YWwsIHNhbWUgaXMgZG9uZSBpbiB0aGlzIHBhdGNoCgogICAgU2lnbmVkLW9mZi1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgoKY29tbWl0IGI1ZmZiMTkzMzMwMTEzZDJlMDA0ODlkOTZiZjhlYzFmNTQxZWQ0ZTEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgQXVnIDEzIDAwOjM3OjE2IDIwMDkgKzAyMDAKCiAgICBUUkFCOiBtYWtlIGluZGVwZW5kZW50IG9mIHNwZWNpZmljIGxpYmdjYyBoZWxwZXIgcm91dGluZXMKCiAgICBUaGUgVFJBQiBib2FyZCByZWZlcmVuY2VzIGxvY2FsIGxpYmdjYyBoZWxwZXIgcm91dGluZXMKICAgIChsaWJfYXJtL2RpdjAubyBhbmQgbGliX2FybS9fdW1vZHNpMy5vKSB3aGljaCBjYXVzZSBidWlsZCBwcm9ibGVtcwogICAgd2hlbiB3ZSB0cnkgdG8gdXNlIHRoZSBub3JtYWwsIGNvbXBpbGVyIHByb3ZpZGVkIGxpYmdjYyBpbnN0ZWFkLgogICAgUmVtb3ZpbmcgdGhlc2UgcmVmZXJlbmNlcyBhbGxvd3MgdG8gYnVpbGQgYm90aCB3aXRoIGFuZCB3aXRob3V0IHRoZQogICAgbG9jYWwgbGliZ2NjIGhlbHBlciByb3V0aW5lcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDFhYWRhOWNkNjQzNTY3ZDM1MTY2NzEzODg1MWU5MjMxY2NmYTI0NWEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gQXVnIDE3IDE0OjAwOjUzIDIwMDkgKzAyMDAKCiAgICBGaXggYWxsIGxpbmtlciBzY3JpcHRzIGZvciBvbGRlciBiaW51dGlscyB2ZXJzaW9ucyAocHJlLTIuMTYpCgogICAgQ29tbWl0IGY2MmZiOTk5NDFjNiBmaXhlZCBoYW5kbGluZyBvZiBhbGwgcm9kYXRhIHNlY3Rpb25zIGJ5IHVzaW5nIGEKICAgIHdpbGRjYXJkIGNvbWJpbmVkIHdpdGggY2FsbHMgdG8gbGQncyBidWlsdGluIGZ1bmN0aW9ucyBTT1JUX0JZX0FMSUdOTUVOVCgpCiAgICBhbmQgU09SVF9CWV9OQU1FKCkuICBVbmZvcnR1bmF0ZWx5IHRoZXNlIGZ1bmN0aW9ucyB3ZXJlIG9ubHkKICAgIGludHJvZHVjZWQgd2l0aCBiaXVudXRpbHMgdmVyc2lvbiAyLjE2LCBzbyB0aGUgbW9kaWZpY2F0aW9uIGJyb2tlCiAgICBidWlsZGluZyB3aXRoIGFsbCB0b29sIGNoYWlucyB1c2luZyBvbGRlciBiaW51dGlscy4KCiAgICBUaGlzIHBhdGNoIG1ha2VzIGl0IHdvcmsgYWdhaW4uICBUaGlzIGlzIGRvbmUgYnkgb21pdHRpbmcgdGhlIHVzZSBvZgogICAgdGhlc2UgZnVuY3Rpb25zIGZvciBzdWNoIG9sZCB0b29sIGNoYWlucy4gIFRoaXMgd2lsbCByZXN1bHQgaW4KICAgIHNsaWdodGx5IGxhcmdlciB0YXJnZXQgYmluYXJpZXMsIGFzIHRoZSByb2RhdGEgc2VjdGlvbnMgYXJlIG5vIGxvbmdlcgogICAgaW4gb3B0aW1hbCBvcmRlciBhbGlnbm1lbnQtd2lzZSB3aGljaCByZWF1bHMgaW4gdW51c2VkIGdhcHMsIGJ1dCB0aGUKICAgIGVmZmVjdCB3YXMgZm91bmQgdG8gYmUgaW5zaWduaWZpY2FudCAtIGVzcGVjaWFsbHkgY29tcGFyZWQgdG8gdGhlIGZhY3QKICAgIHRoYXQgeW91IGNhbm5vdCBidWlsZCBVLUJvb3QgYXQgYWxsIGluIHRoZSBjdXJyZW50IHN0YXRlLgoKICAgIEFzIGxkIHNlZW1zIHRvIGhhdmUgbm8gc3VwcG9ydCBmb3IgY29uZGl0aW9uYWxzIHdlIHJ1biB0aGUgbGlua2VyCiAgICBzY3JpcHQgdGhyb3VnaCB0aGUgQyBwcmVwcm9jZXNzb3Igd2hpY2ggY2FuIGJlIGVhc2lseSB1c2VkIHRvIHJlbW92ZQogICAgdGhlIHVud2FudGVkIGZ1bmN0aW9uIGNhbGxzLgoKICAgIE5vdGUgdGhhdCB0aGUgQyBwcmVwcm9jZXNzb3IgbXVzdCBiZSBydW4gd2l0aCB0aGUgIi1hbnNpIiAob3IgYQogICAgIi1zdGQ9Iikgb3B0aW9uIHRvIG1ha2Ugc3VyZSBhbGwgdGhlIHN5c3RlbS1zcGVjaWZpYyBwcmVkZWZpbmVkCiAgICBtYWNyb3Mgb3V0c2lkZSB0aGUgcmVzZXJ2ZWQgbmFtZXNwYWNlIGFyZSBzdXBwcmVzc2VkLiBPdGhlcmlzZSwgY3BwCiAgICBtaWdodCBmb3IgZXhhbXBsZSBzdWJzdGl0dXRlICJwb3dlcnBjIiB0byAiMSIsIHRodXMgY29ycnVwdGluZyBmb3IKICAgIGV4YW1wbGUgIk9VVFBVVF9BUkNIKHBvd2VycGMpIiBldGMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIENjOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZjc3MmFjZjhhNTg0MDY3MDMzZWZmMWUyMzFmY2QxZmIzYTAwZDNkOQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBBdWcgMTcgMTM6MTc6MjkgMjAwOSArMDIwMAoKICAgIEFSTTogY29tcGlsZXIgb3B0aW9ucyBjbGVhbnVwIC0gaW1wcm92ZSB0b29sIGNoYWluIHN1cHBvcnQKCiAgICBGb3Igc29tZSB0aW1lIHRoZXJlIGhhdmUgYmVlbiByZXBlYXRlZCByZXBvcnRzIGFib3V0IGJ1aWxkIHByb2JsZW1zCiAgICB3aXRoIHNvbWUgQVJNIChjcm9zcykgdG9vbCBjaGFpbnMuCUVzcGVjaWFsbHkgaXNzdWVzIGFib3V0CiAgICAoaW4pY29tcGF0aWJpbGl0eSB3aXRoIHRoZSB0b29sIGNoYWluIHByb3ZpZGVkIHJ1bnRpbWUgc3VwcG9ydAogICAgbGlicmFyeSBsaWJnY2MuYSBjYXVzZWQgdG8gYWRkIGFuZCBzdXBwb3J0IGEgcHJpdmF0ZSBpbXBsZW1lbnRhdGlvbgogICAgb2Ygc3VjaCBydW50aW1lIHN1cHBvcnQgY29kZSBpbiBVLUJvb3QuICBBIGNsb3NlciBsb29rIGF0IHRoZSBjb2RlCiAgICBpbmRpY2F0ZWQgdGhhdCBzb21lIG9mIHRoZXNlIGlzc3VlcyBhcmUgYWN0dWFsbHkgaG9tZS1tYWRlLiAgVGhpcwogICAgcGF0Y2ggYXR0ZW1wdHMgdG8gY2xlYW4gdXAgc29tZSBvZiB0aGUgbW9zdCBvYnZpb3VzIHByb2JsZW1zIGFuZCBtYWtlCiAgICBidWlsZGluZyBvZiBVLUJvb3Qgd2l0aCBkaWZmZXJlbnQgdG9vbCBjaGFpbnMgZWFzaWVyOgoKICAgIC0gRXZlbiB0aG91Z2ggYWxsIEFSTSBzeXN0ZW1zIGJhc2ljeSB1c2VkIHRoZSBzYW1lIGNvbXBpbGVyIG9wdGlvbnMKICAgICAgdG8gc2VsZWN0IGEgc3BlY2lmaWMgQUJJIGZyb20gdGhlIHRvb2wgY2hhaW4sIHRoZSBjb2RlIGZvciB0aGlzIHdhcwogICAgICBkaXN0cmlidXRlZCBvdmVyIGFsbCBjcHUvKi9jb25maWcubWsgZmlsZXMuICBXZSBtb3ZlIHRoaXMgb25lIGxldmVsCiAgICAgIHVwIGludG8gbGliX2FybS9jb25maWcubWsgaW5zdGVhZC4KCiAgICAtIFNvIGZhciwgd2Ugb25seSBjaGVja2VkIGlmICItbWFwY3MtMzIiIHdhcyBzdXBwb3J0ZWQgYnkgdGhlIHRvb2wKICAgICAgY2hhaW47IGlmIHllcywgdGhpcyB3YXMgdXNlZCwgaWYgbm90LCAiLW1hYmk9YXBjcy1nbnUiIHdhcwogICAgICBzZWxlY3RlZCwgbm8gbWF0dGVyIGlmIHRoZSB0b29sIGNoYWluIGFjdHVhbGx5IHVuZGVyc3Rvb2QgdGhpcwogICAgICBvcHRpb24uICBUaGVyZSB3YXMgbm8gc3VwcG9ydCBmb3IgRUFCSSBjb25mb3JtYW50IHRvb2wgY2hhaW5zLgogICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBsb2dpYzoKCiAgICAgIDEpIElmIHRoZSB0b29sIGNoYWluIHN1cHBvcnRzCgkiLW1hYmk9YWFwY3MtbGludXggLW1uby10aHVtYi1pbnRlcndvcmsiCgkgd2UgdXNlIHRoZXNlIG9wdGlvbnMgKEVBQkkgY29uZm9ybWFudCB0b29sIGNoYWluKS4KICAgICAgMikgT3RoZXJ3aXNlLCB3ZSBjaGVjayBmaXJzdCBpZgoJIi1tYXBjcy0zMiIKCSBpcyBzdXBwb3J0ZWQsIGFuZCB0aGVuIGNoZWNrIGZvcgoJIi1tYWJpPWFwY3MtZ251IgoJIElmIG9uZSB0ZXN0IHN1Y2NlZWRzLCB3ZSB1c2UgdGhlIGZpcnN0IGZvdW5kIG9wdGlvbi4KICAgICAgMykgSW4gY2FzZSAyKSwgd2UgYWxzbyB0ZXN0IGlmICItbW5vLXRodW1iLWludGVyd29yayIsIGFuZCB1c2UKCSB0aGlzIGlmIHRoZSB0ZXN0IHN1Y2NlZWRzLiBbRm9yICItbWFiaT1hYXBjcy1saW51eCIgd2Ugc2V0CgkgIi1tbm8tdGh1bWItaW50ZXJ3b3JrIiBtYW5kYXRvcmlseS5dCgogICAgICBUaGlzIHdheSB3ZSB1c2UgYSBzaW1pbGFyIGxvZ2ljIGZvciB0aGUgY29tcGlsZSBvcHRpb25zIGFzIHRoZQogICAgICBMaW51eCBrZXJuZWwgZG9lcy4KCiAgICAtIFNvbWUgRUFCSSBjb25mb3JtYW50IHRvb2wgY2hhaW5zIGNhdXNlIGV4dGVybmFsIHJlZmVyZW5jZXMgdG8KICAgICAgdXRpbGl0eSBmdW5jdGlvbnMgbGlrZSByYWlzZSgpOyBzdWNoIGZ1bmN0aW9ucyBhcmUgcHJvdmlkZWQgaW4gdGhlCiAgICAgIG5ldyBmaWxlIGxpYl9hcm0vZWFiaV9jb21wYXQuYwoKICAgICAgTm90ZSB0aGF0IGxpYl9hcm0vY29uZmlnLm1rIGdldHMgcGFyc2VkIHNldmVyYWwgdGltZXMsIHNvIHdlIG11c3QKICAgICAgbWFrZSBzdXJlIHRvIGFkZCBlYWJpX2NvbXBhdC5vIG9ubHkgb25jZSB0byB0aGUgbGlua2VyIGxpc3QuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIENjOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgQ2M6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CiAgICBDYzogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgogICAgQ2M6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KICAgIENjOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+CiAgICBBY2tlZC1ieTogU2VyZ2V5IEt1YnVzaHluIDxrc2lAa29pOC5uZXQ+CiAgICBUZXN0ZWQtYnk6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KICAgIFRlc3RlZC1ieTogQW5kcnplaiBXb2xza2kgPGF3b2xza2lAcG9jenRhLmZtPgogICAgVGVzdGVkLWJ5OiBHYXllIEFiZG91bGF5ZSBXYWxzaW1vdSA8d2Fsc2ltb3VAd2Fsc2ltb3UuY29tPgogICAgVGVzdGVkLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CiAgICBUZXN0ZWQtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMjY5NjEwZjZiYTJlNGE3YmMyN2QyZTUzZDQzMTYwNjE0MDE2OTY0ZgpBdXRob3I6IE1pbmdrYWkgSHUgPE1pbmdrYWkuaHVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1bCAzMCAxNzo1Njo1MSAyMDA5ICswODAwCgogICAgTkFORCBib290OiBmaXggbmFuZF9sb2FkIG92ZXJsYXAgaXNzdWUKCiAgICBUaGUgY29kZSBjb3B5IGRhdGEgZnJvbSBOQU5EIGZsYXNoIGJsb2NrIGJ5IGJsb2NrLCBzbyB3aGVuCiAgICB0aGUgZGF0YSBsZW5ndGggaXNuJ3QgYSB3aG9sZS1udW1iZXIgbXVsdGlwbGUgb2YgdGhlIGJsb2NrCiAgICBzaXplLCBpdCB3aWxsIG92ZXJsYXAgdGhlIHJlc3Qgc3BhY2UuCgogICAgU2lnbmVkLW9mZi1ieTogTWluZ2thaSBIdSA8TWluZ2thaS5odUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMWZjMWQ5YWVkMDhmMmIzMzY2ZDYzNGZkYTY3MTJhNzEwYjJjZmY5YQpBdXRob3I6IEdpdWxpbyBCZW5ldHRpIDxnaXVsaW8uYmVuZXR0aUBtaWNyb25vdmFzcmwuY29tPgpEYXRlOglGcmkgSnVsIDMxIDE3OjMwOjM0IDIwMDkgLTA1MDAKCiAgICBhZGQgV0FUQ0hET0dfUkVTRVQoKSBvbiBuYW5kIHdyaXRlIGFuZCByZWFkCgogICAgU2lnbmVkLW9mZi1ieTogZ2l1bGlvLmJlbmV0dGlAbWljcm9ub3Zhc3JsLmNvbQogICAgQWNrZWQtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiMWU4NDlmMjIwMWJiYmYzY2E4MWZkZTE2NGYxNTRmOWNhZjdmMGU5CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJV2VkIEZlYiA0IDE1OjE0OjA1IDIwMDkgLTA2MDAKCiAgICB0c2VjOiBXYWl0IGZvciBhdXRvLW5lZ290aWF0aW9uIHRvIGNvbXBsZXRlIHdpdGhvdXQgbGluawoKICAgIFByZXZpb3VzbHksIHdhaXRpbmcgZm9yIGF1dG8tbmVnb3RpYXRpb24gd291bGQgb25seSBvY2N1ciBpZiBhIHZhbGlkCiAgICBsaW5rIGhhZCBiZWVuIGRldGVjdGVkLiAgUHJvYmxlbXMgYXJvc2Ugd2hlbiBhdHRlbXB0aW5nIHRvIHVzZSBhCiAgICB0c2VjIGltbWVkaWF0ZWx5IGFmdGVyIGJvb3R1cCBidXQgYmVmb3JlIGxpbmsgd2FzIGFjaGlldmVkLCBlZzoKICAgID0+IGRoY3AKICAgIEF1dG8tbmVnIGVycm9yLCBkZWZhdWx0aW5nIHRvIDEwQlQvSEQKICAgIGVUU0VDMTogTm8gbGluay4KICAgIEF1dG8tbmVnIGVycm9yLCBkZWZhdWx0aW5nIHRvIDEwQlQvSEQKICAgIGVUU0VDMjogTm8gbGluay4KICAgID0+CgogICAgV2l0aCB0aGlzIHBhdGNoIGFwcGxpZWQgdGhlIHNhbWUgb3BlcmF0aW9uIGFzIGFib3ZlIHJlc3VsdGVkIGluOgogICAgPT4gZGhjcAogICAgV2FpdGluZyBmb3IgUEhZIGF1dG8gbmVnb3RpYXRpb24gdG8gY29tcGxldGUuIGRvbmUKICAgIEVuZXQgc3RhcnRpbmcgaW4gMTAwMEJUL0ZECiAgICBTcGVlZDogMTAwMCwgZnVsbCBkdXBsZXgKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA0NzdmYTYzNzhmYmQzZTQ3YTVlMmU4M2QwZGQzOTcwZDViMWM4MzcxCkF1dGhvcjogU2ltb24gS2Fnc3Ryb20gPHNpbW9uLmthZ3N0cm9tQG5ldGluc2lnaHQubmV0PgpEYXRlOglUaHUgQXVnIDIwIDEwOjE0OjExIDIwMDkgKzAyMDAKCiAgICBhcm06IGtpcmt3b29kOiBTZWUgdG8gaXQgdGhhdCBzZW50IGRhdGEgaXMgOC1ieXRlIGFsaWduZWQKCiAgICBVLWJvb3QgbWlnaHQgdXNlIG5vbi04LWJ5dGUtYWxpZ25lZCBhZGRyZXNzZXMgZm9yIHNlbmRpbmcgZGF0YSwgd2hpY2gKICAgIHRoZSBrd2diZV9zZW5kIGRvZXNuJ3QgYWNjZXB0IChib290cCBkb2VzIHRoaXMgZm9yIG1lKS4gVGhpcyBwYXRjaAogICAgY29waWVzIHRoZSBkYXRhIHRvIGJlIHNlbnQgdG8gYSBtYWxsb2NlZCB0ZW1wb3JhcnkgYnVmZmVyIGlmIGl0IGlzCiAgICBub24tYWxpZ25lZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGNhZDcxM2JmNzU0OGI5ZTkwNDMzZGFjODI3MDE2NTQwMmE2YzljYzMKQXV0aG9yOiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+CkRhdGU6CVRodSBBdWcgMjAgMTA6MTM6MDYgMjAwOSArMDIwMAoKICAgIFdhaXQgZm9yIHRoZSBsaW5rIHRvIGNvbWUgdXAgb24ga2lya3dvb2QgbmV0d29yayBpbml0CgogICAgVGhpcyBwYXRjaCBtYWtlcyB0aGUgZGV2aWNlIHdhaXQgZm9yIHVwIHRvIDUgc2Vjb25kcyBmb3IgdGhlIGxpbmsgdG8KICAgIGNvbWUgdXAsIHNpbWlsYXIgdG8gd2hhdCBtYW55IG9mIHRoZSBvdGhlciBuZXR3b3JrIGRyaXZlcnMgZG8uIFRoaXMKICAgIGF2b2lkcyBjb25mdXNpbmcgc2l0dWF0aW9ucyB3aGVyZSwgZS5nLiwgYSB0ZnRwIGZhaWxzIHdoZW4gaW5pdGlhdGVkCiAgICBlYXJseSBhZnRlciBVLWJvb3QgaGFzIHN0YXJ0ZWQgKGJlZm9yZSB0aGUgbGluayBoYXMgY29tZSB1cCkuCgogICAgU2lnbmVkLW9mZi1ieTogU2ltb24gS2Fnc3Ryb20gPHNpbW9uLmthZ3N0cm9tQG5ldGluc2lnaHQubmV0PgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBiYjFjYTNiMjdmN2ZiYThjNzNjYjEwMjc5YTZhOGI4YjY5YTMwOGZmCkF1dGhvcjogU2ltb24gS2Fnc3Ryb20gPHNpbW9uLmthZ3N0cm9tQG5ldGluc2lnaHQubmV0PgpEYXRlOglUaHUgQXVnIDIwIDEwOjEyOjI4IDIwMDkgKzAyMDAKCiAgICBhcm06a2lya3dvb2QgRGVmaW5lIGtpcmt3b29kIHBoeSBhZGRyZXNzIG1hZ2ljIG51bWJlcgoKICAgIFNpZ25lZC1vZmYtYnk6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZjgxZWNiNWQzMzAwYmY5MmQxNzMwMmQzNzEyZjMwNTg1YzE4MmRhOQpBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBBdWcgMTcgMTU6NTU6MzggMjAwOSAtMDUwMAoKICAgIGUxMDAwOiBmaXggUENJIG1lbW9yeSBhZGRyZXNzaW5nCgogICAgVGhlIEludGVsIEUxMDAwIGRyaXZlciB3YXMgbWFraW5nIGFzc3VtcHRpb25zIGFib3V0IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbgogICAgc29tZSB2aXJ0dWFsLCBwaHlzaWNhbCwgYW5kIFBDSSBhZGRyZXNzZXMuCgogICAgQWxzbyBmaXggc29tZSBiYWQgdXNhZ2Ugb2YgdGhlIERFQlVHT1VUIG1hY3JvCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBiNjQ0MDA2ZTFhN2JhYTIyN2FlZGM2MDZlY2RmMGJiNWVlYjI0Y2FiCkF1dGhvcjogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CkRhdGU6CVdlZCBBdWcgMTIgMTY6NDI6NDggMjAwOSArMDQwMAoKICAgIGpmZnMyOiBjbGVhbiB0aGUgY2FjaGUgaW4gY2FzZSBvZiBtYWxsb2MgZmFpbHMgaW4gYnVpbGRfbGlzdHMKCiAgICBXZSBzaG91bGQgY2FsbCBqZmZzMl9jbGVhbl9jYWNoZSgpIGlmIHdlIHJldHVybiBmcm9tIGpmZnMyX2J1aWxkX2xpc3RzKCkKICAgIHdpdGggYW4gZXJyb3IgdG8gcHJldmVudCB1c2FnZSBvZiBpbmNvbXBsZXRlIGxpc3RzLiBBbHNvIHdlIHNob3VsZAogICAgZnJlZSgpIGEgbG9jYWwgYnVmZmVyIHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzLgoKICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgoKY29tbWl0IDdmZjY2YmIwYmU4MGNhZGQ2ODFiZTIyYTcyZTVlYjAyZWUxNGM4NzgKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJV2VkIEF1ZyAxMiAxMDoxNzowMyAyMDA5ICswMjAwCgogICAgcHBjOiB0cmlnZ2VyIFdEVCBiZWZvcmUgc3RhcnRpbmcgTGludXgKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCA5MTgzMTljNzA1ZDhhM2Q2MjUxOTE5YTY2MGJhZWYzMmZmM2E4MjlhCkF1dGhvcjogQWxiaW4gVG9ubmVycmUgPGFsYmluLnRvbm5lcnJlQGZyZWUtZWxlY3Ryb25zLmNvbT4KRGF0ZToJV2VkIEp1bCAyMiAxODozMDowMyAyMDA5ICswMjAwCgogICAgVXBkYXRlIHRoZSBtdGQgZHJpdmVyIG5hbWUgaW4gYm9vdGFyZ3MgZm9yIGF0OTEtYmFzZWQgYm9hcmRzCgogICAgVGhlIG5hbWUgb2YgdGhlIGF0bWVsIG5hbmQgZHJpdmVyIGluIHRoZSBrZXJuZWwgY2hhbmdlZCBmcm9tIGF0OTFfbmFuZAogICAgdG8gYXRtZWxfbmFuZCBiYWNrIGluIEp1bmUgMjAwOCwgYnV0IHRoZSBhdDkxLWJhc2VkIGJvYXJkcyBjb25maWcgZmlsZXMKICAgIHN0aWxsIHJlZmVyIHRvIGF0OTFfbmFuZC4gVGhpcyBwYXRjaCB1cGRhdGVzIHRoZW0gd2l0aCB0aGUgbmV3IG5hbWUKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbGJpbiBUb25uZXJyZSA8YWxiaW4udG9ubmVycmVAZnJlZS1lbGVjdHJvbnMuY29tPgoKY29tbWl0IDhmYTY1NmFhNTI4OTgxNWQ5NDJlYmRjMjYxODJjY2I5ZjJiOWM4NmYKQXV0aG9yOiBCZW4gR29za2EgPGdvc2thYkBvbmlkLm9yZWdvbnN0YXRlLmVkdT4KRGF0ZToJRnJpIEF1ZyAxNCAxMDowMzozNiAyMDA5IC0wNzAwCgogICAgb21hcDM6IEZpeGVkIGEgcHJvYmxlbSB3aXRoIGh3ZWNjCgogICAgSW4gY29tbWl0IDE4N2FmOTU0Y2Y3OTU4YzI0ZWZjZjBmZDYyMjg5YmJkYjRmMWYyNGUgdGhlcmUKICAgIHdhcyBhIHR5cG8gdGhhdCBvZmZzZXQgYWxsIHRoZSBlY2MgcmVnaXN0ZXJzIGJ5IDQgYnl0ZXMsIGZpeGVkIHRoYXQuCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIEdvc2thIDxnb3NrYWJAb25pZC5vcmVnb25zdGF0ZS5lZHU+CiAgICBBY2tlZC1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KCmNvbW1pdCA1MTRiYWI2NjA5YWNkMWEyYTE5ZmRkNzVjMmY2MjU1MTc4ZGI3Yzk2CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gQXVnIDE3IDE2OjU3OjUzIDIwMDkgKzAyMDAKCiAgICBwcGM0eHg6IEZpeCAiY2hpcF9jb25maWciIGNvbW1hbmQgZm9yIEFNQ0MgQXJjaGVzCgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgImNoaXBfY29uZmlnIiBjb21tYW5kIGZvciBJMkMgYm9vdHN0cmFwIEVFUFJPTQogICAgY29uZmlndXJhdGlvbi4gRmlyc3QgaXQgY2hhbmdlcyB0aGUgSTJDIGJvb3RzdHJhcCBFRVBST00gYWRkcmVzcyB0bwogICAgMHg1NCBhcyB0aGlzIGlzIHVzZWQgb24gQXJjaGVzIChpbnN0ZWFkIG9mIDB4NTIgb24gQ2FueW9ubGFuZHMvCiAgICBHbGFjaWVyKS4gQWRkaXRpb25hbGx5LCB0aGUgTkFORCBib290c3RyYXAgc2V0dGluZ3MgYXJlIHJlbW92ZWQKICAgIGZvciBBcmNoZXMgc2luY2UgQXJjaGVzIGRvZXNuJ3Qgc3VwcG9ydCBOQU5ELWJvb3RpbmcuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDRhZjM0MTc3YjY1N2U5MTI2MzkxOWEzMDdmZDBiMDg2NWEyOTllNTIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gQXVnIDE2IDIzOjQwOjEzIDIwMDkgKzAyMDAKCiAgICBNb25haGFuczogYXZvaWQgZmxvYXRpbmcgcG9pbnQgY2FsY3VsYXRpb25zCgogICAgQ3VycmVudCBjb2RlIGZvciB0aGUgTW9uYWhhbnMgQ1BVIGRlZmluZWQgT1NDUl9DTEtfRlJFUSBhcyAzLjI1MCAoTUh6KQogICAgd2hpY2ggY2F1c2VkIGZsb2F0aW5nIHBvaW50IG9wZXJhdGlvbnMgdG8gYmUgdXNlZC4gVGhpcyByZXN1bHRlZCBpbgogICAgdW5yZXNvbHZlZCByZWZlcmVuY2VzIHRvIHNvbWUgRlAgcmVsYXRlZCBsaWJnY2MgZnVuY3Rpb25zIHdoZW4gdXNpbmcKICAgIFUtQm9vdCdzIHByaXZhdGUgbGliZ2NjIGZ1bmN0aW9ucy4KCiAgICBDaGFuZ2UgdGhlIGNvZGUgdG8gdXNlIGZpeGVkIHBvaW50IG1hdGggb25seS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGUzOTNlMmU5YmM1Y2QzZDU0ODRlMTkzZDEzODBlN2NkNzU4N2FiNWMKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglGcmkgQXVnIDE0IDE2OjQzOjIyIDIwMDkgLTA1MDAKCiAgICA4NXh4OiBGaXggYWRkcm1hcCB0byBpbmNsdWRlIG1lbW9yeQoKICAgIFdoZW4gd2UgaW5pdCB0aGUgYWRkcm1hcCBiYXNlZCBvbiB0aGUgVExCIHdlIHdpbGwgbm90IGVuZCB1cCBnZXR0aW5nCiAgICB0aGUgVExCIHRoYXQgY292ZXJzIG1lbW9yeSBpZiB3ZSBhcmUgdXNpbmcgU1BELiAgVGhlIHJlYXNvbiBpcyB3ZQogICAgaGF2ZW4ndCByZWxvY2F0ZWQgYXQgdGhlIHBvaW50IHRoYXQgd2Ugc2V0dXAgdGhlIG1lbW9yeSBUTEIgYW5kIHRodXMgaXQKICAgIHdpbGwgbm90IGdldCBzZXR1cCBpbiB0aGUgYWRkcm1hcC4KCiAgICBJbnN0ZWFkIHdlIGNhbiBqdXN0IHdhbGsgb3ZlciB0aGUgVExCIGFycmF5IGFmdGVyIHdlJ3ZlIHJlbG9jYXRlZCBhbmQKICAgIHNlZSBhbGwgdGhlIFRMQnMgdGhhdCBoYXZlIGJlZW4gc2V0IGFuZCB1c2UgdGhhdCBpbmZvcm1hdGlvbiB0byBwb3B1bGF0ZQogICAgdGhlIGluaXRpYWwgYWRkcm1hcC4gIEJ5IGRvaW5nIHRoaXMgd2UgaW5zdXJlIHRoYXQgd2UgZ2V0IHRoZSBUTEIKICAgIGVudHJpZXMgdGhhdCBjb3ZlciBtZW1vcnkuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA3ZGVkZWZkZjc0OWZmMDJjMTA4NmY3ZGRiOGNiODNhNzdiMDBkMDMwCkF1dGhvcjogSm9obiBTY2htb2xsZXIgPGpzY2htb2xsZXJAeGVzLWluYy5jb20+CkRhdGU6CVdlZCBBdWcgMTIgMTA6NTU6NDcgMjAwOSAtMDUwMAoKICAgIGZsYXNoOiBGaXggQ0ZJIGJ1ZmZlciBzaXplIGJ1ZwoKICAgIEZpeCBidWcgaW50cm9kdWNlZCBieSA5YzA0OGI1MjM0MTNhZTVmM2ZmMzRlMDBjZjU3NTY5YzMzNjhhYjUxLgoKICAgIFRoZSBjZmlfZmxhc2guYyBkcml2ZXIgY2FzdCB0aGUgZmxhc2ggYnVmZmVyIHNpemUgdG8gYSB1Y2hhciBpbgogICAgZmxhc2hfd3JpdGVfY2ZpYnVmZmVyKCkuIE9uIHNvbWUgZmxhc2ggcGFydHMsICh0ZXN0ZWQgb24gTnVtb255eAogICAgcGFydCBQQzMyRjUxMk0yOUVXSCksIHRoZSBidWZmZXIgc2l6ZSBpcyAxS0IuIFJlbW92ZSB0aGUgY2FzdCB0bwogICAgdWNoYXIgdG8gZW5hYmxlIGJ1ZmZlciBzaXplcyB0byBiZSBsYXJnZXIuCgogICAgU2lnbmVkLW9mZi1ieTogSm9obiBTY2htb2xsZXIgPGpzY2htb2xsZXJAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZjZlM2ExZmE5MmY2MTA4Mzg4NTE3ODEwMWU5NzNjODZiNDE5YTZmNwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEF1ZyAxMyAwMDozMjoxNCAyMDA5IC0wNDAwCgogICAgdHJhYjogcmVuYW1lIHNwaV9pbml0KCkKCiAgICBUaGUgbG9jYWwgYm9hcmQtc3BlY2lmaWMgc3BpX2luaXQoKSBmdW5jdGlvbiBjb25mbGljdHMgd2l0aCB0aGUgY29tbW9uIFNQSQogICAgbGF5ZXIsIHNvIHJlbmFtZSBpdCB0byBzb21ldGhpbmcgYm9hcmQtc3BlY2lmaWMuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDI1M2NiODMxZjU4NjEzNThhN2ZhNjczMzA1Y2RmN2RlZDEwOTZmNDQKQXV0aG9yOiBHaXVzZXBwZSBDT05ET1JFTExJIDxnaXVzZXBwZS5jb25kb3JlbGxpQHN0LmNvbT4KRGF0ZToJV2VkIEp1bCAyOSAwNjowNToyMCAyMDA5IC0wNDAwCgogICAgemxpYjogYWRkIHdhdGNoZG9nIHJlc2V0IGNhbGwKCiAgICBUaGlzIHBhdGNoIGFkZHMgd2F0Y2hkb2cgcmVzZXQgY2FsbCB0byBhbGxvdyBpdHMgaW52b2thdGlvbiBkdXJpbmcgZGVjb21wcmVzc2lvbgogICAgcGhhc2UuIFRoaXMgY29udHJvbCB3YXMgcHJlc2VudCBvbiBvbGQgemxpYiB2ZXJzaW9uIGFuZCBoZXJlIGl0IGlzCiAgICBiYWNrcG9ydGVkIGZvciB0aG9zZSByZWxldmFudCByb3V0aW5lcy4gVGhpcyBwYXRjaCBpcyBzZW50IGFzIGEgemxpYiBzZXBhcmF0ZQogICAgb25lIGJlYWN1c2UgaXQgd2FzIG5vdCB0ZXN0ZWQgZHVlIHRvIHNwZWNpZmljIGJvYXJkIGxhY2suCiAgICB6bGliIHBhdGNoZXMgd2lsbCBiZSB1bmlmaWVkIGp1c3QgaW4gb25lIHdoZW4gdGhpcyB3aWxsIGJlIHZhbGlkYXRlZCB0aHJvdWdoCiAgICB0ZXN0cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHaXVzZXBwZSBDb25kb3JlbGxpIDxnaXVzZXBwZS5jb25kb3JlbGxpQHN0LmNvbT4KCmNvbW1pdCBkY2UzZDc5NzEwMmI2NjE4ZThiZGQ0YTA5Y2ZkMzU5NjlmMTY1ZDg2CkF1dGhvcjogR2l1c2VwcGUgQ09ORE9SRUxMSSA8Z2l1c2VwcGUuY29uZG9yZWxsaUBzdC5jb20+CkRhdGU6CVdlZCBKdWwgMjkgMDg6MDU6MDggMjAwOSAtMDQwMAoKICAgIHpsaWI6IHVwZGF0ZWQgdG8gdi4xLjIuMwoKICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyB6bGliIHRvIHRoZSBsYXRlc3Qgc3RhYmxlIHZlcnNpb24uCiAgICBPbmx5IHJlbGV2YW50IHpsaWIgcGFydHMgd2VyZSBwb3J0ZWQgdG8gdS1ib290IHRyZWUsIGFzIGFscmVhZHkgZGlkIGZvciB0aGUKICAgIGN1cnJlbnQgemxpYiAoMC45NSkuIE5ldyB6bGliIGd1YXJhbnRlZXMgYSBmYXN0ZXIgaW5mbGF0ZSBwZXJmb3JtYW5jZXMKICAgIG90aGVyIHRoZW4gb3RoZXJzIGltcHJvdmVtZW50cyBhcyBleHBsYWluZWQgYXQgd3d3LnpsaWIubmV0LgogICAgSXQgYWxzbyBpbmNsdWRlcyBBbGVzc2FuZHJvIFJ1YmluaSdzIHBhdGNoZXMgdG8gYWxsb3cgMCBhcyBkZXN0aW5hdGlvbiBwb2ludGVyCiAgICBhbmQgdG8gY2FsbCB3YXRjaGRvZyByZXNldCBpZiByZXF1aXJlZCBieSBhcmNoaXRlY3R1cmUuCgogICAgU2lnbmVkLW9mZi1ieTogR2l1c2VwcGUgQ29uZG9yZWxsaSA8Z2l1c2VwcGUuY29uZG9yZWxsaUBzdC5jb20+CiAgICBSZXZpZXdlZC1ieTogQW5nZWxvIENhc3RlbGxvIDxhbmdlbG8uY2FzdGVsbG9Ac3QuY29tPgogICAgUmV2aWV3ZWQtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmktbGlzdEBnbnVkZC5jb20+Cgpjb21taXQgMzQyNmQ2NWRhYWI2YWY0ODNiMTc3ZWQ1MDIwMzhmNTJlZDJlNWFlZgpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglUdWUgQXVnIDExIDEwOjM3OjU4IDIwMDkgKzAyMDAKCiAgICBkdHQsIGxtODE6IG1vdmUgdW5uZWNjZXNzYXJ5IHByaW50ZiBpbnRvIGEgZGVidWcgcHJpbnRmCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgNTRlMzk5ZjExMGJiYWEyNGU2NjJlNmRkOWU4OGRkYjg2OTg5ZDY2OApBdXRob3I6IE1hcmsgSmFja3NvbiA8bXBmai1saXN0QG1pbWMuY28udWs+CkRhdGU6CVR1ZSBBdWcgMTEgMTE6MzM6NDcgMjAwOSArMDEwMAoKICAgIE1JTUMyMDA6IHJlZHVjZSBMQ0QgcGl4Y2xvY2sKCiAgICBUaGUgaW5pdGlhbCBwaXhjbG9jayBmb3IgdGhlIE1JTUMyMDAgYm9hcmQgaXMgd3JvbmcgKGFuZCBjYXVzZXMKICAgIHNjcmVlbiBjb3JydXB0aW9uIGR1ZSB0byBETUEgdW5kZXJydW5zKS4KCiAgICBUaGlzIHBhdGNoIHNpbXBseSByZWR1Y2VzIHRoZSBwaXhlbCBjbG9jayB0byBmaXggdGhlIHByb2JsZW0uCgogICAgU2lnbmVkLW9mZi1ieTogTWFyayBKYWNrc29uIDxtcGZqQG1pbWMuY28udWs+Cgpjb21taXQgMTQ0M2NkN2U1NGQ2ODkzYWI3Y2M1MWQ5M2ZlNzc1OWNkYWE4YjMxZgpBdXRob3I6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+CkRhdGU6CVdlZCBKdWwgMSAxNDowNDowNSAyMDA5IC0wNDAwCgogICAgVUVDIEZJWEVEIFBIWTogRGV0ZXJtaW5lIGZpeGVkLXBoeSBwb3J0IHVzaW5nIFVFQyBpbnRlcmZhY2UgbmFtZS4KCiAgICBGaXhlZCBhIG1pc3VuZGVyc3RhbmRpbmcgaW4gdGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uLCAnZGV2bnVtJyB0aGF0CiAgICB3YXMgdXNlZCBpbiB0aGUgY3B1L3BwYzR4eC80eHhfZW5ldC5jIGltcGxlbWVudGF0aW9uIHdhcyBOT1QgdGhlCiAgICBQSFkncyBTTUkgYWRkcmVzcywgcmF0aGVyIGl0IHdhcyB0aGUgbnVtYmVyIG9mIHRoZSBNQUMgaW50ZXJmYWNlIG9uCiAgICB0aGUgQ1BVLiBUaGUgZXF1aXZhbGVudCBvZiB0aGlzIGZvciB1ZWNfcGh5IHdpbGwgYmUgdGhlIFVFQyBudW1iZXIKICAgIHN0b3JlZCBpbiBtaWlfaW5mby0+ZGV2LT5uYW1lLiBVc2FnZSBleGFtcGxlIGlzIHVwZGF0ZWQgZm9yIHVlYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAxYTk1MTkzNzNiOTc3ZWYzZjdjOTU2M2FkM2FjYjZjNmYyNDI0NjU3CkF1dGhvcjogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KRGF0ZToJV2VkIEp1bCAxIDE0OjAzOjE1IDIwMDkgLTA0MDAKCiAgICBBc3NpZ25lZCBhIHN0YXRpYyBTTUkgYWRkcmVzcyB0byBhbGwgVUVDcyBUQklQQSBhZGRyZXNzLgoKICAgIEl0IGlzIHNldCB0byAweDFGIGJ5IGRlZmF1bHQgYW5kIGNhbiBiZSBvdmVyd3JpdHRlbiBvbiB0aGUgYm9hcmQKICAgIGhlYWRlciBmaWxlIGJ5IGRlZmluaW5nIENPTkZJR19VVEJJUEFSX0lOSVRfVEJJUEEuIFRoaXMgYWxsb3dzCiAgICB0aGUgQ1BVIHRvIHNpbXBseSAicmVzZXJ2ZSIgb25lIFNNSSBhZGRyZXNzIGluc3RlYWQgb2YgdXNpbmcKICAgIGEgZGlmZmVyZW50IG9uZSBmb3IgZWFjaCBVRUMuCgogICAgU2lnbmVkLW9mZi1ieTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgOWZkMzhhMDFjYmMwY2U0YThkYjQxZjcyNjc3MTAzZWQwNGIyM2RiNQpBdXRob3I6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KRGF0ZToJTW9uIEF1ZyAxMCAxOTo0MzowNiAyMDA5ICswNTMwCgogICAgbmV0OiBraXJrd29vZDogdXBkYXRlczogdXNlZCBldGhfc2V0ZW52X2VuZXRhZGRyIGFwaQoKICAgIGV0aF9zZXRlbnZfZW5ldGFkZHIgaXMgYXZhaWJsZSBieSB1cHBlciBsYXllcgogICAgdXNpbmcgdGhpcyBzYXZlcyAyMDQgYnl0ZXMgb24gdG90YWwgaW1hZ2Ugc2l6ZQoKICAgIHVzZWQgTG9jYWwgT1VJIGluc3RlYWQgb2YgTWFydmVsbCBPVUkgZm9yCiAgICByYW5kb20gTUFDIGFkZHJlc3MgZ2VuZXJhdGlvbiBsb2dpYwoKICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZWNiZDIwNzhhMWY1NmM4NWI2YzU2YWZhYWVkODYyYmY5MmNjZDNmMwpBdXRob3I6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEF1ZyAxMSAwMzo0ODowNSAyMDA5ICswODAwCgogICAgRml4IEUxMDAwIGJ1aWxkIHdhcm5pbmcgb24gQVAxMDAwIGJvYXJkCgogICAgIEZpeCBFMTAwMCBidWlsZCB3YXJuaW5nIG9uIEFQMTAwMCBib2FyZAogICAgIEZpeCB0aGUgYnVpbGQgd2FybmluZyBvbiBBUDEwMDAgYm9hcmQ6CiAgICAgZTEwMDAuYzoxMzE6IHdhcm5pbmc6ICdlMTAwMF9yZWFkX2VlcHJvbScgdXNlZCBidXQgbmV2ZXIgZGVmaW5lZAogICAgIGUxMDAwLmM6MjAxMjogd2FybmluZzogJ2UxMDAwX3NldF9waHlfbW9kZScgZGVmaW5lZCBidXQgbm90IHVzZWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGIzYWYxZDY5OGIwMzFlNzIxYmFjYWVlODcxNWQ3OWRhYWY4MjNkZTYKQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+CkRhdGU6CU1vbiBBdWcgMTAgMTI6MjQ6NDAgMjAwOSAtMDQwMAoKICAgIEFSTTogRGF2aW5jaSBETTM1NTogRW5hYmxpbmcgRE05MDAwIG9uIERNMzU1IEVWTQoKICAgIER1ZSB0byByZWNlbnQgY2hhbmdlcyB0byB0aGUgTkVUIHN1cHBvcnQgb24gVS1ib290LCBETTkwMDAKICAgIGlzIG5vIGxvbmdlciBkZXRlY3RlZCBvbiB0aGUgRE0zNTUgRVZNLgogICAgVGhpcyBtaW5vciB1cGRhdGUgZW5hYmxlcyBETTkwMDAgb24gdGhlIERNMzU1IEVWTS4KICAgIFRlc3RlZCBvbiB0aGUgRE0zNTUgRVZNCgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAwOGMyZGYzM2YxY2Q1OTM1OTM4NDg2ZTk2ODY5NmY5NGFkNDA2MzEzCkF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgpEYXRlOglNb24gQXVnIDEwIDE5OjIzOjE5IDIwMDkgKzA1MzAKCiAgICBuZXQ6IHBoeTogYnVnZml4ZXM6IG12ODhFNjF4eCBjb21waWxlciB3YXJuaW5ncyBmaXhlZAoKICAgIDEuIG12ODhFNjF4eCBkcml2ZXIgY29tcGlsZXIgd2FybmluZ3MgZml4ZWQKICAgIDIuIGlkc3RyIGlmLWVsc2Ugc3RhdGVtZW50cyBjaGFuZ2VkIHRvIHN3aXRjaCgpIGNvbnN0cnVjdAogICAgICAgYW5kIGFkZGVkIGRlZmF1bHQgY2FzZSB0b28uCiAgICAgICBUaGlzIGZpeGVkIGlkc3RyIG1heSBiZSB1bmluaXRpYWxpemVkIHdhcm5pbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDc1MDMyNmU1ZDU0MDg4NWUzZWMzNmJkYTk0NjRiODI2OTI0OWY2Y2UKQXV0aG9yOiBQby1ZdSBDaHVhbmcgPHJhdGJlcnRAZmFyYWRheS10ZWNoLmNvbT4KRGF0ZToJTW9uIEF1ZyAxMCAxMTowMDowMCAyMDA5ICswODAwCgogICAgYXJtOiBBMzIwOiBkcml2ZXIgZm9yIEZUTUFDMTAwIGV0aGVybmV0IGNvbnRyb2xsZXIKCiAgICBUaGlzIHBhdGNoIGFkZHMgYW4gRlRNQUMxMDAgZXRoZXJuZXQgZHJpdmVyIGZvciBGYXJhZGF5IEEzMjAgZXZhbHVhdGlvbiBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQby1ZdSBDaHVhbmcgPHJhdGJlcnRAZmFyYWRheS10ZWNoLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZjkwZGM0M2ZkNjdlZWE3MTEyNGI5OTlhN2Q1ZTYxN2QwZDg2Nzk1YgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBBdWcgMTAgMTY6NDA6NTUgMjAwOSAtMDUwMAoKICAgIDg1eHg6IFJlbW92ZWQgQkVEQlVHIHN1cHBvcnQgZnJvbSBGU0wgODV4eCBib2FyZHMKCiAgICBGb3Igc29tZSByZWFzb24gdGhlIE1QQzg1NDQgZW5hYmxlZCBCRURCVUcgaWYgUENJIHdhcyBlbmFibGVkIGFuZCB0aGF0CiAgICBnb3QgY29waWVkIGludCB0aGUgTVBDODUzNiwgTVBDODU3MiBhbmQgUDIwMjAgRFMgYm9hcmRzLiAgVGhlIEJFREJVRwogICAgc3VwcG9ydCBoYXMgbmV2ZXIgYmVlbiBtYWRlIHRvIHdvcmsgY29tcGxldGVseSBvbiBlNTAwLzg1eHggc28gd2UKICAgIGp1c3QgZGlzYWJsZSBpdCB0byBzYXZlIHNwYWNlIGFuZCBtYXRjaCB0aGUgb3RoZXIgRlNMIDg1eHggYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZWIxYTRkMGE0NzE1MDVjMTY5YmVmMTlhNzNhNjBmODY0MWYwYjg3NQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBBdWcgMTAgMTA6Mzk6MTIgMjAwOSArMDIwMAoKICAgIFByZXBhcmUgMjAwOS4wOC1yYzIKCiAgICBVcGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1M2NjMThjNzFiMmI5MjBjY2ExNzE4NzRjNjY2M2UyNzRmYTgwNTU2CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIEF1ZyAxMCAxMDozODozNCAyMDA5ICswMjAwCgogICAgTWlub3IgY29kaW5nIHN0eWxlIGNsZWFudXAuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBkMzcxNzA4YTFiZWRhMGY1Mjk3NTZlNjE0YWY3ODViMzA0NjEzNzllCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIEF1ZyAxMCAwOTo1OToxMCAyMDA5ICswMjAwCgogICAgbmV0L3RmdHAuYzogZml4IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBkaWZmZXIgaW4gc2lnbmVkbmVzcwoKICAgIHRmdHAuYzoyOTQ6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5nIGFyZ3VtZW50IDEgb2YgJ3N0cmxlbicKICAgIGRpZmZlciBpbiBzaWduZWRuZXNzCgogICAgVGhpcyB3YXMgb25seSB2aXNpYmxlIGZvciB0aGUgdXR4ODI0NSBib2FyZCB3aGljaCBzZWVtcyB0byBoYXZlIERFQlVHCiAgICBlbmFibGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgM2VkOWU5NDNmZGZlNTExNzRiMjM5ODlkNDg1NjNiOGMxYjdkMmVhOApBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVNhdCBBdWcgOCAxNjowNjo0NyAyMDA5ICswMjAwCgogICAgQVJNIENvcnRleCBBODogUmVtb3ZlIGJvZ3VzIGNvbmZpZy5tayBlbnRyaWVzCgogICAgUmVtb3ZlIGJvZ3VzIGNvbmZpZy5tayBlbnRyeSwgZml4IG5ld2xpbmUgYW5kIHJlbW92ZSByZWR1bmRhbnQKICAgIG9tYXAzL2NvbmZpZy5tawoKICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Cgpjb21taXQgY2QzZGNiYTE0MjJkMzQ0MTUwMzI1MWZiYzY5Y2YyNDM3YzQ0MDc4MQpBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVNhdCBBdWcgOCAxMjo0NjowOSAyMDA5ICswMjAwCgogICAgT01BUDM6IEZpeCBtaXNzaW5nIEdQTUNfQ09ORklHX0NTMF9CQVNFCgogICAgQXBwbHlpbmcgdHdvIGluZGVwZW5lbnQgT01BUDMgcGF0Y2hlcyByZXN1bHRlZCBpbiBtaXNzaW5nCiAgICBHUE1DX0NPTkZJR19DUzBfQkFTRS4gUGF0Y2ggIm9tYXAzOiBlbWJlZGQgZ3BtY19jcyBpbnRvIGdwbWMKICAgIGNvbmZpZyBzdHJ1Y3QiIHJlbW92ZXMgR1BNQ19DT05GSUdfQ1MwX0JBU0UsIGluZGVwZW5kZW50IHBhdGNoCiAgICAib21hcDM6IGJ1ZyBmaXggZm9yIE5PUiBib290IHN1cHBvcnQiIGludHJvZHVjZXMgaXQncyB1c2FnZS4KICAgIFJlLWludHJvZHVjZSBHUE1DX0NPTkZJR19DUzBfQkFTRS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgoKY29tbWl0IGJhM2RiYWYyODExMzAwMjllY2I5NzBhOTIyNTUxOTAyYzFkODBiNTAKQXV0aG9yOiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KRGF0ZToJTW9uIEp1biA4IDA0OjEyOjQ5IDIwMDkgKzA0MDAKCiAgICBteGMtbW1jOiBzZGhjIGhvc3QgZHJpdmVyIGZvciBNWDIgYW5kIE1YMyBwcm9jY2Vzc29yCgogICAgVGhpcyBpcyBhIHBvcnQgb2YgTGludXggZHJpdmVyIGZvciBTREhDIGhvc3QgY29udHJvbGxlciBoYXJkd2FyZQogICAgZm91bmQgb24gRnJlZXNjYWxlJ3MgTVgyIGFuZCBNWDMgcHJvY2Vzc29ycy4gVXNlcyBuZXcgZ2VuZXJpYyBNTUMKICAgIGZyYW1ld29yayAoQ09ORklHX0dFTkVSSUNfTU1DKSBhbmQgaXQgbG9va3MgbGlrZSB0aGVyZSBhcmUgc29tZQogICAgcHJvYmxlbXMgd2l0aCBhIGZyYW1ld29yayAoYXQgbGVhc3Qgb24gTEUgY3B1cykuIFNvbWUgb2YgdGhlc2UKICAgIHByb2JsZW1zIGFyZSBhZGRyZXNzZWQgaW4gdGhlIGZvbGxvd2luZyBwYXRjaGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgoKY29tbWl0IDY0MmQ3YjYzYzM0MzYzM2RjYWZjNGUyM2EyMGUzMjYwNGEwNWZmMTMKQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pLWxpc3RAZ251ZGQuY29tPgpEYXRlOglGcmkgQXVnIDcgMTI6MzU6NDcgMjAwOSArMDIwMAoKICAgIGtpcmt3b29kL2dwaW8uaDogcmVtb3ZlIGR1cGxpY2F0ZSBkZWZpbml0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUBnbnVkZC5jb20+Cgpjb21taXQgM2FjMzc0YzBmMGI3ZDg1NmYxYTQzMzE3YTI4NmYyMDc5MTA2YmQ2YQpBdXRob3I6IEFsYmluIFRvbm5lcnJlIDxhbGJpbi50b25uZXJyZUBmcmVlLWVsZWN0cm9ucy5jb20+CkRhdGU6CUZyaSBBdWcgNyAxMjozNzozNiAyMDA5ICswMjAwCgogICAgQWRkIGRyaXZlciBmb3IgdGhlIFNUIE05NXh4eCBTUEkgRUVQUk9NCgogICAgVGhpcyBjaGlwIGlzIHVzZWQgaW4gYSBudW1iZXIgb2YgYm9hcmRzIG1hbnVmYWN0dXJlZCBieSBDYWxhby1TeXN0ZW1zCiAgICB3aGljaCBzaG91bGQgYmUgc3VwcG9ydGVkIHNvb24uIFRoaXMgZHJpdmVyIHByb3ZpZGVzIHRoZSBuZWNlc3NhcnkKICAgIHNwaV9yZWFkIGFuZCBzcGlfd3JpdGUgZnVuY3Rpb25zIG5lY2Vzc2FyeSB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBjaGlwLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFsYmluIFRvbm5lcnJlIDxhbGJpbi50b25uZXJyZUBmcmVlLWVsZWN0cm9ucy5jb20+Cgpjb21taXQgMzA5NTE5NjBiYWU5YTJjMzNlMzI0YTcxNjU5NjJhMDgyZTkxM2Y5ZQpBdXRob3I6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KRGF0ZToJRnJpIEF1ZyA3IDIyOjI3OjMyIDIwMDkgKzA1MzAKCiAgICBhcm06IFNoZWV2YXBsdWc6IEZpeGVkIE5BTkQgc3BlY2lmaWMgd2FybmluZwoKICAgIEl0IGlzIHJlY29tbWVuZGVkIHRvIGRlZmluZSB0aGUgbWFjcm8gQ09ORklHX1NZU182NEJJVF9WU1BSSU5URgogICAgZm9yIE5BTkQgc3BlY2lmaWMgd2FybmluZyByZW1vdmFsLCBzYW1lIGlzIGRvbmUgaW4gdGhpcyBwYXRjaAoKICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KCmNvbW1pdCAzMTc3MzQ5NjZlNzYzZmRlZTE4Mzg5OGMwZWQ5NDBjOWJhZGEyNTQxCkF1dGhvcjogSm9zaCBCb3llciA8andib3llckBsaW51eC52bmV0LmlibS5jb20+CkRhdGU6CUZyaSBBdWcgNyAxMzo1MzoyMCAyMDA5IC0wNDAwCgogICAgRHVhbC1saWNlbnNlIElCTSBjb2RlIGNvbnRyaWJ1dGlvbnMKCiAgICBJdCB3YXMgYnJvdWdodCB0byBvdXIgYXR0ZW50aW9uIHRoYXQgVS1Cb290IGNvbnRhaW5zIGNvZGUgZGVyaXZlZCBmcm9tIHRoZQogICAgSUJNIE9wZW5CSU9TIHNvdXJjZSBjb2RlIG9yaWdpbmFsbHkgcHJvdmlkZWQgd2l0aCBzb21lIG9mIHRoZSBvbGRlciBQb3dlclBDCiAgICA0eHggZGV2ZWxvcG1lbnQgYm9hcmRzLiAgQXMgYSByZXN1bHQsIHRoZSBvcmlnaW5hbCBsaWNlbnNlIG9mIHRoaXMgY29kZSBoYXMKICAgIGJlZW4gY2FycmllZCBpbiB0aGUgdmFyaW91cyBmaWxlcyBmb3IgYSBudW1iZXIgb2YgeWVhcnMgaW4gdGhlIFUtQm9vdCBwcm9qZWN0LgoKICAgIElCTSBpcyBkdWFsLWxpY2Vuc2luZyB0aGUgSUJNIGNvZGUgY29udHJpYnV0aW9ucyBhbHJlYWR5IHByZXNlbnQgaW4gVS1Cb290CiAgICB1bmRlciBlaXRoZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIG9yIHRoZQogICAgb3JpZ2luYWwgY29kZSBsaWNlbnNlIGFscmVhZHkgcHJlc2VudC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb3NoIEJveWVyIDxqd2JveWVyQGxpbnV4LnZuZXQuaWJtLmNvbT4KCmNvbW1pdCBjZmQ3MDBiZTlmNWVkMjg5ZmQ1N2E5YmQ2MWUyNjYzMTliYWRjYjBkCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEF1ZyA1IDA5OjAzOjU0IDIwMDkgLTA1MDAKCiAgICBmZHQ6IEZpeCBmZHRfcGNpX2RtYV9yYW5nZXMgaGFuZGxpbmcgb2YgNjQtYml0IHJhbmdlcwoKICAgIElmIHRoZSBzaXplIG9mIGEgcmVnaW9uIGVxdWFsIHRvIDRHIGl0IGNhbid0IGJlIHJlcHJlc250ZWQgaW4gYSAzMi1iaXQKICAgIEJBUiBzbyB3ZSBzaG91bGQgaGF2ZSBtYXJrZWQgdGhhdCBjYXNlIGFzIE1FTTY0LgoKICAgIEFkZGl0aW9uYWxseSBidW1wIHRoZSBudW1iZXIgb2YgaW5ib3VuZCB3aW5kb3dzIHVwIHRvIDQgdG8gaGFuZGxlIHRoZQogICAgZmFjdCB0aGF0IEZyZWVzY2FsZSBQUENzIHRoYXQgaGF2ZSBhbiBpbXBsaWNpdCB3aW5kb3cgZm9yIENDU1JCQVIuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA1OWI0ZDc0NzFjNDJlOTU1YmQ5ODQ2ODkyYTBjYzc0NzgxNzE3NzhkCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IEF1ZyA2IDIxOjI5OjU5IDIwMDkgKzAyMDAKCiAgICBBUk0gRUFCSTogYWRkIG5ldyBoZWxwZXIgZnVuY3Rpb25zIHJlc3AuIGZ1bmN0aW9uIG5hbWVzCgogICAgVGhlIEFSTSBFQUJJIGRlZmluZXMgbmV3IG5hbWVzIGZvciBHQ0MgaGVscGVyIGZ1bmN0aW9ucywKICAgIGFuZCBHQ0Mgc2VlbXMgdG8gbmVlZCBzb21lIG5ldyBmdW5jdGlvbnMgYXMgd2VsbC4KCiAgICBUaGlzIHBhdGNoIGlzIGEgbWluaW1hbC1pbnZhc2l2ZSBhcHByb2FjaCB0byBmaXggcHJvYmxlbXMgd2l0aCBFQUJJCiAgICBjb25mb3JtYW50IHRvb2wgY2hhaW5zICh0byBiZSB1c2VkIHdpdGggIlVTRV9QUklWQVRFX0xJQkdDQz15ZXMiKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgVGVzdGVkLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgoKY29tbWl0IDE5NzMyNGQ3ZDk5OGE3OTFlNTEzN2I4MTc2OTgxYjRhZjI1MjIwYWUKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglXZWQgQXVnIDUgMTY6MTg6NDQgMjAwOSAtMDUwMAoKICAgIGh1c2g6IEZpeCBib2d1cyBmcmVlKCkgY2FsbAoKICAgIEFuIG9mZi1ieS1vbmUgZXJyb3IgaW4gaHVzaC5jIHJlc3VsdGVkIGluIGFuIHVuaW50ZW50aW9uYWwgZnJlZSgpIGNhbGwKICAgIGV2ZXJ5IHRpbWUgYSBjb21tYW5kIHdhcyBleGVjdXRlZAoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgZmYyNzY1MGJiMjU1ZTIyNzVhMjEyMzU3Yjc4YzNiNzdjYmYxZDJlOQpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglXZWQgQXVnIDUgMTg6Mzc6NDUgMjAwOSArMDIwMAoKICAgIGRpZ3N5X210YzogVXBkYXRlIGRlZmF1bHQgZW52aXJvbm1lbnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KCmNvbW1pdCAwYjQwYmQ0MzlhMzNiZGU5ZTNjY2NmMWFjYjU3NDQyMjVkMGM2MTAzCkF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+CkRhdGU6CVdlZCBBdWcgNSAxODozNzo0NCAyMDA5ICswMjAwCgogICAgZGlnc3lfbXRjOiBBZGQgZGVsYXkgaW4gU1BJIHRyYW5zZmVycyB0byB0aGUgY29tcGFuaW9uIGNvbnRyb2xsZXIuCgogICAgV2hpbGUgYXQgaXQsIHJlbW92ZSBpbml0aWFsaXphdGlvbiBvZiB2YXJpYWJsZXMgd2hpY2ggd2lsbCBiZSBzZXQKICAgIGJlZm9yZSB1c2FnZSBpbiBhbGwgY2FzZXMuCgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgMGJmMDA3NTBlMDgyYTAwNGU1ZmIwNTg5MjU2MjJhZTcyODkwY2M1NgpBdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KRGF0ZToJV2VkIEF1ZyA1IDE4OjM3OjQzIDIwMDkgKzAyMDAKCiAgICBkaWdzeV9tdGM6IG1pbm9yIGZpeGVzIGZvciBtdGMgY29tbWFuZCBoZWxwCgogICAgQWRkIG10YyBzdGF0ZSBzdWJjb21tYW5kIGRlc2NyaXB0aW9uIHRvIHRoZQogICAgaGVscCBvZiBtdGMgY29tbWFuZC4KCiAgICBSZW1vdmUgc29tZSBuZXdsaW5lcyBpbiBkZXNjcmlwdGlvbiBvZiBjb21tYW5kcwogICAgZm9yIHByb3BlciBoZWxwIGZvcm1hdGluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgNWNjNjkwODQxODliZjQ5YWE5OWQxM2Q1NzUxNWJlNzJkMTg0NGJkZgpBdXRob3I6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgQXVnIDUgMTg6Mzc6NDIgMjAwOSArMDIwMAoKICAgIGRpZ3N5X210YzogQWRkIG10YyBzdGF0ZSBjb21tYW5kLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDcxNjY1NTI4OGE1M2M5NWZhZDIwM2ViZjIxZDBiOGZmZGMyZjc1MjUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgSnVsIDI4IDIyOjM1OjM5IDIwMDkgKzAyMDAKCiAgICBQYXJ0aXRpb24gc3VwcG9ydDogcmVtb3ZlIG5ld2xpbmUgZnJvbSBwYXJ0aXRpb24gbmFtZQoKICAgIFJlbW92ZSBib2d1cyBuZXdsaW5lIGNoYXJhY3RlciB0aGF0IGdvdCBhZGRlZCB0byB0aGUgLm5hbWUgZmllbGQgb2YKICAgIHRoZSBkaXNrX3BhcnRpdGlvbl90IHN0cnVjdHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDNmMTY0OWZiMGRmYjFlNWM4ODkwZGUxNTRjMzMyYzM5NGRiNWNkYjUKQXV0aG9yOiBMdWlnaSAnQ29taW8nIE1hbnRlbGxpbmkgPGx1aWdpLm1hbnRlbGxpbmlAaWRmLWhpdC5jb20+CkRhdGU6CVR1ZSBKdWwgMjggMDk6MzM6MTcgMjAwOSArMDIwMAoKICAgIEZpeCBMWk1BIHN0cmluZy5oIGhlYWRlciBpbmNsdXNpb24gaXNzdWUgYW5kIHJlbW92ZSB1bnVzZWQgdmFyaWFibGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEx1aWdpICdDb21pbycgTWFudGVsbGluaSA8bHVpZ2kubWFudGVsbGluaUBpZGYtaGl0LmNvbT4KCmNvbW1pdCAxYzYyMzJmMWUyZWFlODdlMGUzNmQ0ODk2MTFlYjY4OTFkZmYyMWUxCkF1dGhvcjogSmVucyBTY2hhcnNpZyA8ZXN3QGJ1cy1lbGVrdHJvbmlrLmRlPgpEYXRlOglNb24gSnVsIDI3IDE1OjI4OjQyIDIwMDkgKzAyMDAKCiAgICBidXNfdmN4ay5jOiBmaXggd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdsaW5lcHRyJwoKICAgIFNpZ25lZC1vZmYtYnk6IEplbnMgU2NoYXJzaWcgPGVzd0BidXMtZWxla3Ryb25pay5kZT4KCmNvbW1pdCAxODMwNGY3Njc1ZTg0MjUyOTY1YjRlMjRjYmEyNzkwNzFmMWRhNDcyCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglGcmkgSnVsIDI0IDE3OjUxOjI3IDIwMDkgLTA0MDAKCiAgICBlbnY6IGtpbGwgb2ZmIGRlZmF1bHRfZW52aXJvbm1lbnRfc2l6ZQoKICAgIFRoZSBvbmx5IGVudmlyb25tZW50IHR5cGUgdGhhdCB1c2VzIHRoaXMgdmFyaWFibGUgaXMgc3BpIGZsYXNoLCBhbmQgdGhhdCBpcwogICAgb25seSBiZWNhdXNlIGl0IGlzIHJlaW1wbGVtZW50aW5nIHRoZSBjb21tb24gc2V0X2RlZmF1bHRfZW52KCkgZnVuY3Rpb24uCiAgICBTbyBmaXggdGhlIHNwaSBmbGFzaCBjb2RlIGFuZCBraWxsIG9mZiB0aGUgZGVmYXVsdF9lbnZpcm9ubWVudF9zaXplIGluIHRoZQogICAgcHJvY2Vzcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYmVkZDg0MDNmNzdmNzkwZTk4NzY1Nzg4ODVlYWIxMjAwYmEyZjhkOApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEp1bCAyMyAxNjozNzo0OCAyMDA5IC0wNDAwCgogICAgZXhwb3J0IFNQSSBmdW5jdGlvbnMgdG8gc3RhbmRhbG9uZSBhcHBzCgogICAgV2hpbGUgd2UncmUgaGVyZSwgZml4IHRoZSBicm9rZW4gI2lmZGVmIGhhbmRsaW5nIGluIF9leHBvcnRzLmguCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDNiOTA0M2E3YzAzMjkwYzliZGJlZjAzODQ4MzA3MjYzZjVmMzQ3MmMKQXV0aG9yOiBQZW5kYSBOYXZlZW4gS3VtYXIgPHBuYXZlZW5AdGkuY29tPgpEYXRlOglGcmkgSnVsIDMxIDAwOjA2OjM2IDIwMDkgKzA1MzAKCiAgICBvbWFwMzogYnVnIGZpeCBmb3IgTk9SIGJvb3Qgc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggcHJvdmlkZXMgYnVnIGZpeCwgd2hlbiBvbWFwMyB1c2VzIG5vciBib290LgoKICAgIFNpZ25lZC1vZmYtYnk6IFBlbmRhIE5hdmVlbiBLdW1hcjxwbmF2ZWVuQHRpLmNvbT4KICAgIEFja2VkLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgoKY29tbWl0IDYxYzY4YWUwYjQzYmI1ZDZhYjMyOTU4YzQ1Mjg5YWExOTdiMWEyZDEKQXV0aG9yOiBNaWNoYWVsIEV2YW5zIDxob3JzZV9kdW5nQGhvdG1haWwuY29tPgpEYXRlOglNb24gSnVsIDEzIDIwOjEzOjQ1IDIwMDkgKzAxMDAKCiAgICBGaXggZXhhbXBsZXMgZm9yIE9NQVAzIGJvYXJkcy4uLgoKICAgIFRoZSBhdHRhY2hlZCBwYXRjaCBjb3JyZWN0cyBhbiBlcnJvciBpbiB0aGUgZXhhbXBsZXMvTWFrZWZpbGUgd2hpY2gKICAgIGNhdXNlcyB0aGUgYXBwbGljYXRpb25zIGluIHRoZSBleGFtcGxlcyBkaXJlY3RvcnkgdG8gaGFuZyBvbiBPTUFQMwogICAgYmFzZWQgYm9hcmRzLiBUaGUgY3VycmVudCBNYWtlZmlsZSBzZXRzIC1UdGV4dCBkdXJpbmcgbGlua2luZyB0bwogICAgMHgwYzEwMDAwMCB3aGljaCBpcyBvdXRzaWRlIG9mIGFkZHJlc3NhYmxlIFNEUkFNIG1lbW9yeS4gVGhlIHNjcmlwdAogICAgY29ycmVjdHMgdGhlIGV4aXN0aW5nIGlmZXEuLi5lbHNlLi4uZW5kaWYgbG9naWMgdG8gbG9vayBhdCB0aGUgVkVORE9SCiAgICB0YWcgcmF0aGVyIHRoYW4gdGhlIENQVSB0YWcuCgogICAgVGhlIHBhdGNoIGFmZmVjdHMgdGhlIGZvbGxvd2luZyBjb25maWdzOiBvbWFwM19iZWFnbGVfY29uZmlnLAogICAgb21hcDNfb3Zlcm9fY29uZmlnLCBvbWFwM19ldm1fY29uZmlnLCBvbWFwM19wYW5kb3JhX2NvbmZpZywKICAgIG9tYXAzX3pvb20xX2NvbmZpZyBhbmQgb21hcDNfem9vbTJfY29uZmlnLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgRXZhbnMgPGhvcnNlX2R1bmdAaG90bWFpbC5jb20+CgogICAgRWRpdGVkIGNvbW1pdCBtZXNzYWdlLgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBhM2QxNDIxZGZkMGJiMWE3MjllMTcxZjhhMDkzYWM4MzdmOTJjZWM2CkF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KRGF0ZToJU2F0IEF1ZyA4IDA5OjMwOjIzIDIwMDkgKzAyMDAKCiAgICBvbWFwMzogdXNlIG9ubHkgZml4ZWQtc2l6ZSB0eXBlcyBpbnNpZGUgY3RybF9zdHJ1Y3RzCgogICAgcmVwbGFjZSB2YXJpYWJsZSB0eXBlcyBpbiBjdHJsX3N0cnVjdHMgZm9yIG9tYXAzIGJ5IHRob3NlIHdpdGgKICAgIGZpeGVkIHNpemUgKHU4LCB1MTYsIHUzMikuCiAgICBBZGRpdGlvbmFsIGlmbmRlZi1wcm90ZWN0aW9uIGlzIG5lZWRlZCBieSBleGFtcGxlcyB3aGljaCBkbyBub3QKICAgIGNvbXBpbGUgd2hlbiBpbmNsdWRpbmcgYXNtL3R5cGVzLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBMdWR3aWcgPG1sdWR3aWdAdWx0cmF0cm9uaWsuZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgoKY29tbWl0IDg5NDExMzUyOWUzYTA0ODcxNTQ0ZGRlOTc3ZDZkN2FkZWUwNWQzYmYKQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgpEYXRlOglTYXQgQXVnIDggMDk6MzA6MjIgMjAwOSArMDIwMAoKICAgIG9tYXAzOiByZXBsYWNlIGFsbCBpbnN0YW5jZXMgb2YgZ3BtYyBjb25maWcgc3RydWN0IGJ5IG9uZSBnbG9iYWwKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBMdWR3aWcgPG1sdWR3aWdAdWx0cmF0cm9uaWsuZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgoKY29tbWl0IDk3YTA5OWVhYTQ4ZDVjNzYyYzRmNzNjNTJjMzA5MGM1MTNiOGI4NzcKQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgpEYXRlOglTYXQgQXVnIDggMDk6MzA6MjEgMjAwOSArMDIwMAoKICAgIG9tYXAzOiByZW1vdmUgdHlwZWRlZnMgZm9yIGNvbmZpZ3VyYXRpb24gc3RydWN0cwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEx1ZHdpZyA8bWx1ZHdpZ0B1bHRyYXRyb25pay5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Cgpjb21taXQgYWEwNzA3ODk3YzQ5YzMzMGI3ZDZiOGQ4MzYyZTQ0ZjYwZjIyNDczMgpBdXRob3I6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEp1bCAzMSAxMzozNDowMiAyMDA5ICswODAwCgogICAgQWRkIEludGVsIEUxMDAwIFBDSUUgY2FyZCBzdXBwb3J0CgogICAgQmFzZWQgb24gSW50ZWwgUFJPLzEwMDAgTmV0d29yayBEcml2ZXIgNy4zLjIwLWsyCiAgICAgIEFkZCBJbnRlbCBFMTAwMCBQQ0lFIGNhcmQgc3VwcG9ydC4gVGhlIGZvbGxvd2luZyBjYXJkcyBhcmUgYWRkZWQ6CiAgICAgIElOVEVMXzgyNTcxRUJfQ09QUEVSCiAgICAgIElOVEVMXzgyNTcxRUJfRklCRVIsCiAgICAgIElOVEVMXzgyNTcxRUJfU0VSREVTCiAgICAgIElOVEVMXzgyNTcxRUJfUVVBRF9DT1BQRVIKICAgICAgSU5URUxfODI1NzFQVF9RVUFEX0NPUFBFUgogICAgICBJTlRFTF84MjU3MUVCX1FVQURfRklCRVIKICAgICAgSU5URUxfODI1NzFFQl9RVUFEX0NPUFBFUl9MT1dQUk9GSUxFCiAgICAgIElOVEVMXzgyNTcxRUJfU0VSREVTX0RVQUwKICAgICAgSU5URUxfODI1NzFFQl9TRVJERVNfUVVBRAogICAgICBJTlRFTF84MjU3MkVJX0NPUFBFUgogICAgICBJTlRFTF84MjU3MkVJX0ZJQkVSCiAgICAgIElOVEVMXzgyNTcyRUlfU0VSREVTCiAgICAgIElOVEVMXzgyNTcyRUkKICAgICAgSU5URUxfODI1NzNFCiAgICAgIElOVEVMXzgyNTczRV9JQU1UCiAgICAgIElOVEVMXzgyNTczTAogICAgICBJTlRFTF84MjU0NkdCX1FVQURfQ09QUEVSX0tTUDMKICAgICAgSU5URUxfODAwMDNFUzJMQU5fQ09QUEVSX0RQVAogICAgICBJTlRFTF84MDAwM0VTMkxBTl9TRVJERVNfRFBUCiAgICAgIElOVEVMXzgwMDAzRVMyTEFOX0NPUFBFUl9TUFQKICAgICAgSU5URUxfODAwMDNFUzJMQU5fU0VSREVTX1NQVAoKICAgICA4MjU3MUVCX0NPUFBFUiBkdWFsIHBvcnRzLAogICAgIDgyNTcyRUkgc2luZ2xlIHBvcnQsCiAgICAgODI1NzJFSV9DT1BQRVIgc2luZ2xlIHBvcnQgUENJRSBjYXJkcwogICAgIGFuZAogICAgIDgyNTQ1RU1fQ09QUEVSLAogICAgIDgyNTQxR0lfTEYKICAgICBwY2kgY2FyZHMgYXJlIHRlc3RlZCBvbiBib3RoICBQMjAyMCBib2FyZAogICAgIGFuZCBNUEM4NTQ0RFMgYm9hcmQuCgogICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDg2ODQ4YTc0YzNjOGViMmY4ZGQxNzlkMDM5ZWU2MDRkYzQ1Mjg4Y2YKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBKdWwgMTUgMjE6MzE6MjggMjAwOSAtMDQwMAoKICAgIG5ldDogc3luYyBlbnYgZXRoYWRkciB0byBkZXZpY2UgZW5ldGFkZHIgaW4gZXRoX2luaXQoKQoKICAgIEluIHRoZSBwcmV2aW91cyBlbmV0YWRkciByZWZhY3RvcmluZywgdGhlIGFzc3VtcHRpb24gd2l0aCBjb21taXQgNTZiNTU1YTY0NAogICAgd2FzIHRoYXQgdGhlIGV0aCBsYXllciB3b3VsZCBoYW5kbGUgdGhlIGVudiAtPiBkZXZpY2UgZW5ldGFkZHIgc3luY2luZy4KICAgIFRoaXMgd2FzIG5vdCB0aGUgY2FzZSBhcyBldGhfaW5pdGlhbGl6ZSgpIGlzIGNhbGxlZCBvbmx5IG9uY2UgYW5kIHRoZSBzeW5jCiAgICBvY2N1cnMgdGhlcmUuICBTbyBtYWtlIHN1cmUgdGhlIGV0aF9pbml0KCkgZnVuY3Rpb24gZG9lcyB0aGUgZW52IC0+IGRldmljZQogICAgc3luYyB3aXRoIGV2ZXJ5IG5ldHdvcmsgaW5pdC4KCiAgICBSZXBvcnRlZC1ieTogQW5kcnplaiBXb2xza2kgPGF3b2xza2lAcG9jenRhLmZtPgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAwZWJmMDRjNjA3YjU0YTM1MjYyOWRjZjdlNzZiNzZmMTc4NWRhZTU0CkF1dGhvcjogUm9iaW4gR2V0eiA8cmdldHpAYmxhY2tmaW4udWNsaW51eC5vcmc+CkRhdGU6CVRodSBKdWwgMjMgMDM6MDE6MDMgMjAwOSAtMDQwMAoKICAgIG1pbm9yIGRlYnVnIGNsZWFudXBzIGluIC4vbmV0CgogICAgIE1pbm9yIC4vbmV0IGNsZWFudXBzIC0gbm8gZnVuY3Rpb25hbCBjaGFuZ2VzCiAgICAgIC0gY2hhbmdlICNpZmRlZiBERUJVRyBwcmludGYoKTsgI2VuZGlmIHRvIGp1c3QgZGVidWcoKQogICAgICAtIGNoYW5nZWQgX19GVU5DVElPTl9fIHRvIF9fZnVuY19fCiAgICAgIC0gZ290IHJpZCBvZiBleHRyYSB3aGl0ZXNwYWNlIGJldHdlZW4gZnVuY3Rpb24gYW5kIG9wZW5pbmcgYnJhY2UKICAgICAgLSByZW1vdmVkIHVubmVjZXNzYXJ5IGJyYWNlcyBvbiBpZiBzdGF0ZW1lbnRzCgogICAgIGdjYyBkZWFkIGNvZGUgZWxpbWluYXRpb24gc2hvdWxkIG1ha2UgdGhpcyBmdW5jdGlvbmFsbHkvc2l6ZSBlcXVpdmFsZW50CiAgICAgd2hlbiBERUJVRyBpcyBub3QgZGVmaW5lZC4gKGNvbmZpcm1lZCBvbiBCbGFja2Zpbiwgd2l0aCBnY2MgNC4zLjMpLgoKICAgICBTaWduZWQtb2ZmLWJ5OiBSb2JpbiBHZXR6IDxyZ2V0ekBibGFja2Zpbi51Y2xpbnV4Lm9yZz4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDE4N2FmOTU0Y2Y3OTU4YzI0ZWZjZjBmZDYyMjg5YmJkYjRmMWYyNGUKQXV0aG9yOiBNYXR0aGlhcyBMdWR3aWcgPG1sdWR3aWdAdWx0cmF0cm9uaWsuZGU+CkRhdGU6CVR1ZSBNYXkgMTkgMDk6MDk6MzEgMjAwOSArMDIwMAoKICAgIG9tYXAzOiBlbWJlZGQgZ3BtY19jcyBpbnRvIGdwbWMgY29uZmlnIHN0cnVjdAoKICAgIEVtYmVkZCBjaGlwIHNlbGVjdCBjb25maWd1cmF0aW9uIGludG8gc3RydWN0IGZvciBncG1jIGNvbmZpZwogICAgaW5zdGVhZCBvZiBoYXZpbmcgaXQgY29tcGxldGVseSBzZXBhcmF0ZWQgYXMgc3VnZ2VzdGVkIGJ5CiAgICBXb2xmZ2FuZyBEZW5rIG9uCiAgICBodHRwOi8vbGlzdHMuZGVueC5kZS9waXBlcm1haWwvdS1ib290LzIwMDktTWF5LzA1MjI0Ny5odG1sCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgTHVkd2lnIDxtbHVkd2lnQHVsdHJhdHJvbmlrLmRlPgoKY29tbWl0IDA2YmZmYzZlYTUyZDRiMzkwODQzZDI5NWQ0MzhiMjAzN2QxMmU1ZmQKQXV0aG9yOiBEYXZpZCBCcm93bmVsbCA8ZGF2aWQtYkBwYWNiZWxsLm5ldD4KRGF0ZToJVGh1IEp1bCAxNiAxODo0MDo1NSAyMDA5IC0wNzAwCgogICAgcm05MjAwIGxvd2V2ZWxfaW5pdDogZG9uJ3QgdG91Y2ggcmVzZXJ2ZWQvcmVhZG9ubHkgcmVnaXN0ZXJzCgogICAgRm9yIHNvbWUgcmVhc29uIHRoZSBBVDkxcm05MjAwIGxvd2xldmVsIGluaXQgd3JpdGVzIHRvIGEgYnVuY2ggb2YKICAgIHJlc2VydmVkIG9yIHJlYWQtb25seSBhZGRyZXNzZXMuICBBbGwgdGhlIGJvYXJkcyBzZWVtIHRvIGRlZmluZSB0aGUKICAgIHZhbHVlLXRvLWJlLXdyaXR0ZW4gdmFsdWVzIGFzIHplcm8gLi4uIGJ1dCB0aGV5IHNob3VsZG4ndCBhY3R1YWxseQogICAgYmUgd3JpdGluZyAqYW55dGhpbmcqIHRoZXJlLgoKICAgIE5vIGRvY3VtZW50ZWQgZXJyYXR1bSBqdXN0aWZpZXMgdGhlc2UgYWNjZXNzZXMuICBJdCBsb29rcyBsaWtlIG1heWJlCiAgICBzb21lIHByZS1yZWxlYXNlIEJESS0yMDAwIHNldHVwIGNvZGUgaGFzIGJlZW4gY2FycmllZCBhbG9uZyBieSBjYXJnbwogICAgY3VsdCBwcm9ncmFtbWluZyBzaW5jZSBhdCBsZWFzdCBsYXRlIDIwMDQgKHBlciBHSVQgaGlzdG9yeSkuCgogICAgSGVyZSdzIGEgcGF0Y2ggZGlzYWJsaW5nIHdoYXQgc2VlbXMgdG8gYmUgYm9nb3NpdHkuICBUZXN0ZWQgb24gYQogICAgY3NiMzM3OyB0aGVyZSB3ZXJlIG5vIGJlaGF2aW9yYWwgY2hhbmdlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBCcm93bmVsbCA8ZGF2aWQtYkBwYWNiZWxsLm5ldD4KCiAgICBvbiBSTTkyMDBlawogICAgVGVzdGVkLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDMwMWI3ZGI4OGZiZGY3ZDExOGVmYjc5YjM3MWIyNTI3YTJjMzE4NjgKQXV0aG9yOiBEYXZpZCBIdW50ZXIgPGh1bnRlcmQ0MkBnbWFpbC5jb20+CkRhdGU6CVRodSBKdWwgMzAgMTQ6MzI6NDkgMjAwOSAtMDcwMAoKICAgIHB4YTogRml4IHR5cG8gaW4gR0NEUih4KQoKICAgIEZpeCBhIHR5cG8gaW4gdGhlIEdDRFIoeCkgbWFjcm8uIEl0J3MgYSBnb29kIHRoaW5nIG5vIG9uZSB3YXMgdXNpbmcgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgSHVudGVyIDxodW50ZXJkNDJAZ21haWwuY29tPgoKY29tbWl0IDNjNDQ4ZTY0ODIyMTg3OWFlMGUwMzBlOTQ1MDhiNGY5ZjYzYjdhYjgKQXV0aG9yOiBFcmljIEJlbmFyZCA8ZXJpY0BldWtyZWEuY29tPgpEYXRlOglTYXQgSnVsIDE4IDIzOjQ1OjE1IDIwMDkgKzAyMDAKCiAgICBBZGQgQVQ5MVNBTTkyNjAgdG8gYXQ5MSdzIGxvd2xldmVsX2luaXQuUwoKICAgIE5lZWRlZCBmb3IgQVQ5MVNBTTkyNjAgTk9SIEJvb3Qgb24gRXVrcmVhJ3MgQ1BVOTI2MC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBFcmljIEJlbmFyZCA8ZXJpY0BldWtyZWEuY29tPgoKY29tbWl0IDU2YmRmYTk2MTI0MmZjNmFjYWVlYmM4MDA2NDBhMTJiMjhkYjM4OTkKQXV0aG9yOiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgpEYXRlOglUaHUgSnVsIDMwIDA5OjM2OjMzIDIwMDkgKzAyMDAKCiAgICBwcGM0eHg6IFJlbW92ZSBjaGVjayBmb3IgUFBDNDYwRVggZnJvbSBDb21wYWN0Q2VudGVyCgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjM2ZhNGYwYzg2ODRjODYyZWNkM2ZiNjIyZmFiMWUxN2U0NGU4MmUxCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgSnVsIDI5IDA4OjQ2OjEwIDIwMDkgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBzdXBwb3J0IGZvciBQUEM0NjBFWC80NjBHVCByZXYgQiBjaGlwIHRvIEFNQ0MgQ2FueW9ubGFuZHMKCiAgICBUaGlzIHBhdGNoIGlzIGJhc2VkIG9uIGEgZGlmZiBjcmVhdGVkIGJ5IFBob25nIFZvIGZyb20gQU1DQy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQaG9uZyBWbyA8cHZvQGFtY2MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDg5YmNjNDg3NTAwN2VmNjYwODI5N2RjMTFlN2EwZDFmYmQ5OTAwZDIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBKdWwgMjkgMDg6NDU6MjcgMjAwOSArMDIwMAoKICAgIHBwYzR4eDogQWRkIGJhc2ljIHN1cHBvcnQgZm9yIEFNQ0MgUFBDNDYwRVgvNDYwR1QgcmV2IEIgY2hpcHMKCiAgICBUaGlzIHBhdGNoIGlzIGJhc2VkIG9uIGEgZGlmZiBjcmVhdGVkIGJ5IFBob25nIFZvIGZyb20gQU1DQy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQaG9uZyBWbyA8cHZvQGFtY2MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDgyYTdlZGM3ZWE4ZjVmZTU1ZmVkNGZmN2UxMjc0Njk1NjllNTM5YzQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBKdWwgMjggMTU6MTI6MDQgMjAwOSArMDIwMAoKICAgIHBwYzR4eDogQ2FueW9ubGFuZHMtTkFORC1ib290OiBTdXBwb3J0IDIgQ3J1Y2lhbCA1MTJNQnl0ZSBTT0RJTU0ncwoKICAgIFNvbWUgQ2FueW9ubGFuZHMgYm9hcmRzIGFyZSBlcXVpcHBlZCB3aXRoIGRpZmZlcmVudCBTT0RJTU0ncy4gVGhpcyBpcyBubwogICAgcHJvYmxlbSB3aXRoIHRoZSAibm9ybWFsIiBOT1IgYm9vdGluZyBDYW55b25sYW5kcyBVLUJvb3QsIHNpbmNlIGl0CiAgICBhdXRvbWF0aWNhbGx5IGRldGVjdHMgdGhlIFNPRElNTSdzIHZpYSBTUEQgZGF0YSBhbmQgY29ycmVjdGx5IGNvbmZpZ3VyZXMKICAgIHRoZW0uIEJ1dCB0aGUgTkFORCBib290aW5nIHZlcnNpb24gaXMgZGlmZmVyZW50LiBIZXJlIHdlIG9ubHkgaGF2ZSA0awogICAgb2YgaW1hZ2Ugc2l6ZSB0byBjb21wbGV0ZWx5IHNldHVwIHRoZSBoYXJkd2FyZSwgaW5jbHVkaW5nIEREUjIgc2V0dXAuCiAgICBTbyB3ZSBuZWVkIHRvIHVzZSBhIGZpeGVkIEREUjIgc2V0dXAgaGVyZS4gVGhpcyBkb2Vzbid0IHdvcmsgZm9yIGRpZmZlcmVudAogICAgU09ESU1NJ3MgcmlnaHQgbm93LgoKICAgIEN1cnJlbnRseSBvbmx5IHRoaXMgQ3J1Y2lhbCBTT0RJTU0gaXMgc3VwcG9ydDoKICAgIENUNjQ2NEFDNjY3LjhGQiAoZHVhbCByYW5rZWQpCgogICAgTm93IHNvbWUgYm9hcmRzIGFyZSBzaGlwcGVkIHdpdGggdGhpcyBTT0RJTU06CiAgICBDVDY0NjRBQzY2Ny40RkUgKHNpbmdsZSByYW5rZWQpCgogICAgVGhpcyBwYXRjaCBub3cgc3VwcG9ydHMgYm90aCBTT0RJTU0ncyBieSBjb25maWd1cmluZyBmaXJzdCBmb3IgdGhlIGR1YWwKICAgIHJhbmtlZCBESU1NLiBBIHF1aWNrIHNob3dzLCBpZiB0aGlzIG1vZHVsZSBpcyByZWFsbHkgaW5zdGFsbGVkLiBJZiB0aGlzIHRlc3QKICAgIGZhaWxzLCB0aGUgRERSMiBjb250cm9sbGVyIGlzIHJlLWNvbmZpZ3VyZWQgZm9yIHRoZSBzaW5nbGUKICAgIHJhbmtlZCBTT0RJTU0uCgogICAgVGVzdGVkIHdpdGggdGhvc2UgU09ESU1NJ3M6CgogICAgQ1Q2NDY0QUM2NjcuOEZCIChkdWFsIHJhbmtlZCkKICAgIENUNjQ2NEFDNjY3LjRGRSAoc2luZ2xlIHJhbmtlZCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMjdkZDVmOGUxMDYyNjg0ZjFiYTY4NTc2MDQwOWQ5YjJhYjY2OTFiZgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEp1bCAyOCAxMDo1NjowMyAyMDA5ICswMjAwCgogICAgcHBjNHh4OiBhbWNjOiBNb3ZlICJrZXJuZWxfYWRkcl9yIiBldGMgdG8gaGlnaGVyIGxvY2F0aW9ucyAoPiAxNk1CKQoKICAgIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIGxvYWQgYWRkcmVzc2VzIGZvciBrZXJuZWwsIGZkdCBhbmQgcmFtZGlzayB0byBoaWdoZXIKICAgIGFkZHJlc3NlcyAoPj0gMTZNQikuIFRoaXMgZW5hYmxlcyBib290aW5nIG9mIGJpZ2dlciBrZXJuZWwgaW1hZ2VzIChlLmcuCiAgICBsb2NrZGVwIGVuYWJsZWQpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2OTQyZWZjMmJlMWI5MDA1NGZhNGFmYTVjZGE3MDIzNDY5ZmUwOGI5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgSnVsIDI4IDEwOjUwOjMyIDIwMDkgKzAyMDAKCiAgICBwcGM0eHg6IGFtY2M6IFNldCBDT05GSUdfU1lTX0JPT1RNQVBTWiB0byAxNk1CIGZvciBiaWcga2VybmVscwoKICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBDT05GSUdfU1lTX0JPT1RNQVBTWiBmcm9tIDhNQiB0byAxNk1CIHdoaWNoIGlzIHRoZQogICAgaW5pdGlhbCBUTEIgb24gNDB4IFBQQydzIGluIHRoZSBMaW51eCBrZXJuZWwuIFdpdGggdGhpcyBjaGFuZ2UgZXZlbiBiaWdnZXIKICAgIExpbnV4IGtlcm5lbHMgKD4gOE1CKSBjYW4gYmUgYm9vdGVkLgoKICAgIFRoaXMgcGF0Y2ggYWxzbyBzZXRzIENPTkZJR19TWVNfQk9PVE1fTEVOIHRvIDE2TUIgKGRlZmF1bHQgOE1CKSB0byBlbmFibGUKICAgIGRlY29tcHJlc3Npb24gb2YgYmlnZ2VyIGltYWdlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOTAxYmU4OWEyN2UxMWIyNjI3YzEzMmVlODdjNzc2MWJkNjg4NjA5MQpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglUdWUgSnVsIDI4IDE0OjUzOjQ0IDIwMDkgKzAyMDAKCiAgICA4M3h4LCBrbWV0ZXIxLCBmaXg6IHVwZGF0ZSBpbiB0aGUgRFRTIHRoZSBjb3JyZWN0IHNpemUgZm9yIHRoZSBmaXJzdCBmbGFzaAoKICAgIFdoZW4gdXBkYXRpbmcgdGhlICJyZWciIGluIHRoZSAiL2xvY2FsYnVzL2ZsYXNoQGYwMDAwMDAwLDAiIG5vZGUKICAgIHNpemUgd2FzIHdyb25nIHVwZGF0ZWQgZm9yIHRoZSBmaXJzdCBmbGFzaCwgYmVjYXVzZSB0aGUgdG90YWwKICAgIHNpemUgd2FzIGZpbGxlZCBpbiwgaW5zdGVhZCBvZiB0aGUgcmlnaHQgc2l6ZSBmb3IgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRjMmUzZGE4MmRjMmI3ZjhiMzliN2YxZDU3ZjU3MGU0YmM1Y2FhNmQKQXV0aG9yOiBLdW1hciBHYWxhIDxrdW1hci5nYWxhQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdWwgMjggMjE6NDk6NTIgMjAwOSAtMDUwMAoKICAgIFVwZGF0ZSBGcmVlc2NhbGUgY29weXJpZ2h0cyB0byByZW1vdmUgIkFsbCBSaWdodHMgUmVzZXJ2ZWQiCgogICAgIkFsbCBSaWdodHMgUmVzZXJ2ZWQiIGNvbmZsaWN0cyB3aXRoIHRoZSBHUEwuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8a3VtYXIuZ2FsYUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGJiNDI5MWU2MjU3OWRiYzYxMWU4NGVhYWY5NzM2MzFlMGJmMTI5YzcKQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgpEYXRlOglGcmkgSnVsIDI0IDExOjI3OjE0IDIwMDkgKzAyMDAKCiAgICBhcm0gbm9tYWRpazogYWRkIGkyYwoKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+CiAgICBBY2tlZC1ieTogQW5kcmVhIEdhbGxvIDxhbmRyZWEuZ2FsbG9Ac3Rlcmljc3Nvbi5jb20+CiAgICBBY2tlZC1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA2MGNiZmJmZDBmYmViYjQ2ODJmMTBiYTk2ZjYyMmJmZTE3MzE3NTk4CkF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUB1bmlwdi5pdD4KRGF0ZToJRnJpIEp1bCAyNCAxMToyNzowMyAyMDA5ICswMjAwCgogICAgYXJtIG5vbWFkaWs6IGFkZCBncGlvIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgogICAgQWNrZWQtYnk6IEFuZHJlYSBHYWxsbyA8YW5kcmVhLmdhbGxvQHN0ZXJpY3Nzb24uY29tPgogICAgQWNrZWQtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNTQ5Yjk4MzA2ZDg5N2FlNTk5MTM2MmQ2MDk2YTM2ZGY1MGVmZTY4NgpBdXRob3I6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KRGF0ZToJU3VuIEp1biAyOCAxMjo1MjozMiAyMDA5IC0wNTAwCgogICAgT01BUDMgUmVtb3ZlIHR3bDQwMzAgZGVmaW5lcwoKICAgIFRoZXNlIGRlZmluZXMgaGF2ZSBiZWVuIHN1YnBsYW50ZWQgYnkgdGhlIGVxdWl2ZWxlbnQgZGVmaW5lcyBpbgogICAgaW5jbHVkZS90d2w0MDMwLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CiAgICBBY2tlZC1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIEFja2VkLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBmY2NjMGZjYWFhZTUxNTQ2MTJmODI1OTM2NWQyNmQwNGYyMDQ4NTlmCkF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgpEYXRlOglTdW4gSnVuIDI4IDEyOjUyOjMxIDIwMDkgLTA1MDAKCiAgICBPTUFQMyBNb3ZlIHR3bDQwMzAgbW1jIGZ1bmN0aW9uCgogICAgQmVjYXVzZSB0d2w0MDMwIG5vdyBoYXMgaXRzIG93biBkZXZpY2UgZmlsZXMsIG1vdmUgYW5kIHJlbmFtZQogICAgdHdsNDAzMF9tbWNfY29uZmlnLgoKICAgIHR3bDQwMzBfbW1jX2NvbmZpZyBpbml0aWFsaXplcyB0aGUgdHdsNDAzMCBwb3dlciBzZXR0aW5nIHRvCiAgICB0aGUgbW1jIGRldmljZS4gIEJlY2F1c2UgaXQgaXMgaW4gdGhlIHR3bDQwMzAgcG93ZXIgZG9tYWluLCBtb3ZlCiAgICBpdCBvdXQgb2YgZHJpdmVycy9tbWMvb21hcDNfbW1jLmMgYW5kIGludG8gZHJpdmVycy9wb3dlci90d2w0MDMwLmMuCgogICAgVGhlIGZ1bmN0aW9uIHdhcyByZW5hbWVkIHRvIHR3bDQwMzBfcG93ZXJfbW1jX2luaXQgYmVjYXVzZSBhbGwKICAgIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSB0byBoYXZlIHRoZSBmb3JtYXQKCiAgICB0d2w0MDMwX3Bvd2VyXzxkZXZpY2U+XzxhY3Rpb24+CgogICAgSW4gdGhpcyBjYXNlIHRoZSBzdWZmaXggaXMgbW1jX2luaXQgc28KICAgIGRldmljZSA6IG1tYwogICAgYWN0aW9uIDogaW5pdAoKICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KICAgIEFja2VkLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgQWNrZWQtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDJjMTU1MTMwMTA0OTM0MzVjNzhmODMyMDI5NDBhYzNiZTExZGUyYzMKQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CkRhdGU6CVN1biBKdW4gMjggMTI6NTI6MzAgMjAwOSAtMDUwMAoKICAgIE9NQVAzIE1vdmUgdHdsNDAzMCBwb3dlciBhbmQgbGVkIGZ1bmN0aW9ucwoKICAgIEJlY2F1c2UgdHdsNDAzMCBub3cgaGFzIGl0cyBvd24gZGV2aWNlIGZpbGVzLCBtb3ZlIGV4aXRpbmcKICAgIG9tYXAzIHBvd2VyX2luaXRfciB0byBhIG5ldyBsb2NhdGlvbi4KCiAgICBwb3dlcl9pbml0X3IgaXMgdGhlIG9ubHkgZnVuY3Rpb24gaW4gYm9hcmQvb21hcDMvY29tbW9uLgogICAgSXQgaW5pdGlhbGl6ZXMgdGhlIHR3bDQwMzAgcG93ZXIgZm9yIHRoZSBib2FyZCBhbmQgZW5hYmxlcwogICAgdGhlIGxlZC4KCiAgICBUaGUgcG93ZXIgcGFydCBvZiB0aGUgdGhlIGZ1bmN0aW9uIGlzIG1vdmVkIHRvIHR3bDQwMzBfcG93ZXJfaW5pdCBpbgogICAgZHJpdmVycy9wb3dlci90d2w0MDMwLmMgVGhlIHBvd2VyIGNvbXBpbGF0aW9uIGlzIGNvbmRpdGlvbmFsIG9uIHRoZQogICAgZXhpc3RpbmcgY29uZmlnIHZhcmlhYmxlIENPTkZJR19UV0w0MDMwX1BPV0VSLgoKICAgIFRoZSBsZWQgcGFydCBpcyBtb3ZlZCB0byB0d2w0MDMwX2xlZF9pbml0IGluIHRoZSBuZXcgZmlsZQogICAgZHJpdmVycy9taXNjL3R3bDQwMzBfbGVkLmMJVGhlIGxlZCBjb21waWxhdGlvbiBpcyBjb25kaXRpb25hbCBvbgogICAgdGhlIG5ldyBjb25maWcgdmFyaWFibGUgQ09ORklHX1RXTDQwMzBfTEVECgogICAgVGhlIGRpcmVjdG9yeSBib2FyZC9vbWFwMy9jb21tb24gd2FzIHJlbW92ZWQgYmVjYXVzZSBwb3dlcl9pbml0X3IKICAgIHdhcyB0aGUgb25seSBmdW5jdGlvbiBpbiBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CiAgICBBY2tlZC1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIEFja2VkLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAzY2I3YTQ4MDVmYzhmYjRjMDllNDgwMWUxYzdkNTMxMTg2ZjIwMTkwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIEp1bCAyOCAyMjoxMzo1MiAyMDA5ICswMjAwCgogICAgVFFNOHh4KiBib2FyZHM6IHNldCBsYXJnZXIgU01DIFJ4IGJ1ZmZlciBsZW4KCiAgICBDb21taXQgMmIzZjEyYzIgYWRkZWQgc3VwcG9ydCBmb3IgY29uZmlndXJhYmxlIFNNQyBSeCBidWZmZXIgbGVuZ3RoIG9uCiAgICA4eHggc3lzdGVtcy4gRW5hYmxlIHRoaXMgZmVhdHVyZSBvbiBUUU04eHgqIGJhc2VkIGJvYXJkcy4KCiAgICBUaGlzIGZpeGVzIHRoZSBwcm9ibGVtIHRoYXQgcGFzdGluZyB0ZXh0IGluIHRoZSBtaWRkbGUgb2YgYSBsaW5lCiAgICAoaS4gZS4gaW5zZXJ0aW5nIGluIGVkaXQgbW9kZSkgZGlkIG5vdCB3b3JrIC0gb25seSB0aGUgZmlyc3QgdHdvCiAgICBjaGFyYWN0ZXJzIGdvdCBpbnNlcnRlZCwgdGhlIHJlc3Qgd2FzIGxvc3QuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0Yjc1MTE0NzhiNjJhNTM5ZTViMDY2ZDE5YTk4NmI3NWU1ZDlhNTI3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIEp1bCAyOCAyMjowNzozNyAyMDA5ICswMjAwCgogICAgRml4IGV4dDJsb2FkIHJldHVybiBjb2RlCgogICAgTWFrZSB0aGUgZXh0MmxvYWQgY29tbWFuZCByZXR1cm4gMCBvbiBzdWNjZXNzIChpbnN0ZWFkIG9mIHRoZSBmaWxlCiAgICBsZW5ndGgpLgoKICAgIEFsc28gZml4IG91dHB1dCBmb3JtYXQgKGdldCByaWQgb2YgcmFuZG9tIG5ld2xpbmVzKSBhbmQgc29tZSBjb2RpbmcKICAgIHN0eWxlIGlzc3VlcyAobG9uZyBsaW5lcyBldGMuKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDU2ZmRhYWRjMTI0YThlZjllYzBmZDhmZjU3ODIzM2VjM2IxMTM3YmUKQXV0aG9yOiBXZWlyaWNoLCBCZXJuaGFyZCA8QmVybmhhcmQuV2VpcmljaEByaWVkZWwubmV0PgpEYXRlOglXZWQgSnVuIDEwIDE0OjAwOjM3IDIwMDkgKzAyMDAKCiAgICBleHQyOiBmaXggaW5vZGUgc2l6ZSBhbmQgY2FsY3VsYXRpb25zCgogICAgU2lnbmVkLW9mZi1ieTogdW5zaWsgS2ltIDxkb25hcmk3NUBnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZXJuaGFyZCBXZWlyaWNoIDxiZXJuaGFyZC53ZWlyaWNoQHJpZWRlbC5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgVGVzdGVkLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGNkNzgyNjM1OWVlNzFlOGY2ZjNkNjgzMzE5MzBhYjljYmUxYzk5MGUKQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CkRhdGU6CVN1biBKdW4gMjggMTI6NTI6MjkgMjAwOSAtMDUwMAoKICAgIFRXTDQwMzAgQWRkIHBvd2VyIHJlc2V0IGJ1dHRvbgoKICAgIFRoZSBab29tMiBwb3dlciByZXNldCBidXR0b24gaXMgb24gdGhlIHRvcCByaWdodCBzaWRlIG9mIHRoZQogICAgbWFpbiBib2FyZC4gIFByZXNzIGFuZCBob2xkIGZvciBhYm91dCB0byA4IHNlY29uZHMgdG8gY29tcGxldGVseQogICAgcmVzZXQgdGhlIGJvYXJkLgoKICAgIFNvbWUgb2YgdGhlIGJldGEgYm9hcmRzIGhhdmUgYSBoYXJkd2FyZSBwcm9ibGVtIHRoYXQgcHJldmVudHMKICAgIHVzaW5nIHRoaXMgZmVhdHVyZS4gIElmIGlzIGRpZmZpY3VsdCB0byBmdXJ0aGVyIGNoYXJhY3Rlcml6ZSB0aGUKICAgIGJvYXJkcyB0aGF0IGZhaWwuICBTbyBkaXNhYmxlIHJlc2V0dGluZyBmb3IgYWxsIGJldGEgYm9hcmRzLgoKICAgIFRoZSBab29tMSByZXNldCBidXR0b24gaXMgdGhlIHJlZCBjaXJjbGUgb24gdGhlIHRvcCByaWdodCwKICAgIGZyb250IG9mIHRoZSBib2FyZC4gIFByZXNzIGFuZCBob2xkIHRoZSBidXR0b24gZm9yIDggc2Vjb25kcyB0bwogICAgY29tcGxldGVseSByZXNldCB0aGUgYm9hcmQuCgogICAgQWZ0ZXIgYW5hbHl6aW5nIGJlYWdsZSwgaXQgd2FzIGRldGVybWluZWQgdGhhdCBvdGhlciBib2FyZHMKICAgIHRoYXQgdXNlIHRoZSB0d2w0MDMwIGZvciBwb3dlciBtYW5hZ21lbnQgY2FuIGFsc28gbWFrZSB1c2UKICAgIHRoaXMgZnVuY3Rpb24uCgogICAgVGhlIHJlc2V0dGluZyBpcyBkb25lIGJ5IHRoZSBwb3dlciBtYW5hZ2VtZW50IHBhcnQgb2YgdGhlIHR3bDQwMzAuCiAgICBTaW5jZSB0aGVyZSBpcyBubyBleGlzdGluZyBkcml2ZXJzL3Bvd2VyLCBhZGQgb25lLgoKICAgIFRoZSBjb21waWxhdGlvbiBvZiBwb3dlci90d2w0MDMwLmggaXMgY29udHJvbGxlZCBieSB0aGUgY29uZmlnCiAgICB2YXJpYWJsZSBDT05GSUdfVFdMNDAzMF9QT1dFUgoKICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KICAgIEFja2VkLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgQWNrZWQtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDg5NjZlYjRjMWMyZDg5NGIyYTc2MTc0YmE5MDRjMjZjNWFmODE1YjgKQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CkRhdGU6CVN1biBKdW4gMjggMTI6NTI6MjggMjAwOSAtMDUwMAoKICAgIFRXTDQwMzAgQWRkIGluaXRpYWwgc3VwcG9ydAoKICAgIFRoZSBUV0w0MDMwIHN1cHBsaWVzIG1hbnkgcGVyaXBoZXJhbHMgZm9yIE9NQVAzIGJvYXJkcy4gVGhlc2UgaW5jbHVkZQogICAgcG93ZXIgbWFuYWdlbWVudCwgdXNiIGFuZCwga2V5Ym9hcmQuCgogICAgVGhlIHByb2R1Y3QgZGVzY3JpcHRpb24gaXMgZm91bmQgaGVyZToKCiAgICBodHRwOi8vZm9jdXMudGkuY29tL2RvY3MvcHJvZC9mb2xkZXJzL3ByaW50L3RwczY1OTUwLmh0bWwKCiAgICBQcm9kdWN0IHJlZmVyZW5jZSBkb2N1bWVudCwgdHBzNjU5NTAucGRmLCBpcyBmb3VuZCBoZXJlOgoKICAgIGh0dHA6Ly93d3cudGkuY29tL2xpdC9ncG4vdHBzNjU5NTAKCiAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CiAgICBBY2tlZC1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIEFja2VkLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCA3Zjc5ZGZiNDhiNzQxOWQ1Y2FhMWNmOTMyZmNmZjRlMmZiNzA0MGFmCkF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgpEYXRlOglTdW4gSnVuIDI4IDEyOjUyOjI3IDIwMDkgLTA1MDAKCiAgICBPTUFQIEkyQyBGaXggdGhlIHNhbXBsaW5nIGNsb2NrLgoKICAgIFRoaXMgcHJvYmxlbSBpcyBzZWVuIG9uIFpvb20xIGFuZCBab29tMiBpbiB0aGUgc3RhcnR1cCBhbmQKICAgIHdoZW4gaTJjIHByb2JlIGlzIHVzZWQKCiAgICBCZWZvcmUgOgoKICAgIEluOiAgICBzZXJpYWwKICAgIE91dDogICBzZXJpYWwKICAgIEVycjogICBzZXJpYWwKICAgIHRpbWVkIG91dCBpbiB3YWl0X2Zvcl9iYjogSTJDX1NUQVQ9MTAwMAogICAgdGltZWQgb3V0IGluIHdhaXRfZm9yX2JiOiBJMkNfU1RBVD0xMDAwCiAgICB0aW1lZCBvdXQgaW4gd2FpdF9mb3JfYmI6IEkyQ19TVEFUPTEwMDAKICAgIHRpbWVkIG91dCBpbiB3YWl0X2Zvcl9waW46IEkyQ19TVEFUPTEwMDAKICAgIEkyQyByZWFkOiBJL08gZXJyb3IKICAgIHRpbWVkIG91dCBpbiB3YWl0X2Zvcl9iYjogSTJDX1NUQVQ9MTAwMAogICAgdGltZWQgb3V0IGluIHdhaXRfZm9yX2JiOiBJMkNfU1RBVD0xMDAwCiAgICBEaWUgSUQgIzMyN2MwMDAyMDAwMDAwMDAwNDAxM2RkZDA1MDI2MDEzCiAgICBIaXQgYW55IGtleSB0byBzdG9wIGF1dG9ib290OiAgMAogICAgT01BUDMgWm9vbTEjIGkyYyBwcm9iZQogICAgVmFsaWQgY2hpcCBhZGRyZXNzZXM6dGltZWQgb3V0IGluIHdhaXRfZm9yX2JiOiBJMkNfU1RBVD0xMDAwCiAgICAgMDIgMDMgMDQgMDUgMDYgMDcgMDggMDkgMEEgMEIgMEMgMEQgPHNuaXA+CgogICAgQWZ0ZXIgOgoKICAgIEluOiAgICBzZXJpYWwKICAgIE91dDogICBzZXJpYWwKICAgIEVycjogICBzZXJpYWwKICAgIERpZSBJRCAjMzI3YzAwMDIwMDAwMDAwMDA0MDEzZGRkMDUwMjYwMTMKICAgIEhpdCBhbnkga2V5IHRvIHN0b3AgYXV0b2Jvb3Q6ICAwCiAgICBPTUFQMyBab29tMSMgaTJjIHByb2JlCiAgICBWYWxpZCBjaGlwIGFkZHJlc3NlczogNDggNDkgNEEgNEIKCiAgICBUaGUgYWRkcmVzc2VzIGFyZSBmb3IgdGhlIHR3bDQwMzAuCgogICAgVGhlIHByZXNjYWxhciB0aGF0IGNvbnZlcnRzIHRoZSBmdW5jdGlvbiBjbG9jayB0byB0aGUgc2FtcGxpbmcKICAgIGNsb2NrIGlzIGhhcmRjb2RlZCB0byAwLiAgVGhlIHJlZmVyZW5jZSBtYW51YWwgcmVjb21tZW5kcyA3CiAgICBpZiB0aGUgZnVuY3Rpb24gY2xvY2sgaXMgOTZNSHouCgogICAgSW5zdGVhZCBvZiBqdXN0IGNoYW5naW5nIHRoZSBoYXJkY29kZWQgdmFsdWVzLCB0aGUgcHJlc2NhbGFyCiAgICBpcyBjYWxjdWxhdGVkIGZyb20gdGhlIHZhbHVlIEkyQ19JUF9DTEsuCgogICAgVGhlIGkyYyAjZGVmaW5lcyBhcmUgaW4ga0h6LiAgVGhlIHNwZWVkIHBhc3NlZCBpbnRvIHRoZQogICAgaTJjIGluaXQgcm91dGluZSBpcyBpbiBIei4JVG8gYmUgY29uc2lzdGVudCwgY2hhbmdlIHRoZQogICAgZGVmaW5lcyB0byBiZSBpbiBIei4KCiAgICBUaGUgdGltaW5nIGNhbGN1bGF0aW9ucyBhcmUgYmFzZWQgb24gd2hhdCBpcyBkb25lIGluIHRoZQogICAgbGludXggMi42LjMwIGtlcm5lbCBpbiBkcml2ZXJzL2kyYy9idXNlcy9pMmNfb21hcC5jIGFzCiAgICBhcHBvc2VkIHRvIHdoYXQgaXMgZG9uZSBpbiBUUk0uCgogICAgVGhlIG1ham9yIHZhcmlhYmxlcyBpbiB0aGUgdGltaW5nIGNhY3VsYXRpb25zIGFyZQogICAgc3BlY2lmaWVkIGFzICNkZWZpbmVzIHRoYXQgY2FuIGJlIG92ZXJyaWRlbiBhcyByZXF1aXJlZC4KCiAgICBUaGUgdmFyaWFibGVzIGFuZCB0aGVpciBkZWZhdWx0cyBhcmUKCiAgICBJMkNfSVBfQ0xLCQkJCVNZU1RFTV9DTE9DS185NgogICAgSTJDX0lOVEVSTkFMX1NBTVBMSU5HX0NMSwkJMTkyMDAwMDAKICAgIEkyQ19GQVNUU1BFRURfU0NMTF9UUklNCQkJNgogICAgSTJDX0ZBU1RTUEVFRF9TQ0xIX1RSSU0JCQk2CiAgICBJMkNfSElHSFNQRUVEX1BIQVNFX09ORV9TQ0xMX1RSSU0JSTJDX0ZBU1RTUEVFRF9TQ0xMX1RSSU0KICAgIEkyQ19ISUdIU1BFRURfUEhBU0VfT05FX1NDTEhfVFJJTQlJMkNfRkFTVFNQRUVEX1NDTEhfVFJJTQogICAgSTJDX0hJR0hTUEVFRF9QSEFTRV9UV09fU0NMTF9UUklNCUkyQ19GQVNUU1BFRURfU0NMTF9UUklNCiAgICBJMkNfSElHSFNQRUVEX1BIQVNFX1RXT19TQ0xICQlJMkNfRkFTVFNQRUVEX1NDTEhfVFJJTQoKICAgIFRoaXMgd2FzIHJ1bnRpbWUgdmVyaWZpZWQgb24gWm9vbTEsIFpvb20yLCBCZWFnbGUgYW5kIE92ZXJvLgogICAgVGhlIDQwMGtIeiBhbmQgMy40TSBjYXNlcyB3ZXJlIHZlcmlmZWQgb24gdGVzdCBab29tMSwKICAgIFpvb20yLCBCZWFnbGUgYW5kIE92ZXJvIGNvbmZpZ3VyYXRpb25zLgoKICAgIFRlc3RpbmcgZm9yIG9tYXAyIHdpbGwgYmUgZG9uZSBpbiBhIHNlY29uZCBzdGVwIGFzIE5pc2hhbnRoCiAgICBhbmQgSmVhbi1DaHJpc3RvcGhlIGNvbW1lbnRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CiAgICBBY2tlZC1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIEFja2VkLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCA0Y2U1YTcyODUxZmYyOTYwNTQzYjEyNTg2NmM2MTMyZTAwOTRlMWVlCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CU1vbiBKdWwgMjAgMDk6NTk6MzcgMjAwOSArMDIwMAoKICAgIGFybSwgaTJjOiBhZGRlZCBzdXBwb3J0IGZvciB0aGUgVFdTSSBJMkMgSW50ZXJmYWNlCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgMDQyZDAxYzcyZTBlYTk1NzMxNzA4ZGQyNGJiOGI2Y2Y0MmU3NWM4MApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIEp1bCAyNyAwOToxMzozOCAyMDA5ICswMjAwCgogICAgcHBjNHh4OiBGaXggcHJvYmxlbSB3aXRoIE5PUiByYW5nZSBhc3NpZ25tZW50IGluIENhbnlvbmxhbmRzIGZ0X2JvYXJkX3NldHVwCgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgcHJvYmxlbSwgdGhhdCB0aGUgY3VycmVudCBmZHQgYm9hcmQgZml4dXAgY29kZSBvbmx5CiAgICBzZXQncyBvbmUgcmFuZ2UsIHRoZSBvbmUgZm9yIE5PUi4gQnkgdGhpcyBpdCdzIG92ZXJ3cml0aW5nIHRoZSBhbHJlYWR5CiAgICBjb3JyZWN0bHkgY29uZmlndXJlZCB2YWx1ZXMgZG9uZSBpbiBfX2Z0X2JvYXJkX3NldHVwKCkuIEp1c3QgcmVtb3ZlIHRoaXMKICAgIG5vdyB1bm5lZWRlZCBOT1IgZml4dXAgYW5kIGFsbCB0aGUgcmFuZ2VzIGFyZSBjb3JyZWN0bHkgZGVmaW5lZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBDYzogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KICAgIENjOiBGZWxpeCBSYWRlbnNreSA8ZmVsaXhAZW1iZWRkZWQtc29sLmNvbT4KCmNvbW1pdCAxMWExNjA0ZjhkMGE4ZDkzNmI0MmY2NDM1ZDAwNGI0YWEzM2E1ZDg3CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gSnVsIDI3IDA3OjQyOjQ4IDIwMDkgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBzb21lIE5BTkQtYm9vdGluZyBib290c3RyYXAgZW50cmllcyB0byBLaWxhdWVhIGNoaXBfY29uZmlnIGNtZAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzb21lIEkyQyBib290c3RyYXAgc2V0dGluZyBmb3IgTkFORCBib290aW5nIHRvIHRoZSBLaWxhdWVhCiAgICBjaGlwX2NvbmZpZyBjb21tYW5kICgiNTMzLW5hbmQiIGFuZCAiNjAwLW5hbmQiKS4KCiAgICBBZGRpdGlvbmFsbHkgc29tZSBpbmNvcnJlY3RseSBpbmRlbnRlZCBsaW5lcyBhcmUgZml4ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDViMzQ2OTFmZjg3ODIxODkxMzc1YjI4ZWM1YmNmNTE1NDU3NWE3MzUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBKdWwgMjcgMDc6NDI6MzcgMjAwOSArMDIwMAoKICAgIHBwYzR4eDogS2lsYXVlYTogRml4IFNEUkFNIGluaXQgaW4gTkFORCBib290aW5nIHZlcnNpb24KCiAgICBERFIyIEF1dG8tY2FsaWJyYXRpb24gbmVlZHMgdG8gYmUgZGlzYWJsZWQgb24gdGhlIE5BTkQgYm9vdGluZyBQUEM0eHgKICAgIHRhcmdldHMuIE90aGVyd2lzZSB0aGUgY29uZmlndXJlZCBmaXhlZCBpbml0IHZhbHVlcyBmb3Igc29tZSBERFIyCiAgICBjb250cm9sbGVyIHJlZ2lzdGVycyAoZS5nLiBSUURDKSBhcmUgbm90IGluaXRpYWxpemVkIGF0IGFsbCByZXN1bHRpbmcKICAgIGluIGEgbm9uIHdvcmtpbmcgU0RSQU0uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGYzZWQzYzliNzQ0MWNkZTkzNmQwNmExZmY3YjE0OTBmZjBkNjAwZTYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBKdWwgMjcgMTA6NTM6NDMgMjAwOSArMDIwMAoKICAgIHBwYzR4eDogRml4IEFyY2hlcyBERFIyIGluaXRpYWxpemF0aW9uCgogICAgVGVzdGluZyBvbiBBTUNDIEFyY2hlcyB3aXRoIHRoZSBsYXRlc3QgVS1Cb290IHZlcnNpb24geWllbGRlZCB0aGF0IEREUjIKICAgIGluaXRpYWxpemF0aW9uIGlzIGN1cnJlbnRseSBicm9rZW4uIFUtQm9vdCBoYW5ncyB1cG9uIHJlbG9jYXRpb24gdG8gU0RSQU0KICAgIG9yIGNyYXNoZXMgd2l0aCByYW5kb20gdHJhcHMuIFRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBwcm9ibGVtLiBBcmNoZXMgbm93CiAgICB1c2VzIGEgZGlmZmVyZW50IFdSRFRSIGFuZCBDTEtUUiBkZWZhdWx0IHNldHRpbmcgdGhhbiBDYW55b25sYW5kcy9HbGFjaWVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhYjRjNjJjMWJhNzg4YmY3ZjY3M2E5ODVkOTlhNzZkOWMyZmQ3ZWNhCkF1dGhvcjogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KRGF0ZToJTW9uIEp1bCAyNyAwODo0OTo0OCAyMDA5ICswMjAwCgogICAgcHBjNHh4OiBBZGQgR0RzeXMgQ29tcGFjdENlbnRlciBib2FyZCBzdXBwb3J0LgoKICAgIEJvYXJkIHN1cHBvcnQgZm9yIHRoZSBHdW50ZXJtYW5uICYgRHJ1bmNrIENvbXBhY3RDZW50ZXIgYW5kCiAgICBEZXZDb24tQ2VudGVyLgogICAgQmFzZWQgb24gdGhlIEFNQ0MgQ2FueW9ubGFuZHMgYm9hcmQgc3VwcG9ydCBieSBTdGVmYW4gUm9lc2UuCgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjMmU0OWY3MDZiYTEzMjEzZjNjOGRhM2EzM2U4ODAxMDIxNGUxOTk3CkF1dGhvcjogUmVpbmhhcmQgQXJsdCA8cmVpbmhhcmQuYXJsdEBlc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglTYXQgSnVsIDI1IDA2OjE5OjEyIDIwMDkgKzAyMDAKCiAgICBtcGM4M3h4OiBBZGQgZXNkIFZNRTgzNDkgYm9hcmQgc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgZXNkIFZNRTgzNDkgYm9hcmQgZXF1aXBwZWQgd2l0aCB0aGUKICAgIE1QQzgzNDkuIEl0J3MgYSBWTUUgUE1DIGNhcnJpZXIgYm9hcmQgZXF1aXBwZWQgd2l0aCB0aGUgVHVuZHJhCiAgICBUU0kxNDggVk1FLWJyaWRnZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSZWluaGFyZCBBcmx0IDxyZWluaGFyZC5hcmx0QGVzZC1lbGVjdHJvbmljcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGZlNjEzY2RkNGViMmM1YjI1N2E2MGQ4ZGZiNzc1OTc0MjMxOGMyOGEKQXV0aG9yOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KRGF0ZToJVGh1IEp1bCAyMyAxNzoxMDo1NSAyMDA5IC0wNDAwCgogICAgc2JjODM0OTogY29tYmluZSBIUkNXIGZsYXNoIGFuZCB1LWJvb3QgaW1hZ2UgZmxhc2gKCiAgICBVcCB0byB0aGlzIHBvaW50IGluIHRpbWUsIHRoZSBzYmM4MzQ5IGJvYXJkIHdhcyBzdG9yaW5nIHRoZSB1LWJvb3QKICAgIGltYWdlIGluIGZsYXNoIDJ4LglPbmUgZm9yIHRoZSBIUkNXIHZhbHVlIGF0IHRoZSBiZWdpbm5pbmcgb2YKICAgIGZsYXNoICgweGZmODBfMDAwMCksIGFuZCBvbmNlIGNsb3NlIHRvIHRoZSBlbmQgb2YgZmxhc2ggKDB4ZmZmOF8wMDAwKQogICAgZm9yIHRoZSBhY3R1YWwgaW1hZ2UgdGhhdCBnb3QgZXhlY3V0ZWQuCgogICAgVGhpcyBtb3ZlcyB0aGUgVEVYVF9CQVNFIHRvIGJlIHRoZSBiZWdpbm5pbmcgb2YgZmxhc2gsIHdoaWNoIG1ha2VzCiAgICB0aGUgc2Vjb25kIGNvcHkgb2YgdGhlIGltYWdlIHJlZHVuZGFudCwgYW5kIGZyZWVzIHVwIHRoZSBmbGFzaAogICAgZnJvbSB0aGUgZW5kIG9mIHRoZSBlbnZpcm9ubWVudCBzdG9yYWdlIHRvIHRoZSBlbmQgb2YgdGhlIGZsYXNoCiAgICBkZXZpY2UgaXRzZWxmLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiZTliNTZkZjAyMTY4Y2E5NzU2MmQ2YjllYzc5MTEzNmU0Y2Q5MjVhCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1bCAyMyAxNDowOTozOCAyMDA5IC0wNTAwCgogICAgbXBjODN4eDogQ09ORklHXzgzWFhfR0VORVJJQ19QQ0kgaXMgbm93IHN5bm9ueW1vdXMgd2l0aCBDT05GSUdfUENJOyByZW1vdmUgdGhlIGZvcm1lcgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTQ5NzhlMTlmMzFkMjI1YjRmN2Q5N2M0YWNiYWMxZWNmYWViOGY2OQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBKdWwgMjcgMTA6Mzc6MzcgMjAwOSArMDIwMAoKICAgIFByZXBhcmUgMjAwOS4wOC1yYzEgKGFnYWluLCBhZnRlciBmaXhpbmcgbGFzdCBtaW51dGUgaXNzdWVzKS4KCiAgICBVcGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA5Njg5ZGRjY2E2ZTAxZjM2MzdiNDQ0MmZhODU3NWYyOWVmNGQ3YWEzCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIEp1bCAyNyAxMDowNjozOSAyMDA5ICswMjAwCgogICAgY3B1L2FybTkyMHQvc3RhcnQuUzogaW5jbHVkZSA8Y29tbW9uLmg+IHRvIGhhdmUgUk9VTkQoKSBkZWZpbmVkCgogICAgQ29tbWl0IGZjZDNjODdlIG1hZGUgaW5jbHVkZS9jb21tb24uaCB1c2FibGUgYnkgYXNzZW1ibGVyIGNvZGUgYnV0CiAgICBmYWlsZWQgdG8gdXBkYXRlIGNwdS9hcm05MjB0L3N0YXJ0LlMKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGM5ZWQzOGNiNmRlNTBmZGI0YWFhNjBiNjY4YzU1NTAwMjkwM2IyMTEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gSnVsIDI3IDEwOjAxOjExIDIwMDkgKzAyMDAKCiAgICBhdDkxY2FwOWFkazogZml4ICNpZmRlZi8jZW5kaWYgcGFpcmluZyAoMm5kIHRyeSkKCiAgICBDb21taXQgNzAyNGFhMTQgd2FzIHN1cHBvc2VkIHRvIGZpeCB0aGUgI2lmZGVmLyNlbmRpZiBwYWlyaW5nIGluCiAgICBpbmNsdWRlL2NvbmZpZ3MvYXQ5MWNhcDlhZGsuaCwgYnV0IGRpZCBub3QgY2F0ZSBhbGwgcHJvYmxlbXMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBmYjM2NGJlYzVmMjkxNjRkM2VlNjgxZmNkOWQxODdiZTg0MzVkYjEyCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIEp1bCAyNyAwOTo1ODoxNCAyMDA5ICswMjAwCgogICAgRml4IGluY2x1ZGUvY29tbW9uLmggZm9yIGJvYXJkcyB3aXRoIENPTkZJR19TVEFUVVNfTEVECgogICAgVGhlIHJlb3JkZXJpbmcgb2YgaW5jbHVkZS9jb21tb24uaCBieSBjb21taXQgZmNkM2M4N2U0OTVmM2M0OCBicm9rZQogICAgYm9hcmRzIHdpdGggc3RhdHVzIExFRCBzdXBwb3J0LCByZXN1bHRpbmcgaW4KCWVycm9yOiAjZXJyb3IgU3RhdHVzIExFRCBjb25maWd1cmF0aW9uIG1pc3NpbmcKICAgIGVycm9ycy4gVW5kbyB0aGlzIHJlb3JkZXJpbmcgdG8gYXZvaWQgdGhpcyBpc3N1ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDk0MjgyOGEwOTgwYjNjZWE3ZGI2OTg3ODRjYzdmNmEzZTc3NDBiMmIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gSnVsIDI3IDA5OjE5OjE1IDIwMDkgKzAyMDAKCiAgICBBQkk6IGZpeCBidWlsZCBwcm9ibGVtcyBkdWUgdG8gbm93IG5lZWRlZCBkaXY2NCByb3V0aW5lLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgODVkNmJmMGJkYzhjY2FkMmQ2N2E5MTYwNDcyZjZmOGM2YmI0ODJmYgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBKdWwgMjcgMDg6NTA6NTkgMjAwOSArMDIwMAoKICAgIFBNQzQwNURFOiBmaXggb3V0IG9mIHRyZWUgYnVpbGRpbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDEwYzc2MDRkMDIxOTQ5NDY0YjFlNGJhOTAzZGY5NWU2YjJmMGQyZmYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gSnVsIDI3IDAwOjI0OjU1IDIwMDkgKzAyMDAKCiAgICBQcmVwYXJlIDIwMDkuMDgtcmMxCgogICAgVXBkYXRlIENIQU5HRUxPRywgbWlub3IgY29kaW5nIHN0eWxlIGZpeC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGZhZmJiMmMzZTRiMzViNjBjYTMwM2VkMmFkMWM2Y2Y0MDBjZDlhMjIKQXV0aG9yOiByaGFiYXJiZXIxODQ4QHdlYi5kZSA8cmhhYmFyYmVyMTg0OEB3ZWIuZGU+CkRhdGU6CUZyaSBKdWwgMjQgMDg6MTY6MzAgMjAwOSArMDIwMAoKICAgIGFkZCBXQVRDSERPR19SRVNFVCB0byBhbGxvdyBMWk1BIGtlcm5lbCBkZWNvbXByZXNzaW9uIG9uIHNsb3cgbWFjaGluZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiByaGFiYXJiZXIxODQ4QHdlYi5kZQoKY29tbWl0IDNjOTcyODQ5ZjJiZWNiZjE5YzEzYTI0ZjA5MGQyOTNmMzdlY2Y2MTYKQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG1lbWJlci5mc2Yub3JnPgpEYXRlOglUaHUgSnVsIDIzIDIzOjMxOjU4IDIwMDkgKzAyMDAKCiAgICBMZXNzIHZlcmJvc2Ugb3V0cHV0IHdoZW4gbG9hZGluZyB2eHdvcmtzIDYueCBpbWFnZXMKCiAgICBMb2FkaW5nIHZ4V29ya3MgNS54IGltYWdlcyByZXN1bHRlZCBqdXN0IGludG8gMyBvciA0IGxpbmVzIG9mIG91dHB1dC4KICAgIFdpdGggdnhXb3JrcyA2LnggYW5kIHRoZSBuZXcgR0NDIGl0IGVtaXRzIGFib3V0IDMwIGxpbmVzLCB3aGljaCBpcwogICAgZmFyIHRvbyBub2lzeSBpbiBteSBvcGluaW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbWVtYmVyLmZzZi5vcmc+Cgpjb21taXQgZmNkM2M4N2U0OTVmM2M0OGI3MGM5MTk4NjlmYjFlMGI5M2Q0ODgwYgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBKdWwgMjQgMDA6MTc6NDggMjAwOSArMDIwMAoKICAgIE1ha2UgaW5jbHVkZS9jb21tb24uaCB1c2FibGUgYnkgYXNzZW1ibGVyIGNvZGUKCiAgICBDb21taXQgNzBlYmYzMTYgZmFjdG9yZWQgb3V0IHRoZSBST1VORCgpIG1hY3JvIGludG8gaW5jbHVkZS9jb21tb24uaCwKICAgIG5vdCByZWFsaXppbmcgdGhhdCB0aGUgcHJpbWFyeSB1c2Ugb2YgdGhpcyBtYWNybyBvbiBBVDkxIHN5c3RlbXMgd2FzCiAgICBpbiBzdGFydC5TIHdoZXJlIGNvbW1vbi5oIHdhcyBub3QgaW5jbHVkZWQsIGFuZCBjb3VsZCBub3QgYmUgaW5jbHVkZWQKICAgIGJlY2F1c2UgaXQgY29udGFpbnMgYSBsb3Qgb2YgQyBjb2RlIHdoaWNoIHRoZSBhc3NlbWJsZXIgZG9lc24ndAogICAgdW5kZXJzdGFuZC4KCiAgICBUaGlzIHBhdGNoIHdyYXBzIHN1Y2ggY29kZSBpbiBjb21tb24uaCBpbiBhICIjaWZuZGVmIF9fQVNTRU1CTFlfXyIKICAgIGNvbnN0cnVjdCwgYW5kIHRoZW4gYWRkcyBhbiBpbmNsdWRlIHRvIGNwdS9hcm05MjZlanMvc3RhcnQuUyB0aHVzCiAgICBzb2x2aW5nIHRoZSBwcm9ibGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZGVlYzE1YjMwNjRkM2JiMDE4OWFlZGUzYzI5MjFmZDdlZTQwMWEwZgpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoZWlrby5zY2hvY2hlckBpbnZpdGVsLmh1PgpEYXRlOglUaHUgSnVsIDIzIDEzOjI3OjA0IDIwMDkgKzAyMDAKCiAgICBhcm06IGFkZCBfbHNocmRpMy5TCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgNTJiMWJmMmM1Y2QyZjhhZjg4MGRhYjUwM2QwMDM5YjM1NTcwNjY1YgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVRodSBKdWwgMjMgMTM6MTU6NTkgMjAwOSArMDIwMAoKICAgIE1ha2UgbGlua2luZyBhZ2FpbnN0IGxpYmdjYyBjb25maWd1cmFibGUKCiAgICBNYW55IChlc3BlY2lhbGx5IEFSTSkgdG9vbCBjaGFpbnMgc2VlbSB0byBjb21lIHdpdGggYnJva2VuIG9yCiAgICBvdGhlcndpc2UgdW51c2FibGUgKGZvciB0aGUgcHVycG9zZXMgb2YgYnVpbGluZyBVLUJvb3QpIHJ1bi10aW1lCiAgICBzdXBwb3J0IGxpYnJhcmllcyBgbGliZ2NjLmEnLiBCeSB1c2luZyB0aGUgIlVTRV9QUklWQVRFX0xJQkdDQyIKICAgIHNldHRpbmcgd2UgYWxsb3cgdG8gdXNlIGFsdGVybmF0aXZlIGxpYnJhcmllcyBpbnN0ZWFkLgoKICAgICJVU0VfUFJJVkFURV9MSUJHQ0MiIGNhbiBlaXRoZXIgYmUgc2V0IGFzIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIGluCiAgICB0aGUgc2hlbGwsIG9yIGFzIGEgY29tbWFuZCBsaW5lIGFyZ3VtZW50IHdoZW4gcnVubmluZyAibWFrZSIsIGkuIGUuCgkkIG1ha2UgVVNFX1BSSVZBVEVfTElCR0NDPXllcwogICAgb3IKCSQgVVNFX1BSSVZBVEVfTElCR0NDPXllcwoJJCBleHBvcnQgVVNFX1BSSVZBVEVfTElCR0NDCgkkIG1ha2UKCiAgICBUaGUgdmFsdWUgb2YgIlVTRV9QUklWQVRFX0xJQkdDQyIgaXMgdGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB3aGljaAogICAgY29udGFpbnMgdGhlIGFsdGVybmF0aXZlIHJ1bi10aW1lIHN1cHBvcnQgbGlicmFyeSBgbGliZ2NjLmEnLiBUaGUKICAgIHNwZWNpYWwgdmFsdWUgInllcyIgc2VsZWN0cyB0aGUgZGlyZWN0b3J5ICQoT0JKVFJFRSkvbGliXyQoQVJDSCkgLgoKICAgIE5vdGUgdGhhdCBub3QgYWxsIGFyY2hpdGVjdHVyZXMgcHJvdmlkZSBhbiBhbHRlcm5hdGl2ZSBgbGliZ2NjLmEnIGluCiAgICB0aGVpciBsaWJfJChBUkNIKSBkaXJlY3RvcmllcyAtIHNvIGZhciwgb25seSBBUk0gZG9lcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgQ2M6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CiAgICBDYzogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgogICAgY2M6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0NzkxMDUwNjVkOTY1MTIxZjU3YjU1ZGNmZTgzYTk0MGNiYTQ2YWMxCkF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KRGF0ZToJV2VkIEp1bCAyMiAxNzo1MTo1NiAyMDA5ICswMjAwCgogICAgVXNlIGRvX2RpdiBmcm9tIGRpdjY0LmggZm9yIHZzcHJpbnRmCgogICAgVXNlIGRvX2RpdiBmcm9tIGRpdjY0LmggZm9yIHZzcHJpbnRmIGluIGNhc2Ugb2YgNjRiaXQgZGl2aXNpb24uCiAgICBGb3IgMzJiaXQgZGl2aXNpb24sIGRvX2RpdiBmcm9tIGRpdjY0LmggY2FuJ3QgYmUgdXNlZCBhcyBpdAogICAgbmVlZHMgYSA2NGJpdCBwYXJhbWV0ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBDQzogU2ltb24gS2Fnc3Ryb20gPHNpbW9uLmthZ3N0cm9tQG5ldGluc2lnaHQubmV0PgoKY29tbWl0IDQ4Mjg3NzkyMzg0YTkzZDc3ZDQzYWFhYTFjMDZjYWMyNzViYmUxYmIKQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxrbXBhcmtAaW5mcmFkZWFkLm9yZz4KRGF0ZToJTW9uIEp1bCAyMCAwOTo0Nzo0NyAyMDA5ICswOTAwCgogICAgRml4IGNvbXBpbGVyIHdhcm5pbmdzIGFmdGVyIGxvZmZfdCBjaGFuZ2UKCiAgICBOb3cgJ2Vudl9hZGRyJyB0eXBlIGlzIGxvZmZfdCBzbyB1c2UgY29ycmVjdCBmaWVsZCB0eXBlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Cgpjb21taXQgOWM2NzM1MmY3MjdhNWI1ZWZmNTMxYzg1MmY5Y2ZmNTlmY2IxN2Y3ZgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBKdWwgMjYgMjM6Mjg6MDIgMjAwOSArMDIwMAoKICAgIFJldmVydCAicHBjOiBVbmxvY2sgY2FjaGUtYXMtcmFtIGluIGEgY29uc2lzdGVudCBtYW5uZXIiCgogICAgVGhpcyByZXZlcnRzIGNvbW1pdCA5ODJhZGZjNjEwNjY5NDgyYTMyMTI3MjgyZmU0ODk4NTdhOTJjZmUzLgoKICAgIFRoaXMgcGF0Y2ggY2F1c2VzIHByb2JsZW1zIG9uIE1QQzgzeHggYm9hcmRzIC0gZmxhc2ggcmVjb2duaXRpb24gc3RvcHMKICAgIHdvcmtpbmcuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAzNWNmM2I1N2VhZmUzZWUxZjY5M2UyNDI2N2UwZWNmZWZhYjYwMjUxCkF1dGhvcjogSmVucyBTY2hhcnNpZyA8ZXN3QGJ1cy1lbGVrdHJvbmlrLmRlPgpEYXRlOglGcmkgSnVsIDI0IDEwOjMxOjQ4IDIwMDkgKzAyMDAKCiAgICB1cGRhdGUgdGhlIEVCK01DRi1FVjEyMyBib2FyZCBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCB1cGRhdGVzIHRoZSBzdXBwb3J0IGZvciBFQitNQ0YtRVYxMjMgYm9hcmQgYW5kIG5lZWRzCiAgICB0aGUgW1BBVENIIDEvMiBWM10gbmV3IHZpZGVvIGRyaXZlciBmb3IgYnVzIHZjeGsgZnJhbWVidWZmZXJzCgogICAgKiByZW1vdmUgdGhlIGJvYXJkIGZyYW1lYnVmZmVyIGRyaXZlcgogICAgKiB1c2UgdGhlIGNvbW1vbiBidXNfdmN4ayBmcmFtZWJ1ZmZlciBkcml2ZXIKICAgICogYWRkcyBibXAgc3VwcG9ydAogICAgKiBhZGRzIHNwbGFzaGltYWdlIHN1cHBvcnQKICAgICogZml4IHNlcnZlcmFsIGNvc21ldGljYWwgZXJyb3JzCgogICAgU2lnbmVkLW9mZi1ieTogSmVucyBTY2hhcnNpZyA8ZXN3QGJ1cy1lbGVrdHJvbmlrLmRlPgogICAgW2FndXN0QGRlbnguZGU6IGZpeGVkIHNvbWUgc3R5bGUgaXNzdWVzIGJlZm9yZSBhcHBseWluZ10KICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCAwNDUzOGNkYjc1MmVlZWE4ZmQyM2NmN2FjMzM5NDQzOWYxODlmYjc3CkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglTdW4gSnVsIDI2IDEyOjA1OjI1IDIwMDkgKzAyMDAKCiAgICB2aWRlbzogYnVzX3ZjeGsuYzogZml4IHN0eWxlIGlzc3VlcyBhZGRlZCBieSA1MDIxN2RlZQoKICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCA1MDIxN2RlZWIwNzkxMWQ2ODY3OTBkMzRkNDY4ZWI5YTUyNDVmNjhkCkF1dGhvcjogSmVucyBTY2hhcnNpZyA8ZXN3QGJ1cy1lbGVrdHJvbmlrLmRlPgpEYXRlOglGcmkgSnVsIDI0IDEwOjA5OjAyIDIwMDkgKzAyMDAKCiAgICBuZXcgdmlkZW8gZHJpdmVyIGZvciBidXMgdmN4ayBmcmFtZWJ1ZmZlcnMKCiAgICBUaGlzIHBhdGNoIGFkZHMgYSBuZXcgdmlkZW8gZHJpdmVyCgogICAgKiBhZGRzIGNvbW1vbiBidXNfdmN4ayBmcmFtZWJ1ZmZlciBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZW5zIFNjaGFyc2lnIDxlc3dAYnVzLWVsZWt0cm9uaWsuZGU+CiAgICBbYWd1c3RAZGVueC5kZTogZml4ZWQgbG90cyBvZiBzdHlsZSBpc3N1ZXMgYmVmb3JlIGFwcGx5aW5nXQogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IDYwZTk3NDE5MjQ2ZDBhMzYxNTc1OGFkNmFmNDA2ODBhZWZiNWY3ZjEKQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQGdudWRkLmNvbT4KRGF0ZToJVHVlIEp1bCAyMSAxNDowOTo0NSAyMDA5ICswMjAwCgogICAgbGNkLmg6IGRlZmluZSBleHRlcm4gdmlkaW5mb190IGZvciBhbGwgY2FzZXMKCiAgICBpbmNsdWRlL2xjZC5oIGhhcyBkaWZmZXJlbnQgdmlkaW5mbyBmb3IgZGlmZmVyZW50IHBsYXRmb3JtcywKICAgIGFuZCBzZXZlcmFsIGV4dGVybiBkZWNsYXJhdGlvbiwgYnV0IG9uZSBmb3IgdGhlIGRlZmF1bHQgY2FzZSB3YXMKICAgIG1pc3NpbmcuIFRoaXMgbWFrZXMgdGhlbSBhIHNpbmdsZSBleHRlcm4gZGVjbGFyYXRpb24gZm9yIGV2ZXJ5b25lLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAZ251ZGQuY29tPgoKY29tbWl0IGJjZjBiNTI0ODk1MmM2YjAzMDgxZGM1Y2M0ZmY5ZTBiMjI5OWM1ZmEKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CVN1biBKdWwgMjYgMTE6MDQ6NTkgMjAwOSArMDIwMAoKICAgIG1pbWMyMDAuYzogZml4IHRvbyBsb25nIGxpbmVzIGFkZGVkIGJ5IGY2ODM3OGQ2CgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IGY2ODM3OGQ2MGE5MDVkNDMxNTVmMmU4OWJmODE5OTlkM2M5M2E5MGEKQXV0aG9yOiBNYXJrIEphY2tzb24gPG1wZmotbGlzdEBtaW1jLmNvLnVrPgpEYXRlOglUdWUgSnVsIDIxIDExOjM1OjIyIDIwMDkgKzAxMDAKCiAgICBBZGQgTENEIHN1cHBvcnQgdG8gTUlNQzIwMCBib2FyZAoKICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyB0aGUgTUlNQzIwMCBmaWxlcyB0byBlbmFibGUgdGhlIExDRC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrIEphY2tzb24gPG1wZmpAbWltYy5jby51az4KCmNvbW1pdCA2OWYzMmU2YzI0ZDQxZmNkZjM0N2ZmNjRlOWMxM2IyNTA1OWFjZTU4CkF1dGhvcjogTWFyayBKYWNrc29uIDxtcGZqLWxpc3RAbWltYy5jby51az4KRGF0ZToJVHVlIEp1bCAyMSAxMToxODo0NCAyMDA5ICswMTAwCgogICAgQWRkIDE2Yml0IGNvbG91ciBzdXBwb3J0IGluIGxjZC5oCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIExDRF9DT0xPUjE2IGluIGluY2x1ZGUvbGNkLmguCgogICAgU2lnbmVkLW9mZi1ieTogTWFyayBKYWNrc29uIDxtcGZqQG1pbWMuY28udWs+Cgpjb21taXQgYmRjODczZWEwNjNiOGNjNmQ0NGM2YWI3NDhiNzcyM2E5N2Q4ZDdiMwpBdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KRGF0ZToJU3VuIEp1bCAyNiAxMDozNDo1OCAyMDA5ICswMjAwCgogICAgbGliX2F2cjMyL2JvYXJkLmM6IGZpeCB0b28gbG9uZyBsaW5lIGFkZGVkIGJ5IDcxNmVjZTFkCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IDcxNmVjZTFkZTlhN2Q0M2E2MWQ4Njk4YWM0MWI3MWI2NGY2NmY5ZTkKQXV0aG9yOiBNYXJrIEphY2tzb24gPG1wZmotbGlzdEBtaW1jLmNvLnVrPgpEYXRlOglUdWUgSnVsIDIxIDExOjExOjM3IDIwMDkgKzAxMDAKCiAgICBBZGQgQVZSMzIgTENEIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEFWUjMyIExDRCBjb250cm9sbGVyLiAgVGhpcyBwYXRjaCBpcwogICAgYmFzZWQgb2ZmIHRoZSBsYXRlc3QgdS1ib290LXZpZGVvLgoKICAgIEEgcXVpY2sgc3VtbWFyeSBvZiB3aGF0J3MgZ29pbmcgb246LQoKICAgIEVuYWJsZSBMQ0RDIHBpeGVsIGNsb2NrCiAgICBFbmFibGUgTENEQyBwb3J0IHBpbnMKICAgIEFkZCBmcmFtZWJ1ZmZlciBwb2ludGVyIHRvIGdsb2JhbF9kYXRhIHN0cnVjdAogICAgQWxsb2NhdGUgZnJhbWVidWZmZXIKCiAgICBUbyB1c2UgdGhlIG5ldyBjb2RlLCB1cGRhdGUgeW91ciBib2FyZCBjb25maWcgdG8gaW5jbHVkZSBzb21ldGhpbmcgbGlrZQogICAgdGhpczotCgogICAgI2RlZmluZSBDT05GSUdfTENECQkJMQoKICAgICNpZiBkZWZpbmVkKENPTkZJR19MQ0QpCiAgICAjZGVmaW5lIENPTkZJR19DTURfQk1QCiAgICAjZGVmaW5lIENPTkZJR19BVE1FTF9MQ0QJCTEKICAgICNkZWZpbmUgTENEX0JQUAkJCQlMQ0RfQ09MT1IxNgogICAgI2RlZmluZSBDT05GSUdfQk1QXzE2QlBQCQkxCiAgICAjZGVmaW5lIENPTkZJR19GQl9BRERSCQkJMHgxMDYwMDAwMAogICAgI2RlZmluZSBDT05GSUdfV0hJVEVfT05fQkxBQ0sJCTEKICAgICNkZWZpbmUgQ09ORklHX1ZJREVPX0JNUF9HWklQCQkxCiAgICAjZGVmaW5lIENPTkZJR19TWVNfVklERU9fTE9HT19NQVhfU0laRQkJMjYyMTQ0CiAgICAjZGVmaW5lIENPTkZJR19BVE1FTF9MQ0RfQkdSNTU1CQkxCiAgICAjZGVmaW5lIENPTkZJR19TWVNfQ09OU09MRV9JU19JTl9FTlYJMQogICAgI2RlZmluZSBDT05GSUdfU1BMQVNIX1NDUkVFTgkJMQogICAgI2VuZGlmCgogICAgVGhlIHN0YW5kYXJkIFUtQm9vdCBCTVAgYW5kIFNwbGFzaC1zY3JlZW4gZmVhdHVyZXMgc2hvdWxkIGp1c3Qgd29yay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrIEphY2tzb24gPG1wZmpAbWltYy5jby51az4KICAgIFthZ3VzdEBkZW54LmRlOiBmaXhlZCBzb21lIHN0eWxlIGlzc3Vlc10KICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCA2MTExNzIyYTkyODFjNmUwNGE3MzA0ZDUwMjU1NmFmZmY2YTVhMWY4CkF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUBnbnVkZC5jb20+CkRhdGU6CVN1biBKdWwgMTkgMTc6NTI6MjcgMjAwOSArMDIwMAoKICAgIHZpZGVvOiBtb3ZlIGV4dGVybiBkZWNsYXJhdGlvbnMgZnJvbSBDIHRvIGhlYWRlcnMKCiAgICBUaGlzIG1vdmVzIHNvbWUgZXh0ZXJuIGRlY2xhcmF0aW9uIGZyb20gbGNkLmMgdG8gbGNkLmgsIHJlbW92aW5nCiAgICB1bm5lZWRlZCBpZmRlZiBhcm91bmQgYSBwYWlyIG9mIHRoZW0uICBBZGRpdGlvbmFsbHksIHNpbmNlCiAgICBndW56aXBfYm1wKCkgd2FzIGRlY2xhcmVkIHN0YXRpYyBpbiBjbWRfYm1wLmMgYnV0IGV4dGVybiBpbiBsY2QuYywgSQogICAgcmVtb3ZlZCB0aGUgc3RhdGljLiAgVGhlIGV4dHJhICIjaW5jbHVkZSA8bGNkLmg+IiBpbiBjbWRfYm1wLmMgaXMKICAgIGFkZGVkIHRvIGVuc3VyZSB0aGUgaGVhZGVyIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgc291cmNlLgoKICAgIFRoaXMgaGFzIGJlZW4gY29tcGlsZS10ZXN0ZWQgb24gYm90aCBBUk0gKGF0OTEgYm9hcmRzKSBhbmQgUG93ZXJQQwogICAgKEhINDA1X2NvbmZpZywgVFFNODIzTF9MQ0RfY29uZmlnLCBtY2MyMDBfY29uZmlnKSwgdG8gdGVzdCBhbGwgdXNlCiAgICBjb21iaW5hdGlvbnMuCgogICAgU2lnbmVkLW9mZi1ieTogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUBnbnVkZC5pdD4KICAgIFthZ3VzdEBkZW54LmRlOiByZW1vdmVkIGd1bnppcF9ibXAoKSBmaXhlcyBhcyBjb21taXQgYzAxMTcxZWEgZGlkIGl0XQogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IGY1MWUwMDExNDNjNTg0NDdlYjUwZTdhZWZhMmIwOWViNGNjMTQxMGMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBKdWwgMjMgMTY6MjY6NTggMjAwOSAtMDQwMAoKICAgIEJsYWNrZmluOiByZXN0b3JlIEVWVDEgaGFuZGxpbmcgaW4gbGlua2VyIHNjcmlwdAoKICAgIFNhZGx5LCB0aGUgQmxhY2tmaW4gbGlua2VyIHNjcmlwdCB1bmlmaWNhdGlvbiBsb3N0IGEgc21hbGwgI2lmZGVmIGxvZ2ljCiAgICBuZWVkZWQgb24gb2xkZXIgcGFydHMuICBSZXN0b3JlIHRoYXQgQ09ORklHX0JGSU5fQk9PVFJPTV9VU0VTX0VWVDEgbG9naWMuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGYzM2IzMjVhZjY2NmIxMmVhZmE5YWIyMzViMmNkNTk4MzJkNmU1MWMKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgSnVsIDI0IDE0OjI0OjA3IDIwMDkgKzAyMDAKCiAgICBSZXZlcnQgInpsaWI6IHVwZGF0ZWQgdG8gdi4xLjIuMyIKCiAgICBUaGlzIHJldmVydHMgY29tbWl0IGIyMDExNzFmMmI0ZDUwOWYzYWQ1MTBiMjE0YmVlNzBmZjkwMmUzZDYuCgogICAgVGhlIGNvbW1pdCBjYXVzZWQgcHJvYmxlbXMgZm9yIGV4YW1wbGUgd2hlbiB1bnBhY2tpbmcga2VybmVsIGltYWdlczoKCgkgICBVbmNvbXByZXNzaW5nIEtlcm5lbCBJbWFnZSAuLi4gRXJyb3I6IGluZmxhdGUoKSByZXR1cm5lZCAtMgoJICAgR1VOWklQOiB1bmNvbXByZXNzLCBvdXQtb2YtbWVtIG9yIG92ZXJ3cml0ZSBlcnJvciAtIG11c3QKCSAgIFJFU0VUIGJvYXJkIHRvIHJlY292ZXIKCiAgICBDb25mbGljdHM6CgoJaW5jbHVkZS91LWJvb3QvemxpYi5oCglsaWJfZ2VuZXJpYy96bGliLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDRiMTM4OWUwY2ViMTllOWI1MGI5NmZkMzkwODQ4M2E2YzIyNzRmYjAKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBKdWwgMjEgMTQ6MDY6MjkgMjAwOSArMDIwMAoKICAgIHBwYzR4eDogQWRkIGNoaXBfY29uZmlnIGNvbW1hbmQgdG8gQU1DQyBLaWxhdWVhIGV2YWwgYm9hcmQKCiAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlICJhbHRlcnBsbCIgY29tbWFuZCBhbmQgcmVwbGFjZXMgaXQgd2l0aCB0aGUgbm93CiAgICBwcGM0eHggc3RhbmRhcmQgImNoaXBfY29uZmlnIiBjb21tYW5kIHRvIGNvbmZpZ3VyZSB0aGUgSTJDIGJvb3RzdHJhcAogICAgRUVQUk9NLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmNmFmOGNlMGM4MDMyN2NiNmFhYTM0NzY0MjAyNmFkODM4MzM1YzIzCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgSnVsIDIxIDE0OjMzOjUyIDIwMDkgKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBFRVBST00gY29uZmlndXJhdGlvbiBvbiBLaWxhdWVhCgogICAgS2lsYXVlYSBoYXMgYW4gQVQyNEMwMiBFRVBST00gd2hpY2ggaGFzIGFuIDggYnl0ZSBwYWdlLiBXaXRob3V0IGRlZmluaW5nCiAgICBDT05GSUdfU1lTX0VFUFJPTV9QQUdFX1dSSVRFX0JJVFMgdG8gMyB0aGUgImVlcHJvbSIgY29tbWFuZCBkb2Vzbid0CiAgICB3b3JrIGNvcnJlY3RseS4KCiAgICBBZGRpdGlvbmFsbHkgdGhlIHBhZ2Ugd3JpdGUgZGVsYXkgKENPTkZJR19TWVNfRUVQUk9NX1BBR0VfV1JJVEVfREVMQVlfTVMpCiAgICBpcyBzZXQgdG8gYSBtb3JlIGRlZmVuc2l2ZSB2YWx1ZSBvZiAxMG1zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5OWQ4YjIzYmM3ZTJiZTA0ZmNiZjQ5YzVjZWM5ZjVhZTc2ZGYyOTBjCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KRGF0ZToJV2VkIEp1bCAyMiAxMzo1NjoyMSAyMDA5ICswMjAwCgogICAgcHBjNHh4OiBBZGQgNDA1RVAgYmFzZWQgUE1DNDA1REUgYm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGRhNzk5ZjY2YWQxZDRmYzM2ZGQyMGNjMmQ3ZTU4NDQ5M2ZkYTg1NDYKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgpEYXRlOglNb24gSnVsIDIwIDEyOjE1OjM4IDIwMDkgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBzdHJ1Y3QgZm9yIDR4eCBHUElPIGNvbnRyb2xsZXIgcmVnaXN0ZXJzCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1OGVhMTQyZmIyZTk2OWYzMjMwNmM4ZGExZGFiZmFlYmQ2ZmExNDFhCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KRGF0ZToJV2VkIEp1bCAyMiAxNzoyNzo1NiAyMDA5ICswMjAwCgogICAgcHBjNHh4OiBSZXBsYWNlIDR4eCBsb3dlcmNhc2UgU1BSIHJlZmVyZW5jZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDg3YzBiNzI5MDhlMDU2NjJiOGI0MTVlMjZlMTA0MmY0Nzc5NjI5ZGEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBKdWwgMjAgMDY6NTc6MjcgMjAwOSArMDIwMAoKICAgIEFkZCAiY2hpcF9jb25maWciIGNvbW1hbmQgZm9yIFBQQzR4eCBib290c3RyYXAgY29uZmlndXJhdGlvbgoKICAgIFRoaXMgcGF0Y2ggYWRkcyBhIGdlbmVyaWMgY29tbWFuZCBmb3IgcHJvZ3JhbW1pbmcgSTJDIGJvb3RzdHJhcAogICAgZWVwcm9tcyBvbiBQUEM0eHguIEFuIGltcGxlbWVudGF0aW9uIGZvciBDYW55b25sYW5kcyBib2FyZCBpcwogICAgaW5jbHVkZWQuCgogICAgVGhlIGNvbW1hbmQgbmFtZSBpcyBpbnRlbnRpb25hbGx5IGNob3NlbiBub3QgdG8gYmUgUFBDNHh4IHNwZWNpZmljLgogICAgVGhpcyB3YXkgb3RoZXIgQ1BVJ3MvU29DJ3MgY2FuIGltcGxlbWVudCBhIHNpbWlsYXIgY29tbWFuZCB1bmRlcgogICAgdGhlIHNhbWUgbmFtZSwgcGVyaGFwcyB3aXRoIGEgZGlmZmVyZW50IHN5bnRheC4KCiAgICBVc2FnZSBvbiBDYW55b25sYW5kczoKCiAgICA9PiBjaGlwX2NvbmZpZwogICAgQXZhaWxhYmxlIGNvbmZpZ3VyYXRpb25zIChJMkMgYWRkcmVzcyAweDUyKToKICAgIDYwMC1ub3IJICAgICAtIE5PUiAgQ1BVOiA2MDAgUExCOiAyMDAgT1BCOiAxMDAgRUJDOiAxMDAKICAgIDYwMC1uYW5kCSAgICAgLSBOQU5EIENQVTogNjAwIFBMQjogMjAwIE9QQjogMTAwIEVCQzogMTAwCiAgICA4MDAtbm9yCSAgICAgLSBOT1IgIENQVTogODAwIFBMQjogMjAwIE9QQjogMTAwIEVCQzogMTAwCiAgICA4MDAtbmFuZAkgICAgIC0gTkFORCBDUFU6IDgwMCBQTEI6IDIwMCBPUEI6IDEwMCBFQkM6IDEwMAogICAgMTAwMC1ub3IJICAgICAtIE5PUiAgQ1BVOjEwMDAgUExCOiAyMDAgT1BCOiAxMDAgRUJDOiAxMDAKICAgIDEwMDAtbmFuZAkgICAgIC0gTkFORCBDUFU6MTAwMCBQTEI6IDIwMCBPUEI6IDEwMCBFQkM6IDEwMAogICAgMTA2Ni1ub3IJICAgICAtIE5PUiAgQ1BVOjEwNjYgUExCOiAyNjYgT1BCOiAgODggRUJDOiAgODggKioqCiAgICAxMDY2LW5hbmQJICAgICAtIE5BTkQgQ1BVOjEwNjYgUExCOiAyNjYgT1BCOiAgODggRUJDOiAgODgKICAgID0+IGNoaXBfY29uZmlnIDYwMC1ub3IKICAgIFVzaW5nIGNvbmZpZ3VyYXRpb246CiAgICA2MDAtbm9yCSAgICAgLSBOT1IgIENQVTogNjAwIFBMQjogMjAwIE9QQjogMTAwIEVCQzogMTAwCiAgICBkb25lIChkdW1wIHZpYSAnaTJjIG1kIDUyIDAuMSAxMCcpCiAgICBSZXNldCB0aGUgYm9hcmQgZm9yIHRoZSBjaGFuZ2VzIHRvIHRha2UgZWZmZWN0CgogICAgT3RoZXIgNHh4IGJvYXJkcyB3aWxsIGJlIG1pZ3JhdGVkIHRvIHVzZSB0aGlzIGNvbW1hbmQgc29vbgogICAgYXMgd2VsbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgogICAgQWNrZWQtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Cgpjb21taXQgMTBjMWIyMTg1NTZlZDk4NzFmMzZiYzBjNDA3ZjRmMmY2MTk2MzUzYgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBKdWwgMTcgMTk6MDE6MTYgMjAwOSAtMDUwMAoKICAgIHhwZWRpdGUxazogTW92ZSB0byBYLUVTIHZlbmRvciBkaXJlY3RvcnkKCiAgICBUaGUgWFBlZGl0ZTEwMDAgaXMgYW4gWC1FUyBwcm9kdWN0IHRodXMgaXQgY2FuIGJlIHB1dCBpbiBib2FyZC94ZXMgYWxvbmcKICAgIHdpdGggb3RoZXIgWC1FUyBib2FyZHMuICBBbG9uZyB3aXRoIHRoZSBtb3ZlLCB0aGUgYm9hcmQgd2FzIHJlbmFtZWQgdG8KICAgIFhQZWRpdGUxMDAwIGZyb20gWFBlZGl0ZTFLIHRvIGZpdCBYLUVTJ3Mgc3RhbmRhcmQgbmFtaW5nIGNvbnZlbnRpb24uCiAgICBNYWludGFpbmVyc2hpcCB3YXMgYWxzbyB0cmFuc2ZlcmVkIHRvIFBldGVyIFR5c2VyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNTQzODFiNzlkMjY4ZTFiZWFkNWQ3OGVkODQyM2RmMzFhM2NiMGUyYwpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBKdWwgMTcgMTk6MDE6MTUgMjAwOSAtMDUwMAoKICAgIHhwZWRpdGUxazogU3luYyBjaGVja2JvYXJkKCkgd2l0aCBvdGhlciBYLUVTIGJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOWI0ZWYxZjVkYzBkYWFiNjRmNDYyNDlhMzJlNjcyNzljNGQ0NGZkMgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBKdWwgMTcgMTk6MDE6MTQgMjAwOSAtMDUwMAoKICAgIHhwZWRpdGUxazogU3luYyB1cCBib2FyZCBjb25maWcgb3B0aW9ucyB3aXRoIG90aGVyIFgtRVMgYm9hcmRzCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0Y2RhZDVmNDNhZTY3ZTRjZWVhYzY5ZWY0YWY0MzkyYmQyZjczODFmCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJRnJpIEp1bCAxNyAxOTowMToxMyAyMDA5IC0wNTAwCgogICAgeHBlZGl0ZTFrOiBTeW5jIG9yZ2FuaXphdGlvbiBvZiBib2FyZCBjb25maWcgd2l0aCBvdGhlciBYLUVTIGJvYXJkcwoKICAgIFRoaXMgY2hhbmdlIHNob3VsZCBoYXZlIG5vIGZ1bmN0aW9uYWwgZWZmZWN0CgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjNGFlMWEwMjU3YTBmNTAwOGVlMjY4NmU4YWE5MmZiYTM5OTJmMjc5CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJRnJpIEp1bCAxNyAxOTowMToxMiAyMDA5IC0wNTAwCgogICAgeHBlZGl0ZTFrOiBTeW5jIHVwIGNvbW1hbmRzIGFuZCBlbnZpcm9ubWVudCB3aXRoIG90aGVyIFgtRVMgYm9hcmRzCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmYmM3OTUxZWE4NGMyZmU2ZGEwZjYwMDdiNjcyZWQzNWJhZTkxYWNiCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJRnJpIEp1bCAxNyAxOTowMToxMSAyMDA5IC0wNTAwCgogICAgeHBlZGl0ZTFrOiBEaXNhYmxlIHVudXNlZCBldGhlcm5ldCBwb3J0IDEKCiAgICBUaGUgWFBlZGl0ZTEwMDAgb25seSBoYXMgMiBhdmFpbGFibGUgZXRoZXJuZXQgcG9ydHM6CiAgICBwcGNfNHh4X2V0aDIgKEVNQUMyKSBhbmQgcHBjXzR4eF9ldGgzIChFTUFDMykKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDc2N2UzMmFkMzY5ZDgzZjU1Zjk1MGU2OTM4ZTY4YjZkYmE3ZmE2NWYKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglGcmkgSnVsIDE3IDE5OjAxOjEwIDIwMDkgLTA1MDAKCiAgICB4cGVkaXRlMWs6IFN0b3JlIGVudmlyb25tZW50IGluIGZsYXNoCgogICAgUHJldmlvdXNseSBhbiBJMkMgRUVQUk9NIHdhcyB1c2VkLglUaGUgRUVQUk9NIGhhZCBzaXplLCByZWxpYWJpbGl0eSwKICAgIGFuZCBhY2Nlc3MgaXNzdWVzIHdoaWNoIGFyZSByZXNvbHZlZCBieSBzdG9yaW5nIHRoZSBlbnZpcm9ubWVudCBpbgogICAgZmxhc2guCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBiODhkYTE1N2Y5OTkwY2QyY2IwODFlNGZhZWE0Yjk1ODFiNWQwZTJmCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJRnJpIEp1bCAxNyAxOTowMTowOSAyMDA5IC0wNTAwCgogICAgeHBlZGl0ZTFrOiBBZGQgc3VwcG9ydCBmb3IgYWRkaXRpb25hbCBHUElPIHBpbnMKCiAgICBFbmFibGUgR1BJTyBwaW5zIGZvciBhbiBJMkMgRUVQUk9NIHdyaXRlIHByb3RlY3QsIGEgc3lzdGVtIHJlc2V0IHBpbiwKICAgIGFuZCBhIFBNQyAjTU9OQVJDSCBwaW4uICBUaGVzZSBwaW5zIGFyZSBub3QgY3VycmVudGx5IHVzZWQgaW4gVS1Cb290LAogICAgYnV0IGFyZSB1c2VkIGluIE9TZXMgYW5kIG1heSBiZSB1c2VkIGluIFUtQm9vdCBpbiB0aGUgZnV0dXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNDI3MzU4MTVkZDliYTM5ZWZlNTEyMDM4NjhhZWJjZTA0MDUzYzhkZQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBKdWwgMTcgMTk6MDE6MDggMjAwOSAtMDUwMAoKICAgIHhwZWRpdGUxazogQWRkIHN1cHBvcnQgZm9yIG9wdGlvbmFsIGZsYXNoZXMKCiAgICBUaGUgWFBlZGl0ZTEwMDAgY2FuIGJlIGJ1aWx0IHdpdGggNCB0b3RhbCBmbGFzaGVzOgogICAgLSA1MTJLQiBBTUQgc29ja2V0ZWQKICAgIC0gMTZNQiBJbnRlbCBzb2xkZXJlZAogICAgLSAyIHggMzJNQiBBTUQgTWlycm9yQml0IGZsYXNoZXMKCiAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIG9wdGlvbmFsIDIgMzJNQiBDRkktY29tcGxpYW50IEFNRCBmbGFzaGVzCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlMDI5OTA3NjRjNzQxNWM4NDY2ODgyM2EwZmM4YzViNGRkOGQ4Y2YwCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJRnJpIEp1bCAxNyAxOTowMTowNyAyMDA5IC0wNTAwCgogICAgeHBlZGl0ZTFrOiBDbGVhbnVwIGNvZGluZyBzdHlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDg2ZmYzNGEzYTdlNWU1OTU2MzBkNjU4YzFjMTM3NzgzOTk0NTJkMQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBKdWwgMTcgMTk6MDE6MDYgMjAwOSAtMDUwMAoKICAgIHhwZWRpdGUxazogUmVtb3ZlIHN1cHBvcnQgZm9yIHJlYWRpbmcgTUFDcyBmcm9tIEVFUFJPTQoKICAgIEJ5IGRlZmF1bHQsIHRoZSBYUGVkaXRlMTAwMCBjb21lcyBpbnN0YWxsZWQgd2l0aCB4TW9uLCBhIHByb3ByaWV0YXJ5CiAgICBib290bG9hZGVyLiAgeE1vbiBzdG9yZXMgaXRzIE1BQyBhZGRyZXNzIGluIGFuIG9uYm9hcmQgRUVQUk9NLiAgUmF0aGVyCiAgICB0aGFuIHJlcXVpcmluZyBhIG5vbi1zdGFuZGFyZCBsb2NhdGlvbiBpbiB0aGUgRUVQUk9NIHRvIGJlIHJlc2VydmVkIGZvcgogICAgTUFDIGFkZHJlc3Nlcywgc3RvcmUgdGhlIE1BQyBhZGRyZXNzZXMgaW4gVS1Cb290J3Mgc3RhbmRhcmQgZW52aXJvbm1lbnQuCiAgICBBIFUtQm9vdCBhcHBsaWNhdGlvbiBvciBPUyBhcHBsaWNhdGlvbiBjYW4gYmUgdXNlZCB0byBtaWdyYXRlIHhNb24gTUFDCiAgICBhZGRyZXNzZXMgdG8gVS1Cb290J3MgZW52aXJvbm1lbnQgaWYgbmVjZXNzYXJ5LgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMTA4ZDZkMDA5OTM3MmY5ZjY1MzJjMzE5OGZiYWFjYWJjMTIxYzliMwpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBKdWwgMTcgMTk6MDE6MDUgMjAwOSAtMDUwMAoKICAgIHhwZWRpdGUxazogUmVtb3ZlIHN1cHBvcnQgZm9yIGZpeGVkIFNEUkFNIGNvbmZpZ3VyYXRpb24KCiAgICBBbGwgWFBlZGl0ZTEwMDAncyBoYXZlIFNQRCBFRVBST01zIHByZXNlbnQgYW5kIG5vIGZpeGVkIGNvbmZpZ3VyYXRpb24KICAgIHBhcmFtZXRlcnMgYXJlIGN1cnJlbnRseSBkZWZpbmVkIG9yIHVzZWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGM4NmQwMGEyZWQ5MjMwMDJmMWFiMGJmYjBhOTI1NTIyNjI4MzAyZTkKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglGcmkgSnVsIDE3IDE5OjAxOjA0IDIwMDkgLTA1MDAKCiAgICB4cGVkaXRlMWs6IFJlbW92ZSBDT05GSUdfU1lTX0RSQU1fVEVTVCBzdXBwb3J0CgogICAgUE9TVCBvciBjb21tYW5kIGxpbmUgdGVzdHMgcHJvdmlkZSBzaW1pbGFyIGZ1bmN0aW9uYWxpdHkKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDExYWQzMDljMTgzYjE3NmQ4ODY2OTQ0MDI2YTYzYzBmMWM2MjZmNTYKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglGcmkgSnVsIDE3IDE5OjAxOjAzIDIwMDkgLTA1MDAKCiAgICB4cGVkaXRlMWs6IFVzZSBzdGFuZGFyZCBDRkkgZmxhc2ggZHJpdmVyCgogICAgVXNpbmcgdGhlIENGSSBmbGFzaCBkcml2ZXIgd2lsbCBhbGxvdyB3cml0ZSBhY2Nlc3MgdG8gdGhlIDE2TUIgSW50ZWwKICAgIFN0cmF0YUZsYXNoIHByZXNlbnQgb24gdGhlIFhQZWRpdGUxMDAwLiAgVGhlIDUxMktCIHNvY2tldGVkIChub24KICAgIENGSS1jb21wbGlhbnQgZmxhc2gpIHdpbGwgbm8gbG9uZ2VyIGJlIHdyaXRhYmxlLgoKICAgIFRoZSBtYXBwaW5nIG9mIHRoZSAxNk1CIFN0cmF0YSBmbGFzaCB3YXMgbW92ZWQgdG8gMHhmZjAwMDAwMCBhbmQgdGhlCiAgICA1MTJLQiBBTUQgc29ja2V0ZWQgZmxhc2ggd2FzIG1vdmVkIHRvIDB4ZmUwMDAwMDAuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkNGQyZTc5YmI0MzNmYzdlYzE4YzY4Y2M0OWNjNmI3NDMzZDEzMjBjCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVRodSBKdWwgMTYgMjI6MTM6NTcgMjAwOSArMDIwMAoKICAgIHBwYzR4eDogQ2xlYW51cCBQTFU0MDUgYm9hcmQgY29kZQoKICAgIFNvbWUgQ29kaW5nIHN0eWxlIGNsZWFudXAgKGJyYWNlcywgd2hpdGVzcGFjZXMsIGxvbmcgbGluZXMpCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBiMjA5YTExNDgyOWRjOGE3YTBlMzlhOTMzNWI2ZTRhZWJmOTc0MmNiCkF1dGhvcjogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KRGF0ZToJRnJpIEp1bCAxNyAxNDoxNjo0MCAyMDA5ICswMjAwCgogICAgcHBjNHh4OiBBZGQgREwtVmlzaW9uIDQwNUVQIGJvYXJkIHN1cHBvcnQKCiAgICBCb2FyZCBzdXBwb3J0IGZvciB0aGUgR3VudGVybWFubiAmIERydW5jayBETC1WaXNpb24uCgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5YjFiOGM4YTFiZjUyZTliNjVlMTk1OGU1MjA1ODM4NTc2MDY2Y2JjCkF1dGhvcjogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KRGF0ZToJRnJpIEp1bCAxMCAxNDo0NzozMiAyMDA5ICswMjAwCgogICAgcHBjNHh4OiBGaXggbWlzc2luZyBmcmVxT1BCIGZvciA0MDVFUAoKICAgIEluIGNwdS9wcGM0eHgvc3BlZWQuYyBpbml0aWFsaXphdGlvbiBvZiBzeXNJbmZvLT5mcmVxT1BCIGZvciA0MDVFUCB3YXMKICAgIGxlZnQgb3V0IGZvciBubyBvYnZpb3VzIHJlYXNvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDBhMzcxY2EwODkwOGM5YjJhNTgxNzEyMjNhNzliZmZlYTFmN2M2ZjUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBKdWwgMTQgMTU6NTM6MDggMjAwOSArMDIwMAoKICAgIHBwYzR4eDogRml4IFRMQiByZXNldCBwcm9ibGVtIHdpdGggcmVjZW50IDQ0eCBpbWFnZXMKCiAgICBQYXRjaCBkODczMTMzZiBbcHBjNHh4OiBBZGQgU2VxdW9pYSBSQU0tYm9vdGluZyB0YXJnZXRdIGJyb2tlICJub3JtYWwiCiAgICBib290aW5nIG9uIHNvbWUgNDR4IHBsYXRmb3Jtcy4gVGhpcyBicmVha2FnZSBpcyBvbmx5IG5vdGljZWQgaW4gc29tZQogICAgY2FzZXMgd2hpbGUgcG93ZXJjeWNsaW5nLiBBcyBpdCBzZWVtcywgdGhlIGNvZGUgaW4gcXVlc3Rpb24gaW4gc3RhcnQuUwogICAgZGlkbid0IGludmFsaWRhdGUgVExCICMwLiBUaGlzIG1ha2VzIHNlbnNlIHNpbmNlIHRoaXMgVExCIGlzIHVzZWQgZm9yCiAgICB0aGUgYm9vdHJvbSBtYXBwaW5nLiBXaXRoIHRoZSBwYXRjaCBtZW50aW9uZWQgYWJvdmUgZXZlbiBUTEIgIzAgZ290CiAgICBpbnZhbGlkYXRlZCByZXN1bHRpbmcgaW4gYW4gZXJyb3IgbGF0ZXIgb24uCgogICAgVGhpcyBwYXRjaCBub3cgZml4ZXMgdGhpcyBpc3N1ZSBieSBvbmx5IGludmFsaWRhdGluZyBUTEIgIzAgaW4gdGhlIFJBTS0KICAgIGJvb3RpbmcgY2FzZS4KCiAgICBUZXN0ZWQgc3VjY2VzZnVsbHkgb24gU2VxdW9pYSBhbmQgQ2FueW9ubGFuZHMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQ2M6IERpcmsgRWliYWNoIDxFaWJhY2hAZ2RzeXMuZGU+Cgpjb21taXQgNDQyNTliYjllNjk2ZDIyYmYxNzczMTgxMTExODU1YTI5ZjAwY2YzMwpBdXRob3I6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KRGF0ZToJRnJpIEp1bCAxNyAxOTo1NjozMCAyMDA5ICswNTMwCgogICAgdXNiOiBidWdmaXggZHJpdmVyL3VzYi9ob3N0L2VoY2ktaGNkLmMgZnVuY3Rpb24gZWhjaV9zdWJtaXRfcm9vdAoKICAgIFRoaXMgY2hhbmdlIGlzIGNoZWtlZCBpbiBMaW51eCBzb3VyY2UgYW5kIGZpeCBmb3VuZCB0byBiZSBpbiBzeW5jLgogICAgVGhpcyBwYXRjaCBpcyB0ZXN0ZWQgZm9yIFVTQiBob3N0IGludGVyZmFjZSBvbiBLaXJrd29vZCBiYXNlZAogICAgU2hlZXZhcGx1ZyBwbGF0Zm9ybSAoQVJNIGxpdHRsZSBlbmRpYW4gYm9hcmQpCgogICAgUmlzazogdGhlIGltcGFjdCBvZiB0aGlzIHBhdGNoIGlzIG5vdCB2YWxpZGF0ZWQgb24gYmlnIGVuZGlhbiBib2FyZC4KICAgIFRoaXMgbmVlZCB0byBiZSBjaGVja2VkLi4uCgogICAgU2lnbmVkLW9mZi1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgMjg5NThiOGJlYTRjNjY2MjljNWEyMmZkM2M4YjBkNDlkZjkwMzgzZApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVRodSBKdWwgMjMgMjI6MjM6MjMgMjAwOSArMDIwMAoKICAgIENvZGluZyBTdHlsZSBjbGVhbnVwOyB1cGRhdGUgQ0hBTkdFTE9HLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMjYzMmMwMDhlMmMyY2Q2MWZlZmI2MjJlZDY3MWVhM2U2YmQyZTJhNgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIEp1bCAyMSAyMjo1OTozNiAyMDA5IC0wNDAwCgogICAgYXV0b2NvbmYubWs6IGluY2x1ZGUgYmVmb3JlIGNvbmZpZy5tayBmb3IgdG9wIGxldmVsIGZpbGVzCgogICAgQnkgaW5jbHVkaW5nIGF1dG9jb25mLm1rIGJlZm9yZSBjb25maWcubWssIGFsbCB0b3AgbGV2ZWwgZmlsZXMgY2FuIHVzZSBhbnkKICAgIGNvbmZpZyBvcHRpb25zIGl0IHNldHMgdXAgKGxpa2UgPGFyY2g+X2NvbmZpZy5taykgb3IgdGhlIE1ha2VmaWxlIGl0c2VsZgogICAgd2l0aG91dCBiZWluZyBmb3JjZWQgdG8gdXNlIGxhenkgZXZhbHVhdGlvbi4KCmNvbW1pdCBjMDExNzFlYWVjYzk2M2QyYzFmNTZhMDk4NGEwY2JjZGQ4YTNhYjNjCkF1dGhvcjogTWFyayBKYWNrc29uIDxtcGZqLWxpc3RAbWltYy5jby51az4KRGF0ZToJVHVlIEp1bCAyMSAxMTozMDo1MyAyMDA5ICswMTAwCgogICAgUmVtb3ZlIHN0YXRpYyBkZWNsYXJhdGlvbiBmcm9tIGd1bnppcF9ibXAoKQoKICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgc3RhdGljIGRlY2xhcmF0aW9uIGZyb20gZ3VuemlwX2JtcCgpCgogICAgV2l0aG91dCBpdCwgdGhlIGd1bnppcF9ibXAoKSBmdW5jdGlvbiBpcyBub3QgdmlzaWJsZSB0bwogICAgY29tbW9uL2xjZC5jIGFuZCBmYWlscyB0byBjb21waWxlIHdpdGggYW4gZXJyb3IuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyayBKYWNrc29uIDxtcGZqQG1pbWMuY28udWs+Cgpjb21taXQgMmQ0YTQzZTIzMGEzYzhiZmQwM2I5YmVhYTBlYjJhOTVlNzc5YzAzYgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAZ21haWwuY29tPgpEYXRlOglNb24gSnVsIDIwIDIxOjUxOjM4IDIwMDkgLTA1MDAKCiAgICBjbWRfdHNpMTQ4OiBHZW5lcmFsIGNsZWFudXAKCiAgICAtIEZpeCBjb21tYW5kIGhlbHAgbWVzc2FnZQogICAgLSBEaXNhYmxlIERFQlVHIGJ5IGRlZmF1bHQKICAgIC0gRml4IHdoaXRlc3BhY2UgaXNzdWVzCiAgICAtIEZpeCBsaW5lcyA+IDgwIGNoYXJhY3RlcnMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQGdtYWlsLmNvbT4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOWFlZjczODg4NTA5ZDEwMTkzNjE1ZWU1Y2Q5Y2Y0MzljYTQ0ZTkzNwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU3VuIEp1bCAxOSAxNToxNzowMyAyMDA5IC0wNDAwCgogICAgdW5pZnkgSE9TVF9DRkxBR1MgYW5kIEhPU1RDRkxBR1MKCiAgICBUaGUgdG9wIGJ1aWxkIHN5c3RlbSBzZXRzIHVwIEhPU1RDRkxBR1MgYSBiaXQgYW5kIGV4cG9ydHMgaXQsIGJ1dCBvdGhlcgogICAgcGxhY2VzIHVzZSBIT1NUX0NGTEFHUyBpbnN0ZWFkLiAgVW5pZnkgdGhlIHR3byBhcyBIT1NUQ0ZMQUdTIHNvIHRoYXQgdGhlCiAgICB2YWx1ZXMgc3RheSBpbiBzeW5jLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAyZTkzOTNmNTAwMDY1Zjk0MGU1ZTRhYzdmZTM3NWU0YzBiNzdiOTM2CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IEp1bCAyMyAyMToxNjo1OSAyMDA5ICswMjAwCgogICAgVXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZTNiMzlmODRlOTc0ZGY3MDA2NWZhMjQ4ZjBmNjM5OTNiMTcwOGM5ZApBdXRob3I6IEFuZHLDqSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+CkRhdGU6CUZyaSBKdWwgMTcgMTQ6NTA6MjQgMjAwOSArMDIwMAoKICAgIHVwZGF0ZSBjb25maWcgZm9yIG12QkMtUCAoTVBDNTIwMCkKCiAgICBUaGlzIHBhdGNoIGFkZHMgSTJDIHN1cHBvcnQgZm9yIG12QkMtUCBhbmQgZGVmaW5lcyBmbGFzaCBsYXlvdXQKICAgIG1hdGNoaW5nIHRoZSBzaGlwcGVkIHByb2R1Y3QuCgogICAgU2lnbmVkLW9mZi1ieTogQW5kcukgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgoKY29tbWl0IGNiNmQwYjcyYzJjNGYxM2MwMDc1YTdhZTkyZTExNjgyZWM5NGEzMTEKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gSnVsIDEzIDA5OjI0OjAwIDIwMDkgLTA1MDAKCiAgICBhaGNpOiBGaXggZ2NjIDQuNCBjb21waWxlciB3YXJuaW5nCgogICAgYWhjaS5jOiBJbiBmdW5jdGlvbiAnYXRhX3Njc2lvcF9yZWFkX2NhcGFjaXR5MTAnOgogICAgYWhjaS5jOjYxNjogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZCBwb2ludGVyIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA1MWQ5MWUxYTI1M2M5NzcxM2M3ZjNlNWMwYjkxMGE0ZGI0OTc5MjgzCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIEp1bCAxMyAwOToyMzo1OSAyMDA5IC0wNTAwCgogICAgZHJpdmVycy9iaW9zX2VtdWxhdG9yOiBGaXggZ2NjIDQuNCBjb21waWxlciB3YXJuaW5nCgogICAgYmlvc2VtdS5jOiBJbiBmdW5jdGlvbiAnQkVfc2V0VkdBJzoKICAgIGJpb3NlbXUuYzoxNDc6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZjk3ZWMzMGJiM2M1YTRhNDU2MTU5ZWIyYjc1YjNiYzY4NzcyYmYyYQpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglNb24gSnVsIDEzIDE2OjAxOjE5IDIwMDkgKzAyMDAKCiAgICBSZS1hZGQgc3VwcG9ydCBmb3IgaW1hZ2UgdHlwZSAnU3RhbmRhbG9uZSBQcm9ncmFtJwoKICAgIFN1cHBvcnQgZm9yIHRoaXMgdHlwZSB3YXMgbG9zdCBkdXJpbmcgdGhlIGJvb3RtIHJlZmFjdG9yaW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgoKY29tbWl0IGNhOTVjOWRmMDI4MGY0MGU4ZTRiZWZhZGJhYWUyMWZhNjdkOTIzMzEKQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KRGF0ZToJTW9uIEp1bCAxMyAxNjowMToxOCAyMDA5ICswMjAwCgogICAgQWRkIGVycm9yIGNoZWNraW5nIGZvciB1bnN1cHBvcnRlZCBPUyB0eXBlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KCmNvbW1pdCA5ODJhZGZjNjEwNjY5NDgyYTMyMTI3MjgyZmU0ODk4NTdhOTJjZmUzCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJRnJpIEp1bCAxMCAxODo0NjoxMCAyMDA5IC0wNTAwCgogICAgcHBjOiBVbmxvY2sgY2FjaGUtYXMtcmFtIGluIGEgY29uc2lzdGVudCBtYW5uZXIKCiAgICBQcmV2aW91c2x5LCBub24tZTUwMCBhcmNoaXRlY3R1cmVzIG9ubHkgdW5sb2NrZWQgdGhlaXIgZGF0YSBjYWNoZSB3aGljaAogICAgd2FzIHVzZWQgYXMgZWFybHkgUkFNIHdoZW4gYm9vdGluZyB0byBMaW51eCB1c2luZyB0aGUgImJvb3RtIiBjb21tYW5kLgogICAgVGhpcyBjaGFuZ2UgY2F1c2VzIGFsbCBQUEMgYm9hcmRzIHdpdGggQ09ORklHX1NZU19JTklUX1JBTV9MT0NLIGRlZmluZWQKICAgIHRvIHVubG9jayB0aGVpciBkYXRhIGNhY2hlIGR1cmluZyBVLUJvb3QncyBpbml0aWFsaXphdGlvbi4JVGhpcwogICAgaW1wcm92ZXMgVS1Cb290IHBlcmZvcm1hbmNlIGFuZCBwcm92aWRlcyBhIGNvbW1vbiBjYWNoZSBzdGF0ZSB3aGVuCiAgICBib290aW5nIHRvIGRpZmZlcmVudCBPU2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgYjIwMTE3MWYyYjRkNTA5ZjNhZDUxMGIyMTRiZWU3MGZmOTAyZTNkNgpBdXRob3I6IEdpdXNlcHBlIENPTkRPUkVMTEkgPGdpdXNlcHBlLmNvbmRvcmVsbGlAc3QuY29tPgpEYXRlOglUaHUgSnVsIDIzIDA0OjU0OjQ1IDIwMDkgLTA0MDAKCiAgICB6bGliOiB1cGRhdGVkIHRvIHYuMS4yLjMKCiAgICBUaGlzIHBhdGNoIHVwZGF0ZXMgemxpYiB0byB0aGUgbGF0ZXN0IHN0YWJsZSB2ZXJzaW9uLgoKICAgIE9ubHkgcmVsZXZhbnQgemxpYiBwYXJ0cyB3ZXJlIHBvcnRlZCB0byB1LWJvb3QgdHJlZSwgYXMgd2FzIGRvbmUgZm9yCiAgICB0aGUgcHJldmlvdXNseSB1c2VkIHZlcnNpb24gb2YgemxpYiAoMC45NSkuIE5ldyB6bGliIGdpdmVzIGZhc3RlcgogICAgaW5mbGF0ZSBwZXJmb3JtYW5jZSBhbmQgb3RoZXIgaW1wcm92ZW1lbnRzLCBzZWUgd3d3LnpsaWIubmV0CgogICAgU2lnbmVkLW9mZi1ieTogR2l1c2VwcGUgQ29uZG9yZWxsaSA8Z2l1c2VwcGUuY29uZG9yZWxsaUBzdC5jb20+CiAgICBSZXZpZXdlZC1ieTogQW5nZWxvIENhc3RlbGxvIDxhbmdlbG8uY2FzdGVsbG9Ac3QuY29tPgoKICAgIEVkaXRlZCBjb21taXQgbWVzc2FnZQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgOTdjZmU4NjE2MzUwNWVhMThlN2ZmN2I3MWU3OGRmNWJiMDNkYWQ1NwpBdXRob3I6IFJvYmluIEdldHogPHJnZXR6QGJsYWNrZmluLnVjbGludXgub3JnPgpEYXRlOglUdWUgSnVsIDIxIDEyOjE1OjI4IDIwMDkgLTA0MDAKCiAgICBTYXZlIHNlcnZlcidzIE1BQyBhZGRyZXNzIGluIGVudmlyb25tZW50CgogICAgTGludXgncyBuZXRjb25zb2xlIHdvcmtzIG11Y2ggYmV0dGVyIHdoZW4geW91IGNhbiBwYXNzIGl0IHRoZSBNQUMgYWRkcmVzcyBvZgogICAgdGhlIHNlcnZlci4gKG90aGVyd2lzZSBpdCBqdXN0IHVzZXMgYnJvYWRjYXN0LCB3aGljaCBldmVyeW9uZSBlbHNlIG9uIG15CiAgICBuZXR3b3JrIGNvbXBsYWlucyBhYm91dCA6KQoKICAgIFRoaXMgc2V0cyB0aGUgZW52IHZhciAic2VydmVyYWRkciIgKHRvIG1hdGNoIGV0aGFkZHIpLCBzbyB0aGF0IHlvdSBjYW4gcGFzcwogICAgaXQgdG8gbGludXggd2l0aCB3aGF0ZXZlciBib290YXJncyB5b3Ugd2FudCB0by4uLi4KCiAgICBhZGRuZXRjb25zb2xlPXNldCBib290YXJncyAkKGJvb3RhcmdzKSBuZXRjb25zb2xlPUAkKGlwYWRkcikvZXRoMCxAJChzZXJ2ZXJpcCkvJChzZXJ2ZXJhZGRyKQoKICAgIFNpZ25lZC1vZi1ieTogUm9iaW4gR2V0eiA8cmdldHpAYmxhY2tmaW4udWNsaW51eC5vcmc+CgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAwYjIzZmIzNjhkMDhjOTY2OWZhYzY0Nzk3MWZmMjQ5YzNmOWZlZThmCkF1dGhvcjogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CkRhdGU6CVR1ZSBKdWwgMjEgMTk6MzI6MjEgMjAwOSArMDQwMAoKICAgIGZlY19teGM6IGRyaXZlciBmb3IgRkVDIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gaS5NWDI3CgogICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDA1NDRjNjM2ODFkMmVhMzYwN2ZhZjM3NGU5YzU2ZjEwMWUzNjViNDIKQXV0aG9yOiBBbGVzc2lvIENlbnRhenpvIDxjZW50YXp6b0BnbWFpbC5jb20+CkRhdGU6CVNhdCBKdWwgMTEgMTE6NTY6MDYgMjAwOSAtMDcwMAoKICAgIHBwYzR4eDogRml4ZWQgY29tcGlsYXRpb24gd2FybmluZyBpbiA0eHhfZW5ldC5jCgogICAgVGhpcyBwYXRjaCBmaXhlcyBhIGNvbXBpbGF0aW9uIHdhcm5pbmcgZm9yIHNvbWUgRXRoZXJuZXQgUEhZLWxlc3MKICAgIFBQQzR4eCBwbGF0Zm9ybXMgKDQ0MFNQRSBiYXNlZCBvbmVzKSBhbmQgYSBwb3RlbnRpYWwgY29tcGlsYXRpb24KICAgIGVycm9yIGZvciA0NDBTUCBwbGF0Zm9ybXMgKHVzZSBvZiB1bmRlZmluZWQgJ2V0aGdyb3VwJyB2YXJpYWJsZSkuCiAgICBJbiB0aGUgb3JpZ2luYWwgY29kZSBhbmQgaW4gY2FzZSBvZiA0NDBTUEUgcGxhdGZvcm1zLCAnZXRoZ3JvdXAnCiAgICBpcyBpbml0aWFsaXplZCB0byAtMSBhbmQgbmV2ZXIgbW9kaWZpZWQuICBMYXRlciBpbiB0aGUgZnVuY3Rpb24sCiAgICB3aXRoaW4gYW4gI2lmZGVmIHN0YXRlbWVudCwgYW4gJ2lmIHN0YXRlbWVudCcgZXhlY3V0ZXMgY29kZSBvbmx5CiAgICBpZiAnZXRoZ3JvdXAnIGlzIHNldCB0byA0LCB0aGVyZWZvcmUgaXQgaXMgaGFybWxlc3MgdG8gYXZvaWQKICAgIGV4ZWN1dGluZyB0aGUgJ2lmIHN0YXRlbWVudCcgYnkgcmVtb3ZpbmcgdGhlIENPTkZJR180NDBTUEUgZnJvbQogICAgdGhlIGFmZmVjdGVkICNpZmRlZnMuICBJbiBjYXNlIG9mIDQ0MFNQIHBsYXRmb3JtcyAgd2l0aCBvbi1ib2FyZAogICAgRXRoZXJuZXQgUEhZLCAnZXRoZ3JvdXAnIGlzIHVuZGVmaW5lZCBidXQgdXNlZCAodGhlcmUgYXJlIG5vdCBzdWNoCiAgICBwbGF0Zm9ybXMgaW4gdGhlIHJlcG9zaXRvcnkgeWV0KS4gQWxsIG90aGVyIGFyY2hpdGVjdHVyZXMgYXJlIG5vdAogICAgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UuCgogICAgU2lnbmVkLW9mZi1ieTogQWxlc3NpbyBDZW50YXp6byBhY3BhdGluQHlhaG9vLmNvbQogICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMDkxMzNmODU4MGYwMTA2NDI5YmEzNjAwZjE4NTViZDM1NzdhZTU4YgpBdXRob3I6IE1pY2hhZWwgWmFpZG1hbiA8bWljaGFlbC56YWlkbWFuQGdtYWlsLmNvbT4KRGF0ZToJVHVlIEp1bCAxNCAyMzozNzoxMiAyMDA5ICswMzAwCgogICAgREhDUCByZWdyZXNzaW9uIG9uIDIwMDktMDYKCiAgICBGaXhlZCB0aGUgREhDUC9CT09UUC9SQVJQIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBpbiB1LWJvb3QtMjAwOS4wNgogICAgYnkgaW5pdGlhbGl6aW5nIG91ciBJUCBhZGRyIHRvIDAgaW4gb3JkZXIgdG8gYWNjZXB0IGFueSBJUCBhZGRyCiAgICBhc3NpZ25lZCB0byB1cyBieSB0aGUgREhDUC9CT09UUC9SQVJQIHNlcnZlci4KCiAgICBBY2stYnk6IFJvYmluIEdldHogPHJnZXR6QGJsYWNrZmluLnVjbGludXgub3JnPgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBaYWlkbWFuIDxtaWNoYWVsLnphaWRtYW5AZ21haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA0NDNjZTRhYzlkMTEzOGFlNWFlNjg2M2IyZDQwYTk2ZmQ2ZWRmNTIzCkF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgpEYXRlOglUaHUgSnVsIDE2IDIwOjU4OjAyIDIwMDkgKzA1MzAKCiAgICBuZXQ6IHBoeTogYnVnZml4ZXM6IG12ODhFNjF4eCBtdWx0aWNoaXAgYWRkcmVzc2luZyBzdXBwb3J0CgogICAgV2l0aCB0aGVzZSBmaXhlcywgdGhpcyBkcml2ZXIgd29ya3MgcHJvcGVybHkgZm9yIG11bHRpIGNoaXAKICAgIGFkZHJlc3NnaW5nIG1vZGUKCiAgICBCdWdmaXhlczoKICAgIDEuIEJ1aWxkIGVycm9yIGZpeGVkIGZvciBmdW5jdGlvbiBtdjg4ZTYxeHhfYnVzeWNoa19tdWx0aWMtZml4ZWQKICAgIDIuIFBIWSBkZXYgYWRkcmVzcyBlcnJvciBkZXRlY3Rpb24tIGZpeGVkCiAgICAzLiB3cm9uZyBidXN5IGJpdCB3YXMgcmVmZXJlZCBpbiBmdW5jdGlvbiBtdjg4ZTYxeHhfYnVzeWNoayAtZml4ZWQKICAgIDQuIGludmFsaWQgZGF0YSByZWFkIHB0ciB3YXMgcmVmZXJlZCBmb3IgUkRfUEhZIGluIGNhc2Ugb2YKCW11bHRpY2hpcCBhZGRyZXNzaW5nIG1vZGUgLWZpeGVkCgogICAgVGhlIE11bHRpY2hpcCBBZGRyZXNzIG1vZGUgaXMgdGVzdGVkIHdpdGggUkQ2MjgxQSBib2FyZCBoYXZpbmcKICAgIE1WODhFNjE2NSBzd2l0Y2ggb24gaXQKCiAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDE2MDI1ZWE0NTUzOTIxOWYyYTdjNzUwYzZmMGFlOTgzZWE1YzI3MzcKQXV0aG9yOiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+CkRhdGU6CVdlZCBKdWwgOCAxMzowNToxMSAyMDA5ICswMjAwCgogICAgYXJtOiBLaXJrd29vZDogQ2hlY2sgdGhlIGVycm9yIHN1bW1hcnkgYml0IGZvciBlcnJvciBkZXRlY3Rpb24KCiAgICBUaGUgTWFydmVsbCBkb2N1bWVudGF0aW9uIGZvciB0aGUgODhmNjI4MSBzdGF0ZXMgdGhhdCB0aGUgZXJyb3IgY29kaW5nCiAgICBpcyBvbmx5IHZhbGlkIGlmIHRoZSBlcnJvciBzdW1tYXJ5IGFuZCBsYXN0IGZyYW1lIGJpdHMgaW4gdGhlIHRyYW5zbWl0CiAgICBkZXNjcmlwdG9yIHN0YXR1cyBmaWVsZCBhcmUgc2V0LiBUaGlzIHBhdGNoIGFkZHMgY2hlY2tzIGZvciB0aGVzZSBmb3IKICAgIHRyYW5zbWl0IChJIHdvdWxkIGdldCB0cmFuc21pdCBlcnJvcnMgb24gYm9vdHAgd2l0aCB0aGUgY3VycmVudCBjaGVjaywKICAgIHdoaWNoIEkgYmVsaWV2ZSBhcmUgc3B1cmlvdXMpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgN2IwNWY1ZTAyN2I4MWNkM2E5YTQxYzZjNmQzZmUwOWM3MmZhOTNmNgpBdXRob3I6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KRGF0ZToJV2VkIEp1bCA4IDEzOjAzOjE4IDIwMDkgKzAyMDAKCiAgICBhcm06IEtpcmt3b29kOiBGaXggY29tcGlsZXIgb3B0aW1pemF0aW9uIGJ1ZyBmb3Iga3dnYmVfc2VuZAoKICAgIGt3Z2JlX3NlbmQvcmVjdiBib3RoIGhhdmUgbG9vcHMgd2FpdGluZyBmb3IgdGhlIGhhcmR3YXJlIHRvIHNldCAgYSBiaXQuCiAgICBHQ0MgNC4zLjMgY2xldmVybHkgb3B0aW1pemVzIHRoZSBzZW5kIGNhc2UgdG8gLi4uIGEgd2hpbGUoMSk7IGxvb3AuIFRoaXMKICAgIHBhdGNoIHVzZXMgcmVhZGwgdG8gZm9yY2UgYSByZWFkIGZyb20gZGV2aWNlIG1lbW9yeS4gT3RoZXIgdm9sYXRpbGUKICAgIGFjY2Vzc2VzIGhhdmUgYWxzbyBiZWVuIHJlcGxhY2VkIHdpdGggcmVhZGwvd3JpdGVsIHdoZXJlIGFwcHJvcHJpYXRlCiAgICAoYXMgcGVyIHN1Z2dlc3Rpb25zIG9uIHRoZSBVLWJvb3QgbWFpbGluZyBsaXN0KS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDNmNmIxOGZmZDk0NjIxNjI1ZGU5NjFiYzU2NjAyMmIwMjY2NzkwZjUKQXV0aG9yOiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgpEYXRlOglUaHUgSnVsIDIgMTM6MjE6MjIgMjAwOSAtMDQwMAoKICAgIE1JSVBIWUJCOiBSZXR1cm4gMHhGRkZGIGlmIHRoZSBQSFkgaXMgbm90IGFzc2VydGluZyBUQS4KCiAgICBUaGlzIHBhdGNoIHNldHMgdGhlIHJldHVybmVkIHZhbHVlIHRvIDB4RkZGRiBpZiB0aGUgUEhZIGRvZXMgbm90IGV4aXN0CiAgICBhbmQgZG9lcyBub3QgYXNzZXJ0IFRyYW5zZmVyIEFja25vd2xlZGdlLiBBIE5VTEwgY2hlY2sgZm9yIHRoZSB2YWx1ZQogICAgcG9pbnRlciBpcyBhbHNvIGFkZGVkIGZvciBidWZmZXIgb3ZlcmZsb3cgcHJvdGVjdGlvbi4KCiAgICBXaXRob3V0IHRoaXMgcGF0Y2ggJ21paSBpbmZvJyB3aWxsCXNob3cgJ3BoYW50b20nIGRldmljZXMgYmVjYXVzZSB0aGUKICAgIHZhbHVlIHdpbGwgYmUgbm90IGJlIGluaXRpYWxpemVkIGFuZCByZXR1cm4gd2l0aCBzb21lIHJhbmRvbSB2YWx1ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA3MzZmZWFkOGZkYmY4YTg0MDcwNDhiZWJjMzczY2Q1NTFkMDFlYzk4CkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJTW9uIEp1bCAyMCAyMjowMToxMSAyMDA5IC0wNzAwCgogICAgQ29udmVydCBTTUM5MTFYIEV0aGVybmV0IGRyaXZlciB0byBDT05GSUdfTkVUX01VTFRJIEFQSQoKICAgIEFsbCBpbi10cmVlIGJvYXJkcyB0aGF0IHVzZSB0aGlzIGNvbnRyb2xsZXIgaGF2ZSBDT05GSUdfTkVUX01VTFRJIGFkZGVkCiAgICBBbHNvOgogICAgIC0gY2hhbmdlZCBDT05GSUdfRFJJVkVSX1NNQzkxMVgqIHRvIENPTkZJR19TTUM5MTFYKgogICAgIC0gY2xlYW5lZCB1cCBsaW5lIGxlbmd0aHMKICAgICAtIG1vZGlmaWVkIGFsbCBib2FyZHMgdGhhdCBvdmVycmlkZSB3ZWFrIGZ1bmN0aW9uIGluIHRoaXMgZHJpdmVyCiAgICAgLSBhZGRlZAoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CiAgICBUZXN0ZWQtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAzYmQwYTg3N2I3NGI5YzAwNWFlN2NiODkyNDgwY2NlZGZhMzA4YzIwCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJRnJpIEp1bCAxNyAwMDo1MDoxNSAyMDA5IC0wNzAwCgogICAgQWRkIHdhcm5pbmcgYWJvdXQgdXBjb21pbmcgcmVtb3ZhbCBvZiBvbGQgRXRoZXJuZXQgQVBJCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBiN2ZlMjVkMmE4ZDFjZWRlNDAxZDA5ZTFmOWM4NGY4ZmU0N2JkYmIxCkF1dGhvcjogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgMiAxNjoxNToxMyAyMDA5ICswNTMwCgogICAgUDIwMjBSREIgQWRkZWQgc3VwcG9ydCBvZiBWaXRlc3NlIFBIWXMgVlNDODY0MShSR01JSSkgYW5kIFZTQzgyMjEoU0dNSUkpCgogICAgVGhlc2UgUEhZcyBhcmUgb24gUDIwMjBSREIgcGxhdGZvcm0uCgogICAgQWxzbyByZXZhbXBlZCBGcmVlc2NhbGUgY29weXJpZ2h0IG1lc3NhZ2UgaW4gZHJpdmVycy9uZXQvdHNlYy5jLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBvb25hbSBBZ2dyd2FsIDxwb29uYW0uYWdncndhbEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAxYTMyYmY0MTg4MWI1ZGJlMzExOWNiNzdhMzM1NzJiNGQ0NjJjYWJmCkF1dGhvcjogUm9iaW4gR2V0eiA8cmdldHpAYmxhY2tmaW4udWNsaW51eC5vcmc+CkRhdGU6CU1vbiBKdWwgMjAgMTQ6NTM6NTQgMjAwOSAtMDQwMAoKICAgIEFkZCBETlMgc3VwcG9ydAoKICAgIE9uIDA0IE9jdCAyMDA4IFBpZXRlciBwb3N0ZWQgYSBkbnMgaW1wbGVtZW50YXRpb24gZm9yIFUtQm9vdC4KCiAgICBodHRwOi8vd3d3Lm1haWwtYXJjaGl2ZS5jb20vdS1ib290LXVzZXJzQGxpc3RzLnNvdXJjZWZvcmdlLm5ldC9tc2cxMDIxNi5odG1sCiAgICA+CiAgICA+IEROUyBjYW4gYmUgZW5hYmxlZCBieSBzZXR0aW5nIENGR19DTURfRE5TLiBBZnRlciBwZXJmb3JtaW5nIGEgcXVlcnksCiAgICA+IHRoZSBzZXJ2ZXJpcCBlbnZpcm9ubWVudCB2YXIgaXMgdXBkYXRlZC4KICAgID4KICAgID4gUHJvYmFibHkgdGhlcmUgYXJlIHNvbWUgY29zbWV0aWMgaXNzdWVzIHdpdGggdGhlIHBhdGNoLiBVbmZvcnR1bmF0bHkgSQogICAgPiBkbyBub3QgaGF2ZSB0aGUgdGltZSB0byBjb3JyZWN0IHRoZXNlLiBTbyBpZiBhbnlib2R5IGVsc2UgbGlrZXMgRE5TCiAgICA+IHN1cHBvcnQgaW4gVS1Cb290IGFuZCBoYXMgdGhlIHRpbWUsIGZlZWwgZnJlZSB0byBwYXRjaCBpdCBpbiB0aGUgbWFpbiB0cmVlLgoKICAgIEhlcmUgaXQgaXMgYWdhaW4gLSBzbGlnaHRseSBtb2RpZmllZCAmIHNtYWxsZXI6CiAgICAgIC0gdXBkYXRlIHRvIDIwMDktMDYgKFBpZXRlcidzIHBhdGNoIHdhcyBmb3IgVS1Cb290IDEuMi4wKQogICAgICAtIFJFQURNRS5kbnMgaXMgYWRkZWQKICAgICAgLSBzeW50YXggaXMgY2hhbmdlZCAobm93IHRha2VzIGEgdGhpcmQgb3B0aW9uLCB0aGUgZW52IHZhciB0byBzdG9yZQoJdGhlIHJlc3VsdCBpbikKICAgICAgLSBhZGQgYSByYW5kb20gcG9ydCgpIGZ1bmN0aW9uIGluIG5ldC5jCiAgICAgIC0gc29ydCBNYWtlZmlsZSBpbiAuL25ldC9NYWtlZmlsZQogICAgICAtIGRucyBqdXN0IHJldHVybnMgdW5sZXNzIGEgZW52IHZhciBpcyBnaXZlbgogICAgICAtIHJ1biB0aHJvdWdoIGNoZWNrcGF0Y2gsIGFuZCBjbGVhbiB1cCBzdHlsZSBpc3N1ZXMKICAgICAgLSByZW1vdmUgcGFja2V0IGZyb20gc3RhY2sKICAgICAgLSBjbGVhbmVkIHVwIHNvbWUgY29tbWVudHMKICAgICAgLSBmYWlsdXJlIHJldHVybnMgbXVjaCBmYXN0ZXIgKGlmIHNlcnZlciByZXNwb25kcywgZG9uJ3Qgd2FpdCBmb3IKCXRpbWVvdXQpCiAgICAgIC0gdXNlIGJ1aWx0IGluIGZ1bmN0aW9ucyAobWVtY3B5KSByYXRoZXIgdGhhbiBieXRlIGNvcHkuCgogICAgU2lnbmVkLW9mZi1ieTogUm9iaW4gR2V0eiA8cmdldHpAYmxhY2tmaW4udWNsaW51eC5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBQaWV0ZXIgVm9vcnRodWlqc2VuIDxwaWV0ZXIudm9vcnRodWlqc2VuQHByb2RyaXZlLm5sPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA4OGFkM2ZkOTFjODNhNDM0M2IyNTM4NWZkNzhmZDhlMjllYmI3MjNmCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEp1bCAxNyAxMjoxNzowMCAyMDA5IC0wNTAwCgogICAgbmV0OiB0c2VjIC0gZml4IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcyB3YXJuaW5nCgogICAgZml4IHRoaXMgZ2NjIDQuNCB3YXJuaW5nOgoKICAgIHRzZWMuYzogSW4gZnVuY3Rpb24gJ3RzZWNfaW5pdCc6CiAgICB0c2VjLmM6MjAwOiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBkOWJlYzlmNDJhYjM0MzgzNzM3YzhhOTQ0MjlhYTAyZmU3NmQ3OTQ2CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgSnVsIDE4IDIxOjA0OjA4IDIwMDkgLTA0MDAKCiAgICBuZXQ6IHJlbmFtZSBOZXRSeFBrdCB0byBOZXRSeFBhY2tldAoKICAgIFRoZSBuZXQgY29kZSBpcyBtb3N0bHkgY29uc2lzdGVudCBpbiB1c2luZyAnUGFja2V0JyByYXRoZXIgdGhhbiAnUGt0Jywgc28KICAgIHJlbmFtZSB0aGUgbWlub3IgZGV0cmFjdG9yIHRvIGZvbGxvdyBzdWl0ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDg4YTRjMmU3N2NkNTY3NGRiNzQ1ZDBjMmViYmFkNjhjOWJhZjc2MGMKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVRodSBKdW4gMjUgMTY6MzM6MDQgMjAwOSArMDkwMAoKICAgIHNoOiBzaF9ldGg6IFJlbW92ZSBnYXJiYWdlIGZyb20gcHJpbnRmCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgQ0M6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMmVhMjBlZmE0N2RhOWQ5OGZmMzgyMjNmZjUxZGVhNTQzOWFkODcwOApBdXRob3I6IEFuZHJlYXMgUHJldHpzY2ggPGFwckBjbi1lbmcuZGU+CkRhdGU6CVRodSBKdWwgOSAyMTo1MDowNSAyMDA5ICswMjAwCgogICAgc21jOTExeDogYWRkIHN1cHBvcnQgZm9yIExBTjkyMjEKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIFByZXR6c2NoIDxhcHJAY24tZW5nLmRlPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA3MTY4ZWJhNzI5YjllNmQ3MzBkYjdjZDEwMjg3NjdmN2IxYTYxMjhiCkF1dGhvcjogRGF2aWQgQnJvd25lbGwgPGRhdmlkLWJAcGFjYmVsbC5uZXQ+CkRhdGU6CVR1ZSBKdW4gOSAxMToxNDoyNCAyMDA5IC0wNzAwCgogICAgcm05MjAwIGV0aGVybmV0IGRyaXZlcjogYm9hcmQtc3BlY2lmaWMgcXVpcmsgKGNzYjMzNykKCiAgICBDU0IzMzcgYm9hcmRzIG9yaWdpbmFsbHkgc2hpcHBlZCB3aXRoIE1pY3JvTW9uaXRvciwgbm90IFUtQm9vdDsKICAgIGFuZCB3aXRoIGEgdmVyc2lvbiB1c2luZyBhIGRpZmZlcmVudCBjb252ZW50aW9uIGZvciByZWNvcmRpbmcKICAgIEV0aGVybmV0IGFkZHJlc3NlcyB0aGFuIGFueW9uZSBlbHNlLiAgVG8gYXZvaWQgYnJlYWtpbmcgTGludXgKICAgIHdoZW4gaXQgdXNlcyBVLUJvb3QsIGhhdmUgaXQgdXNlIHRoZSBzYW1lIGNvbnZlbnRpb24gb24gdGhhdAogICAgaGFyZHdhcmUuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDU3MjE1Y2QyZTU5ZmQ0MDMyNDhkZjhmMmYxOTVlMzgyOTAwZDVmYzIKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVGh1IEp1bCAxNiAwOTo1ODozMSAyMDA5ICswMjAwCgogICAgYXJtLCBraXJrd29vZDogYWRkZWQga3dfZ3Bpb19zZXRfdmFsaWQoKSBpbiBncGlvLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBlYzE2NDQxMDg1ZjQ3MWMwM2E4YzA5MDk1Nzk0NjNlMzFlNWI5NDdhCkF1dGhvcjogRGlldGVyIEtpZXJtYWllciA8ZGstYXJtLWxpbnV4QGdteC5kZT4KRGF0ZToJTW9uIEp1biAyOSAxNDo0NTowOCAyMDA5ICswMjAwCgogICAgS2lya3dvb2Q6IGFkZCBNYXJ2ZWxsIEtpcmt3b29kIGdwaW8gZHJpdmVyCgogICAgU2lnbmVkLW9mZi1ieTogRGlldGVyIEtpZXJtYWllciA8ZGstYXJtLWxpbnV4QGdteC5kZT4KICAgIEFja2VkLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+CiAgICBUZXN0ZWQtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDY4OGI2YTBmZjJkY2JiMGM3ZTYzZWY2M2NiYmNjMjkxZjE0ZjMyMWYKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVGh1IEp1bCAxNiAwOTo1OToxMCAyMDA5ICswMjAwCgogICAgYXJtLCBraXJrd29vZDogYWRkZWQgS1dfVFdTSV9CQVNFIGluIGtpcmt3b29kLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBmYmM4MzY1YWQ3YWIwYWZkNDE0M2JkYmZmYWIyZmQwYjI0ZGYwMDRmCkF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgpEYXRlOglUaHUgSnVsIDE2IDIxOjAyOjI0IDIwMDkgKzA1MzAKCiAgICBNYXJ2ZWxsIFJENjI4MUEgQm9hcmQgc3VwcG9ydAoKICAgIFRoaXMgaXMgTWFydmVsbCdzIDg4RjYyODFfQTAgYmFzZWQgcmVmZXJlbmNlIGRlc2lnbiBib2FyZAoKICAgIFRoaXMgcGF0Y2ggaXMgdGVzdGVkIGZvci0KICAgIDEuIEJvb3QgZnJvbSBEUkFNL05BTkQgZmxhc2gvTkZTCiAgICAyLiBGaWxlIHRyYW5zZmVyIHVzaW5nIHRmdHAgYW5kIGxvYWRiCiAgICAzLiBOQU5EIGZsYXNoIHJlYWQvd3JpdGUvZXJhc2UKCiAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDI5MDZlNmQ2NTRmY2M3ZjI0NTFmZGUyMjVlNGU4YjNmMjBjOTU1NWYKQXV0aG9yOiBQaW90ciBaaWVjaWsgPGtvc21vQHNlbWloYWxmLmNvbT4KRGF0ZToJRnJpIEp1bCAxNyAxNjozNToxOSAyMDA5ICswMjAwCgogICAgYXBpOiBGaXggYnJva2VuIGJ1aWxkIG9uIEFSTS4KCiAgICBUaGlzIHBhdGNoIGZpeGVzIGJyb2tlbiBidWlsZCBpbnRyb2R1Y2VkIGJ5IGNvbW1pdAogICAgODRiZjdjYTUyMmU5NGVjNDAyYTEyNjRiMDE5NzFiOTI0YjdlMjY4ZiAoYXBpOiByZW1vdmUgdW4tbmVlZGVkCiAgICBpZmRlZiBDT05GSUdfQVBJIGFscmVhZHkgaGFuZGxlIGJ5IHRoZSBNYWtlZmlsZSkuCgogICAgU2lnbmVkLW9mZi1ieTogUGlvdHIgWmllY2lrIDxrb3Ntb0BzZW1paGFsZi5jb20+Cgpjb21taXQgNDg2NzdhMWVmNWY4MmFkY2E0OTE0NWE3YmFmMTFlY2U3N2Y1MTk0NQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBKdWwgMjIgMjM6NTM6MjMgMjAwOSArMDIwMAoKICAgIEZpeCAibGQ6IGNhbm5vdCBmaW5kIC1sc3R1YnMiIGJ1aWxkIGVycm9yCgogICAgQ29tbWl0IDFiYzE1Mzg2IG1vdmVkIHRoZSBleGFtcGxlcy8gdG8gZXhhbXBsZXMvc3RhbmRhbG9uZSBidXQgZmFpbGVkCiAgICB0byBhZGFwdCB0aGUgTWFrZWZpbGVzIHRoYXQgbmVlZCB0byBsaW5rIGFnYWluc3QgbGlic3R1YnMuYQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBDYzogU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCBhZTcxMTIxYTExMWRkZjlkZDA1N2NhY2JiZGQwZjUxMDU0YmU0MjhhCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IEp1bCAxOCAyMDo0NzozNiAyMDA5ICswMjAwCgogICAgYXQ5MWNhcDlhZGs6IGZpeCAjaWZkZWYvI2VuZGlmIHBhaXJpbmcKCiAgICBUaGUgI2lmZGVmLyNlbmRpZiBwYWlyaW5nIGluIHRoaXMgZmlsZSB3YXMgb2J2aW91c2x5IG1lc3NlZCB1cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDZiOTZhMjBkNTEyYjA0YTgwODQzODU1Mzg3NGMwMGNmNDA4MTJjNDQKQXV0aG9yOiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+CkRhdGU6CU1vbiBKdWwgMjAgMTE6NDA6MDEgMjAwOSArMDkwMAoKICAgIEFSTSBDb3J0ZXggQTg6IE1vdmUgT01BUDMgc3BlY2lmaWMgcmVzZXQgaGFuZGxlcgoKICAgIEJlY2F1c2Ugb2YgdGhlIHJlc2V0X2NwdSBpcyBzb2Mgc3BlY2lmaWMsIHNob3VsZCBiZSBtb3ZlIHRvIHNvYwoKICAgIENjOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgoKY29tbWl0IDA0OGU3ZWZlOTFmNjYwOTRmODY4MjgxYzEyZTQ4OGNlMmJhZTg5NzYKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgSnVsIDIyIDEwOjEyOjM5IDIwMDkgLTA1MDAKCiAgICA4NXh4Lzg2eHg6IFJlcGxhY2UgaW44L291dDggd2l0aCBpbl84L291dF84IG9uIEZTTCBib2FyZHMKCiAgICBUaGUgcGl4aXMgY29kZSB1c2VkIGluOC9vdXQ4IGFsbCBvdmVyIHRoZSBwbGFjZS4gIFJlcGxhY2UgaXQgd2l0aAogICAgaW5fOC9vdXRfOCBtYWNyb3MuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAwYTZkMGM2MzIwYjc3YmQ2NTcyMzkzYTkzZTZiOGNjZGYzOWM3MTAwCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJVHVlIEp1bCAyMSAxMzo1MTowOCAyMDA5IC0wNTAwCgogICAgeHBlZGl0ZTUzNzA6IEVuYWJsZSBOQU5EIGNvbW1hbmQgc3VwcG9ydAoKICAgIFVzZSB0aGUgTVBDODU3MidzIGVMQkMgdG8gYWNjZXNzIDEgR0IgKG9yIGdyZWF0ZXIpIG9uYm9hcmQgTkFORCBmbGFzaAogICAgdmlhIHRoZSAnbmFuZCcgY29tbWFuZC4KCiAgICBQcmV2aW91c2x5LCB0aGUgWFBlZGl0ZTUzNzAncyBOQU5EIGNoaXAgc2VsZWN0cyB3ZXJlIHByb3Blcmx5CiAgICBjb25maWd1cmVkLCBidXQgTkFORCBzdXBwb3J0IHdhcyBub3QgZW5hYmxlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAzOTEyMWMwODk2YTY3NjBiZDQzNmQ4OGMxNzg5MmY0OWE5NzkwMmQwCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJVHVlIEp1bCAyMSAxMzo1MTowNyAyMDA5IC0wNTAwCgogICAgeGVzOiBJbmNyZWFzZSBDT05GSUdfU1lTX0JPT1RNX0xFTiB0byAxNk1CCgogICAgSW5jcmVhc2luZyBDT05GSUdfU1lTX0JPT1RNX0xFTiBmcm9tIDggTUIgdG8gMTYgTUIgaXMgbmVjZXNzYXJ5IHRvCiAgICBzdXBwb3J0IHVuY29tcHJlc3NpbmcgaW1hZ2VzIGxhcmdlciB0aGFuIDggTUIgd2hlbiB1c2luZyB0aGUgYm9vdG0KICAgIGNvbW1hbmQuCgogICAgTm90ZSB0aGF0IHJlY2VudCBMaW51eCBrZXJuZWxzIGZvciB0aGUgODV4eCBhbmQgODZ4eCBtYXAgZ3JlYXRlciB0aGFuCiAgICAxNk1CIG9mIG1lbW9yeSBvbiBib290dXAsIGJ1dCB3ZSB1c2UgMTZNQiB0byBtYWludGFpbiBjb21wYXRpYmlsaXR5IHdpdGgKICAgIG9sZGVyIExpbnV4IGtlcm5lbHMgZm9yIG5vdy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOYXRlIENhc2UgPG5jYXNlQHhlcy1pbmMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNThmMzFiNjAyZGZkNTJlYjc4MzZhYjgyY2FhNTg3NTE0ZTA0NmYwMgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVN1biBKdWwgMTkgMTk6MTc6NDEgMjAwOSAtMDUwMAoKICAgIHhwZWRpdGU1MzcwOiBGaXggSTJDIEdQSU8gaW5pdGlhbGl6YXRpb24gdHlwbwoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBBY2tlZC1ieTogSGVpa28gU2Nob2NoZXI8aHNAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNWZmODIxMDA2YzZlNzY0N2QxODNlYTk1ODE3MDQ0OTQzYmIyMmU3ZQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVN1biBKdWwgMTkgMTk6MTc6NDAgMjAwOSAtMDUwMAoKICAgIHhwZWRpdGU1MjAwLDUzNzA6IFVzZSBidWZmZXJlZCBOT1IgZmxhc2ggd3JpdGVzCgogICAgQnVmZmVyZWQgd3JpdGVzIGFyZSBwb3NzaWJsZSBvbiB0aGUgWFBlZGl0ZTUyMDAgYW5kIFhQZWRpdGU1MzcwIGFuZCBncmVhdGx5CiAgICBpbXByb3ZlIE5PUiBmbGFzaCB3cml0ZSBzcGVlZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBkOWMxNDdmMzcxODAwYTQ3OWE1MDdhODE2YjJmZTU3MmM5N2RhMTk3CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJRnJpIEp1bCAxNyAxMDoxNDo0OCAyMDA5IC0wNTAwCgogICAgODV4eCwgODZ4eDogQWRkIGNvbW1vbiBib2FyZF9hZGRfcmFtX2luZm8oKQoKICAgIFByZXZpb3VzbHksIDg1eHggYW5kIDg2eHggYm9hcmRzIHdvdWxkIGRpc3BsYXkgRFJBTSBpbmZvcm1hdGlvbiBvbgogICAgYm9vdHVwIHN1Y2ggYXM6CgogICAgLi4uCiAgICBJMkM6ICAgcmVhZHkKICAgIERSQU06CiAgICBNZW1vcnkgY29udHJvbGxlciBpbnRlcmxlYXZpbmcgZW5hYmxlZDogQmFuayBpbnRlcmxlYXZpbmchCiAgICAgMiBHQgogICAgRkxBU0g6IDI1NiBNQgogICAgLi4uCgogICAgVGhpcyBwYXRjaCBtb3ZlcyB0aGUgcHJpbnRpbmcgb2YgdGhlIERSQU0gY29udHJvbGxlciBjb25maWd1cmF0aW9uIHRvIGEKICAgIGNvbW1vbiBib2FyZF9hZGRfcmFtX2luZm8oKSBmdW5jdGlvbiB3aGljaCBwcmludHMgb3V0IEREUiB0eXBlLCB3aWR0aCwKICAgIENBUyBsYXRlbmN5LCBhbmQgRUNDIG1vZGUuCUl0IGFsc28gbWFrZXMgdGhlIEREUiBpbnRlcmxlYXZpbmcKICAgIGluZm9ybWF0aW9uIHByaW50IG91dCBpbiBhIG1vcmUgc2FuZSBtYW5uZXI6CgogICAgLi4uCiAgICBJMkM6ICAgcmVhZHkKICAgIERSQU06ICAgMiBHQiAoRERSMiwgNjQtYml0LCBDTD00LCBFQ0Mgb24pCgkgICBERFIgQ29udHJvbGxlciBJbnRlcmxlYXZpbmcgTW9kZTogYmFuawogICAgRkxBU0g6IDI1NiBNQgogICAgLi4uCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMTJhNDQwYWU2ZDA5NDQ1MTQwZjFhMGMyMDIzZGJhNzZhOWYxYTYxNwpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBKdWwgMTcgMTA6MTQ6NDcgMjAwOSAtMDUwMAoKICAgIHRxbTg1eHg6IFJlbW92ZSBib2FyZF9hZGRfcmFtX2luZm8oKQoKICAgIFRoaXMgaXMgaW4gcHJlcGFyYXRpb24gZm9yIGFkZGluZyBvbmUgY29tbW9uIDh4eHggYm9hcmRfYWRkX3JhbV9pbmZvKCkKICAgIGZ1bmN0aW9uIGZvciBhbGwgOHh4eCBib2FyZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBlZDJjOTQ4OGJiZTM4OWI3YjI1Y2FkYTFlNDJiZGFlNWQwOTc2MzI3CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJRnJpIEp1bCAxNyAxMDoxNDo0NiAyMDA5IC0wNTAwCgogICAgeGVzOiBSZW1vdmUgOHh4eCBib2FyZF9hZGRfcmFtX2luZm8oKSBmdW5jdGlvbgoKICAgIFRoaXMgaXMgaW4gcHJlcGFyYXRpb24gZm9yIGFkZGluZyBvbmUgY29tbW9uIDh4eHggYm9hcmRfYWRkX3JhbV9pbmZvKCkKICAgIGZ1Y3Rpb24gZm9yIGFsbCA4eHh4IGJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGU3ZWUyM2VjMTc4OGQ4Y2YyNjlhNGNmNmI5Y2QzNzIyY2JjN2Q1OTIKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglGcmkgSnVsIDE3IDEwOjE0OjQ1IDIwMDkgLTA1MDAKCiAgICA4Nnh4OiBSZW5hbWUgY2Nzcl9kZHIncyBzZHJhbV9tb2RlXzEsIHNkcmFtX2NmZ18xIGZpZWxkcwoKICAgIFJlbmFtZSBzZHJhbV9tb2RlXzEgdG8gc2RyYW1fbW9kZSBhbmQgc2RyYW1fY2ZnXzEgdG8gc2RyYW1fY2ZnIHRvIG1hdGNoCiAgICB0aGUgODZ4eCB1c2VyJ3MgbWFudWFsIGFuZCBvdGhlciBGcmVlc2NhbGUgYXJjaGl0ZWN0dXJlcwoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGY2MTU1YzZmYmIxZDg1ZjUxN2I3YzE2MDU3MGYwOTk1ZWYxNGM0M2YKQXV0aG9yOiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgOSAxMDowNTo0OCAyMDA5ICswODAwCgogICAgODV4eDogQWRkIHBjaS9wY2llIEUxMDAwIGV0aGVybmV0IHN1cHBvcnQgZm9yIE1QQzg1NDREUyBhbmQgTVBDODUzNiBib2FyZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDZiYjViNDEyMjkxMTc3ZTZlZGQ0MmY5YTgwZTVjNWFmZTU3YTZhMGYKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgSnVsIDE0IDIyOjQyOjAxIDIwMDkgLTA1MDAKCiAgICA4NXh4OiBSZXBvcnQgd2hpY2ggImJhbmsiIG9mIE5PUiBmbGFzaCB3ZSBhcmUgYm9vdGluZyBmcm9tIG9uIEZTTCBib2FyZHMKCiAgICBUaGUgcDIwMjBEUywgTVBDODUzNkRTLCBNUEM4NTcyRFMsIE1QQzg1NDREUyBib2FyZHMgYXJlIGNhcGFibGUgb2YKICAgIHN3aXp6bGluZyB0aGUgdXBwZXIgYWRkcmVzcyBiaXRzIG9mIHRoZSBOT1IgZmxhc2ggd2UgYm9vdCBvdXQgb2Ygd2hpY2gKICAgIGNyZWF0ZXMgdGhlIGNvbmNlcHQgb2YgInZpcnR1YWwiIGJhbmtzLiAgVGhpcyBpcyB1c2VmdWwgaW4gdGhhdCB3ZSBjYW4KICAgIGZsYXNoIGEgdGVzdCBvZiBpbWFnZSBvZiB1LWJvb3QgYW5kIHJlc2V0IHRvIG9uZSBvZiB0aGUgdmlydHVhbCBiYW5rcwogICAgd2hpbGUgc3RpbGwgbWFpbnRhaW5pbmcgYSB3b3JraW5nIGltYWdlIGluICJiYW5rIDAiLgoKICAgIFRoZSBQSVhJUyBGUEdBIGV4cG9zZXMgcmVnaXN0ZXJzIG9uIExCQyB3aGljaCB3ZSBjYW4gdXNlIHRvIGRldGVybWluZQogICAgd2hpY2ggImJhbmsiIHdlIGFyZSBib290aW5nIG91dCBvZiAoYXMgd2VsbCBhcyBzZXR0aW5nIHdoaWNoIGJhbmsgdG8KICAgIGJvb3Qgb3V0IG9mKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDlhZjljNmJkYzE2ZGE1Mzc3MmM1NmIxYTc5YzJjOTE3MDFmZTk0ZTYKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgSnVsIDE1IDEzOjQ1OjAwIDIwMDkgLTA1MDAKCiAgICA4Nnh4OiBSZXBvcnQgd2hpY2ggImJhbmsiIG9mIE5PUiBmbGFzaCB3ZSBhcmUgYm9vdGluZyBmcm9tIG9uIE1QQzg2NDFIUENOCgogICAgVGhlIE1QQzg2NDFIUENOIGJvYXJkIGlzIGNhcGFibGUgb2Ygc3dpenpsaW5nIHRoZSB1cHBlciBhZGRyZXNzIGJpdCBvZgogICAgdGhlIE5PUiBmbGFzaCB3ZSBib290IG91dCBvZiB3aGljaCBjcmVhdGVzIHRoZSBjb25jZXB0IG9mICJ2aXJ0dWFsIgogICAgYmFua3MuICBUaGlzIGlzIHVzZWZ1bCBpbiB0aGF0IHdlIGNhbiBmbGFzaCBhIHRlc3Qgb2YgaW1hZ2Ugb2YgdS1ib290CiAgICBhbmQgcmVzZXQgdG8gb25lIG9mIHRoZSB2aXJ0dWFsIGJhbmtzIHdoaWxlIHN0aWxsIG1haW50YWluaW5nIGEKICAgIHdvcmtpbmcgaW1hZ2UgaW4gImJhbmsgMCIuCgogICAgVGhlIFBJWElTIEZQR0EgZXhwb3NlcyByZWdpc3RlcnMgb24gTEJDIHdoaWNoIHdlIGNhbiB1c2UgdG8gZGV0ZXJtaW5lCiAgICB3aGljaCAiYmFuayIgd2UgYXJlIGJvb3Rpbmcgb3V0IG9mIChhcyB3ZWxsIGFzIHNldHRpbmcgd2hpY2ggYmFuayB0bwogICAgYm9vdCBvdXQgb2YpLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgY2FmNzJmZjMyOTc1OWI0ZGE3MTM1MmFiMDk4NTM3Yzc2OThjMGU5ZgpBdXRob3I6IEx1aWdpICdDb21pbycgTWFudGVsbGluaSA8bHVpZ2kubWFudGVsbGluaUBpZGYtaGl0LmNvbT4KRGF0ZToJVHVlIEp1bCAyMSAxMDo0NTo0OSAyMDA5ICswMjAwCgogICAgUmVmcmVzaCBMWk1BLWxpYiB0byB2NC42NQoKICAgIFNpZ25lZC1vZmYtYnk6IEx1aWdpICdDb21pbycgTWFudGVsbGluaSA8bHVpZ2kubWFudGVsbGluaUBpZGYtaGl0LmNvbT4KCmNvbW1pdCA3MGViZjMxNjMzZjM3MmEyNDUwNWU0Nzg0NmIyNjI4ZTg0MzVlYTM3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIEp1bCAxNyAyMzozNToyOSAyMDA5ICswMjAwCgogICAgQVQ5MTogZmFjdG9yIG91dCBST1VORCgpIG1hY3JvCgogICAgQSBsYXJnZSBudW1iZXIgb2YgYm9hcmRzIChhbGwgQVQ5MSBiYXNlZCkgZHVwbGljYXRlZCB0aGUgUk9VTkQoKQogICAgbWFjcm8gaW4gdGhlaXIgYm9hcmQgc3BlY2lmaWMgY29uZmlnIGZpbGVzLiBBZGQgdGhlIGRlZmluaXRpb24gdG8KICAgIGluY2x1ZGUvY29tbW9uLmggYW5kIGNsZWFuIHVwIHRoZSBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA4OTE4OGE2MjMzM2MwODQxYTcxNjY3ODNkMmViZGQzOWQ3MDQ0ZWIyCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEp1bCAxNSAwODo1NDo1MCAyMDA5IC0wNTAwCgogICAgODV4eDogQnVtcCB1cCB0aGUgQk9PVE1BUCB0byAxNk0gb24gRlNMIDg1eHggYm9hcmRzCgogICAgV2UgaGF2ZSBhbHdheXMgbWFwcGVkIGF0IGxlYXN0IDE2TSBpbiB0aGUga2VybmVsIGFuZCB3ZSBoYXZlIHNlZW4gY2FzZXMKICAgIHdpdGggbmV3IGtlcm5lbCBmZWF0dXJlcyB0aGF0IGEga2VybmVsIGltYWdlIG5lZWRzIG1vcmUgdGhhbiA4TSBvZgogICAgbWVtb3J5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZDRhYmM3NTdjMjZjNTMxMjkzZjViYmM0MjYyYWRlNDRhMzE3ZWVjOQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBKdWwgMjAgMTk6MDI6MjEgMjAwOSAtMDUwMAoKICAgIE1vdmUgYXBpX2V4YW1wbGVzIHRvIGV4YW1wbGVzL2FwaQoKICAgIEFsc28gYWRkIGEgcnVsZSB0byByZW1vdmUgZGVtby5iaW4gd2hpY2ggd2FzIHByZXZpb3VzbHkgbGVmdG92ZXIKICAgIGFmdGVyIGEgIm1ha2UgY2xlYW4iCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCBhZjFkN2Q5ODRhMjNhMGZhYTFmNDM2ZWJmZWI1NWM4NzZiMWE5OWUxCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVR1ZSBKdWwgMjEgMDY6Mzc6MjggMjAwOSArMDIwMAoKICAgIDgzeHgsIGttZXRlcjogZml4IGNvbXBpbGUgZXJyb3IKCiAgICBDT05GSUdfU1lTX01BTExPQ19MRU4gaXMgZGVmaW5lZCBpbiB0aGUgYm9hcmQgY29uZmlnLCBhbmQKICAgIHRoZSBrZXltaWxlLWNvbW1vbi5oLCB3aGljaCBjb2xsZWN0cyBjb21tb24gb3B0aW9ucyB1c2VkCiAgICBieSBhbGwga2V5bWlsZS1ib2FyZHMuIFRoaXMgcmVzdWx0cyBpbiBhIGNvbXBpbGUgZXJyb3IKICAgIHdoZW4gY29tcGlsaW5nIHRoZSBrbWV0ZXIxIGJvYXJkLiBTbyByZW1vdmUgdGhpcyBkZWZpbmUKICAgIGluIHRoZSBib2FyZCBjb25maWcgZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAzOWRmMDBkOWFlY2ZiNDY1YjllZWM5YWY1OTNmOWI3NjNmYjUyMDlhCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVRodSBKdWwgOSAxMjowNDoyNiAyMDA5ICswMjAwCgogICAgaTJjLCBtcGM4M3h4OiBhZGQgQ09ORklHX1NZU19JMkNfSU5JVF9CT0FSRCBmb3IgZnNsX2kyYwoKICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgcG9zc2liaWxpdHkgdG8gY2FsbCBhIGJvYXJkIHNwZWNpZmljCiAgICBpMmMgYnVzIHJlc2V0IHJvdXRpbmUgZm9yIHRoZSBmc2xfaTJjIGJ1cyBkcml2ZXIsIGFuZCBhZGRzCiAgICB0aGlzIG9wdGlvbiBmb3IgdGhlIGtleW1pbGUga21ldGVyMSBib2FyZC4KCiAgICBUaGUgZGVibG9jayBzZXF1ZW5jZSBmb3IgdGhpcyBib2FyZCBpcyBpbXBsZW1lbnRlZCBhbmQKICAgIHRlc3RlZCBpbiB0aGUgZm9sbG93aW5nIHdheToKCiAgICBDUiA9IDB4MjAgKHJlbGVhc2UgU0RBIGFuZCBTQ0wgcGluKQogICAgQ1IgPSAweGEwIChzdGFydCByZWFkKQogICAgZHVtbXkgcmVhZAogICAgZHVtbXkgcmVhZAogICAgaWYgMi4gZHVtbXkgcmVhZCA9PSAweDAwCgkzLiBkdW1teSByZWFkCgogICAgQ1IgPSAweDgwIChTREEgYW5kIFNDTCBub3cgMSBTUiA9IDB4ODYpCiAgICBDUiA9IDB4MDAgKE1vZHVsIHJlc2V0IFNSPTB4ODEpCiAgICBDUiA9IDB4ODAgKFNEQSBhbmQgU0NMID0gMSwgU1IgPSAweDgxKQoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDFiYzE1Mzg2MTNkNjZjZWYzY2JjZTY4MGZjOGQ3YzM1NjFhMGZiZDAKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglGcmkgSnVsIDEwIDExOjAzOjE5IDIwMDkgLTA1MDAKCiAgICBNb3ZlIGV4YW1wbGVzLyB0byBleGFtcGxlcy9zdGFuZGFsb25lCgogICAgVGhlIGN1cnJlbnQgZmlsZXMgaW4gZXhhbXBsZXMgYXJlIGFsbCBzdGFuZGFsb25lIGFwcGxpY2F0aW9uIGV4YW1wbGVzLAogICAgc28gcHV0IHRoZW0gaW4gdGhlaXIgb3duIHN1YmRpcmVjdG9yeSBmb3Igb3JnYW5pemF0aW9uYWwgcHVycG9zZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IGIyMjBjNjRkODZmN2M3MDVhMTgzMzAyYzNiNTAwNzZkN2U1ZDg3NmMKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglGcmkgSnVsIDEwIDExOjAzOjE1IDIwMDkgLTA1MDAKCiAgICBNb3ZlIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBjb25maWcubWsgZmlsZXMgaW50byBzdWJkaXJzCgogICAgVGhpcyBjbGVhbnMgdXAgVS1Cb290J3MgdG9wbGV2ZWwgZGlyZWN0b3J5IGEgYml0IGFuZCBtYWtlcyB0aGUKICAgIGFyY2hpdGVjdHVyZSAnY29uZmlnLm1rJyBmaWxlIG5hbWluZyBhbmQgbG9jYXRpb24gc2ltaWxhciB0byBib2FyZAogICAgYW5kIGNwdSAnY29uZmlnLm1rJyBmaWxlcwoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgMDgyYmVjZDBkNTQ2Mzk5NjM3ZmE5NGZkZjlmMTczMGEwZjdiZjM0OApBdXRob3I6IFBvLVl1IENodWFuZyA8cmF0YmVydEBmYXJhZGF5LXRlY2guY29tPgpEYXRlOglGcmkgSnVsIDEwIDE4OjI1OjM0IDIwMDkgKzA4MDAKCiAgICBBZGQgInRhZ3MiIHRvIC5naXRpZ25vcmUgZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQby1ZdSBDaHVhbmcgPHJhdGJlcnRAZmFyYWRheS10ZWNoLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZGM3MWIyNDhlZjBkNWUxMmIxOWYzM2M2ZWZiODczZTMxZGY5MWZhOQpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglUaHUgSnVsIDkgMTI6MDQ6MTggMjAwOSArMDIwMAoKICAgIHBvd2VycGM6IHVwZGF0ZXMgZm9yIHRoZSBrZXltaWxlIGJvYXJkcwoKICAgIC0gQ09ORklHX1NZU19NQVhfSTJDX0JVUyBjaGFuZ2VkIHRvIDEKICAgICAgV2UgdXNlIG9ubHkgb25lIEkyQyBoYXJkd2FyZWNvbnRyb2xsZXIgb24gdGhpcyBib2FyZHMsIHNvCiAgICAgIGNoYW5nZSB0aGUgQ09ORklHX1NZU19NQVhfSTJDX0JVUyB0byAxLgogICAgLSBjb21tb246IGRvbnQgcHJpbnQgZXJyb3Jtc2cgaWYgc2Vjb25kIElWTSBCbG9jayBsYWNrcy4KICAgIC0gODJ4eCwgbWdjb2dlOiBmaXggZG91YmxlIG10ZHBhcnQgZW50cnkgaW4gZW52aXJvbm1lbnQKICAgIC0gODJ4eCwgbWdjb2dlOiBhY3RpdmF0ZSBvbiBzZWNvbmQgRmxhc2ggdGhlIHNlY29uZCBiYW5rLgogICAgLSBjb21tb246IENPTkZJR19FTlZfU0laRSAweDQwMDAgZm9yIGFsbCBrZXltaWxlIGJvYXJkcwogICAgLSBjb21tb246IENoYW5nZSBtYWxsb2Mgc2l6ZSB0byAxTUJ5dGUgZm9yIGFsbCBLZXltaWxlIGJvYXJkcwoJV2UgbmVlZCBhIGJpZ2dlciBtYWxsb2MgYXJlYSBmb3IgdGhlIGVudmlyb25tZW50IHN1cHBvcnQgKDEyOGspCglvbiBzb21lIEtleW1pbGUgYm9hcmRzIChrbWV0ZXIxKSBhbmQgdGhlIHVwY29taW5nIFVCSSBzdXBwb3J0LgoJQ2hhbmdlIGl0IHRvIDFNQiBmb3IgYWxsIEtleW1pbGUgYm9hcmRzIHRvIGJlIG9uIHRoZSBzYXZlIHNpZGUuCglBbHNvIGRlZmluZSBDT05GSUdfU1lTXzY0QklUX1ZTUFJJTlRGIHdoaWNoIGlzIG5lZWRlZCBmb3IKCVVCSS9VQklGUyBzdXBwb3J0LgogICAgLSBBZGQgVUJJIHN1cHBvcnQgdG8gYWxsIEtleW1pbGUgYm9hcmRzCiAgICAtIGNoYW5nZSBtYW5uZXIgb2Ygd3JpdGluZyAiL2xvY2FsYnVzL3JhbmdlcyIgbm9kZQoJaW5zdGVhZCBvZiB3cml0dGluZyB0aGUgY29tcGxldGUgIi9sb2NhbGJ1cy9yYW5nZXMiIG5vZGUKCWJlZm9yZSBib290aW5nIExpbnV4LCBvbmx5IHVwZGF0ZSB0aGUgcmFuZ2VzIGVudHJpZXMKCXdoaWNoIGdldHMgZHluYW1pY2FsIGRldGVjdGVkIChzaXplIG9mIGZsYXNoZXMpLgoJVGhpcyBpcyBuZWVkZWQsIGJlY2F1c2Uga2V5bWlsZSBhZGRzIGluIHRoZSBEVFMKCSIvbG9jYWxidXMvcmFuZ2VzIiBub2RlIGVudHJpZXMsIHdoaWNoIHUtYm9vdCBtdXN0Cglub3Qgb3ZlcndyaXRlL2RlbGV0ZS4KICAgIC0ga21ldGVyLCBtZ2NvZ2U6IGRlZmluZSAyIHNlcGVyYXRlIHJlZ2lvbnMgbmVlZGVkIGZvciB0aGUgSW50ZWwgUDMwIGNoaXBzCglUaGUgSW50ZWwgUDMwIGNoaXAgaGFzIDIgbm9uLWlkZW50aWNhbCBjaGlwcyBvbgoJb25lIGRpZSwgc28gd2UgbmVlZCB0byBkZWZpbmUgMiBzZXBlcmF0ZSByZWdpb25zCgl0aGF0IGFyZSBzY2FubmVkIGJ5IHBoeXNtYXBfb2YgaW5kZXBlbmRhbnRseS4KICAgIC0ga21ldGVyMTogQWRkIE1URCBjb25jYXQgc3VwcG9ydCB0byBLZXltaWxlIGJvYXJkcwogICAgLSA4Mnh4LCBtZ2NvZ2U6IGFkZCAidW5sb2NrPXllcyIgdG8gZGVmYXVsdCBlbnZpcm9ubWVudAogICAgLSBhZGRlZCBDT05GSUdfTVREX0RFVklDRSB0byBnZXQgaW4gc3luYyB3aXRoIG1haW5saW5lIGNvZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmMTRkODEwNTBhOWUwZmE1N2FlZGIxYmM3NDZjNjBhMDdjMWFkNjdmCkF1dGhvcjogZ2FsYWsgPGdhbGFrQGR1Y2t5LmFtLmZyZWVzY2FsZS5uZXQ+CkRhdGU6CVR1ZSBKdWwgNyAxNTo1MzoyMSAyMDA5IC0wNTAwCgogICAgZnNsX3NhdGE6IEZpeCBjb21waWxlciB3YXJuaW5ncyBzaG93biBieSBnY2MtNC40CgogICAgVXBkYXRlIGZzbF9zYXRhIHRvIHVzZSBjb21tb24gc3RydWN0dXJlcyBpbnN0ZWFkIG9mIGNhc3RpbmcKICAgIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gdGhlIGZzbCBzcGVjaWZpYyBvbmVzIGFuZCB0aGUgY29tbW9uIG9uZXMKICAgICh3aGljaCBhcmUgaWRlbnRpY2FsKS4KCiAgICBmc2xfc2F0YS5jOiBJbiBmdW5jdGlvbiAnc2Nhbl9zYXRhJzoKICAgIGZzbF9zYXRhLmM6NTUwOiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHBvaW50ZXIgJ2NmaXMnIGRvZXMgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCiAgICBmc2xfc2F0YS5jOjU0OTogd2FybmluZzogZGVyZWZlcmVuY2luZyBwb2ludGVyICdjZmlzJyBkb2VzIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwogICAgZnNsX3NhdGEuYzo1NDg6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgcG9pbnRlciAnY2ZpcycgZG9lcyBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKICAgIGZzbF9zYXRhLmM6NTQ1OiBub3RlOiBpbml0aWFsaXplZCBmcm9tIGhlcmUKICAgIGZzbF9zYXRhLmM6NTkyOiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHBvaW50ZXIgJ2NmaXMnIGRvZXMgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCiAgICBmc2xfc2F0YS5jOjU5MDogd2FybmluZzogZGVyZWZlcmVuY2luZyBwb2ludGVyICdjZmlzJyBkb2VzIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwogICAgZnNsX3NhdGEuYzo1ODg6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgcG9pbnRlciAnY2ZpcycgZG9lcyBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKICAgIGZzbF9zYXRhLmM6NTg2OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHBvaW50ZXIgJ2NmaXMnIGRvZXMgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCiAgICBmc2xfc2F0YS5jOjU3OTogd2FybmluZzogZGVyZWZlcmVuY2luZyBwb2ludGVyICdjZmlzJyBkb2VzIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwogICAgLi4uCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAyMDkzOGU1NGEyMDc0NzJhMDkwZjA0ZjIwZjMwYzllMzJiMTQxMzdlCkF1dGhvcjogU2ltb24gS2Fnc3Ryb20gPHNpbW9uLmthZ3N0cm9tQG5ldGluc2lnaHQubmV0PgpEYXRlOglUdWUgSnVsIDcgMTU6NTg6NTEgMjAwOSArMDIwMAoKICAgIEFkZCB1bmFsaWduZWQuaCBmb3IgYXJtCgogICAgVGhpcyBwYXRjaCBhZGRzIHVuYWxpZ25lZC5oIGZvciBBUk0gKG5lZWRlZCB0byBidWlsZCB3aXRoIExaTwogICAgY29tcHJlc3Npb24pLiBUaGUgZmlsZSBpcyB0YWtlbiBmcm9tIHRoZSBsaW51eCBrZXJuZWwsIGJ1dCBpbmNsdWRlcwogICAgdS1ib290IGhlYWRlcnMgaW5zdGVhZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDQzM2VhOGFiZDZhZGZhZTMxMzhkZDRjZTIzODIzN2EwMzdlMWU1MzcKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglTdW4gSnVsIDE5IDE5OjE3OjQyIDIwMDkgLTA1MDAKCiAgICBSZW1vdmUgbGFzdCByZW1hbmFudHMgb2YgdW51c2VkIENPTkZJR19JMkNfQ01EX1RSRUUKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IGY2Y2EzYjcwOTQ5NzkwYWI1NDM4ZDZjOWE1OTIyMTZjYzM2MTYxMTAKQXV0aG9yOiBBbmRyemVqIFdvbHNraSA8YXdvbHNraUBwb2N6dGEuZm0+CkRhdGU6CUZyaSBKdWwgMTcgMjI6MjY6NTQgMjAwOSArMDIwMAoKICAgIHViaTogaGVscCBtZXNzYWdlIGNvcnJlY3Rpb24KCiAgICBGaXggaW5jb3JyZWN0IGluZm9ybWF0aW9uIGFib3V0IHNpemUgdW5pdHMgYW5kIGNvcnJlY3QgdHlwby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyemVqIFdvbHNraSA8YXdvbHNraUBwb2N6dGEuZm0+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMjJmMjAxN2MzMWJjNjgyZTliMTU2MTJhNWMyNTgwYWI1Yjg0NDE4ZQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVN1biBKdWwgMTkgMTk6MTc6NDIgMjAwOSAtMDUwMAoKICAgIFJlbW92ZSBsYXN0IHJlbWFuYW50cyBvZiB1bnVzZWQgQ09ORklHX0kyQ19DTURfVFJFRQoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgZjk5YTI5MmFhNjA4MzA1N2Y1ZGI4MjgzZDJjZTRhMmJlMjJiODg1NgpBdXRob3I6IEFuZHJ6ZWogV29sc2tpIDxhd29sc2tpQHBvY3p0YS5mbT4KRGF0ZToJRnJpIEp1bCAxNyAyMjoyNjo1NCAyMDA5ICswMjAwCgogICAgdWJpOiBoZWxwIG1lc3NhZ2UgY29ycmVjdGlvbgoKICAgIEZpeCBpbmNvcnJlY3QgaW5mb3JtYXRpb24gYWJvdXQgc2l6ZSB1bml0cyBhbmQgY29ycmVjdCB0eXBvLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJ6ZWogV29sc2tpIDxhd29sc2tpQHBvY3p0YS5mbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBiODZiODVlMjYxMWQ1N2Q4MzQ3OTVhOTI0NTM0MzFhMWEzNDBjM2M5CkF1dGhvcjogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CkRhdGU6CU1vbiBKdW4gMjkgMTc6NTM6MTYgMjAwOSArMDQwMAoKICAgIG1tYzogc2V0IGJ1cyB3aWR0aCB0byAxIGFuZCBjbG9jayB0byBtaW5pbXVtIGVhcmx5IGR1cmluZyBpbml0aWFsaXphdGlvbgoKICAgIFdlIG5lZWQgdG8gc3dpdGNoIGJhY2sgdG8gMS1iaXQgYmVmb3JlIGluaXRpYWxpemF0aW9uIG9yIFNEIDIuMCBjYXJkcwogICAgd2lsbCBmYWlsIHRvIHNlbmQgU0NSIGlmIHdlJ3ZlIHN3aXRjaGVkIHRvIDQtYml0IGFscmVhZHkuCgogICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Cgpjb21taXQgY2ZmODBmMmNkMTJiZjk3Njc1MDliNTMzNGVjZmM5MGNkN2RlNTUwMgpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcG9ib3guY29tPgpEYXRlOglTYXQgSnVuIDIwIDE5OjE0OjMzIDIwMDkgKzA5MDAKCiAgICBjb25maWcubWs6IFJlbW92ZSB1bnVzZWQgSFBBVEgKCiAgICBUaGlzIHZhcmlhYmxlIGlzIG5vdCB1bnVzZWQgYW55d2hlcmUuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBwb2JveC5jb20+Cgpjb21taXQgYTc4MWRlMTI3MDBlMmNiM2QzMDExZmM4M2I0N2Y3ZGQ4Y2MzYzE1NApBdXRob3I6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgSnVuIDE3IDE2OjIwOjE0IDIwMDkgKzAyMDAKCiAgICBkaWdzeSBtdGM6IEVuYWJsZSBjb21tYW5kIGxpbmUgaGlzdG9yeS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KCmNvbW1pdCAzNzU2NjA5MDc2NmQ2MWJlZWY3MGM2Mjk4NmI5MDc0OTkyMDI1NWQ4CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgSnVsIDIgMTk6MjM6MjUgMjAwOSAtMDQwMAoKICAgIGNvbXBpbGVyLmg6IHVuaWZ5IHN5c3RlbSBpZmRlZiBjcnVmdCBoZXJlCgogICAgU2hvdmUgYSBsb3Qgb2YgdGhlIEhPU1RDQyBhbmQgcmVsYXRlZCAjaWZkZWYgY2hlY2tpbmcgY3JhcCBpbnRvIHRoZSBuZXcKICAgIGNvbXBpbGVyLmggaGVhZGVyIHNvIHRoYXQgd2UgY2FuIGtlZXAgYWxsIG90aGVyIGhlYWRlcnMgbmljZSBhbmQgY2xlYW4uCgogICAgQWxzbyBpbnRyb2R1Y2UgY3VzdG9tIHVzd2FwIGZ1bmN0aW9ucyBzbyB3ZSBkb24ndCBoYXZlIHRvIHJlbHkgb24gdGhlIG5vbgogICAgc3RhbmRhcmQgaW1wbGVtZW50YXRpb25zIHRoYXQgYSBob3N0IG1heSAob3IgbWF5IG5vdCBpbiB0aGUgY2FzZSBvZiBPUyBYKQogICAgcHJvdmlkZS4gIFRoaXMgYWxsb3dzIG1raW1hZ2UgdG8gZmluYWxseSBidWlsZCBjbGVhbmx5IG9uIGFuIE9TIFggc3lzdGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAyYTJlZDg0NWMwODVlYjA5M2I2OWZhNjM4MmZjZjc1MzRiYjFmNGIwCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEp1biAxNSAxMTo1MDo0MCAyMDA5IC0wNTAwCgogICAgY29tbW9uOiBmaXggJ2R1bW15JyBpcyB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbiB3YXJuaW5nCgogICAgZml4IHRoaXMgZ2NjIDQuNCB3YXJuaW5nOgoKICAgIHh5ek1vZGVtLmM6IEluIGZ1bmN0aW9uICd4eXpNb2RlbV9zdHJlYW1fb3Blbic6CiAgICB4eXpNb2RlbS5jOjU2NDogd2FybmluZzogJ2R1bW15JyBpcyB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMWVhNmJjZDg1OTBiM2ZmOWZlMmJmYmIwZWIyOWEzYjBlZGFhOTQ2MApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU3VuIEp1biAxNCAyMzozMzoxNCAyMDA5IC0wNDAwCgogICAgcHVzaCBDUk9TU19DT01QSUxFIG91dCB0byAkKEFSQ0gpX2NvbmZpZy5tawoKICAgIEVhY2ggYXJjaCBzaG91bGQgaGFuZGxlIHNldHRpbmcgYSBwcm9wZXIgZGVmYXVsdCBDUk9TU19DT01QSUxFIHZhbHVlIGluCiAgICB0aGVpciBvd24gY29uZmlnLm1rIGZpbGUgcmF0aGVyIHRoYW4gaGF2aW5nIHRvIG1haW50YWluIGEgbGFyZ2UgdWdseSBsaXN0CiAgICBpbiB0aGUgTWFrZWZpbGUuICBCeSB1c2luZyBjb25kaXRpb25hbCBhc3NpZ25tZW50LCB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5CiAgICBhYm91dCB0aGUgdmFyaWFibGUgYWxyZWFkeSBiZWluZyBzZXQgKGVudi9jbWRsaW5lL2V0Yy4uLikuCgogICAgVGhlIGNvbW1vbiBjb25maWcubWsgZmlsZSB0YWtlcyBjYXJlIG9mIGV4cG9ydGluZyBDUk9TU19DT01QSUxFIGFscmVhZHksCiAgICBhbmQgd2hpbGUgYSBmZXcgdmFyaWFibGVzICh0b29sY2hhaW4gb25lcykgdXRpbGl6ZSBDUk9TU19DT01QSUxFIGJlZm9yZQogICAgaW5jbHVkaW5nIHRoZSBhcmNoIGNvbmZpZy5taywgdGhleSBkbyBzbyB3aXRoIGRlZmVycmVkIGFzc2lnbm1lbnQuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDYwYTNmNDA0YWNiZjgyMzhhMzEzOGZlMWY4MGE2YmFjNzVkYTQ1ODIKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgSnVuIDEzIDEyOjU1OjM3IDIwMDkgKzAyMDAKCiAgICBtYWxsb2MuaDogcHJvdGVjdCBpdCBhZ2FpbnN0IG11bHRpcGxlIGluY2x1ZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDc2NDBmNDE5ODhhNDU2YTBiMWYwNTI2M2QyZTJkYzVjZDdkOTM5ODQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gSnVsIDE5IDE5OjM3OjI0IDIwMDkgKzAyMDAKCiAgICBGaXggYm9hcmRzIGJyb2tlbiBhZnRlciByZW1vdmFsIG9mIGxlZ2FjeSBOQU5EIGFuZCBEb0Mgc3VwcG9ydAoKICAgIENvbW1pdCAyNDE5MTY5ZiByZW1vdmVkIHN1cHBvcnQgZm9yIGxlZ2FjeSBOQU5EIGFuZCBkaXNrIG9uIGNoaXAgYnV0CiAgICBtaXNzZWQgdG8gdXBkYXRlIHRoZSBjb2RlIGZvciBhIGZldyBib2FyZHMuIFRoaXMgcGF0Y2ggZml4ZXMgdGhlCiAgICByZXN1bHRpbmcgYnVpbGQgaXNzdWVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMWE0NjY0YjUzYWFmMjM2ODdiNTJkNjRiOTRiZTA2YTlhYTI2MGI4NgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBKdWwgMTkgMTk6MzI6MzcgMjAwOSArMDIwMAoKICAgIGNtZF9mbGFzaC5jOiBmaXggZml4IGNvbXBpbGUgZXJyb3IgZm9yIGJvYXJkcyB3aXRoIERhdGFGbGFzaAoKICAgIENvbW1pdCA1NjY5ZWQ0NSAoImNtZF9mbGFzaC5jOiBmaXggd2FybmluZzogdW51c2VkIHZhcmlhYmxlCiAgICAnYWRkcl9maXJzdCcvJ2FkZHJfbGFzdCciKSBjaGFuZ2VkIHRoZSAjaWZkZWYgbG9naWMgYXJlb3VuZCB0aGUKICAgIGRlY2xhcmF0aW9uIG9mIHRoZXNlIHZhcmlhYmxlcyBhbmQgbWlzc2VkIGEgY29tYmluYXRpb24gb2Ygc2V0dGluZ3MKICAgIG9mIEhBU19EQVRBRkxBU0ggd2l0aCBTWVNfTk9fRkxBU0g7IHRoaXMgcGF0Y2ggZml4ZXMgdGhpcy4KCiAgICBBbHNvIHNwb3R0ZWQgYnkgQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUBnbnVkZC5jb20+CgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAzNDEyNDVhMjg4MzBkMzI2MWM0MWIwOWQ5NThlZWVhN2JiOTM1ODdhCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEp1bCAxOSAxMjowNToxNSAyMDA5ICswMjAwCgogICAgcGNtMDMwOiBmaXggb3V0LW9mLXRyZWUgYnVpbGRpbmcKCiAgICBDb21taXQgMGE4N2RkOTAgdGhhdCB3YXMgc3VwcG9zZWQgdG8gZml4IG91dC1vZi10cmVlIGJ1aWxkaW5nIGZvciB0aGUKICAgIHBjbTAzMCBib2FyZCB3YXMgdW5mb3J0dW5hdGVseSBpbmNvbXBsZXRlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgOGJmMjliNTlmY2U4Y2MzODExMTQ5MjkwODIyMDJkODAwZTMxM2FkNQpBdXRob3I6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KRGF0ZToJVHVlIEp1bCA3IDEzOjU4OjUxIDIwMDkgKzAyMDAKCiAgICBBZGQgdW5hbGlnbmVkLmggZm9yIGFybQoKICAgIFRoaXMgcGF0Y2ggYWRkcyB1bmFsaWduZWQuaCBmb3IgQVJNIChuZWVkZWQgdG8gYnVpbGQgd2l0aCBMWk8KICAgIGNvbXByZXNzaW9uKS4gVGhlIGZpbGUgaXMgdGFrZW4gZnJvbSB0aGUgbGludXgga2VybmVsLCBidXQgaW5jbHVkZXMKICAgIHUtYm9vdCBoZWFkZXJzIGluc3RlYWQuCgogICAgU2lnbmVkLW9mZi1ieTogU2ltb24gS2Fnc3Ryb20gPHNpbW9uLmthZ3N0cm9tQG5ldGluc2lnaHQubmV0PgogICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlNDA1YWZhYjFkZGE2NmM5ZGYzNzMzZjZiNzc5ZDcyZmMzNmEwMTYyCkF1dGhvcjogS2F6dWFraSBJY2hpbm9oZSA8a2F6dWljaGlAZnNpLmNvLmpwPgpEYXRlOglGcmkgSnVuIDEyIDE4OjEwOjEyIDIwMDkgKzA5MDAKCiAgICBDYW55b25sYW5kcyBTQVRBIGhhcmRkaXNrIGRyaXZlcgoKICAgIFRoaXMgcGF0Y2ggYWRkcyBhIFNBVEEgaGFyZGRpc2sgZHJpdmVyIGZvciB0aGUgY2FueW9ubGFuZHMuCiAgICBUaGlzIHBhdGNoIGlzIGtlcm5lbCBkcml2ZXIncyBwb3J0aW5nLgogICAgVGhpcyBwYXRjaCBjb3JyZXNwb25kZWQgdG8gbm90IGNtZF9zY3NpIGJ1dCBjbWRfc2F0YS4KICAgIFRoaXMgcGF0Y2ggZGl2aWRlZCBhbiB1bnVzZWQgbWVtYmVyIHdpdGggaWZuZGVmIF9fVV9CT09UX18gaW4gdGhlIHN0cnVjdHVyZS4KCiAgICBbZW52aXJvbm1lbnQgdmFyaWFibGUsIGJvb3Qgc2NyaXB0XQogICAgc2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9zZGE3IHJ3CiAgICBzZXRlbnYgYm9vdGFyZ3MgJHtib290YXJnc30gY29uc29sZT10dHlTMCwxMTUyMDAKICAgIGV4dDJsb2FkIHNhdGEgMDoyIDB4NDAwMDAwIC9jYW55b25sYW5kcy91SW1hZ2UKICAgIGV4dDJsb2FkIHNhdGEgMDoyIDB4ODAwMDAwIC9jYW55b25sYW5kcy9jYW55b25sYW5kcy5kdGIKICAgIGZkdCBhZGRyIDB4ODAwMDAwIDB4NDAwMAogICAgYm9vdG0gMHg0MDAwMDAgLSAweDgwMDAwMAoKICAgIElmIHlvdSBkcml2ZSBTQVRBLTIgZGlzayBvbiBDYW55b25sYW5kcywgeW91IG11c3QgY2hhbmdlIHBhcnRzIGZyb20KICAgIFBJMlBDSUUyMTIgdG8gUEkyUENJRTIyMTIgb24gVTI1LiBXZSBjb25maXJtZWQgdG8gYm9vdCBieSB1c2luZwogICAgZm9sbG93aW5nIGRpc2tzOgoKICAgIDEuVmVuZG9yOiBGdWppdHN1CSBUeXBlOiBNSFcyMDQwQlMKICAgIDIuVmVuZG9yOiBGdWppdHN1CSBUeXBlOiBNSFcyMDYwQksKICAgIDMuVmVuZG9yOiBIQUdJV0FSQSBTWVMtQ09NOkhGRDI1Uy0wMzJHVAogICAgNC5WZW5kb3I6IFdlc3Rlcm5EaWdpdGFsIFR5cGU6IFdEMzIwMEJKS1QgKENPTkZJR19MQkE0OCByZXF1aXJlZCkKICAgIDUuVmVuZG9yOiBXZXN0ZXJuRGlnaXRhbCBUeXBlOiBXRDMyMDBCRVZUIChDT05GSUdfTEJBNDggcmVxdWlyZWQpCiAgICA2LlZlbmRvcjogSGl0YWNoaQkgVHlwZTogSFRTNTQzMjMyTDlBMzAwIChDT05GSUdfTEJBNDggcmVxdWlyZWQpCiAgICA3LlZlbmRvcjogU2VhZ2F0ZQkgVHlwZTogU1QzMTAwMDMzM0FTIChDT05GSUdfTEJBNDggcmVxdWlyZWQpCiAgICA4LlZlbmRvcjogVHJhbnNjZW5kCSBUeXBlOiBUUzMyR1NTRDI1Uy1NCiAgICA5LlZlbmRvcjogTVRST04JCSBUeXBlOiBNU0QtU0FUQTE1MjUtMDE2CgogICAgU2lnbmVkLW9mZi1ieTogS2F6dWFraSBJY2hpbm9oZSA8a2F6dWljaGkgYXQgZnNpLmNvLmpwPgoKY29tbWl0IDUyYTBlMmRlZTkwYzE3ZTM5NjM0ZGU4MTRiMTZiOTYwNjFjZmI0NzIKQXV0aG9yOiBSZWluaGFyZCBBcmx0IDxyZWluaGFyZC5hcmx0QGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVdlZCBKdW4gMTAgMTk6MDk6NDAgMjAwOSArMDIwMAoKICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgVHVuZHJhIFRTSTE0OCBWTUUtYnJpZGdlCgogICAgRnJvbTogUmVpbmhhcmQgQXJsdCA8cmVpbmhhcmQuYXJsdEBlc2QtZWxlY3Ryb25pY3MuY29tPgoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgVHVuZHJhIFRTSTE0OCBWTUUtYnJpZGdlLiBJdCdzIHVzZWQgb24KICAgIHRoZSB1cGNvbWluZyBlc2QgVk1FODM0OSBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSZWluaGFyZCBBcmx0IDxyZWluaGFyZC5hcmx0QGVzZC1lbGVjdHJvbmljcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOGQxZmVhMmM0MDQxZTY2NWM5Njk0NGUzZjZmY2ZmYmRlNTVkYjM0YgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEp1bCAxNiAxOTowNTozMCAyMDA5IC0wNDAwCgogICAgQmxhY2tmaW46IGJmNTM3LXttaW5vdGF1cixzcnYxfTogZG8gbm90IGhhcmRjb2RlIENPTkZJR19FVEhBRERSCgogICAgTUFDIGFkZHJlc3NlcyBzaG91bGQgbm90IGJlIGhhcmRjb2RlZCBpbiBib2FyZHMgdG8gYXZvaWQgcmFuZG9tIGxpbmsgbGV2ZWwKICAgIGNvbmZsaWN0cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYmFmMzU3MDUwMzUzYWVlMzBjMDRmM2Y0Yjg2ODQyNmNiNTQ0NjhjYQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJRnJpIEp1bCAxMCAxMDo0MjowNiAyMDA5IC0wNDAwCgogICAgQmxhY2tmaW46IGJmNTMzLXN0YW1wOiBiYWNrIGRvd24gU0NMSyBhIGJpdAoKICAgIFdoaWxlIHRoZSAxLjAgYW5kIDEuMiBzcGluIG9mIHRoZSBiZjUzMy1zdGFtcCBib2FyZHMgY2FuIGhhbmRsZSB0aGUgaGlnaGVyCiAgICBTQ0xLIHNwZWVkcyBqdXN0IGZpbmUsIHRoZSAxLjEgc3BpbiBjYW5ub3QgZHVlIHRvIHRoZSBidWdzIGludHJvZHVjZWQgd2l0aAogICAgdGhlIHNob3J0ZW5lZCBTRFJBTSB0cmFjZXMuICBTbyBsb3dlciB0aGUgU0NMSyBzcGVlZCBkb3duIHRvIGEgdmFsdWUgdGhhdAogICAgYWxsIHRocmVlIGNhbiBoYW5kbGUuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDQ5MGZlNzM0OTEwMjAxMmM0ODczMGY2ZmMxNGVmMzZjOGQxNTUwNjgKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBKdWwgOSAyMDo1Njo1NiAyMDA5IC0wNDAwCgogICAgQmxhY2tmaW46IHNwbGl0IGNwdSBDT0JKUyBpbnRvIG11bHRpbGluZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgOTA5ODc4ZmQzZmRhMDU2ZDE5YjhiNTFhNWNjNTFjYjFjMGI1NjNkMQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEp1bCA5IDAxOjE1OjA1IDIwMDkgLTA0MDAKCiAgICBCbGFja2ZpbjogYWRkIG9zIGxvZyBmdW5jdGlvbnMKCiAgICBQYXJ0IG9mIHRoZSBtaW5pIEJsYWNrZmluIEFCSSB3aXRoIG9wZXJhdGluZyBzeXN0ZW1zIGlzIHRoYXQgdGhleSBjYW4gdXNlCiAgICAweDRmMC0weDRmOCB0byBwYXNzIGxvZyBidWZmZXJzIHRvL2Zyb20gYm9vdGxvYWRlcnMuICBTbyBhZGQgc3VwcG9ydCB0bwogICAgVS1Cb290IGZvciByZWFkaW5nIHRoZSBsb2cgYnVmZmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA5OTkzZTE5NmRhNzA3YTBhMWNkNDU4NGYxZmNlZjEyMzgyYzFjMTQ0CkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU2F0IEp1bCAxOCAxODo0MjoxMyAyMDA5IC0wNTAwCgogICAgbXBjODN4eDogY29udmVydCBhbGwgcmVtYWluaW5nIGJvYXJkcyBvdmVyIHRvIDgzWFhfR0VORVJJQ19QQ0kKCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGQzOTA0MWZjYWRiMTIzMTQzMDIwMWQyOThjMzFmNmJlMDNkNjU0ZjcKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gSnVsIDE5IDAxOjE1OjUyIDIwMDkgKzAyMDAKCiAgICBQQVRJIGJvYXJkOiBmaXggY29tcGlsZXIgd2FybmluZ3MKCiAgICBGaXggdGhlc2U6CiAgICBwYXRpLmM6IEluIGZ1bmN0aW9uICdjaGVja2JvYXJkJzoKICAgIHBhdGkuYzozNTg6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5nIGFyZ3VtZW50IDIgb2YgJ2dldGVudl9yJyBkaWZmZXIgaW4gc2lnbmVkbmVzcwogICAgLi4vY29tbW9uL2ZsYXNoLmM6IEluIGZ1bmN0aW9uICd3cml0ZV93b3JkJzoKICAgIC4uL2NvbW1vbi9mbGFzaC5jOjgyNDogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZCBwb2ludGVyIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCiAgICBjbWRfcGF0aS5jOiBJbiBmdW5jdGlvbiAnZG9fcGF0aSc6CiAgICBjbWRfcGF0aS5jOjI3OTogd2FybmluZzogJ3ZhbHVlJyBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIGluIHRoaXMgZnVuY3Rpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDI4YzM0NTA0MmVhZmM1NTBhMzRiOWY1MjQzMWJkNGEyMmFmNmFjMjUKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgTWF5IDE2IDEyOjE0OjU2IDIwMDkgKzAyMDAKCiAgICBtcGw6IHByaW50aW5nIGN1cnJlbnQgc3RkaW8gZGV2aWNlcyBjbGVhbnVwCgogICAgQ3VycmVudGx5IHRoZSBtcGwgYm9hcmRzIGR1cGxpY2F0ZSB0aGUgY29kZSB0byBwcmludCB0aGUgY3VycmVudAogICAgZGV2aWNlcyBmcm9tIGNvbW1vbi9jb25zb2xlLmM7IHVzZSBzdGRpb19wcmludF9jdXJyZW50X2RldmljZXMoKQogICAgaW5zdGVhZAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CgogICAgRWRpdGVkIGNvbW1pdCBtZXNzYWdlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgN2UzYmU3Y2YzYmIzNDRmNzE3YjZlYzNkNDdhMDgxMjY5ZWE2N2VhZApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBNYXkgMTYgMTI6MTQ6NTUgMjAwOSArMDIwMAoKICAgIGNvbnNvbGU6IHVuaWZ5IHByaW50aW5nIGN1cnJlbnQgZGV2aWNlcwoKICAgIENyZWF0ZSBzdGRpb19wcmludF9jdXJyZW50X2RldmljZXMoKSBmb3IgdGhpcyBwdXJwb3NlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA1NjY5ZWQ0NTU3ZWRmMjcxNDIwM2FhODYyNWM5ZmNkNWE3NTNiMzM4CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IEp1bCAxOCAyMzoxODoxNCAyMDA5ICswMjAwCgogICAgY21kX2ZsYXNoLmM6IGZpeCB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ2FkZHJfZmlyc3QnLydhZGRyX2xhc3QnCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA2YmI2ZTZjNzVlYzRlZjQ5NmYwMGY3ZjUzMGU1NDlkM2UwNzNjNWRlCkF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgpEYXRlOglUdWUgSnVuIDMwIDE1OjA0OjEzIDIwMDkgLTA1MDAKCiAgICBPTUFQMyBGaXggY29tcGlsZXIgd2FybmluZyBmb3IgdjdfZmx1c2hfZGNhY2hlX2FsbAoKICAgIE9uIGJ1aWxkIG9mIG9tYXAzIHRhcmdldHMgaW4gTUFLRUFMTCwgdGhlICouRVJSIGZpbGVzIGhhdmUKCiAgICBjcHUuYzogSW4gZnVuY3Rpb24gJ2NsZWFudXBfYmVmb3JlX2xpbnV4JzoKICAgIGNwdS5jOjY0OiB3YXJuaW5nOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAndjdfZmx1c2hfZGNhY2hlX2FsbCcKICAgIGNwdS5jOjY0OiB3YXJuaW5nOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnZ2V0X2RldmljZV90eXBlCgogICAgVGhlIGZ1bmN0aW9ucyB2N19mbHVzaF9kY2FjaGVfYWxsIGFuZCBnZXRfZGV2aWNlX3R5cGUgYXJlIGRlY2xhcmVkCiAgICBpbiBpbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwMy9zeXNfcHJvdG8uaCwgc28gdXNlIHRoaXMgZmlsZSB0bwogICAgZGVjbGFyZSB0aGUgZnVuY3Rpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KCmNvbW1pdCBkYmExMDdiOTY3MzMyZmM4YTM1ODY3ZjRkNTgwMzg2MjZjOTY4ODAwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IEp1bCAxOCAyMjowOTozOCAyMDA5ICswMjAwCgogICAgQVJNOiBtYWtlIHNwbGl0X2J5X3ZhcmlhbnQuc2ggb3V0cHV0IG1vcmUgdXNlZnVsCgogICAgVGhlIGJvYXJkL2FybWx0ZC9pbnRlZ3JhdG9yL3NwbGl0X2J5X3ZhcmlhbnQuc2ggc2NyaXB0IHVzZWQgdG8gcHJpbnQKICAgICJDb25maWd1cmluZyBmb3IgaW50ZWdyYXRvcipwIGJvYXJkLi4uIiBubyBtYXR0ZXIgd2hpY2ggYm9hcmQgbmFtZQogICAgd2FzIGJlaW5nIGNvbXBpbGVkLiBUaGlzIG1hZGUgaXQgZGlmZmljdWx0IHRvIG1hdGNoIE1BS0VBTEwgb3V0cHV0IHRvCiAgICBib2FyZCBuYW1lcy4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMmViOTljYTgwMjliNDRjOTg4ZDVmNjMxMmY5N2U2OGQzYjljYjJiZApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBKdWwgMTggMjE6NTI6MjQgMjAwOSArMDIwMAoKICAgIE5BTkQ6IFBhcnQgMjogRml4IHdhcm5pbmcgUGxlYXNlIGRlZmluZSBDT05GSUdfU1lTXzY0QklUX1ZTUFJJTlRGLi4uCgogICAgQ29tbWl0IDhkMmVmZmVhIGFkZGVkIGEgd2FybmluZyBmb3IgY29uZmlndXJhdGlvbnMgdGhhdCB1c2UgTkFORAogICAgd2l0aG91dCBkZWZpbmluZyB0aGUgKHRoZW4gbmVjZXNzYXJ5KSBDT05GSUdfU1lTXzY0QklUX1ZTUFJJTlRGIGJ1dAogICAgZmFpbGVkIHRvIGZpeCB0aGUgYWZmZWN0ZWQgYm9hcmRzLgoKICAgIFRoaXMgcGF0Y2ggY292ZXJzIHRoZSBub24tUFBDIGJvYXJkcyB0aGF0IHdlcmUgbWlzc2VkIGluIHRoZSBwcmV2aW91cwogICAgcGF0Y2ggKGNvbW1pdCAxNzBjMTk3MikuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA3MDI0YWExNGRmMjk4MWI0ZTY1YzYxODk5MDlkYTlhYWRiMWMyMmRhCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IEp1bCAxOCAyMDo0NjozOCAyMDA5ICswMjAwCgogICAgYXQ5MWNhcDlhZGs6IGZpeCAjaWZkZWYvI2VuZGlmIHBhaXJpbmcKCiAgICBUaGUgI2lmZGVmLyNlbmRpZiBwYWlyaW5nIGluIHRoaXMgZmlsZSB3YXMgb2J2aW91c2x5IG1lc3NlZCB1cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDRhYmM1YmZmZWEyNDQ1ODlmYTEwOTdlNGM4OTlhNjNlZmM2MDljOGUKQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+CkRhdGU6CVRodSBKdWwgMTYgMjA6NTg6MDEgMjAwOSArMDUzMAoKICAgIE1hcnZlbGwgTVY4OEY2MjgxR1RXX0dFIEJvYXJkIHN1cHBvcnQKCiAgICBUaGlzIGlzIE1hcnZlbGwncyA4OEY2MjgxX0EwIGJhc2VkIGN1c3RvbSBib2FyZCBkZXZlbG9wZWQKICAgIGZvciB3aXJlbGVzcyBhY2Nlc3MgcG9pbnQgcHJvZHVjdAoKICAgIFRoaXMgcGF0Y2ggaXMgdGVzdGVkIGZvci0KICAgIDEuIEJvb3QgZnJvbSBEUkFNL1NQSSBmbGFzaC9ORlMKICAgIDIuIEZpbGUgdHJhbnNmZXIgdXNpbmcgdGZ0cCBhbmQgbG9hZGIKICAgIDMuIFNQSSBmbGFzaCByZWFkL3dyaXRlL2VyYXNlCiAgICA0LiBCb290aW5nIExpbnV4IGtlcm5lbCBhbmQgUkZTIGZyb20gU1BJIGZsYXNoCiAgICA1LiBCb290IGZyb20gVVNCIHN1cHBvcnRlZAoKICAgIFJldmlld2VkLWJ5OiBSb25lbiBTaGl0cml0IDxyc2hpdHJpdEBtYXJ2ZWxsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KCmNvbW1pdCA1NWRkNGJhNTQxM2IxNGU4ZWUyNDA1OGM4OWFjNWMwNTM3NmMzMzFjCkF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgpEYXRlOglUaHUgSnVsIDE2IDIwOjU4OjAwIDIwMDkgKzA1MzAKCiAgICBNYXJ2ZWxsIFNoZWV2YXBsdWcgQm9hcmQgc3VwcG9ydAoKICAgIFJlZmVyZW5jZToKICAgIGh0dHA6Ly9wbHVnY29tcHV0ZXIub3JnLwogICAgaHR0cDovL29wZW5wbHVnLm9yZy9wbHVnd2lraS9pbmRleC5waHAvRGFzX1UtYm9vdF9wbHVnX3N1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGlzIHRlc3RlZCBmb3ItCiAgICAxLiBCb290IGZyb20gRFJBTS9OQU5EIGZsYXNoCiAgICAyLiBGaWxlIHRyYW5zZmVyIHVzaW5nIHRmdHAKICAgIDMuIE5BTkQgZmxhc2ggcmVhZC93cml0ZS9lcmFzZQogICAgNC4gTGludXgga2VybmVsIGFuZCBSRlMgQm9vdCBmcm9tIE5BTkQKICAgIDUuIEVuYWJsZWQgVVNCIFBIWSBpbml0IGZvciBrZXJuZWwgbmVlZAogICAgNi4gQm9vdCBmcm9tIFVTQiBzdXBwb3J0ZWQKCiAgICBOb3RlOiB0byBib290IEtpcmt3b29kIGtlcm5lbCB3aXRoIFVTQiBzdXBwb3J0LAoJeW91IHNob3VsZCBhZGQgInVzYiBzdGFydCIgaW4gdGhlIGJvb3Qgc2VxdWVuY2UKCiAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Cgpjb21taXQgMGE4N2RkOTBhNzVkMDM0MzAxNDk2Mjg1MDI2ZmJkODEwNmM3YzZkNQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBKdWwgMTggMTg6MDA6MjUgMjAwOSArMDIwMAoKICAgIHBjbTAzMDogZml4IG91dC1vZi10cmVlIGJ1aWxkaW5nCgogICAgQ29tbWl0IGM5OTY5OTQ3LCB3aGljaCBhZGRlZCBzdXBwb3J0IGZvciB0aGUgcGNtMDMwIGJvYXJkCiAgICAoYWthIHBoeUNPUkUtTVBDNTIwMEItdGlueSksIGJyb2tlIG91dC1vZi10cmVlIGJ1aWxkaW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgOWZmNTk2MDFjNzFlODAwYjlkMGRmZGUyMmZhNzBkMTJjNzFjMTJiNApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBKdWwgMTggMTY6MzY6MTEgMjAwOSArMDIwMAoKICAgIE1QQzgzN1hFUkRCOiBmaXggd2FybmluZzogIkNPTkZJR19TWVNfTU9OSVRPUl9MRU4iIHJlZGVmaW5lZAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMmI1MjQzZmMyNGE3MjRlODM0MDljMGI3MGNhYTFhMzE4MGU5OTdhZQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBKdWwgMTggMTY6MTM6MTggMjAwOSArMDIwMAoKICAgIDh4eHg6IGZpeCB3YXJuaW5nOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAndWVjX3N0YW5kYXJkX2luaXQnCgogICAgQ29tbWl0IDhlNTUyNThmIGNyZWF0ZWQgZnVuY3Rpb24gdWVjX3N0YW5kYXJkX2luaXQoKSB0byBpbml0aWFsaXplCiAgICBhbGwgVUVDIGludGVyZmFjZXMgZm9yIDgzeHggYW5kIDg1eHggYnV0IGZhaWxlZCB0byBwcm92aWRlIGEKICAgIHByb3RvdHlwZSBmb3IgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1YjU0ZGYyNjc0ZmRhZDVlN2QzMTY0ODRjNjdlZmM2OGU3OWYzZjBkCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IEp1bCAxOCAxNTo0NjowMiAyMDA5ICswMjAwCgogICAgTUlQNDA1VDogZml4IGNvbXBpbGUgcHJvYmxlbQoKICAgIFRoZSAic3RkaW8vZGV2aWNlOiByZXdvcmsgZnVuY3Rpb24gbmFtaW5nIGNvbnZlbnRpb24iIHBhdGNoCiAgICAoY29tbWl0IDUyY2I0ZDRmKSBicm9rZSB0aGUgTUlQNDA1VCBib2FyZDsgdGhpcyBwYXRjaCBmaXhlcyBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDE3MGMxOTcyNWVjZDNhMGUyZTUxN2RmZDQ5OTc5Y2E4ODIyZWRlYzAKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgSnVsIDE4IDE1OjMyOjEwIDIwMDkgKzAyMDAKCiAgICBOQU5EOiBGaXggd2FybmluZyBQbGVhc2UgZGVmaW5lIENPTkZJR19TWVNfNjRCSVRfVlNQUklOVEYuLi4KCiAgICBDb21taXQgOGQyZWZmZWEgYWRkZWQgYSB3YXJuaW5nIGZvciBjb25maWd1cmF0aW9ucyB0aGF0IHVzZSBOQU5ECiAgICB3aXRob3V0IGRlZmluaW5nIHRoZSAodGhlbiBuZWNlc3NhcnkpIENPTkZJR19TWVNfNjRCSVRfVlNQUklOVEYgYnV0CiAgICBmYWlsZWQgdG8gZml4IHRoZSBhZmZlY3RlZCBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA2ZTg5N2E2NjFmYjk5NjhjZTM1NDE2NWExMmNjZTgyZTRiODg5ZTA0CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IEp1bCAxOCAxNTowNTo0NCAyMDA5ICswMjAwCgogICAgQ1BDSTc1MDogZml4IGNvbXBpbGUgcHJvYmxlbQoKICAgIENvbW1pdCBiYzBkMzI5NiByZW1vdmVkIHBwY19lcnJvcl9uby5oIGZyb20gTWFydmVsbCBib2FyZHMKICAgIGJ1dCBmb3Jnb3QgdG8gdXBkYXRlIGJvYXJkL2VzZC9jcGNpNzUwL212X2V0aC5oCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA2YWVlMzA0ODM0OGYxYjE5YWI4OTE1NmRhOThiZmE0ZjdiYWJmMjRiCkF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaS1saXN0QGdudWRkLmNvbT4KRGF0ZToJRnJpIEp1bCAxNyAxNDo0MjoxMSAyMDA5ICswMjAwCgogICAgY21kX2kyYzogYnVnZml4OiBhZGQgbWlzc2luZyBicmFjZQoKICAgIFRoZSBzdWItY29tbWFuZCBwYXJzZXIgbWlzc2VkIGEgYnJhY2UsIHNvICJyZXR1cm4gMDsiIGlzIGFsd2F5cwogICAgdGFrZW4gYW5kIG5vIGVycm9yIG1lc3NhZ2UgaXMgZGlwbGF5ZWQgaWYgeW91IHNheSAiaTJjIHNjYW4iCiAgICBpbnN0ZWFkIG9mICJpMmMgcHJvYmUiLCBmb3IgZXhhbXBsZS4KCiAgICBQcm9wZXIgYnJhY2UgaXMgYWRkZWQuIEFsc28sIGEgbWlzbGVhZGluZyBhbmQgdW5uZWVkZWQgZWxzZQogICAgaXMgcmVtb3ZlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQGdudWRkLmNvbS5pdD4KCmNvbW1pdCA1MmNiNGQ0ZmIzNDg3MzEzZjVhNzJlYTc0MGY1MjdhNGFlZmFhMzY1CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IE1heSAxNiAxMjoxNDo1NCAyMDA5ICswMjAwCgogICAgc3RkaW8vZGV2aWNlOiByZXdvcmsgZnVuY3Rpb24gbmFtaW5nIGNvbnZlbnRpb24KCiAgICBTbyBmYXIgdGhlIGNvbnNvbGUgQVBJIHVzZXMgdGhlIGZvbGxvd2luZyBuYW1pbmcgY29udmVudGlvbjoKCgk9PT09PT1FeHRyYWN0PT09PT09Cgl0eXBlZGVmIHN0cnVjdCBkZXZpY2VfdDsKCglpbnQJZGV2aWNlX3JlZ2lzdGVyIChkZXZpY2VfdCAqIGRldik7CglpbnQJZGV2aWNlc19pbml0ICh2b2lkKTsKCWludAlkZXZpY2VfZGVyZWdpc3RlcihjaGFyICpkZXZuYW1lKTsKCXN0cnVjdCBsaXN0X2hlYWQqIGRldmljZV9nZXRfbGlzdCh2b2lkKTsKCWRldmljZV90KiBkZXZpY2VfZ2V0X2J5X25hbWUoY2hhciogbmFtZSk7CglkZXZpY2VfdCogZGV2aWNlX2Nsb25lKGRldmljZV90ICpkZXYpOwoJPT09PT09PQoKICAgIHdoaWNoIGlzIHRvbyBnZW5lcmljIGFuZCBjb25mdXNpbmcuCgogICAgSW5zdGVhZCBvZiB1c2luZyBkZXZpY2VfWFggYW5kIGRldmljZV90IHdlIGNoYW5nZSB0aGlzCiAgICBpbnRvIHN0ZGlvX1hYIGFuZCBzdGRpb19kZXYKCiAgICBUaGlzIHdpbGwgYWxzbyBhbGxvdyB0byBhZGQgbGF0ZXIgYSBnZW5lcmljIGRldmljZSBtZWNoYW5pc20gaW4gb3JkZXIKICAgIHRvIGhhdmUgc3VwcG9ydCBmb3IgbXVsdGlwbGUgZGV2aWNlcyBhbmQgZHJpdmVyIGluc3RhbmNlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKICAgIEVkaXRlZCBjb21taXQgbWVzc2FnZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGY3MzJhNzU5OGZhMzZkNDgyNDFkZjIwYjFhMWY0Y2RiZjA5Zjc1ZWUKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglXZWQgSnVsIDE1IDAwOjAxOjA4IDIwMDkgLTA1MDAKCiAgICBwcGM6IEZpeCBjb21waWxlIGVycm9yIGZvciBib2FyZHMgd2l0aCBDT05GSUdfRERSX0VDQwoKICAgIEEgYnVnIHdhcyBpbnRyb2R1Y2VkIGJ5IGNvbW1pdCBlOTRlNDYwYzZlODc0MWY0MmRhYjZkOGRkNGI1OTZiYTVkOWQ3OWFlCiAgICB3aGljaCBhZmZlY3RlZCBub24tTVBDODN4eC84NXh4Lzg2eHggcHBjIGJvYXJkcyB3aGljaCBoYWQgQ09ORklHX0REUl9FQ0MKICAgIGRlZmluZWQgYW5kIHJlc3VsdGVkIGluIGVycm9ycyBzdWNoIGFzOgoKICAgIENvbmZpZ3VyaW5nIGZvciBjYW55b25sYW5kcyBib2FyZC4uLgogICAgZnNsX2RtYS5jOjUwOjI6IGVycm9yOiAjZXJyb3IgIkZyZWVzY2FsZSBETUEgZW5naW5lIG5vdCBzdXBwb3J0ZWQgb24geW91cgogICAgcHJvY2Vzc29yIgogICAgbWFrZVsxXTogKioqIE5vIHJ1bGUgdG8gbWFrZSB0YXJnZXQgYC5kZXBlbmQnLCBuZWVkZWQgYnkgYGxpYmRtYS5hJy4gIFN0b3AuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCAxOGUwNjdkZTliNmVkMDg3ZmE2MDQ5NmU2NDg4N2YwYjc0NThkYmFhCkF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgpEYXRlOglUaHUgSnVsIDE2IDIwOjU3OjU5IDIwMDkgKzA1MzAKCiAgICBpbmNsdWRlL2NvbmZpZ19jbWRfZGVmYXVsdC5oIGNsZWFudXAKCiAgICBhcnJhbmdlZCBjb25maWd1cmF0aW9ucyBpbiBhbHBoYWJldGljYWwgb3JkZXIKICAgIENPTkZJR19DTURfRkxBU0ggbW92ZWQgdW5kZXIgaWZuZGVmIENPTkZJR19TWVNfTk9fRkxBU0gKCiAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Cgpjb21taXQgNTY5NDYwZWJmMTRiODdiZDhmZGIyMzUyYmRlOTVkMzVlZTk2ZTEzYgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU3VuIEp1biAxNCAyMTozNToyMiAyMDA5IC0wNDAwCgogICAgc2F0YTogbmFtZXNwYWNlIGN1cnJfZGV2aWNlIHZhcmlhYmxlCgogICAgVGhlIGN1cnJfZGV2aWNlIHZhcmlhYmxlIHJlYWxseSBzaG91bGQgYmUgbmFtZXNwYWNlZCB3aXRoIGEgInNhdGFfIiBwcmVmaXgKICAgIHNpbmNlIGl0IGlzIG9ubHkgdXNlZCBieSB0aGUgc2F0YSBjb2RlLiAgSXQgYWxzbyBhdm9pZHMgcmFuZG9tIGNvbmZsaWN0cwogICAgd2l0aCBvdGhlciBwaWVjZXMgb2YgY29kZSAobGlrZSBjbWRfbW1jKToKICAgIGNvbW1vbi9saWJjb21tb24uYShjbWRfc2F0YS5vKTooLmRhdGEuY3Vycl9kZXZpY2UrMHgwKToKCW11bHRpcGxlIGRlZmluaXRpb24gb2YgYGN1cnJfZGV2aWNlJwogICAgY29tbW9uL2xpYmNvbW1vbi5hKGNtZF9tbWMubyk6KC5kYXRhLmN1cnJfZGV2aWNlKzB4MCk6IGZpcnN0IGRlZmluZWQgaGVyZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAwMmUyMmMyZGUxY2UyMzEyZjI2MzZmYTQ3M2E2MGM4ZDhmMThkOGFhCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gSnVuIDE0IDIxOjM1OjIxIDIwMDkgLTA0MDAKCiAgICBjbWRfbW1jOiBtYWtlIGN1cnJfZGV2aWNlIHN0YXRpYwoKICAgIFRoZSBjdXJyX2RldmljZSB2YXJpYWJsZSBpc24ndCB1c2VkIG91dHNpZGUgb2YgY21kX21tYywgc28gbWFyayBpdCBzdGF0aWMKICAgIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIG90aGVyIHBpZWNlcyBvZiBjb2RlIChsaWtlIHNhdGEgd2hpY2ggYWxzbyBleHBvcnRzCiAgICBhIGN1cnJfZGV2aWNlKS4gIE90aGVyd2lzZSB3ZSBlbmQgdXAgd2l0aCBzdHVmZiBsaWtlOgogICAgY29tbW9uL2xpYmNvbW1vbi5hKGNtZF9zYXRhLm8pOiguZGF0YS5jdXJyX2RldmljZSsweDApOgoJbXVsdGlwbGUgZGVmaW5pdGlvbiBvZiBgY3Vycl9kZXZpY2UnCiAgICBjb21tb24vbGliY29tbW9uLmEoY21kX21tYy5vKTooLmRhdGEuY3Vycl9kZXZpY2UrMHgwKTogZmlyc3QgZGVmaW5lZCBoZXJlCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDJkOGQyYWRkZTNmY2UxMTUyZTRhZDlmNDcyMzhmMDdlNzA3OTNjNTMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVN1biBKdW4gMTQgMjE6MzU6MTYgMjAwOSAtMDQwMAoKICAgIGVudmNyYzogYWRkIG1pc3NpbmcgZGVwZW5kZW5jaWVzIG9uIGVudiBzdG9yYWdlCgogICAgV2hlbiB0aGUgZW52Y3JjIGJ1aWxkaW5nIHdhcyBtYWRlIGNvbmRpdGlvbmFsLCBpdCBtaXNzZWQgYSBidW5jaCBvZiBlbnYKICAgIHN0b3JhZ2UgdHlwZXMsIHNvIGFkZCBhbGwgY3VycmVudGx5IHN1cHBvcnRlZCB0eXBlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMjQxOTE2OWY1NzQ5ZDdhZjUwMWIzYjc3YTUzMzZkMWQ1MzUzMjBkZQpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVsIDE2IDE5OjA4OjA0IDIwMDkgLTA1MDAKCiAgICBSZW1vdmUgbGVnYWN5IE5BTkQgYW5kIGRpc2sgb24gY2hpcCByZWZlcmVuY2VzIGZyb20gYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDEyZTkwNDNjN2VkOTYxYjYwZGY4NjVmNDVkOWEzYzc0ZDZhMzgxOTkKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHBvYm94LmNvbT4KRGF0ZToJU2F0IEp1biAyMCAxOToxMDoxNCAyMDA5ICswOTAwCgogICAgY29uZmlnLm1rOiBSZW1vdmUgJChQQ0lfQ0xPQ0spIHJlZmVyZW5jZQoKICAgIFRoZSBmb2xsb3dpbmcgY29tbWl0IGludHJvZHVjZWQgJChQQ0lfQ0xPQ0spIHJlZmVyZW5jZSBzbyB0aGF0CiAgICB3ZSBjb3VsZCB0d2VhayBgUENJXzY2TScgZGVmaW5pdGlvbiB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuCgogICAgPiBjb21taXQgZjA0NmNjZDE1YzhiYzk2MTNiZmQ3MjkxNmI3NjFhMTI3ZDM2ZTVjNgogICAgPiBBdXRob3I6IEVyYW4gTGliZXJ0eSA8bGliZXJ0eUBmcmVlc2NhbGUuY29tPgogICAgPiBEYXRlOiAgIFRodSBKdWwgMjggMTA6MDg6NDYgMjAwNSAtMDUwMAogICAgPgogICAgPgkgICogUGF0Y2ggYnkgRXJhbiBMaWJlcnR5CiAgICA+CSAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIEZyZWVzY2FsZSBNUEM4MzQ5QURTIGJvYXJkLgoKICAgIEJ1dCBJIHN1Z2dlc3QgYSByZW1vdmFsIG9mIGl0IGZvciB0aGUgZm9sbG93aW5nIHJlYXNvbnM6CgogICAgKiBJbiAyMDA2LCBNUEM4MzQ5QURTIHdhcyBtZXJnZWQgaW50byBNUEM4MzQ5RU1EUyBwb3J0LAogICAgICBhbmQgaXQgc2VlbXMgdGhhdCBNUEM4MzQ5RU1EUyBwb3J0IGlzIFBDSV82Nk0gZnJlZS4KCiAgICAqIE9UT0gsIFBDSV82Nk0gaXMgdXNlZCBieSBNUEM4MzJYRU1EUyBhbiBNUEM4MzYwRU1EUyBwb3J0cywKICAgICAgYnV0IHRoZXkgZG9uJ3QgbmVlZCAkKFBDSV9DTE9DSykgZW52aXJvbm1lbnQgdmFyaWFibGUgYXQgYWxsLgogICAgICBQQ0lfNjZNIGlzIGF1dG9tYXRpY2FsbHkgY29uZmlndXJlZCB2aWEgJChCT0FSRClfY29uZmlnIG5hbWVzCiAgICAgIHdpdGggdGhlIGhlbHAgb2YgJChmaW5kc3RyaW5nIF82Nl8sJEApLgoKICAgICogVW5mb3J0dW5hdGVseSAkKFBDSV9DTE9DSykgaGFzIGJlZW4gdW5kb2N1bWVudGVkIGFueXdoZXJlLAogICAgICBzbyBvbmx5IGEgZmV3IHBlb3BsZSBrbm93IHRoZSBleGlzdGVuY2Ugb2YgaXQgdGhlc2UgZGF5cy4KCiAgICAqIEtlZXAgY29uZmlnLm1rIGluZGVwZW5kZW50IGZyb20gJChCT0FSRCkgYXMgbXVjaCBhcyBwb3NzaWJsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHBvYm94LmNvbT4KICAgIEFja2VkLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDNkYjc1ZDljMTFkMzdjYzFkMjhiZWJkOTFiMTlmNGU1NDhiNjgxNTUKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgTWF5IDIzIDIxOjQyOjM2IDIwMDkgKzAyMDAKCiAgICBmaXg6IG1pc3NpbmcgYXV0b2NvbmZpZy5tayBmcm9tIGdlbmVyYWwgTWFrZWZpbGUKCiAgICBBdCB0aGUgZmlyc3QgcnVuIG9mIG1ha2Ugd2UgZ2VuZXJhdGUgdGhlIGF1dG9jb25mLm1rIGFuZAogICAgYXV0b2NvbmYubWsuZGVwIGlmIG5vdCBhbHJlYWR5IHRoZSBjYXNlIGFuZCB3ZSBjdXJyZW50bHkgaW5jbHVkZSBvbmx5CiAgICB0byAuZGVwCgogICAgSW4gb3JkZXIgdG8gdXNlIHRoZXNlIGF1dG9nZW5lcmF0ZWQgdmFsdWVzIHdlIG5lZWQgdG8gaW5jbHVkZSBpdCBhbHNvCiAgICBldmVuIGlmIGl0J3MgaW5jbHVkZWQgaW4gY29uZmlnLm1rIGJ1dCBpdCdzIGRvbmUgYmVmb3JlIHRoZWlyCiAgICBnZW5lcmF0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAxY2EyOThjZWQwNzMyNzc0OWI1NDMyMTgxNWY3NmZjZGRiMmY5NDc5CkF1dGhvcjogTWF0dGhpYXMgV2Vpc3NlciA8bWF0dGhpYXMud2Vpc3NlckBncmFmLXN5dGVjby5kZT4KRGF0ZToJVGh1IEp1bCA5IDE2OjA3OjMwIDIwMDkgKzAyMDAKCiAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGxhc2ggc2NyZWVuIHBvc2l0aW9uaW5nCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgc3BsYXNoIGltYWdlIHBvc2l0aW9uaW5nIGJ5IGFkZGluZyBhbgogICAgYWRkaXRpb25hbCB2YXJpYWJsZSAic3BsYXNocG9zIiB0byB0aGUgZW52aXJvbm1lbnQuIFBsZWFzZSBzZWUKICAgIFJFQURNRSBmb3IgZGV0YWlscy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBXZWlzc2VyIDxtYXR0aGlhcy53ZWlzc2VyQGdyYWYtc3l0ZWNvLmRlPgogICAgQWNrZWQtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgOWQxNzNlMDIzMzQ5MzExM2M5YjFhYTgxYmQyMjA4ZDAwNTdhYjlkYgpBdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KRGF0ZToJVHVlIEp1bCA3IDEzOjExOjM2IDIwMDkgKzAyMDAKCiAgICB2aWRlbzogbWI4NjJ4eDogcmVwbGFjZSBwcmludGYgd2l0aCBwdXRzCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IGNjZTk5YjJhN2RkODA2ODNkNjEzNjBhZWU1NmE2ZWNlMzQ0OTUwYjIKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CVR1ZSBKdWwgNyAxMzoyNzowNyAyMDA5ICswMjAwCgogICAgdmlkZW86IG1iODYyeHg6IHVzZSBtYWNyb3MgaW5zdGVhZCBvZiBtYWdpYyBudW1iZXJzCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IGU4NjUyODY3MWVjZTZkNWMxMTYyNjU2YTM3ZmM2OGE4ZTBiZjY3ZjgKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CVR1ZSBKdWwgNyAxMzoyNDowOCAyMDA5ICswMjAwCgogICAgdmlkZW86IG1iODYyeHg6IGZpeCBjb2Rpbmcgc3R5bGUgYW5kIHJlbW92ZSBkZWFkIGNvZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgMjkyZWQ0ODlkYmE4Y2M5N2I0NTg1NzkwMDNhODAwMWNkNDcwM2NkOApBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJVHVlIEp1biAzMCAxMjowMzo1MCAyMDA5ICswMjAwCgogICAgbWljcm9ibGF6ZTogUmVtb3ZlIGlnbm9yZWQgcmV0dXJuIHR5cGUgZm9yIF9fYXJjaF9fc3dhYjE2IGZ1bmN0aW9uCgogICAgVGhpcyBjaGFuZ2UgcmVtb3ZlIGNvbXBpbGF0aW9uIHdhcm5pbmdzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KCmNvbW1pdCBlMjc3NjU4N2MwZWFjMTMxOTU0YWUxMDBmZGE4OWNjM2U3ZWQ4YjU3CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglUdWUgSnVuIDMwIDEyOjAyOjQ1IDIwMDkgKzAyMDAKCiAgICBtaWNyb2JsYXplOiBSZW1vdmVkIHVudXNlZCB2YXJpYWJsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Cgpjb21taXQgYmUzM2IwNDZiNTQ5YWQ4OGMyMDRjMjA5NTA4Y2Q3NjU3MjMyZmZiZApBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXByIDEgMTU6MDI6MTMgMjAwOSAtMDUwMAoKICAgIFJlbW92ZSBsZWdhY3kgTkFORCBhbmQgZGlzayBvbiBjaGlwIGNvZGUuCgogICAgTGVnYWN5IE5BTkQgaGFkIGJlZW4gc2NoZWR1bGVkIGZvciByZW1vdmFsLiAgQW55IGJvYXJkcyB0aGF0IHVzZSB0aGlzCiAgICB3ZXJlIGFscmVhZHkgbm90IGJ1aWxkaW5nIGluIHRoZSBwcmV2aW91cyByZWxlYXNlIGR1ZSB0byBhbiAjZXJyb3IuCgogICAgVGhlIGRpc2sgb24gY2hpcCBjb2RlIGluIGNvbW1vbi9jbWRfZG9jLmMgcmVsaWVzIG9uIGxlZ2FjeSBOQU5ELAogICAgYW5kIGl0IGhhcyBhbHNvIGJlZW4gcmVtb3ZlZC4gIFRoZXJlIGlzIG5ld2VyIGRpc2sgb24gY2hpcCBjb2RlCiAgICBpbiBkcml2ZXJzL210ZC9uYW5kOyBzb21lb25lIHdpdGggYWNjZXNzIHRvIGhhcmR3YXJlIGFuZCBzdWZmaWNpZW50CiAgICB0aW1lIGFuZCBtb3RpdmF0aW9uIGNhbiB0cnkgdG8gZ2V0IHRoYXQgd29ya2luZywgYnV0IGZvciBub3cgZGlzawogICAgb24gY2hpcCBpcyBub3Qgc3VwcG9ydGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGZiZGFhZmFlZTcxZTJjN2YyYzMxYjM1ODJhYjZkODY3OWVmZWU4ZDMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBKdW4gNCAxNjo0MDozNiAyMDA5ICswMjAwCgogICAgbmFuZDogQ2hhbmdlIE5BTkRfTUFYX09PQlNJWkUgdG8gMjE4IGFzIG5lZWRlZCBmb3Igc29tZSA0ayBwYWdlIGRldmljZXMKCiAgICBUaGlzIGlzIG5lZWRlZCBmb3IgdGhlIE1QQzUxMnggTkFORCBkcml2ZXIgKGZzbF9uZmNfbmFuZC5jKSB3aGljaCBhbHJlYWR5CiAgICBkZWZpbmVzIHN1Y2ggYSA0ayBwbHVzIDIxOCBieXRlcyBFQ0MgbGF5b3V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIENjOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGYyZjM3NmFiOTU2YzE3ZDRhMGM0MmE5OTMxMzNjYTI1Y2RjODcyNzgKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBKdWwgMTYgMTU6MTM6MDQgMjAwOSArMDIwMAoKICAgIG5hbmQ6IG5kZmM6IFJlbW92ZSB1bm5lY2Vzc2FyeSAjaWZkZWYncwoKICAgIE5vdyB0aGF0IHRoZSA0eHggTkFORCBkcml2ZXIgbmRmYyBpcyBtb3ZlZCB0byB0aGUgY29tbW9uIE5BTkQgZHJpdmVyCiAgICBkaXJlY3Rvcnkgd2UgZG9uJ3QgbmVlZCB0aGlzICNpZmRlZidzIGFueW1vcmUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQ2M6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTI1ODJhYzc3MWIwYmYzODUyODE3YzNiZmE0YmUzMjY1MjJhMDY2NQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEp1bCAxNiAxNToxMjo0OCAyMDA5ICswMjAwCgogICAgbmFuZC9wcGM0eHg6IE1vdmUgUFBDNHh4IE5BTkQgZHJpdmVyIHRvIGNvbW1vbiBOQU5EIGRyaXZlciBkaXJlY3RvcnkKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBDYzogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzZWJmNzBkYjU0NTJkM2Q0N2MzMTZkZGVmMDlmNDBlNzY1NTNiY2JhCkF1dGhvcjogVmFsZXJpeSBHbHVzaGtvdiA8Z3Z2QGxzdGVjLmNvbT4KRGF0ZToJVHVlIEp1bCAxNCAxMzo1MToxMCAyMDA5ICswMzAwCgogICAgbmFuZDogZml4ZWQgZmFpbGVkIHJlYWRzIG9uIGNvcnJlY3RlZCBFQ0MgZXJyb3JzIGluIG5hbmRfdXRpbC5jCgogICAgU2lnbmVkLW9mZi1ieTogVmFsZXJpeSBHbHVzaGtvdiA8Z3Z2QGxzdGVjLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFBhdWxyYWosIFNhbmRlZXAgPHMtcGF1bHJhakB0aS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlZDcyN2QzOTRjNWFiMTM5MDMzNzE5NzcyZGM5NWRjMjVjZmExNGY3CkF1dGhvcjogRGF2aWQgQnJvd25lbGwgPGRhdmlkLWJAcGFjYmVsbC5uZXQ+CkRhdGU6CU1vbiBKdWwgMTMgMTY6Mjk6MDQgMjAwOSAtMDcwMAoKICAgIFR5cG8gZml4OiB1c2UgQ09ORklHX1NPQ19ETTY0NFgsIG5vdCBDT05GSUdfU09DX0RNNjQ2LgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTM3MDc2Zjg0YzUwNjRmMGE3OTEwNWZjZTM1MmFjN2NmN2IzMzY0MwpBdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgpEYXRlOglTYXQgSnVsIDExIDE2OjQ5OjU1IDIwMDkgKzA5MDAKCiAgICBNVEQ6IE9uZU5BTkQ6IEluY3JlYXNlIHRoZSBlbnZpcm9ubWVudCBzaXplIHRvIDRLaUIKCiAgICBBbHNvIHVzZSBtdGQgb3BlcmF0aW9uIGluc3RlYWQgb2Ygb25lbmFuZCBmdW5jdGlvbnMKCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYmZhZGIxN2Y2OWMyNTYxOTY2MjBjMzIxNjQ3NzVmMDYzYTU5YzM0ZgpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglXZWQgSnVuIDEwIDAwOjI1OjM4IDIwMDkgKzA0MDAKCiAgICBtcGM4M3h4OiBNUEM4Mzd4RU1EUzogVXNlIGh3Y29uZmlnIGluc3RlYWQgb2YgcGNpX2V4dGVybmFsX2FyYml0ZXIgdmFyaWFibGUKCiAgICBTaW5jZSB3ZSBoYXZlIHNpbXBsZSBod2NvbmZpZyBpbnRlcmZhY2Ugbm93LCB3ZSBkb24ndCBuZWVkCiAgICBwY2lfZXh0ZXJuYWxfYXJiaXRlciB2YXJpYWJsZSBhbnkgbG9uZ2VyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgQWNrZWQtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjhiNzFmZmJjMzVmZGU2OTA1ZTY1ZmZkYmY0ZTRiODdlZmMyNmI3ZQpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglXZWQgSnVuIDEwIDAwOjI1OjM2IDIwMDkgKzA0MDAKCiAgICBtcGM4M3h4OiBNUEM4MzE1RVJEQjogVXNlIGh3Y29uZmlnIGZvciBib2FyZCB0eXBlIHNlbGVjdGlvbgoKICAgIFRoaXMgcGF0Y2ggc2ltcGx5IGNvbnZlcnRzIHRoZSBib2FyZCB0byB0aGUgaHdjb25maWcgaW5mcmFzdHJ1Y3R1cmUuCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBBY2tlZC1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjNzhjNjc4MzU0YzgzMjE3MzdhYTA3ZTg2ODMxZmYxNDE3NmY0ZWQ1CkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CVdlZCBKdW4gMTAgMDA6MjU6MzEgMjAwOSArMDQwMAoKICAgIG1wYzgzeHg6IE1QQzgzN1hFTURTOiBGaXh1cCBlU0RIQyBub2RlcyBpbiBkZXZpY2UgdHJlZQoKICAgIGZkdF9maXh1cF9lc2RoYygpIHdpbGwgZWl0aGVyIGRpc2FibGUgb3IgZW5hYmxlIGVTREhDIG5vZGVzLCBhbmQKICAgIGFsc28gd2lsbCBmaXh1cCBjbG9jay1mcmVxdWVuY3kgcHJvcGVydHkuCgogICAgUGx1cywgc2luY2UgRFIgVVNCIGFuZCBlU0RIQyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLCB3ZSBzaG91bGQKICAgIG9ubHkgY29uZmlndXJlIHRoZSBlU0RIQyBpZiBhc2tlZCB0aHJvdWdoIGh3Y29uZmlnLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgQWNrZWQtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYzk2NDZlZDc1ODgwNGZhMWZhNmMxNDI1MzY5YTRlZWU1ZDYxOGIxZApBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglXZWQgSnVuIDEwIDAwOjI1OjMwIDIwMDkgKzA0MDAKCiAgICBtcGM4M3h4OiBNUEM4MzdYRVJEQjogQWRkIHN1cHBvcnQgZm9yIEZTTCBlU0RIQwoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBlU0RIQyBvbiBNUEM4MzdYRVJEQiBib2FyZHMuIFRoZSBXUAogICAgc3dpdGNoIGRvZXNuJ3Qgc2VlbSB0byB3b3JrIG9uIFJEQiBib2FyZHMgdGhvdWdoLCB0aGUgV1AgcGluIGlzCiAgICBhbHdheXMgYXNzZXJ0ZWQgKGNhbiBzZWUgdGhlIHBpbiBzdGF0ZSB3aGVuIGl0J3MgaW4gR1BJTyBtb2RlKS4KCiAgICBGU0wgRFIgVVNCIGFuZCBGU0wgZVNESEMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSBiZWNhdXNlIG9mIHBpbnMKICAgIG11bHRpcGxleGluZywgc28gdXNlciBzaG91bGQgc3BlY2lmeSAnZXNkaGMnIG9yICdkcl91c2InIG9wdGlvbnMKICAgIGluIHRoZSBod2NvbmZpZyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBjaG9vc2UgYmV0d2VlbiB0aGUKICAgIGRldmljZXMuCgogICAgcC5zLgogICAgTm93IHdlJ3JlIHZlcnkgY2xvc2UgdG8gYSBtb25pdG9yIGxlbiBsaW1pdCAoMTk2IGJ5dGVzIGxlZnQgdXNpbmcKICAgIGdjYy00LjIuMCksIHNvIGFsc28gaW5jcmVhc2UgdGhlIG1vbml0b3IgbGVuIGJ5IG9uZSBzZWN0b3IgKDY0IEtCKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KICAgIEFja2VkLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGIzMzQzM2E2M2ZlMDhjOWU3MjNlYTE1YTdjN2M3MTQzYmY1MjdjNmQKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJV2VkIEp1biAxMCAwMDoyNToyOSAyMDA5ICswNDAwCgogICAgZnNsX2VzZGhjOiBBZGQgZGV2aWNlIHRyZWUgZml4dXBzCgogICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGZkdF9maXh1cF9lc2RoYygpIGZ1bmN0aW9uIHRoYXQgaXMgdXNlZCB0byBmaXh1cAogICAgdGhlIGRldmljZSB0cmVlLgoKICAgIFRoZSBmdW5jdGlvbiBhZGRzIHN0YXR1cyA9ICJkaXNhYmxlZCIgcHJvcGVyeSBpZiBlc2RoYyBwaW5zIG11eGVkIGF3YXksCiAgICBvdGhlcndpc2UgaXQgZml4dXBzIGNsb2NrLWZyZXF1ZW5jeSBmb3IgZXNkaGMgbm9kZXMuCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBBY2tlZC1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5M2Y5ZGNmOWU4YjgxODJlOTdhZWI3OTY1YzY4NzE3NmNiZDBiOTMzCkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CVdlZCBKdW4gMTAgMDA6MjU6MjcgMjAwOSArMDQwMAoKICAgIEFkZCBzaW1wbGUgaHdjb25maWcgaW5mcmFzdHJ1Y3R1cmUKCiAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgc2ltcGxlIGh3Y29uZmlnIGluZnJhc3RydWN0dXJlOiBhbgogICAgaW50ZXJmYWNlIGZvciBzb2Z0d2FyZSBrbm9icyB0byBjb250cm9sIGEgaGFyZHdhcmUuCgogICAgVGhpcyBpcyB2ZXJ5IHNpbXBsZSBpbXBsZW1lbnRhdGlvbiwgaS5lLiBpdCBpcyBpbXBsZW1lbnRlZAogICAgdmlhIGBod2NvbmZpZycgZW52aXJvbm1lbnQgdmFyaWFibGUuIExhdGVyIHdlIGNvdWxkIHdyaXRlCiAgICBzb21lICJod2NvbmZpZyA8ZW5hYmxlfGRpc2FibGV8bGlzdD4iIGNvbW1hbmRzLCBuY3Vyc2VzCiAgICBpbnRlcmZhY2UgZm9yIEF3YXJkIEJJT1MtbGlrZSBpbnRlcmZhY2UsIGFuZCBmcmFtZS1idWZmZXIKICAgIGludGVyZmFjZSBmb3IgQU1JIEdVSVsxXSBCSU9TLWxpa2UgaW50ZXJmYWNlIHdpdGggbW91c2UKICAgIHN1cHBvcnRbMl0uCgogICAgQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzL2xpbWl0YXRpb25zOgoKICAgIDEuIERvZXNuJ3Qgc3VwcG9ydCBvcHRpb25zIGRlcGVuZGVuY2llcyBhbmQgbXV0dWFsIGV4Y2x1c2lvbi4KICAgICAgIFdlIGNhbiBpbXBsZW1lbnQgdGhpcyBieSBpbnRlZ3JhdGluZyBhcHQtZ2V0WzNdIGludG8gdGhlCiAgICAgICB1LWJvb3QuIEJ1dCBJIGRpZG4ndCBib3RoZXIgeWV0LgoKICAgIDIuIFNpbmNlIHdlIGRvbid0IGltcGxlbWVudCBod2NvbmZpZyBjb21tYW5kLCBpLmUuIHdlJ3JlIHdvcmtpbmcKICAgICAgIHdpdGggdGhlIGVudmlyb25lbWVudCBkaXJlY3RseSwgdGhlcmUgaXMgbm8gd2F5IHRvIHRlbGwgdGhhdAogICAgICAgdG9nZ2xpbmcgYSBwYXJ0aWN1bGFyIG9wdGlvbiB3aWxsIG5lZWQgYSByZWJvb3QgdG8gdGFrZQogICAgICAgYW4gZWZmZWN0LiBTbywgZm9yIG5vdyBpdCdzIGFkdmlzZWQgdG8gYWx3YXlzIHJlYm9vdCB0aGUKICAgICAgIHRhcmdldCBhZnRlciBtb2RpZnlpbmcgaHdjb25maWcgdmFyaWFibGUuCgogICAgMy4gV2Ugc3VwcG9ydCBod2NvbmZpZyBvcHRpb25zIHdpdGggYXJndW1lbnRzLiBGb3IgZXhhbXBsZSwKCiAgICAgICBzZXQgaHdjb25maWcgZHJfdXNiOm1vZGU9cGVyaXBoZXJhbCxwaHlfdHlwZT11bHBpCgogICAgICAgVGhhdCBtZWFuczoKICAgICAgIC0gZHJfdXNiIC0gZW5hYmxlIER1YWwtUm9sZSBVU0IgY29udHJvbGxlcjsKICAgICAgIC0gZHJfdXNiOm1vZGU9cGVyaXBoZXJhbCAtIFVTQiBpbiBGdW5jdGlvbiBtb2RlOwogICAgICAgLSBkcl91c2I6cGh5X3R5cGU9dWxwaSAtIFVTQiBzaG91bGQgd29yayB3aXRoIFVMUEkgUEhZczsKCiAgICBUaGUgcHVycG9zZSBvZiB0aGlzIHNpbXBsZSBpbXBsZW1lbnRhdGlvbiBpcyB0byBkZWZpbmUgc29tZQogICAgaW50ZXJuYWwgQVBJIGFuZCB0aGVuIHdlIGNhbiBjb250aW51ZSBpbXByb3ZpbmcgdXNlciBleHBlcmllbmNlCiAgICBieSBhZGRpbmcgbW9yZSBtYXR1cmUgaW50ZXJmYWNlLCBsaWtlIGh3Y29uZmlnIGNvbW1hbmQgd2l0aAogICAgYmVsbHMgYW5kIHdoaXN0bGVzLiBPciBub3QgYWRkaW5nLCBpZiB3ZSBmZWVsIHRoYXQgY3VycmVudAogICAgaW50ZXJmYWNlIGZpdHMgaXRzIG5lZWRzLgoKICAgIFsxXSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FtZXJpY2FuX01lZ2F0cmVuZHMKICAgIFsyXSBSZWdhcmRpbmcgbmN1cnNlcyBhbmQgR1VJIHdpdGggbW91c2Ugc3VwcG9ydCAtLSBJJ20ganVzdAoJa2lkZGluZy4KICAgIFszXSBUaGUgY29tbWVudCByZWdhcmRpbmcgYXB0LWdldCBpcyBhbHNvIGEgam9rZSwgbWVhbmluZyB0aGF0CglkZXBlbmRlbmN5IHRyYWNraW5nIGNvdWxkIGJlIG5vbi10cml2aWFsLiBGb3IgZXhhbXBsZSwgZm9yCgllbmFibGluZyBIVyBmZWF0dXJlIFggd2UgbWF5IG5lZWQgdG8gZGlzYWJsZSBZLCBhbmQgdHVybiBaCglpbnRvIHJlZHVjZWQgbW9kZSAobGlrZSBSTUlJLW9ubHkgaW50ZXJmYWNlIGZvciBldGhlcm5ldCwKCW5vIE1JSSkuCgoJSXQncyBxdWl0ZSB0cml2aWFsIHRvIGltcGxlbWVudCBzaW1wbGUgY2FzZXMgdGhvdWdoLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgQWNrZWQtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNmMzZmVmMjhiOWZmZjBkN2YzZmE0YzUxYzNlZTBhZThjMmEzYjA0MwpBdXRob3I6IEplcnJ5IFZhbiBCYXJlbiA8Z3ZiLnVib290QGdtYWlsLmNvbT4KRGF0ZToJV2VkIEp1bCAxNSAyMDo0Mjo1OSAyMDA5IC0wNDAwCgogICAgSW1wcm92ZSBVLUJvb3QgUG9ydGluZyBHdWlkZSBpbiB0aGUgUkVBRE1FCgogICAgVXBkYXRlIGZvci4uLgogICAgKiBCREkyMDAwIC0+IEJESTMwMDAgKEJESTIwMDAgaXMgb2Jzb2xldGUpLgogICAgKiBBZGQgYSBsaW5lIHRvIHJlYWQgdGhlIGRvYy9SRUFETUUuKiBmaWxlcwogICAgKiBGaXggY29kaW5nIHN0YW5kYXJkIHZpb2xhdGlvbnMKCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IDk1Nzg3MThjMWIwODVjYWM3MzAxN2Q4MzQwMDFiYzVjYjBiMmY3M2YKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSnVsIDE0IDE2OjAwOjI0IDIwMDkgLTA1MDAKCiAgICBtdGQ6IGNmaSAtIGlmIGRlZmluZWQsIHVzZSBNQVhfRkxBU0hfQkFOS1NfREVURUNUIGZvciBzdGF0aWMgZGVjbGFyYXRpb25zCgogICAgYS5rLmEgY2ZpX210ZC5jIGRvZXMgYXMgY2ZpX2ZsYXNoLmMgZG9lcy4gIFRoaXMgYWxzbyBwcmV2ZW50cwogICAgdGhlIFRRTTgzNHggYnVpbGQgZnJvbSBkb2luZyBhOgoKICAgIGNmaV9tdGQuYzozNjogZXJyb3I6IHZhcmlhYmx5IG1vZGlmaWVkICdjZmlfbXRkX2luZm8nIGF0IGZpbGUgc2NvcGUKICAgIGNmaV9tdGQuYzozNzogZXJyb3I6IHZhcmlhYmx5IG1vZGlmaWVkICdjZmlfbXRkX25hbWVzJyBhdCBmaWxlIHNjb3BlCgogICAgdXNpbmcgZ2NjIDQuNC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDRhOTkzMmE0MzY0YjU0ODc3M2JjMTMxYmY4NWUyNGEyZWMxNWYyYjAKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSnVsIDcgMTg6MDQ6MjEgMjAwOSAtMDUwMAoKICAgIG1wYzgzeHg6IGluY3JlYXNlIE1PTklUT1JfTEVOIHRvIG9mZnNldCBncm93aW5nIHBhaW5zCgogICAgU2F2aW5nIHRoZSBlbnZpcm9ubWVudCBsZWFkcyB0byBvdmVyd3JpdGluZyB1LWJvb3QgaXRzZWxmLAogICAgYnJpY2tpbmcgYm9hcmRzLiAgSW5jcmVhc2UgdS1ib290J3MgaW1hZ2Ugc2l6ZSBzbyB0aGUgZW52aXJvbm1lbnQKICAgIGJhc2UgYWRkcmVzcyBkb2Vzbid0IGVuZCB1cCBvdmVybGFwcGluZyB1LWJvb3QgdGV4dC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGMzMWUxMzI2MGJjZDA0OGE5NDQxMmE0N2IwMDQzODZlYTYxMTJhY2YKQXV0aG9yOiBWYWxlcml5IEdsdXNoa292IDxndnZAbHN0ZWMuY29tPgpEYXRlOglUdWUgSnVuIDMwIDE1OjQ4OjQxIDIwMDkgKzAzMDAKCiAgICB1c2I6IG1weDgzNDlpdHg6IGFkZGVkIHN1cHBvcnQgb2YgbG9hZGluZyBpbWFnZXMgZnJvbSBVU0Igc3RvcmFnZSAoTVBIL0RSKQoKICAgIFNpZ25lZC1vZmYtYnk6IFZhbGVyaXkgR2x1c2hrb3YgPGd2dkBsc3RlYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGQ4OWUxYzM2ODkxZGU3OTNhMjBhOTI5MjgyYWNjMGZjN2I5OGZlYWMKQXV0aG9yOiBWYWxlcml5IEdsdXNoa292IDxndnZAbHN0ZWMuY29tPgpEYXRlOglUdWUgSnVuIDMwIDE1OjQ4OjQwIDIwMDkgKzAzMDAKCiAgICB1c2I6IG1wYzgzNHg6IGFkZGVkIHN1cHBvcnQgb2YgdGhlIE1QSCBVU0IgY29udHJvbGxlciBpbiBhZGRpdGlvbiB0byB0aGUgRFIgb25lCgogICAgU2lnbmVkLW9mZi1ieTogVmFsZXJpeSBHbHVzaGtvdiA8Z3Z2QGxzdGVjLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDlhYzNkNWExN2VjZWYwYmViNzAwNzMwMTg5MjVlMDExYjExNjg0ZQpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdW4gMTUgMTE6NTE6NDcgMjAwOSAtMDUwMAoKICAgIG1wYzgzeHg6IHNldCA2NEJJVF9WU1BSSU5URiBmb3IgYm9hcmRzIHVzaW5nIG5hbmRfdXRpbAoKICAgIFdoZW4gZW5hYmxpbmcgTkFORCBzdXBwb3J0IGZvciBhIGJvYXJkLCBvbmUgbXVzdCBhbHNvIGRlZmluZQogICAgQ09ORklHX1NZU182NEJJVF9WU1BSSU5URiBiZWNhdXNlIHRoaXMgaXMgbmVlZGVkIGluIG5hbmRfdXRpbC5jCiAgICBmb3IgY29ycmVjdCBvdXRwdXQuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KICAgIENjOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgQ2M6IFJvbiBNYWRyaWQgPHJvbl9tYWRyaWRAc2JjZ2xvYmFsLm5ldD4KICAgIENjOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KCmNvbW1pdCAwNTJjMDg5MTY1MzJkMWQ5YzJmNjllYjkyMjk3MDljN2IyZmMxZjAyCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgpEYXRlOglXZWQgSnVsIDggMDc6NDE6MjQgMjAwOSArMDAwMAoKICAgIENvbGRGaXJlOiBVcGRhdGUgYm9vdGFyZ3MKCiAgICBBZGQgYSBib290YXJncyBmb3IgTTUzMDE3RVZCIGFuZCB1cGRhdGUgYm9vdGFyZ3MKICAgIGZvciBNNTQ0NTFFVkIKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+Cgpjb21taXQgNmU4ZDU4ZDM2NjkxNTIwZjhkYTc0Y2Q5NDg2NjFkMjhkNWE1ZGM2NgpBdXRob3I6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KRGF0ZToJVHVlIEp1biAzMCAxNDozMDoxOSAyMDA5ICswMDAwCgogICAgQ29tbWFuZCBmb3IgYWNjZXNzaW5nIHNlcmlhbCBmbGFzaCB1cGRhdGUKCiAgICBDaGFuZ2Ugc3RydG91bCBudW1iZXIgYmFzZSBvZiBhcmd2IDMgZnJvbSAwIHRvIDE2CgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgoKY29tbWl0IGVlMGE4NDYyNDY2ZGQyODQ5Njg1MzZlYjU3YzZlZWY0YmUwZDZhYWQKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+CkRhdGU6CVR1ZSBKdW4gMzAgMTQ6MTg6MjkgMjAwOSArMDAwMAoKICAgIENvbGRGaXJlOiBBZGQgRFNQSSBzdXBwb3J0IGZvciBNQ0Y1MjI3eCBhbmQgTUNGNTQ0NXgKCiAgICBSZW1vdmUgaW5kaXZpZHVhbCBDUFUgc3BlY2lmaWMgRFNQSSBkcml2ZXIuCiAgICBBZGQgcmVxdWlyZWQgZmVhdHVyZSBmb3IgdGhlIGNvbW1vbiBEU1BJIGRyaXZlciBpbiBjcHVfaW5pdCBhbmQKICAgIGluIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24gZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+Cgpjb21taXQgZGVjNjFjNzg1MWJhYTcyMTUxZWYxZDM2NTdlN2JiM2I2ODkwN2Q0OApBdXRob3I6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KRGF0ZToJVHVlIEp1biAzMCAxNDowOTo0NyAyMDA5ICswMDAwCgogICAgQ29sZGZpcmU6IENvbnNvbGlkYXRlIERTUEkgZHJpdmVyCgogICAgVW5pZnkgYm90aCBNQ0Y1MjI3eCBhbmQgTUNGNTQ0NXggRFNQSSBkcml2ZXIgaW4gQ1BVIHRvCiAgICBkcml2ZXIvc3BpIGZvbGRlciBmb3IgY29tbW9uIHVzZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+Cgpjb21taXQgMTFkODhiMjZhNjhiZDRiZjk4YjFjOTYyZmRlNjI1N2E1MDk3ODIzMQpBdXRob3I6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KRGF0ZToJRnJpIEp1biAxMiAxMzowMzozNCAyMDA5ICswMDAwCgogICAgQ29sZEZpcmU6IFJlbW92ZSBjb21waWxlciB3YXJuaW5nIG1lc3NhZ2VzCgogICAgUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMgYW5kIHByaW50ZiB0eXBlIG1pc21hdGNoIGluCiAgICBsaWJfbTY4ay9ib2FyZC5jCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgoKY29tbWl0IDQ1NjdjN2JmZjI1MDNmYjFhN2M3MzhmZjliOWYwYmQwMGQyNzRkOWEKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+CkRhdGU6CUZyaSBKdW4gMTIgMTE6MzE6MzEgMjAwOSArMDAwMAoKICAgIENvbGRGaXJlOiBGaXggTTUzMDE3RVZCIGZsYXNoIHNpemUKCiAgICBJbmNyZWFzZSB0aGUgZmxhc2ggc2l6ZSBmcm9tIDhNQiB0byAxNk1CCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgoKY29tbWl0IGJmOWE1MjE1MjllNDg0YjE1ZThmZGI1ODNhNjA3Y2Y3OTQ1ZDJmNmIKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+CkRhdGU6CUZyaSBKdW4gMTIgMTE6Mjk6MDAgMjAwOSArMDAwMAoKICAgIENvbGRGaXJlOiBBZGQgTTUyMDhFVkIgYW5kIE1DRjUyMHggQ1BVIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+Cgpjb21taXQgNzA5YjM4NGI2NDkzZDk3MjZkY2UyMDY2M2ViZTMxYmY3Y2FiMjkyNQpBdXRob3I6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KRGF0ZToJVGh1IEp1biAxMSAxNTozOTo1NyAyMDA5ICswMDAwCgogICAgQ29sZEZpcmU6IFVwZGF0ZSBmb3IgTTU0NDUxRVZCCgogICAgVXBkYXRlIHNlcmlhbCBib290IERSQU0ncyBJbnRlcm5hbCBSQU0sIHZlY3RvciB0YWJsZSBhbmQgRFJBTSBpbgogICAgc3RhcnQuUywgc2VyaWFsIGZsYXNoJ3MgcmVhZCBzdGF0dXMgY29tbWFuZCBvdmVyIFNQSSBhbmQgTk9SCiAgICBmbGFzaC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+Cgpjb21taXQgYmJmNmJiZmZjYWY2OTRjMDM1MDRjNjYxZTU4ZmJkMWFlZmU1YmY2NApBdXRob3I6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KRGF0ZToJVGh1IEp1biAxMSAxMjo1MDowNSAyMDA5ICswMDAwCgogICAgQ29sZEZpcmU6IFVwZGF0ZSBjb25maWd1cmF0aW9uIGZpbGUgdG8gdXNlIGZsYXNoIGJ1ZmZlciB3cml0ZQoKICAgIFVwZGF0ZSBNNTIyNzdFVkIsIE01MzAxN0VWQiBhbmQgTTU0NDU1RVZCIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24KICAgIGZpbGUgdG8gdXNlIGZsYXNoIGJ1ZmZlciB3cml0ZQoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KCmNvbW1pdCA3ZDQ0NTBhOTc3MzY3MzA1MmZjZDdmZGYwYTRhODhjMDg5MTI2YWMxCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEp1biAxNCAyMDo1ODo1MyAyMDA5ICswMjAwCgogICAgbXBjNTEyMWFkczogYWRkIEpGRlMyIGFuZCBNVERQQVJUUyBzdXBwb3J0OyBhZGp1c3QgZmxhc2ggbWFwCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAxZjFmODJmM2RlMTY2MGYzOThiZjQyYmZkNzA5Yjk4NTk1ODJjZTVlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEp1biAxNCAyMDo1ODo1MiAyMDA5ICswMjAwCgogICAgYXJpYTogYWRkIEpGRlMyIGFuZCBNVERQQVJUUyBzdXBwb3J0OyBhZGp1c3QgZmxhc2ggbWFwCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBhNmQ2ZDQ2YTRmZWY4NzY0NTVlMTFiNDVlZDY5OWMwZmIzYmQxY2ExCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEp1biAxNCAyMDo1ODo1MSAyMDA5ICswMjAwCgogICAgYXJpYTogZW5hYmxlIE5BTkQgZmxhc2ggc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMTM5NDY5MjVlODUwZGI1MzUxOTgyYWNiNjkxZDUxNzE2ZmM3NTRlMgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBKdW4gMTQgMjA6NTg6NTAgMjAwOSArMDIwMAoKICAgIE1QQzUxMng6IGZpeCB0eXBvIGluIGNvbW1lbnQgbGlzdGluZyB0aGUgTkFORCBkcml2ZXIgbmFtZQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBDYzogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQ2M6IFJlaW5oYXJkIEFybHQgPHJlaW5oYXJkLmFybHRAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCAyY2E2Zjc0ZDA5NjUzZjgwNDFiNTJjYWZkMGQ2NTBmZGMyYTU2YzUxCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEp1biAxNCAyMDo1ODo0OSAyMDA5ICswMjAwCgogICAgbWVjcDUxMjM6IGNsZWFudXAgLSByZW1vdmUgZGVhZCBjb2RlCgogICAgUmVtb3ZlIGRlYWQgY29kZSB0aGF0IHdhcyBvYnZpb3VzbHkgYSBsZWZ0LW92ZXIgZnJvbSBjb3B5ICYgcGFzdGUuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIENjOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBDYzogUmVpbmhhcmQgQXJsdCA8cmVpbmhhcmQuYXJsdEBlc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDI1NjcxYzg2NzJmMmQ3YjM5NTU1NDE2YTZiN2E2YjdiMzliODEwYmYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gSnVuIDE0IDIwOjU4OjQ4IDIwMDkgKzAyMDAKCiAgICBhcmlhOiBhZGp1c3QgbWVtb3J5IGNvbnRyb2xsZXIgaW5pdGlhbGl6YXRpb24KCiAgICBOZWVkZWQgZm9yIFJldi4gMiBzaWxpY29uIGF0IDQwMCBNSHoKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDc2MjlmMWMwNmI2ZGVhMzZiYmM3YmY3MDgyMGI4MjRlOWI2ZDIyMjcKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gSnVuIDE0IDIwOjU4OjQ3IDIwMDkgKzAyMDAKCiAgICBNUEM1MTJ4OiBmYWN0b3Igb3V0IGNvbW1vbiBjb2RlCgogICAgTm93IHRoYXQgd2UgaGF2ZSAzIGJvYXJkcyBmb3IgdGhlIE1QQzUxMnggaXQgdHVybnMgb3V0IHRoYXQgdGhleSBhbGwKICAgIHVzZSB0aGUgdmVyeSBzYW1lIGZpeGVkX3NkcmFtKCkgY29kZS4KCiAgICBUaGlzIHBhdGNoIGZhY3RvcnMgb3V0IHRoaXMgY29tbW9uIGNvZGUgaW50byBjcHUvbXBjNTEyeC9maXhlZF9zZHJhbS5jCiAgICBhbmQgYWRkcyBhIG5ldyBoZWFkZXIgZmlsZSwgaW5jbHVkZS9hc20tcHBjL21wYzUxMnguaCwgd2l0aCBzb21lCiAgICBtYWNyb3MsIGlubGluZSBmdW5jdGlvbnMgYW5kIHByb3RvdHlwZSBkZWZpbml0aW9ucyBzcGVjaWZpYyB0byBNUEM1MTJ4CiAgICBzeXN0ZW1zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBDYzogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQ2M6IFJlaW5oYXJkIEFybHQgPHJlaW5oYXJkLmFybHRAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCAwNTQ5MzUzYTZiYTVhYTAzNDIwYzA5NjJiOTA3MmU5Y2YxZmE0OWQ5CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEp1biAxNCAyMDo1ODo0NiAyMDA5ICswMjAwCgogICAgbWVjcDUxMjM6IGZpeCBidWlsZCBlcnJvcgoKICAgIFRoZSBtZWNwNTEyMyBib2FyZCBkaWQgbm90IGNvbXBpbGUgYmVjYXVzZSB0aGUgTVNDQU4gQ2xvY2sgQ29udHJvbAogICAgUmVnaXN0ZXJzIHdlcmUgbWlzc2luZzsgdGhlc2UgZ290IGFkZGVkLCBidXQgYXMgYW4gYXJyYXkgaW5zdGVhZAogICAgb2YgNCBpbmRpdmlkdWFsIHJlZ2lzdGVycy4gQWRhcHQgdGhlIGNvZGUgc28gaXQgYnVpbGRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBDYzogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQ2M6IFJlaW5oYXJkIEFybHQgPHJlaW5oYXJkLmFybHRAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCBhOTkwNWRiNWQyOWE1NmFlZGQ3ZGI1YmNiNTZiMDM4NTg3M2FhNmEzCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEp1biAxNCAyMDo1ODo0NSAyMDA5ICswMjAwCgogICAgTVBDNTEyeDogQWRkIE1TQ0FOMS4uLjQgQ2xvY2sgQ29udHJvbCBSZWdpc3RlcnMKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgQ2M6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIENjOiBSZWluaGFyZCBBcmx0IDxyZWluaGFyZC5hcmx0QGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgZjU0ODljNDIwMGIzN2M5YTFkNmRiZGUxMTZmNWFkYzA1Mzk2MTBkZQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBKdW4gMTQgMjA6NTg6NDQgMjAwOSArMDIwMAoKICAgIE1QQzUxMng6IGVuYWJsaW5nIE5BTkQgc3VwcG9ydCByZXF1aXJlcyBDT05GSUdfU1lTXzY0QklUX1ZTUFJJTlRGCgogICAgV2hlbiBlbmFibGluZyBOQU5EIHN1cHBvcnQgZm9yIGEgYm9hcmQsIG9uZSBtdXN0IGFsc28gZGVmaW5lCiAgICBDT05GSUdfU1lTXzY0QklUX1ZTUFJJTlRGIGJlY2F1c2UgdGhpcyBpcyBuZWVkZWQgaW4gbmFuZF91dGlsLmMKICAgIGZvciBjb3JyZWN0IG91dHB1dC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgQ2M6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIENjOiBSZWluaGFyZCBBcmx0IDxyZWluaGFyZC5hcmx0QGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgYjRkYjRhNzYzOGVmOTBjZjBhYWNmN2I5NTRkOWJmMzA0M2RkYTc4MApBdXRob3I6IFBvLVl1IENodWFuZyA8cmF0YmVydEBmYXJhZGF5LXRlY2guY29tPgpEYXRlOglGcmkgSnVsIDEwIDE4OjAzOjU3IDIwMDkgKzA4MDAKCiAgICBpc3N1ZSB3cml0ZSBjb21tYW5kIHRvIGJhc2UgZm9yIEpFREVDIGZsYXNoCgogICAgRm9yIEpFREVDIGZsYXNoLCB3ZSBzaG91bGQgaXNzdWUgd29yZCBwcm9ncmFtbWluZyBjb21tYW5kIHJlbGF0aXZlIHRvCiAgICBiYXNlIGFkZHJlc3MgcmF0aGVyIHRoYW4gc2VjdG9yIGJhc2UgYWRkcmVzcy4gT3JpZ2luYWwgc291cmNlIG1ha2VzCiAgICBTU1QgRmxhc2ggZmFpbHMgdG8gcHJvZ3JhbSBzZWN0b3JzIHdoaWNoIGFyZSBub3Qgb24gdGhlIDB4MTAwMDAgYm91bmRhcmllcy4KCiAgICBlLmcuCiAgICBTU1QzOUxGMDQwIHVzZXMgYWRkcjE9MHg1NTU1IGFuZCBhZGRyMj0weDJBQUEsIGhvd2V2ZXIsIGVhY2ggc2VjdG9yCiAgICBpcyAweDEwMDAgYnl0ZXMuCgogICAgVGh1cywgaWYgd2UgaXNzdWUgY29tbWFuZCB0byAic2VjdG9yIGJhc2UgKDB4NDEwMDApICsgb2Zmc2V0KDB4NTU1NSkiLAogICAgaXQgc2VuZHMgdG8gMHg0NjU1NSBhbmQgdGhlIGNoaXAgZmFpbHMgdG8gcmVjb2duaXplIHRoYXQgYWRkcmVzcy4KCiAgICBUaGlzIHBhdGNoIGlzIHRlc3RlZCB3aXRoIFNTVDM5TEYwNDAuCgogICAgU2lnbmVkLW9mZi1ieTogUG8tWXUgQ2h1YW5nIDxyYXRiZXJ0QGZhcmFkYXktdGVjaC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOTg2OTIyNzE0ZmZkMjFhZDM5ZjQ4NTIyZDI4NWZmZmM3YWVkNTZiMQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBNYXkgMiAxMTo1Mzo1MCAyMDA5ICswMjAwCgogICAgdmVyc2F0aWxlOiB1cGRhdGUgY29uZmlnIGFuZCBtZXJnZSB0byBjZmkgZmxhc2ggZHJpdmVyCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+CiAgICBDYzogQ2F0YWxpbiBNYXJpbmFzIDxjYXRhbGluLm1hcmluYXNAYXJtLmNvbT4KCmNvbW1pdCBkNmU4ZWQ4MzJiMjVkNWRiNGZkZDNmYjkxZTczMDI4ZTQ5NGRjZDZlCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IE1heSAyIDExOjUzOjQ5IDIwMDkgKzAyMDAKCiAgICB2ZXJzYXRpbGU6IHNwZWNpZnkgdGhlIGJvYXJkIHR5cGUgb24gdGhlIHByb21wdAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgogICAgQ2M6IENhdGFsaW4gTWFyaW5hcyA8Y2F0YWxpbi5tYXJpbmFzQGFybS5jb20+Cgpjb21taXQgNWNjYzJkOTlkNjFjODE4MDUzNDhiMGNkOWY3OTczMWIyNzFmN2RhZgpBdXRob3I6IFNlZGppIEdhb3Vhb3UgPHNlZGppLmdhb3Vhb3VAYXRtZWwuY29tPgpEYXRlOglUaHUgSnVuIDI1IDE3OjA0OjE1IDIwMDkgKzAyMDAKCiAgICBhdDkxOiBJbnRyb2R1Y3Rpb24gb2YgYXQ5MXNhbTlnMTAgU09DLgoKICAgIEFUOTFzYW05ZzEwIGlzIGFuIEFSTSA5MjZlai1zIFNPQy4gSXQgaXMgYW4gZXZvbHV0aW9uIG9mIHRoZSBhdDkxc2FtOTI2MSB3aXRoIGEKICAgIGZhc3RlciBjbG9jayBzcGVlZDogMjY2LzEzM01Iei4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTZWRqaSBHYW91YW91IDxzZWRqaS5nYW91YW91QGF0bWVsLmNvbT4KCmNvbW1pdCAyMmVlNjQ3MzgwYzQyZjQ0NTI4Zjk5YjdjMWI0MjM3MjVlNTQyMTAyCkF1dGhvcjogU2VkamkgR2FvdWFvdSA8c2VkamkuZ2FvdWFvdUBhdG1lbC5jb20+CkRhdGU6CVRodSBKdWwgOSAxMDoxNjoyOSAyMDA5ICswMjAwCgogICAgYXQ5MTogSW50cm9kdWN0aW9uIG9mIGF0OTFzYW05ZzQ1IFNPQy4KCiAgICBBVDkxc2FtOWc0NSBzZXJpZXMgaXMgYW4gQVJNIDkyNmVqLXMgU09DIGZhbWlseSBjbG9ja2VkIGF0IDQwMC8xMzNNSHouCiAgICBJdCBlbWJlZHMgVVNCIGhpZ2ggc3BlZWQgaG9zdCBhbmQgZGV2aWNlLCBMQ0QsIEREUjIgUkFNLCBhbmQgYSBmdWxsIHNldCBvZgogICAgcGVyaXBoZXJhbHMuCgogICAgVGhlIGZpcnN0IGJvYXJkIHRoYXQgZW1iZWRzIGF0OTFzYW05ZzQ1IGNoaXAgaXMgdGhlIEFUOTFTQU05RzQ1LUVLRVMuCiAgICBPbiB0aGUgYm9hcmQgeW91IGNhbiBmaW5kIDIgVVNBUlQsIFVTQiBoaWdoIHNwZWVkLAogICAgYSA0ODAqMjcyIExHIGxjZCwgZXRoZXJuZXQsIGdwaW8vam95c3RpY2svYnV0dG9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTZWRqaSBHYW91YW91IDxzZWRqaS5nYW91YW91QGF0bWVsLmNvbT4KCmNvbW1pdCBjMzNjNTk5MGNlYzdjZWQ5ZWYxZWYxNDhkZWJiY2EzNGFkYWZhMTJiCkF1dGhvcjogRGFuaWVsIE1hY2sgPGRhbmllbEBjYWlhcS5kZT4KRGF0ZToJVHVlIEp1biAyMyAxNzozMDowNSAyMDA5ICswMjAwCgogICAgcHhhOiBmaXggQ0tFTl9CIHJlZ2lzdGVyIGJpdHMKCiAgICBUaGUgY3VycmVudCBkZWZpdGlvbiBmb3IgQ0tFTl9CIHJlZ2lzdGVyIGJpdHMgaXMgbm9uc2Vuc2UuIEFkZGluZyAzMiB0bwogICAgdGhlIHNoaWZ0ZWQgdmFsdWUgaXMgZXF1YWwgdG8gJ3wgKDEgPDwgNSknLCBhbmQgdGhpcyBiaXQgaXMgbWFya2VkCiAgICAncmVzZXJ2ZWQnIGluIHRoZSBQWEEgZG9jcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgTWFjayA8ZGFuaWVsQGNhaWFxLmRlPgoKY29tbWl0IGJkODc2YmU0NmYyOGI1ZmMyODk2NTM3ZjZkMDEzNTNmMzMyNzg5ZjcKQXV0aG9yOiBEYW5pZWwgTWFjayA8ZGFuaWVsQGNhaWFxLmRlPgpEYXRlOglUdWUgSnVuIDIzIDE3OjMwOjA0IDIwMDkgKzAyMDAKCiAgICBweGE6IGFkZCBjbG9jayBmb3Igc3lzdGVtIGJ1cyAyIGFyYml0ZXIKCiAgICBUaGlzIGNsb2NrIGlzIG5lZWRlZCBmb3Igc3lzdGVtcyB1c2luZyB0aGUgVVNCMiBkZXZpY2UgdW5pdCBvciB0aGUgMmQKICAgIGdyYXBoaWNzIGFjY2VsZXJhdG9yLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBNYWNrIDxkYW5pZWxAY2FpYXEuZGU+Cgpjb21taXQgYjAxNjAwMGE5NTUxNGMwOGNhYjUwZTFjYmEwMGIwMTljMDgwMWJjNApBdXRob3I6IEdyYXp2eWRhcyBJZ25vdGFzIDxub3Rhc2FzQGdtYWlsLmNvbT4KRGF0ZToJV2VkIEp1bCA4IDAwOjMwOjAxIDIwMDkgKzAzMDAKCiAgICBPTUFQMyBwYW5kb3JhOiBGaXggQ0tFMSBNVVggc2V0dGluZyB0byBhbGxvdyBzZWxmLXJlZnJlc2gKCiAgICBQYW5kb3JhIGlzIHVzaW5nIGJvdGggU0RSQyBDU2VzLiBUaGUgTVVYIHNldHRpbmcgaXMgbmVlZGVkCiAgICBmb3IgdGhlIHNlY29uZCBDUyBjbG9jayBzaWduYWwgdG8gYWxsb3cgdGhlIDIgUkFNIHBhcnRzIHRvCiAgICBiZSBwdXQgaW4gc2VsZi1yZWZyZXNoIGNvcnJlY3RseS4KCiAgICBCYXNlZCBvbiBzaW1pbGFyIHBhdGNoIGZvciBiZWFnbGUgYW5kIG92ZXJvIGJ5CiAgICBKZWFuIFBpaGV0IGFuZCBTdGV2ZSBTYWtvbWFuLgoKY29tbWl0IDg2NzJjMjg4NzAzZjNjNTFjODI5ODUxYzhmZTY2MDhjNzg2OWZhYWEKQXV0aG9yOiBHcmF6dnlkYXMgSWdub3RhcyA8bm90YXNhc0BnbWFpbC5jb20+CkRhdGU6CVdlZCBKdWwgOCAwMDozMDowMCAyMDA5ICswMzAwCgogICAgT01BUDMgcGFuZG9yYTogc2V0dXAgcHVsbHMgZm9yIHZhcmlvdXMgR1BJT3MKCiAgICBTZXQgcHVsbHVwcyBvciBwdWxsZG93bnMgZm9yIEdQSU9zIHdoaWNoIG5lZWQgdGhlbS4KICAgIERpc2FibGUgdGhlbSBmb3Igb3RoZXJzLCB3aGljaCBoYXZlIGV4dGVybmFsIHB1bGxzLgogICAgQWxzbyBtYWtlIGRpc2FibGVkIHB1bGwgc2V0dGluZyBjb25zaXN0ZW50IChzb21lIHBpbnMgaGFkCiAgICB0eXBlIHNldCB0byAidXAiIGV2ZW4gaWYgcHVsbCB0eXBlIHNlbGVjdGlvbiB3YXMgZGlzYWJsZWQpLgoKY29tbWl0IDVmZjc4MTIyZjIyOTk0Njg2MmEzZjY3YTJmNTBhMzI5ZThlMWJjZjUKQXV0aG9yOiBHcmF6dnlkYXMgSWdub3RhcyA8bm90YXNhc0BnbWFpbC5jb20+CkRhdGU6CVdlZCBKdWwgOCAwMDoyOTo1OSAyMDA5ICswMzAwCgogICAgT01BUDMgcGFuZG9yYTogc2V0dXAgcGluIG11eCBmb3IgcGlucyB1c2VkIG9uIHJldjMgYm9hcmRzCgogICAgU2V0dXAgcGluIG11eCBmb3IgR1BJTyBwaW5zIGNvbm5lY3RlZCBvbiByZXYzIG9yIGxhdGVyCiAgICBib2FyZHMuIEFsc28gY2hhbmdlIE5VQjIgSVJRIHBpbi4gVGhpcyBzaG91bGQgbm90IGFmZmVjdAogICAgb2xkZXIgYm9hcmRzIGJlY2F1c2UgdGhleSBkb24ndCBoYXZlIGFueSBudWJzIChhbmFsb2cKICAgIGNvbnRyb2xsZXJzKSBhdHRhY2hlZCB0byB0aGVtLgoKY29tbWl0IDY3Yzk3YzM0NmIyN2M1ODZhNzI2MzU2NGY3YWZmZjZkMWY4ZDhkMGEKQXV0aG9yOiBHcmF6dnlkYXMgSWdub3RhcyA8bm90YXNhc0BnbWFpbC5jb20+CkRhdGU6CVdlZCBKdWwgOCAwMDoyOTo1OCAyMDA5ICswMzAwCgogICAgT01BUDMgcGFuZG9yYTogcGluIG11eCBjbGVhbnVwCgogICAgUmVtb3ZlIGNvbmZpZ3VyYXRpb24gb2Ygbm90IHVudXNlZCBwaW5zLCBlZmZlY3RpdmVseQogICAgbGVhdmluZyB0aGVtIGluIHNhZmUgbW9kZS4KCmNvbW1pdCBiOTk2MTY1ZjVhMTYyM2EwNTVjMDNiMjJkNjRkNmQ1ZGE4MTgzNWQwCkF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgpEYXRlOglNb24gSnVsIDYgMTU6NTA6NDcgMjAwOSArMDUzMAoKICAgIGFybTogS2lya3dvb2Q6IGJ1Z2ZpeDogVUFSVDEgYmFyIGNvcnJlY3Rpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Cgpjb21taXQgNTAyNDNlM2U3YTk2YTk2YzU0MThjZTZjOTBiNzI1MmQyNmZkZDViMApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBKdWwgNyAxNTo0ODo1OCAyMDA5IC0wNTAwCgogICAgdXNiOiBGaXggY29tcGlsZXIgd2FybmluZyB3aXRoIGdjYzQuNAoKICAgIGVoY2ktaGNkLmM6IEluIGZ1bmN0aW9uICdlaGNpX3N1Ym1pdF9yb290JzoKICAgIGVoY2ktaGNkLmM6NzE5OiB3YXJuaW5nOiB2YWx1ZSBjb21wdXRlZCBpcyBub3QgdXNlZAogICAgZWhjaS1oY2QuYzo3NDg6IHdhcm5pbmc6IHZhbHVlIGNvbXB1dGVkIGlzIG5vdCB1c2VkCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IDA0MzY2ZDA3MGExYTNmN2FmZmRkZjE1YWFhZWE4N2JjZjQ0Y2RiYjAKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVdlZCBKdWwgOCAxMTo0MjoxOSAyMDA5ICswOTAwCgogICAgc2g6IFVwZGF0ZSBwY2kgY29uZmlnIGZvciBSZW5lc2FzIHI3NzgwbXAgYm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgNzRkOWMxNmE2ODFhYTI0YmI0MTI1MTkxZmUzOWRjN2M3NWNkZTU2YQpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJVGh1IEp1biAyNSAxNjozMToyNiAyMDA5ICswOTAwCgogICAgc2g6IEFkZCBzdXBwb3J0IEVTUFQtR0lHQSBib3JhZAoKICAgIEVTUFQtR2lnYSBpcyBTSDc3NjMtYmFzZWQgcmVmZXJlbmNlIGJvYXJkLgogICAgQm9hcmQgc3VwcG9ydCBpcyByZWxhdGl2ZWx5IHNwYXJzZSwgcHJlc2VudGx5IHN1cHBvcnRpbmcgc2VyaWFsLAogICAgZ2lnYWJpdCBldGhlcm5ldCwgVVNCIGhvc3QsIGFuZCBNVEQuCgogICAgTW9yZSBpbmZvcm1hdGlvbiAoaW4gSmFwYW5lc2UpIGF2YWlsYWJsZSBhdDoKICAgIGh0dHA6Ly93d3cuY2VudGUuanAvcHJvZHVjdC9jZW50ZV9oYXJkL0VTUFQtR2lnYS5odG1sCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGRhZTRlMDE0OGExMTQ2YTU2MTAwMjVhZTRiNDQ1ZTg0MTQxMGI2NTkKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgpEYXRlOglGcmkgSnVsIDMgMTY6MDY6MzcgMjAwOSArMDIwMAoKICAgIEFkZCBFU0QgUENJIHZlbmRvciBJRAoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Cgpjb21taXQgODc2YjNjZWY1MzdhYWIyY2JhOGMxOTUwNWRiMjg3NmY2MDU3ZjgxOApBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBKdW4gMjIgMTg6MDE6NDEgMjAwOSAtMDUwMAoKICAgIGFwaV9leGFtcGxlcy9NYWtlZmlsZTogR2VuZXJhbCBjbGVhbnVwCgogICAgKiBSZW1vdmUgc3ltbGlua2luZyBvZiBmaWxlcyBsb2NhdGVkIG91dHNpZGUgYXBpX2V4YW1wbGVzLwoKICAgICogQXV0byBnZW5lcmF0ZSBkZXBlbmRlbmNpZXMgZm9yIGZpbGVzIGxvY2F0ZWQgb3V0c2lkZSBhcGlfZXhhbXBsZXMvCgogICAgKiBVcGRhdGUgbmFtZXMgb2YgdmFyaWFibGVzIHRvIGJlIHNpbWlsYXIgdG8gdGhvc2UgaW4gdG9vbHMvTWFrZWZpbGUKCiAgICAqIEZpeCBvdXQgb2YgdHJlZSBidWlsZCBlcnJvcgogICAgICBEZXBlbmRlbmNpZXMgYXJlIGNhbGN1bGF0ZWQgZm9yIGFsbCBmaWxlcyBpbiB0aGUgU1JDUyB2YXJpYWJsZS4KICAgICAgUHJldmlvdXNseSwgdGhlIFNSQ1MgdmFyaWFibGUgY29udGFpbmVkIGZpbGVzIHdoaWNoIHdlcmUgc3ltbGlua2VkCiAgICAgIGludG8gdGhlIGFwaV9leGFtcGxlcy8gZGlyZWN0b3J5LiAgVGhlc2Ugc3ltbGlua2VkIGZpbGVzIGRpZCBub3QgZXhpc3QKICAgICAgd2hlbiBkZXBlbmRlbmNpZXMgd2VyZSBjYWxjdWxhdGVkIHdoZW4gYnVpbGRpbmcgb3V0IG9mIHRyZWUuICBUaGlzCiAgICAgIHJlc3VsdGVkIGluIGVycm9ycyBzdWNoIGFzOgoJbWFrZVsxXTogKioqIE5vIHJ1bGUgdG8gbWFrZSB0YXJnZXQgYC93b3JrL3dkL3RtcC1wcGMvYXBpX2V4YW1wbGVzLy5kZXBlbmQnLCBuZWVkZWQgYnkgYF9kZXBlbmQnLiAgU3RvcC4KCW1ha2VbMV06IExlYXZpbmcgZGlyZWN0b3J5IGAvaG9tZS93ZC9naXQvdS1ib290L3dvcmsvYXBpX2V4YW1wbGVzJwoJbWFrZTogKioqIFtkZXBlbmRdIEVycm9yIDIKCiAgICAgIFNpbmNlIHN5bWxpbmtlZCBzb3VyY2UgZmlsZXMgYXJlIG5vIGxvbmdlciB1c2VkLCB0aGlzIGJ1ZyBubyBsb25nZXIKICAgICAgZXhpc3RzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBBY2tlZC1ieTogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KCmNvbW1pdCA1MjJmNmYwMmFkYjkzMTk0ZTMzNzAxNmZlMmU0ZTUzYzU4ZDVkNWVhCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJTW9uIEp1biAyMiAxODowMTo0MCAyMDA5IC0wNTAwCgogICAgYXBpX2V4YW1wbGVzL01ha2VmaWxlOiBHZXQgcmlkIG9mIHVubmVjZXNzYXJ5IGludGVybWVkaWF0ZSBMSUIgdGFyZ2V0CgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIEFja2VkLWJ5OiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgoKY29tbWl0IDExN2QwYWI1ZTZmM2IzZGQ0OGZjMzQ2ZGY0OTE5NTU1YTc4YWZkMzkKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglNb24gSnVuIDIyIDE4OjAxOjM5IDIwMDkgLTA1MDAKCiAgICBhcGlfZXhhbXBsZXMvTWFrZWZpbGU6IENvbWJpbmUgRUxGIGFuZCBCSU4gdGFyZ2V0cwoKICAgIENvbWJpbmluZyB0aGUgdHdvIHJ1bGVzIGNsZWFucyB1cCB0aGUgTWFrZWZpbGUgYSBiaXQKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgogICAgQWNrZWQtYnk6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Cgpjb21taXQgNjQ0Y2IzODEwOGI4ZGMyMmUwZWYzY2Y1ZjQwNGZlMzEwZDE5OTVmOApBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBKdW4gMjIgMTg6MDE6MzggMjAwOSAtMDUwMAoKICAgIGFwaV9leGFtcGxlcy9NYWtlZmlsZTogU3BsaXQgdXAgdmFyaWFibGUgZGVjbGFyYXRpb25zCgogICAgVGhpcyBjbGVhbnMgdXAgdGhlIE1ha2VmaWxlIGEgYml0IGFuZCBzaW1wbGlmaWVzIGZ1dHVyZSBjaGFuZ2VzCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIEFja2VkLWJ5OiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgoKY29tbWl0IDg5MGQyNDJmYWNjNDA3OWVkMjFlOTc5Y2VkMmU4YzZkNjk3NGY2ZDMKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSnVuIDE5IDE0OjEwOjUyIDIwMDkgLTA1MDAKCiAgICByZW1vdmUgX0lPX0JBU0UgYW5kIEtTRUcxQUREUiBmcm9tIGJvYXJkIGNvbmZpZ3VyYXRpb24gZmlsZXMKCiAgICBUaGUgS1NFRzFBRERSIG1hY3JvIHVzZWQgdG8gYmUgbmVjZXNzYXJ5IGZvciB0aGUgUlRMODEzOSBFdGhlcm5ldAogICAgZHJpdmVyLCBidXQgdGhlIGNvZGUgdGhhdCB1c2VkIHRoYXQgbWFjcm8gd2FzIHJlbW92ZWQgb3ZlciBhIHllYXIKICAgIGFnbywgc28gYm9hcmQgY29uZmlndXJhdGlvbiBmaWxlcyBubyBsb25nZXIgbmVlZCB0byBkZWZpbmUgaXQuCgogICAgVGhlIF9JT19CQVNFIG1hY3JvIGlzIGFsc28gYXV0b21hdGljYWxseSBkZWZpbmVkIHRvIDAgaWYgaXQgaXNuJ3QKICAgIGFscmVhZHkgc2V0LCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gZGVmaW5lIHRoYXQgbWFjcm8gZWl0aGVyIGluIHRoZQogICAgYm9hcmQgY29uZmlndXJhdGlvbiBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgogICAgQWNrZWQtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYzk5Njk5NDdhNDY4N2RlOTBlMmJiNThlNzY4NDJiNDkxYWEwZTBiOQpBdXRob3I6IEpvbiBTbWlybCA8am9uc21pcmxAZ21haWwuY29tPgpEYXRlOglTdW4gSnVuIDE0IDE4OjIxOjI4IDIwMDkgLTA0MDAKCiAgICBib2FyZCBzdXBwb3J0IHBhdGNoIGZvciBwaHlDT1JFLU1QQzUyMDBCLXRpbnkKCiAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIFBoeXRlYyBwaHlDT1JFLU1QQzUyMDBCLXRpbnkuCiAgICBDb2RlIG9yaWdpbmFsbHkgZnJvbSBQZW5ndXRyb25peC5kZS4KICAgIENyZWF0ZWQgQ09ORklHX1NZU19BVEFfQ1NfT05fVElNRVIwMSBkZWZpbmUgZm9yIHdoZW4gSURFIENTIGlzIG9uCiAgICBUaW1lciAwLzEKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gU21pcmwgPGpvbnNtaXJsQGdtYWlsLmNvbT4KICAgIEFja2VkLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgN2JkNDlhZDEyY2MzNmE0ZGU2OTk1ZGRhYmJjNjVmZmExYWExOTMzZApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIEp1biAxNSAxMzozNzoyMCAyMDA5IC0wNDAwCgogICAga2FsbHN5bXM6IGZpeCBlc2NhcGluZyBvZiBOVUwgY2hhciBpbiBzdHJpbmdzCgogICAgVGhlIGN1cnJlbnQga2FsbHN5bXMgY29kZSBpcyB1c2luZyBcXDAgdG8gZXNjYXBlIHRoZSBiYWNrc2xhc2ggaW4gdGhlIGF3awogICAgY29kZSwgYnV0IHRoZSBzaGVsbCB0b28gbmVlZHMgZXNjYXBpbmcuICBUaGlzIHdheSB3ZSBtYWtlIHN1cmUgZ2NjIGlzCiAgICBwYXNzZWQgdGhlIFwwLiAgVGhlbiBnY2MgaXRzZWxmIHdpbGwgY29uc3VtZSB0aGlzIGFzIGFuIG9jdGFsLCBzbyB3ZSBoYXZlCiAgICB0byB1c2UgMDAwIHNvIGdjYyB3aWxsIGNyZWF0ZSB0aGUgZmluYWwgTlVMLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBlZDU0MGYwN2I4YWQ4NjkwOTcwNGU5ODA2YzE3NjI0NjJjYjQ5OTVhCkF1dGhvcjogSGFyYWxkIEtyYXBmZW5iYXVlciA8SGFyYWxkLktyYXBmZW5iYXVlckBibHVldGVjaG5peC5hdD4KRGF0ZToJRnJpIEp1biAyNiAxMDoxODo0OSAyMDA5IC0wNDAwCgogICAgQmxhY2tmaW46IGNtLWJmNTYxOiBhZGQgZXhhbXBsZSBzZXR0aW5ncyBmb3IgRVhULUJGNXh4LVVTQi1FVEgyIGFkZC1vbgoKICAgIFRoZSBjbS1iZjU2MSBtb2R1bGUgY2FuIGVhc2lseSBob29rIHVwIHRvIHRoZSBFWFQtQkY1eHgtVVNCLUVUSDIgZXh0ZW5kZXIKICAgIGJvYXJkLCBzbyBhZGQgYSBzaW1wbGUgZXhhbXBsZSBvZiBob3cgdG8gZG8gdGhhdCBpbiB0aGUgYm9hcmQgY29uZmlnLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhcmFsZCBLcmFwZmVuYmF1ZXIgPEhhcmFsZC5LcmFwZmVuYmF1ZXJAYmx1ZXRlY2huaXguYXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZjhiZjU0YjQwODFjM2MzZDUxODgzMGRmMDAxN2EyM2VjNjcyYTg0MQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEp1biAyNSAxOTo0MDoyOCAyMDA5IC0wNDAwCgogICAgQmxhY2tmaW46IGJsYWNrc3RhbXA6IHVwZGF0ZSBzcGkgZmxhc2ggc2V0dGluZ3MKCiAgICBUaGUgbGF0ZXN0IGJsYWNrc3RhbXAgYm9hcmRzIGNhbiBvbmx5IHJ1biB0aGUgU1BJIGZsYXNoIGF0IDE1TUh6IGJlZm9yZQogICAgdGhleSBzdGFydCB0byBjcmFwIG91dCwgc28gbG93ZXIgdGhlIG1heCBzcGVlZHMgYWNjb3JkaW5nbHkuICBUaGUgbmV3IFNQSQogICAgZmxhc2ggYWxzbyBoYXMgZGlmZmVyZW50IHNlY3RvciByZXF1aXJlbWVudHMsIHNvIHVwZGF0ZSB0aGUgZW52aXJvbm1lbnQKICAgIHNpemVzIGFzIHdlbGwuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDI4NjA3MGRkYzgzMzk2NjZjMDliZDc5MTJlOTYwYjg1MGE4YTAzMTgKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBPY3QgNiAwMzozMTo1MiAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGFkZCBjYWNoZV9kdW1wIGNvbW1hbmRzCgogICAgQSBmZXcgZGVidWctdHlwZSBjb21tYW5kcyB1c2VkIHRvIGR1bXAgdGhlIHJhdyBpY2FjaGUvZGNhY2hlIGRhdGEuCVVzZWZ1bAogICAgd2hlbiB0cnlpbmcgdG8gdHJhY2sgZG93biBjYWNoZS1yZWxhdGVkIGJ1Z3MuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDYzMmU5YjY3MWVmYjBhNmM5MDA0OTlmN2E0OWZlNWI2MzI5MmI1ZmMKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgpEYXRlOglXZWQgSnVsIDggMTU6MzE6NTcgMjAwOSArMDIwMAoKICAgIHBwYzR4eDogU2V0IGRlZmF1bHQgUENJIGRldmljZSBJRCBmb3IgNDA1RVAgYm9hcmRzCgogICAgQ3VycmVudCBjb2RlIG9ubHkgc2V0cyB0aGUgUENJIHZlbmRvciBpZCB0byAweDEwMTQgYW5kCiAgICBsZWF2ZWQgZGV2aWNlIGlkIHRvIDB4MDAwMC4KCiAgICBUaHMgcGF0Y2ggLi4uLgogICAgYSkgdXNlcyB0aGUgY29ycmVjdCBQQ0lfVkVORE9SX0lEX0lCTSBtYWNybyBmb3IgdGhpcwogICAgYikgc2V0cyB0aGUgZGVmYXVsdCBkZXZpY2UgSUQgYXMgc3RhdGVkIGluIHRoZSBVTSB0byAweDAxNTYKICAgICAgIGJ5IHVzaW5nIFBDSV9ERVZJQ0VfSURfSUJNXzQwNUdQIGZvciB0aGlzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMTIzZjEwMmVjMDkzZmJhNjk2NzA2NmFjZGY5YmViNjM3ZGYyZTJkMQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+CkRhdGU6CVdlZCBKdWwgOCAxMzo0Mzo1NSAyMDA5ICswMjAwCgogICAgcHBjNHh4OiBNb3ZlIDQwNUVQIHBjaSBjb2RlIGZyb20gY3B1X2luaXRfZigpIHRvIF9fcGNpX3ByZV9pbml0KCkKCiAgICBUaGlzIHBhdGNoIG1vdmVzIHNvbWUgYmFzaWMgUENJIGluaXRpYWxpc2F0aW9uIGZyb20gdGhlIDR4eCBjcHVfaW5pdF9mKCkKICAgIHRvIGNwdS9wcGM0eHgvNHh4X3BjaS5jLgoKICAgIFRoZSBvcmlnaW5hbCBjcHVfaW5pdF9mKCkgZnVuY3Rpb24gZW5hYmxlZCB0aGUgNDA1RVAncyBpbnRlcm5hbCBhcmJpdGVyCiAgICBpbiBhbGwgc2l0dWF0aW9ucy4gQWxzbyB0aGUgSENFIGJpdCBpbiBjcGMwX3BjaSBpcyBhbHdheXMgc2V0LgogICAgVGhlIGZpcnN0IGlzIG5vdCByZWFsbHkgd2FudGVkIGZvciBQQ0kgYWRhcHRlciBkZXNpZ25zIGFuZCB0aGUgbGF0dGVyCiAgICBpcyBhIGdlbmVyYWwgYnVnIGZvciBQQ0kgYWRhcHRlciBVLUJvb3RzLiBCZWNhdXNlIGl0IGVuYWJsZXMKICAgIFBDSSBjb25maWd1cmF0aW9uIGJ5IHRoZSBzeXN0ZW0gQ1BVIGV2ZW4gd2hlbiB0aGUgUENJIGNvbmZpZ3VyYXRpb24gaGFzCiAgICBub3QgYmVlbiBzZXR1cCBieSB0aGUgNDA1RVAuIFRoZSBvbmUgYW5kIG9ubHkgY29ycmVjdCBwbGFjZSBpcwogICAgaW4gcGNpXzQwNWdwX2luaXQoKSAoc2VlICJTZXQgSENFIGJpdCIgY29tbWVudCkuCgogICAgU28gZm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucyB0aGUgYXJiaXRlciBpcyBzdGlsbCBlbmFibGVkIGluIGFueSBjYXNlLAogICAgYnV0IGZyb20gd2VhayBwY2lfcHJlX2luaXQoKSBzbyB0aGF0IGl0IGNhbiBiZSByZXBsYWNlZCBieSBib2FyZCBzcGVjaWZpYwogICAgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGM3MTEwM2Y5ZGM2NmRmY2NlOGFkNmRmOTQyMzY0MDQzYmYyN2FkZTgKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgpEYXRlOglXZWQgSnVsIDggMTM6NDM6MjMgMjAwOSArMDIwMAoKICAgIHBwYzR4eDogTWFrZSBpc19wY2lfaG9zdCgpIGF2YWlsYWJsZSBmb3IgYWxsIDQ0MCBhbmQgNDA1IENQVXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDFkODkzN2E0NjliZmViNTVjYTFmNmQ4OWE0ZTdjZDJkZmVlM2NmMTcKQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+CkRhdGU6CU1vbiBKdW4gMjkgMjA6NTY6NDMgMjAwOSArMDUzMAoKICAgIHVzYjogYWRkIE1hcnZlbGwgS2lya3dvb2QgZWhjaSBob3N0IGNvbnRyb2xsZXIgZHJpdmVyCgogICAgVGhpcyBkcml2ZXIgaXMgdGVzdGVkIG9uIFNoZWV2YXBsdWcgcGxhdGZvcm0KCiAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCBkYjdiNDNlNDY4MWY2ZjkzYzMzNjEzMjcwODE1N2E4YTBjY2ExZjhiCkF1dGhvcjogVml2ZWsgTWFoYWphbiA8dml2ZWsubWFoYWphbkBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDI0IDEwOjA4OjQwIDIwMDkgKzA1MzAKCiAgICBtcGM4M3h4OiBVU0I6IGZpeDogYWNjZXNzIG9mIGVoY2kgc3RydWN0IGVsZW1lbnRzCgogICAgSXQgZml4ZXMgdGhlIGFjY2VzcyB0byB0aGUgJ2VoY2knIHN0cnVjdCBlbGVtZW50cyBmb3IgbXBjODN4eCB3aGljaAogICAgc2hvdWxkIGhhdmUgYmVlbiB0YWtlbiBjYXJlIG9mIGluIDRlZjAxMDEwYWE0Nzk5Yzc1OWQ3NWU2NzAwN2ZkZDNhMzhjODhjOGEKICAgIFNvcnJ5IGFib3V0IHRoYXQuCgogICAgU2lnbmVkLW9mZi1ieTogVml2ZWsgTWFoYWphbiA8dml2ZWsubWFoYWphbkBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgMDgwNjYxNTI3MzU0MTdmYzU1YTVjOWRlMmNlYzA3MTRjNTI5ZTRmMwpBdXRob3I6IFZpdmVrIE1haGFqYW4gPHZpdmVrLm1haGFqYW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEp1biAxOSAxNzo1NjowMCAyMDA5ICswNTMwCgogICAgbXBjOHh4eDogVVNCOiBmaXg6IGFjY2VzcyBvZiBlaGNpIHN0cnVjdCBlbGVtZW50cwoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIGFjY2VzcyB0byB0aGUgJ2VoY2knIHN0cnVjdCBlbGVtZW50cyB3aGljaCBzaG91bGQKICAgIGhhdmUgYmVlbiB0YWtlbiBjYXJlIG9mZiBpbiA0ZWYwMTAxMGFhNDc5OWM3NTlkNzVlNjcwMDdmZGQzYTM4Yzg4YzhhCiAgICBTb3JyeSBhYm91dCB0aGF0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFZpdmVrIE1haGFqYW4gPHZpdmVrLm1haGFqYW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IGMzYTAxMmNlNjU4MThiZWIyNzQxOTVjZDQ3ZjMxZWQ4MGQwZmJhYTUKQXV0aG9yOiBCcnlhbiBXdSA8YnJ5YW4ud3VAYW5hbG9nLmNvbT4KRGF0ZToJVHVlIEp1biAxNiAwNToyNjoyNyAyMDA5IC0wNDAwCgogICAgdXNiOiBtdXNiOiBhZGQgdGltZW91dCB2aWEgQ09ORklHX01VU0JfVElNRU9VVAoKICAgIFNpZ25lZC1vZmYtYnk6IEJyeWFuIFd1IDxicnlhbi53dUBhbmFsb2cuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgNzk4NDk2N2E5NDA1NjcyZGIxNTgxNDAyZDJjMmNmYWUyNjhkMWE2NwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIEp1biAxNiAwNToyNjoyNSAyMDA5IC0wNDAwCgogICAgdXNiOiBtdXNiOiBkcm9wIG9sZCBtdXNiIHJlYWQvd3JpdGUgcHJvdG90eXBlcwoKICAgIFRoZXNlIGZ1bmN0aW9ucyBhcmUgbm8gbG9uZ2VyIGRlZmluZWQsIHNvIHJlbW92ZSB0aGVpciBwcm90b3R5cGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IDRlMDRmMTYwMjAxMTVhYjVjY2Y1MzE1OGUxMDBkZTU4YmNhZjI5YmQKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVuIDE1IDExOjUwOjA3IDIwMDkgLTA1MDAKCiAgICB1c2I6IGZpeCBDT05GSUdfU1lTX01QQzgzeHhfVVNCX0FERFIgbm90IGRlZmluZWQgZXJyb3IKCiAgICBmaXggYSBzdHJheSBDT05GSUdfTVBDODNYWCB0aGF0IGVzY2FwZWQgY29tbWl0CiAgICAwZjg5ODYwNDk0NWFmNDU0M2MxNTI1ZmMzM2I2YmFlNjIxYTNiODA1LgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCBiYzBkMzI5NmYxNzgwYjUwZTZiOTYzMGFlZTVlYjM2OGYyYWZiNmNiCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglUdWUgSnVuIDMwIDIzOjQ3OjMwIDIwMDkgKzEwMDAKCiAgICBhc20tZ2VuZXJpYzogQ29uc29saWRhdGUgZXJybm8uaCB0byBhc20tZ2VuZXJpYy9lcnJuby5oCgogICAgVGhpcyBwYXRjaCB1c2UgYmxhY2tmaW4gZXJybm8uaCBpbXBsZW1lbnRhdGlvbiB3aGljaAogICAgY29ycmVzcG9uZCBMaW51eCBrZXJuZWwgb25lLgoKICAgIE1JUFMgaW1wbGVtZXRhdGlvbiBpcyBkaWZmZXJlbnQgdGhhdCdzIHdoeSBJIGtlZXAgaXQuCgogICAgSSByZW1vdmVkIHBwY19lcnJvcl9uby5oIGZyb20gTWFydmVsbCBib2FyZHMgd2hpY2gKICAgIHdhcyB0aGUgc2FtZSB0b28uCgogICAgSSBoYXZlIGdvdCBhY2sgZnJvbSBwcGM0MHgsIGJsYWNrZmluLCBhcm0sIGNvbGRmaXJlIGFuZCBhdnIgY3VzdG9kaWFucy4KCiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgoKY29tbWl0IDI4OTZiNTg1MWYwNDMwYmYxNjUyOTM3NmE0MTkzNjMwZTk2NmM3ODgKQXV0aG9yOiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+CkRhdGU6CVR1ZSBKdWwgNyAxNjowMTowMiAyMDA5ICswMjAwCgogICAgQ29tbWFuZCBpbXByb3ZlbWVudHMgZm9yIHViaWZzCgogICAgQ2hlY2sgdGhhdCBhbiBhcmd1bWVudCBpcyBwYXNzZWQgdG8gdWJpZnNtb3VudCBhbmQgdGhhdCBhZGRyZXNzZXMgYW5kCiAgICBzaXplcyBhcmUgYWN0dWFsbHkgbnVtYmVycyBmb3IgdWJpZnNsb2FkLiBBbHNvIGltcHJvdmUgdGhlIGluc3RydWN0aW9ucwogICAgYSBiaXQuCgogICAgU2lnbmVkLW9mZi1ieTogU2ltb24gS2Fnc3Ryb20gPHNpbW9uLmthZ3N0cm9tQG5ldGluc2lnaHQubmV0PgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDI1YzhmNDAwNTk3OWFiMmQxOTA3MTNiYTM0MWQ5NmE1ZmE5MDVjZGIKQXV0aG9yOiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+CkRhdGU6CVR1ZSBKdWwgNyAxNjo1OTo0NiAyMDA5ICswMjAwCgogICAgSGFuZGxlIFZJRCBoZWFkZXIgb2Zmc2V0IGluIHViaSBwYXJ0IGNvbW1hbmQKCiAgICBUaGUgVklEIGhlYWRlciBvZmZzZXQgaXMgc29tZXRpbWVzIG5lZWRlZCB0byBpbml0aWFsaXplIHRoZSBVQkkKICAgIHBhcnRpdGlvbi4gVGhpcyBwYXRjaCBhZGRzIGl0IChvcHRpb25hbGx5KSB0byB0aGUgY29tbWFuZCBsaW5lCiAgICBmb3IgdGhlIHViaSBwYXJ0IGNvbW1hbmQuCgogICAgKExpbmVzIGhhdmUgYmVlbiBwcm9wZXJseSB3cmFwcGVkIHNpbmNlIGxhc3QgdmVyc2lvbikKCiAgICBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDM2NzJjZDVjM2I1M2QyMTlkMzMzNDVlZWJhZDRlMjVhZDViZjZkNTIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDkgMDk6NTY6MTYgMjAwOSArMDIwMAoKICAgIE1BSU5UQUlORVJTOiBmaXggc29ydGluZywgcmVtb3ZlIGR1cGxpY2F0ZXMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBlZmJmMTRlOWEyMzk0YTE1NGIxMjY0M2Q0YTAxMTk5NGI1MDk2YjVhCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhlaWtvLnNjaG9jaGVyQGludml0ZWwuaHU+CkRhdGU6CVdlZCBEZWMgMTAgMDg6Mjc6MDEgMjAwOCArMDEwMAoKICAgIGFsbCBwbGF0Zm9ybXM6IG1ha2Ugc2hvd19ib290X3Byb2dyZXNzKCkgd29yayBhZ2FpbgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDIwNWEwOTg4ZDhmZDc3OGM2MDc0NmMzNGMyZjE3ZGJkMmI3Y2QwZDIKQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+CkRhdGU6CU1vbiBKdW4gMjkgMTU6MjU6MTggMjAwOSArMDUzMAoKICAgIG5hbmQ6IEFkZCBNYXJ2ZWxsIEtpcmt3b29kIE5BTkQgZHJpdmVyCgogICAgVGhpcyBwYXRjaCBhZGRzIGEgTkFORCBkcml2ZXIgZm9yIHRoZSBNYXJ2ZWxsIEtpcmt3b29kIFNvQydzCgogICAgU2lnbmVkLW9mZi1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgogICAgQWNrZWQtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDA1ODBlNDhmNTNmOTcyNzgzZTU2ZmNlZGFkYjljZTZlNWIwYjZmMzIKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgpEYXRlOglNb24gSnVsIDYgMTY6Mjc6MzMgMjAwOSArMDIwMAoKICAgIHBwYzR4eDogTWFrZSBwbGxfd3JpdGUgZ2xvYmFsCgogICAgVGhpcyBwYXRjaCBtYWtlcyBwbGxfd3JpdGUgb24gUFBDNDA1RVAgYm9hcmRzCiAgICBnbG9iYWwgYW5kIGNhbGxhYmxlIGZyb20gQyBjb2RlLgoKICAgIHBsbF93cml0ZSBjYW4gYmUgdXNlZCB0byBkeW5hbWljYWxseSBtb2RpZnkgdGhlIFBMQjpQQ0kgZGl2aWRlcgogICAgYXMgaXQgaXMgcmVxdWlyZWQgZm9yIDMzLzY2IE1IeiBwY2kgYWRhcHRlcnMgYmFzZWQgb24gdGhlIDQwNUVQLgoKICAgIGJvYXJkX2Vhcmx5X2luaXRfZigpIGlzIGEgZ29vZCBwbGFjZSB0byBkbyB0aGF0IChjaGVjayBNNjZFTiBzaWduYWwKICAgIGFuZCBjYWxsIHBsbF93cml0ZSgpIHdoZW4gaXQgaXMgcmVxdWlyZWQpLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMjBiM2M0YjUyODYwNmQ1MTc5OWFlZDVlNGM3MTc4MzcyMGNkMmI3MgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIEp1bCA2IDExOjQ0OjMzIDIwMDkgKzAyMDAKCiAgICBwcGM0eHg6IFJlbW92ZSBjb21waWxhdGlvbiB3YXJuaW5nICJwY2lfYXN5bmNfZW5hYmxlZCBkZWZpbmVkIGJ1dCBub3QgdXNlZCIKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZDBhMTM2NGY5MWM4MGQyOWRhZmY2YjI3YTc5MDRhNTBjZGMwMGIzNQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+CkRhdGU6CUZyaSBKdWwgMyAxNjowNjowNiAyMDA5ICswMjAwCgogICAgcHBjNHh4OiBJbXBsZW1lbnQgaXNfcGNpX2hvc3QoKSBmb3IgNDA1IENQVXMKCiAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIGlzX3BjaV9ob3N0KCkgZnVuY3Rpb24gaW4gYSBzaW1pbGlhciB3YXkKICAgIGFzIGl0IGlzIHVzZWQgb24gNDQwIHRhcmdldHMuCgogICAgVGhlIGZvcm1lciBwYXRoIHdpdGggQ09ORklHX1BDSV9IT1NUID09IFBDSV9IT1NUX0FVVE8gZG9lcyBub3QKICAgIGJ1aWxkIG9uIDQwNUVQIHRhcmdldHMgYmVjYXVzZSBjaGVja2luZyB0aGUgUENJIGFyYml0ZXIgaXMgZGlmZmVyZW50LgogICAgU28gcHV0dGluZyB0aGUgZml4ZWQgY29kZSBpbnRvIGEgc2VwYXJhdGUgZnVuY3Rpb24gbWFrZXMgdGhlIGNvZGUKICAgIG1vcmUgcmVhZGFibGUuCgogICAgQWxzbyB1c2luZyBpc19wY2lfaG9zdCgpIG9uIDQwNSBicmluZ3MgNDA1IGFuZCA0NDAgUENJIGNvZGUKICAgIGEgbGl0dGxlIGJpdCBjbG9zZXIuCgogICAgSW4gcHJlcGFyYXRpb24gZm9yIGFuIHVwY29taW5nIDQwNUVQIGJhc2VkIFBNQyBtb2R1bGUgSSBtYWRlIHRoaXMKICAgIGZ1bmN0aW9uIHdlYWsgc28gdGhhdCBpdCBjYW4gYmUgb3ZlcndyaXR0ZW4gZnJvbSBib2FyZCBzcGVjaWZpYyBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDRkZGFlOTE1ZjI5NWRlZTMwMWYxNWMzMjEwMDUzM2E0OGUzYjQzMwpBdXRob3I6IEFsZXNzaW8gQ2VudGF6em8gPGNlbnRhenpvQGdtYWlsLmNvbT4KRGF0ZToJV2VkIEp1bCAxIDIyOjIwOjUxIDIwMDkgLTA3MDAKCiAgICBwcGM0eHg6IEZpeGVkIFBQQzR4eCBkZWJ1ZyBjb21waWxhdGlvbiBlcnJvciBpbiB1aWMuYwoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBkZWJ1ZyBjb21waWxhdGlvbiBlcnJvciBmb3IgUFBDNHh4IHBsYXRmb3JtcywgYWxsCiAgICBvdGhlciBhcmNoaXRlY3R1cmVzIGFyZSBub3QgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UuICBUaGUgJ2hhbmRsZXInCiAgICBwb2ludGVyIHdhcyB1bmRlZmluZWQuICBUaGUgZml4IGlzIGV4ZXJjaXNlZCBhbmQgaGFzIGVmZmVjdCBvbmx5IGlmCiAgICBERUJVRyBpcyBkZWZpbmVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzaW8gQ2VudGF6em8gYWNwYXRpbkB5YWhvby5jb20KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0OGUyYjUzNWEwZGQzYTdiNzdiNjc0MTMwOTM0YTI0ZjlkZTZmNDhkCkF1dGhvcjogRmVsaXggUmFkZW5za3kgPGZlbGl4QGVtYmVkZGVkLXNvbC5jb20+CkRhdGU6CVdlZCBKdWwgMSAxMTozNzo0NiAyMDA5ICswMzAwCgogICAgNHh4OiBGaXggY29tcGlsYXRpb24gd2FybmluZ3MgYW5kIE1RIHJlZ2lzdGVycyBkdW1wIGluIFNQRCBERFIyIGNvZGUKCiAgICBUaGlzIHBhdGNoIGZpeGVzIHByaW50ZiBmb3JtYXQgc3RyaW5nIGNvbXBpbGF0aW9uIHdhcm5pbmdzIGluIHNldmVyYWwKICAgIGRlYnVnIHN0YXRlbWVudHMuIEl0IGFsc28gZml4ZXMgdGhlIGR1bXAgb2YgRERSIGNvbnRyb2xsZXIgTVEgcmVnaXN0ZXJzCiAgICBmb3VuZCBvbiBzb21lIDQ0eCBhbmQgNDZ4IHBsYXRmb3Jtcy4gVGhlIGN1cnJlbnQgcmVnaXN0ZXIgZHVtcCBjb2RlCiAgICB1c2VzIGluY29ycmVjdCBEQ1JzIHRvIGFjY2VzcyB0aGVzZSByZWdpc3RlcnMuCgogICAgU2lnbmVkLW9mZi1ieTogRmVsaXggUmFkZW5za3kgPGZlbGl4QGVtYmVkZGVkLXNvbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMjZkMzdmMDA2MWFkMDVlNWMzODNjOTEwZjAwZTYwMDZmM2M4OWEzYQpBdXRob3I6IEZlbGl4IFJhZGVuc2t5IDxmZWxpeEBlbWJlZGRlZC1zb2wuY29tPgpEYXRlOglNb24gSnVuIDIyIDE1OjMwOjQyIDIwMDkgKzAzMDAKCiAgICBwcGM0eHg6IEZpeCBGRFQgRUJDIG1hcHBpbmdzIG9uIENhbnlvbmxhbmRzCgogICAgVGhpcyBwYXRjaCBmaXhlcyAyIHByb2JsZW1zIHdpdGggRkRUIEVCQyBtYXBwaW5ncyBvbiBDYW55b25sYW5kcy4KICAgIEZpcnN0LCBOQU5EIEVCQyBtYXBwaW5nIHdhcyBtaXNzaW5nLCBtYWtpbmcgTGludXggTkFORCBkcml2ZXIKICAgIHVudXNhYmxlIG9uIHRoaXMgYm9hcmQuIFNlY29uZCwgTk9SIHJlbWFwcGluZyBjb2RlIGFzc3VtZWQgdGhhdAogICAgTk9SIGlzIGFsd2F5cyBvbiBDUzAsIGhvd2V2ZXIgd2hlbiBib290aW5nIGZyb20gTkFORCBOT1IgaXMgb24gQ1MzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEZlbGl4IFJhZGVuc2t5IDxmZWxpeEBlbWJlZGRlZC1zb2wuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGJhYTlmOWJhNDM0NWVkNmRjNWM0MDM4NzFjMzJlNjI5NTMxNmVhNTIKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVR1ZSBKdW4gMTYgMjI6Mjk6MTUgMjAwOSArMDkwMAoKICAgIHNoOiBSZXZpc2VkIHRoZSBidWlsZCB3aXRoIG5ld2VzdCBjb21waWxlcgoKICAgIFRoZSBjaGVjayBvZiBkYXRhIGJlY2FtZSBzZXZlcmUgZnJvbSBuZXdlc3QgZ2NjLgogICAgVGhpcyBwYXRjaCBjaGVja2VkIGluIGdjYy00LjIgYW5kIDQuMyAuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGJlNDVjNjMyNTY4YmE3NjM0M2MxNDUzYjM5NTFhZDc5M2Y0ODJmZDUKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUaHUgSnVuIDQgMTI6MDY6NDggMjAwOSArMDIwMAoKICAgIHNoMy9zaDQ6IHJlbmFtZSBjb25maWcgb3B0aW9uIFRNVV9DTEtfRElWSURFUiB0byBDT05GSUdfU1lTX1RNVV9DTEtfRElWCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIENjOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgOGRkMjljODdiYTM3MDA3MmE4NDY0YjhjYzE5ZTBhMWU2ZTA0OTdiNApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVRodSBKdW4gNCAxMjowNjo0NyAyMDA5ICswMjAwCgogICAgc2gzL3NoNDogZml4IENPTkZJR19TWVNfSFogdG8gMTAwMAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CiAgICBDYzogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGFkZDM4MGY1MWYzNGVkMWUyNjc4YzJhYmFjOGQ1M2M5MWQ2NTJmMjYKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUaHUgSnVuIDQgMTI6MDY6NDYgMjAwOSArMDIwMAoKICAgIHNoOiBpbnRyb2R1Y2UgY2xvY2sgZnJhbWV3b3JrCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIENjOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgMzkzMWEzNzVkZTJjMzgxZDlmZjVlYzI3NjdiMmRhOWY2MmE0MWFlZgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVRodSBKdW4gNCAxMjowNjo0NSAyMDA5ICswMjAwCgogICAgc2g6IHVuaWZ5IGxpbmtlciBzY3JpcHQKCiAgICBhbGwgc2ggYm9hcmRzIHVzZSB0aGUgc2FtZSBjcHUgbGlua2VyIHNjcmlwdCBzbyBtb3ZlIGl0IHRvIGNwdS8kKENQVSkKCiAgICB0aGF0IGNvdWxkIGJlIG92ZXJ3cml0ZSBpbiBmb2xsb3dpbmcgb3JkZXIKICAgIFNPQwogICAgQk9BUkQKICAgIHZpYSB0aGUgY29ycmVzcG9uZGluZyBjb25maWcubWsKCiAgICB0ZXN0ZWQgb24gcjJkcGx1cwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CiAgICBDYzogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDIzNmFhZDg3NTgxNzc3MWViMWYyNWVkMzI3ODRiM2NkNzc2MGIyZTYKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUaHUgSnVuIDQgMTI6MDY6NDQgMjAwOSArMDIwMAoKICAgIHNoOiBtYWtlIHRoZSBsaW5rZXIgc2NyaXB0cyBtb3JlIGdlbmVyaWMKCiAgICBjdXJyZW50bHkgd2UgbmVlZCB0byBzeW5jIHRoZSBsaW5rZXIgc2NyaXB0IGVudHkgYW5kIFRFWFRfQkFTRSBtYW51YWx5CiAgICBhbmQgdGhlIHJlbG9jX2RzdCBpcyBiYXNlZCBvbiBpdAoKICAgIGluc3RlYWQgcHJvdmlkZSBpdCBub3cgZnJvbSB0aGUgbGRmbGFncwoKICAgIHRlc3RlZCBvbiByMmRwbHVzCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIENjOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgY2UyOTgxNzIxMjc5MjExM2NkMmQ2N2E5NzY3MDQ5YTJlMjYyYzQwNgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVRodSBKdW4gNCAxMjowNjo0MyAyMDA5ICswMjAwCgogICAgc2g3Nzg1bGNyOiBmaXggb3V0IG9mIHRyZWUgYnVpbGQKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgQ2M6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCAyZThhNmY1NTFjYmE1NTBlOTIyMGRjYTRkODUwNDA2NjIwM2IxZjc0CkF1dGhvcjogSGV1bmdKdW4gS2ltIDxyaXZlcmZ1bC5raW1AZ21haWwuY29tPgpEYXRlOglUdWUgSnVuIDMwIDE0OjQyOjIyIDIwMDkgKzA5MDAKCiAgICBlbnZfb25lbmFuZDogY2hhbmdlIGVudl9hZGRyZXNzIHR5cGUgZnJvbSB1bnNpZ25lZCBsb25nIHRvIGxvZmZfdAoKICAgIElmIHVzZSB0aGUgb25lbmFuZCBib290LCB0aGUgZW52X3JlbG9jYXRlX3NwZWMoKSBjYWxscyBtdGQtPnJlYWQoKSwKICAgIGFuZCB0aGUgdHlwZSBvZiB0aGUgYXJndW1lbnQgIzIgb2YgbXRkLT5yZWFkKCkgd2FzIGNoYW5nZWQgdG8gbG9mZl90LgogICAgQnV0LCB0aGUgImVudl9hZGRyIiB0eXBlIGlzIHN0aWxsIHVuc2lnbmVkIGxvbmcsIHRodXMgdGhpcyBwYXRjaCBjaGFuZ2UKICAgIHRoZSB0eXBlIGZyb20gdW5zaWduZWQgbG9uZyB0byBsb2ZmX3QuCgogICAgQWNrZWQtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBIZXVuZ0p1biwgS2ltIDxyaXZlcmZ1bC5raW1Ac2Ftc3VuZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2NjM3MmZlMmFiMTFjZGViMGU4NDFhZDllYjZiYTc5NzY5ZGI0OTA5CkF1dGhvcjogTWluZ2thaSBIdSA8TWluZ2thaS5odUBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVuIDE4IDE4OjIzOjI3IDIwMDkgKzA4MDAKCiAgICBmc2xfZWxiY19uYW5kOiByZWRpcmVjdCB0aGUgcG9pbnRlciBvZiBiYnQgcGF0dGVybiB0byBSQU0KCiAgICBUaGUgYmJ0IGRlc2NyaXB0b3JzIGNvbnRhaW5zIHRoZSBwb2ludGVyIHRvIHRoZSBiYnQgcGF0dGVybiB3aGljaAogICAgYXJlIHN0YXRpY2FsbHkgaW5pdGlhbGl6ZWQgbWVtb3J5IHN0cnVjdC4gV2hlbiByZWxvY2F0ZWQgdG8gUkFNLAogICAgdGhlc2UgcG9pbnRlcnMgd2lsbCBjb250aW51ZSBwb2ludCB0byBOT1IgZmxhc2gob3IgTDIgU1JBTSwgb3IKICAgIG90aGVyIGJvb3QgZGV2aWNlKS4gSWYgdGhlIGNvbnRlbnRzIG9mIE5PUiBmbGFzaCBjaGFuZ2VkIG9yIEwyCiAgICBTUkFNIGRpc2FibGVkLCBpdCdsbCBoYW5nIHRoZSBzeXN0ZW0uCgogICAgU2lnbmVkLW9mZi1ieTogTWluZ2thaSBIdSA8TWluZ2thaS5odUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMWRhYzNhNTE4NzU5NjdmMzI2NDFiYmMwZDI2ZGMzODJlZjAyMzMwYQpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDI0IDE3OjIzOjQ5IDIwMDkgLTA1MDAKCiAgICBuYW5kX3NwbDogRml4IGNtZF9jdHJsIHVzYWdlIGluIG5hbmRfYm9vdC5jLgoKICAgIFdoZW4gYWRkaW5nIGxhcmdlIHBhZ2UgTkFORCBzdXBwb3J0IHRvIHRoaXMgZmlsZSwgSSBoYWQgYSBtaXN1bmRlcnN0YW5kaW5nCiAgICBhYm91dCB0aGUgZXhhY3Qgc2VtYW50aWNzIG9mIE5BTkRfQ1RSTF9DSEFOR0UgKHdoaWNoIGlzbid0IGRvY3VtZW50ZWQKICAgIGFueXdoZXJlIEkgY2FuIGZpbmQpIC0tIGl0IGlzIGFwcGFyZW50bHkganVzdCBhIGhpbnQgdG8gZHJpdmVycywKICAgIHdoaWNoIGFyZW4ndCByZXF1aXJlZCB0byBwcmVzZXJ2ZSB0aGUgb2xkIHZhbHVlIGZvciBzdWJzZXF1ZW50CiAgICBub24tImNoYW5nZSIgaW52b2NhdGlvbnMuCgogICAgVGhpcyBjaGFuZ2UgbWFrZXMgbmFuZF9ib290LmMgbm8gbG9uZ2VyIGFzc3VtZSB0aGlzLiAgTm90ZSB0aGF0IHRoaXMKICAgIGhhcHBlbmVkIHRvIHdvcmsgYnkgY2hhbmNlIHdpdGggc29tZSBOQU5EIGRyaXZlcnMsIHdoaWNoIGRvbid0IHByZXNlcnZlCiAgICB0aGUgdmFsdWUsIGJ1dCB0cmVhdCAwIGVxdWl2YWxlbnRseSB0byBOQU5EX0NUUkxfQUxFLgoKICAgIEkgZG9uJ3QgaGF2ZSBoYXJkd2FyZSB0byB0ZXN0IHRoaXMsIHNvIGFueSB0ZXN0aW5nIGlzIGFwcHJlY2lhdGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk4NzEzZDI2NjNkNWQzMGRkZTc0ZjQ4ZjU0NzExNGEyYmZkOWQ0NjMKQXV0aG9yOiBrZXZpbi5tb3JmaXR0QGZlYXJuc2lkZS1zeXN0ZW1zLmNvLnVrIDxrZXZpbi5tb3JmaXR0QGZlYXJuc2lkZS1zeXN0ZW1zLmNvLnVrPgpEYXRlOglUaHUgSnVuIDE4IDE4OjQxOjAzIDIwMDkgKzAxMDAKCiAgICBCdWctZml4IGluIGRyaXZlcnMgbXRkIG5hbmQgTWFrZWZpbGUKCiAgICBUaGUgUzNDMjQxMCBOQU5EIGRyaXZlciBzb3VyY2UgZmlsZSBpcyBpbmNsdWRlZCBpbiB0aGUgbWFrZWZpbGUgaW5zdGVhZCBvZgogICAgdGhlIG9iamVjdCBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtldmluIE1vcmZpdHQgPGtldmluLm1vcmZpdHRAZmVhcm5zaWRlLXN5c3RlbXMuY28udWs+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiNzRhYjczNzM2OWJiYmU2NmMxNWNiZTZjMGQwYjZhMzUxYjAwYzk2CkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglNb24gTWF5IDE4IDE2OjA3OjIyIDIwMDkgKzAyMDAKCiAgICBuYW5kX3NwbDogcmVhZCBlbnZpcm9ubWVudCBlYXJseSwgd2hlbiBib290aW5nIGZyb20gTkFORCB1c2luZyBuYW5kX3NwbAoKICAgIEN1cnJlbnRseSwgd2hlbiBib290aW5nIGZyb20gTkFORCB1c2luZyBuYW5kX3NwbCwgaW4gdGhlIGJlZ2lubmluZyB0aGUgZGVmYXVsdAogICAgZW52aXJvbm1lbnQgaXMgdXNlZCB1bnRpbCBsYXRlciBpbiBib290IHByb2Nlc3MgdGhlIGR5bmFtaWMgZW52aXJvbm1lbnQgaXMgcmVhZAogICAgb3V0LiBUaGlzIHdheSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCBtdXN0IGJlIGludGVycHJldGVkIGVhcmx5LCBsaWtlIHRoZQogICAgYmF1ZHJhdGUgb3IgInNpbGVudCIsIGNhbm5vdCBiZSBtb2RpZmllZCBkeW5hbWljYWxseSBhbmQgcmVtYWluIGF0IHRoZWlyCiAgICBkZWZhdWx0IHZhbHVlcy4gRml4IHRoaXMgcHJvYmxlbSBieSByZWFkaW5nIG91dCBtYWluIGFuZCByZWR1bmRhbmQgKGlmIHVzZWQpCiAgICBjb3BpZXMgb2YgdGhlIGVudmlyb25tZW50IGluIHRoZSBuYW5kX3NwbCBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDM3OGFkZmNkZjRiYmQ3N2VlNGNiYzMyNzZkNDczM2UyMTgzMDhhMjEKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgTWF5IDE2IDE0OjI3OjQwIDIwMDkgKzAyMDAKCiAgICBtdGQ6IG5hbmQ6IHVzZSBsb2ZmX3QgZm9yIG9mZnNldAoKICAgIG5hbmRfdXRpbCBjdXJyZW50bHkgdXNlcyBzaXplX3Qgd2hpY2ggaXMgYXJjaCBkZXBlbmRlbnQgYW5kIG5vdCBhbHdheXMgYQogICAgdW5zaWduZWQgbG9uZy4gIE5vdyB1c2UgbG9mZl90LCBhcyBkb2VzIHRoZSBsaW51eCBtdGQgbGF5ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDgzNjBiNjZiYWM5NTY3NzAxMDI3YTAwODcyNzRkMGM5YjJmZThkNmIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gTWF5IDI0IDE3OjM0OjMzIDIwMDkgKzAyMDAKCiAgICBuYW5kL29uZW5hbmQ6IEZpeCBtaXNzaW5nIGFyZ3VtZW50IGNoZWNraW5nIGZvciAibWFya2JhZCIgY29tbWFuZAoKICAgIFRoZSAibmFuZCBtYXJrYmFkIiBhbmQgIm9uZW5hbmQgbWFya2JhZCIgY29tbWFuZHMgZGlkIG5vdCBjaGVjayBpZiBhbgogICAgYXJndW1lbnQgd2FzIHBhc3NlZDsgaWYgdGhpcyB3YXMgZm9yZ290dGVuLCBubyBlcnJvciB3YXMgcmFpc2VkIGJ1dAogICAgYmxvY2sgMCB3YXMgbWFya2VkIGFzIGJhZC4KCiAgICBXaGlsZSBmaXhpbmcgdGhpcyBidWcsIGNsZWFuIHVwIHRoZSBjb2RlIGEgYml0IGFuZCBhbGxvdyB0byBwYXNzIG1vcmUKICAgIHRoYW4gb25lIGJsb2NrIGFkZHJlc3MsIHRodXMgYWxsb3dpbmcgdG8gbWFyayBzZXZlcmFsIGJsb2NrcyBhcyBiYWQKICAgIGluIGEgc2luZ2xlIGNvbW1hbmQgaW52b2NhdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgY2Q4NDQyM2EwOWYzYTA4MDI5ZmU0MWMxZGI5NjE2OGRlYmQwYjUxZgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIE1heSAyNSAyMjo0MjoyOCAyMDA5IC0wNDAwCgogICAgbXRkOiBuYW5kOiBuZXcgYmFzZSBkcml2ZXIgZm9yIG1lbW9yeSBtYXBwZWQgbmFuZCBkZXZpY2VzCgogICAgVGhlIEJGNTM3LVNUQU1QIEJsYWNrZmluIGJvYXJkIGhhZCBhIGRyaXZlciBmb3Igd29ya2luZyB3aXRoIE5BTkQgZGV2aWNlcwogICAgdGhhdCBhcmUgc2ltcGx5IG1lbW9yeSBtYXBwZWQuICBTaW5jZSB0aGVyZSBpcyBub3RoaW5nIEJsYWNrZmluIHNwZWNpZmljCiAgICBhYm91dCB0aGlzLCBnZW5lcmFsaXplIHRoZSBkcml2ZXIgYSBiaXQgc28gdGhhdCBldmVyeW9uZSBjYW4gbGV2ZXJhZ2UgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDI3YmM3MjhjZjM1ZTdkNzk5NmZiZDc3MTU0MzM1ZTY2NjE1YjIxMwpBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KRGF0ZToJTW9uIE1heSAxOCAxNjowNjo0NSAyMDA5ICswMjAwCgogICAgZW52X25hbmQ6IHJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCgogICAgUmVtb3ZlIGFuIHVudXNlZCAidG90YWwiIHZhcmlhYmxlIGluIG11bHRpcGxlIGZ1bmN0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxNTRiNTQ4NGFjN2RjYmNkMGZiNWJhMzg4ZDkzMGIwMmY4N2ZhMzAyCkF1dGhvcjogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CkRhdGU6CVN1biBNYXkgMTAgMTU6NDM6MDEgMjAwOSAtMDcwMAoKICAgIGRhdmluY2lfbmFuZCBjaGlwc2VsZWN0L2luaXQgY2xlYW51cAoKICAgIFVwZGF0ZSBjaGlwc2VsZWN0IGhhbmRsaW5nIGluIGRhdmluY2lfbmFuZC5jIHNvIHRoYXQgaXQgY2FuCiAgICBoYW5kbGUgMiBHQnl0ZSBjaGlwcyB0aGUgc2FtZSB3YXkgTGludXggZG9lczogIGFzIG9uZSBkZXZpY2UsCiAgICBldmVuIHRob3VnaCBpdCBoYXMgdHdvIGhhbHZlcyB3aXRoIGluZGVwZW5kZW50IGNoaXAgc2VsZWN0cy4KICAgIEZvciBzdWNoIGNoaXBzIHRoZSAibmFuZCBpbmZvIiBjb21tYW5kIHJlcG9ydHM6CgogICAgICBEZXZpY2UgMDogMnggbmFuZDAsIHNlY3RvciBzaXplIDEyOCBLaUIKCiAgICBTd2l0Y2ggdG8gdXNlIHRoZSBkZWZhdWx0IGNoaXBzZWxlY3QgZnVuY3Rpb24gdW5sZXNzIHRoZSBib2FyZAogICAgcmVhbGx5IG5lZWRzIGl0cyBvd24uICBUaGUgbG9naWMgZm9yIHRoZSBTb25hdGEgYm9hcmQgbW92ZXMgb3V0CiAgICBvZiB0aGUgZHJpdmVyIGludG8gYm9hcmQtc3BlY2lmaWMgY29kZS4gIChXaGljaCBkb2Vzbid0IGFmZmVjdAogICAgY3VycmVudCBidWlsZCBicmVha2FnZSBpZiBpdHMgTkFORCBzdXBwb3J0IGlzIGVuYWJsZWQuLi4pCgogICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0OTY4NjNiMjQ0MGRkN2NkNjlhMWFkMjQ0M2E5YmFkZDVmODk2OGQxCkF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgpEYXRlOglTYXQgTWF5IDkgMTI6MzU6MjAgMjAwOSAtMDQwMAoKICAgIE5BTkQgRGFWaW5jaTogVXBkYXRlIHRvIEFMRS9DTEUgTWFzayB2YWx1ZXMKCiAgICBBbGwgRGFWaW5jaSBTT0MncyB1c2UgYSBDTEUgbWFzayBvZiAweDEwIGFuZCBhbiBBTEUgbWFzayBvZiAweDgKICAgIGV4Y2VwdCB0aGUgRE02NDZ4LiBUaGlzIHdhcyBkZWNpZGVkIGJ5IHRoZSBkZXNpZ24gdGVhbSBkcml2aW5nIHRoZSBkZXNpZ24uCiAgICBUaGlzIHBhdGNoIHVwZGF0ZXMgdGhlIENMRSBhbmQgQUxFIHZhbHVlcyBmb3IgRE02NDZ4LgogICAgVXBkYXRlZCBwYXRjaGVzIGZvciBETTY0Nnggd2lsbCBiZSBzZW50IHNob3J0bHkuCiAgICBUaGlzIGFwcGxpZXMgdG8gdS1ib290LW5hbmQtZmxhc2ggZ2l0CgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMGMxNjg0NDM3ZWY4MTBjNTAzZGYyOWU4ZDczZjYzMTkxYWE2Mzg2MgpBdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KRGF0ZToJV2VkIEFwciAyOSAwOTo0NzowOSAyMDA5IC0wNDAwCgogICAgQVJNIERhVmluY2k6IENoYW5naW5nIEFMRSBNYXNrIFZhbHVlCgogICAgVGhlIEFMRSBtYXNrIHVzZWQgYnkgRGFWaW5jaSBTT0NzIGlzIHdyb25nLiBUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgbWFzayB2YWx1ZQogICAgZnJvbSAnMHhhJyB0byAnMHg4Jy4gVGhpcyBpcyB0aGUgbWFzayB3ZSB1c2UgZm9yIGFsbCBUSSByZWxlYXNlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2ZTI5ZWQ4ZTU3NmE2OTAwYzVkOGRjZGUzNmI0MjNhYzU3Njg5NGRjCkF1dGhvcjogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CkRhdGU6CVR1ZSBBcHIgMjggMTM6MTk6NTMgMjAwOSAtMDcwMAoKICAgIGRhdmluY2lfbmFuZDogY2xlYW51cCBJSSAoQ09ORklHX1NZU19EQVZJTkNJX0JST0tFTl9FQ0MpCgogICAgUmVtb3ZlIENPTkZJR19TWVNfREFWSU5DSV9CUk9LRU5fRUNDIG9wdGlvbi4gIEl0J3Mgbm90IGp1c3QgbmFzdHk7CiAgICBpdCdzIGFsc28gdW51c2VkIGJ5IGFueSBjdXJyZW50IGJvYXJkcywgYW5kIGRvZXNuJ3QgZXZlbiBtYXRjaCB0aGUKICAgIG1haW4gVS1Cb290IGRpc3RyaWJ1dGlvbnMgZnJvbSBUSSAod2hpY2ggdXNlIHNvZnQgRUNDLCBvciA0LWJpdCBFQ0MKICAgIG9uIG5ld2VyIGNoaXBzIHRoYXQgc3VwcG9ydCBpdCkuCgogICAgRGFWaW5jaSBHSVQga2VybmVscyBzaW5jZSAyLjYuMjQsIGFuZCBtYWlubGluZSBMaW51eCBzaW5jZSAyLjYuMzAsCiAgICBtYXRjaCBub24tQlJPS0VOIGNvZGUgcGF0aHMgZm9yIDEtYml0IEhXIEVDQy4gIFRoZSBCUk9LRU4gY29kZSBwYXRocwogICAgZG8gc2VlbSB0byBwYXJ0aWFsbHkgbWF0Y2ggd2hhdCBNb250YVZpc3RhL1RJIGtlcm5lbHMgKDQuMC8yLjYuMTAsCiAgICBhbmQgNS4wLzIuNi4xOCkgZG8gLi4uIGJ1dCBvbmx5IGZvciBzbWFsbCBwYWdlcy4gIExhcmdlIHBhZ2Ugc3VwcG9ydAogICAgaXMgcmVhbGx5IGJyb2tlbiAoYW5kIGl0J3MgdW5jbGVhciBqdXN0IHdoYXQgc29mdHdhcmUgaXQgd2FzIHRyeWluZwogICAgdG8gbWF0Y2ghKSwgYW5kIHRoZSBFQ0MgbGF5b3V0IHdhcyBtYWtpbmcgdGhyZWUgbW9yZSBieXRlcyBhdmFpbGFibGUKICAgIGZvciB1c2UgYnkgZmlsZXN5c3RlbSAob3Igd2hhdGV2ZXIpIGNvZGUuCgogICAgU2luY2UgdGhpcyBvcHRpb24gaXRzZWxmIHNlZW1zIGJyb2tlbiwgcmVtb3ZlIGl0LiAgQWRkIGEgY29tbWVudAogICAgYWJvdXQgdGhlIE1WL1RJIGNvbXBhdCBpc3N1ZSwgYW5kIHRoZSBtb3N0IHN0cmFpZ2h0Zm9yd2FyZCB3YXkgdG8KICAgIGFkZHJlc3MgaXQgKHNob3VsZCBzb21lb25lIHJlYWxseSBuZWVkIHRvIHNvbHZlIGl0KS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGZjYjc3NDc3NzU2MmJiN2JjZGM1M2M2MDhkMGU2YmFlOTA2Y2UwZjYKQXV0aG9yOiBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KRGF0ZToJVHVlIEFwciAyOCAxMzoxOTo1MCAyMDA5IC0wNzAwCgogICAgZGF2aW5jaV9uYW5kOiBjbGVhbnVwIEkgKG1pbm9yKQoKICAgIE1pbm9yIGNsZWFudXAgZm9yIERhVmluY2kgTkFORCBjb2RlOgoKICAgICAtIFVzZSBJL08gYWRkcmVzc2VzIGZyb20gbmFuZF9jaGlwOyBDT05GSUdfU1lTX05BTkRfQkFTRSB3b24ndAogICAgICAgYmUgZGVmaW5lZCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBjaGlwc2VsZWN0IGxpbmVzIGluIHVzZQogICAgICAgKGFzIHdpdGggY29tbW9uIDIgR0J5dGUgY2hpcHMpLgoKICAgICAtIENsZWFudXAgaGFuZGxpbmcgb2YgRU1JRiBjb250cm9sIHJlZ2lzdGVycwoJKiBPbmx5IG5lZWQgb25lIHBvaW50ZXIgcG9pbnRpbmcgdG8gdGhlbQoJKiBSZW1vdmUgaW5jb3JyZWN0IGFuZCB1bnVzZWQgc3RydWN0IHN1cGVyc2V0dGluZyB0aGVtCgogICAgIC0gVXNlIHRoZSBzdGFuZGFyZCB3YWl0ZnVuYzsgd2UgZG9uJ3QgbmVlZCBhIGN1c3RvbSB2ZXJzaW9uCgogICAgIC0gUGFydGlhbCBsZWdhY3kgY2xlYW51cDoKCSogRG9uJ3QgaW5pdGlhbGl6ZSBldmVyeSBib2FyZCBsaWtlIGl0J3MgYSBETTY0NDYgRVZNCgkqICNpZmRlZiBhIGJpdCBtb3JlIGNvZGUgZm9yIEJST0tFTl9FQ0MKCiAgICBTYW5pdHkgY2hlY2tlZCB3aXRoIHNtYWxsIHBhZ2UgTkFORCBvbiBkbTM1NSBhbmQgZG02NDQ2IEVWTXM7CiAgICBhbmQgbGFyZ2UgcGFnZSBvbiBkbTM1NSBFVk0gKHBhY2thZ2VkIGFzIHR3byBkZXZpY2VzLCBub3Qgb25lKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDhlNWU5Yjk0MGNkZWRlMGRlYmU1MjhjZGQ3ZWRjY2NjYmIzZWJmMmEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgSnVsIDcgMjI6MzU6MDIgMjAwOSArMDIwMAoKICAgIENvZGluZyBzdHlsZSBjbGVhbnVwOyB1cGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBkMzE4ZDBjNDRkOGU5MWU5MzdjNGRhZDBjNWIxZDJmNmJiOWQ5ZmQ4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gSnVuIDI5IDEzOjMwOjUwIDIwMDkgKzAyMDAKCiAgICBVQkk6IEZpeCBidWlsZCBwcm9ibGVtIG5vdGljZWQgb24gQXBvbGxvbiAoYXJtL3Rlc3RpbmcgcmVwbykKCiAgICBUaGlzIHBhdGNoIGZpeGVzIGEgYnVpbGQgcHJvYmxlbSBub3RpY2VkIG9uIEFwb2xsb24gYnkgdXNpbmcKICAgIG10ZF9kZXZfYnlfZWIoKSBpbnN0ZWFkIG9mICIvIiBhcyBkb25lIGluIHRoZSBMaW51eCBVQkkgdmVyc2lvbi4KICAgIFNvIHRoaXMgYnJpbmdzIHRoZSBVLUJvb3QgVUJJIHZlcnNpb24gbW9yZSBpbiBzeW5jIHdpdGggdGhlIExpbnV4CiAgICB2ZXJzaW9uIGFnYWluLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyZWZlZTUyYjA5NjU3ZTkzNTM2NTViOWRhZTllMWQxYTY3YTJhYmU0CkF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgpEYXRlOglNb24gSnVsIDYgMjA6Mjk6MTUgMjAwOSArMDUzMAoKICAgIHNmOiBNYWNyb25peCBhZGRpdGlvbmFsIGNoaXBzIHN1cHBvcnRlZAoKICAgIG5ldyBjaGlwcyBzdXBwb3J0ZWQ6LQogICAgTVgyNUwxNjA1RCwgTVgyNUwzMjA1RCwgTVgyNUw2NDA1RCwgTVgyNUwxMjg1NUUKICAgIG91dCBvZiB3aGljaCBNWDI1TDY0MDVEIGFuZCBNWDI1TDEyODU1RSB0ZXN0ZWQgb24gS2lya3dvb2QgcGxhdGZvcm1zCgogICAgTW9kaWZpZWQgdGhlIE1hY3Jvbml4IGZsYXNoIHN1cHBvcnQgdG8gdXNlIDIgYnl0ZXMgb2YgZGV2aWNlIGlkIGluc3RlYWQgb2YgMQogICAgVGhpcyB3YXMgcmVxdWlyZWQgdG8gc3VwcG9ydCBNWDI1TDEyODU1RQoKICAgIFNpZ25lZC1vZmYtYnk6IFBpeXVzaCBTaGFoIDxzcGl5dXNoQG1hcnZlbGwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGRkNTQxMjY3MTViODllZDBjNDMzMjJhYTc4YjBkYWQzMDZmMDQzYjYKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CUZyaSBKdW4gMTkgMDM6Mjc6MjggMjAwOSAtMDQwMAoKICAgIHNmOiBzc3Q6IGFkZCBzc3QyNXZmIyMjYiBpZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgN2Q5MDdmMGVhOTkzYjE3OWExOTdkOGRiMmEzNmYxMjJiYzY3M2MyZApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJRnJpIEp1biAxOSAwMzoyMDowNiAyMDA5IC0wNDAwCgogICAgc2Y6IHNzdDogZml4IHNlY3RvciBzaXplCgogICAgTG9va3MgbGlrZSB3aGVuIEkgd2FzIGVuY29kaW5nIHRoZSBzZWN0b3Igc2l6ZXMsIEkgZm9yZ290IHRvIGRpdmlkZSBieSA4CiAgICAoZHVlIHRvIHRoZSBzdHVwaWQgbWFya2V0aW5nIGRyaXZlbiBwcm9jZXNzIHRoYXQgZGVjbGFyZXMgYWxsIHNpemVzIGluCiAgICB1c2VsZXNzIG1lZ2FiaXRzIGFuZCBub3QgbWVnYWJ5dGVzKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgY2ViNzBiNDY2ZTc1Y2ViMWE2MjFiNjE2M2Y3ZTMxMTE2YmZjODA5NApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBKdWwgNSAwMTowNjowNiAyMDA5ICswMjAwCgogICAgbmhrODgxNTogZml4IE1BS0VBTEwKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGQwOGU1Y2EzMDFiNjlhYjc3ZWNkZDM0ZTJiMDZhZWUzMGQ2MDU3ZDEKQXV0aG9yOiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+CkRhdGU6CVNhdCBKdWwgNCAxMDozMToyNCAyMDA5ICswMjAwCgogICAgTVgzMTogQWRkIE5BTkQgU1BMIGJvb3Qgc3VwcG9ydCB0byBpLk1YMzEgUERLIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KCmNvbW1pdCA3OGVhYmI5MGI3OTNmYWZlODc1YTc0Njk1MjZkMTcxNWZhNTZjYmI0CkF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgpEYXRlOglNb24gSnVuIDI5IDIwOjU1OjU0IDIwMDkgKzA1MzAKCiAgICBhcm06IEtpcmt3b29kOiBhcmNoIHNwZWNpZmljIHVwZGF0ZWQgZm9yIGVoY2ktS2lya3dvb2QgZHJpdmVyIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFic3RyYWN0cyBLaXJrd29vZCBhcmNoIHNwZWNpZmljIGNoYW5nZXMgdG8gc3VwcG9ydCBlaGNpLWtpcmt3b29kIGRyaXZlcgoKICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KCmNvbW1pdCAwOTVhNDYwYjQ5MDIyZTY0ZGY3NjEzNDMwMDY0MzYwNmUzYWNiNGU5CkF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUB1bmlwdi5pdD4KRGF0ZToJTW9uIEp1biAyOSAxMDo1MjozNyAyMDA5ICswMjAwCgogICAgYXJtIG5vbWFkaWs6IHVzZSAxMDAwIGFzIEhaIHZhbHVlIGFuZCByZXdyaXRlIHRpbWVyIGNvZGUKCiAgICBUaGlzIHNldHMgQ09ORklHX1NZU19IWiB0byAxMDAwIGFzIHJlcXVpcmVkLCBhbmQgY29tcGxldGVseSByZXdyaXRlcwogICAgdGltZXIgY29kZSwgd2hpY2ggaXMgbm93IGJvdGggY29ycmVjdCBhbmQgbXVjaCBzbWFsbGVyLiAgVW51c2VkCiAgICBmdW5jdGlvbnMgbGlrZSB1ZGVsYXlfbWFza2VkKCkgaGF2ZSBiZWVuIHJlbW92ZWQgYXMgbm8gZHJpdmVyIHVzZXMKICAgIHRoZW0sIGV2ZW4gdGhlIG9uZXMgdGhhdCBhcmUgbm90IGN1cnJlbnRseSBhY3RpdmUgZm9yIHRoaXMgYm9hcmQuCiAgICBtdHUuaCBpcyBjb3BpZWQgbGl0ZXJhbGx5IGZyb20gdGhlIGtlcm5lbCBzb3VyY2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+CiAgICBBY2tlZC1ieTogQW5kcmVhIEdhbGxvIDxhbmRyZWEuZ2FsbG9Ac3Rlcmljc3Nvbi5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGY3YWE1OWIyOWE0NTFjYzUwMjA3OGE5ZTRiYTMyMzQ1YTQyNTBjMDUKQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgpEYXRlOglNb24gSnVuIDIyIDA5OjE4OjU3IDIwMDkgKzAyMDAKCiAgICBhcm0gbm9tYWRpazogYWxsb3cgTmFuZCBhbmQgT25lTmFuZCB0byBjb2V4aXN0cwoKICAgIFRoZSBldmFsdWF0aW9uIGtpdCBoYXMgYm90aCBOYW5kIGFuZCBPbmVOYW5kLCBib3RoIGRyaXZlcnMgYXJlIHRoZXJlCiAgICBhbmQgdGhlIHR3byBjb25maWd1cmF0aW9ucyBvbmx5IHNlbGVjdCBhIGRpZmZlcmVudCBkZWZhdWx0IGZvciB0aGUKICAgIGpmZnMgcGFydGl0aW9uLiBUaGlzIGFkZHMgdGhlIE9uZU5hbmQgZHJpdmVyIGFuZCBjbGVhbnMgdXAgc3RvcmFnZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgogICAgQWNrZWQtYnk6IEFuZHJlYSBHYWxsbyA8YW5kcmVhLmdhbGxvQHN0ZXJpY3Nzb24uY29tPgoKY29tbWl0IGZkMTRjNDFhODYxY2QzOGVlMmZlM2FiZDYxZDU5YjU3YjRlYjIzYzkKQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgpEYXRlOglNb24gSnVuIDIyIDA5OjE4OjQ3IDIwMDkgKzAyMDAKCiAgICBhcm0gbm9tYWRpazogY2xlYW51cCByZXNldAoKICAgIFRoZXJlIGlzIG9ubHkgb25lIHB1YmxpYyByZWxlYXNlIG9mIHRoZSBOb21hZGlrIGNoaXAsIHNvIHRoZSBpZmRlZgogICAgaW4gcmVzZXQgY29kZSBhcyB3ZWxsIGFzIGEgZGVmaW5lIGluIHRoZSBjb25maWcgZmlsZSBhcmUgbm90IG5lZWRlZAoKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+CiAgICBBY2tlZC1ieTogQW5kcmVhIEdhbGxvIDxhbmRyZWEuZ2FsbG9Ac3Rlcmljc3Nvbi5jb20+Cgpjb21taXQgZWUxMzYzZjJkYTM5OTZiYWZkZWNkZDhmNGU0ODg2MmViZmYzZjI3MQpBdXRob3I6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+CkRhdGU6CU1vbiBKdW4gMjIgMDk6MTg6MzcgMjAwOSArMDIwMAoKICAgIGFybSBub21hZGlrOiByZW5hbWUgYm9hcmQgdG8gbmhrODgxNQoKICAgIFRoaXMgaXMgYW4gZXJyb3IgaW4gbXkgc2lkZSBpbiB0aGUgaW5pdGlhbCBzdWJtaXNzaW9uOiBub2JvZHkKICAgIGNhbGxzIGl0ICIibm1kazg4MTUiLCBpdCdzICJub21hZGlrIGhhcmR3YXJlIGtpdCIsIG5oazg4MTUsIGluc3RlYWQuCgogICAgU2lnbmVkLW9mZi1ieTogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUB1bmlwdi5pdD4KICAgIEFja2VkLWJ5OiBBbmRyZWEgR2FsbG8gPGFuZHJlYS5nYWxsb0BzdGVyaWNzc29uLmNvbT4KCmNvbW1pdCAwNDBmOGY2M2U5MjJiYmZiOGJhMDk1OGJmNjM3ZjExYTkxN2Y1YzM4CkF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CVdlZCBKdWwgMSAyMDo0MDo0MSAyMDA5ICswMjAwCgogICAgeHNjYWxlOiBhZGQgc3VwcG9ydCBmb3IgdGhlIHBvbGFyaXMgYm9hcmQKCiAgICBUaGUgUG9sYXJpcyBib2FyZCBpcyBiYXNlZCBvbiB0aGUgVHJpemVwc0lWIG1vZHVsZSBvZgogICAgS2VpdGggJiBLb2VwIChodHRwOi8vd3d3LmtlaXRoLWtvZXAuY29tKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KCmNvbW1pdCA4OGJkOTc1MDEzMTQ2ODNiODdmM2YxZWRjZjU1YjM0N2MwNDFiNzIyCkF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CVdlZCBKdWwgMSAwNDozMzo1NiAyMDA5ICswMjAwCgogICAgeHNjYWxlOiBmaXggVVNCIGluaXRpYWxpemF0aW9uIGZvciBUcml6ZXBzaXYgbW9kdWxlCgogICAgRHVlIHRvIGNoYW5nZSBpbiB0aGUgdXNiX2JvYXJkX2luaXQoKSBwcm90b3R5cGUsIHRoZSBVU0IgZm9yCiAgICB0aGUgVHJpemVwc0lWIHdhcyBub3QgY29ycmVjdGx5IGluaXRpYWxpemVkLgogICAgUmVtb3ZlZCBkdW1teSBwcmludCBmcm9tIHVzYl9ib2FyZF9zdG9wKCkuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Cgpjb21taXQgMGI3ODVkZGQ2MDEyMGNmYjc0ZDE4ZTU4YzU2MDU0MjM4MjE5ZjZkYgpBdXRob3I6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KRGF0ZToJV2VkIEp1bCAxIDIwOjM0OjUxIDIwMDkgKzAyMDAKCiAgICBuZXQ6IG1lcmdlIGJ1Z2ZpeDogTWFydmVsbCBLaXJrd29vZCBnaWdhYml0IGV0aGVybmV0IGRyaXZlcgoKICAgIFRoaXMgcGF0Y2ggbG9va3Mgb2theSBvbiB1LWJvb3QtbmV0LmdpdC9uZXh0IGJyYW5jaAogICAgYnV0IHdoZW4gaXQgd2FzIG1lcmdlZCB0byB1LWJvb3QuZ2l0L21hc3RlciB0aGUgbGFzdCBsaW5lIGlzIG1pc3NpbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+CiAgICBBY2tlZC1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAzM2IxZDNmNDNhMTZmYmI3OTAwNDA3NWNlODlhZTRlNjE4YjI4OGEyCkF1dGhvcjogRGFuaWVsIEdvcnN1bG93c2tpIDxEYW5pZWwuR29yc3Vsb3dza2lAZXNkLmV1PgpEYXRlOglUdWUgSnVuIDMwIDIxOjAzOjM3IDIwMDkgKzAyMDAKCiAgICBhdDkxOiBBZGQgZXNkIGdtYmggTUVFU0MgYm9hcmQgc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBlc2QgZ21iaCBNRUVTQyBib2FyZC4KICAgIFRoZSBNRUVTQyBpcyBiYXNlZCBvbiBhbiBBdG1lbCBBVDkxU0FNOTI2MyBTb0MuCgogICAgU2lnbmVkLW9mZi1ieTogRGFuaWVsIEdvcnN1bG93c2tpIDxEYW5pZWwuR29yc3Vsb3dza2lAZXNkLmV1PgoKY29tbWl0IDIxNzYxNTQwYjQzYzcwODZjNzVlZTlhZmI0MTJkYTFlNWRkZGUyZTkKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUdWUgSnVuIDMwIDIxOjAzOjM1IDIwMDkgKzAyMDAKCiAgICBBUk06IFVwZGF0ZSBtYWNoLXR5cGVzCgogICAgdXBkYXRlIGFnYWluc3QgbGludXggdjIuNi4zMAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNDU2MjdmY2UxODEzOWE3NGUwNzU1MTI0ZDI3Mzc2YjUyMGRiMTU2YwpBdXRob3I6IERhbmllbCBHb3JzdWxvd3NraSA8RGFuaWVsLkdvcnN1bG93c2tpQGVzZC5ldT4KRGF0ZToJVHVlIEp1biAzMCAyMzowMzozMyAyMDA5ICswMjAwCgogICAgYXQ5MTogQWRkIENBTiBpbml0IGZ1bmN0aW9uCgogICAgVG8gZW5hYmxlIENBTiBpbml0LCBDT05GSUdfQ0FOIGhhcyB0byBiZSBkZWZpbmVkIGluIHRoZSBib2FyZCBjb25maWcgZmlsZQogICAgYW5kIGF0OTFfY2FuX2h3X2luaXQoKSBoYXMgdG8gYmUgY2FsbGVkIGluIHRoZSBib2FyZCBzcGVjaWZpYyBjb2RlLgoKICAgIENBTiBpcyBhdmFpbGFibGUgb24gQVQ5MVNBTTkyNjMgYW5kIEFUOTFDQVA5IFNvQy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgR29yc3Vsb3dza2kgPERhbmllbC5Hb3JzdWxvd3NraUBlc2QuZXU+Cgpjb21taXQgMmUyMzAwOGU1ZGJkZTdmZTRjNDc1OGJlZTVhMzkzZTFkYjc5NmNkZgpBdXRob3I6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KRGF0ZToJVHVlIEp1biAzMCAyMzowMzozMSAyMDA5ICswMjAwCgogICAgYXJtOiBLaXJrd29vZDogQ29ycmVjdCBoZWFkZXIgZGVmaW5lCgogICAgQ29ycmVjdCBkZWZpbmUgdHlwbyAoLiAtPiAsKQoKICAgIFNpZ25lZC1vZmYtYnk6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KCmNvbW1pdCA4NDQ5ZjI4N2Y1YzUzZDU5ZGIxM2MzYzUxMmU2YmQxNzUwYjY5MmQxCkF1dGhvcjogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgpEYXRlOglXZWQgSnVsIDEgMDE6MDc6NTUgMjAwOSArMDIwMAoKICAgIE1YMzE6IEFkZCBiYXNpYyBzdXBwb3J0IGZvciBGcmVlc2NhbGUgaS5NWDMxIFBESyBib2FyZC4KCiAgICBBZGQgc3VwcG9ydCBmb3IgRnJlZXNjYWxlJ3MgaS5NWDMxIFBESyBib2FyZCAoYS5rLmEuIDMgc3RhY2sgYm9hcmQpLgoKICAgIFRoaXMgcGF0Y2ggYXNzdW1lcyB0aGF0IHNvbWUgb3RoZXIgcHJvZ3JhbSBwZXJmb3JtcyB0aGUgYWN0dWFsCiAgICBOQU5EIGJvb3QuCgogICAgU2lnbmVkLW9mZi1ieTogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgogICAgQWNrZWQtYnk6IEZhYmlvIEVzdGV2YW0gPGZhYmlvZXN0ZXZhbUB5YWhvby5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDhkNDYwYTU3M2UyYTJhYzQ4MzQ2MzY5MDM4NjVhMDQyOGFkMGU2MjkKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUdWUgSnVuIDIzIDAwOjEyOjAxIDIwMDkgKzAyMDAKCiAgICBTM0MyNHgwOiBleHRyYWN0IGludGVycnVwdHMgZnJvbSB0aW1lcgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYzhiYWRiZTUwMGE3NTJmNDIwNDllNTEwNDI3NjdlZTYyZWE3MTRlMApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBKdW4gMjggMTQ6MTQ6MjEgMjAwOSArMDIwMAoKICAgIGRtMzU1L3BtOTI2MTogYWRkIG1pc3NpbmcgQ09ORklHX05FVF9NVUxUSQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNzk4YmY5YTlhZGUxY2ZiZTg1YTE2ZDE4MGNhZDcyMDkyN2Q4ZTEwYQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVR1ZSBKdW4gMjMgMDA6MTI6MDEgMjAwOSArMDIwMAoKICAgIGFybTkyMHQvaW50ZXJydXB0czogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMDZlNzU4ZTc1Yzc5Y2U4NzYxODY2YmY4MTY1YzQ0MzU4NGEyMDg5MwpBdXRob3I6IEtpbSwgSGV1bmcgSnVuIDxyaXZlcmZ1bEBnbWFpbC5jb20+CkRhdGU6CVNhdCBKdW4gMjAgMTE6MDI6MTcgMjAwOSArMDIwMAoKICAgIG1vdmUgTDIgY2FjaGUgZW5hYmxlL2Rpc2FibGUgZnVuY3Rpb24gdG8gY2FjaGUuYyBpbiB0aGUgb21hcDMgU29DIGRpcmVjdG9yeQoKICAgIFNpZ25lZC1vZmYtYnk6IEhldW5nSnVuLCBLaW0gPHJpdmVyZnVsLmtpbUBzYW1zdW5nLmNvbT4KICAgIENDOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBkNTgzZWY1MTQ3MDY2ZDM2MDlkZTIxZjNiZWViYmFiOTlhMTliYWQ0CkF1dGhvcjogVGhvbWFzIExhbmdlIDx0aG9tYXNAY29yZWxhdHVzLnNlPgpEYXRlOglTYXQgSnVuIDIwIDExOjAyOjE3IDIwMDkgKzAyMDAKCiAgICBBUk0gRGFWaW5jaTogRU1JRiBzZXR0aW5ncwoKICAgIE5BTkQgbW9kdWxlIHNob3VsZCBub3QgbW9kaWZ5IEVNSUYgcmVnaXN0ZXJzIHVucmVsYXRlZCB0byBDUzIKICAgIHRoYXQgaXMgdXNlZCBmb3IgTkFORCwgaS5lLiBkbyBub3QgbW9kaWZ5IEVXQUlUIGNvbmZpZyByZWdpc3RlcgogICAgb3IgcmVnaXN0ZXJzIGZvciBvdGhlciBDaGlwIFNlbGVjdHMuCgogICAgV2l0aG91dCB0aGlzIHBhdGNoLCBFTUlGIGNvbmZpZ3VyYXRpb25zIG1hZGUgaW4gYm9hcmRfaW5pdCgpCiAgICB3aWxsIGJlIGludmFsaWRhdGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBMYW5nZSA8dGhvbWFzQGNvcmVsYXR1cy5zZT4KCmNvbW1pdCAyNjAwYjg1NzFhMjZjMTBjMWM0MzQwMWQ3YWYzOGUyMzMzY2M1MzgxCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IEp1biAyMCAxMTowMjoxNyAyMDA5ICswMjAwCgogICAgdmVyc2F0aWxlOiBjb25maWcgY29kaW5nIHN0eWxlIGNsZWFudXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgQ2M6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+Cgpjb21taXQgNGVmYjc3ZDQxZjljNWQ5M2YwZjkyZGRhNjBlNzQyMDIzZmEwM2M3MgpBdXRob3I6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KRGF0ZToJU2F0IEp1biAyMCAxMTowMTo1MyAyMDA5ICswMjAwCgogICAgYXJtOiBLaXJrd29vZDogQmFzaWMgU09DcyBzdXBwb3J0CgogICAgS2lya3dvb2QgZmFtaWx5IGNvbnRyb2xsZXJzIGFyZSBoaWdobHkgaW50ZWdyYXRlZCBTT0NzCiAgICBiYXNlZCBvbiBGZXJvY2Vvbi04OEZSMTMxL1NoZWV2YS04OFNWMTMxL2FybTkyNmVqcyBjcHUgY29yZS4KCiAgICBTT0MgdmVyc2lvbnMgc3VwcG9ydGVkOi0KICAgIDEpIDg4RjYyODEtQTAJZGVmaW5lIENPTkZJR19LVzg4RjYyODFfQTAKICAgIDIpIDg4RjYxOTItQTAJZGVmaW5lIENPTkZJR19LVzg4RjYxOTJfQTAKCiAgICBPdGhlciBzdXBwb3J0ZWQgZmVhdHVyZXM6LQogICAgMSkgZ2V0X3JhbmRvbV9oZXgoKSBmdWNudGlvbgogICAgMikgUENJIEV4cHJlc3MgcG9ydCBpbml0aWFsaXphdGlvbgogICAgMykgTlMxNjU1MCBkcml2ZXIgc3VwcG9ydAoKICAgIENvbnRyaWJ1dG9yczoKICAgIFlvdGFtIEFkbW9uIDx5b3RhbUBtYXJ2ZWxsLmNvbT4KICAgIE1pY2hhZWwgQmxvc3RlaW4gPG1pY2hhZWxibEBtYXJ2ZWxsLmNvbQoKICAgIFJldmlld2VkLWJ5OiBSb25lbiBTaGl0cml0IDxyc2hpdHJpdEBtYXJ2ZWxsLmNvbT4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9zZSA8c3JAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KCmNvbW1pdCA1YzNkNTgxN2U1ZTY4YjgyOGMxNjVjNTAxYzIxNWU3OTNkYzYzYWFjCkF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgpEYXRlOglTYXQgSnVuIDIwIDExOjAxOjUyIDIwMDkgKzAyMDAKCiAgICBhcm06IGdlbmVyaWMgY2FjaGUuaCBmb3IgQVJNIGFyY2hpdGVjdHVyZXMKCiAgICBUaGlzIHBhdGNoIGlzIHJlcXVpcmVkIGZvciBLaXJrd29vZCBTb0Mgc3VwcG9ydAogICAgbWF5IGJlIHVzZWQgYnkgb3RoZXIgQVJNIGFyY2hpdGVjdHVyZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Cgpjb21taXQgOWM4YzcwNmM5MmU1MzQzM2E4NzFhNTYzOTQ2YzM4MDc1ZDc2NTA0ZApBdXRob3I6IE1hdHRoaWFzIEx1ZHdpZyA8bWx1ZHdpZ0B1bHRyYXRyb25pay5kZT4KRGF0ZToJU2F0IEp1biAyMCAxMTowMTo1MCAyMDA5ICswMjAwCgogICAgT01BUDNFVk06IGZpeCB0eXBvLiByZXBsYWNlIENTNiBieSBDUzUsIG5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgTHVkd2lnIDxtbHVkd2lnQHVsdHJhdHJvbmlrLmRlPgoKY29tbWl0IDBhYWZkZTFkYzc2ZDZkNjVkNmJlMTBiZjQ5OWVjODZkOWZmZWU4YjkKQXV0aG9yOiBTZWRqaSBHYW91YW91IDxzZWRqaS5nYW91YW91QGF0bWVsLmNvbT4KRGF0ZToJV2VkIEp1biAyNCAwODozMjowOSAyMDA5ICswMjAwCgogICAgYXQ5MXNhbTkyNjAvOTI2MzogYWRkIGJhY2sgdXAgZm9yIHRoZSByc3QocmVzZXQgY29udHJvbGxlcikuCgogICAgT24gdGhlIGJvYXJkcyBhdDkxc2FtOTI2MGVrLCBhdDkxc2FtOTI2M2VrIGFuZCBhZmVkOTI2MCwgdGhlIHJzdGMgcmVnaXN0ZXIgd2FzCiAgICBzZXQgdG8gMCBhZnRlciBiZWluZyBzZXQgdG8gNTAwIG1zIGZvciB0aGUgUEhZIHJlc2V0LgogICAgRG8gYmFja3VwIHRoZSBvbGQgcmVzZXQgbGVuZ3RoIGFuZCByZXN0b3JlIGl0IGFmdGVyIHRoZSBNQUNCIGluaXRpYWxpc2F0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlZGppIEdhb3Vhb3UgPHNlZGppLmdhb3Vhb3VAYXRtZWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KCmNvbW1pdCBhZmIwYjEzMTVjMDQ4Y2UyYjFmMzVmMDE4M2I4YjExOGFkMGMxNGUxCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEp1bCAzIDEyOjQ1OjQ0IDIwMDkgLTA1MDAKCiAgICBmc2w6IEZpeCBjb21waWxlciB3YXJuaW5ncyBmcm9tIGdjYy00LjQgaW4gc3lzX2VlcHJvbSBjb2RlCgogICAgc3lzX2VlcHJvbS5jOiBJbiBmdW5jdGlvbiAnZG9fbWFjJzoKICAgIHN5c19lZXByb20uYzozMjM6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwogICAgc3lzX2VlcHJvbS5jOiBJbiBmdW5jdGlvbiAnbWFjX3JlYWRfZnJvbV9lZXByb20nOgogICAgc3lzX2VlcHJvbS5jOjM5NTogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZCBwb2ludGVyIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBlOTRlNDYwYzZlODc0MWY0MmRhYjZkOGRkNGI1OTZiYTVkOWQ3OWFlCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJVHVlIEp1biAzMCAxNzoxNTo1MSAyMDA5IC0wNTAwCgogICAgODN4eDogQWRkIHN1cHBvcnQgZm9yIGZzbF9kbWEgZHJpdmVyCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFJldmlld2VkLWJ5OiBJcmEgVy4gU255ZGVyIDxpd3NAb3Zyby5jYWx0ZWNoLmVkdT4KICAgIFRlc3RlZC1ieTogSXJhIFcuIFNueWRlciA8aXdzQG92cm8uY2FsdGVjaC5lZHU+CiAgICBBY2tlZC1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgOWFkZGE1NDU5Y2E2MjEyMGMwYzUwYjgyYjc2NmZlMWNmNjkyNWJiZgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVR1ZSBKdW4gMzAgMTc6MTU6NTAgMjAwOSAtMDUwMAoKICAgIDgzeHg6IFJlcGxhY2UgQ09ORklHX0VDQ19JTklUX1ZJQV9ERFJDIHJlZmVyZW5jZXMKCiAgICBVcGRhdGUgODN4eCBhcmNoaXRlY3R1cmUncyBDT05GSUdfRUNDX0lOSVRfVklBX0REUkMgcmVmZXJlbmNlcyB0bwogICAgQ09ORklHX0VDQ19JTklUX1ZJQV9ERFJDT05UUk9MTEVSLCB3aGljaCBvdGhlciBGcmVlc2NhbGUgYXJjaGl0ZWN0dXJlcwogICAgdXNlCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIEFja2VkLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAwMzk1OTRhNDMwMWRhZGNlYjI2N2RiNWU4YjljOGM3OGIxYmI4NmI1CkF1dGhvcjogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgMiAxNjoxNTowMSAyMDA5ICswNTMwCgogICAgOHh4eDogU2Vjb25kIFVBUlQgcG9ydCBhZGRlZCBmb3IgTVBDODV4eCwgTVBDODN4eCwgTVBDODZ4eCBwcm9jZXNzb3JzCgogICAgRGVmaW5pbmcgdGhlIG5leHQgdHdvIGNvbmZpZ3MgYWxsb3dzIHRvIHN3aXRjaCB0aGUgc2VyaWFsIHBvcnQgZnJvbSB0aGUKICAgIGNvbnNvbGUgdXNpbmcgdGhlIHNldGVudiBzdGRpbiBhbmQgc3Rkb3V0CiAgICAgIDEuICNkZWZpbmUgQ09ORklHX1NFUklBTF9NVUxUSSAxIC8qIEVuYWJsZSBib3RoIHNlcmlhbCBwb3J0cyAqLwogICAgICAyLiAjZGVmaW5lIENPTkZJR19TWVNfQ09OU09MRV9JU19JTl9FTlYgLyogZGV0ZXJtaW5lIGZyb20gZW52aXJvbm1lbnQgKi8KCiAgICBTaWduZWQtb2ZmLWJ5OiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDU0NmIxMDMyOTA3ZGY3MGYyZGQwZjk4ZjNhZDA5ODg1YTg4NDExZTUKQXV0aG9yOiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1bCAyIDE2OjE0OjQwIDIwMDkgKzA1MzAKCiAgICA4NXh4OiBBZGRzIEdQSU8gcmVnaXN0ZXJzIHRvIE1QQzg1eHggTWVtb3J5IE1hcC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNWRhNmY4MDZiNDAwMzcyYjhhMDY2NGYzMjgyYzllODNhNDAyZWI2NgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVR1ZSBKdW4gMzAgMTc6MjY6MDEgMjAwOSAtMDUwMAoKICAgIDg2eHg6IFhQZWRpdGU1MTcwIGJvYXJkIHN1cHBvcnQKCiAgICBJbml0aWFsIHN1cHBvcnQgZm9yIEV4dHJlbWUgRW5naW5lZXJpbmcgU29sdXRpb25zIFhQZWRpdGU1MTcwIC0KICAgIGEgTVBDODY0MC1iYXNlZCAzVSBWUFggc2luZ2xlIGJvYXJkIGNvbXB1dGVyIHdpdGggYSBQTUMvWE1DCiAgICBzaXRlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGU2NmYzOGRhODQzNDQyNWFjYThkZjA4ZDA2ZDllZjQxYjM0NzhkM2IKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVsIDEgMTY6NTE6NTkgMjAwOSAtMDUwMAoKICAgIGZzbF9kZHI6IEZpeCBERFIzIGNhbGN1bGF0aW9uIG9mIHJhbmsgZGVuc2l0eSB3aXRoIDhHQiBvciBtb3JlCgogICAgVGhlIGNhbGN1bGF0ZSBmb3IgcmFuayBkZW5zaXR5IGluIGNvbXB1dGVfcmFua3NpemUoKSBmb3IgRERSMyB1c2VkIGFsbAogICAgaW50ZWdlcnMgZm9yIHRoZSBleHByZXNzaW9uLCBzbyB0aGUgcmVzdWx0IHdhcyBhbHNvIGEgMzItYml0IGludGVnZXIsIGV2ZW4KICAgIHRob3VnaCB0aGUgJ2JzaXplJyB2YXJpYWJsZSBpcyBhIHU2NC4gIEZpeCB0aGUgZXhwcmVzc2lvbiB0byBjYWxjdWxhdGUgYQogICAgdHJ1ZSA2NC1iaXQgdmFsdWUuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNmFmMDE1Yjg2Yjg2ZDk0ZGU3Y2ExYjIzYTM4OTBiYzkzYTUwYzJhYgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVR1ZSBKdW4gMzAgMTc6MTU6NDkgMjAwOSAtMDUwMAoKICAgIGZzbF9kbWE6IE1ha2UgRE1BIHRyYW5zYWN0aW9ucyBzbm9vcGFibGUKCiAgICBNYWtlIERNQSB0cmFuc2FjdGlvbnMgc25vb3BhYmxlIHNvIHRoYXQgQ1BVcyBjYW4ga2VlcCBjYWNoZXMgdXAtdG8tZGF0ZS4KICAgIFRoaXMgYWxsb3dzIGRtYSB0cmFuc2FjdGlvbnMgdG8gYmUgdXNlZCBmb3Igb3BlcmF0aW9ucyBzdWNoIGFzIG1lbW9yeQogICAgY29waWVzIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgY2FjaGUgY29udHJvbCBvcGVyYXRpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDBkNTk1Zjc2YmM5YzdjOGRmZjViZDMxZGZmZWQ4N2E4NDBhMDNjNTYKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglUdWUgSnVuIDMwIDE3OjE1OjQ4IDIwMDkgLTA1MDAKCiAgICBmc2xfZG1hOiBCcmVhayBvdXQgY29tbW9uIG1lbW9yeSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDc5ZjQzMzNjZWIwNTkwNDliM2VlNTYwMTY3ZDZjYmFlYzQ5MzY5NWYKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglUdWUgSnVuIDMwIDE3OjE1OjQ3IDIwMDkgLTA1MDAKCiAgICA4eHh4OiBNb3ZlIGRtYV9pbml0KCkgY2FsbCB0byBjb21tb24gY29kZQoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDE5MWM3MTE4NTkyY2QxODJmMmRjN2Y0NmI0ZjcyZDliZWQwZTJjNzYKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglUdWUgSnVuIDMwIDE3OjE1OjQ2IDIwMDkgLTA1MDAKCiAgICBmc2xfZG1hOiBNb3ZlIGRtYSBmdW5jdGlvbiBwcm90b3R5cGVzIHRvIGNvbW1vbiBoZWFkZXIgZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDc4OTJmNjE5ZDQwZjQxOTZlNDFlNzExNGM1ZGZlZTlmYWQwZjU3MmYKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglUdWUgSnVuIDMwIDE3OjE1OjQ1IDIwMDkgLTA1MDAKCiAgICA4eHh4OiBSZW5hbWUgZG1hX3hmZXIoKSB0byBkbWFjcHkoKQoKICAgIEFsc28gdXBkYXRlIGRtYWNweSgpJ3MgYXJndW1lbnQgb3JkZXIgdG8gbWF0Y2ggbWVtY3B5J3MgYW5kIHVzZQogICAgcGh5c19hZGRyX3QvcGh5X3NpemVfdCBmb3IgYWRkcmVzcy9zaXplIGFyZ3VtZW50cwoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDQ4NDkxOWNmMzM1MTIxMmViZjc0OGI5YjEzZWNlMWRkYWY3ZTdkMWMKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglUdWUgSnVuIDMwIDE3OjE1OjQ0IDIwMDkgLTA1MDAKCiAgICBmc2xfZG1hOiBGaXggQ2hhbm5lbCBTdGFydCBidWcgaW4gZG1hX2NoZWNrKCkKCiAgICBUaGUgQ2hhbm5lbCBTdGFydCAoQ1MpIGJpdCBpbiB0aGUgTW9kZSBSZWdpc3RlciAoTVIpIHNob3VsZCBhY3R1YWxseSBiZQogICAgY2xlYXJlZCBhcyB0aGUgY29tbWVudCBpbiB0aGUgY29kZSBzdWdnZXN0cy4gIFByZXZpb3VzbHksIENTIHdhcyBiZWluZwogICAgc2V0LCBub3QgY2xlYXJlZC4KCiAgICBBc3N1bWluZyBub3JtYWwgb3BlcmF0aW9uIG9mIHRoZSBETUEgZW5naW5lLCB0aGlzIGNoYW5nZSBzaG91bGRuJ3QgaGF2ZQogICAgYW55IHJlYWwgYWZmZWN0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDUxNDAyYWMxMmJlOWEwMDI1ZjE2ZGI1MWZiZGU3YzA1MGE1NGU1ZmUKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglUdWUgSnVuIDMwIDE3OjE1OjQzIDIwMDkgLTA1MDAKCiAgICBmc2xfZG1hOiBBZGQgc3VwcG9ydCBmb3IgYXJiaXRyYXJpbHkgbGFyZ2UgdHJhbnNmZXJzCgogICAgU3VwcG9ydCBETUEgdHJhbnNmZXJzIGxhcmdlciB0aGFuIHRoZSBETUEgY29udHJvbGxlcidzIGxpbWl0IG9mCiAgICAoMiBeIDI2IC0gMSkgYnl0ZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBhNzMwMzkzYTM2Mjc0MWMzMThiMjE3NzFiOGQ3YjI2NDdlNTQ2YzNlCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJVHVlIEp1biAzMCAxNzoxNTo0MiAyMDA5IC0wNTAwCgogICAgZnNsX2RtYTogVXNlIHByb3BlciBJL08gYWNjZXNzIGZ1bmN0aW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDljMDYwNzFhNjA3N2JhOTVlOWQ0MzIyNjE1NmUzOTU2N2Q1ZDA2NGEKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglUdWUgSnVuIDMwIDE3OjE1OjQxIDIwMDkgLTA1MDAKCiAgICBmc2xfZG1hOiBBZGQgYml0ZmllbGQgZGVmaW5pdGlvbnMgZm9yIGNvbW1vbiByZWdpc3RlcnMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAwMTdmMTFmNjhlZjU0M2U4NjZiZTAzM2JjYjdiODA1OGE4YTM4MGQ4CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJVHVlIEp1biAzMCAxNzoxNTo0MCAyMDA5IC0wNTAwCgogICAgOHh4eDogQnJlYWsgb3V0IERNQSBjb2RlIHRvIGEgY29tbW9uIGZpbGUKCiAgICBETUEgc3VwcG9ydCBpcyBub3cgZW5hYmxlZCB2aWEgdGhlIENPTkZJR19GU0xfRE1BIGRlZmluZSBpbnN0ZWFkIG9mIHRoZQogICAgcHJldmlvdXMgQ09ORklHX0REUl9FQ0MKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA2YmJjZWQ2NzE3MTk1MThkMGUyOGZmNDIyNjIzY2Q3Y2UzOTZjYmRhCkF1dGhvcjogTWFyayBKYWNrc29uIDxtcGZqLWxpc3RAbWltYy5jby51az4KRGF0ZToJTW9uIEp1biAyOSAxNTo1OToxMCAyMDA5ICswMTAwCgogICAgQXRtZWwgTENEIGRyaXZlciBHVUFSRFRJTUUgZml4CgogICAgVGhpcyBwYXRjaCBhbGxvd3MgdGhlIGd1YXJkIHRpbWUgcGFyYW1ldGVyIHRvIGJlIHNldCBpbgogICAgdGhlIEF0bWVsIExDREMgZHJpdmVyLgoKICAgIEJ5IGRlZmF1bHQsIHRoZSBwcmV2aW91cyB2YWx1ZSBvZiAxIGlzIHVzZWQsIHVubGVzcyB0aGUKICAgIHNldHRpbmcgaXMgZGVmaW5lZCBlbHNld2hlcmUuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyayBKYWNrc29uIDxtcGZqQG1pbWMuY28udWs+Cgpjb21taXQgMjljMzUxODI0NjJmZWVhMDlmMzIyZTUxOTEzNzU5YTUzMzU5YTNlMApBdXRob3I6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEp1biAzMCAxMzo1NjoyMyAyMDA5ICswODAwCgogICAgODV4eDogQWRkIHBjaSBlMTAwMCBFdGhlcm5ldCBzdXBwb3J0IGZvciBQMjAyMCBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMTU2OTg0YTM2MTFjMjgwOTM5MTlkM2UzYzA0MmY3MjJiNTU0ODI1MwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBKdW4gMTggMDg6Mzk6NDIgMjAwOSAtMDUwMAoKICAgIDh4eHg6IEZpeCBQQ0kgYnVzIGFkZHJlc3Mgc2V0dXAgZm9yIDM2LWJpdCBjb25maWdzCgogICAgV2Ugd2FudCB0aGUgb3V0Ym91bmQgUENJIG1lbW9yeSBtYXAgdG8gZW5kIGF0IHRoZSA0RyBib3VuZGFyeSBzbyB3ZQogICAgY2FuIG1heGltaXplIHRoZSBhbW91bnQgb2Ygc3BhY2UgYXZhaWxhYmxlIGZvciBpbmJvdW5kIG1hcHBpbmdzIGlmCiAgICB3ZSBoYXZlIGxhcmdlIGFtb3VudHMgb2YgbWVtb3J5LgoKICAgIFRoaXMgbWF0Y2hlcyB0aGUgZGV2aWNlIHRyZWUgc2V0dXAgaW4gdGhlIGtlcm5lbCBmb3IgdGhlIDM2LWJpdCBwaHlzaWNhbAogICAgY29uZmlncyBmb3IgdGhlIHBsYXRmb3JtcyB0aGF0IGhhdmUgb25lIChNUEM4NjQxIEhQQ04gJiBNUEM4NTcyIERTKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDQ4MGY2MTc5MDU2NWQ3NzQzMmI3MGI0MDE2YjczZjJhZTI3ZDUzMGYKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgSnVuIDE4IDA4OjIzOjAxIDIwMDkgLTA1MDAKCiAgICA4Nnh4OiBBZGQgQ1BVX1RZUEVfRU5UUlkgc3VwcG9ydAoKICAgIFVuaWZ5IHdpdGggODN4eCBhbmQgODV4eCBhbmQgdXNlIENQVV9UWVBFX0VOVFJZLiAgV2UgYXJlIGdvaW5nIHRvIHVzZQogICAgdGhpcyB0byBjb252ZXkgdGhlICMgb2YgY29yZXMgYW5kIEREUiB3aWR0aCBpbiB0aGUgbmVhciBmdXR1cmUgc28gaXRzCiAgICBnb29kIHRvIGtlZXAgaW4gc3luYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDk4YWIxNGU4NThiZjYwMzA2ZDBhYTNmMGRmNWE3YTVmODgyNjRhZmYKQXV0aG9yOiBQZXRlciBNZWVyd2FsZCA8cG1lZXJ3QHBtZWVydy5uZXQ+CkRhdGU6CU1vbiBKdW4gMjkgMTU6NDg6MzMgMjAwOSAtMDQwMAoKICAgIEJsYWNrZmluOiBUV0kvSTJDOiBmaXggcHVyZSB3cml0ZXMKCiAgICBJZiBkb2luZyBhIHB1cmUgd3JpdGUgd2l0aCByZWdpc3RlciBhZGRyZXNzIGFuZCBkYXRhIChub3QgYSByZWFkL3dyaXRlCiAgICBjb21ibyB0cmFuc2ZlciksIHdlIGRvbid0IHNldCB0aGUgaW5pdGlhbCB0cmFuc2ZlciBsZW5ndGggcHJvcGVybHkgd2hpY2gKICAgIGVuZHMgdXAgY2F1c2luZyBvbmx5IHRoZSByZWdpc3RlciBhZGRyZXNzIHRvIGJlIHRyYW5zZmVycmVkLgoKICAgIFdoaWxlIHdlJ3JlIGhlcmUsIGZpeCB0aGUgaTJjX3dyaXRlKCkgcGFyYW1ldGVyIGRlc2NyaXB0aW9uIG9mIHRoZSBidWZmZXIuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgTWVlcndhbGQgPHBtZWVyd0BwbWVlcncubmV0PgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDU3MTBkZTQ1ODA4ZWI4ZjFjYzM0YjUxZGMzZTY3ZTI0MjIxMTMyNDkKQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+CkRhdGU6CVNhdCBNYXkgMzAgMDE6MTM6MzMgMjAwOSArMDUzMAoKICAgIHNwaTogQWRkIE1hcnZlbGwgS2lya3dvb2QgU1BJIGRyaXZlcgoKICAgIFRoaXMgcGF0Y2ggYWRkcyBhIFNQSSBkcml2ZXIgZm9yIHRoZSBNYXJ2ZWxsIEtpcmt3b29kIFNvQydzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KCmNvbW1pdCA2YmRlMTcxYTRjNDExNmNlZTE3OTE2N2NiNjUzMzVhMjhmOTk5MzJkCkF1dGhvcjogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgpEYXRlOglUaHUgSnVuIDI1IDE5OjIxOjMzIDIwMDkgKzA5MDAKCiAgICBzM2M2NHh4OiBtb3ZlIHRoZSByZXNldF9jcHUgZnVuY3Rpb24KCiAgICBCZWNhdXNlIG9mIHRoZSByZXNldF9jcHUgaXMgc29jIHNwZWNpZmljLCBzaG91bGQgYmUgbW92ZSB0byBzb2MKICAgIEFuZCByZWFkIHJlc2V0IHZhbHVlIGZyb20gU1lTX0lEIHJlZ2lzdGVyIGluc3RlYWQgb2YgaGFyZCBjb2RlCiAgICB0aGlzIHBhdGNoIGFsc28gc3VwcG9ydHMgczNjNjQxMAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KCmNvbW1pdCA1NzZhZmQ0ZmFlYmExNTE5YmNiOGMwMDgzYzNlNGQ0NWU1NjQzYTQ4CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIE1heSAxNyAwMDo1ODozNyAyMDA5ICswMjAwCgogICAgaW50ZWdyYXRvcjogbWVyZ2UgaW50ZWdyYXRvcmFwIGFuZCBpbnRlZ3JhdG9yY3AKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgQWNrZWQtYnk6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+Cgpjb21taXQgNDY5MzdiMjc0Mjc2ODhhNTZiZjdmNTk0NGE5MmQ5NjJkYzQzYzNmYQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBNYXkgMTcgMDA6NTg6MzYgMjAwOSArMDIwMAoKICAgIGludGVncmF0b3JhcC9jcDogdXNlIGNmaSBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgQWNrZWQtYnk6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+Cgpjb21taXQgZGU3YTAxYWJkOGFlYjE2Nzk0NmYzOTEzMjdlMWUwZDFlMDFmOTBjOQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBNYXkgMTcgMDA6NTg6MzYgMjAwOSArMDIwMAoKICAgIGludGVncmF0b3JhcC9jcC92ZXJzYXRpbGU6IHJlbW92ZSBub24gdXNlZCBmdW5jdGlvbnMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgQWNrZWQtYnk6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+Cgpjb21taXQgZjU0ODUxYTZlMzg0NGI3ZTAxNTgxYjVhOTY4MWYyOTQxMThiNzUyOQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBNYXkgMTcgMDA6NTg6MzYgMjAwOSArMDIwMAoKICAgIGludGVncmF0b3JjcDogc3BsaXQgdGltZXIgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CiAgICBBY2tlZC1ieTogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KCmNvbW1pdCAyYmNlZjA3MjNlYTExYzRlOWJmYmNmZmYyYTkzZWMyZGE1MjBiNWYxCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIE1heSAxNyAwMDo1ODozNiAyMDA5ICswMjAwCgogICAgaW50ZWdyYXRvcmFwOiBzcGxpdCB0aW1lciBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIEFja2VkLWJ5OiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgoKY29tbWl0IDg2YmFhMDg1YzUyYTdmMzM3N2E4ODA3NDY3OWM1YWNhOWI5ZTRkMzgKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gTWF5IDE3IDAwOjU4OjM2IDIwMDkgKzAyMDAKCiAgICBpbnRlZ3JhdG9yYXA6IHNwbGl0IHBjaSBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIEFja2VkLWJ5OiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgoKY29tbWl0IDM3OWU5ZmMwYTMxOWI4ZjZhZTE2ZDc2MzU5MGJmMDIzZjNhZmI4N2MKQXV0aG9yOiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KRGF0ZToJTW9uIEp1biA4IDA0OjEyOjUwIDIwMDkgKzA0MDAKCiAgICBhcm06IGFkZCBzdXBwb3J0IGZvciBDT05GSUdfR0VORVJJQ19NTUMKCiAgICBTaWduZWQtb2ZmLWJ5OiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KCmNvbW1pdCA0N2QxOWRhNGQzZjlhYzQ3ODdhYmU5ZGVlMzI0MDY0Nzg0MjRiZTUyCkF1dGhvcjogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CkRhdGU6CU1vbiBKdW4gOCAwNDoxMjo0NiAyMDA5ICswNDAwCgogICAgc2VyaWFsX214MzE6IGFsbG93IGl0IHRvIHdvcmsgd2l0aCBteDI3IHRvbyBhbmQgcmVuYW1lIHRvIHNlcmlhbF9teGMKCiAgICBVQVJUIGhhcmR3YXJlIG9uIGkuTVgyNyBpcyB0aGUgc2FtZSBhcyBvbiB0aGUgaS5NWDMxIHNvIHdlIGp1c3QKICAgIG5lZWQgdG8gcHJvdmlkZSB0aGUgZHJpdmVyIHdpdGggY29ycmVjdCBhZGRyZXNzIG9mIHRoZSByZWdpc3RlcnMuCgogICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Cgpjb21taXQgMWRjNGRhNzQ5ZGJkZTI3ZWM4NjJmNWI2NTcwM2U4ZTQ1NDFmYmJhMwpBdXRob3I6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgpEYXRlOglNb24gSnVuIDggMDQ6MTI6NDUgMjAwOSArMDQwMAoKICAgIG14Mjc6IGJhc2ljIGNwdSBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBhZGRzIGdlbmVyaWMgY29kZSB0byBzdXBwb3J0IEZyZWVzY2FsZSdzIGkuTVgyNyBTb0NzLgoKICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgoKY29tbWl0IGRkMmY2OTY1YTZjNzFmNmY3MTFlYzk4ODI3ODgwMTUyZTAyMmMyMzYKQXV0aG9yOiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+CkRhdGU6CVNhdCBKdW4gMTMgMjA6NTA6MDMgMjAwOSArMDIwMAoKICAgIGkuTVgzMTogQ3JlYXRlIGEgY29tbW9uIGRldmljZSBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KCmNvbW1pdCA5NThmN2RhNzg4N2ZlYTRhMjA5MWFlNjA5NDRkNjJjMTcwOGMyYzU1CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IEp1biAxMyAyMDo1MDowMiAyMDA5ICswMjAwCgogICAgQVJNOiBBZGQgbWFjcm9zLmggdG8gYmUgdXNlZCBpbiBhc3NlbWJsZXIgZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDQwYzY0MmJjMTliOWZhMjkwNmUzMTcyNDg3YTUyMmZlZTQ1NjM0MGIKQXV0aG9yOiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+CkRhdGU6CVNhdCBKdW4gMTMgMjA6NTA6MDEgMjAwOSArMDIwMAoKICAgIE1YMzE6IEFkZCBOQU5EIFNQTCBmb3IgaS5NWDMxLgoKICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgTkFORCBTUEwgZnJhbWV3b3JrIG5lZWRlZCB0byBib290IGkuTVgzMSBib2FyZHMKICAgIGZyb20gTkFORC4KCiAgICBJdCBoYXMgYmVlbiB0ZXN0ZWQgb24gYSBpLk1YMzEgUERLIGJvYXJkIHdpdGggbGFyZ2UgcGFnZSBOQU5ELiBTbWFsbAogICAgcGFnZSBOQU5EcyBzaG91bGQgd29yayBhcyB3ZWxsLCBidXQgdGhpcyBoYXMgbm90IGJlZW4gdGVzdGVkLgoKICAgIE5vdGU6IFRoZSBpLk1YMzEgTkZDIHVzZXMgYSBub24tc3RhbmRhcmQgbGF5b3V0IGZvciBsYXJnZSBwYWdlIE5BTkRzLAogICAgd2hldGhlciB0aGlzIGlzIGNvbXBhdGlibGUgd2l0aCBhIHBhcnRpY3VsYXIgc2V0dXAgZGVwZW5kcyBvbiBob3cKICAgIHRoZSBOQU5EIGRldmljZSBpcyBwcm9ncmFtbWVkIGJ5IHRoZSBmbGFzaCBwcm9ncmFtbWVyIChlLmcuIEpUQUcKICAgIGRlYnVnZ2VyKS4KCiAgICBUaGUgcGF0Y2ggaXMgYmFzZWQgb24gdGhlIHdvcmsgYnkgTWF4aW0gQXJ0YW1vbm92LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1heGltIEFydGFtb25vdiA8c2NuMTg3NEB5YW5kZXgucnU+CiAgICBTaWduZWQtb2ZmLWJ5OiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Cgpjb21taXQgZGY4MTIzOGIzZTI3YTc5MWRhOTk2YTkyMDg0MDJhYzhmNDBiOTg2MgpBdXRob3I6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KRGF0ZToJU2F0IEp1biAxMyAyMDo1MDowMCAyMDA5ICswMjAwCgogICAgQVJNMTEzNjogSW50cm9kdWNlIENPTkZJR19QUkVMT0FERVIgbWFjcm8uCgogICAgQ3VycmVudGx5IENPTkZJR19PTkVOQU5EX0lQTCBpcyB1c2VkIGluIGEgbnVtYmVyIG9mICNpZmRlZidzCiAgICBpbiBzdGFydC5TLiBJbiBwcmVwYXJhdGlvbiBmb3IgYWRkaW5nIHN1cHBvcnQgZm9yIE5BTkQgU1BMCiAgICB0aGUgbWFjcm8gQ09ORklHX1BSRUxPQURFUiBpcyBpbnRyb2R1Y3RlZCBhbmQgcmVwbGFjZXMgdGhlCiAgICBDT05GSUdfT05FTkFORF9JUEwgaW4gc3RhcnQuUy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Cgpjb21taXQgODA5NmM1MWZkNGU2MTFlZDY2NmRiZTc3NzY3ZTgxYWY1ZDk0ZmM3YgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBKdW4gMTMgMTI6NTA6MDQgMjAwOSArMDIwMAoKICAgIGF0OTE6IHVuaWZ5IG5vciBib290IHN1cHBvcnQKCiAgICB0aGUgbG93bGV2ZWwgaW5pdCBzZXF1ZW5jZSBpcyB0aGUgc2FtZSBzbyB1bmlmeSBpdAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMWIzYjdjNjQwZDA0ZGYyYmE5YTlkOTQ3MTE3ZDExMmE3NWZlZTdmNApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBKdW4gMTMgMTI6NDg6MzYgMjAwOSArMDIwMAoKICAgIGF0OTFzYW05MjYzZWs6IGFkZCBub3IgZmxhc2ggc3VwcG9ydAoKICAgIHRoaXMgd2lsbCBhbGxvdyB5b3UgdG8gc3RvcmUgdXNlIGl0IGZvciB0aGUgZW52IGFuZCB0byBib290IGRpcmVjdGx5IFUtQm9vdCBmcm9tCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAzMjk0OTIzMjk3MDA4MTJjNmRmMjc1YWEwZmRhMDlkNjA5Y2QwZmQ0CkF1dGhvcjogSWxrbyBJbGlldiA8aWxpZXZAcm9uZXRpeC5hdD4KRGF0ZToJRnJpIEp1biAxMiAyMToyMDozOSAyMDA5ICswMjAwCgogICAgYXQ5MTogYWRkIHN1cHBvcnQgZm9yIHRoZSBQTTkyNjEgYm9hcmQgb2YgUm9uZXRpeCBHbWJICgogICAgVGhlIFBNOTI2MSBib2FyZCBpcyBiYXNlZCBvbiB0aGUgQVQ5MVNBTTkyNjEtRUsgYm9hcmQuCgogICAgSGVyZSBpcyB0aGUgcGFnZSBvbiBSb25ldGl4IHdlYnNpdGU6CiAgICBodHRwOi8vd3d3LnJvbmV0aXguYXQvc3RhcnRlcl9raXRfOTI2MS5odG1sCgogICAgU2lnbmVkLW9mZi1ieTogSWxrbyBJbGlldiA8aWxpZXZAcm9uZXRpeC5hdD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMDE1NTBhMmI2NTBmYmFiYzAzMzM0ZjllYWRjYzYwODM2MDFhMjQxNApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBKdW4gMTIgMjE6MjA6MzggMjAwOSArMDIwMAoKICAgIHBtOTI2MzogdXNlIG1hY3JvIGluc3RlYWQgb2YgaGFyZGNvZGUgdmFsdWUgZm9yIHRoZSBsb3dsZXZlbF9pbml0CgogICAgb3B0aW1pemUgYSBmZXcgdGhlIFJBTSBpbml0CgogICAgU2lnbmVkLW9mZi1ieTogSWxrbyBJbGlldiA8aWxpZXZAcm9uZXRpeC5hdD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgN2ExMWM3Zjk3NDcyNDBkYzc3MDk1NGQzMjA1Njk1OTZjMGZiY2I1MApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBKdW4gMTIgMjE6MjA6MzcgMjAwOSArMDIwMAoKICAgIHBtOTI2MzogbG93bGV2ZWwgaW5pdCB1cGRhdGUKCiAgICBtb3ZlIFBTUkFNIGluaXQgdG8gcG05MjYzLmMKICAgIHRoaXMgd2lsbCBhbGxvdyB1cyBhZnRlciB0byBtYWtlIHRoZSBub3IgbG93bGV2ZWxfaW5pdCBnZW5lcmljCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAzZTg4MzM3YjIyNWJmNzk2ZjZkZjIxZDBhN2Y1OTE1MzBlOWQ0Y2UwCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gSnVuIDE1IDAwOjI1OjE5IDIwMDkgLTA0MDAKCiAgICBCbGFja2ZpbjogbW92ZSBBTEwgKz0gdS1ib290LmxkciB0byBibGFja2Zpbl9jb25maWcubWsKCiAgICBUaGUgd2F5IHRoZSBBTEwgdmFyaWFibGUgaXMgdXNlZCBhbGxvd3MgZm9yIGNvbmZpZy5taydzIHRvIGFkZCBtb3JlCiAgICB0YXJnZXRzIHRoZW1zZWx2ZXMgd2l0aG91dCBoYXZpbmcgdG8gY2x1dHRlciB1cCB0aGUgdG9wIGxldmVsIE1ha2VmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBhZmFjOGIwNzE3MmQ3ZTRhNjVmODZjZTFlYzRjNzgzYTYxNjViYTFmCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gSnVuIDE0IDIyOjI5OjM1IDIwMDkgLTA0MDAKCiAgICBCbGFja2ZpbjogZml4IFNQSSBmbGFzaCBzcGVlZCBkZWZpbmUgbmFtZQoKICAgIFRoZSBTUEkgZmxhc2ggZGVmaW5lIGlzIG5hbWVkIENPTkZJR19TRl9ERUZBVUxUX1NQRUVELCBub3QKICAgIENPTkZJR19TRl9ERUZBVUxUX0haLCBzbyBmaXggdGhlIHR5cG9zIGluIHRoZSBCbGFja2ZpbiBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDlhZTU1Y2NmNjAxZGU3YTViNzVlYjQxOGYzZmMzZDVlY2E5MmMxMDYKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVN1biBKdW4gMTQgMjI6MjY6MzEgMjAwOSAtMDQwMAoKICAgIEJsYWNrZmluOiBlbmFibGUgLU8yIGluIGxpYl9nZW5lcmljLyBmb3IgQURJL0JsdWV0ZWNobml4IGJvYXJkcwoKICAgIEJ1aWxkaW5nIHRoZSBjb21wcmVzc2lvbiBjb2RlIGluIGxpYl9nZW5lcmljLyB3aXRoIC1PMiByYXRoZXIgdGhhbiAtT3MKICAgIGdpdmVzIGEgbmljZSBzcGVlZCBib29zdCB3aXRob3V0IHRvbyBtdWNoIGNvZGUgc2l6ZSBpbmNyZWFzZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZmVhNjNlMmE0NGYwZGI1MWQyZTM5ZWU3NzkzZThjNmQ3ZjNjZjVkNApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU3VuIEp1biAxNCAyMToyMzoyNyAyMDA5IC0wNDAwCgogICAgQmxhY2tmaW46IGJmNTQ4LWV6a2l0OiBidW1wIHVwIG1vbml0b3Igc2l6ZQoKICAgIFRoZSBsYXRlc3QgdmVyc2lvbiBvZiBVLUJvb3QgZ290IGEgYml0IGZhdHRlciBpbiB0aGUgQlNTIHNlY3Rpb24gd2hpY2gKICAgIGNhdXNlZCBvdmVyZmxvd3MgaW4gdGhlIFJBTSByZWdpb24sIHNvIGluY3JlYXNlIHRoZSBtb25pdG9yIHNpemUuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGJjNDNhOGQ4OTk0YzJmMGJlMjllMDliMTNiMTVkYTdmNzllMmMwODEKQXV0aG9yOiBWaXZpIExpIDx2aXZpLmxpQGFuYWxvZy5jb20+CkRhdGU6CUZyaSBKdW4gMTIgMTA6NTM6MjIgMjAwOSArMDAwMAoKICAgIEJsYWNrZmluOiBiZjUzMy1zdGFtcC9iZjUzNy1zdGFtcDogZml4IGVudiBzZXR0aW5ncyBmb3IgU1BJIGZsYXNoCgogICAgVGhlIFNQSSBmbGFzaCBsYXllciBpcyBtdWNoIHN0cmljdGVyIGFib3V0IHNlY3RvciB1c2FnZSB0aGFuIHRoZSBlZXByb20KICAgIGxheWVyIHdlIHVzZWQgdG8gdXNlLCBzbyB1cGRhdGUgdGhlIGVudiBzZXR0aW5ncyB0byBiZXR0ZXIgbWF0Y2ggdGhlCiAgICBzZWN0b3IgYWxpZ25tZW50IG9mIHRoZSBmbGFzaGVzIHdlIHVzZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBWaXZpIExpIDx2aXZpLmxpQGFuYWxvZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNjNjYjBmNGViMmQzY2YxNWU3YTFhZGQxOWQxMjg5ZjRhZTc1ODE2YwpBdXRob3I6IFZpdmkgTGkgPHZpdmkubGlAYW5hbG9nLmNvbT4KRGF0ZToJRnJpIEp1biAxMiAxMDozMzoyMyAyMDA5ICswMDAwCgogICAgQmxhY2tmaW46IGJ1bXAgdXAgZGVmYXVsdCBKVEFHIGNvbnNvbGUgdGltZW91dAoKICAgIFRoZSBkZWJ1ZyB0b29scyB0aGF0IGludGVyZmFjZSB3aXRoIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBKVEFHIGNvbnNvbGUKICAgIGdvdCBtdWNoIHNsb3dlciB3aGVuIGdlbmVyYWxpemluZyB0aGluZ3MsIHNvIGJ1bXAgdXAgdGhlIGRlZmF1bHQgdGltZW91dAogICAgdmFsdWUgb24gdGhlIFUtQm9vdCBzaWRlIHRvIGNvcGUuICBIb3BlZnVsbHkgYXQgc29tZSBwb2ludCB3ZSBjYW4gaW1wcm92ZQogICAgdGhlIGRlYnVnIHRvb2xzIHRvIHNwZWVkIHRoaW5ncyBiYWNrIHVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFZpdmkgTGkgPHZpdmkubGlAYW5hbG9nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBjMTFmZjc3OWY0ZTBlMGM3ZWRjMzIyZTg0ZGQyMjlhZDI4NzA5NTk1CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gSnVuIDEgMTk6MDg6MzMgMjAwOSAtMDQwMAoKICAgIEJsYWNrZmluOiBhZGQganRhZ2NvbnNvbGUgaGVscGVyIHNjcmlwdAoKICAgIFRoaXMgc2NyaXB0IGlzIHNpbWlsYXIgdG8gdGhlIG5ldGNvbnNvbGUgc2NyaXB0LCBidXQgaW5zdGVhZCB3b3JrcyB3aXRoCiAgICB0aGUgSlRBRyBjb25zb2xlIGRldmljZSBkcml2ZXIgdGhhdCBleGlzdHMgb24gQmxhY2tmaW4gcGFydHMuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDYwZjYxZTZkNzY1NTQwMGJiNzg1YTJlZjYzNzU4MTY3OTk0MWY2ZDEKQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KRGF0ZToJU2F0IE1heSAyIDIxOjQ5OjE4IDIwMDkgKzAyMDAKCiAgICBDb252ZXJ0IERNOTAwMCBkcml2ZXIgZm9yIENPTkZJR19ORVRfTVVMVEkKCiAgICBBbGwgZHJpdmVycyBuZWVkIHRvIGJlIGNvbnZlcnRlZCB0byBDT05GSUdfTkVUX01VTFRJLgogICAgVGhpcyBwYXRjaCBjb252ZXJ0cyB0aGUgZG05MDAwIGRyaXZlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgU21pdHMgPHRzLnNtaXRzQGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA5MTMxNTg5YWRhNGRkYTA3MTg2MDRkMGE0MjVjYTQ2ZTUyNzc1ZjZlCkF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgpEYXRlOglTdW4gSnVuIDE0IDIyOjMzOjQ2IDIwMDkgKzA1MzAKCiAgICBuZXQ6IEFkZCBNYXJ2ZWxsIEtpcmt3b29kIGdpZ2FiaXQgZXRoZXJuZXQgZHJpdmVyCgogICAgVGhpcyBwYXRjaCBhZGRzIGEgZWdpZ2EgZHJpdmVyIGZvciB0aGUgTWFydmVsbCBLaXJrd29vZCBTb0Mncy4KCiAgICBDb250cmlidXRvcnM6CiAgICBZb3RhbSBBZG1vbiA8eW90YW1AbWFydmVsbC5jb20+CiAgICBNaWNoYWVsIEJsb3N0ZWluIDxtaWNoYWVsYmxAbWFydmVsbC5jb20KCiAgICBSZXZpZXdlZC1ieTogUm9uZW4gU2hpdHJpdCA8cnNoaXRyaXRAbWFydmVsbC5jb20+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvc2UgPHNyQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDc4MzVmNGI5NDkyN2VjYjVhZmZkOTlhYWQ2MjU5MjEwOGRiNjA2YWQKQXV0aG9yOiBzLXBhdWxyYWpAdGkuY29tIDxzLXBhdWxyYWpAdGkuY29tPgpEYXRlOglUdWUgTWF5IDEyIDExOjQ1OjM0IDIwMDkgLTA0MDAKCiAgICBEYVZpbmNpIE5ldHdvcmsgRHJpdmVyIFVwZGF0ZXMKCiAgICBEaWZmZXJlbnQgZmxhdm91cnMgb2YgRGFWaW5jaSBTT0MncyBoYXZlIGRpZmZlcmVuY2VzIGluIHRoZWlyIEVNQUMgSVAKICAgIFRoaXMgcGF0Y2ggZG9lcyB0aGUgZm9sbG93aW5nCiAgICAxKSBVcGRhdGVzIGJhc2UgYWRkcmVzc2VzIGZvciBETTM2NQogICAgMikgVXBkYXRlcyBNRElPIGZyZXF1ZW5jaWVzIGZvciBETTM2NSBhbmQgRE02NDZ4CiAgICAzKSBVcGRhdGUgRU1BQyB3cmFwcGVyIHJlZ2lzdGVycyBmb3IgRE0zNjUgYW5kIERNNjQ2eAoKICAgIFBhdGNoIGFwcGxpZXMgdG8gdS1ib290LW5ldCBnaXQuIHRoZSBFTUFDIGRyaXZlciBpdHNlbGYKICAgIHdpbGwgYmUgdXBkYXRlZCBzaG9ydGx5IHRvIGFkZCBzdXBwb3J0IGZvciBETTM2NSBhbmQgRE02NDZ4CgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA0NDU3OGJlYTE0ZTQ5MDM1MzMxYThmMGUwMDBlOTM1ZTBkODMwZmY0CkF1dGhvcjogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KRGF0ZToJVHVlIE1heSAyNiAwODoyOToyOSAyMDA5IC0wNDAwCgogICAgU3ViamVjdDogW1BBVENIXSBbcmVwb3N0XSBTdGFuZGFyZGl6ZSB0aGUgdXNlIG9mIE1DRkZFQ19UT1VUX0xPT1AgYXMgYSB1ZGVsYXkoMSkgbG9vcCBjb3VudGVyLgoKICAgICBGcm9tIDU4NGI1ZmJkNGFiZmM0M2Y5MjBjYzFjMzI5NjMzZTAzODE2ZTI4YmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiAgICBGcm9tOiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgogICAgRGF0ZTogV2VkLCAyMCBNYXkgMjAwOSAxODoyNjowMSAtMDQwMAogICAgU3ViamVjdDogW1BBVENIXSBTdGFuZGFyZGl6ZSB0aGUgdXNlIG9mIE1DRkZFQ19UT1VUX0xPT1AgYXMgYSB1ZGVsYXkoMSkgbG9vcCBjb3VudGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGM5YTJhYWIxNTEyZmIyZDEzMjY3MGZmZjljMjc2NTZkMmViOTQ5Y2QKQXV0aG9yOiBOb3JiZXJ0IHZhbiBCb2xodWlzIDxudmJvbGh1aXNAYWltdmFsbGV5Lm5sPgpEYXRlOglUaHUgSnVuIDQgMDk6Mzk6NDggMjAwOSArMDIwMAoKICAgIEEgVkxBTiB0YWdnZWQgREhDUCByZXF1ZXN0L2Rpc2NvdmVyIGlzIDQgYnl0ZXMgc2hvcnQKCiAgICBUaGUgcHJvYmxlbSBpcyB0aGF0IEJPT1RQX1NJWkUgdXNlcyBFVEhFUl9IRFJfU0laRSB3aGljaCBpcyAxNCBieXRlcy4KICAgIElmIHNlbmRpbmcgYSBWTEFOIHRhZ2dlZCBmcmFtZSAod2hlbiBlbnYgdmFyaWFibGUgdmxhbiBpcyBzZXQpIHRoaXMKICAgIHNob3VsZCBiZSBWTEFOX0VUSEVSX0hEUl9TSVpFPTE4IHdoaWNoIGlzIHdoYXQgTmV0U2V0RXRoZXIgcmV0dXJucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb3JiZXJ0IHZhbiBCb2xodWlzIDxudmJvbGh1aXNAYWltdmFsbGV5Lm5sPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA2ZTBkMmZjN2ZlMGRjZmEyZjUxYWI4OTMxZDcwNjk0MGVlMzY0MTkzCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJVHVlIEFwciAyOCAxNjozOToxOSAyMDA5IC0wNzAwCgogICAgUmVtb3ZlIHN1cHBvcnQgZm9yIG5vbi1DT05GSUdfTkVUX01VTFRJIG9uIFBQQzR4eCBFTUFDCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA4NDUzNTg3ZWY5MTM3ZGFmOThiN2M5Y2Y0ZjNiODY1ZjQwMzljZWEwCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJVHVlIE1heSAyNiAwMDozNDowNyAyMDA5IC0wNzAwCgogICAgU3dpdGNoZWQgZGF2aW5jaV9lbWFjIEV0aGVybmV0IGRyaXZlciB0byB1c2UgbmV3ZXIgQVBJCgogICAgQWRkZWQgQ09ORklHX05FVF9NVUxUSSB0byBhbGwgRGF2aW5jaSBib2FyZHMKICAgIFJlbW92ZWQgYWxsIGNhbGxzIHRvIERhdmluY2kgbmV0d29yayBkcml2ZXIgZnJvbSBib2FyZCBjb2RlCiAgICBBZGRlZCBjcHVfZXRoX2luaXQoKSB0byBjcHUvYXJtOTI2ZWpzL2NwdS5jCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA4Y2MxM2MxM2YxZDE1NGM4ZmE4ZmZmNTZjZWEzNTdlZDM4YWY3NmJmCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJTW9uIEFwciAyNyAyMzoxOToxMCAyMDA5IC0wNzAwCgogICAgSW5pdGlhbCBjbGVhbnVwIG9mIERhdmluY2kgRXRoZXJuZXQgZHJpdmVyCgogICAgIFJlbW92ZWQgcG9pbnRsZXNzICNpZmRlZnMKICAgICBNb3ZlZCBmdW5jdGlvbnMgYXJvdW5kIGluIGZpbGUgaW4gcHJlcGFyYXRpb24gZm9yIHN3aXRjaCB0byBuZXdlciBBUEkKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDA5Y2RkMWI5YjAxNDUwZTkxNzg2ZDI2ZmYzYzg2NmRjOWM4ZDhkNmIKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglUdWUgTWF5IDI2IDAwOjE3OjU5IDIwMDkgLTA3MDAKCiAgICBNb3ZlZCBEYXZpbmNpIEV0aGVybmV0IGRyaXZlciB0byBkcml2ZXJzL25ldAoKICAgIFRoaXMgZHJpdmVyIGhhcyBiZWVuIHJlbmFtZWQgZGF2aW5jaV9lbWFjLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDZmNTFkZWI3ZjI5ODQxM2NmY2IwYTM2ZDI0Yzk3ZWY3ZGQ2OWQ0OGYKQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+CkRhdGU6CVR1ZSBNYXkgMTkgMDE6NDA6MTYgMjAwOSArMDUzMAoKICAgIE1hcnZlbGwgTVY4OEU2MVhYIFN3aXRjaCBEcml2ZXIgc3VwcG9ydAoKICAgIENoaXBzIHN1cHBvcnRlZDotCiAgICAxLiA4OEU2MTYxIDYgcG9ydCBnYmUgc3d0aWNoIHdpdGggNSBpbnRlZ3JhdGVkIFBIWXMKICAgIDIuIDg4RTYxNjUgNiBwb3J0IGdiZSBzd3RpY2ggd2l0aCA1IGludGVncmF0ZWQgUEhZcwogICAgMi4gODhFNjEzMiAzIHBvcnQgZ2JlIHN3dGljaCB3aXRoIDIgaW50ZWdyYXRlZCBQSFlzCiAgICBQbGF0Zm9ybSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHN1cHBvcnRlZCBmb3I6LQogICAgZGVmYXVsdCBvciByb3V0ZXIgcG9ydCB2bGFuIGNvbmZpZ3VyYXRpb24KICAgIGxlZF9pbml0IGNvbmZpZ3VyYXRpb24KICAgIG1kaXAvbiBwb2xhcml0eSByZXZlcnNhbCBjb25maWd1cmF0aW9uCgogICAgTm90ZTogVGhpcyBkcml2ZXIgaXMgc3VwcG9ydGVkIGFuZCB0ZXN0ZWQgYWdhaW5zdAogICAga2lya3dvb2QgZWdpZ2EgaW50ZXJmYWNlCgogICAgQ29udHJpYnV0b3JzOgogICAgWW90YW0gQWRtb24gPHlvdGFtQG1hcnZlbGwuY29tPgogICAgTWljaGFlbCBCbG9zdGVpbiA8bWljaGFlbGJsQG1hcnZlbGwuY29tCgogICAgUmV2aWV3ZWQgYnk6IFJvbmVuIFNoaXRyaXQgPHJzaGl0cml0QG1hcnZlbGwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAwOTFkYzlmNmFkYWY1NzJiMDY3YWU5MWFmOTJjNGU3ZGIzM2Q3OTAzCkF1dGhvcjogWmFjaCBMZVJveSA8emxlcm95QHhlcy1pbmMuY29tPgpEYXRlOglGcmkgTWF5IDIyIDEwOjI2OjMzIDIwMDkgLTA1MDAKCiAgICB0c2VjOiBBZGQgc3VwcG9ydCBmb3IgQkNNNTQ4MlMgUEhZCgogICAgU2lnbmVkLW9mZi1ieTogWmFjaCBMZVJveSA8emxlcm95QHhlcy1pbmMuY29tPgogICAgQWNrZWQtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDlmZjY3ZTVlNGM3MTk1NTZkNTdmMTM2YTY0NTNmOGU0Nzk4ZDg1YzAKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVN1biBKdW4gMTQgMDY6Mjk6MDcgMjAwOSAtMDQwMAoKICAgIEJsYWNrZmluOiB1bmlmeSB1LWJvb3QgbGlua2VyIHNjcmlwdHMKCiAgICBBbGwgdGhlIEJsYWNrZmluIGxpbmtlciBzY3JpcHRzIHdlcmUgZHVwbGljYXRlZCBhY3Jvc3MgdGhlIGJvYXJkIGRpcnMgd2l0aAogICAgbm8gZGlmZmVyZW5jZSBzYXZlIGZyb20gdGhlIHNlbWktb2Z0ZW4gdXNlZCBFTlZfSVNfRU1CRURERUQgb3B0aW9uLiAgU28KICAgIHVuaWZ5IGFsbCBvZiB0aGVtIGluIHRoZSBsaWJfYmxhY2tmaW4vIGRpciBhbmQgZm9yIHRoZSBmZXcgYm9hcmRzIHRoYXQKICAgIG5lZWQgdG8gZW1iZWRkZWQgdGhlIGVudmlyb25tZW50IGRpcmVjdGx5LCBhZGQgYSBMRFNfQk9BUkRfVEVYVCBkZWZpbmUgZm9yCiAgICB0aGVtIHRvIGN1c3RvbWl6ZSB2aWEgdGhlaXIgYm9hcmQgY29uZmlnIGZpbGUuICBUaGlzIGlzIG11Y2ggc2ltcGxlciB0aGFuCiAgICBmb3JjaW5nIHRoZW0gdG8gZHVwbGljYXRlIHRoZSByZXN0IG9mIHRoZSBsaW5rZXIgc2NyaXB0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBmNTJlZmNhZTk4Y2JiOGEzOWYxZDA1MzVkZjhkOTY0NmE3NzZhZjllCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglGcmkgTWF5IDI5IDE3OjAyOjM3IDIwMDkgLTA0MDAKCiAgICBCbGFja2ZpbjogYmY1MThmLWV6YnJkOiBlbmFibGUgU1NUIFNQSSBmbGFzaCBkcml2ZXIKCiAgICBUaGUgQkY1MXhGIHBhcnRzIGhhdmUgYW4gaW50ZXJuYWwgU1NUIFNQSSBmbGFzaCwgc28gbWFrZSBzdXJlIHRoZSBkcml2ZXIgaXMKICAgIGVuYWJsZWQgYnkgZGVmYXVsdCBzbyB3ZSBjYW4gYWNjZXNzIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBmMzQ4YWI4NWY3NDFkYzk4YjJkMjAyYzA0YjVmNDMwZWFjZTk0OTI1CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglGcmkgQXByIDI0IDE3OjIyOjQwIDIwMDkgLTA0MDAKCiAgICBCbGFja2ZpbjogY29udmVydCBzcGVjaWZpYyBwcmUvcG9zdCBjb25maWcgaGVhZGVycyB0byBjb21tb24gbWV0aG9kCgogICAgVGhlIEJsYWNrZmluIHBvcnQgd2FzIHVzaW5nIGFzbS9ibGFja2Zpbi1jb25maWcte3ByZSxwb3N0fS5oIHRvIHNldHVwCiAgICBjb21tb24gQmxhY2tmaW4gYm9hcmQgZGVmaW5lcy4gIFRoZSBjb21tb24gbWV0aG9kIG5vdyBpcyB0byB1c2UgY29uZmlnLmgsCiAgICBzbyBjb252ZXJ0IGJsYWNrZmluLWNvbmZpZy1wb3N0LmggdG8gdGhhdC4JUmVuYW1lIHRoZSBzdGlsbCBCbGFja2ZpbgogICAgc3BlY2lmaWMgYmxhY2tmaW4tY29uZmlnLXByZS5oIHRvIGNvbmZpZy1wcmUuaCBzbyB0aGUgbmFtaW5nIGNvbnZlbnRpb25zCiAgICBhdCBsZWFzdCBsaW5lIHVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA3Yzc1MDNlZTZjZDAzYzBmM2IxNmU5OGQzM2Q1YWEyM2IzMGQ2NWIxCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglGcmkgQXByIDI0IDE3OjExOjQ3IDIwMDkgLTA0MDAKCiAgICBCbGFja2ZpbjogZW5hYmxlIExaTUEgZm9yIGFsbCBBREkgYm9hcmRzCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDBlNjNkYzA2Nzk0NTFkNDhmOGI3MjdjNTQzY2U0OGI0ODhmN2EzM2YKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBBcHIgMTMgMDU6NTI6NDUgMjAwOSAtMDQwMAoKICAgIEJsYWNrZmluOiBtYWtlIGRlZmF1bHQgQURJIGVudiBtb3JlIGZsZXhpYmxlCgogICAgQWxsb3cgYm9hcmRzIHRvIGVhc2lseSBvdmVycmlkZSB0aGUgcm9vdD0gYW5kIGRlZmF1bHQgYm9vdGNtZCwgYWxsb3cKICAgIHBlb3BsZSB0byB0d2VhayB0aGUgZmlsZSB1c2VkIGluIGRlZmF1bHQgYm9vdGNtZHMgYXQgcnVudGltZSB2aWEgb25lIGVudgogICAgdmFyLCBhbmQgYWRkIGEgc3RvY2sgbmFuZGJvb3QgY29tbWFuZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMGY1MmI1NjBmMTk2MjNlYzY1MWY5YjliNDA0MDVkMTM4ZWMyNTFkMwpBdXRob3I6IEhvYW4gSG9hbmcgPGhuaG9hbkBpLXN5c3QuY29tPgpEYXRlOglTdW4gSmFuIDE4IDIyOjQ0OjE3IDIwMDkgLTA1MDAKCiAgICBCbGFja2ZpbjogaWJmLWRzcDU2MTogbmV3IGJvYXJkIHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBIb2FuIEhvYW5nIDxobmhvYW5AaS1zeXN0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAzMDg4MTg5YTE1ZDIxOWM0OGZkN2U3MTYyM2NhNGRhYTA4YjgwYjU5CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gT2N0IDEyIDIzOjI4OjMzIDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogYmxhY2tzdGFtcDogbmV3IGJvYXJkIHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNTlhYzk3Mjk3MDBkYjFkNDQ0NmMxYTZkYjNmZmUzODM5OGI3YWJiMgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU3VuIE9jdCAxMiAyMzoyMjoyNSAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGJmNTM3LXNydjE6IG5ldyBib2FyZCBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGQ3ZmRjMTQxMGI1ZmE1ZWY2MjNiMzVhMjgzNzMzYjZiY2VlMzc1M2IKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVN1biBPY3QgMTIgMjM6MTY6NTIgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBiZjUzNy1taW5vdGF1cjogbmV3IGJvYXJkIHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgY2I0YjVlODc0ZjNjOWI4ODJhNmY0Mzk0YmJlYmJiZDkxZmQwMWJiZgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU3VuIE9jdCAxMiAyMzowODowMyAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGJmNTM3LXBuYXY6IG5ldyBib2FyZCBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDU5ZTRiZTk0NWI2NDY5ZTMxZWVlNzIxZTBiY2RjY2Y0OTQwZDc1YWMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVN1biBPY3QgMTIgMjE6NTU6NDUgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBjbS1iZjUyNzogbmV3IGJvYXJkIHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgOGIyMTljZjA3YzE4NmNjOWQ5NzM1NGNmNGIxNGYyNGE1M2QxOTNjNQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU3VuIE9jdCAxMiAyMTo1NDowNyAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGNtLWJmNTQ4OiBuZXcgYm9hcmQgcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA5NDE3ZDlhMjEzODQyNzkzMDhhYmU1YjRkZDhkZmQ0MTg3NDI0ODRjCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gT2N0IDEyIDIxOjQ5OjI4IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogdGNtLWJmNTM3OiBuZXcgYm9hcmQgcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBlNTQ4MzIxYWYwMGU4NjlhZjcxOTQ4OTY1NzZiZWI5YjY4NDU3ZmY3CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gT2N0IDEyIDIxOjQ1OjA1IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogY20tYmY1NjE6IG5ldyBib2FyZCBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDhhOWJhYjA4YTZmZTkzZTVmM2JmNTdiOTA0MzhmMWQyYTY3ZmFkM2MKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVN1biBPY3QgMTIgMjE6NDE6MDYgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBjbS1iZjUzN2U6IG5ldyBib2FyZCBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGU4MmQ4YTFmMDI4YmVkYjEyYzRhYjg4YTM1YTkzNTAxMGQ5Mjg5OGMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVN1biBPY3QgMTIgMjE6MzY6MjIgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBjbS1iZjUzMzogbmV3IGJvYXJkIHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZGQxNGFmNzY0MGY3ZDQ4ZDhlOTc2OGVlZWIwOTU5MmU2Zjk0ZWQzOApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IE5vdiAyNyAxNjo1MDozMiAyMDA4IC0wNTAwCgogICAgQmxhY2tmaW46IG5ldyBzcGlib290bGRyIGNvbW1hbmQKCiAgICBOZXdlciBCbGFja2ZpbiBwYXJ0cyBjYW4gYW4gb24tY2hpcCBST00gdGhhdCBjYW4gYm9vdCBMRFJzIG92ZXIgU1BJIGZsYXNoZXMsCiAgICBzbyBhZGQgYSBuZXcgJ3NwaWJvb3RsZHInIGNvbW1hbmQgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDY3YzI4MjliNjQ2YmI1Yjg1OTA4OGIzNmZiYzg5ZTk3MWI5YzE5NjAKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBPY3QgNiAwNDo0MjozMyAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IHN1cHBvcnQgZW1iZWRkaW5nIHRoZSBlbnZpcm9ubWVudCBpbnRvIGxvYWRlciBmaWxlcyAoTERScykKCiAgICBGb3IgdGhlIG1vc3QgcGFydCwgdGhlIEJsYWNrZmluIHByb2Nlc3NvciBib290cyBmaWxlcyBpbiB0aGUgTERSIGZvcm1hdAogICAgcmF0aGVyIHRoYW4gYmluYXJ5L0VMRiBmaWxlcy4gIFNvIHdlIHdhbnQgdG8gZXhwb3J0IHRoZSBlbnZpcm9ubWVudCBhcyBhCiAgICByYXcgYmxvYiB0byB0aGUgTERSIHV0aWxpdHkgc28gaXQgY2FuIGVtYmVkIGl0IGF0IHRoZSByaWdodCBsb2NhdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMzFmMzBjOWViNjBkOWFiMGJkNzAyZTMxZjY2MzQ1Zjk5YjM0YmRjNgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU3VuIEp1biAxNCAxMTowMzo0OCAyMDA5IC0wNDAwCgogICAgYWRkICUuYy0+JS5pIGFuZCAlLmMtPiUucyBydWxlcwoKICAgIFRoZSBMaW51eCBrZXJuZWwgaGFzIHNvbWUgaGVscGVyIHJ1bGVzIHdoaWNoIGFsbG93IHlvdSB0byBxdWlja2x5IHByb2R1Y2UKICAgIHNvbWUgb2YgdGhlIGludGVybWVkaWFyeSBmaWxlcyBmcm9tIEMgc291cmNlLiAgU3BlY2lmaWNhbGx5LCB5b3UgY2FuCiAgICBjcmVhdGUgLmkgZmlsZXMgd2hpY2ggaXMgdGhlIHByZXByb2Nlc3NlZCBvdXRwdXQgYW5kIHlvdSBjYW4gY3JlYXRlIC5zCiAgICBmaWxlcyB3aGljaCBpcyB0aGUgYXNzZW1ibGVyIG91dHB1dC4gIFRoaXMgaXMgdXNlZnVsIHdoZW4geW91IGFyZSB0cnlpbmcKICAgIHRvIHRyYWNrIGRvd24gaGVhZGVyL21hY3JvIGV4cGFuc2lvbiBlcnJvcnMgb3IgaW5saW5lIGFzc2VtYmx5IGVycm9ycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBBY2tlZC1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA2ZDFjZTM4Nzg3NGMxMDYwZjI3NjU2ZjcwMTUxYTUyYzUxMWNkMGUzCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgTWF5IDMwIDAxOjAyOjAzIDIwMDkgLTA0MDAKCiAgICBtYWtlIHN1cmUgdG9wbGV2ZWwgJChTVUJESVJTKSBpcyBhbHdheXMgZGVjbGFyZWQKCiAgICBUaGUgJChTVUJESVJTKSB2YXJpYWJsZSBpcyBvbmx5IGRlY2xhcmVkIHdoZW4gVS1Cb290IGhhcyBiZWVuIGNvbmZpZ3VyZWQsCiAgICBidXQgaXQgZ2V0cyB1c2VkIGFsbCB0aGUgdGltZS4gIEluIHRoZSBub24tY29uZmlndXJlZCBjYXNlLCBpdCBpcyB1c2VkIHRvCiAgICBnZW5lcmF0ZSBhIGhlbHBmdWwgZXJyb3IgbWVzc2FnZSwgYnV0IGl0IG5lZWRzIHRvIGJlIHNldCBwcm9wZXJseSBmb3IgdGhhdAogICAgdG8gb2NjdXIuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDEyNjAyMzM5ODJmN2RmYmRmZDFhZGVlMTJkYWE5NWEwYzBlODRhNDMKQXV0aG9yOiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KRGF0ZToJRnJpIEp1biAxMiAxMTozMzo1NSAyMDA5ICswMjAwCgogICAgZGlnc3kgbXRjOiBBZGQgZGVzY3JpcHRpb24gdG8gR1BJTyBpbml0aWFsIGNvbmZpZ3VyYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+Cgpjb21taXQgMTIzMDQ4NzFiYzc4MzkxNDVmMmI0MjM4OTIzZTkwMjM2MTZkNzM5OQpBdXRob3I6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgpEYXRlOglGcmkgSnVuIDEyIDExOjMzOjU0IDIwMDkgKzAyMDAKCiAgICBkaWdzeSBNVEM6IEFkZCAnbXRjJyBjb21tYW5kLgoKICAgIE5ldyBjb21tYW5kIGFsbG93cyB0bzoKCSBvIGNoZWNrIEZXIHZlcnNpb24KCSBvIHNldCBMRUQgc3RhdHVzCgkgbyBzZXQgZGlnaXRhbCBvdXRwdXQgc3RhdHVzCgkgbyBnZXQgZGlnaXRhbCBpbnB1dCBzdGF0dXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KCmNvbW1pdCBmMWY2NmVkZmM3NmY0YTlmNWI5ZjYzOTcyZDkwMzA5Nzg0YThjYWU1CkF1dGhvcjogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBKdW4gMTIgMTE6MzM6NTMgMjAwOSArMDIwMAoKICAgIGRpZ3N5IE1UQzogQWRkIFNQSSBzdXBwb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDYzMjViNzc4MGRhZDhiZTI2YmE2ZmMyNWVmODhiYTMzOGM1MDIwNWIKQXV0aG9yOiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KRGF0ZToJRnJpIEp1biAxMiAxMTozMzo1MiAyMDA5ICswMjAwCgogICAgbXBjNTJ4eDogQWRkIFNQSSBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+Cgpjb21taXQgNWVjNTUyOWI4MmYzMTRjYTJjZjljMjYyY2RmYzk4NWQ1ZmM0NjhhMApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU3VuIEp1biAxNCAwOTozMzowMCAyMDA5IC0wNDAwCgogICAgYWxsb3cgYm9hcmRzIHRvIGN1c3RvbWl6ZSBjb21waWxlciBvcHRpb25zIG9uIGEgcGVyLWZpbGUvZGlyIGJhc2lzCgogICAgV2l0aCBvdXIgQmxhY2tmaW4gYm9hcmRzLCB3ZSBsaWtlIHRvIGJ1aWxkIHRoZSBjb21wcmVzc2lvbiByb3V0aW5lcyB3aXRoCiAgICAtTzIgYXMgb3VyIHRlc3RzIHNob3cgYSBwcmV0dHkgZ29vZCBzaXplL3NwZWVkIHRyYWRlb2ZmLiAgRm9yIHRoZSByZXN0IG9mCiAgICBVLUJvb3QgdGhvdWdoLCB3ZSB3YW50IHRvIHN0aWNrIHdpdGggdGhlIGRlZmF1bHQgLU9zIGFzIHRoYXQgaXMgbW9zdGx5CiAgICBjb250cm9sIGNvZGUuICBTbyBpbiBvdXIgY2FzZSwgd2Ugd291bGQgYWRkIGEgbGluZSBsaWtlIHNvIHRvIHRoZSBib2FyZAogICAgc3BlY2lmaWMgY29uZmlnLm1rIGZpbGU6CglDRkxBR1NfbGliX2dlbmVyaWMgKz0gLU8yCgogICAgTm93IGFsbCBmaWxlcyB1bmRlciBsaWJfZ2VuZXJpYy8gd2lsbCBoYXZlIC1PMiBhcHBlbmRlZCB0byB0aGVpciBidWlsZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBBY2tlZC1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA2YjFmNzhhZTZhZDAzNzM4MmFkNDMwYjA3MDY0MTA1Yzg4ZjdhYzAyCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEp1biAxNCAyMTozMDozOSAyMDA5ICswMjAwCgogICAgUHJlcGFyZSB2MjAwOS4wNgoKICAgIFVwZGF0ZSBDSEFOR0VMT0csIGZpeCBtaW5vciBjb2Rpbmcgc3R5bGtlIGlzc3VlLiBVcGRhdGUgTWFrZWZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjMzE0N2MxNzYyZjhjYWY5OTY0OTA1MTExNmEyNDExYmRmODg3YzEwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEp1biAxNCAyMDozMTozNiAyMDA5ICswMjAwCgogICAgUmV2ZXJ0ICJTTUM5MTF4IGRyaXZlciBmaXhlZCBmb3IgTkZTIGJvb3QiCgogICAgVGhpcyByZXZlcnRzIGNvbW1pdCBjYTljOGExZTEwZmFjMDFlNmExMTI5ZjgyYTdjZTE4YmQ4MThmYTQzLAogICAgd2hpY2ggY2F1c2VzIGNvbXBpbGUgd2FybmluZ3MgKCJsYXJnZSBpbnRlZ2VyIGltcGxpY2l0bHkgdHJ1bmNhdGVkCiAgICB0byB1bnNpZ25lZCB0eXBlIikgb24gYWxsIHN5c3RlbXMgdGhhdCB1c2UgdGhpcyBkcml2ZXIuIFRoZSB3YXJuaW5nCiAgICByZXN1bHRzIGZyb20gcGFzc2luZyBsb25nIGNvbnN0YW50cyAoVFhfQ0ZHLCBSWF9DRkcpIGludG8KICAgIHNtYzkxMXhfc2V0X21hY19jc3IoKSB3aGljaCBpcyBkZWNsYXJlZCB0byBhY2NlcHQgInVuc2lnbmVkCiAgICBjaGFyYWN0ZXIiIGFyZ3VtZW50cyBvbmx5LgoKICAgIEJlaW5nIGNsb3NlIHRvIGEgcmVsZWFzZSwgd2l0aCBub2JvZHkgYXZhaWxhYmxlIHRvIGFjdHVhbGx5IHRlc3QgdGhlCiAgICBjb2RlIG9yIHRoZSBzdWdnZXN0ZWQgZml4ZXMsIGl0IHNlZW1zIGJldHRlciB0byByZXZlcnQgdGhlIHBhdGNoLgoKY29tbWl0IDM4ODUxN2U0Yjc0NWIwMDI1NmMyZmEyMDFjZTdiY2NiNjdiNGYyNDUKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglGcmkgTWF5IDIyIDEwOjI2OjM3IDIwMDkgLTA1MDAKCiAgICB4ZXM6IFVwZGF0ZSBGcmVlc2NhbGUgY2xvY2sgY29kZSB0byB3b3JrIHdpdGggODZ4eCBwcm9jZXNzb3JzCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMjU2MjM5MzdiYjgxY2FlNzg4ZDc2N2U2YzU5YTExYzk2ZmM4Mjg2NgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBNYXkgMjIgMTA6MjY6MzYgMjAwOSAtMDUwMAoKICAgIHhlczogVXBkYXRlIEZyZWVzY2FsZSBERFIgY29kZSB0byB3b3JrIHdpdGggODZ4eCBwcm9jZXNzb3JzCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYmVmMzAxMzkwOGJiYzY4ZjI0MDg0MTc0YTNjYTg2Y2MyYTNlYjk4NgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBNYXkgMjIgMTA6MjY6MzUgMjAwOSAtMDUwMAoKICAgIHhlczogVXBkYXRlIEZyZWVzY2FsZSBQQ0kgY29kZSB0byB3b3JrIHdpdGggODZ4eCBwcm9jZXNzb3JzCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNjQ0MmI3MWI1MjJmYWNlNzc1YzFjMzFiZDQzMTIxZGIzYjRiZjdkNgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBNYXkgMjIgMTA6MjY6MzIgMjAwOSAtMDUwMAoKICAgIDg1eHg6IEFkZCBQT1JCTVNSIGFuZCBQT1JERVZTUiBzaGlmdCBkZWZpbmVzCgogICAgQWRkIGRlZmluZXMgc2ltaWxhciB0byB0aG9zZSBhbHJlYWR5IHVzZWQgZm9yIHRoZSB0aGUgODZ4eCBhcmNoaXRlY3R1cmUuCiAgICBUaGlzIHdpbGwgZWFzZSBzaGFyaW5nIG9mIFBDSSBjb2RlIGJldHdlZW4gdGhlIDg1eHggYW5kIDg2eHgKICAgIGFyY2hpdGVjdHVyZXMuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMmYyMWNlNGQ1NDZkMzEyODlhYzQ5YTY4MGY3OGJjYzlhNzkyYzZlYwpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVRodSBNYXkgMjEgMTI6MTA6MDAgMjAwOSAtMDUwMAoKICAgIGZzbC84NXh4LCA4Nnh4OiBTeW5jIHVwIERNQSBjb2RlCgogICAgVGhlIGZvbGxvd2luZyBjaGFuZ2VzIHdlcmUgbWFkZSB0byBzeW5jIHVwIHRoZSBETUEgY29kZSBiZXR3ZWVuIHRoZSA4NXh4CiAgICBhbmQgODZ4eCBhcmNoaXRlY3R1cmVzIHdoaWNoIHdpbGwgbWFrZSBpdCBlYXNpZXIgdG8gYnJlYWsgb3V0IGNvbW1vbgogICAgOHh4eCBETUEgY29kZToKCiAgICA4NXh4OgogICAgLSBEb24ndCBzZXQgU1RSQU5TSU5UIGFuZCBTUENJT1JERVIgZmllbGRzIGluIFNBVFIgcmVnaXN0ZXIuICBUaGVzZSBiaXRzCiAgICAgIG9ubHkgaGF2ZSBhbiBhZmZlY3Qgd2hlbiB0aGUgU0JQQVRNVSBiaXQgaXMgc2V0LgogICAgLSBXcml0ZSAweGZmZmZmZmZmIGluc3RlYWQgb2YgMHhmZmZmZmZmIHRvIGNsZWFyIGVycm9ycyBpbiB0aGUgRE1BCiAgICAgIHN0YXR1cyByZWdpc3Rlci4JV2UgbWF5IGFzIHdlbGwgY2xlYXIgYWxsIDMyIGJpdHMgb2YgdGhlIHJlZ2lzdGVyLi4uCgogICAgODZ4eDoKICAgIC0gQWRkIENPTkZJR19TWVNfTVBDODZ4eF9ETUFfQUREUiBkZWZpbmUgdG8gYWRkcmVzcyBETUEgcmVnaXN0ZXJzCiAgICAtIEFkZCBjbGVhcmluZyBvZiBlcnJvcnMgaW4gdGhlIERNQSBzdGF0dXMgcmVnaXN0ZXIgd2hlbiBpbml0aWFsaXppbmcKICAgICAgdGhlIGNvbnRyb2xsZXIKICAgIC0gQ2xlYXIgdGhlIGNoYW5uZWwgc3RhcnQgYml0IGluIHRoZSBETUEgbW9kZSByZWdpc3RlciBhZnRlciBhIHRyYW5zZmVyCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYjFmMTI2NTBkMzMyZWFkYWMxMzA2YTc3MmNhYjYwOTZhYmVlNmRkZApBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVRodSBNYXkgMjEgMTI6MDk6NTkgMjAwOSAtMDUwMAoKICAgIGZzbDogQ3JlYXRlIGNvbW1vbiBmc2xfZG1hLmggZm9yIDg1eHggYW5kIDg2eHggY3B1cwoKICAgIEJyZWFrIG91dCBETUEgc3RydWN0dXJlcyBmb3IgdGhlIEZyZWVzY2FsZSBNUEM4NXh4IGFuZCBNUEM4Nnh4IGNwdXMgdG8KICAgIHJlZHVjZSBhIGxhcmdlIGFtb3VudCBvZiBjb2RlIGR1cGxpY2F0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgM2JkOGU1MzJiNWRlMjA2NDdhZWFmZjk0YTFjYmYzM2ZiOGI4OTdiOQpBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXkgMjAgMTI6MzA6NDEgMjAwOSAtMDQwMAoKICAgIDg1eHg6IEFkZCBVRUM2IGFuZCBVRUM4IGF0IFNHTUlJIG1vZGUgZm9yIE1QQzg1NjlNRFMKCiAgICBPbiBNUEM4NTY5TURTIGJvYXJkLCBVQ0M2IGFuZCBVQ0M4IGNhbiBiZSBjb25maWd1cmVkIHRvIHdvcmsgYXQgU0dNSUkgbW9kZSB2aWEKICAgIFVFTSBvbiBQQiBib2FyZC4gU2luY2UgTVBDODU2OSBzdXBwb3J0cyB1cCB0byA0IEdpZ2FiaXQgRXRoZXJuZXQgcG9ydHMsIHdlCiAgICBkaXNhYmxlIFVFQzYgYW5kIFVFQzggYnkgZGVmYXVsdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBlOGVmZWY3YzFiNDU3NDQyNTgzYThiOWQzOGQ4YTViNjY3NjYxNjE2CkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1biA0IDE2OjEyOjQyIDIwMDkgLTA0MDAKCiAgICBkcml2ZXJzL3FlOiBhZGQgc2dtaWkgc3VwcG9ydCBpbiBmb3IgVUVDIGRyaXZlcgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDhlNTUyNThmMTQ0NzY0ZGU4OTAyZTlmMDc4YTdhZDRjNmMwMjJjMmYKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVuIDQgMTY6MTI6NDEgMjAwOSAtMDQwMAoKICAgIHFlOiBQYXNzIGluIHVlY19pbmZvIHN0cnVjdCB0aHJvdWdoIHVlY19pbml0aWFsaXplCgogICAgVGhlIHVlYyBkcml2ZXIgY29udGFpbnMgY29kZSB0byBoYXJkIGNvZGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHVlYwogICAgZXRoZXJuZXQgY29udHJvbGxlcnMuIFRoaXMgcGF0Y2ggY3JlYXRlcyBhbiBhcnJheSBvZiB1ZWNfaW5mbyBzdHJ1Y3R1cmVzLCB3aGljaAogICAgYXJlIHRoZW4gcGFyc2VkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGRyaXZlciBpbnN0YW5jZSB0byBkZXRlcm1pbmUgY29uZmlndXJhdGlvbi4KICAgIEl0IGFsc28gY3JlYXRlcyBmdW5jdGlvbiB1ZWNfc3RhbmRhcmRfaW5pdCgpIHRvIGluaXRpYWxpemUgYWxsIFVFQyBpbnRlcmZhY2VzCiAgICBmb3IgODN4eCBhbmQgODV4eC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA5YTYxMTA4OTdmYzkyODJhZGU1OThiYmJhNzBhZDcyYjk0MDQzNmUzCkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1biA0IDE2OjEyOjQwIDIwMDkgLTA0MDAKCiAgICBmc2w6IFVwZGF0ZSB0aGUgbnVtYmVyIG9mIGV0aHhhZGRyIGluIHJlYWRpbmcgc3lzdGVtIGVlcHJvbQoKICAgIFdlIHN1cHBvcnQgdXAgdG8gOCBtYWMgYWRkcmVzc2VzIGluIHN5c3RlbSBlZXByb20sIHNvIHdlIGRlZmluZSB0aGUgbWFjcm8KICAgIE1BWF9OVU1fUE9SVFMgdG8gbGltaXQgdGhlIG1hY19jb3VudCB0byA4LCBhbmQgdXBkYXRlIHRoZSBudW1iZXIgb2YgZXRoeGFkZHIKICAgIGFjY29yZGluZyB0byBtYWNfY291bnQuCgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZjgyMTA3ZjYzN2YxNjdhNzc4MDNjMDkzM2Y5YjI0NzQxYTkxYzcxMQpBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXkgMjAgMTI6MzA6MzcgMjAwOSAtMDQwMAoKICAgIDg1eHg6IEFkZCBSTUlJIHN1cHBvcnQgZm9yIE1QQzg1NjlNRFMKCiAgICBUaGlzIHBhdGNoIHN1cHBvcnRzIFVDQyB3b3JraW5nIGF0IFJNSUkgbW9kZSBvbiBQSUIgYm9hcmQsIGZpeHVwIGZkdCBibG9iIHRvCiAgICBzdXBwb3J0IHJtaWkgaW4ga2VybmVsLiBJdCBhbHNvIGNoYW5nZXMgdGhlIG5hbWUgb2YgZW5hYmxlX21wYzg1NjltZHNfcWVfbWRpbyB0bwogICAgZW5hbGJlX21wYzg1NjltZHNfcWVfdWVjIHdoaWNoIGlzICBtb3JlIGFjY3VyYXRlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDc1MDA5OGQzM2JjMzYyYWM0MjYzODYzZTkyZGExNThjZjAxMTA2M2YKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTWF5IDIwIDEyOjMwOjM2IDIwMDkgLTA0MDAKCiAgICA4NXh4OiBBZGQgVUVDMyBhbmQgVUVDNCBzdXBwb3J0IGZvciBNUEM4NTY5TURTCgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNGU3YjI1ZTRmZTc3N2Y1MjVlNDI2Y2JkNThjM2EzOTc2YzU2NGYyZQpBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXkgMjAgMTI6MzA6MzUgMjAwOSAtMDQwMAoKICAgIGRyaXZlcnMvcWU6IEFkZCBtb3JlIFNOVU0gbnVtYmVyIGZvciBRRQoKICAgIFNvbWUgUUUgY2hpcHMgbGlrZSA4NTY5IG5lZWQgbW9yZSBTTlVNIG51bWJlcnMgZm9yIHN1cHBvcnRpbmcgNCBVRUNzIGluIFJHTUlJLQogICAgMTAwMCBtb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNzIxMWZiZmExOGYzMDYxODU4Njk2MTUwZWU2ZTllMDkzZDllY2VhZQpBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBNYXkgMjEgMTU6MzQ6MTQgMjAwOSAtMDQwMAoKICAgIGRyaXZlcnMvcWU6IENoYW5nZSBRRSBSSVNDIEFMTE9DQVRJT04gdG8gc3VwcG9ydCA0IFJJU0NzCgogICAgQWxzbyBkZWZpbmUgdGhlIFFFX1JJU0NfQUxMT0NBVElPTl9SSVNDcyB0byBNQUNST3MgaW5zdGVhZCBvZiB1c2luZyBlbnVtLCBhbmQKICAgIGRlZmluZSBNQVhfUUVfUklTQyBmb3IgUUUgYmFzZWQgc2lsaWNvbnMuCgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBiM2Q3ZjIwZjQzYTBmOGQxMWM2NWUyZjkyMTUzYjU1MTJiMTE1ODBjCkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE1heSAyMCAxMjozMDoyOSAyMDA5IC0wNDAwCgogICAgODV4eDogQWRkIFFFIGNsayBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBUaW11ciBUYWJpIDxUaW11ckBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA3MWIzNThjYzI2NzkyODg5YmJhYzM1MDU0ZDhlODlkNTliM2ZhYmM0CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIE1heSAyMCAwMToxMTozMyAyMDA5IC0wNTAwCgogICAgODV4eDogQWRkZWQgTVBDODUzNS9FIGlkZW50aWZpZXJzCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAyMjQxOWQ3Nzk3NmJiZDBkZjlmY2Y0NTUxM2YxYjk2YmQ3M2U1MGQxCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IE1heSAyMSAwODozNjo0MyAyMDA5IC0wNTAwCgogICAgODV4eDogQWx3YXlzIGF0dGVtcHQgZXRoZXJuZXQgZGV2aWNlIHRyZWUgZml4dXAKCiAgICBJdHMgcmVhc29uYWJsZSB0aGF0IHdlIG1heSBoYXZlIGV0aGVybmV0IGRldmljZXMgYnV0IGRvbnQgaGF2ZSBkcml2ZXJzCiAgICBvciBzdXBwb3J0IGVuYWJsZWQgZm9yIHRoZW0gaW4gdS1ib290IGFuZCB3YW50IHRoZSBkZXZpY2UgdHJlZSBmaXhlZCB1cC4KICAgIFVuY29uZGl0aW9uYWxseSBjYWxsaW5nIHRoZSBldGhlcm5ldCBmaXh1cCBpcyBmaW5lIHNpbmNlIGlmIHdlIGRvbnQgaGF2ZQogICAgZXRoZXJuZXQgbm9kZXMgdGhhdCBtYXRjaCAob3IgYWxpYXNlcykgd2Ugd2lsbCBub3QgYXR0ZW1wdCB0byBkbwogICAgYW55dGhpbmcuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIEFja2VkLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDUyZDZhZDVlY2ZiMjI5Mzg0NDFjOGUzZTYyOTM1ZmJkN2IwZjA5MjAKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTWF5IDIxIDE1OjMyOjEzIDIwMDkgLTA0MDAKCiAgICBkcml2ZXJzL3FlOiBSZW5hbWUgdGhlIGNhbWVsLWNhc2UgaWRlbnRpZmllcnMgaW4gdWVjCgogICAgUmVuYW1lIHJpc2NSeC9yaXNjVHggdG8gcmlzY19yeC9yaXNjX3R4IHRvIGNvbXBseSB3aXRoIENvZGluZ3N0eWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZmViNzgzOGY5NzllYzJiNTgxZGYzYzc5MWI5YWUzMjg0YzM2YmI0NwpBdXRob3I6IFNyaWthbnRoIFNyaW5pdmFzYW4gPHNyaWthbnRoLnNyaW5pdmFzYW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEFwciAzIDE1OjM2OjEzIDIwMDkgLTA1MDAKCiAgICA4NXh4OiBBZGQgUDIwMjBEUyBzdXBwb3J0CgogICAgVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgUDIwMjBEUyByZWZlcmVuY2UgcGxhdGZvcm0uCiAgICBERFIzIGludGVyZmFjZSB1c2VzIGhhcmQtY29kZWQgaW5pdGlhbGl6YXRpb24gcmF0aGVyIHRoYW4gU1BECiAgICBmb3Igbm93IGFuZCB3YXMgdGVzdGVkIGF0IDY2N01oei4gU29tZSBQSVhJUyByZWdpc3RlcgogICAgZGVmaW5pdGlvbnMgYW5kIGFzc29jaWF0ZWQgY29kZSBzZWN0aW9ucyBuZWVkIHRvIGJlIGZpeGVkLgogICAgVFNFQzEvMi8zLCBOT1IgZmxhc2gsIE1BQy9TWVMgSUQgRUVQUk9NLCBQQ0lFMS8yLzMgYXJlIGFsbAogICAgdGVzdGVkIHVuZGVyIHUtYm9vdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTcmlrYW50aCBTcmluaXZhc2FuIDxzcmlrYW50aC5zcmluaXZhc2FuQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBUcmF2aXMgV2hlYXRsZXkgPFRyYXZpcy5XaGVhdGxleUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAyMjk1NDlhNTZkOWFlNDEzYzAwZjY0ZmQ3YzcyOGM2ODc5YTFiNTRiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgSnVuIDkgMTY6NTc6NDcgMjAwOSArMDIwMAoKICAgIG1wYzUxMng6IE1QQzUxMjFBRFM6IEFkZCBOQU5EIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZHMgTkFORCBzdXBwb3J0IHRvIHRoZSBNUEM1MTIxQURTIGJvYXJkLiBQbGVhc2UKICAgIG5vdGUgdGhhdCB0aGUgaW1hZ2Ugc2l6ZSBpbmNyZWFzZWQgc2luY2UgTkFORCBzdXBwb3J0IGRpZG4ndAogICAgZml0IGluIHRoZSBjdXJyZW50IGltYWdlIHNpemUgKDI1NmspLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBDYzogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAzNWYyZWRiYjZjYWQwNDNjY2Q1ZWE2ZTc4ZmU5YjdhYTIxZDgzOTVmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgSnVuIDkgMTY6NTc6MDMgMjAwOSArMDIwMAoKICAgIG5hbmQvbXBjNTEyeDogQWRkIE1QQzUxMnggTkFORCBzdXBwb3J0IChORkMpCgogICAgVGhpcyBwYXRjaCBhZGRzIE5BTkQgRmxhc2ggQ29udHJvbGxlciBkcml2ZXIgZm9yIE1QQzUxMjEgcmV2aXNpb24gMi4KICAgIEFsbCBkZXZpY2UgZmVhdHVyZXMsIGV4Y2VwdCBoYXJkd2FyZSBFQ0MgYW5kIHBvd2VyIG1hbmFnZW1lbnQsIGFyZQogICAgc3VwcG9ydGVkLgoKICAgIFRoaXMgTkZDIGRyaXZlciByZXBsYWNlcyB0aGUgb25lIG9yaWduYWxseSBwb3N0ZWQgYnkgSm9obiBSaWdieToKCiAgICAiW1BBVENIXSBGcmVlc2NhbGUgTkZDIE5BTkQgZHJpdmVyIgoKICAgIEl0J3MgYSBwb3J0IG9mIHRoZSBMaW51eCBkcml2ZXIgdmVyc2lvbiBwb3N0ZWQgYnkgUGlvdHIgWmllY2lrIGEgZmV3CiAgICB3ZWVrcyBhZ28uIFVzaW5nIHRoaXMgZHJpdmVyIGhhcyB0aGUgZm9sbG93aW5nIGFkdmFudGFnZXMgKGZyb20gbXkKICAgIHBvaW50IG9mIHZpZXcpOgoKICAgIC0gQ29tcGF0aWJpbGl0eSB3aXRoIHRoZSBMaW51eCBOQU5EIGRyaXZlciAoZS5nLiBFQ0MgdXNhZ2UpCiAgICAtIEJldHRlciBjb2RlIHF1YWxpdHkgaW4gZ2VuZXJhbAogICAgLSBSZXN1bHRpbmcgVS1Cb290IGltYWdlIGlzIGEgYml0IHNtYWxsZXIgKGFwcHJveC4gM2spCiAgICAtIEJldHRlciB0byBzeW5jIHdpdGggbmV3ZXIgTGludXggZHJpdmVyIHZlcnNpb25zCgogICAgVGhlIG9ubHkgZGlzYWR2YW50YWdlIEkgY2FuIHNlZSwgaXMgdGhhdCBIVy1FQ0MgaXMgbm90IHN1cHBvcnRlZCByaWdodAogICAgbm93LiBCdXQgdGhpcyBjb3VsZCBiZSBhZGRlZCBsYXRlciAoZS5nLiBwb3J0IGZyb20gTGludXggZHJpdmVyIGFmdGVyCiAgICBpdCdzIHN1cHBvcnRlZCB0aGVyZSkuIFVzaW5nIEhXLUVDQyBvbiB0aGUgTUNQNTEyMSBORkMgaGFzIGEgZ2VuZXJhbAogICAgcHJvYmxlbSBiZWNhdXNlIG9mIHRoZSBFQ0MgdXNhZ2UgaW4gdGhlIHNwYXJlIGFyZWEuIFRoaXMgY29sbGlkZXMgd2l0aAogICAgSkZGUzIgZm9yIGV4YW1wbGUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQ2M6IFBpb3RyIFppZWNpayA8a29zbW9Ac2VtaWhhbGYuY29tPgogICAgQ2M6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBDYzogSm9obiBSaWdieSA8amNyaWdieUBnbWFpbC5jb20+CiAgICBDYzogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZTUzYjUwN2NlZTVkOTc2OTUzMTM0YTU2NWM3MmZkMzJjOTY3ZDdkZApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEp1biA5IDExOjUwOjQwIDIwMDkgKzAyMDAKCiAgICBtcGM1MTJ4OiBBZGQgZXNkIGdtYmggbWVjcDUxMjMgYm9hcmQgc3VwcG9ydAoKICAgIE1FQ1A1MTIzIGlzIGEgTVBDNTEyMUUgYmFzZWQgbW9kdWxlIGJ5IGVzZCBnbWJoLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIENjOiBSZWluaGFyZCBBcmx0IDxyZWluaGFyZC5hcmx0QGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgNmJkNTVjYzY1ZDBjM2FhODRkNzE5NTE4MjU0ZmIzYzY1MDIzOWVkOQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEp1biA5IDExOjUwOjA1IDIwMDkgKzAyMDAKCiAgICBtY3A1MTJ4OiBBZGQgbWFjcm9zIGZvciBTQ0ZSIExQQyBkaXZpc29yIGFjY2VzcwoKICAgIFRob3MgbWFjcm9zIHdpbGwgYmUgdXNlZCBieSB0aGUgZXNkIG1lY3A1MTIzIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjNjBkYzg1MjdkYmIyYTEzMThjMDNiYzE4YmRlYmNmYmQwMTY0NTUxCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gSnVuIDggMDk6Mzg6MDcgMjAwOSArMDIwMAoKICAgIG1wYzUxMng6IEZpeCBwcm9ibGVtIHdpdGggSTJDIGFjY2VzcyBiZWZvcmUgcmVsb2NhdGlvbgoKICAgIFRoaXMgaXMgbmVlZGVkIGZvciB0aGUgdXBjb21pbmcgZXNkIE1FQ1A1MTIzIGJvYXJkIHBvcnQgd2hpY2ggdXNlcwogICAgSTJDIEVFUFJPTSBmb3IgZW52aXJvbm1lbnQgc3RvcmFnZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBDYzogUmVpbmhhcmQgQXJsdCA8cmVpbmhhcmQuYXJsdEBlc2QtZWxlY3Ryb25pY3MuY29tPgogICAgQWNrZWQtYnk6IEhlaWtvIFNjaG9jaGVyPGhzQGRlbnguZGU+Cgpjb21taXQgNThmMTA0NjBiMDVlMDkyOGQ5ODZiMTVlZGQ0ZjJlMWU5OTQwM2Y3ZQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEp1biA0IDEzOjM1OjM5IDIwMDkgKzAyMDAKCiAgICA3NHh4Xzd4eDogQ1BDSTc1MDogQWRkIENQQ0kgYWRhcHRlci90YXJnZXQgc3VwcG9ydAoKICAgIFRoZSBDUENJNzUwIGNhbiBiZSBidWlsdCBhcyBDUENJIGhvc3Qgb3IgYWRhcHRlci90YXJnZXQgYm9hcmQuIFRoaXMgcGF0Y2gKICAgIGFkZHMgc3VwcG9ydCBmb3IgcnVudGltZSBkZXRlY3Rpb24gb2YgdGhvc2UgdmFyaWFudHMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQ2M6IFJlaW5oYXJkIEFybHQgPHJlaW5oYXJkLmFybHRAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCBhZTdhMjczOWQ3YTA3MDQ0MzczNzZlMjI5YmIyMTk0MDk1MmM1NWJlCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVuIDUgMDU6NDU6NDEgMjAwOSArMDIwMAoKICAgIDc0eHhfN3h4OiBDUENJNzUwOiBFbmFibGUgYWNjZXNzIHRvIFBDSSBmdW5jdGlvbiA+IDAKCiAgICBUaGUgTWFydmVsbCBicmlkZ2UgNjQzNjAgc3VwcG9ydHMgc2VydmVyYWwgUENJIGZ1bmN0aW9ucywgbm90IG9ubHkgMC4gVGhpcwogICAgcGF0Y2ggZW5hYmxlcyBhY2Nlc3MgdG8gdGhvc2UgZnVuY3Rpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIENjOiBSZWluaGFyZCBBcmx0IDxyZWluaGFyZC5hcmx0QGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgZTViNTYzZTllYzU0YzNmNmQ3MDJjOGZhMmI3MTFiNGE2MTUwMjQzYQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEp1biA0IDEzOjM1OjM3IDIwMDkgKzAyMDAKCiAgICA3NHh4Xzd4eDogQ1BDSTc1MDogTWlub3IgY29kaW5nIHN0eWxlIGNsZWFudXAgb2YgY3BjaTc1MC5jCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQ2M6IFJlaW5oYXJkIEFybHQgPHJlaW5oYXJkLmFybHRAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCAwZTVlZjA3ZDBkOTFiZDNkODdlYmVhMDUzNGY1Mzg1NjFhYTk3NGQ1CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgSnVuIDQgMTM6MzU6MzYgMjAwOSArMDIwMAoKICAgIDc0eHhfN3h4OiBDUENJNzUwOiBBZGQgbG9hZHBjaSBjb21tYW5kCgogICAgVGhpcyBjb21tYW5kIGlzIHVzZWQgdG8gbG9hZC9ib290IGFuIE9TLWltYWdlIHdoaWNoIGlzIHRyYW5zZmVycmVkIGZyb20KICAgIHRoZSBDUENJIGhvc3QgdG8gdGhlIENQQ0kgdGFyZ2V0L2FkYXB0ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQ2M6IFJlaW5oYXJkIEFybHQgPHJlaW5oYXJkLmFybHRAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCAwYTE0ZDZiOGY0ZDIxZmY1OWE5Yjc2ODZhNDlhNzcwNjlhOWZjZDJhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgSnVuIDQgMTM6MzU6MzUgMjAwOSArMDIwMAoKICAgIDc0eHhfN3h4OiBDUENJNzUwOiBBZGQgY29tbWFuZGxpbmUgZWRpdGluZy9oaXN0b3J5CgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQ2M6IFJlaW5oYXJkIEFybHQgPHJlaW5oYXJkLmFybHRAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCA2MGNmZTg3YmQzOWU2ZjA3ZjJiOTJlYjRiZmY4MmJmZDEwNWY0NzI0CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgSnVuIDQgMTY6NTU6MzQgMjAwOSArMDIwMAoKICAgIFVCSTogQWRkIGNvbXBpbGUtdGltZSBjaGVjayBmb3IgY29ycmVjdCBtYWxsb2MgYXJlYSBjb25maWd1cmF0aW9uCgogICAgVUJJIGlzIHF1aXRlIG1lbW9yeSBncmVlZHkgYW5kIHJlcXVpcmVzIGF0IGxlYXN0IGFwcHJveC4gNTEyayBvZiBtYWxsb2MKICAgIGFyZWEuIFRoaXMgcGF0Y2ggYWRkcyBhIGNvbXBpbGUtdGltZSBjaGVjaywgc28gdGhhdCBib2FyZHMgd2lsbCBub3QKICAgIGJ1aWxkIHdpdGggbGVzcyBtZW1vcnkgcmVzZXJ2ZWQgZm9yIHRoaXMgYXJlYSAoQ09ORklHX1NZU19NQUxMT0NfTEVOKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgN2NlNjAzMWFmYzg2NzFjOGI0N2M2MTM1YjM2NzhkNDNmY2QwMjg1MgpBdXRob3I6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KRGF0ZToJTW9uIEFwciA2IDIxOjI0OjQzIDIwMDkgKzA1MzAKCiAgICBzZjogbmV3IE1hY3Jvbml4IE1YMjV4eCBTUEkgZmxhc2ggZHJpdmVyCgogICAgQWRkZWQgbWFjcm9uaXggU0YgZHJpdmVyIGZvciBNVEQgZnJhbWV3b3JrCiAgICBNWDI1TDEyODA1RCBpcyBzdXBwb3J0ZWQgYW5kIHRlc3RlZAogICAgVEJEOiBzZWN0b3IgZXJhc2UgaW1wbGVtZW50YXRpb24sIG90aGVyIGRlaXZjZXMgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAyYTZjYzU4ODY5MzA1ZjM0NmUzODllZWZkZmE5NmRlYTUxNDZjYjBjCkF1dGhvcjogVG9kb3IgSSBNb2xsb3YgPHRtb2xsb3ZAdWNzZC5lZHU+CkRhdGU6CVNhdCBBcHIgNCAwNzoxNDo0NCAyMDA5IC0wNDAwCgogICAgc2Y6IGF0bWVsOiBpbXBsZW1lbnQgcG93ZXItb2YtdHdvIHdyaXRlL2VyYXNlIGZ1bmNzCgogICAgU2lnbmVkLW9mZi1ieTogVG9kb3IgSSBNb2xsb3YgPHRtb2xsb3ZAdWNzZC5lZHU+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBDQzogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDRiYzZlYjc5YmUyYTczMTc0MjU1NzUxODQzMjRiOTRlM2I0M2ZiYzIKQXV0aG9yOiBWaXZlayBNYWhhamFuIDx2aXZlay5tYWhhamFuQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBNYXkgMjUgMTc6MjM6MTggMjAwOSArMDUzMAoKICAgIG1wYzg1eHg6IDg1MzZkczogQWRkIFVTQiByZWxhdGVkIENPTkZJR3MKCiAgICBUaGlzIHBhdGNoIGFkZHMgQ09ORklHcyBmb3IgZW5hYmxpbmcgVVNCIGluIG1wYzg1MzZkcyBhbmQgYWxzbwogICAgYWRkcyB1c2JfcGh5X3R5cGUgaW4gQ09ORklHX0VYVFJBX0VOVl9TRVRUSU5HUy4gQWxzbyByZXZhbXBzIGl0cwogICAgQ29weXJpZ2h0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFZpdmVrIE1haGFqYW4gPHZpdmVrLm1haGFqYW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IDY4MjNlOWIwMTI5MDk3N2M0ZDljOTAzODE0NTljMDFmNjZlMTJlNzkKQXV0aG9yOiBWaXZlayBNYWhhamFuIDx2aXZlay5tYWhhamFuQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBNYXkgMjUgMTc6MjM6MTcgMjAwOSArMDUzMAoKICAgIG1wYzgzeHg6IDgzMTVlcmRiOiBBZGQgVVNCIHJlbGF0ZWQgQ09ORklHcwoKICAgIFRoaXMgcGF0Y2ggYWRkcyBDT05GSUdzIGZvciBlbmFibGluZyBVU0IgaW4gbXBjODMxNWVyZGIgYW5kIGFsc28KICAgIGFkZHMgdXNiX3BoeV90eXBlIGluIENPTkZJR19FWFRSQV9FTlZfU0VUVElOR1MuIEFsc28gcmV2YW1wcyBpdHMKICAgIENvcHlyaWdodC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBWaXZlayBNYWhhamFuIDx2aXZlay5tYWhhamFuQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCBhMDdiZjE4MGVmYzNjMGRlNGE4OWEzYmQ0OWE3Yzc1ODRkZmI5NWE4CkF1dGhvcjogVml2ZWsgTWFoYWphbiA8dml2ZWsubWFoYWphbkBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTWF5IDIxIDE3OjMyOjQ4IDIwMDkgKzA1MzAKCiAgICBtcGM4NXh4OiBVU0I6IEFkZCBzdXBwb3J0CgogICAgVGhlIGZvbGxvd2luZyBwYXRjaCBhZGRzIDg1eHgtc3BlY2lmaWMgVVNCIHN1cHBvcnQgYW5kIGFsc28KICAgIHJldmFtcHMgQ29weXJpZ2h0IGluIGltbWFwXzg1eHguaAoKICAgIFNpZ25lZC1vZmYtYnk6IFZpdmVrIE1haGFqYW4gPHZpdmVrLm1haGFqYW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IDRlZjAxMDEwYWE0Nzk5Yzc1OWQ3NWU2NzAwN2ZkZDNhMzhjODhjOGEKQXV0aG9yOiBWaXZlayBNYWhhamFuIDx2aXZlay5tYWhhamFuQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBNYXkgMjUgMTc6MjM6MTYgMjAwOSArMDUzMAoKICAgIG1wYzgzeHg6IFVTQjogUmVvcmdhbml6ZWQgaXRzIHN1cHBvcnQKCiAgICBUaGUgZm9sbG93aW5nIHBhdGNoIHJlb3JnYW5pemVzL3Jld29ya3MgdGhlIFVTQiBzdXBwb3J0IGZvciBtcGM4M3h4CiAgICBhcyB1bmRlcjotCgogICAgICAqIE1vdmVzIHRoZSA4M3h4IFVTQiBjbG9jayBpbml0IGZyb20gZHJpdmVycy91c2IvaG9zdC9laGNpLWZzbC5jIHRvCgljcHUvbXB4ODN4eC9jcHVfaW5pdC5jCgogICAgICAqIEJvYXJkIHNwZWNpZmljIHVzYl9waHlfdHlwZSBpcyByZWFkIGZyb20gdGhlIGVudmlyb25tZW50CgogICAgICAqIEFkZHMgVVNCIEVIQ0kgc3BlY2lmaWMgc3RydWN0dXJlIGluIGluY2x1ZGUvdXNiL2VoY2ktZnNsLmgKCiAgICAgICogQ29weXJpZ2h0cyByZXZhbXBlZCBpbiBtb3N0IG9mIHRoZSBmb2xsb3dpbmcgZmlsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBWaXZlayBNYWhhamFuIDx2aXZlay5tYWhhamFuQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCBlZDkwZDJjODcxNThlNTExNGI2MDA5ZmE5NWJiNjQxN2U0YjI3YjNlCkF1dGhvcjogVml2ZWsgTWFoYWphbiA8dml2ZWsubWFoYWphbkBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTWF5IDIxIDE3OjMyOjI3IDIwMDkgKzA1MzAKCiAgICBtcGM4eHh4OiBVU0I6IFJlbG9jYXRlcyBlaGNpLWZzbC5oIHRvIGluY2x1ZGUvdXNiCgogICAgVGhlIGZvbGxvd2luZyBwYXRjaCBtb3ZlcyA4eHh4LXNwZWNpZmMgVVNCICNkZWZpbmVzIGZyb20KICAgIGRyaXZlcnMvdXNiL2hvc3QvZWhjaS1mc2wuaCB0byBpbmNsdWRlL3VzYi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBWaXZlayBNYWhhamFuIDx2aXZlay5tYWhhamFuQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCBjZmQzOWNkZjk0MjJkM2QyNWU5YjNjMDU4ODY1ZjRjMWY2NmYzNGRhCkF1dGhvcjogVml2ZWsgTWFoYWphbiA8dml2ZWsubWFoYWphbkBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTWF5IDIxIDE3OjMyOjE1IDIwMDkgKzA1MzAKCiAgICBtcGM4eHh4OiBVU0I6IFJlbW92ZWQgcmVlbmFibGVtZW50IG9mIGl0cyBpbnRlcmZhY2UKCiAgICBUbyBwcmVwYXJlIGZvciB0aGUgODV4eCBVU0Igc3VwcG9ydCwgd2hpY2ggcmVxdWlyZXMgaW50ZXJmYWNlIGVuYWJsZW1lbnQKICAgIG9ubHkgb25jZSBpbiAoc3BlY2lmaWVkKSBvcmRlciwgbm8gZGlmZmVyZW50IHRoYW4gaW5zdHJ1Y3Rpb25zIGZvcgogICAgZW5hYmxpbmcgdGhlIGludGVyZmFjZSB1bmRlciA4M3h4LglJdCBpcyB1bmtub3duIHdoeSB0aGUgb3JpZ2luYWwgYXV0aG9yCiAgICBlbmFibGVkIHRoZSBpbnRlcmZhY2UgdHdpY2UgKGNoZWNrZWQgZm9yIHJlZmVyZW5jZXMgaW4gZXJyYXRhLCBldGMpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFZpdmVrIE1haGFqYW4gPHZpdmVrLm1haGFqYW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IDJjNzkyMGFmYWY5NmQ5Nzc5MzA0MjAyY2Q4YTM1NWI0Zjc1NzZhODMKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglGcmkgTWF5IDIyIDE3OjIzOjI1IDIwMDkgLTA1MDAKCiAgICA4M3h4OiBSZXBsYWNlIENPTkZJR19NUEM4M1swLTldWCB3aXRoIE1QQzgzWzAtOV14CgogICAgVXNlIHRoZSBzdGFuZGFyZCBsb3dlcmNhc2UgIngiIGNhcGl0YWxpemF0aW9uIHRoYXQgb3RoZXIgRnJlZXNjYWxlCiAgICBhcmNoaXRlY3R1cmVzIHVzZSBmb3IgQ1BVIGRlZmluZXMgdG8gcHJldmVudCBjb25mdXNpb24gYW5kIGVycm9ycwoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDBmODk4NjA0OTQ1YWY0NTQzYzE1MjVmYzMzYjZiYWU2MjFhM2I4MDUKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglGcmkgTWF5IDIyIDE3OjIzOjI0IDIwMDkgLTA1MDAKCiAgICA4M3h4OiBSZXBsYWNlIENPTkZJR19NUEM4M1hYIHdpdGggQ09ORklHX01QQzgzeHgKCiAgICBVc2UgdGhlIHN0YW5kYXJkIGxvd2VyY2FzZSAieHgiIGNhcGl0YWxpemF0aW9uIHRoYXQgb3RoZXIgRnJlZXNjYWxlCiAgICBhcmNoaXRlY3R1cmVzIHVzZSBmb3IgQ1BVIGRlZmluZXMgdG8gcHJldmVudCBjb25mdXNpb24gYW5kIGVycm9ycwoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGJhNGZlYWU5MGNhNzFkZTE2ODFkNTgwOGYxN2U3MzIyNGQ4ZjAzYzQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBKdW4gMiAxNjo1MzoxNiAyMDA5ICswMjAwCgogICAgbXBjNTEyeDogVXNlIHNlcmlhbF9zZXRicmcoKSBpbiBzZXJpYWxfaW5pdCgpIHRvIG5vdCBkdXBsaWNhdGUgdGhlIGNvZGUKCiAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGR1cGxpY2F0ZWQgY29kZSBmb3IgYmF1ZHJhdGUgZ2VuZXJhdG9yIGNvbmZpZ3VyYXRpb24KICAgIGluIHRoZSBQU0Mgc2VyaWFsX2luaXQoKSBpbXBsZW1lbnRhdGlvbiBieSBjYWxsaW5nIHNlcmlhbF9zZXRicmcoKSBpbnN0ZWFkCiAgICBvZiBkdXBsaWNhdGluZyB0aGUgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYjhjMWQ2YTU0ZmY4MTk1NDg4YjY4ZTE2M2RlOGVjMzFmMTYwMzQ5NgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEp1biAyIDE2OjUzOjE1IDIwMDkgKzAyMDAKCiAgICBtcGM1MTJ4OiBGaXggUFNDIGRpdmlzb3IgY2FsY3VsYXRpb24gZm9yIGJhdWRyYXRlIHNldHRpbmcKCiAgICBUaGUgd3JvbmcgaW5wdXQgZnJlcXVlbmN5IHdhcyB1c2VkIGluIHNlcmlhbF9zZXRicmcoKS4gVGhpcyBwYXRjaCBmaXhlcwogICAgdGhpcyBieSB1c2luZyBpcHNfY2xrIGFzIGlucHV0IGZyZXF1ZW5jeSBmb3IgdGhlIFBTQyBiYXVkcmF0ZSBnZW5lcmF0b3IuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDUyNTY4YzM2NTRiMmIyNTcwMTZkNTIxNjc4MDVhZTEzMmZhYWMxNGUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgTWF5IDE2IDEwOjQ3OjQ2IDIwMDkgKzAyMDAKCiAgICBNUEM1MTJ4OiBhZGQgc3VwcG9ydCBmb3IgQVJJQSBib2FyZAoKICAgIEFSSUEgaXMgYSBNUEM1MTIxRSBiYXNlZCBDT00gRXhwcmVzcyBtb2R1bGUgYnkgRGF2ZS9ERU5YLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBDYzogSm9obiBSaWdieSA8amNyaWdieUBnbWFpbC5jb20+Cgpjb21taXQgM2I3NGU3ZWM1OGUyY2MzNTJiMGEzOTZhNjE0MDY1Y2ZlYjhkMTM4ZgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBNYXkgMTYgMTA6NDc6NDUgMjAwOSArMDIwMAoKICAgIE1QQzUxMng6IHJlbW92ZSBpbmNsdWRlL21wYzUxMnguaAoKICAgIE1vdmUgbmVlZGVkIGRlZmluaXRpb25zIChyZWdpc3RlciBkZXNjcmlwdGlvbnMgZXRjLikgZnJvbQogICAgaW5jbHVkZS9tcGM1MTJ4LmggIGludG8gIGluY2x1ZGUvYXNtLXBwYy9pbW1hcF81MTJ4LmguCgogICAgSW5zdGVhZCBvZiB1c2luZyBhICNkZWZpbmUnZCByZWdpc3RlciBvZmZzZXQsIHVzZSBhIGZ1bmN0aW9uIHRoYXQKICAgIHByb3ZpZGVzIHRoZSBQQVRBIGNvbnRyb2xsZXIncyBiYXNlIGFkZHJlc3MuCgogICAgQWxsIHRoZSByZXN0IG9mIGluY2x1ZGUvbXBjNTEyeC5oIGFyZSByZWdpc3RlciBvZmZzZXQgZGVmaW5pdGlvbnMKICAgIHdoaWNoIGNhbiBiZSBlbGltaW5hdGVkIGJ5IHByb3BlciB1c2Ugb2YgQyBzdHJ1Y3R1cmVzLgoKICAgIFRoZXJlIGFyZSBvbmx5IGEgZmV3IHJlZ2lzdGVyIG9mZnNldHMgcmVtYWluaW5nIHRoYXQgYXJlIG5lZWRlZCBpbgogICAgY3B1L21wYzUxMngvc3RhcnQuUzsgZm9yIHRoZXNlIHdlIHByb3ZpZGUgY3B1L21wYzUxMngvYXNtLW9mZnNldHMuaAogICAgd2hpY2ggaXMgaW50ZW5kZWQgYXMgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCBvbmx5LiBJbiBhIGxhdGVyIHBhdGNoCiAgICB0aGlzIGZpbGUgd2lsbCBiZSByZW1vdmVkLCB0b28sIGFuZCB0aGVuIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGhlCiAgICByZXNwZWN0aXZlIEMgc3RydWN0cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgQ2M6IEpvaG4gUmlnYnkgPGpjcmlnYnlAZ21haWwuY29tPgoKY29tbWl0IGE5MjdlNDkxYjJhMzI2YzFlOWM0MzEzZTNjZTQwNDI5ODg0MjI2OTcKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgTWF5IDE2IDEwOjQ3OjQ0IDIwMDkgKzAyMDAKCiAgICBNUEM1MTJ4IEZFQzogZ2V0IHJpZCBvZiBkdXBsaWNhdGVkIHN0cnVjdCBldGhlcm5ldF9yZWdzCgogICAgVXNlIGV4aXN0aW5nIHN0cnVjdCBmZWM1MTJ4IGluc3RlYWQuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIENjOiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KICAgIEFja2VkLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDg0M2VmYjExOTJjYzhmZDRmOTA0YTIzZGJhYjRlMGZlM2UxYzViYzIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgTWF5IDE2IDEwOjQ3OjQzIDIwMDkgKzAyMDAKCiAgICBNUEM1MTJ4OiB1c2UgSS9PIGFjY2Vzc29ycyBpbnN0ZWFkIG9mIHBvaW50ZXIgYWNjZXNzZXMKCiAgICBUaGlzIGNvbW1pdCBjaGFuZ2VzIHRoZSBNUEM1MTJ4IGNvZGUgdG8gdXNlIEkvTyBhY2Nlc3NvciBjYWxscyAoaS5lLgogICAgb3V0XyooKSBhbmQgaW5fKigpKSBpbnN0ZWFkIG9mIHVzaW5nIGRlcHJlY2F0ZWQgcG9pbnRlciBhY2Nlc3Nlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgQ2M6IEpvaG4gUmlnYnkgPGpjcmlnYnlAZ21haWwuY29tPgoKY29tbWl0IDE5ZGM3ZTE3OTI2OGJlMTQ4ZTU1MGMzNjIwMzIwOGM2NjI2MTBkNzYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgTWF5IDE2IDEwOjQ3OjQyIDIwMDkgKzAyMDAKCiAgICBNUEM1MTJ4OiBhZGQgbW9yZSBoYXJkd2FyZSBkZXNjcmlwdGlvbiB0byBpbW1hcF81MTJ4LmgKCiAgICAtIGFkZCBHUElPIG1vZHVsZSBkZXNjcmlwdGlvbgogICAgLSBhZGQgQWRkcmVzcyBMYXRjaCBUaW1pbmcgUmVnaXN0ZXIgZGVzY3JpcHRpb24KICAgIC0gYWRkIElPIENvbnRyb2wgTWVtb3J5IE1hcAogICAgLSBhZGQgRkVDIE1lbW9yeSBNYXAKCiAgICBBbHNvIGNoYW5nZSBib2FyZC9mcmVlc2NhbGUvbXBjNTEyMWFkcy9tcGM1MTIxYWRzLmMgYW5kCiAgICBjcHUvbXBjNTEyeC9pb3Bpbi5jIGFzIG5lZWRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgQ2M6IEpvaG4gUmlnYnkgPGpjcmlnYnlAZ21haWwuY29tPgoKY29tbWl0IDcyNjAxZDA0ZmRmZGQ0Yzc1OTdhZmNmMWY2YWFiNjU0YmQ5OTM2NmMKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgTWF5IDE2IDEwOjQ3OjQxIDIwMDkgKzAyMDAKCiAgICBSZW5hbWUgYWRzNTEyMSBib2FyZCBpbnRvIG1wYzUxMjFhZHMKCiAgICBXZSByZW5hbWUgdGhlIGJvYXJkIHNvIHdlIHVzZSBhIGNvbnNpc3RlbnQgbmFtZSBpbiBVLUJvb3QgYW5kIGluCiAgICBMaW51eC4gIEFsc28sIHdlIHVzZSB0aGlzIG9wcG9ydHVuaXR5IHRvIG1vdmUgdGhlIGJvYXJkIGludG8gdGhlCiAgICBGcmVlY2FsZSB2ZW5kb3IgZGlyZWN0b3J5LgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBDYzogSm9obiBSaWdieSA8amNyaWdieUBnbWFpbC5jb20+Cgpjb21taXQgZGViZjg3NDE1NTc5YzBmNTBhYWI5ZTA4MzI5NzZkNDUwNmJhYmUwZgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBNYXkgMTYgMTA6NDc6NDAgMjAwOSArMDIwMAoKICAgIGNwdS9tcGM1MTJ4L2RpdS5jOiBmaXggd2FybmluZzogYXNzaWdubWVudCBmcm9tIGluY29tcGF0aWJsZSBwb2ludGVyIHR5cGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgQ2M6IEpvaG4gUmlnYnkgPGpjcmlnYnlAZ21haWwuY29tPgoKY29tbWl0IDhiMjUxMjYzMTkxZWM1NTQ5NjdkZDFhZGQ2MjM3YzFiYTdmN2ViMjUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgTWF5IDE2IDEwOjQ3OjM5IDIwMDkgKzAyMDAKCiAgICBjcHUvbXBjNTEyeC9wY2kuYzogbWlub3IgY29kaW5nIHN0eWxlIGNsZWFudXAKCiAgICBHZXQgcmlkIG9mIHZhcmlhYmxlIGRlY2xhcmF0aW9uIGluIHRoZSBtaWRkbGUgb2YgdGhlIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIENjOiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KCmNvbW1pdCBkZTI2ZWY5OWJkZGJjZTRlZDIyNWY5M2FmY2YwYmVlOTljM2I2Zjg3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IE1heSAxNiAxMDo0NzozOCAyMDA5ICswMjAwCgogICAgbXBjNTEyeDogTW92ZSBjb21tb24gZmlsZXMgdG8gc2hhcmUgdGhlbSBieSBzZXZlcmFsIGJvYXJkcwoKICAgIFdlIHdpbGwgc29vbiBzZWUgc2V2ZXJhbCBuZXcgTVBDNTIxeCBiYXNlZCBib2FyZHMgYWRkZWQuICBUaGlzIHBhdGNoCiAgICBtb3ZlcyBmaWxlcyB0aGF0IGFyZSBub3QgYm9hcmQgc3BlY2lmaWMgdG8gYSBjb21tb24gZGlyZWN0b3J5IHNvIHRoZXkKICAgIGNhbiBiZSBzaGFyZWQgYnkgYWxsIHN1Y2ggcG9ydHMuICBJdCBhbHNvIHNwbGl0cyBvZmYgY29tbW9uIElERSBjb2RlCiAgICBpbnRvIGEgbmV3IGZpbGUsIGNwdS9tcGM1MTJ4L2lkZS5jIC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgQ2M6IEpvaG4gUmlnYnkgPGpjcmlnYnlAZ21haWwuY29tPgoKY29tbWl0IDAzZTA2OWRjMGE3NjVkNTA2Zjc4YTY4MzE5YWNmMzNkNDMyZTAzNWIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgTWF5IDE2IDEwOjQ3OjM3IDIwMDkgKzAyMDAKCiAgICBtcGM1MTJ4OiBjaGFuZ2UgY3B1L21wYzUxMngvTWFrZWZpbGUgdG8gdXNlIEtjb25maWcgc3R5bGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgQ2M6IEpvaG4gUmlnYnkgPGpjcmlnYnlAZ21haWwuY29tPgoKY29tbWl0IGE4OWMzM2RiOTZhMWU1NTMxOWEyODZkZDRjM2MwNWNhNjRhYzZiZmQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gTWF5IDI0IDE3OjA2OjU0IDIwMDkgKzAyMDAKCiAgICBHZW5lcmFsIGhlbHAgbWVzc2FnZSBjbGVhbnVwCgogICAgTWFueSBvZiB0aGUgaGVscCBtZXNzYWdlcyB3ZXJlIG5vdCByZWFsbHkgaGVscGZ1bDsgZm9yIGV4YW1wbGUsIG1hbnkKICAgIGNvbW1hbmRzIHRoYXQgdGFrZSBubyBhcmd1bWVudHMgd291bGQgbm90IHByaW50IGEgY29ycmVjdCBzeW5vcHNpcwogICAgbGluZSwgYnV0ICJObyBhZGRpdGlvbmFsIGhlbHAgYXZhaWxhYmxlLiIgd2hpY2ggaXMgbm90IGV4YWN0bHkgd3JvbmcsCiAgICBidXQgbm90IGhlbHBmdWwgZWl0aGVyLgoKICAgIENvbW1pdCBgYE1ha2UgInVzYWdlIiBtZXNzYWdlcyBtb3JlIGhlbHBmdWwuJycgY2hhbmdlZCB0aGlzCiAgICBwYXJ0aWFsbHkuIEJ1dCBpdCBhbHNvIGJlY2FtZSBjbGVhciB0aGF0IGxvdHMgb2YgIlVzYWdlIiBhbmQgIkhlbHAiCiAgICBtZXNzYWdlcyAoZmllbGRzICJ1c2FnZSIgYW5kICJoZWxwIiBpbiBzdHJ1Y3QgY21kX3RibF9zIHJlc3BlY3RpdmUpCiAgICB3ZXJlIGFjdHVhbGx5IHJlZHVuZGFudC4KCiAgICBUaGlzIHBhdGNoIGNsZWFucyB0aGlzIHVwIC0gZm9yIGV4YW1wbGU6CgogICAgQmVmb3JlOgoJPT4gaGVscCBkdHQKCWR0dCAtIERpZ2l0YWwgVGhlcm1vbWV0ZXIgYW5kIFRoZXJtb3N0YXQKCglVc2FnZToKCWR0dAkgICAgLSBSZWFkIHRlbXBlcmF0dXJlIGZyb20gZGlnaXRhbCB0aGVybW9tZXRlciBhbmQgdGhlcm1vc3RhdC4KCiAgICBBZnRlcjoKCT0+IGhlbHAgZHR0CglkdHQgLSBSZWFkIHRlbXBlcmF0dXJlIGZyb20gRGlnaXRhbCBUaGVybW9tZXRlciBhbmQgVGhlcm1vc3RhdAoKCVVzYWdlOgoJZHR0CgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA5NDc5NmQ4NTQ0ZDQyNDgwMjgxNDFiYWQxMWM2YTc0Yjg0MGU5ZDZlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIE1heSAyNCAxOToxNzoyOSAyMDA5ICswMjAwCgogICAgTWFrZSAidXNhZ2UiIG1lc3NhZ2VzIG1vcmUgaGVscGZ1bC4KCiAgICBJbiBjYXNlIG9mIGluY29ycmVjdCBjb21tYW5kIGludm9jYXRpb25zIFUtQm9vdCB1c2VkIHRvIHByaW50IHByZXR0eQogICAgdXNlbGVzcyAidXNhZ2UiIG1lc3NhZ2VzLCBmb3IgZXhhbXBsZToKCgk9PiBuYW5kIG1hcmtiYWQKCVVzYWdlOgoJbmFuZCAtIE5BTkQgc3ViLXN5c3RlbQoKICAgIEluIHRoZSByZXN1bHQsIHRoZSB1c2VyIHdvdWxkIGhhdmUgdG8gcnVuIHRoZSAiaGVscCIgY29tbWFuZCB0byBnZXQKICAgIHRoZSAoYXZhaWxhYmxlKSBpbmZvcm1hdGlvbiBhYm91dCBjb3JyZWN0IGNvbW1hbmQgdXNhZ2UuIENoYW5nZSB0aGlzLAogICAgc28gdGhhdCB0aGlzIGluZm9ybWF0aW9uIGdldHMgYWx3YXlzIHByaW50ZWQuCgogICAgTm90ZSB0aGF0IHRoaXMgY2hhbmdlcyB0aGUgdXNlciBpbnRlcmZhY2Ugb2YgYWxsIGNvbW1hbmRzLCBidXQKICAgIGhvcGVmdWxseSB0byB0aGUgYmV0dGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNGM5NGY2YzU0YmJjNGRjNWY0MThkYTAxZDhlYzAxZTJhZGY2MzZiZQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU3VuIE1heSAyNCAwMjoyNjoxOSAyMDA5IC0wNDAwCgogICAgbnZlZGl0OiBzcGVlZCB1cCBwcmludGluZyBvZiBlbnZpcm9ubWVudAoKICAgIFRoZSBwcmludGluZyBjb2RlIHdvdWxkIGNoZWNrIHRoZSBzYW1lIGVudmlyb25tZW50IGJ5dGUgbXVsdGlwbGUgdGltZXMgYW5kCiAgICB3cml0ZSB0byB0aGUgY29uc29sZSBvbmUgYnl0ZSBhdCBhIHRpbWUuICBGb3Igc29tZSBkZXZpY2VzIChzdWNoIGFzIHRoZQogICAgQmxhY2tmaW4gSlRBRyBjb25zb2xlIHdoaWNoIG9wZXJhdGVzIGluIDggYnl0ZXMgYXQgYSB0aW1lKSwgdGhpcyBpcyBwcmV0dHkKICAgIGRhbW5lZCBzbG93LiAgU28gY3JlYXRlIGEgc21hbGwgMTYgYnl0ZSBidWZmZXIgdG8gZmlsbCB1cCBhbmQgc2VuZCB0byBwdXRzCiAgICBhcyBuZWVkZWQuCUluIHRoZSBwcm9jZXNzLCB1bmlmeSB0aGUgZGlmZmVyZW50IHByaW50IGZ1bmN0aW9ucywgc2hyaW5rCiAgICB0aGUgcmVzdWx0aW5nIGNvZGUgKHNvdXJjZSBhbmQgY29tcGlsZWQpLCBhbmQgYXZvaWQgZXhjZXNzIGVudiByZWFkcyBhcwogICAgdGhvc2UgdG9vIGNhbiBiZSBzb21ld2hhdCBleHBlbnNpdmUgZGVwZW5kaW5nIG9uIHRoZSBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMzExMjAzMGE0MzA1NTM3NjhkZTVkMzBjMDViZWRmODcxMDc4NDQ1MgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBNYXkgMjIgMTk6Mjg6NTIgMjAwOSArMDIwMAoKICAgIGNvbmZpZy5tazogcmVtb3ZlIHVuLW5lZWRlZCBSRU1PVEVfQlVJTEQgY2hlY2sKCiAgICBhcyAkKG9iaikgaXMgZW1wdHkgd2hlbiBpbiB0cmVlIGJ1aWxkCgogICAgJS5zOgklLlMKCSQoQ1BQKSAkKEFGTEFHUykgLW8gJEAgJDwKCiAgICBhbmQKCiAgICAkKG9iaiklLnM6CSUuUwoJJChDUFApICQoQUZMQUdTKSAtbyAkQCAkPAoKICAgIGFyZSB0aGUgc2FtZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CiAgICBBY2tlZC1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDY1MTM1MWZlOTgwYjIwMjE3YjAxNGI5YTg4ODM5OGYxOGQ3Nzk1MWMKQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CkRhdGU6CVdlZCBNYXkgMjAgMDc6NTU6NDEgMjAwOSAtMDUwMAoKICAgIEZBVCByZXBsYWNlIGNvbXBhcmVfc2lnbiB3aXRoIHN0cm5jbXAuCgogICAgVGhlIHN0YXRpYyBmdW5jdGlvbiBjb21wYXJlX3NpZ24gaXMgb25seSB1c2VkIHRvIGNvbXBhcmUgdGhlIGZzX3R5cGUgc3RyaW5nCiAgICBhbmQgZG9lcyBub3QgZG8gYW55dGhpbmcgbW9yZSB0aGFuIHdoYXQgc3RybmNtcCBkb2VzLgoKICAgIFRoZSBhZGRpdGlvbiBvZiB0aGUgdHJhaWxpbmcgJ1wwJyB0byBmc190eXBlLCB3aGlsZSBsZWdhbCwgaXMgbm90IG5lZWRlZAogICAgYmVjYXVzZSB0aGUgaXQgaXMgbmV2ZXIgcHJpbnRlZCBvdXQgYW5kIHN0cm5jbXAgZG9lcyBub3QgZGVwZW5kIG9uIE5VTEwKICAgIHRlcm1pbmF0ZWQgc3RyaW5ncy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Cgpjb21taXQgZWNiMWRjODkyMjk3ZDVkOTk4NzY5MDczMjhmZWQ3MzJmZWVmZWFiMgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIE1heSAyMCAwNDozNToxNCAyMDA5IC0wNDAwCgogICAgQWRkIHN1cHBvcnQgZm9yIExpbnV4LWxpa2Uga2FsbHN5c21zCgogICAgVGhlIGtlcm5lbCBzdG9yZXMgYWRkcmVzczwtPnN5bWJvbCBuYW1lcyBpbiBpdCBzbyB0aGluZ3MgY2FuIGJlIGRlY29kZWQgYXQKICAgIHJ1bnRpbWUuICBEbyBpdCBpbiBVLUJvb3QsIGFuZCB3ZSBnZXQgbmljZSBzeW1ib2wgZGVjb2Rpbmcgd2hlbiBjcmFzaGluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMzZjOTE2OWFhNmY3OWRkZjYwNGEzYmNhNjRlMTQ1NjU0Zjk0ODg4YgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBNYXkgMTcgMTY6MDE6NTQgMjAwOSArMDIwMAoKICAgIGNtZF9tdGRwYXJ0cy5jOiBhbGxvdyB0byBvbWl0IGRlZmluaXRpb25zIGZvciBkZWZhdWx0IHNldHRpbmdzCgogICAgVGhlcmUgaXMgYWN0dWFsbHkgbm8gZ29vZCByZWFzb24gdG8gZW5mb3JjZSB0aGF0IGFsbCBib2FyZAogICAgY29uZmlndWF0aW9ucyBtdXN0IGRlZmluZSBkZWZhdWx0IHNldHRpbmdzIGZvciAibXRkaWRzIiBhbmQKICAgICJtdGRwYXJ0cyIuICBBY3R1YWxseSB0aGlzIG1heSBiZSBkaWZmaWN1bHQgdG8gaGFuZGxlLCBlc3BlY2lhbGx5IG9uCiAgICBib2FyZHMgd2hlcmUgZGlmZmVyZW50IHNpemVzIG9mIGZsYXNoIGNoaXBzIGNhbiBiZSBmaXQsIHNvIHRoZXJlIGlzIG5vCiAgICByZWFsICJkZWZhdWx0IiBwYXJ0aXRpb24gbWFwIGZvciBhbGwgYm9hcmRzLgoKICAgIExpZnQgdGhpcyBhcmJpdHJhcnkgbGltaXRhdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDg2NGFhMDM0ZjNhMGUxMGNlNzEwZThiYmRhMTcxZGYzY2FiNTk0MTQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXkgMTIgMTQ6MzE6NTYgMjAwOSArMDIwMAoKICAgIGNtZF9tdGRwYXJ0czogTW92ZSB0byBjb21tb24gaGFuZGxpbmcgb2YgRkxBU0ggZGV2aWNlcyB2aWEgTVREIGxheWVyCgogICAgVGhpcyBwYXRjaCByZW1vdmVzIGFsbCByZWZlcmVuY2VzIHRvIHRoZSBkaXJlY3QgQ0ZJIEZMQVNIIGludGVyZmFjZQogICAgKHZpYSBmbGFzaF9pbmZvW10pLiBOb3cgdGhhdCBhbGwgRkxBU0ggdHlwZXMgY3VycmVudGx5IGhhbmRsZWQgaW4KICAgIG10ZHBhcnRzIGFyZSBhdmFpbGFibGUgKGlmIHNlbGVjdGVkLCBzZWUgYmVsb3cpIHZpYSB0aGUgTVREIGluZnJhc3RydWN0dXJlLgogICAgVGhpcyBpcyBOT1IsIE5BTkQgYW5kIE9uZU5BTkQgcmlnaHQgbm93LiBUaGlzIGNhbiBiZSBhY2hpZXZlZCBieSBkZWZpbmluZwogICAgdGhlIGZvbGxvd2luZyBvcHRpb25zOgoKICAgIENPTkZJR19NVERfREVWSUNFIChmb3IgYWxsIEZMQVNIIHR5cGVzKQoKICAgIHBsdXMKCiAgICBDT05GSUdfRkxBU0hfQ0ZJX01URCAoZm9yIE5PUiBGTEFTSCkKCiAgICBTbyB3ZSBuZWVkIHRvIGFkZCB0aG9zZSBkZWZpbmVzIHRvIHRoZSBib2FyZCBjb25maWcgaGVhZGVycyBjdXJyZW50bHkKICAgIHVzaW5nIHRoZSBtdGRwYXJ0cyBjb21tYW5kcy4gVGhpcyBpcyBkb25lIHZpYSBhbm90aGVyIHBhdGNoLCBzbwogICAgd2Ugc2hvdWxkbid0IGJyZWFrIG10ZHBhcnRzIGNvbXBhdGliaWxpdHkuCgogICAgT25lIGJpZyBhZHZhbnRhZ2UgZnJvbSB0aGlzIHNvbHV0aW9uIGlzIHRoYXQgdGhlIGNtZF9tdGRwYXJ0cy5jIGlzCiAgICAqbXVjaCogY2xlYW5lciBub3cuIExvdCdzIG9mICNpZmRlZidzIGFyZSByZW1vdmVkIGFuZCB0aGUgY29kZSBpdHNlbGYKICAgIGlzIHNtYWxsZXIuIEFkZGl0aW9uYWxseSB0aGUgbmV3bHkgYWRkZWQgTURUIGNvbmNhdGVuYXRpb24gZmVhdHVyZQogICAgY2FuIG5ldyBiZSB1c2VkIHZpYSB0aGUgbXRkcGFydHMgaW5mcmFzdHJ1Y3R1cmUgYW5kIHRoZXJlZm9yIHZpYQogICAgVUJJIGV0Yy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBDYzogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgogICAgQ2M6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGQ1NTgxMDdjMTg3MDgwNTBmMDViNjYzOWIyMTkyZWZiNjdjOTA1ZGMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXkgMTIgMTQ6MzE6MTggMjAwOSArMDIwMAoKICAgIG10ZDogSW50cm9kdWNlIENPTkZJR19NVERfREVWSUNFIHRvIHNlbGVjdCBjb21waWxhdGlvbiBvZiBtdGRjb3JlLm8KCiAgICBUaGlzIG5ldyBkZWZpbmUgZW5hYmxlcyBtdGRjb3JlLmMgY29tcGlsYXRpb24gYW5kIHdpdGggdGhpcyB3ZSBjYW4KICAgIHNlbGVjdCB0aGUgTVREIGRldmljZSBpbmZyYXN0cnVjdHVyZSBuZWVkZWQgZm9yIHRoZSByZXdvcmtlZCBtdGRwYXJ0cwogICAgY29tbWFuZC4KCiAgICBXZSBub3cgaGF2ZSB0aGUgMiBNVEQgaW5mcmFzdHJ1Y3R1cmUgZGVmaW5lcywgQ09ORklHX01URF9ERVZJQ0UgYW5kCiAgICBDT05GSUdfTVREX1BBUlRJVElPTlMuIENPTkZJR19NVERfREVWSUNFIGlzIG5lZWRlZCAoYXMgZXhwbGFpbmVkIGFib3ZlKQogICAgZm9yIHRoZSAibXRkcGFydHMiIGNvbW1hbmQgYW5kIENPTkZJR19NVERfUEFSVElUSU9OUyBpcyBuZWVkZWQgZm9yIFVCSS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBDYzogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTQyNTU2YTkyYThjMWViMWJkNzY1ODRhNTE0M2Y2ZjU3ZGNiMjVhZApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIE1heSAxMiAxNDozMjo1OCAyMDA5ICswMjAwCgogICAgbXRkOiBNVEQgcmVsYXRlZCBjb25maWcgaGVhZGVyIGNoYW5nZXMgKG10ZHBhcnRzIGNvbW1hbmQpCgogICAgQnkgY2hhbmdpbmcgdGhlIGNtZF9tdGRwYXJ0cyB0byBvbmx5IHVzZSB0aGUgTVREIGluZnJhc3RydWN0dXJlIGFuZAogICAgbm90IHRoZSBkaXJlY3QgaW50ZXJmYWNlIHRvIHRoZSBDRkkgTk9SIEZMQVNIIGRyaXZlciB3ZSBub3cgbmVlZAogICAgdG8gYWRkIHRoZSBNVEQgaW5mcmFzdHJ1Y3R1cmUgdG8gYWxsIGJvYXJkcyB1c2luZyB0aG9zZSBtdGRwYXJ0cwogICAgY29tbWFuZHMuIFRoaXMgcGF0Y2ggYWRkcyB0aG9zZSBjb21wb25lbnRzOgoKICAgIENPTkZJR19NVERfREVWSUNFIChmb3IgYWxsIEZMQVNIIHR5cGVzKQoKICAgIHBsdXMKCiAgICBDT05GSUdfRkxBU0hfQ0ZJX01URCAoZm9yIE5PUiBGTEFTSCkKCiAgICBUbyBhbGwgYm9hcmQgbWFpbnRhaW5lcnM6IFBsZWFzZSB0ZXN0IHRoaXMgb24geW91ciBwbGF0Zm9ybXMgYW5kCiAgICByZXBvcnQgYW55IHByb2JsZW1zL2lzc3VlcyBmb3VuZC4gVGhhbmtzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIENjOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgQ2M6IFJvbiBNYWRyaWQgPGluZm9Ac2hlbGRvbmluc3QuY29tPgogICAgQ2M6IEdlb3JnIFNjaGFyZHQgPHNjaGFyZHRAdGVhbS1jdGVjaC5kZT4KICAgIENjOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CiAgICBDYzogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgogICAgQ2M6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgogICAgQ2M6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgogICAgQ2M6IFJpY2FyZG8gUmliYWxkYSA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KCmNvbW1pdCA4ZDJlZmZlYTIzZTkzODYzMTEyNmE3ODg4MDA4YTA2MzdlMTNiMzg5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gTWF5IDExIDE2OjAzOjU1IDIwMDkgKzAyMDAKCiAgICBtdGQ6IFVwZGF0ZSBNVEQgaW5mcmFzdHJ1Y3R1cmUgdG8gc3VwcG9ydCA2NGJpdCBkZXZpY2Ugc2l6ZQoKICAgIFRoaXMgcGF0Y2ggYnJpbmdzIHRoZSBVLUJvb3QgTVREIGluZnJhc3RydWN0dXJlIGluIHN5bmMgd2l0aCB0aGUgY3VycmVudAogICAgTGludXggTVREIHZlcnNpb24gKDIuNi4zMC1yYzMpLiBCaWdnZXN0IGNoYW5nZSBpcyB0aGUgNjRiaXQgZGV2aWNlIHNpemUKICAgIHN1cHBvcnQgYW5kIGEgcmVzeW5jIG9mIHRoZSBtdGRwYXJ0LmMgZmlsZSB3aGljaCBoYXMgc2VlbiBtdWx0aXBsZSBmaXhlcwogICAgbWVhbndoaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIENjOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KICAgIENjOiBLeXVuZ21pbiBQYXJrIDxrbXBhcmtAaW5mcmFkZWFkLm9yZz4KCmNvbW1pdCAwYTU3MjY1NTMzYzQxMmFkZjYwMjRmNGI0OTU1MTQxZjQzNDZiMmI5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgTWF5IDEyIDE0OjI5OjM5IDIwMDkgKzAyMDAKCiAgICBtdGQ6IEFkZCBNVEQgY29uY2F0IHN1cHBvcnQgdG8gY29uY2F0ZW5hdGUgbXVsdGlwbGUgTVREIE5PUiBkZXZpY2VzCgogICAgVGhpcyBwYXRjaCBhZGRzIGNvbmNhdGVuYXRpb24gc3VwcG9ydCB0byB0aGUgVS1Cb290IE1URCBpbmZyYXN0cnVjdHVyZS4KICAgIEJ5IGVuYWJsaW5nIENPTkZJR19NVERfQ09OQ0FUIHRoaXMgTVREIENGSSB3cmFwcGVyIHdpbGwgY29uY2F0ZW5hdGUKICAgIGFsbCBmb3VuZCBOT1IgZGV2aWNlcyBpbnRvIG9uZSBzaW5nbGUgTVREIGRldmljZS4gVGhpcyBjYW4gYmUgdXNlZCBieQogICAgZS5nIGJ5IFVCSSB0byBhY2Nlc3MgYSBwYXJ0aXRpb24gdGhhdCBzcGFucyBvdmVyIG11bHRpcGxlIE5PUiBjaGlwcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNTVlMGVkNjA3OGIxMGIwZDQyNWI2YTA2NzdmMzhhMDE1YzI3N2RmNgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBBcHIgMjUgMTQ6NTc6NTIgMjAwOSArMDIwMAoKICAgIG1ha2UgTU9ERU0gU1VQUE9SVCBnZW5lcmljIGluc3RlYWQgb2YgZHVwbGljYXRlIGl0CgogICAgYW5kIGZpeCBjb21tZW50CgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCiAgICBBZGp1c3RlZCBDb3B5cmlnaHQgbWVzc2FnZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGEzMGY1MTliZDBjZGU3OGJhNDZiNDI0MzE0ZGU5NGZkYWI4NjM3MjYKQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CkRhdGU6CVR1ZSBKdW4gMiAyMDo1Mzo1NiAyMDA5IC0wNTAwCgogICAgWk9PTTIgZGV0ZWN0IHRoZSB2ZXJzaW9uIG9mIHRoZSB6b29tMiBib2FyZCBhdCBydW50aW1lLgoKICAgIFRoZXJlIGFyZSBjdXJyZW50bHkgMyB2ZXJzaW9ucyBvZiB0aGUgem9vbTIgYm9hcmQuCiAgICBUaGUgcHJvZHVjdGlvbiBib2FyZCwgdGhhdCBpcyBjdXJyZW50bHkgYmVpbmcgcmVsZWFzZWQuCiAgICBUaGUgYmV0YSBib2FyZCwgc2ltaWxhciBpbiBmb3JtIHRvIHRoZSBwcm9kdWN0aW9uIGJvYXJkIGJ1dCBub3QgcmVsZWFzZWQuCiAgICBUaGUgYWxwaGEgYm9hcmQsIGEgc2V0IG9mIFBDQnMgd2l0aCBhIHZlcnkgbGltaXRlZCBjaXJjdWxhdGlvbi4KCiAgICBHUElPIDk0IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSB2ZXJzaW9uIG9mIHRoZSBib2FyZC4gSWYgR1BJTyA5NCBpcyBjbGVhciwKICAgIHRoZSBib2FyZCBpcyBhIHByb2R1Y3Rpb24gYm9hcmQsIG90aGVyd2lzZSBpdCBpcyBhIGJldGEgYm9hcmQuCgogICAgVGhlIGFscGhhIGJvYXJkIHdpbGwgbGlrZWx5IGJlIG1pc3Rha2VuIGZvciBhIGJldGEgYm9hcmQuICBBbiBhbHBoYSBib2FyZAogICAgd2FzIHVuYXZhaWxpYmxlIGZvciB0ZXN0aW5nLgoKICAgIFRoaXMgaGFzIGJlZW4gdGVzdGVkIG9uIHRoZSBiZXRhIGFuZCBwcm9kdWN0aW9uIGJvYXJkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDcxODc2M2M0NzQ1ZmQzZDk4N2E1NTc2ZDJhNjczMjVlOTQ0NGY5ZDQKQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CkRhdGU6CVdlZCBKdW4gMyAwMTo1Mzo1NyAyMDA5IC0wNTAwCgogICAgQmVhZ2xlIENvbnZlcnQgdGhlIGJvYXJkIHZlcnNpb24gZGV0ZWN0aW9uIHRvIHVzZSB0aGUgT01BUDMgR1BJTyBpbnRlcmZhY2UuCgogICAgVGhlcmUgaXMgbm8gbmV3IGZ1bmN0aW9uYWxpdHkgaW4gdGhlIGNoYW5nZS4KCiAgICBUaGlzIGNoYW5nZSBpcyBhIGNvbnZlcnNpb24gZnJvbSB0aGUgdXNpbmcgcmF3IHJlZ2lzdGVyIGFjY2VzcyB0byB1c2luZwogICAgdGhlIE9NQVAzIEdQSU8gQVBJIGRlc2NyaWJlZCBpbiBkb2MvUkVBRE1FLm9tYXAzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KICAgIEFja2VkLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgoKY29tbWl0IDdjYWExM2ZkZDJkM2RjOTU3YjRlMGEyMjg4MTBhM2E0YThiYTQ5OWIKQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CkRhdGU6CVdlZCBKdW4gMyAwMTo1Mzo1NSAyMDA5IC0wNTAwCgogICAgRml4IGEgdHlwbyBpbiB0aGUgaW5zdHJ1Y3Rpb25zIG9uIHVzaW5nIG9tYXAzJ3MgZ3BpbyBpbnRlcmZhY2UuCgogICAgVXNpbmcgdGhlIGV4YW1wbGUgZm9yIHJlYWRpbmcgYSBncGlvLCBzaG93cyB0aGUgcHJvYmxlbS4KICAgIE5VTEwgc2hvdWxkIGJlIHRoZSBncGlvIG51bWJlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CiAgICBBY2tlZC1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KCmNvbW1pdCAwYzk1MjBlZmQ2NTFjZTEzNDUxNjU0YTM1MzA3ZWM4N2Q0YTEzYTY5CkF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgpEYXRlOglGcmkgTWF5IDI5IDE4OjU3OjMyIDIwMDkgLTA1MDAKCiAgICBaT09NMiBEZWZpbmUgR1BJTyBiYW5rcyB1c2VkLgoKICAgIEVuYWJsZSB0aGUgZnVuY3Rpb24gYW5kIGludGVyZmFjZSBjbG9ja3MgZm9yIGJhbmtzIDIsMyw1IGFuZCA2LgoKICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KICAgIEFja2VkLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgoKY29tbWl0IDcwOGNmYjc0YjdjNmRmOWMzN2QzYzQ4OTg4YTE1NGJlNzlkYWVmZWIKQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CkRhdGU6CUZyaSBNYXkgMjkgMTg6NTc6MzEgMjAwOSAtMDUwMAoKICAgIE9NQVAzIFR1cm4gb24gdGhlIEdQSU8gYmFuayBjbG9ja3MKCiAgICBUaGUgZnVuY3Rpb24gYW5kIGludGVyZmFjZSBjbG9ja3MgZm9yIGVhY2ggR1BJTyBiYW5rLCBleGNlcHQgdGhlIGZpcnN0LCBtdXN0CiAgICBiZSBleHBsaWNpdGx5IHR1cm5lZCBvbi4gIFRoZXNlIGFyZSBjb250cm9sbGVkIGJ5IHRoZSBjb25maWcgbGV2ZWwgZGVmaW5lcwogICAgQ09ORklHX09NQVAzX0dQSU9fbiB3aGVyZSBuIGlzIGZyb20gMiB0byA2LgoKICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KICAgIEFja2VkLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgoKY29tbWl0IDU5MjcyNjIwYzI0NTQ5YjViY2QwM2M5NGJhMTJlYzMwMmMxNDc2YTIKQXV0aG9yOiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgpEYXRlOglUaHUgTWFyIDI2IDE1OjI2OjAxIDIwMDkgLTA0MDAKCiAgICBDb2xkZmlyZSBNNTI3MTogQWN0aXZhdGUgdS1ib290IHN5c3RlbSB0aW1lciBpbnRlcnJ1cHQuCgogICAgVGhpcyBwYXRjaCBhc3NpZ25zIHRoZSB1LWJvb3Qgc3lzdGVtIHRpbWVyIGludGVycnVwdCB0bwogICAgaW50ZXJydXB0IGxldmVsIDMsIHByaW9yaXR5IDYuIFdpdGhvdXQgdGhpcyBwYXRjaCB0aGUgaW50ZXJydXB0CiAgICB3aWxsIGJlIGEgbGV2ZWwgMCwgcHJpb3JpdHkgMCwgd2hpY2ggZGlzYWJsZXMgaXQgYW5kIGNhdXNlCiAgICB1LWJvb3QgZnVuY3Rpb25zIHRoYXQgcmVsaWVzIG9uIHRoZSB0aW1lciAoZS5nLiBzbGVlcCBjb21tYW5kKQogICAgdG8gbmV2ZXIgcmV0dXJuLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+Cgpjb21taXQgZGMyNjk2NWFkM2FjZGZiMTg3ODAzNjFkNzdhMjc2YjI4NDNhOTBhZgpBdXRob3I6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+CkRhdGU6CU1vbiBNYXIgMjMgMTM6MzU6NDggMjAwOSAtMDQwMAoKICAgIENvbXBpZXIgd2FybmluZyBjbGVhbnVwCgogICAgRm9sbG93IHVwIHRvIGdpdCBjb21taXQ6IDE5YjViNTMzY2NkNTIyYWJlYjUwMWQ1MTA3NTA2OTNjMzVlMjA0NTYKCiAgICBDbGVhbnVwIG9uIGNvbXBpbGVyIHdhcm5pbmdzIG9uIHVudXNlZCB2YXJpYWJsZXMgbm93IHRoYXQKICAgIGJkLT5iaV9lbmV0YWRkciBpcyBubyBsb25nZXIgdXNlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgoKY29tbWl0IDQyYTgzNzY1ZDU0ZjA0MmI0MDc5ZTA1YTM0Mzg3ODk1NDI0Mjk5ODEKQXV0aG9yOiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgpEYXRlOglGcmkgTWFyIDIwIDE1OjMwOjEwIDIwMDkgLTA0MDAKCiAgICBBZGRzIFdBVENIRE9HX1JFU0VUKCkgZnVuY3Rpb24gY2FsbCB0byBsaWJfbTY4ayBkdGltZXJfaW50ZXJydXB0LgoKICAgIFBvcnRlZCBmcm9tIGxpYl9wcGMvaW50ZXJydXB0cy5jLCB0aGlzIGFkZHMgdGhlIGFiaWxpdHkgZm9yCiAgICB0aGUgY29sZGZpcmUgc3lzdGVtIHRpbWVyIHRvIGF1dG8tcmVzZXQgdGhlIHdhdGNoZG9nIHdoZW4KICAgIGR0aW1lcl9pbnRlcnJ1cHRzIGlzIGNhbGxlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgoKY29tbWl0IGEyNGQ5NmU0MGUxY2E2NmRkZTZlNmMxNThlN2VjZmZhZmM1YTIxOTkKQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+CkRhdGU6CVN1biBNYXkgMzEgMTQ6NTM6MjAgMjAwOSArMDIwMAoKICAgIGFyY2hfbWlzY19pbml0IHN1cHBvcnQgZm9yIEFSTSBhcmNoaXRlY3R1cmVzCgogICAgVGhpcyBwYXRjaCBpcyByZXF1aXJlZCBmb3IgS2lya3dvb2Qgc3VwcG9ydAogICAgbWF5IGJlIHVzZWQgYnkgb3RoZXIgQVJNIGFyY2hpdGVjdHVyZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Cgpjb21taXQgYjI0MDM1ODliNGQ5OTk2Mzk0YmFmYzczZWNhMzYyM2Y0M2FjMmMzMQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBNYXkgMzEgMTQ6NTM6MTggMjAwOSArMDIwMAoKICAgIGF0OTE6IG1vdmUgY3B1IGluZm8gcHJpbnQgdG8gY3B1CgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBiMzJlMTg5MDc5ZmExNmUxYjY0N2FjNmI5NDlmZDRlMGE5NDM1MzQzCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIE1heSAzMSAxMjo0NDo0NiAyMDA5ICswMjAwCgogICAgYXQ5MTogbW92ZSBjcHUgbmFtZSBkZWZpbmUgdG8gYXJtL2FyY2gvIGNwdSBoZWFkZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDViYjU5YjNjOTA2ZWUwMWFkZmFhYzk1NjU0NDNlNTIzNmE3OTMwNzkKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gTWF5IDMxIDEyOjQ0OjQ1IDIwMDkgKzAyMDAKCiAgICBhdDkxOiBleHRyYWN0IHJlc2V0IGZyb20gdGltZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDYxY2Y4NTFiMDljZjhiNjcwMDllYzExZmM0N2MxNmFkZDZiMTQyYTUKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gTWF5IDMxIDEyOjQ0OjQzIDIwMDkgKzAyMDAKCiAgICBvbWFwMjR4eDogcmVuYW1lIHJlc2V0IGZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDlkNGZjOTlkYmRiZmRhMTI2MGFhZDQ3OGU4M2ZjYTdjZGYwZTFhMzIKQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgpEYXRlOglTdW4gTWF5IDMxIDEyOjQ0OjQyIDIwMDkgKzAyMDAKCiAgICBPTUFQMzogRml4IENLRTEgTVVYIHNldHRpbmcgdG8gYWxsb3cgc2VsZi1yZWZyZXNoCgogICAgVGhlIEJlYWdsZSByZXYgQ3ggYW5kIE92ZXJvIGJvYXJkcyBhcmUgdXNpbmcgYm90aCBTRFJDIENTZXMuIFRoZSBNVVgKICAgIHNldHRpbmcgaXMgbmVlZGVkIGZvciB0aGUgc2Vjb25kIENTIGNsb2NrIHNpZ25hbCB0byBhbGxvdyB0aGUgMiBSQU0KICAgIHBhcnRzIHRvIGJlIHB1dCBpbiBzZWxmLXJlZnJlc2ggY29ycmVjdGx5LiBUaGlzIGFsc28gd29ya3Mgb24gcmV2IEIKICAgIEJlYWdsZSBib2FyZHMgd2l0aCAxMjhNIG9mIFJBTS4KCiAgICBGcm9tOiBTdGV2ZSBTYWtvbWFuIDxzdGV2ZUBzYWtvbWFuLmNvbT4KICAgIEZyb206IEplYW4gUGloZXQgPGpwaWhldEBtdmlzdGEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSmVhbiBQaWhldCA8anBpaGV0QG12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGV2ZSBTYWtvbWFuIDxzdGV2ZUBzYWtvbWFuLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Cgpjb21taXQgMzk2MmM0ZjlmYzQ0ODJhNjU0N2YzYzNkM2Q1ZTk4NmU2MjVhYmI4YQpBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVN1biBNYXkgMzEgMTI6NDQ6NDEgMjAwOSArMDIwMAoKICAgIE9NQVAzOiBab29tMjogRW5hYmxlIEJvYXJkIGFuZCBDUFUgaW5mbwoKICAgIFdpdGggb3RoZXIgT01BUDMgYm9hcmRzIHdlIHJlY2VudGx5IHN3aXRjaGVkIHRvIENQVSBhbmQgQm9hcmQKICAgIGluZm8gQVBJLiBGcm9tIHBhcmFsbGVsIG1lcmdlLCB0aGlzIGlzIG1pc3NpbmcgZm9yIFpvb20yLgogICAgRW5hYmxlIGl0IGZvciBab29tMiwgdG9vLgoKICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CiAgICBBY2tlZC1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgoKY29tbWl0IDgzYWU2OThmZjI2YjgxYjU2OWNhMzJmN2YyYjAwOGFkMGRhMTVlNjYKQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CkRhdGU6CVN1biBNYXkgMzEgMTI6NDQ6MzkgMjAwOSArMDIwMAoKICAgIFpPT00yIEFkZCBsZWQgc3VwcG9ydC4KCiAgICBUaGlzIHBhdGNoIGNvbnRyb2xzIHRoZSBsYXJnZSBMRUQgb24gdGhlIHRvcCBsZWZ0IG9mIHRoZSB6b29tMi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Cgpjb21taXQgNjYwODg4YjdmYjg4NDBjZTE2OWRjZDI1ODllNDlhYjQ0YzQ2Yjg3YgpBdXRob3I6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KRGF0ZToJU3VuIE1heSAzMSAxMjo0NDozNyAyMDA5ICswMjAwCgogICAgWk9PTTIgQWRkIHNlcmlhbCBzdXBwb3J0LgoKICAgIFpvb20yIHNlcmlhbCBpcyBpbiBnZW5lcmFsIHN1cHBsaWVkIGJ5IG9uZSBvZiB0aGUgNCBVQVJUUyBvbiB0aGUgZGVidWcgYm9hcmQuCiAgICBUaGUgZGVmYXVsdCBzZXJpYWwgaXMgZnJvbSB0aGUgVVNCIGNvbm5lY3RvciBvbiBsZWZ0IHNpZGUgb2YgdGhlIGRlYnVnIGJvYXJkLgogICAgVGhlIFVTQiBjb25uZWN0b3Igd2lsbCBwcm9kdWNlIDIgb2YgdGhlIDQgVUFSVFMuICBPbiB5b3VyIGhvc3QgcGljayB0aGUgZmlyc3QKICAgIGVudW1lcmF0aW9uLgoKICAgIFRoZSBkZXRhaWxzIG9mIHRoZSBzZXR0aW5nIG9mIHRoZSBzZXJpYWwgZ3BtYyBzZXR1cCBhcmUgbm90IGF2YWlsYWJsZS4KICAgIFRoZSB2YWx1ZXMgd2VyZSBwcm92aWRlZCBieSBhbm90aGVyIHBhcnR5LgoKICAgIFRoZSBzZXJpYWwgcG9ydCBzZXQgdXAgaXMgdGhlIHNhbWUgd2l0aCBab29tMS4KICAgIEJhdWQgcmF0ZSAxMTUyMDAsIDggYml0IGRhdGEsIG5vIHBhcml0eSwgMSBzdG9wIGJpdCwgbm8gZmxvdy4KCiAgICBUaGUga2VybmVsIGJvb3RhcmdzIGFyZQogICAgY29uc29sZT10dHlTMywxMTUyMDBuOAoKICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KCmNvbW1pdCAzZWEyMDFiMDE2YWIyNTlhNWFjODgyNGFmNzY3NTY5NTIyNzY4YzQ3CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIE1heSAzMSAxMjo0NDoyNyAyMDA5ICswMjAwCgogICAgbGg3YTQweDogbW92ZSBzZXJpYWwgZHJpdmVyIHRvIGRyaXZlcnMvc2VyaWFsCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAzNzliZTU4NWViMjM0M2Q4ODE0YTVjZWU1ZmIzZGE5MzBkODQ2YmVlCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IE1heSAxNiAyMjo0ODo0NiAyMDA5ICswMjAwCgogICAgcHhhOiBtb3ZlIHNlcmlhbCBkcml2ZXIgdG8gZHJpdmVycy9zZXJpYWwKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGFkN2U4YWFjNjkyMGY4YjhhODViM2NjMmU5M2JjYTc0NThlOTlhYTEKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgTWF5IDkgMTM6MjE6MTkgMjAwOSArMDIwMAoKICAgIGFybTogcmVtb3ZlIGNwdV9pbml0CgogICAgbW92ZSBzM2M0NGIwIHRvIGFyY2hfY3B1X2luaXQgYW5kIGFzIG5vb25lIHVzZSBjcHVfaW5pdCByZW1vdmUgaXQKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGMzNThkOWMzZjE2NTcxZThmODI1ZTgxYjc1ZWFmMzJlMjI4Y2I2NjkKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgTWF5IDkgMTM6MjE6MTggMjAwOSArMDIwMAoKICAgIGFybTogdW5pZnkgaW50ZXJydXB0IGluaXQKCiAgICBhbGwgYXJtIGluaXQgdGhlIElSUSBzdGFjayB0aGUgc2FtZSB3YXkKICAgIHNvIHVuaWZ5IGl0IGluIGxpYl9hcm0vaW50ZXJydXB0cy5jIGFuZCB0aGVuIGNhbGwgYXJjaCBzcGVjaWZpYyBpbnRlcnJ1cHQgaW5pdAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMTBhNDUxY2Q1N2NmZmJjYTg3NWM5N2JiZDg5MjkwNTljNTYyN2VjNgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBNYXkgOCAyMDoyNDoxMiAyMDA5ICswMjAwCgogICAgYXJtOiB1bmlmeSBsaW5rZXIgc2NyaXB0CgogICAgYWxsIGFybSBib2FyZHMgZXhjZXB0IGEgZmV3IHVzZSB0aGUgc2FtZSBjcHUgbGlua2VyIHNjcmlwdAogICAgc28gbW92ZSBpdCB0byBjcHUvJChDUFUpCgogICAgdGhhdCBjb3VsZCBiZSBvdmVyd3JpdGUgaW4gZm9sbG93aW5nIG9yZGVyCiAgICBTT0MKICAgIEJPQVJECiAgICB2aWEgdGhlIGNvcnJlc3BvbmRpbmcgY29uZmlnLm1rCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA5NDc1YzYzYzc4NTVlZGQ4NjNjOTNhOWJiMGY0YjhlMjQwZDlkMjEyCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IE1heSAxNiAxMDowMjowNSAyMDA5ICswMjAwCgogICAgYWZlYjkyNjA6IGZpeCBtYWNiIGRldmljZSBpbml0CgogICAgdXNlcyBQQTEwLCBQQTExIGZvciBFVFgyIGFuZCBFVFgzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMWJiYWUyYjgxNmQ0ZWQzOGRiMmViZjQyMTY2YTk3M2IxZmZjMGRmNwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE1heSAyNyAxMDozNDozMiAyMDA5ICswMjAwCgogICAgcHBjNHh4OiBSZW1vdmUgUENJIGFzeW5jIGJvb3R1cCBtZXNzYWdlIGlmIFBDSSBpcyBub3QgdXNlZAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhMzQ1NWMwMDUxMGM1YWJmMWU5MTc0M2M0YTAyZDgzOTNiNmRmMThkCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIE1heSAxNSAwOToxOTo1MiAyMDA5ICswMjAwCgogICAgVFFNODM0eDogdXNlIGJ1ZmZlcmVkIHdyaXRlcyB0byBhY2NlbGVyYXRlIHdyaXRpbmcgdG8gZmxhc2gKCiAgICBBbHNvIGVuYWJsZSBkaXNwbGF5IG9mICdFJ21wdHkgc2VjdG9ycyBpbiAiZmxpbmZvIiBvdXRwdXQuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNDY4MWU2NzNhNTFjNDhmNGMwOTZhYTNjOGZhZTVlNjIxN2ZmZDU4ZApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVRodSBNYXkgMTQgMjM6MTg6MzQgMjAwOSArMDIwMAoKICAgIFRRTTgzNHg6IGFkZCBGRFQgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDkyOWI3OWEwYjVlNDgzMDNhYjA0YWFlOWQwYWJjZWIwYzcwN2YxMTEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgTWF5IDE0IDIzOjE4OjMzIDIwMDkgKzAyMDAKCiAgICBUUU04MzR4OiBmaXggZW52aXJvbm1lbnQgc2l6ZTsgYWRkIHJlZHVuZGFudCBlbnYuCgogICAgQWxzbyByZXNlcnZlIG1vcmUgc3BhY2UgZm9yIFUtQm9vdCBhcyBpdCB3aWxsIHByb2JhYmx5IGdyb3cgc29vbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyYWUwZjM1ZmQ2MGM3MzQ1NDQ2ODM1Yjk1YTRkYWZmMzU2ZTFmMDMxCkF1dGhvcjogVGhvbWFzIExhbmdlIDx0aG9tYXNAY29yZWxhdHVzLnNlPgpEYXRlOglTdW4gTWF5IDMgMjA6MDc6MzMgMjAwOSArMDIwMAoKICAgIEFSTSBEYVZpbmNpOiBSZXNldCB3aXRoIHdhdGNoZG9nIGVuYWJsZWQKCiAgICBPbmNlIHRoZSBEYXZpbmNpIHdhdGNoZG9nIGhhcyBiZWVuIGVuYWJsZWQsIHRoZSB0aW1lb3V0CiAgICB2YWx1ZSBjYW5ub3QgYmUgY2hhbmdlZC4gSWYgdGhlIHRpbWVvdXQgaW4gdXNlIGlzIGxvbmcsCiAgICBpdCBjYW4gdGFrZSBhIGxvbmcgdGltZSBmb3IgY2FyZCB0byByZXNldC4gQnkgd3JpdGluZwogICAgYW4gaW52YWxpZCBzZXJ2aWNlIGtleSwgd2UgY2FuIHRyaWdnZXIgYW4gaW1tZWRpYXRlIHJlc2V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBMYW5nZSA8dGhvbWFzQGNvcmVsYXR1cy5zZT4KCmNvbW1pdCA2Y2M3YmE5ZWQ0MzEwNjk0NmFhOWFhODY4MzAyYWEyZmFmMWQxN2JlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIE1heSAxNSAxMDowNzo0MyAyMDA5ICswMjAwCgogICAgdmlkZW86IEFkZCBhbiBvcHRpb24gdG8gc2tpcCB2aWRlbyBpbml0aWFsaXphdGlvbgoKICAgIFRoaXMgcGF0Y2ggYWRkcyBhbiBvcHRpb24gdG8gc2tpcCB0aGUgdmlkZW8gaW5pdGlhbGl6YXRpb24gb24gZm9yIGFsbAogICAgdmlkZW8gZHJpdmVycy4gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBDUENJNzUwIHdoaWNoIGNhbiBiZSBidWlsdCBhcwogICAgQ1BDSSBob3N0IGFuZCBhZGFwdGVyL3RhcmdldCBib2FyZC4gQW5kIHRoZSBhZGFwdGVyIGJvYXJkIGNhbid0CiAgICBhY2Nlc3MgdGhlIHZpZGVvIGNhcmRzIGxvY2F0ZWQgb24gdGhlIENvbXBhY3RQQ0kgYnVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIENjOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CgogICAgUmViYXNlZCBhZ2FpbnN0IHNpbXBsaWZ5aW5nIHBhdGNoLgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBmNjJmNjQ2OTJmZjdmNjIyNmFkMjIxZDVkZjY0ODdlYTVlZjM5YmRkCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIE1heSAxNSAxMDowNzo0MiAyMDA5ICswMjAwCgogICAgZHJ2X3ZpZGVvX2luaXQoKTogc2ltcGxpZnkgbG9naWMKCiAgICBTaW1wbGlmeSBuZXN0aW5nIG9mIGRydl92aWRlb19pbml0KCkgYW5kIHVzZSBhIGNvbnNpc3RlbnQgd2F5IG9mCiAgICBpbmRpY2F0aW5nIGZhaWx1cmUgLyBzdWNjZXNzLiBCZWZvcmUsIGl0IHRvb2sgbWUgc29tZSB0aW1lIHRvIHJlYWxpemUKICAgIHdoaWNoIG9mIHRoZSByZXR1cm5zIHdhcyBkdWUgdG8gYW4gZXJyb3IgY29uZGl0aW9uIGFuZCB3aGljaCBvZiB0aGVtCiAgICBpbmRpY2F0ZWQgc3VjY2Vzcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgQ2M6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCAxNjk5ZGE2Mjk3YjhjMjJkYTE2Y2Y4NWIzYzc5MTkyZjFhNmQ3MGNhCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIE1heSAxMyAyMTowMToxMyAyMDA5ICswMjAwCgogICAgYXQ5MTogcmVncm91cCBJUCBodyBpbml0IGluIG9uZSBmaWxlIHBlciBzb2MKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDI4YjAwMzI0YmVjZjM1NTIxMzRhZTFlMDg2NTA5ZGM5YzNkNmU5MzIKQXV0aG9yOiBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KRGF0ZToJRnJpIE1heSAxNSAyMzo0ODozNyAyMDA5ICswMjAwCgogICAgZG0zNTUgZXZtIHN1cHBvcnQKCiAgICBJbml0aWFsIFUtQm9vdCBzdXBwb3J0IGZvciB0aGUgRGFWaW5jaSBETTM1NSBFVk0uICBUaGlzIGlzIGEgYm9hcmQKICAgIGZyb20gU3BlY3RydW0gRGlnaXRhbC4gIEJvYXJkIGRvY3MgaW5jbHVkZSBzY2hlbWF0aWMgYW5kIGZpcm13YXJlCiAgICBmb3IgaXRzIG1pY3JvY29udHJvbGxlcjoKCiAgICAgIGh0dHA6Ly9jNjAwMC5zcGVjdHJ1bWRpZ2l0YWwuY29tL2V2bWRtMzU1L3JldmQvCgogICAgTW9zdCBvZiB0aGUgRE0zNTUgY2hpcCBpcyBmdWxseSBkb2N1bWVudGVkIGJ5IFRJLCB0aGUgbW9zdCBub3RhYmxlCiAgICBleGNlcHRpb24gYmVpbmcgdGhlIE1QRUcvSlBFRyBjb3Byb2Nlc3NvciAocHJvZ3JhbW1hYmxlIHVzaW5nIGNvZGVjcwogICAgYXZhaWxhYmxlIGF0IG5vIGNvc3QgZnJvbSBUSSksIHdoaWNoIGlzIG9taXR0ZWQgZnJvbSBpdHMgRE0zMzUgc2libGluZzoKCiAgICAgIGh0dHA6Ly9mb2N1cy50aS5jb20vZG9jcy9wcm9kL2ZvbGRlcnMvcHJpbnQvdG1zMzIwZG0zNTUuaHRtbAoKICAgIFRoaXMgdmVyc2lvbiBjYW4gYm9vdCBmcm9tIHRoZSBvbi1ib2FyZCBETTkwMDAgRXRoZXJuZXQgY2hpcCwgYWZ0ZXIKICAgIGJlaW5nIGxvYWRlZCAoZnJvbSBOQU5ELCBNTUMvU0QsIG9yIFVBUlQpLglJbiB0aGUgbmVhciBmdXR1cmUsIE5BTkQKICAgIGFuZCBVU0Igc3VwcG9ydCBjb3VsZCBiZSBhZGRlZCAuLi4gTkFORCBzdXBwb3J0IGlzIGJlaW5nIGhlbGQgYmFjawogICAgdW50aWwgdGhlIHN1cHBvcnQgZm9yIHRoZSA0LWJpdCBFQ0MgaGFyZHdhcmUgaXMgcmVhZHkuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Cgpjb21taXQgMTM2Y2Y5MmRjOWU4NGM5YTFiZjU2N2YxZmU3NDEwOTJiZjc2NTQ5NQpBdXRob3I6IFNhbmplZXYgUHJlbWkgPHByZW1pQHRpLmNvbT4KRGF0ZToJRnJpIE1heSAxNSAyMzo0ODozNyAyMDA5ICswMjAwCgogICAgT01BUDNFVk06IFNldCBkZWZhdWx0IGJvb3RmaWxlCgogICAgVGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBkb2Vzbid0IGRlZmluZSBkZWZhdWx0CiAgICBib290ZmlsZTsgbGVhZGluZyB0byB0aGlzIHdhcm5pbmcgYXQgZXhlY3V0aW9uOgoKICAgIE9NQVAzX0VWTSAjIGRoY3AKICAgIC4uLgogICAgLi4uCiAgICBESENQIGNsaWVudCBib3VuZCB0byBhZGRyZXNzIDE5Mi4xNjguMS4xMQogICAgKioqIFdhcm5pbmc6IG5vIGJvb3QgZmlsZSBuYW1lOyB1c2luZyAnQUMxOEJFMTYuaW1nJwogICAgVEZUUCBmcm9tIHNlcnZlciAwLjAuMC4wOyBvdXIgSVAgYWRkcmVzcyBpcyAxOTIuMTY4LjEuMTE7CiAgICBzZW5kaW5nIHRocm91Z2ggZ2F0ZXdheSAxOTIuMTY4LjEuMQogICAgRmlsZW5hbWUgJ0FDMThCRTE2LmltZycuCiAgICBMb2FkIGFkZHJlc3M6IDB4ODIwMDAwMDAKICAgIExvYWRpbmc6ICoKICAgIFRGVFAgZXJyb3I6ICdGaWxlIG5vdCBmb3VuZCcgKDEpCgogICAgU2lnbmVkLW9mZi1ieTogU2FuamVldiBQcmVtaSA8cHJlbWlAdGkuY29tPgoKY29tbWl0IDFhMDlkMDVhYmZjNmQ0ZDRmMWZjZTlmNmJkMDI3NWJkMWMwOGQ0ZjUKQXV0aG9yOiBzLXBhdWxyYWpAdGkuY29tIDxzLXBhdWxyYWpAdGkuY29tPgpEYXRlOglGcmkgTWF5IDE1IDIzOjQ4OjM2IDIwMDkgKzAyMDAKCiAgICBBUk0gRGFWaW5jaTogTWlub3IgVXBkYXRlcyB0byBiYXNlIGFkZHJlc3NlcwoKICAgIFBhdGNoIGFkZHMgYmFzZSBhZGRyZXNzZXMgZm9yIERhVmluY2kgRE0zNjUuIFVwZGF0ZWQgcGF0Y2hlcyBmb3IgRE0zNjUKICAgIHdpbGwgYmUgcG9zdGVkIHNvb24uCgogICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgoKY29tbWl0IGRlMTkzZThlMzY5ZjVmMDI5ZWQzYjZlMmZjNjAzNDEwOThlZWE3NjYKQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CkRhdGU6CUZyaSBNYXkgMTUgMjM6NDg6MzYgMjAwOSArMDIwMAoKICAgIFpPT00yIEFkZCBzdXBwb3J0IGZvciBkZWJ1ZyBib2FyZCBkZXRlY3Rpb24uCgogICAgVGhlIGxvZ2ljcGQgd2ViIHNpdGUgaXMgYSBnb29kIHNvdXJjZSBmb3IgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvbiB0aGlzIGJvYXJkLgogICAgUGxlYXNlIHN0YXJ0IGxvb2tpbmcgaGVyZSBpZiB0aGUgYmVsb3cgbGlua3MgYXJlIGJyb2tlbi4KICAgIGh0dHA6Ly93d3cubG9naWNwZC5jb20KCiAgICBUaGlzIGlzIGEgcGRmIG9mIHRoZSBwcm9kdWN0CiAgICBodHRwOi8vd3d3LmxvZ2ljcGQuY29tL3NpdGVzL2RlZmF1bHQvZmlsZXMvMTAxMjY1OUFfWm9vbV9PTUFQMzR4LUlJX01EUF9CcmllZi5wZGYKCiAgICBUaGlzIGlzIGEgcGRmIG9mIHRoZSBwcm9kdWN0IHF1aWNrIHN0YXJ0IGd1aWRlLgogICAgVGhlIGRlYnVnIGJvYXJkIGlzIGRlc2NyaWJlZCBoZXJlLgogICAgaHR0cDovL3N1cHBvcnQubG9naWNwZC5jb20vZG93bmxvYWRzLzExNjUvCgogICAgVGhpcyBpcyBhIHdpa2kgc2hvd2luZyB0aGUgZGVidWcgYm9hcmQgaW4gdXNlCiAgICBodHRwczovL29tYXB6b29tLm9yZy9nZi9wcm9qZWN0L29tYXB6b29tL3dpa2kvP3BhZ2VuYW1lPUdldHRpbmdTdGFydGVkV2l0aFpvb21JSV9BS0FfT01BUDM0WElJX01EUAoKICAgIFRoZSB6b29tMiBoYXMgYW4gYXV4aWxsYXJ5IGJvYXJkIHRoYXQgY29udGFpbnMgdGhlIHNlcmlhbCwgbmV0LCBqdGFnIGFuZAogICAgYmF0dGVyeSBzaW11bGF0b3IuCVRoaXMgY2hhbmdlIHN1cHBvcnRzIGEgcnVudGltZSBjaGVjayBpZiB0aGUgZGVidWcgYm9hcmQgaXMKICAgIGNvbm5lY3RlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Cgpjb21taXQgMGM4NzJlY2QwMWQ2NzgyYWU5ZDM3YjZlYjcyMTQwNGE0YTQ4ZjM1NgpBdXRob3I6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KRGF0ZToJRnJpIE1heSAxNSAyMzo0ODozNiAyMDA5ICswMjAwCgogICAgT01BUDMgUG9ydCBrZXJuZWwgb21hcCBncGlvIGludGVyZmFjZS4KCiAgICBQb3J0IHZlcnNpb24gMi42LjI3IG9mIHRoZSBsaW51eCBrZXJuZWwncyBvbWFwIGdwaW8gaW50ZXJmYWNlIHRvIHUtYm9vdC4KICAgIFRoZSBvcmlnbmFsIHNvdXJjZSBpcyBpbiBsaW51eC9hcmNoL2FybS9wbGF0LW9tYXAvZ3Bpby5jCgogICAgU2VlIGRvYy9SRUFETUUub21hcDMgZm9yIGluc3RydWN0aW9ucyBvbiB1c2UuCgogICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgoKY29tbWl0IDM3NmFlZTc4ZGQ2NmFlMGRjNGNlNDk2Y2JlOTNlY2M4MGFhYWQ0OGUKQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CkRhdGU6CUZyaSBNYXkgMTUgMjM6NDg6MzYgMjAwOSArMDIwMAoKICAgIFpPT00yIEFkZCBpbml0aWFsIHN1cHBvcnQgZm9yIFpvb20yCgogICAgWm9vbTIgaXMgYSBuZXcgYm9hcmQgZnJvbSBUZXhhcyBJbnN0cnVtZW50cyBhbmQgTG9naWNQRAoKICAgIFRoZSBsb2dpY3BkIHdlYiBzaXRlIGlzIGEgZ29vZCBzb3VyY2UgZm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gb24gdGhpcyBib2FyZC4KICAgIFBsZWFzZSBzdGFydCBsb29raW5nIGhlcmUgaWYgdGhlIGJlbG93IGxpbmtzIGFyZSBicm9rZW4uCiAgICBodHRwOi8vd3d3LmxvZ2ljcGQuY29tCgogICAgVGhpcyBpcyBhIHBkZiBvZiB0aGUgcHJvZHVjdAogICAgaHR0cDovL3d3dy5sb2dpY3BkLmNvbS9zaXRlcy9kZWZhdWx0L2ZpbGVzLzEwMTI2NTlBX1pvb21fT01BUDM0eC1JSV9NRFBfQnJpZWYucGRmCiAgICBUaGlzIGlzIHRoZSBwcm9kdWN0IGRlc2NyaXB0aW9uIHdlYiBwYWdlCiAgICBodHRwOi8vd3d3LmxvZ2ljcGQuY29tL3Byb2R1Y3RzL2RldmVsb3BtZW50LWtpdHMvdGV4YXMtaW5zdHJ1bWVudHMtem9vbSVFMiU4NCVBMi1vbWFwMzR4LWlpLW1kcAoKICAgIFRoaXMgcGF0Y2ggcHJvdmlkZXMgYSB6b29tMiBiYXNlIHRhcmdldCBieSBjb3B5aW5nIHpvb20xIGFuZCBieSBtYWtpbmcgc29tZQogICAgb2J2aW91cyBjaGFuZ2VzLgoKICAgIFRvIGNvbmZpZ3VyZSwgcnVuCiAgICBtYWtlIG9tYXAzX3pvb20yX2NvbmZpZwoKICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KCmNvbW1pdCA1MzkyNWFjZjFiNWMxYTFlNjIzMGNkYTI2OTc2NDBjZDA1YmQxMTA0CkF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgpEYXRlOglGcmkgTWF5IDE1IDIzOjQ4OjMzIDIwMDkgKzAyMDAKCiAgICBBUk0gRGFWaW5jaTpDb25zb2xpZGF0ZSBjb21tb24gdS1ib290LmxkcwoKICAgIFRoZSB1LWJvb3QubGRzIGlzIGNvbW1vbiBmb3IgYWxsIERhVmluY2kgYm9hcmRzLiBUaGUgcGF0Y2ggcmVtb3ZlcwogICAgbXVsdGlwbGUgaW5zdGFuY2VzIGFuZCBtb3ZlcyB0aGUgdS1ib290LmxkcyB0byAvY3B1L2FybTkyNmVqcy9kYXZpbmNpCiAgICBmb2xkZXIuIFRoaXMgYWRkcmVzc2VzIG9uZSBvZiB0aGUgY29tbWVudHMgaSByZWNlaXZlZCB3aGlsZSBzdWJtaXR0aW5nCiAgICBwYXRjaGVzIGZvciBETTN4eAoKICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KCmNvbW1pdCA2OGE1MzFmZDQ2NWY1YzBiM2QzNzNlMDAxMGFmZWQzMmU4OGQzN2M0CkF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgpEYXRlOglGcmkgTWF5IDE1IDIzOjQ3OjUyIDIwMDkgKzAyMDAKCiAgICBPTUFQIENvbnNvbGlkYXRlIGNvbW1vbiB1LWJvb3QubGRzIHRvIGNwdSBsYXllci4KCiAgICBUaGUgdS1ib290LmxkcyBmaWxlIGlzIGNvbW1vbiBmb3IgYWxsIG9tYXAgYm9hcmRzLgogICAgTW92ZSBhIGNsZWFuZWQgdXAgdmVyc2lvbiB0byB0aGUgY3B1IGxheWVyIGFuZCBhZGQgbWFrZWZpbGUgbG9naWMgdG8gdXNlIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KCmNvbW1pdCA2NWE3NmQ0Zjk0N2ExOTNlNTdiYjhmODA5M2M0ODFmMjdlMDU5ZjhmCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIE1heSAxNSAyMzo0NzoxNCAyMDA5ICswMjAwCgogICAgYXJtL2RjYzogYWRkIHhzY2FsZSBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA2NmU4ZjlkYTY4NzlmZTM3ZjMxNTliMzk5N2JmZjg3NDg0MmRjNTFkCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIE1heSAxNSAyMzo0NzoxNCAyMDA5ICswMjAwCgogICAgYXJtL2RjYzogdXNlIHN0YXRpYyBzdXBwb3J0IHRvIGFsbG93IHRvIHVzZSBpdCBhdCBhbnl0aW1lCgogICAgdGhlIGRjYyBjYW4gYmUgdXNlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIGNwdQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNzg5M2FhMWViNmY1MmMzOTU3ZWZjMzAxYjQzNmYxZmExMWU5MWEwMApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBNYXkgMTUgMjM6NDc6MTMgMjAwOSArMDIwMAoKICAgIEFSTTogVXBkYXRlIG1hY2gtdHlwZXMKCiAgICB1cGRhdGUgYWdhaW5zdCBsaW51eCB2Mi42LjI5CgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAyOTA3Nzk4OTI2ZWU5MzJmNDUzYWM4NTM4ZTdhNmMwNWMxODQyOGE1CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIE1heSAxNSAyMzo0NzoxMyAyMDA5ICswMjAwCgogICAgYXJtOTIwLzkyNi85MjY6IHJlbW92ZSBub24gbmVlZGVkIGhlYWRlcgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMjY5ZGZlYTAxN2IwOWM1YTk5OWQzMDUzZDAwNTA1YzE5Nzg5YzM1MApBdXRob3I6IERhdmlkIEJyb3duZWxsIDxkYXZpZC1iQHBhY2JlbGwubmV0PgpEYXRlOglGcmkgTWF5IDE1IDIzOjQ3OjEzIDIwMDkgKzAyMDAKCiAgICBkYXZpbmNpIGRtNjQ0NmV2bSBOQU5EIHVwZGF0ZQoKICAgIFRoaXMgdXBkYXRlcyB0aGUgb3B0aW9uYWwgKG5vbi1kZWZhdWx0ISkgTkFORCBzdXBwb3J0IGZvciB0aGUKICAgIERhVmluY2kgRE02NDQ2IEVWTToKCiAgICAgLSBpbmNsdWRlIE1URCBwYXJ0aXRpb25pbmcsIGRlZmF1bHRpbmcgdG8gd2hhdCBMaW51eCB1c2VzCgogICAgIC0gdXNlIGEgZmxhc2gtYmFzZWQgQkJULCB3aGljaCBhbW9uZyBvdGhlciB0aGluZ3Mgc3BlZWRzIGJvb3R1cAoKICAgIFRoaXMgbWF0Y2hlcyBjb2RlIHRoYXQncyBub3cgcXVldWVkIGZvciBtYWlubGluZSBMaW51eCwgYW5kIG1pZ2h0CiAgICBldmVuIG1lcmdlIGluIGFuIHVwY29taW5nIDIuNi4zMC1yYzsgYW5kIHRoZSBNVElEUyBhcmUgc2V0IHVwIHNvCiAgICB0aGF0IHRoZSBVLUJvb3QgJG10ZHBhcnRzIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbiBiZSBwYXNzZWQgYXMtaXMKICAgIG9uIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIGFzIGEgY21kbGluZXBhcnQgb3ZlcnJpZGUuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Cgpjb21taXQgN2E0ZjUxMWI1OWYwOGY1MWRkZTRjZWFjYmQ0NWY0OWI4YmYyYTVjYwpBdXRob3I6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgpEYXRlOglGcmkgTWF5IDE1IDIzOjQ3OjEyIDIwMDkgKzAyMDAKCiAgICBkYXZpbmNpOiBkaXNwbGF5IGNvcnJlY3QgY2xvY2sgaW5mbwoKICAgIE1vdmUgdGhlIGNsb2NrLXJhdGUgZHVtcGluZyBjb2RlIGludG8gdGhlIGNwdS8uLi4vZGF2aW5jaSBhcmVhCiAgICB3aGVyZSBpdCBzaG91bGQgaGF2ZSBiZWVuLCBlbmFibGVkIGJ5IENPTkZJR19ESVNQTEFZX0NQVUlORk8sCiAgICB1cGRhdGluZyB0aGUgZm9ybWF0IGFuZCBzaG93aW5nIHRoZSBEU1AgY2xvY2sgKHdoZXJlIHJlbGV2YW50KS4KCiAgICBTd2l0Y2ggYm9hcmRzIHRvIHVzZSB0aGUgY3B1aW5mbygpIGhvb2sgZm9yIHRoaXMgc3R1ZmYuCgogICAgUmVtb3ZlIGEgZmV3IG5vdy1vYnNvbGV0ZSBQTEwgI2RlZmluZXMuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Cgpjb21taXQgZGFlYTkyODgyOTA5OGNhZTNjOWVjNmI4MDFlNTJiYTYxNjcyNTAzNApBdXRob3I6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KRGF0ZToJRnJpIE1heSAxNSAyMzo0NzoxMiAyMDA5ICswMjAwCgogICAgWk9PTTEgUmVtb3ZlIG1vcmUgbGVnYWN5IE5BTkQgZGVmaW5lcy4KCiAgICBUaGVzZSBsZWdhY3kgTkFORCBkZWZpbmVzIGFyZSBubyBsb25nZXIgbmVlZGVkIGJ5IHRoaXMgdGFyZ2V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KCmNvbW1pdCA2NWZkMjFjODBmY2FjYTJiYmZlM2FiMDZhYjZhYzY4MjA3NDA4MDc4CkF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgpEYXRlOglGcmkgTWF5IDE1IDIzOjQ3OjEyIDIwMDkgKzAyMDAKCiAgICBMRUQgQWRkIGRvY3VtZW50YXRpb24gZGVzY3JpYmluZyB0aGUgc3RhdHVzX2xlZCBhbmQgY29sb3VyIGxlZCBBUEkuCgogICAgVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIHUtYm9vdCBzdGF0dXMgTEVEIEFQSS4KICAgIFRoaXMgYWxsb3dzIGNvbW1vbiB1LWJvb3QgY29tbWFuZHMgdG8gdXNlIGEgYm9hcmQncyBsZWRzIHRvCiAgICBwcm92aWRlIHN0YXR1cyBmb3IgYWN0aXZpdGllcyBsaWtlIGJvb3RpbmcgYW5kIGRvd25sb2FkaW5nIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KCmNvbW1pdCA3Y2RmODA0ZjM0Mzc4YjkxMGI0YzRlZGQyZGFjN2UzY2E2MWMwODI1CkF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgpEYXRlOglGcmkgTWF5IDE1IDIzOjQ3OjEyIDIwMDkgKzAyMDAKCiAgICBBUk0gQWRkIGJsdWUgY29sb3VyIExFRCB0byBzdGF0dXNfbGVkLgoKICAgIFRoZXJlIGlzIGV4aXRpbmcgc3VwcG9ydCBmb3IgcmVkLHllbGxvdyxncmVlbiBidXQgbm8gYmx1ZS4KICAgIFRoZSBtYWluIExFRCBvbiB0aGUgem9vbTIgaXMgYSBibHVlIExFRC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Cgpjb21taXQgYjU0Mzg0ZTNiYTZiNTUzNTc1MWYzMTdmY2QzOTQwYTUzZWVkMGQzYQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBNYXkgMTUgMjM6NDc6MDIgMjAwOSArMDIwMAoKICAgIGFybTogdGltZXIgYW5kIGludGVycnVwdCBpbml0IHJld29yawoKICAgIGFjdHVhbGx5IHRoZSB0aW1lciBpbml0IHVzZSB0aGUgaW50ZXJydXB0X2luaXQgYXMgaW5pdCBjYWxsYmFjawogICAgd2hpY2ggbWFrZSB0aGUgaW50ZXJydXB0IGFuZCB0aW1lciBpbXBsZW1lbnRhdGlvbiBkaWZmaWN1bHQgdG8gZm9sbG93CgogICAgc28gbm93IHJlbmFtZSBpdCBhcyBpbnQgdGltZXJfaW5pdCh2b2lkKSBhbmQgdXNlIGludGVycnVwdF9pbml0IGZvciBpbnRlcnJ1cHQKCiAgICBidHcgYWxzbyByZW1hbmUgdGhlIGNvcnJlc3BvbmRpbmcgZmlsZSB0byB0aGUgZnVuY3Rpb25uYWxpdHkgaW1wbGVtZW50ZWQKCiAgICBhcyBpeHAgYXJjaCBpbXBsZW1lbnQgdHdvIHRpbWVyIC0gb25lIGJhc2VkIG9uIGludGVycnVwdCAtIHNvIGFsbCB0aGUgdGltZXIKICAgIHJlbGF0ZWQgY29kZSBpcyBtb3ZlZCB0byB0aW1lci5jCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA1YjRiZWJlMWQyMGM0ZjJiNzBkNDhiMDZhZWQxMDE2Nzg1ZWZjYzI1CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIE1heSAxNSAyMzo0NToyMiAyMDA5ICswMjAwCgogICAgT01BUDM6IFJlb3JnYW5pemUgTWFrZWZpbGUgc3R5bGUKCiAgICBSZWZvcm1hdCBDT0JKUyBoYW5kbGluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KCmNvbW1pdCBiMTk2Njk4MjcxODM0N2Y2NzMxN2IzZmIzNTY0Mzk3NDNjYTY4YTM3CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIE1heSAxNSAyMzo0NToyMiAyMDA5ICswMjAwCgogICAgT01BUDM6IFJlbW92ZSBkdWJsaWNhdGVkIGludGVycnVwdCBjb2RlCgogICAgUmVtb3ZlIGR1cGxpY2F0ZWQgaW50ZXJydXB0IGNvZGUuIE9yaWdpbmFsLCBpZGVudGljYWwgY29kZSBjYW4gYmUgZm91bmQKICAgIGluIGxpYl9hcm0vaW50ZXJydXB0cy5jCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Cgpjb21taXQgYWM3MjYwYTQxOTAzMTVlYmE0YTZlNTI2Yzc2NGY2Y2FkMGJiZjhjNQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBNYXkgMTUgMjM6NDU6MjIgMjAwOSArMDIwMAoKICAgIGF0OTFybTkyMDA6IG1vdmUgcmVzZXQgY29kZSB0byByZXNldC5jCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAyYzc1Yzc4ZDk0NTc0ZWU5OTZkYjJhYTliNTExMjU4NTE5NDcxZGQ2CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIE1heSAxNSAyMzo0NToyMiAyMDA5ICswMjAwCgogICAgaXhwL2ludGVycnVwdHM6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDhmYzNiYjRiMDYwMzUxNmFkNjQxZTJkZTI1MmE0MDBiODVmZDg2OWIKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglGcmkgTWF5IDE1IDIzOjQ1OjIwIDIwMDkgKzAyMDAKCiAgICBhcm06IGNsZWFudXAgcmVtYWluaW5nIENPTkZJR19JTklUX0NSSVRJQ0FMCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBjMjBlMjhmNDlhYWYzOGM3ZGVkZTQ2ZDhmOGZlODIzNGZlOTA4MjJjCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIE1heSAxNSAyMzo0NToxMiAyMDA5ICswMjAwCgogICAgYXJtOTQ2ZXM6IHJlbW92ZSBub24gdXNlZCB0aW1lcgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZjFkOTQ0ZTMwZWI4ZmY4OTA4MGZhMDNmYjk4ZDhmYjVjODIzODhkMgpBdXRob3I6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgpEYXRlOglGcmkgTWF5IDE1IDIzOjQ0OjA5IDIwMDkgKzAyMDAKCiAgICBkYXZpbmNpOiBhZGQgYmFzaWMgZG0zNTUvZG0zNTAvZG0zMzUgc3VwcG9ydAoKICAgIEFkZCBzb21lIGJhc2ljIGRlY2xhcmF0aW9ucyBmb3IgRGFWaW5jaSBETTM1NS9ETTM1MC9ETTMzNSBzdXBwb3J0LAogICAga2V5ZWQgb24gQ09ORklHX1NPQ19ETTM1NS4JKERNMzVYIGlzbid0IHF1aXRlIHJpZ2h0IGJlY2F1c2UgdGhlCiAgICBETTM1NyBpcyB2ZXJ5IGRpZmZlcmVudDsgd2hpbGUgdGhlIERNMzU1IGlzIGxpa2UgYSBETTM1NSB3aXRob3V0CiAgICB0aGUgTVBFRy9KUEVHIGNvcHJvY2Vzc29yKS4KCiAgICBUaGVzZSBoYXZlIGRpZmZlcmVudCBwZXJpcGhlcmFscyB0aGFuIHRoZSBETTY0NDYsIGFuZCBzb21lIG9mCiAgICB0aGUgcGVyaXBoZXJhbHMgYXJlIGF0IGRpZmZlcmVudCBhZGRyZXNzZXMuICBOb3RhYmx5IGZvciBVLUJvb3QsCiAgICB0aGVyZSdzIG5vIEVNQUMsIGFuZCB0aGUgTkFORCBjb250cm9sbGVyIGFkZHJlc3MgaXMgZGlmZmVyZW50CgogICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Cgpjb21taXQgYmQzNmZkYzE0NjY1NGY5ZGU0ZTJhZDM0NjEyNmU2YmQyOTkwZmIxOQpBdXRob3I6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgpEYXRlOglGcmkgTWF5IDE1IDIzOjQ0OjA5IDIwMDkgKzAyMDAKCiAgICBkYXZpbmNpOiBmaXggZG02NDR4IGJ1Z2xldHMKCiAgICBGaXggdHdvIGJ1Z2xldHMgaW4gdGhlIGRtNjQ0eCBzdXBwb3J0OiAgZG9uJ3Qgc2V0IHR3byBtdXN0LWJlLXplcm8KICAgIGJpdHMgaW4gdGhlIFVBUlQgbWFuYWdlbWVudCByZWdpc3RlcjsgYW5kIG9ubHkgaW5jbHVkZSB0aGUgSTJDIGhvb2tzCiAgICBpZiB0aGUgSTJDIGRyaXZlciBpcyBiZWluZyBpbmNsdWRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCmNvbW1pdCBmNzkwNDM2ODFmZjQ0YmFlNDM1YzA2ZjgzMGU1MWUxNTQ2ZGI3ZTE5CkF1dGhvcjogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CkRhdGU6CUZyaSBNYXkgMTUgMjM6NDQ6MDggMjAwOSArMDIwMAoKICAgIGRhdmluY2k6IHNwbGl0IG91dCBzb21lIGRtNjQ0eC1zcGVjaWZpYyBiaXRzIGZyb20gcHNjCgogICAgU3BsaXQgb3V0IERhVmluY2kgRE02NDQ2LXNwZWNpZmljIGJpdHMgZnJvbSBtb3JlIGdlbmVyaWMgYml0czoKCiAgICAgLSBBZGQgYSBDT05GSUdfU09DX0RNNjQ0WC4gIEFsbCBjdXJyZW50IGJvYXJkcyB1c2UgRE02NDQ2IGNoaXBzOwogICAgICAgRE02NDQzIGFuZCBETTY0NDEgY2hpcHMgZGlmZmVyIGluIGF2YWlsYWJsZSBwZXJpcGhlcmFscy4KCiAgICAgLSBNb3ZlIG1vc3QgRE02NDRYLXNwZWNpZmljIGJpdHMgZnJvbSBwc2MuYyB0byBhIG5ldyBkbTY0NHguYyBmaWxlLAogICAgICAgd2hpY2ggaXMgY29uZGl0aW9uYWxseSBidWlsdC4gIEl0IHByb3ZpZGVzIGRldmljZS1zcGVjaWZpYyBzZXR1cC4KCiAgICBQbHVzIG1pbm9yIGNvZGluZyBzdHlsZSBhbmQgY29tbWVudCB1cGRhdGVzIHdpdGggcmVzcGVjdCB0byB0aGUgUFNDLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKY29tbWl0IDQ4ZWY1NzI5NTU1ZjQxZjUxNjE4YjZhMzAxNmFjNWM1M2M3Yzc1ZGMKQXV0aG9yOiBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KRGF0ZToJRnJpIE1heSAxNSAyMzo0NDowOCAyMDA5ICswMjAwCgogICAgZGF2aW5jaTogY3B1LXNwZWNpZmljIGJ1aWxkIHVzZXMgY29uZGl0aW9uYWwgbWFrZSBzeW50YXgKCiAgICBVcGRhdGUgY3B1L2FybTkyNmVqcy9kYXZpbmNpL01ha2VmaWxlIHRvIHVzZSBDT0JKLXkgdHlwZSBzeW50YXguCiAgICBBZGQgdGhlIGZpcnN0IGNvbmRpdGlvbmFsOiBmb3IgRU1BQyBkcml2ZXIgc3VwcG9ydC4gIE5vdCBhbGwKICAgIGNoaXBzIGhhdmUgYW4gRU1BQzsgYW5kIGJvYXJkcyBtaWdodCBub3QgdXNlIGl0LCBhbnl3YXkuCgogICAgVGhpcyBkb2Vzbid0IHRvdWNoIFBIWSBjb25maWd1cmF0aW9uOyB0aGF0IHNob3VsZCBldmVudHVhbGx5CiAgICBiZWNvbWUgY29uZGl0aW9uYWwgdG9vLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKY29tbWl0IDdiNzgwOGFlNmRhY2U1OTI4N2Y1NjVlOTMyM2NkYTdiMDk4YTU2MTIKQXV0aG9yOiBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KRGF0ZToJRnJpIE1heSAxNSAyMzo0NDowNiAyMDA5ICswMjAwCgogICAgZGF2aW5jaTogbW92ZSBwc2Mgc3VwcG9ydCBib2FyZC0tPmNwdQoKICAgIE1vdmUgRGFWaW5jaSBQU0Mgc3VwcG9ydCBmcm9tIGJvYXJkLyogdG8gY3B1Lyogd2hlcmUgaXQgYmVsb25ncy4KICAgIFRoZSBQU0MgbW9kdWxlIG1hbmFnZXMgY2xvY2tzIGFuZCByZXNldHMgZm9yIGFsbCBEYVZpbmNpLWZhbWlseQogICAgU29DcywgYW5kIGlzbid0IGF0IGFsbCBib2FyZC1zcGVjaWZpYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCmNvbW1pdCA4NGY3NDExY2I5MDFiOGRmMjM5MWNmN2U5NjdhZDA3MzdmNjE5NGFhCkF1dGhvcjogRGF2aWQgQnJvd25lbGwgPGRhdmlkLWJAcGFjYmVsbC5uZXQ+CkRhdGU6CVR1ZSBBcHIgMTQgMDg6NTI6NTggMjAwOSAtMDcwMAoKICAgIERhVmluY2kgbm93IHJlc3BlY3RzIFNLSVBfTE9XTEVWRUxfSU5JVAoKICAgIERvbid0IG5lZWRsZXNzbHkgaW5jbHVkZSBsb3dsZXZlbCBpbml0IGNvZGU7IHRoYXQncyBvbmx5IHJlYWxseQogICAgbmVlZGVkIHdpdGggYm9vdC1mcm9tIE5PUiAobm90IGJvb3QtZnJvbS1OQU5EKS4gIFRoZSAybmQgc3RhZ2UKICAgIGxvYWRlciAoVUJMKSBoYW5kbGVzIHRoYXQgYmVmb3JlIGl0IGxvYWRzIFUtQm9vdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCmNvbW1pdCA2NDFlMDkyNWU0YmY3YWRmOGUyZTA0ZTNhZDgxYjg0MGZkNzFjYWRkCkF1dGhvcjogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CkRhdGU6CVN1biBBcHIgMTIgMjI6NDk6MjYgMjAwOSAtMDcwMAoKICAgIERhVmluY2kgRXRoZXJuZXQgY2xlYW51cAoKICAgIENoaXBzIHdpdGhvdXQgdGhlIEVNQUMgY29udHJvbGxlciB3b24ndCBuZWVkIHRoZSB1dGlsaXRpZXMKICAgIGl0IHVzZXMgdG8gcmVhZCBhbiBFdGhlcm5ldCBhZGRyZXNzIGZyb20gRUVQUk9NOyBzbyBkb24ndAogICAgaW5jbHVkZSB0aGVtIG5lZWRsZXNzbHkuCgogICAgVXNlIGlzX3ZhbGlkX2V0aGVyKCkgdG8gdmFsaWRhdGUgdGhlIGFkZHJlc3MgZnJvbSBFRVBST00uCiAgICBBbGwtemVybyBhZGRyZXNzZXMgYXJlbid0IHRoZSBvbmx5IGludmFsaWQgYWRkcmVzc2VzLgogICAgQSBmdWxseSBlcmFzZWQgRUVQUk9NIHJldHVybnMgYWxsLW9uZXMsIGFsc28gaW52YWxpZC4uLgoKICAgIFN3aXRjaCB0aG9zZSBFdGhlcm5ldCB1dGlsaXRpZXMgdG8gdXNlICIlcE0iIGZvciBwcmludGluZwogICAgTUFDIGFkZHJlc3NlczsgYW5kIG5vdCBzYXkgUk9NIHdoZW4gdGhleSBtZWFuIEVFUFJPTS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KICAgIEFja2VkLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGM3OTBiMDRkMjMwMzYzZDAzOTM5ZGMwMDhiY2M4MGYzYmE0ZGUxYWUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBNYXkgMTEgMTU6NTA6MTIgMjAwOSArMDIwMAoKICAgIGxpYl9hcmNoL2JvYXJkLmM6IE1vdmUgbWFsbG9jIGluaXRpYWxpemF0aW9uIGJlZm9yZSBmbGFzaF9pbml0KCkKCiAgICBUaGlzIHBhdGNoIG1vdmVzIHRoZSBtYWxsb2MgaW5pdGlhbGl6YXRpb24gYmVmb3JlIGNhbGxpbmcgZmxhc2hfaW5pdCgpLgogICAgVXBjb21pbmcgY2hhbmdlcyB0byB0aGUgTk9SIEZMQVNIIGNvbW1vbiBDRkkgZHJpdmVyIHdpdGggb3B0aW9uYWwKICAgIE1URCBpbmZyYXN0cnVjdHVyZSBhbmQgTVREIGNvbmNhdGVuYXRpb24gc3VwcG9ydCB3aWxsIGNhbGwgbWFsbG9jKCkuCiAgICBBbmQgbm90aGluZyByZWFsbHkgc3BlYWtzIGFnYWluc3QgZW5hYmxpbmcgbWFsbG9jIGp1c3QgYSBsaXR0bGUgZWFybGllcgogICAgaW4gdGhlIGJvb3Qgc3RhZ2UuIFNvbWUgYXJjaGl0ZWN0dXJlcyBhbHJlYWR5IGVuYWJsZSBtYWxsb2MgYmVmb3JlCiAgICBjYWxsaW5nIGZsYXNoX2luaXQoKSBzbyB0aGV5IGRvbid0IG5lZWQgYW55IGNoYW5nZXMgaGVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBDYzogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIENjOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBDYzogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+CiAgICBDYzogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgogICAgQ2M6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KICAgIENjOiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+CiAgICBDYzogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIENjOiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KCmNvbW1pdCBkODczMTMzZjJiYTliZDYxM2Q1ZjY1NTJjMzFjYzcwZmIxM2YxNWQzCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gTWF5IDExIDEzOjQ2OjE0IDIwMDkgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBTZXF1b2lhIFJBTS1ib290aW5nIHRhcmdldAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBhbm90aGVyIGJ1aWxkIHRhcmdldCBmb3IgdGhlIEFNQ0MgU2VxdW9pYSBQUEM0NDBFUHgKICAgIGV2YWwgYm9hcmQuIFRoaXMgUkFNLWJvb3RpbmcgdmVyc2lvbiBpcyB0YXJnZXRlZCBmb3IgYm9hcmRzIHdpdGhvdXQKICAgIE5PUiBGTEFTSCAoTkFORCBib290aW5nKSB3aGljaCBuZWVkIGEgcG9zc2liaWxpdHkgdG8gaW5pdGlhbGx5CiAgICBwcm9ncmFtIHRoZWlyIE5BTkQgRkxBU0guIFVzaW5nIGEgSlRBRyBkZWJ1Z2dlciAoZS5nLiBCREkyMDAwLzMwMDApCiAgICBjb25maWd1cmVkIHRvIHNldHVwIHRoZSBTRFJBTSwgdGhpcyBkZWJ1Z2dlciBjYW4gbG9hZCB0aGlzIFJBTS0KICAgIGJvb3RpbmcgaW1hZ2UgdG8gdGhlIHRhcmdldCBhZGRyZXNzIGluIFNEUkFNIChpbiB0aGlzIGNhc2UgMHgxMDAwMDAwKQogICAgYW5kIHN0YXJ0IGl0IHRoZXJlLiBUaGVuIFUtQm9vdCdzIHN0YW5kYXJkIE5BTkQgY29tbWFuZHMgY2FuIGJlCiAgICB1c2VkIHRvIHByb2dyYW0gdGhlIE5BTkQgRkxBU0ggKGUuZy4gIm5hbmQgd3JpdGUgLi4uIikuCgogICAgSGVyZSB0aGUgY29tbWFuZHMgdG8gbG9hZCBhbmQgc3RhcnQgdGhpcyBpbWFnZSBmcm9tIHRoZSBCREkyMDAwOgoKICAgIDQ0MEVQWD5yZXNldCBoYWx0CiAgICA0NDBFUFg+bG9hZCAweDEwMDAwMDAgL3RmdHBib290L3NlcXVvaWEvdS1ib290LmJpbgogICAgNDQwRVBYPmdvIDB4MTAwMDAwMAoKICAgIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBpbWFnZSBhdXRvbWF0aWNhbGx5IHNjYW5zIGZvciBhbiBhbHJlYWR5CiAgICBpbml0aWFsaXplZCBTRFJBTSBUTEIgKGRldGVjdGVkIGJ5IEVQTj0wKS4gVGhpcyBUTEIgd2lsbCBub3QgYmUKICAgIGNsZWFyZWQuIFRoaXMgVExCIGRvZXNuJ3QgbmVlZCB0byBiZSBUTEIgIzAsIHRoaXMgUkFNLWJvb3RpbmcKICAgIHZlcnNpb24gd2lsbCBkZXRlY3QgaXQgYW5kIHByZXNlcnZlIGl0LiBTbyBib290aW5nIHZpYSBCREkyMDAwCiAgICB3aWxsIHdvcmsgYW5kIGJvb3Rpbmcgd2l0aCBhIGNvbXBsZXRlIGRpZmZlcmVudCBUTEIgaW5pdCB2aWEKICAgIFUtQm9vdCB3b3JrcyBhcyB3ZWxsLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4MzdkYjNkODdmNGJmZTkyNjE2MjlmYjRhMWJiNDMzNTA2YTMwNTZhCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglXZWQgTWF5IDYgMDg6NDE6NDUgMjAwOSAtMDQwMAoKICAgIHRvb2xzL2VudmNyYzogYWRkIC0tYmluYXJ5IG9wdGlvbiB0byBleHBvcnQgZW1iZWRkZWQgZW52CgogICAgVGhlIC0tYmluYXJ5IG9wdGlvbiB0byBlbnZjcmMgY2FuIGJlIHVzZWQgdG8gZXhwb3J0IHRoZSBlbWJlZGRlZCBlbnYgYXMgYQogICAgYmluYXJ5IGJsb2Igc28gdGhhdCBpdCBjYW4gYmUgbWFuaXB1bGF0ZWQvZXhhbWluZWQvd2hhdGV2ZXIgZXh0ZXJuYWxseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMThjYzdhZmQ5YTE1M2E2Njg1NGFmODYyZDE0YmEwMWM1NDk2Y2YwNwpBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVR1ZSBBcHIgMjggMTY6NTA6NTMgMjAwOSAtMDcwMAoKICAgIEVuYWJsZSBDT05GSUdfTkVUX01VTFRJIG9uIGFsbCByZW1haW5pbmcgUFBDNHh4IGJvYXJkcwoKICAgIEFsbCBpbi10cmVlIFBQQzR4eCBib2FyZHMgbm93IHVzZSBDT05GSUdfTkVUX01VTFRJCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3MGJlNmMyZDQwMDc2ZjE0MDYyYjg5MjE1MjY0OWY5YTYyODMyZmM5CkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVdlZCBBcHIgMjkgMDk6NTE6MDEgMjAwOSArMDIwMAoKICAgIDR4eDogQWRkIHN1cHBvcnQgZm9yIERQNDA1IGhhcmR3YXJlIHZhcmlhbnRzCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkZTQ3YTM0ZDRkZTFkMDA3YTg5NTFlZmQwNzIyODM1MTZkNTgwZmZhCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVdlZCBBcHIgMjkgMDk6NTE6MDAgMjAwOSArMDIwMAoKICAgIDR4eDogUmVtb3ZlIGJpbmFyeSBjcGxkIGJpdHN0cmVhbSBmcm9tIERQNDA1IGJvYXJkCgogICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSBjcGxkIGJpbmFyeSBiaXRzdHJlYW0gdGhhdCBpcwogICAgdXNlZCBieSBlc2QncyBjcGxkIGNvbW1hbmQgb24gRFA0MDUgYm9hcmRzLgoKICAgIEJlY2F1c2UgdS1ib290IHdpdGggYW4gZXh0ZXJuYWwgY3BsZCBiaXRzdHJlYW0gbWF5IG5vdAogICAgdGFrZSBtb3JlIHNwYWNlIGluIGZsYXNoIHRoYW4gYmVmb3JlIHRoZSB1LWJvb3QgYmluYXJ5IGlzCiAgICBzaHJpbmtlZCBhIGxpdHRsZSBiaXQuIFNvbWUgdW51c2VkIGZlYXR1ZXMgaGF2ZSBiZWVuCiAgICByZW1vdmVkIHRoZXJlZm9yZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDcwMGQ1NTNmZDNhZmU4MDQwODZkZThmNzNkOTUxNTMzMTVlYjBjMzIKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJV2VkIEFwciAyOSAwOTo1MDo1OSAyMDA5ICswMjAwCgogICAgNHh4OiBSZW1vdmUgYmluYXJ5IGNwbGQgYml0c3RyZWFtIGZyb20gVk9NNDA1IGJvYXJkCgogICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSBjcGxkIGJpbmFyeSBiaXRzdHJlYW0gdGhhdCBpcwogICAgdXNlZCBieSBlc2QncyBjcGxkIGNvbW1hbmQgb24gVk9NNDA1IGJvYXJkcy4KCiAgICBCZWNhdXNlIHUtYm9vdCB3aXRoIGFuIGV4dGVybmFsIGNwbGQgYml0c3RyZWFtIG1heSBub3QKICAgIHRha2UgbW9yZSBzcGFjZSBpbiBmbGFzaCB0aGFuIGJlZm9yZSB0aGUgdS1ib290IGJpbmFyeSBpcwogICAgc2hyaW5rZWQgYSBsaXR0bGUgYml0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMGJiMTA2MzAzNjRjNDhkOTg1N2NiZjUzNTNkYTYwOWZjNGRkNjc1MQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglXZWQgQXByIDI5IDA5OjUwOjU4IDIwMDkgKzAyMDAKCiAgICA0eHg6IFJlbW92ZSBiaW5hcnkgY3BsZCBiaXRzdHJlYW0gZnJvbSBQTUM0MDUgYm9hcmQKCiAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGNwbGQgYmluYXJ5IGJpdHN0cmVhbSB0aGF0IGlzCiAgICB1c2VkIGJ5IGVzZCdzIGNwbGQgY29tbWFuZCBvbiBQTUM0MDUgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgN2NjNjM1ZmIzNWY1Yjk0ZTMwNGZhMjI0M2Q1Njc1OGY1N2Y2NDE2YgpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglXZWQgQXByIDI5IDA5OjUwOjU3IDIwMDkgKzAyMDAKCiAgICA0eHg6IFJlbW92ZSBiaW5hcnkgY3BsZCBiaXRzdHJlYW0gZnJvbSBDTVM3MDAgYm9hcmQKCiAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGNwbGQgYmluYXJ5IGJpdHN0cmVhbSB0aGF0IGlzCiAgICB1c2VkIGJ5IGVzZCdzIGNwbGQgY29tbWFuZCBvbiBDTVM3MDAgYm9hcmRzLgoKICAgIEJlY2F1c2UgdS1ib290IHdpdGggYW4gZXh0ZXJuYWwgY3BsZCBiaXRzdHJlYW0gbWF5IG5vdAogICAgdGFrZSBtb3JlIHNwYWNlIGluIGZsYXNoIHRoYW4gYmVmb3JlIHRoZSB1LWJvb3QgYmluYXJ5IGlzCiAgICBzaHJpbmtlZCBhIGxpdHRsZSBiaXQuIFNvbWUgdW51c2VkIGZlYXR1ZXMgaGF2ZSBiZWVuCiAgICByZW1vdmVkIHRoZXJlZm9yZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGMxYjJmNzk3ODhkZWVjNzU3NzNiMWQ5NDRkOGFhZjRhNmQ1YmFmOWUKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJV2VkIEFwciAyOSAwOTo1MDo1NiAyMDA5ICswMjAwCgogICAgZXNkL2NvbW1vbjogZXh0ZW5kIGNwbGQgY29tbWFuZCB3aXRoIGFkZHJlc3MgcGFyYW1ldGVyCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGFuIGFkZHJlc3MgcGFyYW1ldGVyIHRvIGVzZCdzCiAgICBjcGxkIGNvbW1hbmQuIFRoaXMgaXMgaW4gcHJlcGFyYXRpb24gdG8gcmVtb3ZlIGNvbXBpbGVkLWluCiAgICBiaW5hcnkgY3BsZCAoeHN2ZikgYml0c3RyZWFtcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDkxNjZiNzc2MzUwZDE2NDYwYzczMzBiZmIwYTUwMTU0ZWEwYTE5MDMKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglTYXQgQXByIDE4IDIyOjM0OjA2IDIwMDkgLTA1MDAKCiAgICBjbWRfaTJjOiBGaXggaTJjIGhlbHAgY29tbWFuZCBvdXRwdXQgd2hlbiBDT05GSUdfSTJDX01VWAoKICAgIFdoZW4gQ09ORklHX0kyQ19NVVggd2FzIGRlZmluZWQgdGhlIG91dHB1dCBvZiAnaGVscCBpMmMnIHdhcyBub3QKICAgIGNvcnJlY3QsIGVnOgoKICAgID0+IGhlbHAgaTJjCiAgICBpMmMgYnVzIFttdXh0eXBlOm11eGFkZHI6bXV4Y2hhbm5lbF0gLSBhZGQgYSBuZXcgYnVzIHJlYWNoZWQgb3ZlciBtdXhlcy4KICAgIHNwZWVkIFtzcGVlZF0gLSBzaG93IG9yIHNldCBJMkMgYnVzIHNwZWVkCiAgICBpMmMgZGV2IFtkZXZdIC0gc2hvdyBvciBzZXQgY3VycmVudCBJMkMgYnVzCiAgICAuLi4KCiAgICBJdCBoYXMgYmVlbiBjaGFuZ2VkIHRvOgogICAgaTJjIHNwZWVkIFtzcGVlZF0gLSBzaG93IG9yIHNldCBJMkMgYnVzIHNwZWVkCiAgICBpMmMgYnVzIFttdXh0eXBlOm11eGFkZHI6bXV4Y2hhbm5lbF0gLSBhZGQgYSBuZXcgYnVzIHJlYWNoZWQgb3ZlciBtdXhlcwogICAgaTJjIGRldiBbZGV2XSAtIHNob3cgb3Igc2V0IGN1cnJlbnQgSTJDIGJ1cwogICAgLi4uCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCAwYTQ1YTYzNTdiMDJlNWNlNWJmODk5YTYwZGIwOWRlZjZhMTI5ZmVlCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJU2F0IEFwciAxOCAyMjozNDowNSAyMDA5IC0wNTAwCgogICAgY21kX2kyYzogQ2xlYW4gdXAgdHJpdmlhbCBoZWxwZXIgZnVuY3Rpb25zCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCBlOTZhZDVkM2FiYTQyZjhmZmU5OWY3Y2M1ZWMxYmI5ZjIxODEwMDM1CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJU2F0IEFwciAxOCAyMjozNDowNCAyMDA5IC0wNTAwCgogICAgY21kX2kyYzogQ2xlYW4gdXAgaTJjIGNvbW1hbmQgYXJndW1lbnQgcGFyc2luZwoKICAgIGFyZ2MgYW5kIGFyZ3Ygc2hvdWxkIG9ubHkgYmUgbW9kaWZpZWQgb25jZSBpbnN0ZWFkIG9mIG9uY2UgZm9yCiAgICBldmVyeSBpMmMgc3ViLWNvbW1hbmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDBmODljNTRiZTkyNzczYjIzZDY2YWM0MDFiYTZhY2I2MTQ0MTAwYzMKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglTYXQgQXByIDE4IDIyOjM0OjAzIDIwMDkgLTA1MDAKCiAgICBpMmM6IFVwZGF0ZSByZWZlcmVuY2VzIHRvIGluZGl2aWR1YWwgaTJjIGNvbW1hbmRzCgogICAgVGhlIGluZGl2aWR1YWwgaTJjIGNvbW1hbmRzIGltZCwgaW1tLCBpbm0sIGltdywgaWNyYzMyLCBpcHJvYmUsIGlsb29wLAogICAgYW5kIGlzZHJhbSBhcmUgbm8gbG9uZ2VyIGF2YWlsYWJsZSBzbyBhbGwgcmVmZXJlbmNlcyB0byB0aGVtIGhhdmUgYmVlbgogICAgdXBkYXRlZCB0byB0aGUgbmV3IGZvcm0gb2YgImkyYyA8Y21kPiIuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCBkNDhlYjUxMzFkMjg3ZjUyYmI4NWI0YzU4Yzg2ODBhMmU4ZTNiNjQxCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJU2F0IEFwciAxOCAyMjozNDowMiAyMDA5IC0wNTAwCgogICAgaTJjOiBSZW1vdmUgZGVwcmVjYXRlZCBpbmRpdmlkdWFsIGkyYyBjb21tYW5kcwoKICAgIFRoZSBmb2xsb3dpbmcgaW5kaXZpZHVhbCBJMkMgY29tbWFuZHMgaGF2ZSBiZWVuIHJlbW92ZWQ6IGltZCwgaW1tLCBpbm0sCiAgICBpbXcsIGljcmMzMiwgaXByb2JlLCBpbG9vcCwgaXNkcmFtLgoKICAgIFRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBpbmRpdmlkdWFsIGNvbW1hbmRzIGlzIHN0aWxsIGF2YWlsYWJsZSB2aWEKICAgIHRoZSAnaTJjJyBjb21tYW5kLgoKICAgIFRoaXMgY2hhbmdlIG9ubHkgaGFzIGFuIGltcGFjdCBvbiB0aG9zZSBib2FyZHMgd2hpY2ggZGlkIG5vdCBoYXZlCiAgICBDT05GSUdfSTJDX0NNRF9UUkVFIGRlZmluZWQuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCA2NTViMzRhNzhhZGY2MGVmMjYwOTgxNjg4ODM3OTA0MjA4ODgzYWU5CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJU2F0IEFwciAxOCAyMjozNDowMSAyMDA5IC0wNTAwCgogICAgaTJjOiBDcmVhdGUgY29tbW9uIGRlZmF1bHQgaTJjX1tzZXR8Z2V0XV9idXNfc3BlZWQoKSBmdW5jdGlvbnMKCiAgICBOZXcgZGVmYXVsdCwgd2VhayBpMmNfZ2V0X2J1c19zcGVlZCgpIGFuZCBpMmNfc2V0X2J1c19zcGVlZCgpIGZ1bmN0aW9ucwogICAgcmVwbGFjZSBhIG51bWJlciBvZiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLgoKICAgIEFsc28sIHByb3ZpZGluZyBkZWZhdWx0IGZ1bmN0aW9ucyB3aWxsIGFsbG93IGFsbCBib2FyZHMgdG8gZW5hYmxlCiAgICBDT05GSUdfSTJDX0NNRF9UUkVFLiAgVGhpcyB3YXMgcHJldmlvdXNseSBub3QgcG9zc2libGUgc2luY2UgdGhlCiAgICB0cmVlLWZvcm0gb2YgdGhlIGkyYyBjb21tYW5kIHByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIGRpc3BsYXkgYW5kIG1vZGlmeQogICAgdGhlIGkyYyBidXMgc3BlZWQgd2hpY2ggcmVxdWlyZXMgaTJjX1tzZXR8Z2V0XV9idXNfc3BlZWQoKSB0byBiZQogICAgcHJlc2VudC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDgyMjllOWMwNGY3MDE5ZGRkNzZhZWEwNWQ0ZGNhMDQ0Y2JjOWEzNGEKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglTYXQgQXByIDE4IDIyOjM0OjAwIDIwMDkgLTA1MDAKCiAgICBjbTUyMDA6IE1ha2UgZnVuY3Rpb24gdGVzdCBjb21tYW5kIG5hbWVzIG1vcmUgdW5pcXVlCgogICAgQWRkICJfdGVzdCIgdG8gY201MjAwJ3MgZnVuY3Rpb24gdGVzdCBjb21tYW5kIG5hbWVzIHRvIHByZXZlbnQKICAgIG92ZXJsYXAgd2l0aCBjb21tb24sIGdsb2JhbCBmdW5jdGlvbiBuYW1lcy4gIE9yaWdpbmFsbHksIHRoZQogICAgImRvX2kyYyIgZnVuY3Rpb24gdGVzdCBjb21tYW5kIGludGVyZmVyZWQgd2l0aAogICAgY29tbW9uL2NtZF9pMmMuYydzICJkb19pMmMiIHdoZW4gQ09ORklHX0kyQ19DTURfVFJFRSB3YXMgZGVmaW5lZC4KCiAgICBUaGUgZnVuY3Rpb25zIHdlcmUgYWxzbyBtYWRlIHN0YXRpYyBhcyB0aGV5IGFyZSBub3QgZ2xvYmFsbHkgYWNjZXNzZWQuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCBmMDcyMmVlNzYyZThkYWRhOWQ3Zjc0YWMyNzQ1ZTA0M2Y4M2FhZTg1CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJRnJpIEFwciAyNCAxNTozNDowOSAyMDA5IC0wNTAwCgogICAgdHNpMTA4X2kyYzogQWRkIGkyY19pbml0KCkgc3R1YiBmdW5jdGlvbgoKICAgIEFkZCB0aGUgaTJjX2luaXQoKSBmdW5jdGlvbiBzbyB0aGF0IHRoZSB0c2kxMDhfaTJjLmMgZHJpdmVyIGZpdHMKICAgIFUtQm9vdCdzIHN0YW5kYXJkIEkyQyBBUEkgd2hpY2ggaXMgdXRpbGl6ZWQgYnkgY21kX2kyYy5jCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCA4ZDkwN2U3OWJjOWJhYmIyNzM5NmUzNGJlNTRjZmRjMzZmZjYyZmI5CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJRnJpIEFwciAyNCAxNTozNDowOCAyMDA5IC0wNTAwCgogICAgbXBjNzQ0OGhwYzI6IEFkZCBDT05GSUdfU1lTX0kyQ19TUEVFRCBkZWZpbmUKCiAgICBBZGQgc3RhbmRhcmQgQ09ORklHX1NZU19JMkNfU1BFRUQgZGVmaW5lIGZvciB0aGUgbXBjNzQ0OGhwYzIgc28gdGhhdAogICAgaXQgY2FuIHVzZSB0aGUgY29tbW9uICdpMmMgc3BlZWQnIGNvbW1hbmQuCU5vdGUgdGhhdCB0aGUgSTJDIGNvbnRyb2xsZXIKICAgIHV0aWxpemVkIGJ5IHRoZSBtcGM3NDQ4aHBjMiBoYXMgYSBmaXhlZCBzcGVlZCBhbmQgY2Fubm90IGJlIGNoYW5nZWQKICAgIGR5bmFtaWNhbGx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgYTA1NmIxY2U5ZTE5YjRkNGFiM2RkMDFjM2Y4OTdkY2Q4MzJjZDM3ZgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBBcHIgMjQgMTU6MzQ6MDcgMjAwOSAtMDUwMAoKICAgIE1hcnZlbGw6IGkyYyBjbGVhbnVwCgogICAgVGhlIGZvbGxvd2luZyBjaGFuZ2VzIHdlcmUgbWFkZSwgcHJpbWFyaWx5IHRvIGJyaW5nIHRoZSBNYXJ2ZWxsIGkyYwogICAgZHJpdmVyIGluIGxpbmUgd2l0aCBVLUJvb3QncyBjdXJyZW50IEkyQyBBUEk6CiAgICAtIE1hZGUgaTJjX2luaXQoKSBnbG9iYWxseSBhY2Nlc3NpYmxlCiAgICAtIE1hZGUgaTJjX3JlYWQoKSBhbmQgaTJjX3dyaXRlKCkgcmV0dXJuIGFuIGludGVnZXIKICAgIC0gVXBkYXRlZCBpMmNfaW5pdCgpIGNhbGxzIHRvIHBhc3MgaW4gQ09ORklHX1NZU19JMkNfU0xBVkUgaW4gdGhlCiAgICAgIG9mZmhhbmQgY2hhbmNlIHNvbWVvbmUgYWRkcyBzbGF2ZSBzdXBwb3J0IGluIHRoZSBmdXR1cmUKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDU0YWZjNmVlMTBjOGNkMDk1OThkODE0ZDQ5ZTYwMTM1OWIwMDVlNDkKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglGcmkgQXByIDI0IDE1OjM0OjA2IDIwMDkgLTA1MDAKCiAgICBjcGNpNzUwOiBpMmMgY2xlYW51cAoKICAgIFRoZSBmb2xsb3dpbmcgY2hhbmdlcyB3ZXJlIG1hZGUsIHByaW1hcmlseSB0byBicmluZyB0aGUgY3BjaTc1MCBpMmMKICAgIGRyaXZlciBpbiBsaW5lIHdpdGggVS1Cb290J3MgY3VycmVudCBJMkMgQVBJOgogICAgLSBNYWRlIGkyY19pbml0KCkgZ2xvYmFsbHkgYWNjZXNzaWJsZQogICAgLSBNYWRlIGkyY19yZWFkKCkgYW5kIGkyY193cml0ZSgpIHJldHVybiBhbiBpbnRlZ2VyCiAgICAtIFVwZGF0ZWQgaTJjX2luaXQoKSBjYWxscyB0byBwYXNzIGluIENPTkZJR19TWVNfSTJDX1NMQVZFIGluIHRoZQogICAgICBvZmZoYW5kIGNoYW5jZSBzb21lb25lIGFkZHMgc2xhdmUgc3VwcG9ydCBpbiB0aGUgZnV0dXJlCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCA5YzkwYTJjOGU4NzQxNDAwN2EwMTZiN2NkMDk5YWMxZTMyZmQzMDFiCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJRnJpIEFwciAyNCAxNTozNDowNSAyMDA5IC0wNTAwCgogICAgaTJjLmg6IFByb3ZpZGUgYSBkZWZhdWx0IENPTkZJR19TWVNfSTJDX1NMQVZFIHZhbHVlCgogICAgTWFueSBib2FyZHMvY29udHJvbGxlcnMvZHJpdmVycyBkb24ndCBzdXBwb3J0IGFuIEkyQyBzbGF2ZSBpbnRlcmZhY2UsCiAgICBob3dldmVyIENPTkZJR19TWVNfSTJDX1NMQVZFIGlzIHVzZWQgaW4gY29tbW9uIGNvZGUgc28gcHJvdmlkZSBhCiAgICBkZWZhdWx0CgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCBlNzU2M2FmZjE3NGY3N2FhNjFkYWIxZWY1ZDliNDdiZWJhYTQzNzAyCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEp1biAxMSAyMzo0MjozNSAyMDA5IC0wNTAwCgogICAgZnNsLWRkcjogRml4IGhhbmRsaW5nIG9mID40RyBvZiBtZW1vcnkgd2hlbiAhQ09ORklHX1BIWVNfNjRCSVQKCiAgICBUaGUgZGRyIGNvZGUgY29tcHV0ZXMgbW9zdCB0aGluZ3MgYXMgNjQtYml0IHF1YW50aXRpZXMgYW5kIGhhZCBzb21lIHBsYWNlcwogICAgaW4gdGhlIG1pZGRsZSB0aGF0IGl0IHdhcyB1c2luZyBwaHlfYWRkcl90IGFuZCBwaHlzX3NpemVfdC4KCiAgICBJbnN0ZWFkIHdlIHVzZSB1bnNpZ25lZCBsb25nIGxvbmcgdGhyb3VnaCBvdXQgYW5kIG9ubHkgYXQgdGhlIGxhc3Qgc3RhZ2Ugb2YKICAgIHNldHRpbmcgdGhlIExBV3MgYW5kIHJlcG9ydGluZyB0aGUgYW1vdW50IG9mIG1lbW9yeSB0byB0aGUgYm9hcmQgY29kZSBkbyB3ZQogICAgdHJ1bmNhdGUgZG93biB0byB3aGF0IHdlIGNhbiBjb3ZlciB2aWEgcGh5c19zaXplX3QuCgogICAgVGhpcyBoYXMgdGhlIGFkZGVkIGJlbmVmaXQgdGhhdCB0aGUgRERSIGNvbnRyb2xsZXIgaXRzZWxmIGlzIGFsd2F5cyBzZXR1cAogICAgdGhlIHNhbWUgd2F5IHJlZ2FyZGxlc3Mgb2YgaG93IG11Y2ggbWVtb3J5IHdlIGhhdmUuICBJdHMgb25seSB0aGUgTEFXCiAgICBzZXR1cCB0aGF0IGxpbWl0cyB3aGF0IGlzIHZpc2libGUgdG8gdGhlIHN5c3RlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGQ0YjEzMGRjODA3NjFiNDMwZGM1YjQxMDE1OWNkMTU4ZmNhMWEzNDgKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgSnVuIDExIDIzOjQwOjM0IDIwMDkgLTA1MDAKCiAgICA4NXh4OiBVc2UgcHJpbnRfc2l6ZSB0byByZXBvcnQgYW1vdW50IG9mIG1lbW9yeSBub3QgbWFwcGVkIGJ5IFRMQnMKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDZlMmFlYmMzM2ZhNzQwYzA2OGZlMjhkNDBlYWYwMzE5YjdjNzI4N2UKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTWF5IDIwIDEyOjMwOjQyIDIwMDkgLTA0MDAKCiAgICA4NXh4OiBBZGQgUkVBRE1FIGZvciBNUEM4NTY5TURTCgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYjJhYWIzODZlOTU3YmE2ODRkNGYyYTQ2NmJmYWE5MTc3MGU1MDU4YQpBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXkgMjAgMTI6MzA6MzMgMjAwOSAtMDQwMAoKICAgIDg1eHg6IEFkZCBVQVJUMSBzdXBwb3J0IGZvciBNUEM4NTY5TURTCgogICAgTVBDODU2OSBVQVJUMSBzaWduYWxzIGFyZSBtdXhlZCB3aXRoIFBvcnRGIGJpdFs5LTEyXSwgd2UgbmVlZCB0byBkZWZpbmUKICAgIHRob3NlIHBpbnMgYmVmb3JlIHVzaW5nIFVBUlQxLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDM5OWI1M2NiYWIwYjM3N2FjNGM1YzE2YzE5YzZlNDFiNjhhOWM3MTkKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTWF5IDIwIDEyOjMwOjMyIDIwMDkgLTA0MDAKCiAgICA4NXh4OiBBZGQgUElCIHN1cHBvcnQgYXQgQ1M0L0NTNSBmb3IgTVBDODU2OU1EUwoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBZdSBMaXUgPFl1LkxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmYjI3OTQ5MDU5ZjFiYzg0MzgxYTYyMTZhODE5MDkwZjBjZGJhYTcwCkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1biA0IDE2OjEyOjM5IDIwMDkgLTA0MDAKCiAgICA4NXh4OiBGaXggc29tZSBzZXR0aW5ncyBmb3IgTVBDODU2OU1EUyBib2FyZAoKICAgIC0gSW5jcmVhc2UgdGhlIHNpemUgb2YgbWFsbG9jIHRvIDUxMktCIGJlY2F1c2UgTVBDODU2OU1EUyBuZWVkcyBtb3JlIG1lbW9yeSBmb3IKICAgIG1hbGxvYyB0byBzdXBwb3J0IHVwIHRvIGVpZ2h0IEV0aGVybmV0IGludGVyZmFjZXMuCiAgICAtIE1vdmUgRW52aXJvbm1lbnQgYWRkcmVzcyBvdXQgb2YgdWJvb3QgdGh1cyB0aGUgc2F2ZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzCiAgICB3aWxsIG5vdCBiZSBlcmFzZWQgYWZ0ZXIgdS1ib290IGlzIHJlLXByb2dyYW1tZWQuCgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYzdmNjBmZDI5ZjJkNjM4ZDA4MGNkZjFhNDlhZDk4NWI4NWY5NDI5ZApBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXkgMjAgMTI6MzA6MzAgMjAwOSAtMDQwMAoKICAgIDg1eHg6IEZpeCBNVVJBTSBzaXplIGZvciBNUEM4NTY5CgogICAgTVBDODU2OSBoYXMgMTI4SyBieXRlcyBNVVJBTS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBhNTNjOTk3ZGQ3ZmM4NThmMmEyN2Y1YTQ3YjIwMDU2N2I5MzQzYWU1CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIE1heSAyMiAyMDoyMzo1MSAyMDA5ICswMjAwCgogICAgYXQ5MS9jcHUuYzogYWRkIG1pc3NpbmcgQ29weXJpZ2h0ICYgR1BMIGhlYWRlcgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYWE0NDZhNTkxYWNhNDZlZjJiNTNjYzY1OThlYTgwOTFmZWI0NTQ0NApBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVN1biBKdW4gNyAyMTo0NToxNiAyMDA5ICswOTAwCgogICAgYXBvbGxvbjogRml4IGEgT0JKQ0ZMQUdTIHR5cG8KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHBvYm94LmNvbT4KCmNvbW1pdCA1ODA2MTFjYjA5MzIxNDNmYzJkN2E3MzVjZmE5Y2UxZWYzNGQ2MDAyCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEp1biAxMCAwMDoxOToyOCAyMDA5ICswMjAwCgogICAgUHJlcGFyZSAyMDA5LjA2LXJjMwoKICAgIFVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDNhNzZhYjVjMTY2ZDU5NTY4ODVmODAzY2U5NzVlNzE1MWNjMGNhMGUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgSnVuIDEwIDAwOjE1OjExIDIwMDkgKzAyMDAKCiAgICBybXUgYm9hcmQ6IGZpeCBlcnJvcjogJ0NPTkZJR19FTlZfU0VDVF9TSVpFJyB1bmRlY2xhcmVkCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAxNjVmOTg1OWI2NGZmNTlmMGNmYWUzY2M3MGE3ZTdkZWQ3YWFhNGE3CkF1dGhvcjogRGFuaWVsIE1hY2sgPGRhbmllbEBjYWlhcS5kZT4KRGF0ZToJVGh1IEp1biA0IDE5OjQ0OjEyIDIwMDkgKzAyMDAKCiAgICB1YmlmczogZml4IHNtYWxsIGVycm9yIHBhdGggbWlzbWF0Y2gKCiAgICBJbiBkb19yZWFkcGFnZSgpLCBkb24ndCBmcmVlICdkbicgaWYgaXRzIGFsbG9jYXRpb24gZmFpbGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBNYWNrIDxkYW5pZWxAY2FpYXEuZGU+Cgpjb21taXQgZGU3Y2Y3MDllYmQzYzAxZmJkMDk0ZTg4NTNkYWJiNDEwYzAzNzBhMQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVRodSBKdW4gNCAwMDozMTowNyAyMDA5ICswMjAwCgogICAgRVA4OHg6IGZpeCBicm9rZW4gbGlua2VyIHNjcmlwdAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBUZXN0ZWQtYnk6IE1pa2hhaWwgWmF0dXJlbnNraXkgPG16YXR1cmVuc2tpeUBzaG9wcGVydHJhay5jb20+Cgpjb21taXQgN2EyMDYzYmQ4MGQzYjU4YjJkZDVkNWU1OGY0NDExZjhkMjUwNTc2YwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBNYXkgMTUgMDA6MTY6MDIgMjAwOSArMDIwMAoKICAgIFRRTTg1eHg6IG1pbm9yIGNvbmZpZyBmaWxlIGNsZWFudXAKCiAgICBSZW1vdmUgInNhdmVlbnYiIGZyb20gInVwZGF0ZSIgZGVmaW5pdGlvbjogdGhlIGVudmlyb25tZW50IGlzIG91dHNpZGUKICAgIHRoZSBVLUJvb3QgaW1hZ2Ugb24gVFFNODV4eCBhbmQgdGhlcmVmb3Igbm90IGFmZmVjdGVkIGJ5IHVwZGF0ZXMuCgogICAgQWxzbyAiYmVhdXRpZnkiIGNvZGUgYSBiaXQgKHZlcnRpY2FsIGFsaWdubWVudCkuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjMDI5NmIxODAxZmM5NDI2ZDc3MmZhNzVmZTU4NDU4ZGI2MDVkZmVlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIE1heSAxNSAwMDoxNjowMSAyMDA5ICswMjAwCgogICAgVFFNODV4eDogYWRhcHQgZm9yIG5ldyBmbGFzaCB0eXBlcwoKICAgIE9sZCBUUU04NXh4IGJvYXJkcyBoYWQgJ00nIHR5cGUgU3BhbnNpb24gRmxhc2hlcyBmcm9tIHRoZSBTMjlHTHh4eE0KICAgIHNlcmllcyB3aGlsZSBuZXcgYm9hcmRzIGhhdmUgJ04nIHR5cGUgRmxhc2hlcyBmcm9tIHRoZSBTMjlHTHh4eE4KICAgIHNlcmllcywgd2hpY2ggaGF2ZSBiaWdnZXIgc2VjdG9yczogMiB4IDEyOCBpbnN0ZWFkIG9mIDIgeCA2NCBLQi4KCiAgICBXZSBub3cgY2hhbmdlIHRoZSBjb25maWd1cmF0aW9uIHRvIHRoZSBuZXcgZmxhc2ggdHlwZXMgZm9yIGFsbAogICAgYm9hcmRzOyB0aGlzIGFsc28gd29ya3Mgb24gb2xkIGJvYXJkcyAtIHdlIGp1c3Qgd2FzdGUgdHdvIGZsYXNoCiAgICBzZWN0b3JzIGZvciB0aGUgZW52aXJvbm1lbnQgd2hpY2ggY291bGQgYmUgc21hbGxlciB0aGVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDY3MzUxMDQ5MjRmMDYzNDAwNzFhNjkxNGE5ZWUzMzQ1NjA3ZmMxMDIKQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gTWF5IDE4IDE3OjQ5OjIzIDIwMDkgKzA4MDAKCiAgICA4NXh4OiBGaXggdGhlIHdyb25nIFNZU19DTEtfSU4gZm9yIDg1NjlNRFMKCiAgICBUaGUgU1lTX0NMS19JTiBvZiBNUEM4NTY5TURTIGlzIDY2LjY2TUh6LAogICAgVGhlIEREUl9DTEtfSU4gaXMgc2FtZSB3aXRoIFNZU19DTEtfSU4gaW4gODU2OSBwcm9jZXNzb3IuCiAgICBzbywgY2hhbmdlIHRoZSBTWVNfQ0xLX0lOIGZyb20gNjZNSHogdG8gNjYuNjZNSHouCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxNmU3NTU5YzA4YjZmMjlkYjQ1OTZkNzk1YjkyOTE0YzAxZTZhMWIzCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE1heSAxNSAxMDoyNzo0NCAyMDA5ICswODAwCgogICAgODV4eDogRml4IHRoZSB3cm9uZyBCQ1NSIGFkZHJlc3Mgb2YgODU2OU1EUwoKICAgIFRoZSBCQ1NSMTdbN10gPSAxIHdpbGwgdW5sb2NrIHRoZSB3cml0ZSBwcm90ZWN0IG9mIEZMQVNILgogICAgVGhlIFdQIyBwaW4gb25seSBjb250cm9scyB0aGUgd3JpdGUgcHJvdGVjdCBvZiB0b3AvYm90dG9tIHNlY3RvciwKICAgIFRoYXQgaXMgd2h5IHdlIGNhbiBzYXZlIGVudiwgYnV0IHdlIGNhbid0IHdyaXRlIHRoZSBmaXJzdCBzZWN0b3IKICAgIGJlZm9yZSB0aGUgcGF0Y2guCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5MGQxM2I4YWMzZDUxNTM0OTYyNmQ3YzhhM2RjMzRlZjM4YzQzZmE2CkF1dGhvcjogRnJlZHJpayBBcm5lcnVwIDxmcmVkcmlrLmFybmVydXBAZWRnZXdhcmUudHY+CkRhdGU6CVR1ZSBKdW4gMiAxNjoyNzoxMCAyMDA5IC0wNTAwCgogICAgODV4eDogYnVnZml4IGZvciByZWFkaW5nIG1heGltdW0gVExCIHNpemUgb24gbXBjODV4eAoKICAgIFRoZSBNQVhTSVpFIGZpZWxkIGluIHRoZSBUTEIxQ0ZHIHJlZ2lzdGVyIGlzIDQgYml0cywgbm90IDggYml0cy4KICAgIFRoaXMgbWFkZSBzZXR1cF9kZHJfdGxicygpIHRyeSB0byBzZXQgdXAgYSBUTEIgbGFyZ2VyIHRoYW4gdGhlIGU1MDAgbWF4aW11bQogICAgKDI1NiBNQikKICAgIHdoaWNoIG1hZGUgdS1ib290IGhhbmcgaW4gYm9hcmRfaW5pdF9mKCkgd2hlbiB0cnlpbmcgdG8gY3JlYXRlIGEgbmV3IHN0YWNrCiAgICBpbiBSQU0uCiAgICBJIGhhdmUgYW4gbXBjODU0MCB3aXRoIG9uZSAxR0IgZGltbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBGcmVkcmlrIEFybmVydXAgPGZyZWRyaWsuYXJuZXJ1cEBlZGdld2FyZS50dj4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDFiNTI5MWRkZGY1ZjE2YzdhZTEwZTNjYjE2NTg4MmZhOTYwMzhiMjYKQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgTWFyIDI3IDE0OjMyOjQzIDIwMDkgKzA4MDAKCiAgICA4NXh4OiBGaXggdGhlIGNsb2NrIGFkanVzdCBvZiBtcGM4NTY5bWRzIGJvYXJkCgogICAgQ3VycmVudGx5IHRoZSBjbGtfYWRqIGlzIDYgKDMvNCBjeWNsZSksIFRoZSBzZXR0aW5ncyB3aWxsIGNhdXNlCiAgICB0aGUgRERSIGNvbnRyb2xsZXIgaGFuZyBhdCB0aGUgZGF0YSBpbml0LiBDaGFuZ2UgdGhlIGNsa19hZGoKICAgIGZyb20gNiB0byA0ICgxLzIgY3ljbGUpLCBtYWtlIHRoZSBtZW1vcnkgc3lzdGVtIHN0YWJsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGZhYTE0YmFiZDc0NjZkZmFkZTM1OGY5Y2FjMTI4YWUyNDZiOWJmMWIKQXV0aG9yOiBST05FVElYIC0gSWxrbyBJbGlldiA8aWxpZXZAcm9uZXRpeC5hdD4KRGF0ZToJRnJpIEp1biA1IDE2OjU0OjMxIDIwMDkgKzAyMDAKCiAgICBhdDkxOiBmaXggYSBVU0IgcHJvYmxlbSBmb3IgQVQ5MVNBTTkyNjEKCiAgICBUaGlzIHBhdGNoIGNvcnJlY3RzIHRoZSBtaXNzaW5nIFBMTEIgaW5pdGlhbGl6YXRpb24gaW4gdXNiX2NwdV9pbml0KCkKICAgIGZvciBBVDkxU0FNOTI2MS4KICAgIEJlY2F1c2Ugb2YgdGhlIG1pc3NpbmcgUExMQiBpbml0aWFsaXphdGlvbiwgdGhlIFVTQiBzdXBwb3J0IGZvciBhbGwKICAgIEFUOTFTQU05MjYxIGJhc2VkIGJvYXJkcyB3aWxsIHdvcmsgb25seSBpZiB0aGUgUExMQiBpcyBjb25maWd1cmVkIGJ5IGEKICAgIHByZWNlZGVudCBib290bG9hZGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IElsa28gSWxpZXYgPGlsaWV2QHJvbmV0aXguYXQ+CiAgICBBY2tlZC1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IDBjMjRkZWM1NTBkZGI3ZDg2YjhiZmRkODY0NWIxODQ3OWY3M2U2ZTIKQXV0aG9yOiBGZWxpeCBSYWRlbnNreSA8ZmVsaXhAZW1iZWRkZWQtc29sLmNvbT4KRGF0ZToJU3VuIE1heSAzMSAyMDo0NDoxNSAyMDA5ICswMzAwCgogICAgcHBjNHh4L25ldDogRml4IE1ESU8gY2xvY2sgc2V0dXAKCiAgICBUaGlzIHBhdGNoIGZpeGVzIE1ESU8gY2xvY2sgc2V0dXAgaW4gY2FzZSB3aGVuIE9QQiBmcmVxdWVuY3kgaXMgMTAwTUh6LgogICAgQ3VycmVudCBjb2RlIGFzc3VtZXMgdGhhdCB0aGUgdmFsdWUgb2Ygc3lzaW5mby5mcmVxT1BCIGlzIDEwMDAwMDAwMAogICAgd2hlbiBPUEIgZnJlcXVlbmN5IGlzIDEwME1Iei4gSW4gcmVhbGl0eSBpdCBpcyAxMDAwMDAwMDEuIEFzIGEgcmVzdWx0CiAgICBNRElPIGNsb2NrIGlzIHNldCB0byBpbmNvcnJlY3QgdmFsdWUsIGxhcmdlciB0aGFuIDIuNU1IeiwgdGh1cyB2aW9sYXRpbmcKICAgIHRoZSBzdGFuZGFyZC4gVGhpcyBpbiBub3QgYSBwcm9ibGVtIG9uIGJvYXJkcyBlcXVpcHBlZCB3aXRoIE1hcnZlbGwgUEhZcwogICAgKGUuZy4gQ2FueW9ubGFuZHMpLCBzaW5jZSB0aG9zZSBQSFlzIHN1cHBvcnQgTURJTyBjbG9ja3MgdXAgdG8gOC4zTUh6LAogICAgYnV0IGNhbiBiZSBhIHByb2JsZW0gZm9yIG90aGVyIFBIWXMgKGUuZy4gUmVhbHRlayBvbmVzKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBGZWxpeCBSYWRlbnNreSA8ZmVsaXhAZW1iZWRkZWQtc29sLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZDY1ZTM0ZDEyNTE0ZGUyYmJlM2I4ZjUxOTc2MWQ2NDFjMDgxYmFkMApBdXRob3I6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJV2VkIEZlYiAyNSAxNDoyNzoyOSAyMDA5ICswOTAwCgogICAgcnRsODE2OTogZml4IFBDSSBzeXN0ZW0gbWVtb3J5IGFkZHJlc3MKCiAgICBXaGVuIFBDSSBkZXZpY2UgdXNlIHN5c3RlbSBtZW1vcnksIHNvbWUgUENJIGhvc3QgY29udHJvbGxlciBzaG91bGQgYmUKICAgIHNldCBwaHlzaWNhbCBtZW1vcnkgYWRkcmVzcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGNhOWM4YTFlMTBmYWMwMWU2YTExMjlmODJhN2NlMThiZDgxOGZhNDMKQXV0aG9yOiBNYW5pa2FuZGFuIFBpbGxhaSA8bWFuaS5waWxsYWlAdGkuY29tPgpEYXRlOglXZWQgQXByIDggMDk6MTQ6MzUgMjAwOSArMDUzMAoKICAgIFNNQzkxMXggZHJpdmVyIGZpeGVkIGZvciBORlMgYm9vdAoKICAgIGV0aF9oYWx0KCkgZnVuY3Rpb24gaW4gdGhlIHNtYzkxMXggZHJpdmVycyB1c2VkIHRvIGNhbGwgdGhlCiAgICBzbWM5MTF4X3Jlc2V0KCkgZnVuY3Rpb24uIGV0aF9oYWx0KCkgdXNlZCB0byBiZSBjYWxsZWQgYWZ0ZXIKICAgIHRmdHAgdHJhbnNmZXJzLiBUaGlzIHVzZWQgdG8gcHV0IHRoZSBldGhlcm5ldCBjaGlwIGluIHJlc2V0CiAgICB3aGlsZSB0aGUgbGludXggYm9vdHMgdXAgcmVzdWx0aW5nIGluIHRoZSBldGhlcm5ldCBkcml2ZXIKICAgIG5vdCBjb21pbmcgdXAuIE5GUyBib290IHVzZWQgdG8gZmFpbCBhcyBhIHJlc3VsdC4KCiAgICBUaGlzIHBhdGNoIGNhbGxzIHNtYzkxMXhfc2h1dGRvd24oKSBpbnN0ZWFkIG9mIHNtYzkxMXhfcmVzZXQoKS4KICAgIFNvbWUgY29tbWVudHMgcmVjZWl2ZWQgaGFzIGFsc28gYmVlbiBmaXhlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYW5pa2FuZGFuIFBpbGxhaSA8bWFuaS5waWxsYWlAdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBlNWEzYmMyNDAxYTIzZjE4OTA2MTFmMDIwZjU3Zjk0ODI0YTUzNGRiCkF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CkRhdGU6CVN1biBNYXkgMyAxMjoxMTo0MCAyMDA5ICswMjAwCgogICAgQWRkIGNvbmZpZyBvcHRpb24gZm9yIGRpc2FibGluZyBETTkwMDAtU1JPTSBzdXBwb3J0LgoKICAgIFNvbWUgYm9hcmRzIGRvIG5vdCBoYXZlIFNST00gc3VwcG9ydCBmb3IgdGhlIERNOTAwMCBuZXR3b3JrIGFkYXB0ZXIuCiAgICBJbnN0ZWFkIG9mIGxpc3RpbmcgdGhlc2UgYm9hcmQgbmFtZXMgaW4gdGhlIGRyaXZlciBjb2RlLCBtYWtlIHRoaXMKICAgIG9wdGlvbiBjb25maWd1cmFibGUgZnJvbSB0aGUgYm9hcmQgY29uZmlnIGZpbGUuCgogICAgSXQgYWxzbyByZW1vdmVzIGEgYnVpbGQgd2FybmluZyBmb3IgdGhlIGF0OTFzYW05MjYxZWsgYm9hcmQ6CiAgICAnZG05MDAweC5jOjU0NTogd2FybmluZzogJ3JlYWRfc3JvbV93b3JkJyBkZWZpbmVkIGJ1dCBub3QgdXNlZCcKCiAgICBBbmQgaXQgcmVwYWlyZXMgdGhlIHRyaXplcHNpdiBib2FyZCBidWlsZCB3aGljaCB3YXMgYnJva2VuIGFyb3VuZCB0aGUKICAgIHNhbWUgcm91dGluZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgM2M5YjFlZTE3ZTE5YmQ2ZDgwMzQ0Njc4ZDQxYTg1ZTUyYjBiZTcxMwpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBKdW4gNSAxNDoxMTozMyAyMDA5IC0wNTAwCgogICAgbXBjODN4eDogZG9uJ3Qgc2V0IFNJQ1JIX1RTT0JJMSB0byBSTUlJL1JUQkkgb3BlcmF0aW9uCgogICAgSW4gR01JSSBtb2RlICh3aGljaCBvcGVyYXRlcyBhdCAzLjNWKSBib3RoIFNJQ1JIIFRTRUMxLzIgb3V0cHV0IGJ1ZmZlcgogICAgaW1wZWRhbmNlIGJpdHMgc2hvdWxkIGJlIGNsZWFyLCBpLmUuLCBTSUNSSFtUU0lPQjFdID0gMCBhbmQgU0lDUkhbVFNJT0IyXSA9IDAuCiAgICBTSUNSSFtUU0lPQjFdIHdhcyBlcnJvbmVvdXNseSBiZWluZyBzZXQgaGlnaC4KCiAgICBVLUJvb3QgYWx3YXlzIG9wZXJhdGVkIHRoaXMgUEhZIGludGVyZmFjZSBpbiBHTUlJIG1vZGUuICBJdCBpcyBhc3N1bWVkIHRoaXMKICAgIHdhcyBtaXNzZWQgaW4gdGhlIGNsZWFuIHVwIGJ5IHRoZSBvcmlnaW5hbCBib2FyZCBwb3J0ZXJzLCBhbmQgY29waWVkIGFsb25nCiAgICB0byB0aGUgVFFNIGFuZCBzYmMgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogSXJhIFNueWRlciA8aXdzQG92cm8uY2FsdGVjaC5lZHU+CiAgICBSZXZpZXdlZC1ieTogRGF2aWQgSGF3a2lucyA8ZHdoQG92cm8uY2FsdGVjaC5lZHU+CiAgICBUZXN0ZWQtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgogICAgQ0M6IERhdmUgTGl1IDxEYXZlTGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMmMwMjM0ZmE3OTEyMmE1YWE3N2M0ZTE3YzMzZWIyZmUxODRiNjFhNwpBdXRob3I6IERhbmllbCBNYWNrIDxkYW5pZWxAY2FpYXEuZGU+CkRhdGU6CVdlZCBBcHIgOCAxMzoyMzozNyAyMDA5ICswMjAwCgogICAgc21jOTExeDogd3JpdGUgYmFjayB0aGUgbWFudWFsbHkgc2V0IE1BQyBhZGRyZXNzCgogICAgSWYgdGhlIE1BWCBhZGRyZXNzIGlzIGdpdmVuIGJ5IHRoZSBlbnZpcm9ubWVudCwgd3JpdGUgaXQgYmFjayB0byB0aGUKICAgIGhhcmR3YXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBNYWNrIDxkYW5pZWxAY2FpYXEuZGU+CiAgICBDYzogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBkZmNkN2YyMTYwN2ZkODQ3MjM2YjA0YmIxYThkNTlhN2MxMGFiOTljCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIE1heSAxNSAwMDoxNjowMyAyMDA5ICswMjAwCgogICAgUmVkdW5kYW50IEVudmlyb25tZW50OiBwcm90ZWN0IGZ1bGwgc2VjdG9yIHNpemUKCiAgICBTZXZlcmFsIGJvYXJkcyB1c2VkIGRpZmZlcmVudCB3YXlzIHRvIHNwZWNpZnkgdGhlIHNpemUgb2YgdGhlCiAgICBwcm90ZWN0ZWQgYXJlYSB3aGVuIGVuYWJsaW5nIGZsYXNoIHdyaXRlIHByb3RlY3Rpb24gZm9yIHRoZSBzZWN0b3JzCiAgICBob2xkaW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXM6IHNvbWUgdXNlZCBDT05GSUdfRU5WX1NJWkUgYW5kCiAgICBDT05GSUdfRU5WX1NJWkVfUkVEVU5ELCBzb21lIHVzZWQgQ09ORklHX0VOVl9TRUNUX1NJWkUsIGFuZCBzb21lIGV2ZW4KICAgIGEgbWl4IG9mIGJvdGggZm9yIHRoZSAibm9ybWFsIiBhbmQgdGhlICJyZWR1bmRhbnQiIGFyZWFzLgoKICAgIE5vcm1hbGx5LCB0aGlzIG1ha2VzIG5vIGRpZmZlcmVuY2UgYXQgYWxsLiBIb3dldmVyLCB0aGluZ3MgYXJlCiAgICBkaWZmZXJlbnQgd2hlbiB5b3UgaGF2ZSB0byBkZWFsIHdpdGggYm9hcmRzIHRoYXQgY2FuIGNvbWUgd2l0aAogICAgZGlmZmVyZW50IHR5cGVzIG9mIGZsYXNoIGNoaXBzLCB3aGljaCBtYXkgaGF2ZSBkaWZmZXJlbnQgc2VjdG9yCiAgICBzaXplcy4KCiAgICBIZXJlIHdlIG1heSBoYXZlIHRvIGNob3NlIENPTkZJR19FTlZfU0VDVF9TSVpFIHN1Y2ggdGhhdCBpdCBmaXRzIHRoZQogICAgYmlnZ2VzdCBzZWN0b3Igc2l6ZSwgd2hpY2ggbWF5IGluY2x1ZGUgc2V2ZXJhbCBzZWN0b3JzIG9uIGJvYXJkcyB1c2luZwogICAgdGhlIHNtYWxsZXIgc2VjdG9yIGZsYXNoIHR5cGVzLiBJbiBzdWNoIGEgY2FzZSwgdXNpbmcgQ09ORklHX0VOVl9TSVpFCiAgICBvciBDT05GSUdfRU5WX1NJWkVfUkVEVU5EIHRvIGVuYWJsZSB0aGUgcHJvdGVjdGlvbiBtYXkgbGVhZCB0byB0aGUKICAgIGNhc2UgdGhhdCBvbmx5IHRoZSBmaXJzdCBvZiB0aGVzZSBzZWN0b3JzIGdldCBwcm90ZWN0ZWQsIHdoaWxlIHRoZQogICAgZm9sbG93aW5nIG9uZXMgYXJlbid0LgoKICAgIFRoaXMgaXMgbm8gcmVhbCBwcm9ibGVtLCBidXQgaXQgY2FuIGJlIGNvbmZ1c2luZyBmb3IgdGhlIHVzZXIgLQogICAgZXNwZWNpYWxseSBvbiBib2FyZHMgdGhhdCB1c2UgQ09ORklHX0VOVl9TRUNUX1NJWkUgdG8gcHJvdGVjdCB0aGUKICAgICJub3JtYWwiIGFyZWFzLCB3aGlsZSB1c2luZyBDT05GSUdfRU5WX1NJWkVfUkVEVU5EIGZvciB0aGUKICAgICJyZWR1bmRhbnQiIGFyZWEuCgogICAgVG8gYXZvaWQgc3VjaCBpbmNvbnNpc3RlbmNpZXMsIEkgY2hhbmdlZCBhbGwgc3VjbiBib2FyZHMgdGhhdCBJIGZvdW5kCiAgICB0byBjb25zaXN0ZW50bHkgdXNlIENPTkZJR19FTlZfU0VDVF9TSVpFIGZvciBwcm90ZWN0aW9uLiBUaGlzIHNob3VsZAogICAgbm90IGNhdXNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIENjOiBQYXVsIFJ1aGxhbmQKICAgIENjOiBQYW50ZWxpcyBBbnRvbmlvdSA8cGFudG9AaW50cmFjb20uZ3I+CiAgICBDYzogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQ2M6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgogICAgQ2M6IERhdmUgRWxsaXMgPERHRUBzaXhuZXRpby5jb20+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGI4MTgzMGY2ZTNiM2U2ZWQxMTRkMDcxZWIxMDc5NjVlNDlmYTliNWEKQXV0aG9yOiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KRGF0ZToJVGh1IE1heSAxNCAxNDowMzowOSAyMDA5ICswNDAwCgogICAgbW1jOiBpdCdzIHNhZmUgdG8gaWdub3JlIG1tY19zZW5kX2lmX2NvbmQoKSByZXR1cm4gdmFsdWUKCiAgICBSZXR1cm4gdmFsdWUgb2YgbW1jX3NlbmRfaWZfY29uZCgpIGNhbiBiZSBzYWZlbHkgaWdub3JlZCAoYXMgaXQgaXMKICAgIGRvbmUgaW4gTGludXgpLiBUaGlzIG1ha2VzIG9sZGVyIGNhcmRzIHdvcmsgd2l0aCBNWEMgTUNJIGNvbnRyb2xsZXIuCgogICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Cgpjb21taXQgZGJhNmZjZjY1MTdmYWE1ZGRhN2RmODEwOWZlYmUwM2M5YzcyYTZmNQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE1heSAxMSAxNTo1NDoxMyAyMDA5ICswMjAwCgogICAgY2ZpX210ZDogRml4IGJ1ZyBpbiBsYXN0IHNlY3RvciBkZXRlY3Rpb24KCiAgICBUaGlzIHBhdGNoIG5vdyBlbmFibGVkIHRoaXMgY2ZpLW10ZCB3cmFwcGVyIHRvIGNvcnJlY3RseSBkZXRlY3QgYW5kCiAgICBlcmFzZSB0aGUgbGFzdCBzZWN0b3IgaW4gYW4gTk9SIEZMQVNIIGRldmljZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNGUzZDg5YmE5NDhlZWY4MDFmZmQ0NmVmODYyY2RlZGU1YjNmODMyMApBdXRob3I6IFlhdWhlbiBLaGFydXpoeSA8amVraG9yQGdtYWlsLmNvbT4KRGF0ZToJVGh1IE1heSA3IDAwOjQzOjMwIDIwMDkgKzAzMDAKCiAgICBtbWM6IEZpeCBkZWNvZGluZyBvZiBTQ1IgJiBmdW5jdGlvbiBzd2l0Y2ggZGF0YSBvbiBsaXR0bGUtZW5kaWFuIG1hY2hpbmVzCgogICAgU0NSICYgc3dpdGNoIGRhdGEgYXJlIHJlYWQgZnJvbSBjYXJkIGFzIGJpZy1lbmRpYW4gd29yZHMgYW5kIHNob3VsZCBiZQogICAgY29udmVydGVkIHRvIENQVSBieXRlIG9yZGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFlhdWhlbiBLaGFydXpoeSA8amVraG9yQGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmMzNjYjM0YjM5NzFkYWJlMzcyMGQ1NzdiMGUxYjg2MDFjMDlmZTE3CkF1dGhvcjogWWF1aGVuIEtoYXJ1emh5IDxqZWtob3JAZ21haWwuY29tPgpEYXRlOglUaHUgTWF5IDcgMTM6MDg6NTMgMjAwOSArMDMwMAoKICAgIG1tYzogUmVtb3ZlIHJldHVybiBmcm9tIG1tY19pbml0IGZvciBub24gU0QgMi4wIGNvbXBhdGlibGUgY2FyZHMuCgogICAgQ2FyZHMgd2hpY2ggYXJlIG5vdCBjb21wYXRpYmxlIHdpdGggU0QgMi4wIHN0YW5kYXJkLCBtYXkgcmV0dXJuIHJlc3BvbnNlCiAgICBmb3IgQ01EOCBjb21tYW5kLCBidXQgaXQgd2lsbCBiZSBpbnZhbGlkIGluIHRlcm1zIG9mIFNEIDIuMC4gV2Ugc2hvdWxkCiAgICBhY2NlcHQgdGhpcyBjYXNlIGFzIGFkbWlzc2libGUsIGp1c3QgbGlrZSBMaW51eCBkb2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFlhdWhlbiBLaGFydXpoeSA8amVraG9yQGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5OThiZTNkZDU5ZWQwYWY0YmVjMzgzMjQwNDdmZWNmYTg4YWM0NWRiCkF1dGhvcjogUmFiaW4gVmluY2VudCA8cmFiaW5AcmFiLmluPgpEYXRlOglTdW4gQXByIDUgMTM6MzA6NTYgMjAwOSArMDUzMAoKICAgIG1tYzogZHJvcCB1bm5lY2Vzc2FyeSBjYXN0cwoKICAgIE5vdyB0aGF0IHJlc3BvbnNlIGlzIGEgdWludCwgd2UgY2FuIGRyb3AgYWxsIHRoZSBjYXN0cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYWJpbiBWaW5jZW50IDxyYWJpbkByYWIuaW4+Cgpjb21taXQgMGI0NTNmZmUyOGJiOTIyN2Q4NmRkYmUwODkzYmQxOWM5M2YwNGVkNwpBdXRob3I6IFJhYmluIFZpbmNlbnQgPHJhYmluQHJhYi5pbj4KRGF0ZToJU3VuIEFwciA1IDEzOjMwOjU1IDIwMDkgKzA1MzAKCiAgICBtbWM6IGZpeCByZXNwb25zZSBkZWNvZGluZyBvbiBsaXR0bGUgZW5kaWFuCgogICAgVGhlIG1tYyBjb2RlIGRlZmluZXMgdGhlIHJlc3BvbnNlIGFzIGFuIGFycmF5IG9mIGNoYXJzLiAgSG93ZXZlciwgaXQKICAgIGFjY2VzcyB0aGUgcmVzcG9uc2UgYnl0ZXMgYm90aCBhcyAoaSkgYW4gYXJyYXkgb2YgZm91ciB1aW50cyAod2l0aAogICAgY2FzdHMpIGFuZCAoaWkpIGFzIGluZGl2aWR1YWwgY2hhcnMuICBUaGUgZm9ybWVyIGNhc2UgaXMgdXNlZCBtb3JlCiAgICBvZnRlbiwgaW5jbHVkaW5nIGJ5IHRoZSBkcml2ZXIgd2hlbiBpdCBhc3NpZ25zIHRoZSByZXNwb25zZS4KCiAgICBUaGUgY2hhci13aXNlIGFjY2Vzc2VzIGFyZSBicm9rZW4gb24gbGl0dGxlIGVuZGlhbiBzeXN0ZW1zIGJlY2F1c2UgdGhleQogICAgYXNzdW1lIHRoYXQgdGhlIGJ5dGVzIGluIHRoZSB1aW50cyBhcmUgaW4gYmlnIGVuZGlhbiBieXRlIG9yZGVyLgoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBieSBjaGFuZ2luZyB0aGUgcmVzcG9uc2UgdG8gYmUgYW4gYXJyYXkgb2YgZm91cgogICAgdWludHMgYW5kIHJlcGxhY2luZyB0aGUgY2hhci13aXNlIGFjY2Vzc2VzIHdpdGggZXF1aXZhbGVudCB1aW50LXdpc2UKICAgIGFjY2Vzc2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJhYmluIFZpbmNlbnQgPHJhYmluQHJhYi5pbj4KCmNvbW1pdCA5YjFmOTQyYzA5ZGQ5NDJlNmRlMzE4NWNhYTgxYzExMWIxNGRlNTY3CkF1dGhvcjogUmFiaW4gVmluY2VudCA8cmFiaW5AcmFiLmluPgpEYXRlOglTdW4gQXByIDUgMTM6MzA6NTQgMjAwOSArMDUzMAoKICAgIG1tYzogdXNlIGxsZGl2IHRvIGZpeCBhcm0gZWFiaSBidWlsZAoKICAgIFRoZSBnZW5lcmljIE1NQyBjb3JlIHVzZXMgZGlyZWN0IGxvbmcgbG9uZyBkaXZpc2lvbnMsIHdoaWNoIGRvIG5vdCBidWlsZAogICAgd2l0aCBBUk0gRUFCSSB0b29sY2hhaW5zLiAgVXNlIGxsZGl2KCkgaW5zdGVhZCwgd2hpY2ggd29ya3MgZXZlcnl3aGVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYWJpbiBWaW5jZW50IDxyYWJpbkByYWIuaW4+Cgpjb21taXQgZTg1NjQ5YzdlNjgzZmFlYTFjY2ZkZGM5ZmE5YWJjNjJmMzhlNDIwMQpBdXRob3I6IFJhYmluIFZpbmNlbnQgPHJhYmluQHJhYi5pbj4KRGF0ZToJU3VuIEFwciA1IDEzOjMwOjUzIDIwMDkgKzA1MzAKCiAgICBtbWM6IGNoZWNrIGZpbmRfbW1jX2RldmljZSByZXR1cm4gdmFsdWUKCiAgICBmaW5kX21tY19kZXZpY2UgcmV0dXJucyBOVUxMIGlmIGFuIGludmFsaWQgZGV2aWNlIG51bWJlciBpcyBzcGVjaWZpZWQuCiAgICBDaGVjayBmb3IgdGhpcyB0byBhdm9pZCBkZXJlZmVyZW5jaW5nIE5VTEwgcG9pbnRlcnMuCgogICAgU2lnbmVkLW9mZi1ieTogUmFiaW4gVmluY2VudCA8cmFiaW5AcmFiLmluPgoKY29tbWl0IGFjMDg2NWZmMzM4NzBjZGYyY2Q0ODAxNjUwNDVlMWJjMzExZTlmYTIKQXV0aG9yOiBSYWJpbiBWaW5jZW50IDxyYWJpbkByYWIuaW4+CkRhdGU6CVN1biBBcHIgNSAxMzozMDo1MiAyMDA5ICswNTMwCgogICAgbW1jOiBjbGVhbiB1cCBoZWxwIHRleHRzCgogICAgUmVtb3ZlIHNvbWUgcmVwZWF0ZWQgd29yZHMgYW5kIHN1cGVyZmx1b3VzIG5ld2xpbmVzIGluIHRoZSBtbWMgY29tbWFuZAogICAgaGVscCBlbnRyaWVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJhYmluIFZpbmNlbnQgPHJhYmluQHJhYi5pbj4KCmNvbW1pdCA3ZDY5MDBlYmUxNmQ2NzljMGUwM2Y4ZDE1ODRiNjQwNTdhNjRjZTM5CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglGcmkgTWF5IDI5IDE3OjAxOjQ4IDIwMDkgLTA0MDAKCiAgICBCbGFja2Zpbjogc3BpOiBmaXggcGluIGhhbmRsaW5nIG9mIFNQSTAgU1NFTDQKCiAgICBDUzQgb24gU1BJMCBoYXMgYSBkZWRpY2F0ZWQgUEg4IHBpbiB3aGljaCBuZWVkcyB0byBiZSBlbmFibGVkIGFzIGEKICAgIHBlcmlwaGVyYWwgaW4gb3JkZXIgdG8gd29yay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMjE1NzM1OWRhZDI1MzM5ODdmNWViMDE4MWVmNTQzNjkzZmFkNmEzMwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIE1heSAyNiAwMjo1MTo1NyAyMDA5IC0wNDAwCgogICAgQmxhY2tmaW46IGZpeCBpZigpIGxvZ2ljIGluIGJvb3Ryb20gZXZ0MSBjaGVjawoKICAgIEEgbWlzc2luZyBzZXQgb2YgcGFyZW50aGVzaXMgY2F1c2VkIHRoZSBzaWxpY29uIHJldmlzaW9uIHRvIGFwcGx5IG9ubHkgdG8KICAgIHRoZSBCRjUzMyBhbmQgbm90IHRoZSBCRjUzMS9CRjUzMiB2YXJpYW50cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNzZiNTg4M2RhMmNmMDQ5Y2Q0MTA5MDFjMDRlYTQ1MGU1ZjVjMjdjMwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IE1heSAxNiAxMjowNDoyMiAyMDA5ICswMjAwCgogICAgamZmczIvbXRkcGFydHM6IEZpeCBwcm9ibGVtIHdpdGggdXNhZ2UgZnJvbSBKRkZTMiBhbmQgTVREUEFSVFMgdG9nZXRoZXIKCiAgICBDdXJyZW50bHkgdXNpbmcgSkZGUzIgd2l0aCBNVERQQVJUUyBlbmFibGVkIGRvZXNuJ3Qgd29yay4gVGhpcyBpcyBiZWNhdXNlCiAgICBtdGRwYXJ0c19pbml0KCkgaXMgYXZhaWxhYmxlIGluIGJvdGggZmlsZXMsIGNtZF9tdGRwYXJ0cy5jIGFuZAogICAgY21kX2pmZnMyLmMuIFBsZWFzZSBub3RlIHRoYXQgaW4gdGhlIG9yaWdpbmFsIGNtZF9qZmZzMi5jIGZpbGUgKGJlZm9yZQogICAgdGhlIGpmZnMyL210ZHBhcnRzIGNvbW1hbmQvZmlsZSBzcGxpdCB0aG9zZSAyIGRpZmZlcmVudCB2ZXJzaW9ucwogICAgYWxyZWFkeSBleGlzdGVkLiBTbyB0aGlzIGlzIG5vdGhpbmcgbmV3LiBUaGUgbWFpbiBwcm9ibGVtIGlzIHRoYXQgdGhlCiAgICB2YXJpYWJsZXMgImN1cnJlbnRfZGV2IiBhbmQgImN1cnJlbnRfcGFydG51bSIgYXJlIGRlY2xhcmVkIGluIGJvdGgKICAgIGZpbGVzIG5vdy4gVGhpcyBkb2Vzbid0IHdvcmsuCgogICAgVGhpcyBwYXRjaCBub3cgY2hhbmdlcyB0aGUgbmFtZXMgb2YgdGhvc2UgdmFyaWFibGUgdG8gbW9yZSBzcGVjaWZpYwogICAgbmFtZXM6ICJjdXJyZW50X210ZF9kZXYiIGFuZCAiY3VycmVudF9tdGRfcGFydG51bSIuIFRoaXMgaXMgYmVjYXVzZQogICAgdGhpcyBwYXRjaCBhbHNvIGNoYW5nZXMgdGhlIGRlY2xhcmF0aW9uIGZyb20gc3RhdGljIHRvIGdsb2JhbCwgc28KICAgIHRoYXQgdGhleSBjYW4gYmUgdXNlZCBmcm9tIGJvdGggZmlsZXMuCgogICAgUGxlYXNlIG5vdGUgdGhhdCBteSBmaXJzdCB0ZXN0cyB3ZXJlIG5vdCBzdWNjZXNzZnVsLiBUaGUgTVREIGRldmljZXMKICAgIHNlbGVjdGVkIHZpYSBtdGRwYXJ0cyBhcmUgbm93IGFjY2Vzc2VkIGJ1dCBJJ20gZmFpbGluZyB0byBzZWUgdGhlCiAgICBkaXJlY3RvcnkgbGlzdGVkIHZpYSB0aGUgImxzIiBjb21tYW5kLiBOb3RoaW5nIGlzIGRpc3BsYXllZC4gUGVyaGFwcwogICAgSSBkaWRuJ3QgZ2VuZXJhdGUgdGhlIEpGRlMyIGltYWdlIGNvcnJlY3RseSAoSSBuZXZlciB1c2VkIEpGRlMyIGluCiAgICBVLUJvb3QgYmVmb3JlKS4gTm90IHN1cmUuIFBlcmhhcHMgc29tZWJvZHkgZWxzZSBjb3VsZCB0YWtlIGEgbG9vayBhdAogICAgdGhpcyBhcyB3ZWxsLiBJJ2xsIGNvbnRpbnVlIGxvb2tpbmcgaW50byB0aGlzIG9uIE1vbmRheS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBDYzogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIENjOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KICAgIENjOiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KICAgIENjOiBSZW5hdWQgYmFyYmllciA8cmVuYXVkLmJhcmJpZXJAZ2UuY29tPgoKY29tbWl0IGFiNjg3OTA3OTgwZmEyODk0MGExYTk5MmQzZjFjNWQxN2NkYmJmNWQKQXV0aG9yOiBHcmFmIFlhbmcgPGdyYWYueWFuZ0BhbmFsb2cuY29tPgpEYXRlOglTdW4gTWF5IDI0IDAyOjM0OjM0IDIwMDkgLTA0MDAKCiAgICBCbGFja2ZpbjogYmY1MThmLWV6YnJkOiBzZXR1cCBwb3J0bXV4IGZvciBhc3luYyBmbGFzaAoKICAgIFRoZSBwaW5zIGZvciBhc3luYyBtZW1vcnkgd2hlcmUgcGFyYWxsZWwgZmxhc2ggbGl2ZXMgYXJlIG5vdCBlbmFibGVkIGJ5CiAgICBkZWZhdWx0LCBzbyBtYWtlIHN1cmUgd2UgbXV4IHRoZW0gYXMgbmVlZGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWYgWWFuZyA8Z3JhZi55YW5nQGFuYWxvZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZjQwZjZkYjI3OGY2MDJiNTU4MjA2OTM2MzRhNzI1NmIwYjRlNGI4MApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE1heSAyMCAxMDo1ODowMyAyMDA5ICswMjAwCgogICAgbmFuZDogRml4IHByb2JsZW0gd2l0aCBFQ0Mgb3JkZXJpbmcgZm9yIFBQQzR4eCBOREZDIHBsYXRmb3JtcwoKICAgIFRoaXMgcGF0Y2ggZW5hYmxlcyBTbWFydCBNZWRpYSAoU01DKSBFQ0MgYnl0ZSBvcmRlcmluZyB3aGljaCBpcyB1c2VkCiAgICBvbiB0aGUgUFBDNHh4IE5BTkQgRkxBU0ggY29udHJvbGxlciAoTkRGQykuIFdpdGhvdXQgdGhpcyBwYXRjaCB3ZSBoYXZlCiAgICBpbmNvbXBhdGlibGUgRUNDIGJ5dGUgb3JkZXJpbmcgdG8gdGhlIExpbnV4IGtlcm5lbCBOREZDIGRyaXZlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBBY2tlZC1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzk5YWFiNzc0OGJlZjA1M2Q1OTYxMjIxMWUxYmQ3YTNmYWJmY2UxOApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE1heSAyMCAxMDo1ODowMiAyMDA5ICswMjAwCgogICAgcHBjNHh4OiBGaXggcHJvYmxlbSB3aXRoIEVDQyBvcmRlcmluZyBmb3IgUFBDNHh4IE5ERkMgcGxhdGZvcm1zCgogICAgVGhpcyBwYXRjaCBub3cgdXNlcyB0aGUgY29ycmVjdCBFQ0MgYnl0ZSBvcmRlciAoU21hcnQgTWVkaWEgLSBTTUMpCiAgICB0byBiZSB1c2VkIG9uIHRoZSA0eHggTkFORCBGTEFTSCBkcml2ZXIuIFdpdGhvdXQgdGhpcyBwYXRjaCB3ZSBoYXZlCiAgICBpbmNvbXBhdGlibGUgRUNDIGJ5dGUgb3JkZXJpbmcgdG8gdGhlIExpbnV4IGtlcm5lbCBOREZDIGRyaXZlci4KCiAgICBQbGVhc2Ugbm90ZSB0aGF0IHdlIGFsc28gaGF2ZSB0byBlbmFibGUgQ09ORklHX01URF9OQU5EX0VDQ19TTUMgaW4KICAgIGRyaXZlcnMvbXRkL25hbmQvbmFuZF9lY2MuYyBmb3IgY29ycmVjdCBvcGVyYXRpb24uIFRoaXMgaXMgZG9uZSB3aXRoCiAgICBhIHNlcGVyYXRlIHBhdGNoLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1ZDg0MWZhYzgyNDlhMmIzZjlhODE0ZGEyMTQwMTMyYmUwYTlmNjBkCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgTWF5IDIwIDEwOjU4OjAxIDIwMDkgKzAyMDAKCiAgICBwcGM0eHg6IE1vdmUgZGVmaW5pdGlvbiBmb3IgUFBDNHh4IE5BTkQgRkxBU0ggY29udHJvbGxlciB0byBoZWFkZXIKCiAgICBUaGlzIHBhdGNoIG1vdmVzIHRoZSBkZWZpbml0aW9uIGZvciB0aGUgUFBDNHh4IE5BTkQgRkxBU0ggY29udHJvbGxlcgogICAgKE5ERkMpIENPTkZJR19OQU5EX05ERkMgaW50byBpbmNsdWRlL3BwYzR4eC5oLiBUaGlzIGlzIG5lZWRlZCBmb3IgdGhlCiAgICB1cGNvbWluZyBmaXggZm9yIHRoZSBFQ0MgYnl0ZSBvcmRlcmluZyBvZiB0aGUgTkRGQyBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQWNrZWQtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDJkZjcyYjgyYmM5ZTE3Yjg4ZGM4MjczNWEwNjc3NDkyMjBiZWIwMjUKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgTWF5IDE5IDEyOjUzOjM2IDIwMDkgLTA1MDAKCiAgICBjb21tb246IGZpeCBpbmxpbmUtLXdlYWsgZXJyb3Igc3BvdHRlZCBieSBnY2MgNC40CgogICAgY21kX2lkZS5jOjU0NzogZXJyb3I6IGlubGluZSBmdW5jdGlvbiAnaWRlX2luYicgY2Fubm90IGJlIGRlY2xhcmVkIHdlYWsKCiAgICByZW1vdmluZyB0aGUgaW5saW5lIGF0dHJpYnV0ZSBmaXhlcyBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDlmZDlhYmVkY2MzYzEwY2Y4OTM1MzI2NWNiZTA1ZjU4NjA5ZDUxZjMKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgTWF5IDE5IDEyOjUzOjMyIDIwMDkgLTA1MDAKCiAgICBUUU04MzR4OiByZW1vdmUgZGVmaW5lcyBjYXVzaW5nIGdjYzQuNCB3YXJuaW5ncwoKICAgIENvbmZpZ3VyaW5nIGZvciBUUU04MzR4IGJvYXJkLi4uCiAgICBjcHVfaW5pdC5jOiBJbiBmdW5jdGlvbiAnY3B1X2luaXRfZic6CiAgICBjcHVfaW5pdC5jOjI2Mjogd2FybmluZzogYXJyYXkgc3Vic2NyaXB0IGlzIGFib3ZlIGFycmF5IGJvdW5kcwogICAgY3B1X2luaXQuYzoyNjM6IHdhcm5pbmc6IGFycmF5IHN1YnNjcmlwdCBpcyBhYm92ZSBhcnJheSBib3VuZHMKICAgIGNwdV9pbml0LmM6MjcwOiB3YXJuaW5nOiBhcnJheSBzdWJzY3JpcHQgaXMgYWJvdmUgYXJyYXkgYm91bmRzCiAgICAuLi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDA4NTAzMDE3NDcyMjhhMzMyN2YyODE1YTg1Mjg0ZDI2YWRlM2RlOTUKQXV0aG9yOiBBbmRyZWFzIEh1YmVyIDxhbmRyZWFzLmh1YmVyQGtleW1pbGUuY29tPgpEYXRlOglUdWUgTWF5IDE5IDExOjA2OjMwIDIwMDkgKzAyMDAKCiAgICBVQkk6IGZpeCByZXR1cm4gY29kZSBpbiB1Ymlfdm9sdW1lX3JlYWQKCiAgICBSZXR1cm4gLUVOT0RFViBpbnN0ZWFkIG9mIDAgd2hlbiB0cnlpbmcgdG8gcmVhZCBmcm9tIGEgbm9uIGV4aXN0aW5nIHZvbHVtZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIEh1YmVyIDxhbmRyZWFzLmh1YmVyQGtleW1pbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGVjMDE0ODFkZGM0Y2YzMDJjN2Y2ZDc2MGI3NzZjYTk0ODE5ZWMyMWUKQXV0aG9yOiBHcmFmIFlhbmcgPGdyYWYueWFuZ0BhbmFsb2cuY29tPgpEYXRlOglUdWUgTWF5IDE5IDA0OjQwOjA4IDIwMDkgLTA0MDAKCiAgICBCbGFja2ZpbjogZml4IHRpbWVyX2luaXQoKS90aW1lcl9yZXNldCgpCgogICAgVGhlIHRpbWVyX2luaXQoKSBmdW5jdGlvbiB3YXMgbm90IHVzaW5nIHRoZSByaWdodCBjc3luYyBpbnN0cnVjdGlvbiwgbm9yCiAgICB3YXMgaXQgZG9pbmcgaXQgcmlnaHQgYWZ0ZXIgZGlzYWJsaW5nIHRoZSBjb3JlIHRpbWVyLgoKICAgIFRoZSB0aW1lcl9yZXNldCgpIGZ1bmN0aW9uIHdvdWxkIHJlc2V0IHRoZSB0aW1lc3RhbXAsIGJ1dCBub3QgdGhlIGFjdHVhbAogICAgdGltZXIsIHNvIHRoZXJlIHdhcyBhIGNvbW1vbiBlZGdlIGNhc2Ugd2hlcmUgZ2V0X3RpbWVyKCkgcmV0dXJuIGEganVtcCBvZgogICAgb25lIHRpbWVzdGFtcCAoY291cGxlIG1pbGxpc2Vjb25kcykgcmlnaHQgYWZ0ZXIgcmVzZXR0aW5nLglUaGlzIGNhdXNlZAogICAgbWFueSBmdW5jdGlvbnMgdG8gaW1wcm9wZXJseSB0aW1lb3V0IHJpZ2h0IGF3YXkuCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZiBZYW5nIDxncmFmLnlhbmdAYW5hbG9nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBjMDYzMjZjNzNiZjkwZTQ4YThlMWNmODg5M2FkMzFjNTc1NDIzZjUwCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBwb2JveC5jb20+CkRhdGU6CVNhdCBNYXkgMTYgMDk6MTI6MDkgMjAwOSArMDkwMAoKICAgIE1JUFM6IGxpYl9taXBzL2JvYXJkLmM6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzCgogICAgVGhpcyBmaXhlcyB0aGUgZm9sbG93aW5nIGJ1aWxkIHdhcm5pbmdzOgoKICAgIGJvYXJkLmM6IEluIGZ1bmN0aW9uICdib2FyZF9pbml0X3InOgogICAgYm9hcmQuYzozMjg6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAnaScKICAgIGJvYXJkLmM6MzI2OiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ2UnCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBwb2JveC5jb20+Cgpjb21taXQgNDdmNmEzNmNjM2YzNDI3Y2M4ZTRmMWQwZjNlNjY3OGJlNmYzMzc2OQpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcG9ib3guY29tPgpEYXRlOglTYXQgTWF5IDE2IDA5OjEyOjA5IDIwMDkgKzA5MDAKCiAgICBNSVBTOiBNYWtlIGFsbCBleHRlcm4tZWQgZnVuY3Rpb25zIGluIGJpdG9wcy5oIHN0YXRpYwoKICAgIEFsbCB0aGVzZSBmdW5jdGlvbnMgYXJlIGV4cGVjdGVkIHRvIGJlIHN0YXRpYyBpbmxpbmUtZWQuCiAgICBUaGlzIHBhdGNoIGFsc28gZml4ZXMgdGhlIGZvbGxvd2luZyBidWlsZCB3YXJuaW5ncyBvbiBNSVBTIHRhcmdldHM6CgogICAgaW5jbHVkZS9hc20vYml0b3BzLmg6IEluIGZ1bmN0aW9uICdleHQyX2ZpbmRfbmV4dF96ZXJvX2JpdCc6CiAgICBpbmNsdWRlL2FzbS9iaXRvcHMuaDo4NjI6IHdhcm5pbmc6ICdfX2Zzd2FiMzInIGlzIHN0YXRpYyBidXQgdXNlZCBpbiBpbmxpbmUgZnVuY3Rpb24gJ2V4dDJfZmluZF9uZXh0X3plcm9fYml0JyB3aGljaCBpcyBub3Qgc3RhdGljCiAgICBpbmNsdWRlL2FzbS9iaXRvcHMuaDo4ODU6IHdhcm5pbmc6ICdfX2Zzd2FiMzInIGlzIHN0YXRpYyBidXQgdXNlZCBpbiBpbmxpbmUgZnVuY3Rpb24gJ2V4dDJfZmluZF9uZXh0X3plcm9fYml0JyB3aGljaCBpcyBub3Qgc3RhdGljCiAgICBpbmNsdWRlL2FzbS9iaXRvcHMuaDo4ODc6IHdhcm5pbmc6ICdfX2Zzd2FiMzInIGlzIHN0YXRpYyBidXQgdXNlZCBpbiBpbmxpbmUgZnVuY3Rpb24gJ2V4dDJfZmluZF9uZXh0X3plcm9fYml0JyB3aGljaCBpcyBub3Qgc3RhdGljCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBwb2JveC5jb20+Cgpjb21taXQgODc0MjNkNzQwYjkxMzI5YjhkMWQwYjczY2FmZDY5MzA5OTNiNTU4YQpBdXRob3I6IFRob21hcyBMYW5nZSA8dGhvbWFzQGNvcmVsYXR1cy5zZT4KRGF0ZToJRnJpIEFwciAyNCAxNjoyMjoxNiAyMDA5ICswMjAwCgogICAgTUlQUzogSW1wbGVtZW50IGV0aGVybmV0IGhhbHQgZm9yIGF1MXgwMAoKICAgIEltcGxlbWVudCBldGhlcm5ldCBoYWx0KCkgYnkgcHV0dGluZyBNQUMwIGluIHJlc2V0LgogICAgSWYgd2UgZG8gbm90IGRvIHRoaXMsIHdlIHdpbGwgZ2V0IG1lbW9yeSBjb3JydXB0aW9uCiAgICB3aGVuIGV0aGVybmV0IGZyYW1lcyBhcmUgcmVjZWl2ZWQgZHVyaW5nIGVhcmx5IE9TIGJvb3QuCgogICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIExhbmdlIDx0aG9tYXNAY29yZWxhdHVzLnNlPgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBwb2JveC5jb20+Cgpjb21taXQgYTJlMGZmY2YyZDlhMjJjNTgyYTkzZTg0YTRiZWYyMGZkMzg3N2Y0NwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBNYXkgMTUgMjM6Mjk6MjMgMjAwOSArMDIwMAoKICAgIFByZXBhcmUgdjIwMDkuMDYtcmMyCgogICAgVXBkYXRlIENIQU5HRUxPRy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGY0MzE3ZWE5MTk0MmY0NGNjMWM0MzMyNzc5MjdiNjE2MThlOWIwYTUKQXV0aG9yOiBEYW5pZWwgTWFjayA8ZGFuaWVsQGNhaWFxLmRlPgpEYXRlOglUdWUgTWF5IDUgMTI6NDg6MjkgMjAwOSArMDIwMAoKICAgIEFSTTogZml4IFBYQSBidWlsZCBieSBkZWZpbmluZyBVUDJPQ1IKCiAgICBVLUJvb3QgZG9lcyBub3QgY3VycmVudGx5IGJ1aWxkIGZvciBQWEEgcGxhdGZvcm1zIHdpdGggVVNCIHN1cHBvcnQKICAgIGVuYWJsZWQ6CgogICAgdXNiLmM6NDY6IGVycm9yOiAnVVAyT0NSJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKCiAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgTWFjayA8ZGFuaWVsQGNhaWFxLmRlPgogICAgQ2M6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+CgogICAgRWRpdGVkIGNvbW1pdCBtZXNzYWdlLgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBlMjZhZDBlYWJkMTBhOGNkYTUxOTIwZmJjZmU0ZGE1YjRjY2YwYzk4CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIE1heSAxNSAyMjozMjo1NyAyMDA5ICswMjAwCgogICAgTWlub3IgQ29kaW5nIFN0eWxlIGZpeDsgdXBkYXRlIENIQU5HRUxPRy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGFmNzVhNDVkMjNiNzJhNTlhYzVjYzA0Mjc2OTZjN2Y2MzRmZGM5NGIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgTWF5IDE1IDA5OjI3OjU4IDIwMDkgKzAyMDAKCiAgICBJREU6IGJhaWwgb3V0IG9mIGRldl9wcmludCgpIGZvciB1bmtub3duIGRldmljZSB0eXBlcwoKICAgIENvbW1pdCA1NzRiMzE5NTEyIGludHJvZHVjZWQgYSBzdWJ0bGUgYnVnIGJ5IG1peGluZyBhIGxpc3Qgb2YgdGVzdHMKICAgIGZvciAiZGV2X2Rlc2MtPnR5cGUiIGFuZCAiZGV2X2Rlc2MtPmlmX3R5cGUiIGludG8gb25lIHN3aXRjaCgpLCB3aGljaAogICAgdGhlbiBtb3N0bHkgZGlkIG5vdCB3b3JrIGJlY2F1c2UgImRldl9kZXNjLT50eXBlIiBjYW5ub3QgdGFrZSBhbnkKICAgICJJRl8qIiB0eXBlIHZhbHVlcy4gQSBsYXRlciBmaXggaW4gY29tbWl0IDhlYzZlMzMyZWEgY2hhbmdlZCB0aGUKICAgIHN3aXRjaCgpIGludG8gdGVzdGluZyAiZGV2X2Rlc2MtPmlmX3R5cGUiLCBidXQgYXQgdGhpcyBwb2ludCB0aGUKICAgIGluaXRpYWwgdGVzdCBmb3IgdW5rbm93biBkZXZpY2UgdHlwZXMgd2FzIGNvbXBsZXRlbHkgbG9zdCwgd2hpY2gKICAgIHJlc3VsdGVkIGluIG91dHB1dCBsaWtlIHRoYXQgZm9yIElERSBwb3J0cyB3aXRob3V0IGRldmljZSBhdHRhY2hlZDoKCiAgICAgIERldmljZSAxOiBNb2RlbDoJRmlybTogIFNlciM6CgkJVHlwZTogIyAxRiAjCgkJQ2FwYWNpdHk6IG5vdCBhdmFpbGFibGUKCiAgICBUaGlzIHBhdGNoIHJlLWludHJvZHVjZXMgdGhlIG1pc3NpbmcgdGVzdCBmb3IgdW5rbm93biBkZXZpY2UgdHlwZXMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIENjOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBDYzogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+CiAgICBUZXN0ZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjMjFmNjJkODQ4M2ZiYWI0NGNkOThkOTNmZjJlOTM1NWEzMzBkMjI1CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgTWF5IDE0IDA3OjI1OjEzIDIwMDkgKzAyMDAKCiAgICA3NHh4Xzd4eDogRml4IHJvdW5kaW5nIHByb2JsZW0gaW4gQ1BVIGZyZXF1ZW5jeSBjYWxjdWxhdGlvbgoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBwcm9ibGVtIGluIHRoZSBDUFUgZnJlcXVlbmN5IGNhbGN1bGF0aW9uLiBXaXRob3V0IGl0CiAgICBhIDc5OE1IeiBDUFUgaXMgZGlzcGxheWVkIGFzIDM2OC41MDMgTUh6LiBBbmQgd2l0aCBpdCBpdCdzIDc5OCBNSHouCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDNhZDhhMDUxN2I3MjQ3ODJhYjM2ZjJiNTU0YTk0ZGU0YzAwYzFhZGIKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglXZWQgTWF5IDEzIDIyOjI0OjEyIDIwMDkgKzAyMDAKCiAgICBjb25zb2xlLmg6IHJlbW92ZSB1bnVzZWQgcHJvdG90eXBlICdjb25zb2xlX3JlYWxsb2MnCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA4NGJmN2NhNTIyZTk0ZWM0MDJhMTI2NGIwMTk3MWI5MjRiN2UyNjhmCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIE1heSAxMyAyMjoxNjozMSAyMDA5ICswMjAwCgogICAgYXBpOiByZW1vdmUgdW4tbmVlZGVkIGlmZGVmIENPTkZJR19BUEkgYWxyZWFkeSBoYW5kbGUgYnkgdGhlIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA3OTJhMDllYjlkNWQ4YzRmNzRiN2U5ZjJlODg3MzE2ZDUxMWE0ZTgwCkF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+CkRhdGU6CVdlZCBNYXkgMTMgMTA6NTQ6MTAgMjAwOSArMDIwMAoKICAgIEZpeCBlLW1haWwgYWRkcmVzcyBvZiBHYXJ5IEplbm5lam9obi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KCmNvbW1pdCA1ZTJjMDhjM2FjOTA4MDhlOWJlNjQ4NTY5MTZiZmQ2ZGY5ODQ4MjNjCkF1dGhvcjogRW1pbCBNZWR2ZSA8RW1pbGlhbi5NZWR2ZUBGcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgTWF5IDEyIDEzOjQ4OjMyIDIwMDkgLTA1MDAKCiAgICBSZW1vdmUgaW5saW5lIHF1YWxpZmllciBmcm9tIHNob3dfYm9vdF9wcm9ncmVzcygpCgogICAgVGhlICdpbmxpbmUnIGlzIGNvbmZsaWN0aW5nIHdpdGggdGhlIHNlbWFudGljIG9mICd3ZWFrJyBhdHRyaWJ1dGUgYW5kIHdpdGggdGhlCiAgICB3YXkgdGhlIHNob3dfYm9vdF9wcm9ncmVzcygpIGZ1bmN0aW9uIGlzIHVzZWQuCgogICAgQWxzbyBnY2MgNC40IGlzIGNvbXBsYWluaW5nIGFib3V0IGl0OgoKICAgIG1haW4uYzo1MTogZXJyb3I6IGlubGluZSBmdW5jdGlvbiAnc2hvd19ib290X3Byb2dyZXNzJyBjYW5ub3QgYmUgZGVjbGFyZWQgd2VhawoKICAgIFNpZ25lZC1vZmYtYnk6IEVtaWwgTWVkdmUgPEVtaWxpYW4uTWVkdmVARnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmZTZkYTQ4MzczMDhhYTMzZDUzN2FjM2U3ZjM2YzJkNjZlM2Q5YTM2CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIE1heSAxMiAxNToxNzozNSAyMDA5ICswMjAwCgogICAgTVBDODI2MDogZml4dXAgZGV2aWNlIHRyZWUgYnkgcHJvcGVydHkgaW5zdGVhZCBvZiBwYXRoCgogICAgY3B1L21wYzgyNjAvY3B1LmMgdXNlZCB0byB1c2UgZG9fZml4dXBfYnlfcGF0aF91MzIoKSB0byB1cGRhdGUgdGhlCiAgICBjbG9jayBmcmVxdWVuY2llcyBpbiB0aGUgZGV2aWNlIHRyZWUsIHVzaW5nIGEgQ1BVIHBhdGgKICAgICIvY3B1cy9PRl9DUFUiLCB3aXRoIE9GX0NQVSBiZWluZCBkZWZpbmVkIGluIHRoZSBib2FyZCBjb25maWcgZmlsZS4KCiAgICBIb3dldmVyLCB0aGlzIGRvZXMgbm90IHdvcmsgd2hlbiBvbmUgYm9hcmQgY29uZmlnIGZpbGUgKGhlcmU6CiAgICBNUEM4MjYwQURTLmgpIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIHNldmVyYWwgZGlmZnJlbnQgQ1BVcyBhbmQKICAgIHRoZXJlZm9yIGNvbnRhaW5zIGEgZ2VuZXJpYyBkZWZpbml0aW9uIGxpa2UgImNwdUAwIiwgYXMgdGhlIGRldmljZQogICAgdHJlZXMgdGhhdCB3aWxsIHRoZW4gYmUgbG9hZGVkIHdpbGwgY29udGFpbiBzcGVjaWZpYyBuYW1lcyBsaWtlCiAgICAiUG93ZXJQQyw4MjcyQDAiLgoKICAgIFdlIHN3aXRjaCB0byB1c2luZyBkb19maXh1cF9ieV9wcm9wX3UzMigpIGluc3RlYWQsIHNvIHdlIGNhbiBzZWFyY2gKICAgIGZvciBkZXZpY2VfdHlwZT0iY3B1IiwgYXMgaXQgaXMgZG9uZSBpbiBvdGhlciBhcmNoaXRlY3R1cmVzLCB0b28uCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIENjOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KICAgIFRlc3RlZC1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgMTJhNjc1MzE1NTcxNmU1YzNjMTgxYThmNDBlOGIyZDNkNjY5YWVmZApBdXRob3I6IFJvaGl0IEhhZ2FyZ3VuZGdpIDxoLnJvaGl0QHNhbXN1bmcuY29tPgpEYXRlOglNb24gTWFyIDkgMTk6NDU6NDYgMjAwOSArMDUzMAoKICAgIEZpeCBPbmVOQU5EIGlwbCB0byByZWFkIENPTkZJR19TWVNfTU9OSVRPUl9MRU4KCiAgICBBZGQgQ09ORklHX1NZU19NT05JVE9SX0xFTiBtYWNybyB0byBhcG9sbG9uIGJvYXJkIGNvbmZpZy4KICAgIENPTkZJR19TWVNfTU9OSVRPUl9MRU4gZGVmaW5lcyB0aGUgVS1Cb290IGltYWdlIHNpemUuCiAgICBhbmQgaXMgdXNlZCBieSBPbmVOQU5EIGlwbCB3aGVuIHJlYWRpbmcgVS1Cb290IGltYWdlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJvaGl0IEhhZ2FyZ3VuZGdpIDxoLnJvaGl0IGF0IHNhbXN1bmcuY29tPgogICAgQWNrZWQtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Cgpjb21taXQgYzQwNGNjNTg4NGIwYzgyZmQ4MmQ3NTFkYmQ4ZThiM2Y4OTE5YTIzYQpBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVR1ZSBBcHIgMjggMTc6MDQ6NTEgMjAwOSAtMDcwMAoKICAgIFNjaGVkdWxlIHJlbW92YWwgb2Ygbm9uLUNPTkZJR19ORVRfTVVMVEkgbmV0IGRyaXZlciBBUEkKCiAgICBUaGlzIHdpbGwgbWFrZSBDT05GSUdfTkVUX01VTFRJIHRoZSBvbmx5IG5ldCBkcml2ZXIgY29uZmlndXJhdGlvbiBhbmQKICAgIHdlJ2xsIGJlIGFibGUgdG8gcmVtb3ZlIHRoaXMgb3B0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNjBiYmNmMGNjNmU1NTA5NWRkMTg2ZTU5YTU1N2Q1ODRiOWI1NmViMQpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglUdWUgTWF5IDUgMTY6MDQ6MDYgMjAwOSArMDIwMAoKICAgIHBvd2VycGMvaW5rYTR4MDogUmVtb3ZlIGxlZnQtb3ZlciBpZGUgcmVzZXQgY29kZS4KCiAgICBUaGUgcGluIHdoaWNoIHdhcyB1c2VkIGluIHByZWxpbWluYXJ5IHZlcnNpb25zIG9mIHRoZSBib2FyZCBmb3IgaWRlCiAgICByZXNldCBpcyByZWFsbHkgY29ubmVjdGVkIHRvIHRoZSBydGMgY2xvY2suCgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgZjU3OGEyZGE2NzcwOTUxMjM5YWQ5MWVlOWExODc1ZmRjNzFkYmU0OApBdXRob3I6IE1hcmNvIFN0b3JuZWxsaSA8bWFyY28uc3Rvcm5lbGxpQGdtYWlsLmNvbT4KRGF0ZToJVHVlIEFwciAyOCAxOTowNDowMiAyMDA5ICswMjAwCgogICAgQWRkIGltbHMgdXRpbGl0eSBjb21tYW5kCgogICAgVGhpcyBwYXRjaCBhZGRzLCB1bmRlciB0b29scyBmb2xkZXIsIGEgbmV3IGNvbW1hbmQgY2FsbGVkIGltbHMuIEl0cwogICAgZ29hbCBpcyB0aGUgc2FtZSBvZiBVQm9vdCdzIGltbHMgYnV0IGl0IGNhbiBiZSB1c2VkIGFzIExpbnV4IHNoZWxsCiAgICBjb21tYW5kLiBJdCByZWFkcyBmcm9tIHJhdyBtdGQgcGFydGl0aW9uIGFuZCBwcmludHMgdGhlIGxpc3Qgb2YgdGhlCiAgICBzdG9yZWQgaW1hZ2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmNvIFN0b3JuZWxsaSA8bWFyY28uc3Rvcm5lbGxpQGdtYWlsLmNvbT4KCmNvbW1pdCBkYTk1NDI3Y2U0MzE5MDg3MTRhZTVlOWY2NjNlZTZlMmJjM2JjYzMzCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVR1ZSBBcHIgMjggMDg6MzY6MTEgMjAwOSArMDIwMAoKICAgIG5ldGxvb3A6IHVwZGF0ZXMgZm9yIE5ldExvb3AKCiAgICBGaXggc29tZSBpc3N1ZXMgaW50cm9kdWNlZCBmcm9tIGNvbW1pdDoKICAgIDJmNzBjNDllNWI5ODEzNjM1YWQ3MzY2NmFhMzBmMzA0YzdmZGVkYTkKICAgIHN1Z2dlc3RlZCBieSBNaWtlIEZyeXNpbmdlci4KCiAgICAtIGFkZGVkIHNvbWUgY29tbWVudCBmb3IgdGhlIGVudl9pZCB2YXJpYWJsZSBpbiBjb21tb25fY21kX252ZWRpdC5jCiAgICAtIG1vdmVkIHNvbWUgdmFyaWFibGVzIGluIGZuIHNjb3BlIGluc3RlYWQgb2YgZmlsZSBzY29wZQogICAgLSBOZXRJbml0TG9vcCBub3cgc3RhdGljIHZvaWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDNjMWQ4OTU0NWRlMTE4MjJmOGI1YWZiNTY0NmE1Nzc1NzYyMGJkOTUKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVHVlIEFwciAyOCAwNzo0ODozOSAyMDA5ICswMjAwCgogICAgODJ4eCwgaWRzODI0NzogYWRkZWQgaWRzODI0NyBib2FyZCB0byBNQUtFQUxMIHNjcmlwdAoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDg5MGEwMTdhOGE5OTVjOTIxZDFlODg5ZDM2MGU4ZDY1MzhjZWVjZmUKQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KRGF0ZToJVGh1IE1heSA3IDEzOjA4OjU1IDIwMDkgKzAyMDAKCiAgICBhcm0vaW14MzFfcGh5Y29yZTogRml4IGJpX2FyY2hfbnVtYmVyCgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+CiAgICBDYzogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgoKY29tbWl0IGVlNDdiZmFiZWZlYjI1YmRmYzgzZjQ5ZWYzYmFlMGYzMjVkM2U2OWUKQXV0aG9yOiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+CkRhdGU6CUZyaSBNYXkgMTUgMTA6MjE6MzMgMjAwOSArMDIwMAoKICAgIHJlbW92ZSBteXNlbGYgYXMgcGh5Y29yZS9saXRla2l0IE1haW50YWluZXIKCiAgICBJIG5ldmVyIGFja2VkIGEgcGF0Y2ggdGhhdCBhZGRzIG1lIGFzIHBoeWNvcmUgaS5NWDMxIG1haW50YWluZXIgbm9yIHdhcwogICAgaXQgbWUgd2hvIHB1c2hlZCB0aGUgcGF0Y2hlcywgc28gcmVtb3ZlIG15c2VsZiBmcm9tIHRoZSBtYWludGFpbmVyIGxpc3QKICAgIHNvIHRoYXQgb3RoZXIgcGVvcGxlIGRvIG5vdCBsb25nZXIgd2FpdCBmb3IgbXkgYWNrLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KCmNvbW1pdCBjNjMyNTRlZjU2MjhlZmUxYzc3Y2IyZmRiYTIwNzUzZjk2NjZmNTVkCkF1dGhvcjogU2VyZ2V5IExhcGluIDxzbGFwaW5Ab3NzZmFucy5vcmc+CkRhdGU6CVR1ZSBNYXkgMTIgMTI6MjU6MTQgMjAwOSArMDQwMAoKICAgIEFGRUI5MjYwIG5ldHdvcmsgZml4CgogICAgQUZFQjkyNjAgdXNlcyBQQTEwLCBQQTExIGZvciBFVFgyIGFuZCBFVFgzLgogICAgQWxzbywgZHVlIHRvIGV4dGFybmFsIHB1bGwtdXAgb24gSVJRIGxpbmUsIE1pY3JlbCBQSFkgSUQgaXMgMSBhZnRlciByZXNldCBzZXF1ZW5jZSwKICAgIG5vdCAwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdleSBMYXBpbiA8c2xhcGluQG9zc2ZhbnMub3JnPgoKY29tbWl0IGY4ZGRjZDU4MjIxY2FiNjNkZDI1YzIzMjRkZDIwMzI0ODdmNzQ4YjEKQXV0aG9yOiBHcmFmIFlhbmcgPGdyYWYueWFuZ0BhbmFsb2cuY29tPgpEYXRlOglUdWUgTWF5IDUgMDI6MjY6MjcgMjAwOSAtMDQwMAoKICAgIEJsYWNrZmluOiBiZjUxOGYtZXpicmQ6IHJlc2V0IGV0aGVybmV0IFBIWSBkdXJpbmcgaW5pdAoKICAgIFdlIGRvbid0IGtub3cgd2hhdCBzdGF0ZSB0aGUgZXRoZXJuZXQgUEhZIGlzIGluIHdoZW4gc3RhcnRpbmcgdXAsIHNvIG1ha2UKICAgIHN1cmUgd2Ugc2V0IGl0IHRvIGEgc2FuZSBzdGF0ZS4gIFRoaXMgZml4ZXMgdHJvdWJsZXMgc2VlbiB3aGVuIExpbnV4IGJvb3RzCiAgICB1cCwgY29uZmlndXJlcyB0aGUgUEhZIGlzIGEgbm9uLWRlZmF1bHQgc3RhdGUsIGFuZCB0aGVuIHRoZSBzeXN0ZW0gcmVib290cwogICAgaW50byBVLUJvb3Qgd2hpY2ggcHJldmlvdXNseSBleHBlY3RlZCBhIHJlc2V0IHN0YXRlIG9ubHkuCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZiBZYW5nIDxncmFmLnlhbmdAYW5hbG9nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA1MzMxMGI4OGVhYTI3ZmI1Y2I4MzE0NGQwYjIyMzg5MTkwYWQ4N2ExCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgTWF5IDUgMDE6MzU6NDEgMjAwOSAtMDQwMAoKICAgIEJsYWNrZmluOiBiZjUyNy1lemtpdDogZml4IFNQSSBmbGFzaCBlbnYgcGFyYW1zCgogICAgVGhlIEJGNTI3LUVaS0lUIHNldHRpbmdzIGZvciBzdG9yaW5nIHRoZSBlbnZpcm9ubWVudCBpbiBTUEkgZmxhc2ggd2Fzbid0CiAgICB1c2luZyB0aGUgY29ycmVjdCBzZWN0b3Igc2V0dGluZ3MgZm9yIHRoZSBTUEkgZmxhc2ggcGFydCB0aGF0IGlzIGFjdHVhbGx5CiAgICBvbiB0aGUgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGY1OGJmODA0YTE0MzI0YzZjOTE4NmE3YTY2NGZhMjMyODE3ODBlOGIKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CUZyaSBBcHIgMjQgMjM6NTQ6MTkgMjAwOSAtMDQwMAoKICAgIEJsYWNrZmluOiBhdm9pZCBnZXRfc2NsaygpIHdpdGggZWFybHkgc2VyaWFsIGRlYnVnCgogICAgV2hlbiB0aGUgY2xvY2sgZnVuY3Rpb25zIHdlcmUgY2hhbmdlZCB0byB1c2UgY2FjaGVkIHZhbHVlcyAoYW5kIHRoZXJlYnkKICAgIGF2b2lkaW5nIGV4cGVuc2l2ZSBtYXRoIGZ1bmN0aW9ucyksIGVhcmx5IHNlcmlhbCBkZWJ1ZyBicm9rZSBiZWNhdXNlIHRoZQogICAgYmF1ZCBwcm9ncmFtbWluZyBpcyBjYWxsZWQgYmVmb3JlIGV4dGVybmFsIG1lbW9yeSBpcyBhdmFpbGFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDAyNzc4ZjJmMWI0YjFhMjhiNDkyMzY3NDc3ZGIyN2M1OGQ0NWFlMzUKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CUZyaSBBcHIgMjQgMjM6Mzk6NDEgMjAwOSAtMDQwMAoKICAgIEJsYWNrZmluOiBmaXggYm9vdGluZyB3aXRoIG9sZGVyIGJvb3Ryb21zIChubyBFVlQxKQoKICAgIFdoZW4gZHJvcHBpbmcganVtcCBibG9jayBzdXBwb3J0LCB0aGUgYXNzdW1wdGlvbiB3YXMgdGhhdCBhbGwgYm9vdHJvbXMKICAgIHN1cHBvcnRlZCBlbnRyeSBwb2ludCByZWRpcmVjdGlvbiB2aWEgdGhlIEVWVDEgcmVnaXN0ZXIuICBVbmZvcnR1bmF0ZWx5LAogICAgdGhpcyB0dXJuZWQgb3V0IHRvIGJlIGluY29ycmVjdCBmb3IgdGhlIG9sZGVzdCBCbGFja2ZpbiBwYXJ0cyAoQkY1MzMtMC4yCiAgICBhbmQgb2xkZXIgYW5kIEJGNTYxKS4gIE5vIG9uZSByZWFsbHkgbm90aWNlZCBlYXJsaWVyIGJlY2F1c2UgdGhlc2UgcGFydHMKICAgIHVzdWFsbHkgYXJlIGJvb3RlZCBieSBieXBhc3NpbmcgdGhlIGJvb3Ryb20gZW50aXJlbHksIGFuZCBvbGRlciBCRjUzMwogICAgcGFydHMgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgYWxsICh0b28gbWFueSBhbm9tYWxpZXMpLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBhZjJjMzczNzhmMjAzODU3ZDVlNmM5NTdlNzdhMTRjMmRhNWI1OWQyCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglGcmkgQXByIDI0IDIzOjIyOjQ4IDIwMDkgLTA0MDAKCiAgICBCbGFja2ZpbjogcmVjdXJzZSB3aXRoIGVhcmx5IHNlcmlhbCBpbml0Y29kZQoKICAgIE1ha2Ugc3VyZSB3ZSByZWN1cnNlIHRocm91Z2ggc2VyaWFsX3B1dGMoKSByYXRoZXIgdGhhbiBiYW5nIG9uIHRoZSBVQVJUCiAgICB0cmFuc21pdCByZWdpc3RlciBkaXJlY3RseSB0byBhdm9pZCBoYXJkd2FyZSBvdmVyZmxvd3Mgd2hlbiB1c2luZyBcbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNmI4ZWRmZGUyMmFjYzU3NGI1NTMyZTlmMDg2ZTZhNzI4N2E5YmM3OApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBNYXkgMSAyMTo1OToxMiAyMDA5ICswMjAwCgogICAgUHJlcGFyZSB2MjAwOS4wNi1yYzEKCiAgICBVcGRhdGUgQ0hBTkdFTE9HLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNmIyYmViNTYyNmExNDNjYTUzNDdlN2QyYzYwMDViZTk5MzZjMWZiYgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBNYXkgMSAxNTozODowNiAyMDA5ICswMjAwCgogICAgYXQ5MTogcmVtb3ZlIGxvd2xldmVsX2luaXQuUwoKICAgIGxvd2xldmVsX2luaXQuUyBpcyBub3QgdXNlZCBhbnkgbW9yZSBzbyByZW1vdmUgaXQuCiAgICBBcyBjb25zZXF1ZW5jZSwgd2UgYWxzbyBkb24ndCBoYXZlIHRvIGdlbmVyYXRlIHUtYm9vdC5sZHMKICAgIGJ1dCBjYW4gdXNlIGEgc3RhdGljIHZlcnNpb24gYXMgYmVmb3JlLgoKICAgIFRoaXMgYWxzbyBmaXhlcyB0aGUgb3V0LW9mLXRyZWUgYnVpbGQgcHJvYmxlbSBpbnRyb2R1Y2VkCiAgICB3aXRoIGNvbW1pdCBmMGEyYzdiNCAiYXQ5MTogYWRkIHN1cHBvcnQgZm9yIHRoZSBQTTkyNjMgYm9hcmQiCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMGVlN2EzMTA0Nzk2NDBlZjE3Y2UyZmMwZjZjMTNjZjc5NjFkMjMzMApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBNYXkgMSAwMDoxNjoxMSAyMDA5ICswMjAwCgogICAgVXBkYXRlIENIQU5HRUxPRzsgbWlub3IgY29kaW5nIHN0eWxlIGNsZWFudXAuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBkM2E1MTNjMjNiYTQxMDBkNjk4MzE2MWNkYzFmNzQ3ZGZkMDg3YmJkCkF1dGhvcjogTWFuaWthbmRhbiBQaWxsYWkgPG1hbmkucGlsbGFpQHRpLmNvbT4KRGF0ZToJVHVlIEFwciAyMSAxNzoyOTowNSAyMDA5ICswMjAwCgogICAgT01BUDM6IEZpeCB0aW1lciBoYW5kbGluZyB0byAxbXMgYW5kIENPTkZJR19TWVNfSFogdG8gMTAwMAoKICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNYW5pa2FuZGFuIFBpbGxhaSA8bWFuaS5waWxsYWlAdGkuY29tPgoKY29tbWl0IGFjOTE0MDAzN2E4NDYyOWM1NTgzMDY2ZmYxYTE3NzM5NmM0N2Q4OWQKQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgpEYXRlOglGcmkgQXByIDE3IDE0OjI3OjU2IDIwMDkgKzAyMDAKCiAgICBPTUFQMzogQmVhZ2xlOiBTZXQgcGlubXV4IGNvbmRpdGlvbmFsbHkgZm9yIFJldiBDIGJvYXJkcwoKICAgIFRoZSBCZWFnbGUgUmV2IEMgYm9hcmRzIHB1bGwgVUFSVDIgZnJvbSBhbiBhbHRlcm5hdGUgc2V0IG9mIGJhbGxzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZXZlIFNha29tYW4gPHN0ZXZlQHNha29tYW4uY29tPgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KCmNvbW1pdCBjMWEwZmQ1ZjI4NjRlOWQzODFmNGEzZGM5NDg5NDJjYWM5NzRlODlhCkF1dGhvcjogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+CkRhdGU6CU1vbiBBcHIgMjcgMTg6MzM6MzMgMjAwOSArMDIwMAoKICAgIHViaWZzOiBCVUc6IEJsb2NrcyBjb21tcHJlc3NlZCB3aXRoIHpsaWIKCiAgICBCbG9ja3MgY29tcHJlc3NlZCB3aXRoIHpsaWIgZG9udCBoYXZlIHRoZSBmdWxsIGd6aXAgaGVhZGVyLgoKICAgIFdpdGhvdXQgdGhpcyBwYXRjaCwgYmxvY2sgY29tcHJlc3NlZCB3aXRoIHpsaWIgY2Fubm90IGJlIHJlYWRlZCEKCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KCmNvbW1pdCAzNWY2YTk0M2Y3ZDkyMTQ1ZDYwN2MxZDU1ZjVjMmUyZWFlNWJlNjMwCkF1dGhvcjogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+CkRhdGU6CU1vbiBBcHIgMjcgMTg6MzM6MzIgMjAwOSArMDIwMAoKICAgIGxpYl9nZW5lcmljOiBndW56aXA6IE5ldyBmdW5jdGlvbiB6dW56aXAKCiAgICBTZXBhcmF0ZSBndW56aXAgaW4KCiAgICBndW56aXA6IEZpbmQgdGhlIGVuZCBvZiB0aGUgaGVhZGVyIGFuZCBjYWxsIHp1bnppcC4KICAgIHp1bnppcDogSW5mbGF0ZSBndW56aXAgYmxvY2sgd2l0aG91dCBoZWFkZXIuCgogICAgVUJJIGZzIGJsb2NrcyBjYW4gYmUgY29tcHJlc2VkIGluIGx6bywgemxpYiBvciBuby1jb21wcmVzc2lvbi4gVGhlCiAgICBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIHUtYm9vdCBzdXBwb3J0ZWQgYWxsIHRoZSBjb21wcmVzc2lvbnMgYnV0CiAgICB0aGVyZSB3YXMgYSBidWcgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSB6bGliIGJsb2Nrcy4KCiAgICBVQklGUydzIFpsaWIgYmxvY2tzIGRvIG5vdCBoYXZlIGhlYWRlciBidXQgdGhleSB3ZXJlIGNvbXByZXNzZWQgdXNpbmcKICAgIGd1bnppcCwgYSBmdW5jdGlvbiB1c2VkIHRvIGRlY29tcHJlc3MgZ3VuemlwIGZpbGVzL3NlY3RvcnMgd2l0aCBhCiAgICBoZWFkZXIuCgogICAgVGhpcyBwYXRjaCBhZGRzIGEgbmV3IGZ1bmN0aW9uIHp1bnppcCB0aGF0IHVuY29tcHJlc3MgYSB6bGliIGJsb2NrIHdpdGgKICAgIG5vIGhlYWRlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KCmNvbW1pdCBhMWU1ZjkzMTg1ZDBkODVhNGIzZmFkM2I2Yzc0M2NkZGNkMzczYjBjCkF1dGhvcjogRGFuaWVsIEdvcnN1bG93c2tpIDxEYW5pZWwuR29yc3Vsb3dza2lAZXNkLmV1PgpEYXRlOglUaHUgQXByIDIzIDE1OjM3OjE2IDIwMDkgKzAyMDAKCiAgICBhdDkxOiBmaXhlZCBwbGxhIGNhbGMgd2hlbiBubyBVU0Igc3VwcG9ydCBpcyBhY3RpdmUKCiAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgR29yc3Vsb3dza2kgPERhbmllbC5Hb3JzdWxvd3NraUBlc2QuZXU+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDM3OTFhMTE4N2MxNDAxYzMzYzk1MTI1OTVlNmU4OWRiYjQ2MjMwYzUKQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+CkRhdGU6CVdlZCBBcHIgMjIgMDE6MTI6MDQgMjAwOSArMDIwMAoKICAgIGFybTkyNXQ6IEZpeCBDT05GSUdfU1lTX0haIHRvIDEwMDAKCiAgICBMZXQgQ09ORklHX1NZU19IWiB0byBoYXZlIHZhbHVlIG9mIDEwMDAgZWZmZWN0aXZlbHkgZml4aW5nIGFsbCB1c2VycyBvZgogICAgZ2V0X3RpbWVyLgoKICAgIENoYW5nZXMgc2luY2Ugb3JpZ2luYWwgdmVyc2lvbjoKICAgICogU2V0IFBUVj0yIChkaXZpc29yIDgpIGZvciBib2FyZHMgdXNpbmcgMTJNSHogdGltZXIgY2xvY2sgc291cmNlIHRvCiAgICAgIGltcHJvdmUgdGltZXIgcmVzb2x1dGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+Cgpjb21taXQgNDJiZjRiMjI0ODE0NmFiZGM1OTJiZGUwMDA5YzZlYTQyMDY3ZjQzNwpBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVR1ZSBBcHIgMTQgMjA6MTU6MTcgMjAwOSArMDIwMAoKICAgIE9NQVAzOiBSZW1vdmUgbGVnYWN5IE5BTkQgZGVmaW5lcwoKICAgIFJlbW92ZSByZW1haW5pbmcgbGVnYWN5IE5BTkQgZGVmaW5lcyBmb3IgQmVhZ2xlLCBFVk0sIE92ZXJvIGFuZCBQYW5kb3JhLgoKICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Cgpjb21taXQgY2JhMGI3NzhkZDVmMWVhMzI5NTliNjgyNWM3ZjBhMzE1MDFhOTlkNQpBdXRob3I6IFNhbmplZXYgUHJlbWkgPHByZW1pQHRpLmNvbT4KRGF0ZToJTW9uIEFwciAyNyAyMToyNzo1NCAyMDA5ICswNTMwCgogICAgT01BUDM6IFByaW50IGNvcnJlY3Qgc2lsaWNvbiByZXZpc2lvbgoKICAgIFRoZSBmdW5jdGlvbiBkaXNwbGF5X2JvYXJkX2luZm8oKSBkaXNwbGF5cyBpbmNvcnJlY3QKICAgIHNpbGljb24gcmV2aXNpb24gLSBiYXNlZCBvbiB0aGUgcmV0dXJuIHZhbHVlIGZyb20KICAgIGZ1bmN0aW9uIGdldF9jcHVfcmV2KCkuCgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgcHJvYmxlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5qZWV2IFByZW1pIDxwcmVtaUB0aS5jb20+Cgpjb21taXQgOTAwMDZlOWIzM2JjZGJmMjQxYjAyOTVkMTg2ZTM2MzQxMzc5MDdhOQpBdXRob3I6IFNhbmplZXYgUHJlbWkgPHByZW1pQHRpLmNvbT4KRGF0ZToJTW9uIEFwciAyNyAyMToyNzo0NCAyMDA5ICswNTMwCgogICAgT01BUDM6IFJlbW92ZSB1bnVzZWQgYm9hcmQtdHlwZXMKCiAgICBUaGUgYm9hcmQtdHlwZXMgZGVmaW5lZCBpbiBzdHJ1Y3Qgb21hcDNfc3lzaW5mbyBzZWVtIHRvIGJlCiAgICB1bnVzZWQuIFRoZSBmdW5jdGlvbiBkaXNwbGF5X2JvYXJkX2luZm8oKSBpcyBwYXNzZWQKICAgIGJvYXJkIHR5cGUgYXMgYW4gYXJndW1lbnQ7IHdoaWNoIGlzIGlnbm9yZWQuCgogICAgVGhpcyBwYXRjaCByZW1vdmVzIGFsbCB1c2VzIG9mIGJvYXJkLXR5cGUsIHJlbGF0ZWQgZGVmaW5pdGlvbnMKICAgIGFuZCBmdW5jdGlvbnMuCgogICAgU2lnbmVkLW9mZi1ieTogU2FuamVldiBQcmVtaSA8cHJlbWlAdGkuY29tPgoKY29tbWl0IDZhNmI2MmUzYWE0YjM0MGM0ZjhmYzY3YjE0ODdkZGI1NDM2YzY4NGQKQXV0aG9yOiBTYW5qZWV2IFByZW1pIDxwcmVtaUB0aS5jb20+CkRhdGU6CU1vbiBBcHIgMjcgMjE6Mjc6MjcgMjAwOSArMDUzMAoKICAgIE9NQVAzOiBVc2UgZnVuY3Rpb25zIHByaW50X2NwdWluZm8oKSBhbmQgY2hlY2tib2FyZCgpCgogICAgVXNlIHRoZSBmdW5jdGlvbnMgcHJpbnRfY3B1aW5mbygpIGFuZCBjaGVja2JvYXJkKCkgdG8KICAgIGRpc3BsYXkgdGhlIGNwdSBhbmQgYm9hcmQgc3BlY2lmaWMgaW5mb3JtYXRpb24uCgogICAgVGhlc2UgZnVuY3Rpb25zIHJldXNlIGNvbnRlbnQgZnJvbSB0aGUgZXhpc3RpbmcgZnVuY3Rpb24KICAgIGRpc3BsYXlfYm9hcmRfaW5mbygpIC0gd2hpY2ggaGFzIGJlZW4gcmVtb3ZlZC4KCiAgICBBbHNvLCB1cGRhdGVkIHRoZSBleGlzdGlnIE9NQVAzIGNvbmZpZ3VyYXRpb25zIHRvCiAgICBkZWZpbmU6CiAgICAgLSBDT05GSUdfRElTUExBWV9DUFVJTkZPCiAgICAgLSBDT05GSUdfRElTUExBWV9CT0FSRElORk8KCiAgICBTaWduZWQtb2ZmLWJ5OiBTYW5qZWV2IFByZW1pIDxwcmVtaUB0aS5jb20+Cgpjb21taXQgZjhlMmIzMTA3ZWUwMGYyNzgyZjhlYmY0N2UzZjA5Y2RhNGUyMzUzYQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE1hciAxOCAxMToxNzozNyAyMDA5ICswMTAwCgogICAgTVREOiBDaGFuZ2UgY2ZpLW10ZCB0byBhY2NlcHQgbm9uLXVuaWZvcm0gc2VjdG9yIHNpemVzCgogICAgV2l0aCB0aGlzIHBhdGNoIG5vbi11bmlmb3JtIE5PUiBGTEFTSCBjaGlwcyAoY2hpcHMgd2l0aCBtdWx0aXBsZSBlcmFzZQogICAgcmVnaW9ucykgY2FuIGJlIGV4cG9ydGVkIHZpYSB0aGUgY2ZpLW10ZCBsYXllciBhbmQgdGhlcmVmb3IgdXNlZCBieSBVQkkuCiAgICBXZSBzZWxlY3QgdGhlIGxhcmdlc3Qgc2VjdG9yIHNpemUgYXMgZXJhc2VzaXplLiBUaGUgY2ZpIGRyaXZlciB3aWxsIG1ha2UKICAgIHN1cmUgdGhhdCB0aGUgc21hbGxlciBzZWN0b3JzIGFyZSBoYW5kbGVkIGNvcnJlY3RseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgM2RjYmU2MjhkNjZiNjQ4ZTk1NGJjODE0N2Q0ZmFmZjI5ODMyMDZkOQpBdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KRGF0ZToJVGh1IEFwciAyMyAxMjozNToyMiAyMDA5ICswMjAwCgogICAgdmlkZW86IGZpeCBidWcgaW4gY2ZiX2NvbnNvbGUuYyBjb2RlCgogICAgRml4IGJ1ZyBpbiBkcmF3aW5nIGxvbmcgdmVyc2lvbi9pbmZvIHN0cmluZ3M6CiAgICBVLUJvb3QgdmVyc2lvbiBzdHJpbmcgbGlrZQogICAgIlUtQm9vdCAyMDA5LjAzLTA1NjQ3LWc3YzUxZTA2IChBcHIgMjMgMjAwOSAtIDEyOjQwOjAwKSBNUEM4M1hYIgogICAgaXMgbG9uZyBhbmQgZG9lc24ndCB3cmFwIGFyb3VuZCBjb3JyZWN0bHkgd2hpbGUgZHJhd2luZwogICAgYmVzaWRlIHRoZSBsb2dvLiBTdWNoIGxvbmcgc3RyaW5ncyBwYXJ0aWFsbHkgb3ZlcndyaXRlCiAgICB0aGUgbG9nby4gVGhpcyBwYXRjaCBpcyBhbiBhdHRlbXB0IHRvIGZpeCBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgNGQ5ZWFiODliM2IyYzJlZDQzMmIxNGQzNTVhNTZmMjc0ZDhhYWM3NQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBBcHIgMjggMDg6NTA6MzEgMjAwOSArMDIwMAoKICAgIGNtZF9leHQyLmM6IGZpeCBjb21waWxlIHdhcm5pbmdzCgogICAgR2V0IHJpZCBvZiB0aGVzZSB3YXJuaW5nczoKCiAgICBjbWRfZXh0Mi5jOjI0Nzogd2FybmluZzogZm9ybWF0ICclbGQnIGV4cGVjdHMgdHlwZSAnbG9uZyBpbnQnLCBidXQgYXJndW1lbnQgMiBoYXMgdHlwZSAnaW50JwogICAgY21kX2V4dDIuYzoyNDg6IHdhcm5pbmc6IGZvcm1hdCAnJWxYJyBleHBlY3RzIHR5cGUgJ2xvbmcgdW5zaWduZWQgaW50JywgYnV0IGFyZ3VtZW50IDMgaGFzIHR5cGUgJ2ludCcKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDI4YWZlMDE2MGY4N2ZmNzQ1NzQxNTBkNzAzMDU1YTk2NWY5MTQyMmEKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJTW9uIEFwciAyNyAxMDo0ODoyMCAyMDA5ICswMjAwCgogICAgaWRzODI0NzogUmVtb3ZlIGxlZ2FjeSBOQU5EIGRlZmluZXMKCiAgICBiZWNhdXNlIGxlZ2FjeSBOQU5EIHN1cHBvcnQgaXMgZGVwcmVjYXRlZCBjb252ZXJ0aW5nIHRvIGN1cnJlbnQKICAgIE5BTkQgaW50ZXJmYWNlLiAhVGhpcyBqdXN0IGNvbXBpbGUsIGJlY2F1c2UgSSBoYXZlIG5vIG1vcmUgdGhlCiAgICBoYXJkd2FyZSB0byB0ZXN0IGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IGRiZDMzNjE0NDA0YjY1YWE0NDFjNTYyMGMzZGJkNTYwYzQ0NjBjMDkKQXV0aG9yOiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KRGF0ZToJTW9uIEFwciAyNyAwOToxMzozMSAyMDA5ICswMjAwCgogICAgdWJpZnM6IEJVRyByZWFscGF0aCBzdHJpbmcgbXVzdCBiZSBlbmRlZCB3aXRoIE5VTEwKCiAgICBJZiB0aGUgbWVtb3J5IHVzZWQgdG8gY29weSB0aGUgbGlua19tYWtlIGlzICJkaXJ0eSIgdGhlIHN0cmluZyB3b250CiAgICBiZSBlbmRlZCB3aXRoIE5VTEwsIHRocm93aW5nIG91dCBtdWx0aXBsZSBtZW1vcnkgYnVncy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNjUzNTFhODc5M2M1MWYzNzg3ZWZiYmNmM2FhMWRmMGFkNTQzYzEyNwpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBBcHIgMjQgMTU6NTk6NTYgMjAwOSAtMDUwMAoKICAgIGJtcF9sb2dvOiBDaGVjayByZXR1cm4gdmFsdWUgb2YgZnJlYWQoKQoKICAgIEFkZCBiYXNpYyBlcnJvciBoYW5kbGluZyB0byBmcmVhZCgpIGZ1bmN0aW9uIGNhbGxzLiAgVGhpcyBwcmV2ZW50cwogICAgY29tcGlsaWxhdGlvbiB3YXJuaW5ncyBzdWNoIGFzOgoKICAgIGJtcF9sb2dvLmM6IEluIGZ1bmN0aW9uIOKAmG1haW7igJk6CiAgICBibXBfbG9nby5jOjcxOiB3YXJuaW5nOiBpZ25vcmluZyByZXR1cm4gdmFsdWUgb2Yg4oCYZnJlYWTigJksIGRlY2xhcmVkIHdpdGgKICAgIGF0dHJpYnV0ZSB3YXJuX3VudXNlZF9yZXN1bHQKICAgIC4uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgZWVhOGJlODZkMWMyYjU3MDY2MGQxZjZjNTUzODQ1ZTEzMTY0MjMxYQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBBcHIgMjQgMTU6NTk6NDYgMjAwOSAtMDUwMAoKICAgIG5jYjogQ2hlY2sgcmV0dXJuIHZhbHVlIG9mIHdyaXRlKCkKCiAgICBUaGlzIHByZXZlbnRzIHRoZSBjb21waWxhdGlvbiB3YXJuaW5nOgoKICAgIG5jYi5jOiBJbiBmdW5jdGlvbiAnbWFpbic6CiAgICBuY2IuYzozMjogd2FybmluZzogaWdub3JpbmcgcmV0dXJuIHZhbHVlIG9mIOKAmHdyaXRl4oCZLCBkZWNsYXJlZCB3aXRoCiAgICBhdHRyaWJ1dGUgd2Fybl91bnVzZWRfcmVzdWx0CgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCBkYmUyOWUzNmE0YzI3NzViNjliNWE2M2IwY2UyYmFjODljMDhlNjkxCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgQXByIDI0IDE1OjU5OjM1IDIwMDkgKzAyMDAKCiAgICBtdGQ6IG5hbmQvb25lbmFuZDogUmVnaXN0ZXIgbXRkIGRldmljZSB1cG9uIGRldmljZSBzY2FubmluZwoKICAgIFdpdGggdGhpcyBwYXRjaCB0aGUgTkFORCBhbmQgT25lTkFORCBkZXZpY2VzIGFyZSByZWdpc3RlcmVkIGluIHRoZSBNVEQKICAgIHN1YnN5c3RlbSBhbmQgY2FuIHRoZW4gYmUgcmVmZXJlbmNlZCBieSB0aGUgbXRkY29yZSBjb2RlIChlLmcuCiAgICBnZXRfbXRkX2RldmljZV9ubSgpKS4gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBuZXcgInViaSBwYXJ0IiBjb21tYW5kCiAgICBzeW50YXggd2l0aG91dCB0aGUgZmxhc2ggdHlwZSBwYXJhbWV0ZXIgKG5vcnxuYW5kfG9uZW5hbmQpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxMGJiNjJkODVhMDg1MGRiYWQxZmRkMzQxMjMzNzg2ODYzNzNmMTY2CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgQXByIDI0IDE1OjU4OjMzIDIwMDkgKzAyMDAKCiAgICBtdGQ6IG5hbmQ6IEluY2x1ZGUgbGludXgvbXRkL3BhcnRpdGlvbnMuaCBpbiBuYW5kX2Jhc2UuaAoKICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGlzIGNvbXBpbGF0aW9uIHdhcm5pbmcgd2hlbiBDT05GSUdfTVREX1BBUlRJVElPTlMgaXMKICAgIGRlZmluZWQ6CgogICAgbmFuZF9iYXNlLmM6IEluIGZ1bmN0aW9uICduYW5kX3JlbGVhc2UnOgogICAgbmFuZF9iYXNlLmM6MjkyMjogd2FybmluZzogaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ2RlbF9tdGRfcGFydGl0aW9ucycKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMmQ1NzllNTA2MDQxM2FmNWE3NDBjYjM5NmRjODdlMWZmMzFiZjVhOQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEFwciAyNCAyMDoyNDoxOSAyMDA5ICswMjAwCgogICAgdWJpOiBSZW1vdmUgZmxhc2ggc2VsZWN0aW9uIHBhcmFtZXRlciAobm9yfG5hbmR8b25lbmFuZCkgZnJvbSAidWJpIHBhcnQiCgogICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSBub3cgdW5uZWNlc3NhcnkgZmxhc2ggdHlwZSBwYXJhbWV0ZXIgZnJvbSB0aGUKICAgICJ1YmkgcGFydCIgY29tbWFuZC4gQ3VycmVudGx5IHRoZSB1c2VyIGhhcyB0byBkZWZpbmUgdGhlIHR5cGUgb2YgZmxhc2gKICAgIGhlIHdpbGwgYmUgdXNpbmcgVUJJIG9uLiBFeGFtcGxlOgoKICAgID0+IHViaSBwYXJ0IG5vciBwYXJ0aXRpb24xCgogICAgV2l0aCB0aGlzIHBhdGNoIHRoaXMgdHlwZSBwYXJhbWV0ZXIgaXMgbm90IG5lZWRlZCBhbnltb3JlLiBUaGUgdXNlciBjYW4KICAgIG5vdyBzZWxlY3QgdGhlIHBhcnRpdGlvbiBkaXJlY3RseSB3aXRob3V0IHRoZSBmbGFzaCB0eXBlIHBhcmFtdGVyLgogICAgRXhhbXBsZToKCiAgICA9PiB1YmkgcGFydCBwYXJ0aXRpb24xCgogICAgVGhpcyBicmVha3MgYmFja3dhcmQgY29tcGF0aWJpbGl0eSByaWdodCBub3cgYmVjYXVzZSBvZiB0aGUgY2hhbmdlIGluIHRoZQogICAgY29tbWFuZCBzeW50YXguIEJ1dCBVQkkgc3VwcG9ydCBpcyBzdGlsbCBxdWl0ZSBmcmVzaCBhbmQgdGhlIGFkdmFudGFnZSBvZgogICAgdGhpcyBuZXcgY29tbWFuZCBpcyBzeW50YXggYmlnIGVub3VnaCBmb3IgdGhpcyBjaGFuZ2UuIEFkZGl0aW9uYWxseSB0aGUKICAgIGNvZGUgaXMgbXVjaCBjbGVhbmVyIG5vdy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBDQzogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KCmNvbW1pdCAyOTRmMTBjYTllYTgyYTE1ZTEzNWRjYjBmYzY1ODM4MmFiMjA2OTQwCkF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+CkRhdGU6CVRodSBBcHIgMjMgMTM6MTQ6MjAgMjAwOSArMDIwMAoKICAgIG1pcHMvdmN0aDogVXNlIGdlbmVyaWMgMTY1NTAgdWFydCBkcml2ZXIKCiAgICBBcyB0aGUgY29tbW9uIGNvZGUgYWxzbyBoYW5kbGVzIGJhdWRyYXRlIHN3aXRjaGluZywgd2hpY2ggdGhlIGJvYXJkCiAgICBzcGVjaWZpYyB2Y3QuYyBkcml2ZXIgZGlkIG5vdCBzdXBwb3J0LCB0aGlzIGlzIG9uZSBvZiB0aGUgcmFyZQogICAgb2NjYXNzaW9ucyB3aGVyZSBkZWxldGluZyBjb2RlIGFjdHVhbGx5IGFkZHMgYSBmZWF0dXJlIDopCgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQWNrZWQtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KCmNvbW1pdCAwYzhhODQ5MTZjNWRhY2NjZGM1YjI3YjYzZmM0NjNlOWYzYjA0ZjA3CkF1dGhvcjogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgpEYXRlOglUdWUgQXByIDIxIDAyOjI2OjMxIDIwMDkgKzAyMDAKCiAgICBTZXBhcmF0ZSBtdGRwYXJ0cyBjb21tYW5kIGZyb20gamZmczIKCiAgICBPbiBUaHUsIE1hciAxOSwgMjAwOSBhdCAwMTozMDozNlBNICswMTAwLCBTdGVmYW4gUm9lc2Ugd3JvdGU6CiAgICA+IEN1cnJlbnRseSB0aGUgbXRkcGFydHMgY29tbWFuZHMgYXJlIGluY2x1ZGVkIGluIHRoZSBqZmZzMiBjb21tYW5kIHN1cHBvcnQuCiAgICA+IFRoaXMgZG9lc24ndCBtYWtlIHNlbnNlIGFueW1vcmUgc2luY2Ugb3RoZXIgY29tbWFuZHMgKGUuZy4gVUJJKSB1c2UgdGhpcwogICAgPiBpbmZyYXN0cnVjdHVyZSBhcyB3ZWxsIG5vdy4gVGhpcyBwYXRjaCBzZXBhcmF0ZXMgdGhlIG10ZHBhcnRzIGNvbW1hbmRzIGZyb20KICAgID4gdGhlIGpmZnMyIGNvbW1hbmRzIG1ha2luZyBpdCBwb3NzaWJsZSB0byBvbmx5IHNlbGVjdCBtdGRwYXJ0cyB3aGVuIG5vIEpGRlMyCiAgICA+IHN1cHBvcnQgaXMgbmVlZGVkLgoKICAgIE9uZSBtb3JlIGxlZnRvdmVyLi4uIExldCBuYm9vdCBjb21tYW5kIGtub3cgYWJvdXQgcGFydGl0aW9ucyBldmVuIGlmIEpGRlMyCiAgICBzdXBwb3J0IGlzIG5vdCBlbmFibGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNjdjMmU1N2MwODc1MTM5ZGJmY2Q2ZjQxYzQzZTZhZDBjYjJlNDBjOQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBBcHIgMjAgMTE6MjI6MTMgMjAwOSAtMDUwMAoKICAgIGNtZF9pZGU6IFJlbW92ZSB1bnVzZWQgQW1pZ2FPbmVHM1NFIGNvZGUKCiAgICBUaGUgb3V0cHV0X2RhdGFfc2hvcnQoKSBhbmQgaW5wdXRfZGF0YV9zaG9ydCgpIGZ1bmN0aW9ucyBmb3IgdGhlCiAgICBBbWlnYU9uZUczU0UgYXJlIHVudXNlZCBhbmQgcmVzdWx0IGluIGNvbXBpbGVyIHdhcm5pbmdzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgYzkzYzEwMmFjZTAwNzY0YTU2ZGJkZjc4YmFjMTM0YTIzOTA2NzIxZQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBBcHIgMjAgMTE6MjE6NDAgMjAwOSAtMDUwMAoKICAgIEFtaWdhT25lRzNTRTogRml4IENPTkZJR19DTURfQ09OU09MRSBkZWZpbml0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCA1NGU4MjJmOTU5MGNjNmM3MDQxMWJkOGNhYmQ0MjIzNmUwN2EyYWE3CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJTW9uIEFwciAyMCAxMTowOTowNSAyMDA5IC0wNTAwCgogICAgUmVwbGFjZSBfX2FzbSByZWZlcmVuY2VzIHdpdGggX19hc21fXwoKICAgIF9fYXNtX18gZm9sbG93cyBnY2MncyBkb2N1bWVudGVkIHN5bnRheCBhbmQgaXMgZ2VuZXJhbGx5IG1vcmUgY29tbW9uCiAgICB0aGFuIF9fYXNtLiAgVGhpcyBjaGFuZ2UgaXMgb25seSBhc3RoZXRpYyBhbmQgc2hvdWxkIG5vdCBhZmZlY3QKICAgIGZ1bmN0aW9uYWxpdHkuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCBmOWExMDliM2FkYzVlODY0NzUzNTM1NzUwMGUyYTM4ZjA1NThiNWMyCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJTW9uIEFwciAyMCAxMTowODo0NiAyMDA5IC0wNTAwCgogICAgUmVwbGFjZSBfX2F0dHJpYnV0ZSByZWZlcmVuY2VzIHdpdGggX19hdHRyaWJ1dGVfXwoKICAgIF9fYXR0cmlidXRlX18gZm9sbG93cyBnY2MncyBkb2N1bWVudGVkIHN5bnRheCBhbmQgaXMgZ2VuZXJhbGx5IG1vcmUKICAgIGNvbW1vbiB0aGFuIF9fYXR0cmlidXRlLiAgVGhpcyBjaGFuZ2UgaXMgb25seSBhc3RoZXRpYyBhbmQgc2hvdWxkIG5vdAogICAgYWZmZWN0IGZ1bmN0aW9uYWxpdHkuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCAwOGYwNzdkYTkyOThmZjY1Y2M2Zjg1ZjkwZDI3NzAwMDBhMWJlZWU5CkF1dGhvcjogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CkRhdGU6CVRodSBBcHIgMTYgMTk6NTU6NDggMjAwOSAtMDcwMAoKICAgIG10ZHBhcnQgY29tbWFuZDogYWxpZ24gb3V0cHV0IGNvbHVtbnMKCiAgICBNYWtlIHRoZSBoZWFkZXJzIGluIHRoZSAibXRkcGFydHMiIGNvbW1hbmQgb3V0cHV0IGxpbmUgdXAKICAgIHdpdGggdGhlaXIgY29sdW1ucyAuLi4gc3RyaWtlIHRoZSBleHRyYSBUQUIgY2hhcmFjdGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKY29tbWl0IDA2ZjQxZjgyNWMyMzM0NGQ4ODlkNTQxOWJiNWVhZWNlYjNlZDJhMDIKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+CkRhdGU6CVRodSBBcHIgMTYgMTA6NTE6MDMgMjAwOSArMDkwMAoKICAgIFJlbW92ZSBzYTExMDAuaAoKICAgIHNhMTEwMC5oIGlzIG5vdCB1c2VkIGFueXdoZXJlLCB0aGVuIHJlbW92ZSBpdC4KCiAgICAkIGZpbmQgLiAtbmFtZSAnKi5oJyAtZW1wdHkgLXByaW50CiAgICAuL2luY2x1ZGUvc2ExMTAwLmgKICAgICQgZ2l0IGdyZXAgJ3NhMTEwMC5oJyAuCiAgICAkCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgogICAgQWNrZWQtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgN2QzZDMwYjFiM2ZiZDBhMDdkYjI1NGVhZDk5ZmE2ZmZmNGY0ZDk5MgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEFwciAxNCAxNzo1MToyMSAyMDA5ICswMjAwCgogICAgVUJJRlM6IFJlbW92ZSB0bmNfY29tbWl0LmMgd2hpY2ggaXMgbm90IHVzZWQgaW4gdGhlIHJlYWQtb25seSB2ZXJzaW9uCgogICAgSSBtaXNzZWQgcmVtb3ZpbmcgdGhpcyBmaWxlIHdoaWxlIGltcGxlbWVudGluZyB0aGUgVUJJRlMgc3VwcG9ydC4gSXQncwogICAgbm90IHJlZmVyZW5jZWQgYXQgYWxsLCBzbyBsZXQncyByZW1vdmUgaXQuIFRoYW5rcyB0byBBcnRlbSBCaXR5dXRza2l5CiAgICBmb3Igc3BvdHRpbmcuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDYzNTZkYWZmNzA4Njc4MjJiZGIyM2NlYTQ5Zjk4ZTY1NDIxYTI1YjgKQXV0aG9yOiBBZHJpYW4gSHVudGVyIDxhZHJpYW4uaHVudGVyQG5va2lhLmNvbT4KRGF0ZToJVHVlIEFwciAxNCAxNzo1MDozOCAyMDA5ICswMjAwCgogICAgVUJJRlM6IGZpeCByZWNvdmVyeSBidWcKCiAgICBVQklGUyBkaWQgbm90IHJlY292ZXJ5IGluIGEgc2l0dWF0aW9uIGluIHdoaWNoIGl0IGNvdWxkCiAgICBoYXZlLiBUaGUgcmVsZXZhbnQgZnVuY3Rpb24gYXNzdW1lZCB0aGVyZSBjb3VsZCBub3QgYmUKICAgIG1vcmUgbm9kZXMgaW4gYW4gZXJhc2VibG9jayBhZnRlciBhIGNvcnJ1cHRlZCBub2RlLCBidXQKICAgIGluIGZhY3QgdGhlIGxhc3QgKE5BTkQpIHBhZ2Ugd3JpdHRlbiBtaWdodCBjb250YWluIGFueXRoaW5nLgogICAgVGhlIGNvcnJlY3QgYXBwcm9hY2ggaXMgdG8gY2hlY2sgZm9yIGVtcHR5IHNwYWNlICgweEZGIGJ5dGVzKQogICAgZnJvbSB0aGVuIG9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFkcmlhbiBIdW50ZXIgPGFkcmlhbi5odW50ZXJAbm9raWEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDM1MWY0MGNhZjJmNzgwNmIyY2VmYjkzZTA3N2VhNjE5YjlmNjg0ZTgKQXV0aG9yOiBHYW8gR3Vhbmh1YSA8QjIyODI2QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBBcHIgMTQgMTQ6Mzc6MzUgMjAwOSArMDgwMAoKICAgIGZzOiBGaXggdGhlIHdyb25nIHR5cGUgb2YgdmFyCgogICAgVGhlIGZpbGVsZW4gc2hvdWxkIGJlIHNpZ25lZCB0eXBlLCBub3QgdW5zaWduZWQgdHlwZS4KICAgIG90aGVyd2lzZSwgVGhlIGNvbmRpdGlvbiBhcyBiZWxvdyBuZXZlciB0YWtlLgoJaWYgKGZpbGVsZW4gPCAwKQoKICAgIFNpZ25lZC1vZmYtYnk6IEdhbyBHdWFuaHVhIDxCMjI4MjZAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMDVmNDc0YzRkMDQ2OWJlYmMwYmIwNWRmNjBhMzlkYzdmZGYyOGU2MgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBBcHIgMjggMDA6Mjk6MzQgMjAwOSArMDIwMAoKICAgIFVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGFkNzRjYWU5ZmY4NzkwNzI3YmM4MWVlOTFjNmJjYTdkNTBkY2E0NDYKQXV0aG9yOiBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KRGF0ZToJVGh1IEFwciAxNiAyMzoxNToxNSAyMDA5IC0wNzAwCgogICAgZG05MDAwIEVFUFJPTSByZWFkaW5nIGJ1Z2ZpeAoKICAgIE1ha2UgdGhlIFUtQm9vdCBkbTkwMDAgZHJpdmVyIHJlYWQgYWRkcmVzc2VzIGZyb20gRUVQUk9NIGp1c3QKICAgIGxpa2UgTGludXggZG9lcyAuLi4gcmVhZCBzaXggYnl0ZXMsIGluc3RlYWQgb2YgcmVhZGluZyB0d2VsdmUKICAgIGJ5dGVzIGFuZCB0aGVuIGRpc2NhcmRpbmcgZXZlcnkgb3RoZXIgb25lLgoKICAgIFVzaW5nIHRoZSByaWdodCBFdGhlcm5ldCBhZGRyZXNzIGlzIGEgYmlnIHdpbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KICAgIEFja2VkLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgQWNrZWQtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZDRjMDJlNmY1ZDQ5ODgwMTIzZTdmNTg0Yjg4Zjg1N2ZmZDg3NDM4MQpBdXRob3I6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJV2VkIEZlYiAyNSAxNDoyNzoyNCAyMDA5ICswOTAwCgogICAgcnRsODE2OTogZml4IGNhY2hlIGNvaGVyZW5jeSBwcm9ibGVtCgogICAgRml4IHRoZSBwcm9ibGVtIHRoYXQgY2Fubm90IGFjY2VzcyBhY3R1YWwgZGF0YSB3aGVuIENQVSBkYXRhIGNhY2hlIGVuYWJsZWQuCgogICAgU2lnbmVkLW9mZi1ieTogWW9zaGloaXJvIFNoaW1vZGEgPHNoaW1vZGEueW9zaGloaXJvQHJlbmVzYXMuY29tPgogICAgVGVzdGVkLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CiAgICBBY2tlZC1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBhODU2OTNiM2JkNDQzMWIwNWI3ZGY2MDhiNmY3NzMzYzBmODBjNTNlCkF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KRGF0ZToJVHVlIEFwciAyMSAxNzozMDo1MSAyMDA5ICswMjAwCgogICAgT01BUDM6IEZpeCBjaGFuZ2VkIG1tYyBpbml0IGNvbW1hbmQKCiAgICBJbiByZWNlbnQgVS1Cb290IG1tY2luaXQgY2hhbmdlZCB0byBtbWMgaW5pdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGV2ZSBTYWtvbWFuIDxzdGV2ZUBzYWtvbWFuLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Cgpjb21taXQgMzRiNzZhMTRmNjc2YmM2NTAxYzI3YTk2NTY0ZTRkZmI0NzkzZjAzMwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBBcHIgMjYgMjA6Mzk6MjYgMjAwOSArMDIwMAoKICAgIGxpYl9hcm0vYm9hcmQuYzogcmVtb3ZlIG1pc2xlYWRpbmcgInRlc3Qtb25seSIgY29tbWVudC4KCiAgICBGb3IgYSBsb25nIHRpbWUsIHRoZSBwcmludF9jcHVpbmZvKCkgZGVjbGFyYXRpb24gaW4gbGliX2FybS9ib2FyZC5jCiAgICBoYWQgYmVlbiBtYXJrZWQgYXMgInRlc3Qtb25seSIsIHdoaWNoIGlzIHBsYWluIHdyb25nIGNvbnNpZGVyaW5nCiAgICBjdXJyZW50IHVzYWdlLiAgRGVsZXRlIHRoaXMgbWlzbGVhZGluZyBjb21tZW50LgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNzIzOWM1ZGE1ZTkxOTdhY2NiM2RmZTM5NWJlNDUwMmMzYjliY2E4ZQpBdXRob3I6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgpEYXRlOglTdW4gQXByIDEyIDE1OjQwOjE2IDIwMDkgLTA3MDAKCiAgICBtaW5vciBEYVZpbmNpIGNsb2NrIGNsZWFudXAKCiAgICBNaW5vciBjbGVhbnVwIHRvIGNsb2NrLXJlbGF0ZWQgZGVmaW5lcyBmb3IgRGFWaW5jaSBETTY0NDYgYm9hcmRzOgoKICAgICAtIENPTkZJR19TWVNfQ0xLX0ZSRVEgaXMgdW51c2VkOyByZW1vdmUgaXQuCgogICAgIC0gQ09ORklHX1NZU19OUzE2NTUwX0NMSyBtdXN0IGJlIHRoZSBzYW1lIGFzIENPTkZJR19TWVNfSFpfQ0xPQ0sKCiAgICBPbiBETTY0NDYgYm90aCBvZiB0aG9zZSBwZXJpcGhlcmFsIGNsb2NrcyBhY3R1YWxseSBjb21lIGZyb20gdGhlCiAgICBzYW1lIHNvdXJjZSwgdGhlIHByaW1hcnkgb3NjaWxsYXRvci4gIEhhdmluZyB0aGVtIHVzZSB0aGUgc2FtZQogICAgc3ltYm9sIGF2b2lkcyBidWdzIGluIHRoZSBjbG9uZSduJ21vZGlmeSBkZXZlbG9wbWVudCBjeWNsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCmNvbW1pdCBmZmQ4YzcxNzBkNTVjMzRiYmZjZmQyYzg0MDkzZGNhZmY3OTZjYmYzCkF1dGhvcjogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgpEYXRlOglNb24gQXByIDYgMTk6NTk6MjkgMjAwOSArMDkwMAoKICAgIHMzYzY0eHg6IHJlbW92ZSB1bm5lY2Vzc2FyeSBkZWZpbml0aW9uCgogICAgQ09ORklHX1MzQzY0MDAgaXMgbXVzdCBkZWZpbmVkIGF0IGNvbmZpZyBoZWFkZXIgZmlsZQogICAgVGhhdCBkZWZpbml0aW9uIGlzIHVubmVjZXNzYXJ5IGF0IHRoaXMgZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KCmNvbW1pdCAxNGI5MzA4ZDUxMWI1MzA0MmVmNDc4OTM2ZTM2N2E2NzI4MmRmNjZhCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CUZyaSBBcHIgMjQgMDY6NTA6NDUgMjAwOSArMDIwMAoKICAgIDgzeHg6IHNlYXJjaGluZyAibXVyYW0tZGF0YSIgYnkgY29tcGF0aWJsZSBwcm9wZXJ0eQoKICAgIGlmIHVzaW5nIENPTkZJR19CT09UQ09VTlRfTElNSVQgZmVhdHVyZSBvbiBhIE1QQzgzNjAgQ1BVCiAgICBpbiB0aGUgbXVyYW0tZGF0YSBub2RlLCB0aGUgcmVnIGVudHJ5IG5lZWRzIHRvIGJlIHVwZGF0ZWQuCiAgICBUaGlzIGlzIGRvbmUgaW4gZmR0X2ZpeHVwX211cmFtKCksIGJ1dCB3ZSBzaG91bGQgdXNlCiAgICB0aGUgY29tcGF0aWJsZSAiZnNsLHFlLW11cmFtLWRhdGEiIGZvciBzZWFyY2hpbmcgdGhlCiAgICBub2RlIGluc3RlYWQgb2Ygc2VhcmNoaW5nIHRoZSBtdXJhbS1kYXRhIG5vZGUgd2l0aAogICAgYW4gYWJzb2x1dGUgcGF0aC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOGUxNTA4ODc5NDgwNzk0NGIyMjFjMTE2MDlkMzY3ODllZmM3Zjc2NwpBdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KRGF0ZToJVGh1IEFwciAyMyAyMToyOTozNCAyMDA5ICswMjAwCgogICAgbXBjODN4eDogTVBDODM2MEVSREs6IGZpeCBlbnZpcm9ubWVudCBvZmZzZXQgY29uZmlndXJhdGlvbiBidWcKCiAgICBUaGUgc2l6ZSBvZiBVLUJvb3QgYmluYXJ5IGZvciBNUEM4MzYwRVJESyBpbmNyZWFzZWQKICAgICg+IDIgZmxhc2ggc2VjdG9ycyBub3cpLCBzbyAnc2F2ZWVudicgd2lsbCBwYXJ0aWFsbHkKICAgIG92ZXJ3cml0ZSBVLUJvb3QgaW4gZmxhc2ggYW5kIHdpbGwgYnJpY2sgdGhlIGJvYXJkLgogICAgVGhpcyBwYXRjaCBtb3ZlcyBlbnZpcm9ubWVudCBvZmZzZXQgdG8gZm91cnRoIGZsYXNoCiAgICBzZWN0b3IgYW5kIGFsc28gZml4ZXMgQ09ORklHX1NZU19NT05JVE9SX0xFTi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDNjMTcyYzRmZGJiYjU4NThmYWUzODQ3OGQ2Mzk5YmU0YTE2YmUzZmMKQXV0aG9yOiBNaWNoYWVsIFphaWRtYW4gPG1pY2hhZWwuemFpZG1hbkBnbWFpbC5jb20+CkRhdGU6CVNhdCBBcHIgNCAwMTo0MzowMCAyMDA5ICswMzAwCgogICAgTmV0TG9vcCBpbml0aWFsaXphdGlvbiBidWcKCiAgICBUaGUgcGF0Y2ggZml4ZXMgdGhlIGJ1ZyBvZiBwYXJ0aWFsIGluaXRpYWxpemF0aW9uIG9mIGdsb2JhbCBuZXR3b3JrCiAgICBwYXJhbWV0ZXJzLgoKICAgIFVwb24gdS1ib290J3Mgc3RhcnQgdXAgdGhlIGZpcnN0IHBpbmcgY29tbWFuZCBjYXVzZXMgYSBmYWlsdXJlIG9mIHRoZQogICAgY29uc2VxdWVudCBURlRQIGNvbW1hbmQuIEl0IGhhcHBlbnMgaW4gdGhlIHJlY2VudGx5IGFkZGVkIG1lY2hhbmlzbSBvZgogICAgdGhlIE5ldExvb3AgaW5pdGlhbGl6YXRpb24gd2hlcmUgaW5pdGlhbGl6YXRpb24gb2YgZ2xvYmFsIG5ldHdvcmsKICAgIHBhcmFtZXRlcnMgaXMgc2VwYXJhdGVkIGluIHRoZSBOZXRJbml0TG9vcCByb3V0aW5lIHdoaWNoIGlzIGNhbGxlZCBwZXIKICAgIGVudl9pZCBjaGFuZ2UuIFRodXMsIHBpbmcgcmVxdWVzdCB3aWxsIGluaXRpYWxpemUgdGhlIG5ldHdvcmsgcGFyYW1ldGVycwogICAgbmVjZXNzYXJ5IGZvciBwaW5nIG9wZXJhdGlvbiBvbmx5LCBhZnRlcndhcmRzIHRoZSBlbnZfY2hhbmdlZF9pZCB3aWxsIGJlCiAgICBzZXQgdG8gdGhlIGVudl9pZCB0aGF0IHdpbGwgcHJldmVudCBhbGwgZm9sbG93aW5nIGluaXRpYWxpemF0aW9uIHJlcXVlc3RzCiAgICBmcm9tIG90aGVyIHByb3RvY29scy4KICAgIFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhlIGluaXRpYWxpemVkIGJ5IHBpbmcgc3Vic2V0IG9mIG5ldHdvcmsgcGFyYW1ldGVycwogICAgaXMgbm90IHN1ZmZpY2llbnQgZm9yIG90aGVyIHByb3RvY29scyBhbmQgcGFydGljdWxhcmx5IGZvciBURlRQIHdoaWNoCiAgICByZXF1aXJlcyB0aGUgTmV0U2VydmVySXAgYWxzby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFphaWRtYW4gPG1pY2hhZWwuemFpZG1hbkBnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGIxMWY2NjRmNTJjMjg1NTk5MDEwN2MxOGYyNDIyMjMzNzcxODM1NzUKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXByIDkgMTA6Mjc6MDUgMjAwOSAtMDUwMAoKICAgIG5ldDogZml4IFVMSSA1MjZ4IG1hY3JvIHVzYWdlIGluIG5ldGRldi5oCgogICAgQ2hhbmdlIG5ldGRldi5oIHRvIHVzZSBDT05GSUdfVUxJNTI2WCBpbnN0ZWFkIG9mIENPTkZJR19VTEk1MjYuICBDT05GSUdfVUxJNTI2WAogICAgaXMgdXNlZCBldmVyeXdoZXJlIGVsc2UsIHNvIHRoYXQncyB0aGUgY29ycmVjdCBtYWNybyBuYW1lLglXaXRob3V0IHRoaXMgZml4LAogICAgRXRoZXJuZXQgd2lsbCBub3Qgd29yayBvbiB0aGUgRnJlZXNjYWxlIE1QQzg2MTAgSFBDRC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA3ZWUzOGMwNDRjYTUwNDFkMzM3OGQ2NTA3NTgwZWE0ZWMzNDRhZjk2CkF1dGhvcjogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CkRhdGU6CVN1biBBcHIgMTIgMTU6Mzg6MDYgMjAwOSAtMDcwMAoKICAgIGZpeCBEYVZpbmNpIE5TMTY1NTBfUkVHX1NJWkUgcmVncmVzc2lvbgoKICAgIFVwZGF0ZSB0aGUgRGFWaW5jaSBETTY0NDYgYm9hcmRzIHRvIHVzZSB0aGUgbmV3IGNvbnZlbnRpb24KICAgIGZvciBDT05GSUdfU1lTX05TMTY1NTBfUkVHX1NJWkUgLi4uIHRoZSBzaXplIGhhc24ndCBjaGFuZ2VkCiAgICBmcm9tIHRoZSBvcmlnaW5hbCA0IGJ5dGVzLCBidXQgdGhlc2UgY2hpcHMgYXJlIGxpdHRsZS1lbmRpYW4uCgogICAgKFJlc29sdmVzIGEgcmVncmVzc2lvbiBhZGRlZCByZWNlbnRseSBieSB0aGUgaW5jbHVkZS9uczE2NTUwLmgKICAgIHBhdGNoIHRvICJVbmlmeSBzdHJ1Y3R1cmUgZGVjbGFyYXRpb24gZm9yIHJlZ2lzdGVycyIuICBUaGUgY29kZQogICAgcHJldmlvdXNseSB3b3JrZWQganVzdCBmaW5lIGJlY2F1c2UgdGhlIHJlZ2lzdGVycyB3ZXJlIGFjY2Vzc2VkCiAgICBhcyBob3N0LWVuZGlhbiB3b3Jkcywgbm90IGFzIGJ5dGVzLikKCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCmNvbW1pdCBkZmM5OWUxNDNmY2E0NGE0OTI5MThhYzZjZjNmNzZlZTljMjQ3M2E5CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gQXByIDEyIDIyOjI5OjIwIDIwMDkgLTA0MDAKCiAgICBjbWRfbmFuZDogZHJvcCBkdXBsaWNhdGUgTlVMTCBwdHIgY2hlY2sKCiAgICBUaGUgZmlyc3QgaWYgc3RhdGVtZW50IGNoZWNrcyBmb3IgTlVMTCBwdHJzLCBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIGNoZWNrCiAgICBpdCBhZ2FpbiBpbiBsYXRlciBlbHNlIGNhc2VzIChzdWNoIGFzIC5vb2IpLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIENDOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3NzMyY2VmMmVlYjRlMzM5Y2ZjZDg1NTNmYWI3NzNhZjczYTIwODA1CkF1dGhvcjogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CkRhdGU6CU1vbiBBcHIgMTMgMDg6MDM6MzggMjAwOSAtMDcwMAoKICAgIENNRF9VQkkgIT0gTVREX1BBUlRJVElPTlMKCiAgICBGaXggZGVwZW5kZW5jeSBnb29mYWdlOiAgaXQgc2hvdWxkIGNlcnRhaW5seSBiZSBwb3NzaWJsZSB0byBoYXZlIHRoZQogICAgcGFydGl0aW9uIHN1cHBvcnQgd2l0aG91dCBicmluZ2luZyBpbiBVQkkgY29tbWFuZHMuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDZlYmZmMzY1ZWI2MzA5M2NhMzViNjg3MzE2MDAyNTM1YzZhMTg4MjAKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUaHUgQXByIDE2IDIxOjMwOjQ4IDIwMDkgKzAyMDAKCiAgICBhdDkxc2FtOS9hdDkxY2FwOiBmaXggQ09ORklHX1NZU19IWiB0byAxMDAwCgogICAgVGhlIHRpbWVyIGhhcyBiZWVuIHJld3JvdGUgd2l0aCBhIHByZWNpc2lvbiBhdCB+MCwxOCUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgVGVzdGVkLWJ5OiBTZXJnZXkgTGFwaW4gPHNsYXBpbkBvc3NmYW5zLm9yZz4KICAgIFRlc3RlZC1ieTogRXJpYyBCRU5BUkQgPGViZW5hcmRAZnJlZS5mcj4KCmNvbW1pdCBmMGEyYzdiNGI2NGVhY2QwNmJiMjcyODU2YmNjMDU2YmU4NzE5ZjVhCkF1dGhvcjogSWxrbyBJbGlldiA8aWxpZXZAcm9uZXRpeC5hdD4KRGF0ZToJVGh1IEFwciAxNiAyMTozMDo0OCAyMDA5ICswMjAwCgogICAgYXQ5MTogYWRkIHN1cHBvcnQgZm9yIHRoZSBQTTkyNjMgYm9hcmQgb2YgUm9uZXRpeCBHbWJICgogICAgVGhlIFBNOTI2MyBib2FyZCBpcyBiYXNlZCBvbiB0aGUgQVQ5MVNBTTkyNjMtRUsgYm9hcmQuCgogICAgSGVyZSBpcyB0aGUgcGFnZSBvbiBSb25ldGl4IHdlYnNpdGU6CiAgICBodHRwOi8vd3d3LnJvbmV0aXguYXQvc3RhcnRlcl9raXRfOTI2My5odG1sCgogICAgU2lnbmVkLW9mZi1ieTogSWxrbyBJbGlldiA8aWxpZXZAcm9uZXRpeC5hdD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZGMzOWFlOTUxM2MzMmRmZWI5ZTAxOGRjMGQyMmM2NDg0NTE0ZmVmYgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVRodSBBcHIgMTYgMjE6MzA6NDQgMjAwOSArMDIwMAoKICAgIGF0OTFzYW05L2F0OTFjYXA6IGltcHJvdmUgY2xvY2sgZnJhbWV3b3JrCgogICAgY2FsY3VsYXRlIGR5bmFtaWNhbGx5IHRoZSBjbG9jayByYXRlIGFuZCBwbGxiIHNldHRpbmcgZm9yIHVzYgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZGQ3YzMwMjA5OWVmNTU5MDA2OWJkYmYyOTJhYWE4MjMwY2Q1OWRlNwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEFwciAxNSAxNDowODo0OCAyMDA5ICswMjAwCgogICAgcHBjNHh4OiBEaXNhYmxlIFBPU1QgbWVtb3J5IHRlc3Qgb24gTkFORC1ib290aW5nIEtpbGF1ZWEKCiAgICBEb24ndCBydW4gdGhlIG1lbW9yeSBQT1NUIG9uIHRoZSBOQU5ELWJvb3RpbmcgdmVyc2lvbi4gSXQgd2lsbAogICAgb3ZlcndyaXRlIHBhcnQgb2YgdGhlIFUtQm9vdCBpbWFnZSB3aGljaCBpcyBhbHJlYWR5IGxvYWRlZCBmcm9tIE5BTkQKICAgIHRvIFNEUkFNLiBXZSB3ZXJlIGp1c3QgbHVja3kgdGhhdCBpdCBib290ZWQgYXQgYWxsIHdpdGggdGhpcyBTRFJBTQogICAgdGVzdCBlbmFibGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5YTkyOTE3MGJlODliMjdiY2U2Nzc1MDRkYTI3ZTg4NjAwYzA2YzQ5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgQXByIDE1IDE0OjA2OjI2IDIwMDkgKzAyMDAKCiAgICBwcGM0eHg6IERpc2FibGUgUE9TVCBtZW1vcnkgdGVzdCBvbiBOQU5ELWJvb3RpbmcgU2VxdW9pYQoKICAgIERvbid0IHJ1biB0aGUgbWVtb3J5IFBPU1Qgb24gdGhlIE5BTkQtYm9vdGluZyB2ZXJzaW9uLiBJdCB3aWxsCiAgICBvdmVyd3JpdGUgcGFydCBvZiB0aGUgVS1Cb290IGltYWdlIHdoaWNoIGlzIGFscmVhZHkgbG9hZGVkIGZyb20gTkFORAogICAgdG8gU0RSQU0uIFdlIHdlcmUganVzdCBsdWNreSB0aGF0IGl0IGJvb3RlZCBhdCBhbGwgd2l0aCB0aGlzIFNEUkFNCiAgICB0ZXN0IGVuYWJsZWQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDE3YzFiMGU4OWI4YmU3ZDkwZjYwNWViMTlhZjkyMThjNjI3NWJmYjMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBBcHIgMTUgMTE6MzI6NTMgMjAwOSArMDIwMAoKICAgIHBwYzR4eDogUmVtb3ZlIHVudXNlZCBjb2RlIGZvciBTZXF1b2lhIE5BTkQgYm9vdGluZyB2ZXJzaW9uCgogICAgVGhlIGN1cnJlbnQgZGVmaW5lIG9mIGdldF9idXNfZnJlcSgpIGluIHRoZSBDT05GSUdfTkFORF9TUEwgI2lmZGVmIGlzIG5vdAogICAgdXNlZCBhdCBhbGwuIFRoaXMgcGF0Y2ggY2hhbmdlcyBpdCdzIGRlZmluZSB0byB0aGUgY3VycmVudGx5IHVzZWQgdmFsdWUgb2YKICAgIDEzMzMzMzMzMyBhbmQgcmVtb3ZlcyB0aGUgdW5uZWNlc3NhcnkgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgY2Y5NDA5ODg1Y2JlMDE0MDViYWQ3Njc5MGU5OWY4YWRmMzM1MWY0ZApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEFwciAxNSAxMDo1MDo0OCAyMDA5ICswMjAwCgogICAgcHBjNHh4OiBBZGQgImJvb3RpbmcgZnJvbSBOQU5EIiB0byA0eHggTkFORC1ib290aW5nIHRhcmdldHMKCiAgICBUaGlzIGFkZGl0aW9uYWwgdGV4dCBpbiB0aGUgYm9vdHVwIGxvZyBoZWxwcyB0byBzZWUgaWYgdGhlIGJvYXJkIGlzCiAgICBjb25maWd1cmVkIGZvciBOQU5ELWJvb3RpbmcuIEVzcGVjaWFsbHkgaGVscGZ1bCBmb3IgYm9hcmRzIHRoYXQgY2FuCiAgICBib290IGZyb20gTk9SIGFuZCBOQU5EIChlLmcuIG1vc3Qgb2YgdGhlIEFNQ0MgZXZhbCBib2FyZHMpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1MTMyMTA2YTI3YjhmYjMwMjY3Nzg1MmIyNmZmZDMxOWI0MGQxN2UyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgQXByIDggMTA6MzY6MjIgMjAwOSArMDIwMAoKICAgIHBwYzR4eDogRml4dXAgY2hpcC1zZWxlY3RzIGluIGR0YiBmb3IgTkFORC1ib290aW5nIFNlcXVvaWEKCiAgICBDdXJyZW50bHkgdGhlIE5PUiAmIE5BTkQgc3VwcG9ydCBpbiBMaW51eCBvbmx5IHdvcmtzIGZvciB0aGUgInN0YW5kYXJkIgogICAgU2VxdW9pYSwgdGhlIHZlcnNpb24gYm9vdGluZyBmb3IgTk9SIGZsYXNoLiBUaGUgTkFORC1ib290aW5nIHZlcnNpb24KICAgIGhhcyB0aGUgY2hpcC1zZWxlY3RzIHN3YXBwZWQuIEhlcmUgdGhlIGNoaXAtc2VsZWN0IG1hcHBpbmdzOgoKICAgICJTdGFuZGFyZCIgTk9SLWJvb3RpbmcgdmVyc2lvbjoKICAgIENTMAlOT1IKICAgIENTMwlOQU5ECgogICAgTkFORC1ib290aW5nIHZlcnNpb246CiAgICBDUzAJTkFORAogICAgQ1MzCU5PUgoKICAgIFdpdGggdGhpcyBwYXRoIHRoZSBkdGIgZ2V0cyBmaXhlZC11cCwgc28gdGhhdCB0aGUgY29ycmVjdCBjaGlwLXNlbGVjdAogICAgbnVtYmVycyBhcmUgcGF0Y2hlZCBpbiB0aGUgZHRiIGVuYWJsaW5nIGNvcnJlY3QgTk9SICYgTkFORCBzdXBwb3J0CiAgICBpbiBMaW51eCBvbiB0aGUgTkFORC1ib290aW5nIFNlcXVvaWEgdmVyc2lvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYWFkNGVjYTRiYThkNTk3NzQ3MTk5ZDhhZjcyMzQyNjY4MTU1N2RkYQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IEFwciA0IDA5OjEwOjI3IDIwMDkgLTA0MDAKCiAgICBCbGFja2ZpbjogYXVkaXQgVUFSVCBmb3IgYWxsIGtub3duIGFub21hbGllcwoKICAgIFRoZXJlIGlzIG5vIGNvZGUgY2hhbmdlIGhlcmUsIGp1c3QgbmV3IGNvbW1lbnRzLCBidXQgdGhpcyBrZWVwcyBtZSBmcm9tCiAgICBoYXZpbmcgdG8gZG8gYW5vdGhlciBhdWRpdCBmcm9tIHNjcmF0Y2ggaW4gdGhlIGZ1dHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgOGVmOTI5YWZhNDNjNzdjOTU3M2NhYTU3YzZlMTdhOTdhMzM3NzVjMApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IEFwciA0IDA4OjQwOjEzIDIwMDkgLTA0MDAKCiAgICBCbGFja2ZpbjogYWRkIGNoZWNrIGZvciBhbm9tYWx5IDA1MDAwMzYyCgogICAgREVTQ1JJUFRJT046CiAgICBUaGUgY29sdW1uIGFkZHJlc3Mgd2lkdGggc2V0dGluZ3MgZm9yIGJhbmtzIDIgYW5kIDMgYXJlIG1pc2Nvbm5lY3RlZCBpbgogICAgdGhlIFNEUkFNIGNvbnRyb2xsZXIuICBBY2Nlc3NlcyB0byBiYW5rIDIgd2lsbCByZXN1bHQgaW4gYW4gZXJyb3IgaWYgdGhlCiAgICBDb2x1bW4gQWRkcmVzcyBXaWR0aCBmb3IgYmFuayAzIChFQjNDQVcgKSBpcyBub3Qgc2V0IHRvIGJlIHRoZSBzYW1lIGFzCiAgICB0aGF0IG9mIGJhbmsgMi4KCiAgICBXT1JLQVJPVU5EOgogICAgSWYgdXNpbmcgYmFuayAyLCBtYWtlIHN1cmUgdGhhdCBiYW5rcyAyIGFuZCAzIGhhdmUgdGhlIHNhbWUgY29sdW1uIGFkZHJlc3MKICAgIHdpZHRoIHNldHRpbmdzIGluIHRoZSBFQklVX1NEQkNUTCByZWdpc3Rlci4gIFRoaXMgbXVzdCBiZSB0aGUgY2FzZQogICAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCBiYW5rIDMgaXMgZW5hYmxlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYzJlMDc0NDlmNTQ2ZmIzNzUyODljZGFjMWE2MDhmZGMyMDM1Nzg3MwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IEFwciA0IDA4OjI5OjU1IDIwMDkgLTA0MDAKCiAgICBCbGFja2ZpbjogYWRkIGNvbW1lbnQgYWJvdXQgYW5vbWFseSAwNTAwMDQzMCBhdm9pZGFuY2UKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNDhhYjE1MDkyNTRhNGMxNzVlNGY2NWM0NzhhOTc4OTI4ZmZlMDllYwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IEFwciA0IDA4OjEwOjIyIDIwMDkgLTA0MDAKCiAgICBCbGFja2ZpbjogYWRkIHdvcmthcm91bmQgZm9yIGFub21hbHkgMDUwMDAyNDIKCiAgICBERVNDUklQVElPTjoKICAgIElmIHRoZSBERiBiaXQgaXMgc2V0IHByaW9yIHRvIGEgaGFyZHdhcmUgcmVzZXQsIHRoZSBQTEwgd2lsbCBjb250aW51ZSB0bwogICAgZGl2aWRlIENMS0lOIGJ5IDIgYWZ0ZXIgdGhlIGhhcmR3YXJlIHJlc2V0LCBidXQgdGhlIERGIGJpdCBpdHNlbGYgd2lsbCBiZQogICAgY2xlYXJlZCBpbiB0aGUgUExMX0NUTCByZWdpc3Rlci4KCiAgICBXT1JLQVJPVU5EOgogICAgUmVwcm9ncmFtIHRoZSBQTEwgd2l0aCBERiBjbGVhcmVkIGlmIHRoZSBkZXNpcmUgaXMgdG8gbm90IGRpdmlkZSBDTEtJTiBieQogICAgMiBhZnRlciByZXNldC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgY2UxZmU0YmE2YmI5ZGY3YzU3MzUxNDM2ZmExN2QxYWY4YmJlNzkxNgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IEFwciA0IDA4OjA5OjI0IDIwMDkgLTA0MDAKCiAgICBCbGFja2ZpbjogYWRkIHdvcmthcm91bmQgZm9yIGFub21hbHkgMDUwMDAxNzEKCiAgICBERVNDUklQVElPTjoKICAgIFRoZSBCb290IFJPTSBpcyBleGVjdXRlZCBhdCBwb3dlciB1cC9yZXNldCBhbmQgY2hhbmdlcyB0aGUgdmFsdWUgb2YgdGhlCiAgICBTSUNBX0lXUiByZWdpc3RlcnMgZnJvbSB0aGVpciBkZWZhdWx0IHJlc2V0IHZhbHVlIG9mIDB4RkZGRiwgYnV0IGRvZXMgbm90CiAgICByZXN0b3JlIHRoZW0uCgogICAgV09SS0FST1VORDoKICAgIFVzZXIgY29kZSBzaG91bGQgbm90IHJlbHkgb24gdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlc2UgcmVnaXN0ZXJzLglTZXQKICAgIHRoZSBkZXNpcmVkIHZhbHVlcyBleHBsaWNpdGx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA1MWVlNmUwNTdmN2E5MjBlMmExMjVjZDlmOTg1ZDEwZjYyNWUzNTVmCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgQXByIDQgMDg6MjI6MzYgMjAwOSAtMDQwMAoKICAgIEJsYWNrZmluOiB1cGRhdGUgYW5vbWFseSBzaGVldHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYTM0M2JhODdlYTAzMjBjYTBhNGVjZmEyYzQyY2Q5ZDRmMTg4ODNkZgpBdXRob3I6IEdyYWYgWWFuZyA8Z3JhZi55YW5nQGFuYWxvZy5jb20+CkRhdGU6CVNhdCBBcHIgNCAwNzo0NTo1NyAyMDA5IC0wNDAwCgogICAgQmxhY2tmaW46IG5hbmQ6IGZsdXNoIHBlcmlwaGVyYWwgYmVmb3JlIHBvbGxpbmcgaXQKCiAgICBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZGF0YSB3cml0dGVuIHRvIHRoZSBuYW5kIGZsYXNoIGNvbnRyb2xsZXIgbWFrZXMKICAgIGl0IHRoZXJlIGJlZm9yZSB3ZSBzdGFydCBwb2xsaW5nIGl0cyBzdGF0dXMgcmVnaXN0ZXIuICBPdGhlcndpc2UsIHdlIG1heQogICAgZ2V0IHN0YWxlIGRhdGEgYW5kIHJldHVybiBiZWZvcmUgdGhlIGNvbnRyb2xsZXIgaXMgYWN0dWFsbHkgcmVhZHkuCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZiBZYW5nIDxncmFmLnlhbmdAYW5hbG9nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIEFja2VkLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzY2NiZmIyNWY0OGFmNzhlNzA5MmFjNzVmMzExNWU5MjRlNzZjNzQ4CkF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CkRhdGU6CVN1biBBcHIgNSAxMTo0MzoyOCAyMDA5ICswMjAwCgogICAgU3VwcG9ydCBmb3IgUFhBMjdYIFVEQy4KCglUaGlzIFBhdGNoIGFkZHMgU3VwcG9ydCBmb3IgUFhBMjdYIFVEQy4KCShSZWJhc2VkIHRvIGRyaXZlcnMvdXNiIHJlb3JnYW5pc2F0aW9uKQoKICAgIFNpZ25lZC1vZmYtYnk6IFZpdmVrIEt1dGFsIDx2aXZlay5rdXRhbEBhemluZ28uY29tPgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgMjczMWI5YTg2Njg1MTkwZDI2YjE4ODNmMjdhZmRhNWFjOGUxYTMxMwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBBcHIgMyAxMjo0Njo1OCAyMDA5ICswMjAwCgogICAgZHJpdmVycy91c2I6IHJlZ29yZ2FuaXNhdGlvbgoKICAgIG1vdmUgdG8gbGludXggdXNiIGRyaXZlciBvcmdhbmlzYXRpb24KCiAgICBhcyBmb2xsb3dpbmcKCiAgICBkcml2ZXJzL3VzYi9nYWRnZXQKICAgIGRyaXZlcnMvdXNiL2hvc3QKICAgIGRyaXZlcnMvdXNiL211c2IKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgZDA0MzcxYTExNmQxMDJlNTg3YmE3YWE0YzMyOWI0NDFjZGJlYTNmNApBdXRob3I6IFRvZG9yIEkgTW9sbG92IDx0bW9sbG92QHVjc2QuZWR1PgpEYXRlOglTYXQgQXByIDQgMDY6NTM6MDYgMjAwOSAtMDQwMAoKICAgIEJsYWNrZmluOiBzcGk6IG1ha2UgY3MgZGVhc3NlcnQgZnVuY3Rpb24gZGV0ZXJtaW5pc3RpYwoKICAgIEJsYWNrZmluIFNQSSBkcml2ZXIgd2FzIG5vdCBkcml2aW5nIHRoZSBTUEkgY2hpcC1zZWxlY3QgaGlnaCBiZWZvcmUKICAgIHB1dHRpbmcgdGhlIGNoaXAtc2VsZWN0IHNpZ25hbHMgaW50byB0cmktc3RhdGUgbW9kZS4gIFRoaXMgaXMgcHJvYmFibHkKICAgIHNvbWV0aGluZyB0aGF0IHNsaXBwZWQgYnkgdW5ub3RpY2VkIGluIG1vc3QgZGVzaWducy4gIElmIHRoZSBzaWduYWxzIGFyZQogICAgcHV0IGRpcmVjdGx5IGludG8gYSB0cmktc3RhdGUgbW9kZSwgdGhlbiB0aGUgYm9hcmQgaXMgcmVseWluZyBvbiB0aGUKICAgIHB1bGwtdXAgcmVzaXN0b3JzIHRvIHB1bGwgdXAgdGhlIGNoaXAtc2VsZWN0IGJlZm9yZSB0aGUgbmV4dCB0cmFuc2FjdGlvbi4KICAgIE1vc3Qgb2YgdGhlIHRpbWUgdGhpcyBpcyBmaW5lLCBleGNlcHQgd2hlbiB5b3UgaGF2ZSB0d28gdHJhbnNhY3Rpb25zIHRoYXQKICAgIGZvbGxvdyBlYWNoIG90aGVyIHZlcnkgY2xvc2VseSwgc3VjaCBhcyB0aGUgZmxhc2ggZXJhc2UgYW5kIHJlYWQgc3RhdHVzCiAgICByZWdpc3RlciBjb21tYW5kcy4JSW4gdGhpcyBjYXNlIEkgd2FzIHNlZWluZyBhIDUwMG5zIHNlcGFyYXRpb24gYmV0d2VlbgogICAgdGhlIHRyYW5zYWN0aW9ucy4gIEluIG15IHNldHVwLCB3aXRoIGEgMTBrT2htIHB1bGwtdXAsIGl0IHdvdWxkIG1lZXQKICAgIHRpbWluZyBzcGVjIGFib3V0IGhhbGYgdGhlIHRpbWUgYW5kIHJlc3VsdGVkIGluIGludGVybWl0dGVudCBlcnJvcnMuICAoQQogICAgc3Ryb25nZXIgcHVsbCB1cCB3b3VsZCBmaXggdGhpcywgYnV0IG91ciBkZXNpZ24gaXMgdGFyZ2V0ZWQgZm9yIGxvdyBwb3dlcgogICAgY29uc3VtcHRpb24gYW5kIGEgMy4za09obSBAIDMuM3YgaXMgMy4zbVcgb2YgbmVlZGxlc3MgcG93ZXIgY29uc3VtcHRpb24uKQogICAgSSBtb2RpZmllZCB0aGUgc3BpX2NzX2RlYWN0aXZhdGUoKSBmdW5jdGlvbiBpbiBiZmluX3NwaS5jIHRvIGRyaXZlIHRoZQogICAgY2hpcC1zZWxlY3RzIGhpZ2ggYmVmb3JlIHB1dHRpbmcgdGhlbSBpbnRvIHRyaS1zdGF0ZS4gIEZvciBtZSwgdGhpcwogICAgcmVzdWx0ZWQgaW4gYSByaXNlIHRpbWUgb2YgNW5zIGluc3RlYWQgb2YgdGhlIHByZXZpb3VzIHJpc2UgdGltZSBvZiBhYm91dAogICAgMXVzLCBhbmQgZnVsbHkgc2F0aXNmaWVkIHRoZSB0aW1pbmcgc3BlYyBvZiB0aGUgY2hpcC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUb2RvciBJIE1vbGxvdiA8dG1vbGxvdkB1Y3NkLmVkdT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBjNmZhZGI5YzczYTZhM2UwYzdmMjA2OTZlOTc4MzA0YTU5M2E4ZDJkCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IERlYyAxMyAyMTowODowNSAyMDA4ICswMTAwCgogICAgaW50ZWdyYXRvcmFwOiBmaXggUENJIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDFjMzk3NTA4YzgzNmRmY2IwMWZiMjQ3MWM3MWRlMDcyNzA1MWYxMTcKQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgpEYXRlOglNb24gTWFyIDMwIDIxOjE1OjIzIDIwMDkgKzAyMDAKCiAgICBPTUFQMzogVXBkYXRlIE92ZXJvIHBpbiBtdXggZm9yIG5ldyBleHBhbnNpb24gYm9hcmQKCiAgICBBIG5ldyBPdmVybyBleHBhbnNpb24gYm9hcmQgdXNlcyBHUElPIDE0LCAyMSwgMjIgYW5kIDIzIGZvciBMRUQncyBhbmQKICAgIHN3aXRjaGVzLiBUaGlzIHBhdGNoIGNoYW5nZXMgdGhlIHBpbm11eCBjb25maWd1cmF0aW9uIGZvciB0aG9zZSBwaW5zLgogICAgVGhleSB3ZXJlIHByZXZpb3VzbHkgc2V0IHVwIGZvciB1bnVzZWQgTU1DM19EQVQ0LTcuCgogICAgU2lnbmVkLW9mZi1ieTogU3RldmUgU2Frb21hbiA8c3RldmVAc2Frb21hbi5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgoKY29tbWl0IGFiMjk4MjMxNTE4Njc1YjM3ODRhZWE4OGVlOWI5Nzg0MzhmOTllNjMKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gQXByIDUgMTM6MDg6MDMgMjAwOSArMDIwMAoKICAgIGFybTogdW5pZnkgcmVzZXQgY29tbWFuZAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYjNhY2I2Y2Q0MDU5ZGZiMjlhNWU5OTA5NWQ4MDI3MTdmNTNmZjc4NApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBBcHIgNSAxMzowNjozMSAyMDA5ICswMjAwCgogICAgYXJtOiBjbGVhbiBjYWNoZSBtYW5hZ2VtZW50CgogICAgdW5pZnkgYXJtIGNhY2hlIG1hbmFnZW1lbnQgZXhjZXB0IGZvciBub24gc3RhbmRhcmQgY2FjaGUgYXMgQVJNN1RETUkKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDY3N2U2MmY0MzIzNWRlOWExNzAxMjA0ZDdiY2VhMGZiM2QyMzNmYTEKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gQXByIDUgMTM6MDI6NDMgMjAwOSArMDIwMAoKICAgIGFybTogdXBkYXRlIGNvLXByb2Nlc3NvciAxNSBhY2Nlc3MKCiAgICBpbXBvcnQgc3lzdGVtLmggZnJvbSBsaW51eAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMjNlNGFmNDllMDY2YTUzY2QzZTM2NTliNjhlZjkwNTcyZDg4ZGU4NApBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KRGF0ZToJU3VuIEFwciA1IDAwOjQyOjAyIDIwMDkgKzAyMDAKCiAgICBBUk06IGFkZCB0aGUgaW14MzFfcGh5Y29yZV9lZXQgdGFyZ2V0IHRvIE1BSU5UQUlORVJTCgogICAgaW14MzFfcGh5Y29yZV9lZXQgaXMgYSB2YXJpYW50IG9mIHRoZSBpbXgzMV9waHljb3JlIGJvYXJkIHdpdGggYSBmZXcKICAgIGV4dGVuc2lvbnMsIHdoaWNoIGp1c3RpZmllcyBhIHNlcGFyYXRlIGVudHJ5IGluIHRoZSBNQUlOVEFJTkVSUyBsaXN0LAogICAgd2hlcmVhcyBub3JtYWxseSBhbGwgZW50cmllcyBzaGFyaW5nIGEgc2luZ2xlIGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgYQogICAgYm9hcmQvIGRpcmVjdG9yeSBoYXZlIG9ubHkgb25lIGVudHJ5IGluIE1BSU5UQUlORVJTLgoKICAgIFJlcG9ydGVkLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgoKY29tbWl0IDY5YzViZjI5OTA4YjNhN2Y4ZTIzYmQ5ODkxYjdlY2M1YjIxZjIzZTUKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CkRhdGU6CVN1biBBcHIgNSAwMDozNzowNyAyMDA5ICswMjAwCgogICAgQVJNOiBmaXggb3V0LW9mLXRyZWUgYnVpbGQgb2YgaW14MzFfcGh5Y29yZV9lZXQKCiAgICBGaXggb3V0LW9mLXRyZWUgYnVpbGQgb2YgdGhlIGlteDMxX3BoeWNvcmVfZWV0IHRhcmdldC4KCiAgICBSZXBvcnRlZC1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCAzYzg1M2YzMWQ2YThlNDQwN2Y3M2EyY2EyYzYzZDM4M2EyNDVmMjM3CkF1dGhvcjogSm9uIFNtaXJsIDxqb25zbWlybEBnbWFpbC5jb20+CkRhdGU6CVNhdCBBcHIgNCAxNzo0NDo1MSAyMDA5IC0wNDAwCgogICAgbXBjNTIwMDogcmVkdWNlIGRlbGF5cyBpbiBpMmMKCiAgICBUaGUgcHJldmlvdXMgY29kZSB3YWl0ZWQgMTAwMHVzIGJlZm9yZSBjaGVja2luZyBpMmMKICAgIHN0YXR1cy4gTWVhc3VyZW1lbnQgc2hvd3MgaTJjIGlzIHVzdWFsbHkgcmVhZHkgaW4KICAgIHVuZGVyIDUwdXMuIENoYW5nZSB0aGUgcG9sbGluZyBpbnRlcnZhbCB0byAxNXVzLAogICAgbG9vcCA2LDY2NyB0aW1lcyB0byBrZWVwIHRoZSBwb2xsaW5nIHRpbWVvdXQgY29uc3RhbnQKICAgIGF0IDEwMG1zLgoKY29tbWl0IDM2MDAzMjY4OTY4OTQ5MTEwZWYxNDVkOWYyZWFmODQzOWM5NmQyNWIKQXV0aG9yOiBTYW5qZWV2IFByZW1pIDxwcmVtaUB0aS5jb20+CkRhdGU6CUZyaSBBcHIgMyAxNDowMDowNyAyMDA5ICswNTMwCgogICAgT01BUDogRml4IGNvbXBpbGUgaXNzdWUKCiAgICBGaXhlcyB0aGlzIGNvbXBpbGUgZXJyb3I6CiAgICBib2FyZC5jOiBJbiBmdW5jdGlvbiAnZG9fc3dpdGNoX2VjYyc6CiAgICBib2FyZC5jOjMzOTogZXJyb3I6ICdjbWRfdGJsX3QnIGhhcyBubyBtZW1iZXIgbmFtZWQgJ2hlbHAnCiAgICBtYWtlWzFdOiAqKiogW2JvYXJkLm9dIEVycm9yIDEKICAgIG1ha2VbMV06IExlYXZpbmcgZGlyZWN0b3J5IGAvZGIvcHNwX2dpdC91c2Vycy9hMDc1NjgxOS91LWJvb3QvY3B1L2FybV9jb3J0ZXhhOC9vbWFwMycKICAgIG1ha2U6ICoqKiBbY3B1L2FybV9jb3J0ZXhhOC9vbWFwMy9saWJvbWFwMy5hXSBFcnJvciAyCgogICAgVGhpcyBpcyBkdWUgdG8gdGhlIGZhY3QgdGhhdCBjdXJyZW50IGNvbW1hbmQgdXNlcyBsb25nCiAgICBoZWxwIGZvciB0aGUgdXNhZ2UgcHJpbnQgZXZlbiBpZiB0aGUgQ09ORklHX1NZU19MT05HSEVMUAogICAgaXMgbm90IGVuYWJsZWQuIChUaGFua3MgSmVhbi1DaHJpc3RvcGhlIGZvciBleHBsYW5hdGlvbikuCgogICAgU2lnbmVkLW9mZi1ieTogU2FuamVldiBQcmVtaSA8cHJlbWlAdGkuY29tPgoKY29tbWl0IDM0MmMxYTVkOWFiNzRmZWJmMzIyNmE4NjIxNmRjNWFhMDUyOTVkNDYKQXV0aG9yOiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+CkRhdGU6CUZyaSBBcHIgMyAwOTo1NjoxNiAyMDA5ICswOTAwCgogICAgczNjNjR4eDogZml4IHRoZSB3cm9uZyBncGlvIG9mZnNldAoKICAgIFRoaXMgcGF0Y2ggZml4IHRoZSB3cm9uZyBncGlvIG9mZnNldAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KCmNvbW1pdCBhYjA2ODljMzE2YzliMmVlMzNmNGRlMWM1MDI2M2I2NGU1MzlmMTJhCkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+CkRhdGU6CVdlZCBOb3YgMjYgMTA6MTg6MTMgMjAwOCArMDkwMAoKICAgIE1vdmUgbWFjaGluZSBzcGVjaWZpYyBjb2RlIHRvIGJvYXJkIGF0IHMzYzY0eHggKHYyKQoKICAgIE1vdmUgbWFjaGluZSBzcGVjaWZpYyBjb2RlIHRvIHNtZGs2NDAwLgogICAgU29tZSBib2FyZCB1c2UgT25lTkFORCBpbnN0ZWFkIG9mIE5BTkQuCgogICAgU29tZSByZWdpc3RlciBNUDBfQ1NfQ0ZHWzU6MF0gYXJlIGNvbnRyb2xlZCBieSBib3RoIGgvdyBhbmQgcy93LgogICAgU28gaXQncyBiZXR0ZXIgdG8gdXNlIG1hY3JvIGluc3RlYWQgb2YgaGFyZC1jb2RlZCB2YWx1ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgoKY29tbWl0IDc2N2YzYWNkOWY2ZTFkY2I4YWRhOTI2YzMzMzk0NTM4MmVkZGM3ZTgKQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CkRhdGU6CVdlZCBBcHIgMSAyMjowMjoxOSAyMDA5IC0wNTAwCgogICAgWk9PTTEgUmVtb3ZlIGxlZ2FjeSBOQU5EIGRlZmluZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Cgpjb21taXQgNTg5MTE1MTcwN2VlNTkwMmZlNjJkNTU0YzI0N2Y0Mjg2NTgxNTc1NwpBdXRob3I6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KRGF0ZToJV2VkIEFwciAxIDIyOjAyOjIwIDIwMDkgLTA1MDAKCiAgICBPTUFQMyBGaXggbXVsdGlsaW5lIGZvcm1hdHRpbmcgaW4gYm9hcmQgaW5pdCBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Cgpjb21taXQgYzBhMTRhZWRjMzQ0MGQ2NTkxYjhjODZkNDU4NjFhMGE4YjQ2ZTExZApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBBcHIgNSAwMDoyNzo1NyAyMDA5ICswMjAwCgogICAgVXBkYXRlIENIQU5HRUxPRywgY29kaW5nIHN0eWxlIGNsZWFudXAuCgpjb21taXQgZjYzNzI4YzgwNGFiNzQxM2E2N2Q3MGY2Nzc0Y2QzMGMzZjdiNDBmYgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBBcHIgNSAwMDoxODo0NCAyMDA5ICswMjAwCgogICAgT25lIG1vcmUgZml4IGZvciBidWlsZGluZyBlbnZfZW1iZWRkZWQubwoKICAgIEluIGFkZGl0aW9uIHRvIHRoZSBjaGFuZ2VzIGZvciBDT05GSUdfRU5WX0lTX0lOX0ZMQVNIIGFzIGRvbmUgaW4KICAgIGNvbW1pdCBhZmNiY2UwNywgd2UgYWxzbyBuZWVkIHRvIGRvIHRoZSBzYW1lIGZvcgogICAgQ09ORklHX0VOVl9JU19JTl9FRVBST00gYW5kIENPTkZJR19FTlZfSVNfSU5fTlZSQU0uCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBlM2QxYWM3YmIxOTU1ZDM2OTgwZDI2N2NiNGNlYzQwYjBmN2QzMGI1CkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBBcHIgMiAxNjoxNToxMCAyMDA5IC0wNTAwCgogICAgY29tbW9uL2ltYWdlLmM6IFJlbG9jYXRlIHN0cmluZ3MgaW4gdGFibGVzLgoKICAgIFdpdGhvdXQgdGhpcywgdS1ib290IGNhbiBjcmFzaCBvciBwcmludCBnYXJiYWdlIGlmIHRoZSBvcmlnaW5hbCBsaW5rCiAgICBhZGRyZXNzIG5vIGxvbmdlciBwb2ludHMgdG8gYSB2YWxpZCBzdHJpbmcuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgM2E2NzFmYzA2YWUxZDllOGViYTc2NjAwMzcyMzE3Yzc1YWUwZWIzZQpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXByIDIgMTY6MTA6MzYgMjAwOSAtMDUwMAoKICAgIG1wYzgyNjA6IEZpbGwgaW4gYnJnJ3MgY2xvY2stZnJlcXVlbmN5IGluIGRldmljZSB0cmVlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGM3M2VkMjc0YTIxMTY5OTczOWQ4M2MyY2VmOTI4NTNkYzY3MTZlMTUKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEFwciAyIDE4OjIwOjQzIDIwMDkgLTA1MDAKCiAgICBNUEM4MjYwQURTOiBBZGQgbmZzYm9vdC9yYW1ib290IHRvIGRlZmF1bHQgZW52aXJvbm1lbnQuCgogICAgVGhpcyBicmluZ3MgaXQgaW4gbGluZSB3aXRoIG90aGVyIEZyZWVzY2FsZSBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYzIwM2VmNWRiMDQ3NmE4YzRmNmRkODZiMmU5ZTlkYjBlYTk3M2Y4NApBdXRob3I6IEFuZHJlYXMgSHViZXIgPGFuZHJlYXMuaHViZXJAa2V5bWlsZS5jb20+CkRhdGU6CVRodSBBcHIgMiAxNzoxNTozNCAyMDA5ICswMjAwCgogICAgVUJJL2NmaS1tdGQ6IEZpeCBtdGQgbmFtZSBmb3IgbXVsdGlwbGUgY2hpcHMKCiAgICBPbiBwbGF0Zm9ybXMgd2l0aCBtdWx0aXBsZSBOT1IgY2hpcHMsIGN1cnJlbnRseSBvbmx5IHRoZSBmaXJzdCBvbmUKICAgIGNhbiBiZSBzZWxlY3RlZCB1c2luZyB0aGUgInViaSBwYXJ0IiBjb21tYW5kLiBUaGlzIHBhdGNoIGZpeGVzIHRoaXMKICAgIHByb2JsZW0gYnkgdXNpbmcgZGlmZmVyZW50IG5hbWVzIGZvciB0aGUgTk9SICJtdGQgZGV2aWNlcyIuCgogICAgSXQgYWxzbyBjaGFuZ2VzIHRoZSBuYW1lIG9mIHRoZSBOT1IgTVREIGRldmljZSBmcm9tICJjZmktbXRkIiB0bwogICAgIm5vclgiIChYIGluZGV4aW5nIHRoZSBkZXZpY2UgbnVtZXIpIHRvIGJldHRlciBtYXRjaCB0aGUgbXRkcGFydHMKICAgIGRlZmF1bHRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgSHViZXIgPGFuZHJlYXMuaHViZXJAa2V5bWlsZS5jb20+Cgpjb21taXQgNmI2YmIwMmYyN2ZjYWJmYjM3ZWE3MTdmYjdlMjQzMjQ4ZTFlMmFjZgpBdXRob3I6IFBldGVyIEtvcnNnYWFyZCA8amFjbWV0QHN1bnNpdGUuZGs+CkRhdGU6CVR1ZSBNYXIgMzEgMTc6NTI6MTYgMjAwOSArMDIwMAoKICAgIHRvb2xzL3NldGxvY2FsdmVyc2lvbjogdXNlIGdpdCBzdm4gaW5zdGVhZCBvZiBnaXQtc3ZuCgogICAgVXNlIHRoZSBuZXcgImdpdCA8c3ViY21kPiIgc3ludGF4IGluc3RlYWQgb2YgdGhlIGRlcHJlY2F0ZWQKICAgICJnaXQtPHN1YmNtZD4iLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIEtvcnNnYWFyZCA8amFjbWV0QHN1bnNpdGUuZGs+Cgpjb21taXQgN2ZhOTZhOWE1NGViMGQ4N2Q3Mzg4OGVjMjU2NWNkYTc5MGJhMGRmZgpBdXRob3I6IE1pbmdrYWkgSHUgPE1pbmdrYWkuaHVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE1hciAzMSAxNDowOTo0MCAyMDA5ICswODAwCgogICAgZVNQSTogYWRkIHRoZSBlU1BJIHJlZ2lzdGVyIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgODY5ZjZiZjRkZWY1YTA1M2ZiZDFhZWNkOGIyZmMzNmYwNTE5NmMwYgpBdXRob3I6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KRGF0ZToJTW9uIE1hciAzMCAxNDo1NTo1MSAyMDA5ICswOTAwCgogICAgY21kX21tYzogYWRkIHN1cHBvcnQgZm9yIGRldmljZSBjb21tYW5kIGZvciBzZWxlY3RpbmcgbW1jIGRldmljZQoKICAgIFRoaXMgcGF0Y2ggaW1wcm92ZXMgZGV2aWNlIGNvbW1hbmQgZm9yIHNlbGVjdGluZyBtbWMgZGV2aWNlCgogICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgoKY29tbWl0IDlhYmM5ZWY4ZmJlMDc5YmY3NWE2MzRjZTY0YjdkY2RiN2IwZDhiZGMKQXV0aG9yOiBBbGFuIENhcnZhbGhvIGRlIEFzc2lzIDxhY2Fzc2lzQGdtYWlsLmNvbT4KRGF0ZToJU2F0IE1hciAyOCAxOTo1MDoxNiAyMDA5IC0wMzAwCgogICAgU21hbGwgZml4IHRvIG01MjgyZXZiCgogICAgVGhpcyBpcyBqdXN0IGEgc21hbGwgZml4IHRvIGdldCB1LWJvb3Qgb24gbTUyODJldmIuCgogICAgU2lnbmVkLW9mZi1ieTogQWxhbiBDYXJ2YWxobyBkZSBBc3NpcyA8YWNhc3Npc0BnbWFpbC5jb20+Cgpjb21taXQgZmViZDdlNDE3NGU1NDU3OWM5YWExNjVjODVjNTE5ZmU1Mjg4ZjlkMgpBdXRob3I6IEFydGVtIEJpdHl1dHNraXkgPEFydGVtLkJpdHl1dHNraXlAbm9raWEuY29tPgpEYXRlOglGcmkgTWFyIDI3IDEwOjIxOjE0IDIwMDkgKzAxMDAKCiAgICBVQklGUzogYWRkIFIvTyBjb21wYXRpYmlsaXR5CgogICAgTm93IFVCSUZTIGlzIHN1cHBvcnRlZCBieSB1LWJvb3QuIElmIHdlIGV2ZXIgZGVjaWRlIHRvIGNoYW5nZSB0aGUKICAgIG1lZGlhIGZvcm1hdCwgdGhlbiBwZW9wbGUgd2lsbCBoYXZlIHRvIHVwZ3JhZGUgdGhlaXIgdS1ib290cyB0bwogICAgbW91bnQgbmV3IGZvcm1hdCBpbWFnZXMuIEhvd2V2ZXIsIHZlcnkgb2Z0ZW4gaXQgaXMgcG9zc2libGUgdG8KICAgIHByZXNlcnZlIFIvTyBmb3J3YXJkLWNvbXBhdGliaWxpdHksIGV2ZW4gdGhvdWdoIHRoZSB3cml0ZQogICAgZm9yd2FyZC1jb21wYXRpYmlsaXR5IGlzIG5vdCBwcmVzZXJ2ZWQuCgogICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IHN1cGVyLWJsb2NrIGZpZWxkIHdoaWNoIHN0b3JlcyB0aGUKICAgIFIvTyBjb21wYXRpYmlsaXR5IHZlcnNpb24uCgogICAgU2lnbmVkLW9mZi1ieTogQXJ0ZW0gQml0eXV0c2tpeSA8QXJ0ZW0uQml0eXV0c2tpeUBub2tpYS5jb20+CiAgICBBY2tlZC1ieTogQWRyaWFuIEh1bnRlciA8QWRyaWFuLkh1bnRlckBub2tpYS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODUyZGJmZGQ1NmY2OGViNjdkMTM4YjMwNmE2NGU0ZGU1OGRhYmI5MQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIE1hciAyMyAyMjoyNzozNCAyMDA5IC0wNDAwCgogICAgbW9yZSBjb21tYW5kIHVzYWdlIGNsZWFudXAKCiAgICBGaXggdXAgYSBmZXcgZGFuZ2xpbmcgY29tbWFuZHMgbGlrZSBpbiAiQ29tbWFuZCB1c2FnZSBjbGVhbnVwIiBjb21taXQuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGI5M2IyNGJmNzZmOGE4MjIwYjIzNmRmM2E1ZjMwYjIyMDRlYjRlZGMKQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+CkRhdGU6CU1vbiBNYXIgMjMgMTI6MDY6MDcgMjAwOSArMDEwMAoKICAgIFNlcGFyYXRlIG10ZHBhcnRzIGNvbW1hbmQgZnJvbSBqZmZzMgoKICAgIE9uIFRodSwgTWFyIDE5LCAyMDA5IGF0IDAxOjMwOjM2UE0gKzAxMDAsIFN0ZWZhbiBSb2VzZSB3cm90ZToKICAgID4gQ3VycmVudGx5IHRoZSBtdGRwYXJ0cyBjb21tYW5kcyBhcmUgaW5jbHVkZWQgaW4gdGhlIGpmZnMyIGNvbW1hbmQgc3VwcG9ydC4KICAgID4gVGhpcyBkb2Vzbid0IG1ha2Ugc2Vuc2UgYW55bW9yZSBzaW5jZSBvdGhlciBjb21tYW5kcyAoZS5nLiBVQkkpIHVzZSB0aGlzCiAgICA+IGluZnJhc3RydWN0dXJlIGFzIHdlbGwgbm93LiBUaGlzIHBhdGNoIHNlcGFyYXRlcyB0aGUgbXRkcGFydHMgY29tbWFuZHMgZnJvbQogICAgPiB0aGUgamZmczIgY29tbWFuZHMgbWFraW5nIGl0IHBvc3NpYmxlIHRvIG9ubHkgc2VsZWN0IG10ZHBhcnRzIHdoZW4gbm8gSkZGUzIKICAgID4gc3VwcG9ydCBpcyBuZWVkZWQuCgogICAgLi4uIGFuZCB0byBtYWtlIGl0IHVzZWZ1bCBmb3IgTkFORCBjaGlwcyBhcyB3ZWxsLCB3ZSBzaG91bGQgYWxzbyByZW1vdmUgbm93CiAgICB1bnJlbGF0ZWQgQ09ORklHX0pGRlMyX05BTkQuIE5vdGUgdGhhdCBzdHJ1Y3QgcGFydF9pbmZvIGV0YyBpcyBpbgogICAgamZmczIvbG9hZF9rZXJuZWwuaCB3aGljaCBpcyBhIGJpdCBtaXNsZWFkaW5nIGZpbGVuYW1lIGZvciB0aGF0IHB1cnBvc2UsCiAgICBidXQgdGhhdCBjYW4gYmUgZml4ZWQgbGF0ZXIgKHRtKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiAgTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgoKY29tbWl0IGIxOTZjYTc1NTAzY2UzMDdjNTM1Yjg3YmY0N2Q1MWYwNWU3NTMwZGYKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVN1biBNYXIgMjIgMjI6MTg6MDEgMjAwOSAtMDQwMAoKICAgIHNtYzkxMTExX2VlcHJvbTogbW92ZSBib2FyZC1zcGVjaWZpYyBpbml0IGludG8gU01DOTExMTFfRUVQUk9NX0lOSVQoKQoKICAgIFJhdGhlciB0aGFuIHN0aWNraW5nIEJsYWNrZmluLXNwZWNpZmljIHN0dWZmIGludG8gdGhlIGVlcHJvbSBleGFtcGxlLCB1c2UKICAgIGFuIGluZGlyZWN0IG1hY3JvIHNvIHRoYXQgYW55IGJvYXJkIGNhbiBvdmVycmlkZSBpdCB3aXRoIHRoZWlyIG93biBtYWdpYwogICAgc2F1Y2UgaW4gdGhlaXIgYm9hcmQgY29uZmlnIGZpbGUuCgogICAgQWxzbyBmaXggc29tZSBzcHVyaW91cyBzZW1pLWNvbG9ucyBpbiBkZWZpbmVzIHdoaWxlIEknbSBhdCBpdCAuLi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBDQzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBmNWNmMmVmMmFkMmE4YmYzMjE3MTJhYjQ2MGVkODQ2MTIwMTYzZDc0CkF1dGhvcjogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgpEYXRlOglTYXQgTWFyIDIxIDA5OjM4OjQ2IDIwMDkgLTA0MDAKCiAgICBtcGM1Mnh4IHBoeTogaW5pdGlhbGl6ZSBvbmx5IHdoZW4gbmVlZGVkCgogICAgRG8gbm90IGluaXRpYWxpemUgcGh5IG9uIHN0YXJ0dXAsIGluc3RlYWQgaW5pdGlhbGl6ZSBpdAogICAgd2hlbiB3ZSBhY3R1YWxseSBuZWVkIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KCmNvbW1pdCAwM2JhYjAwOTE5NDgxOTZiOTU1ODI0ODY4NGMwNGY2MDk0M2NhNGI1CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJTW9uIE1hciAzMCAxNjo1MTo0MCAyMDA5ICswMjAwCgogICAgYXQ5MXNhbTkyNjNlazogZW5hYmxlIGh1c2ggYW5kIGF1dG8gY29tcGxldGUgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CiAgICBBY2tlZC1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KCmNvbW1pdCA0NzU4ZWJkZDUzNTcxZDRkMTgzYmU1YzJkYjhmMGVlNGVmMzY4OTE1CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIE1hciAyNyAyMzoyNjo0NCAyMDA5ICswMTAwCgogICAgYXQ5MTogbW92ZSBkYXRhZmxhc2ggc3BpIGRyaXZlciB0byBkcml2ZXJzL3NwaQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMmI3MTc4YWZjZTU5ZjcxZTk1ZGE2NTcyNzNmNDEzMjAxMjA5OGMxZgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBNYXIgMjcgMjM6MjY6NDQgMjAwOSArMDEwMAoKICAgIGF0OTE6IG1vdmUgdXNiIGRyaXZlciB0byBkcml2ZXJzL3VzYgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZjgyNTE4ZDdmNDQzZWJhYzVmODgyMTEwM2EzYzUyMWM5NjNhYTZlZQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBNYXIgMjcgMjM6MjY6NDMgMjAwOSArMDEwMAoKICAgIGF0OTFybTkyMDA6IFJlc2V0IHVwZGF0ZQoKICAgIFVwZGF0ZSB0aGUgcm05MjAwIHJlc2V0IHNlcXVlbmNlIHRvIHRyeSBleGVjdXRpbmcgYSBib2FyZC1zcGVjaWZpYyByZXNldAogICAgZnVuY3Rpb24gYW5kIG1vdmUgc3BlY2lmaWMgYm9hcmQgcmVzZXQgdG8gYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAzNTI0MDQ5Y2QwNTM3NDYyOThlNGNmYWIyNDQ5ODgyZTc1YzE0NmZjCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIE1hciAyNyAyMzoyNjo0MyAyMDA5ICswMTAwCgogICAgYXQ5MXJtOTIwMDogbW92ZSBzZXJpYWwgc2h1dGRvd24gY29kZSB0byBzZXJpYWwgZHJpdmVycwoKICAgIGludHJvZHVjZSBzZXJpYWxfZXhpdCBmb3IgdGhpcyBwdXJwb3NlLiBVc2UgaXQgb25seSB3aGVuIHRoZSBybTkyMDAKICAgIHNlcmlhbCBkcml2ZXIgaXMgYWN0aXZlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBiZWViZDg1MWNkYmM5ZGQwNzBiY2RmZWMxZmQ4ZjE3ZTNjYzkxYmMwCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIE1hciAyNyAyMzoyNjo0MyAyMDA5ICswMTAwCgogICAgYXQ5MXJtOTIwMDogbW92ZSBzZXJpYWwgZHJpdmVyIHRvIGRyaXZlcnMvc2VyaWFsCgogICAgYWRkIENPTkZJR19BVDkxUk05MjAwX1VTQVJUIHRvIGFjdGl2YXRlIHRoZSBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGNiODJhNTMyNjY5ZjZiMDIyMjVlYzM0MjllYTRkNDlmZjJiOTdkMGEKQXV0aG9yOiBVbGYgU2FtdWVsc3NvbiA8dWxmQGF0bWVsLmNvbT4KRGF0ZToJRnJpIE1hciAyNyAyMzoyNjo0MyAyMDA5ICswMTAwCgogICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBBVDkxUk05MjAwRUsgQm9hcmQuCgogICAgVGhlIEFUOTFSTTkyMDAtRUsgRXZhbHVhdGlvbiBCb2FyZCBzdXBwb3J0cyB0aGUgQVQ5MVJNOTIwMAogICAgQVJNOS1iYXNlZCAzMi1iaXQgUklTQyBtaWNyb2NvbnRyb2xsZXIgYW5kIGVuYWJsZXMgcmVhbC10aW1lIGNvZGUgZGV2ZWxvcG1lbnQKICAgIGFuZCBldmFsdWF0aW9uLgoKICAgIEhlcmUgaXMgdGhlIGNoaXAgcGFnZSBvbiBBdG1lbCB3ZWJzaXRlOgogICAgaHR0cDovL3d3dy5hdG1lbC5jb20vZHluL3Byb2R1Y3RzL3Rvb2xzX2NhcmQuYXNwP3Rvb2xfaWQ9MzUwNwoKICAgIHdpdGgKCS0gTk9SIChjZmkgZHJpdmVyKQoJLSBEYXRhRmxhc2gKCS0gVVNCIE9IQ0kKCS0gTmV0CgktIEkyQyAoaGFyZCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBVbGYgU2FtdWVsc3NvbiA8dWxmQGF0bWVsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYjljMGU0YzI5ZTNlYzEyNjY4YWM1MGU5NTRlN2M5YmE4ZjdhYTEwYQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBNYXIgMjcgMjM6MjY6NDIgMjAwOSArMDEwMAoKICAgIGFkZCBkYXRhZmxhc2ggbW1jIG11eCBtaXNzaW5nIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDJhMzI1Y2UzYzcwNWFiMmQ4Mjc2MGFmYzU0MWM1MTEzMjg0NzJkZjgKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglGcmkgTWFyIDI3IDIzOjI2OjQyIDIwMDkgKzAxMDAKCiAgICBhdDkxcm05MjAwZGs6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDkwYTkyYTcwOGQ1MTgwYTIwZDYwMGJhMGZjMjM1MmVjNzZkYzM4MjkKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglGcmkgTWFyIDI3IDIzOjI2OjQyIDIwMDkgKzAxMDAKCiAgICBhdDkxOiByZW5hbWUgREFUQUZMQVNIX01NQ19TRUxFQ1QgdG8gQ09ORklHX0RBVEFGTEFTSF9NTUNfU0VMRUNUCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA4NDNhMjY1NGJjZTc0MTkyZGUyYjVhNDM0NzRmZGMyN2E1NzJhYjQwCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIE1hciAyNyAyMzoyNjo0MiAyMDA5ICswMTAwCgogICAgYXQ5MXNhbTk6IGFkZCB3YXRjaGRvZyBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogTmljb2xhcyBGZXJyZSA8bmljb2xhcy5mZXJyZUBhdG1lbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGE0NzQ5MmFjNjA2NTdkZDlkNTljNzEzYWEwNDkzMTllYTZlYWJkNTIKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglGcmkgTWFyIDI3IDEzOjE0OjUyIDIwMDkgKzAxMDAKCiAgICBhdDkxc2FtOS9hdDkxY2FwOiBzcGkgaW5pdCBhZGQgaGFyZHdhcmUgY2hpcCBzZWxlY3Qgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNjY5MzJhYzM5MjljN2ExNDVhNmVmNjU3NGE5NmZkNzUzNTE1NDk1MQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBBcHIgNCAxOToxNTo0MCAyMDA5ICswMjAwCgogICAgbmV0c3RhcjogZml4IGNyYzMyLmMgZGVwZW5kYW5jeSBsb2NhdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNDJmOWViZmYyZjc1OGJlZjUyNDc4MGEwMGM3MTJlYjYzYTcyZDk5YgpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgQXByIDMgMTU6MjQ6NDAgMjAwOSAtMDUwMAoKICAgIE1QQzgyNjBBRFM6IERlZmluZSBDT05GSUdfSEFTX0VUSDAuCgogICAgVGhpcyBpcyByZXF1aXJlZCBzbyB0aGF0IHRoZSBNQUMgYWRkcmVzcyB3aWxsIGJlIHVwZGF0ZWQgaW4gdGhlIGRldmljZSB0cmVlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDg3MDFlY2VmZmRmNzdlMjkwOGQwYjU4YWRkMGRhYmMxNmVkZjYwODcKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEFwciAzIDE1OjI2OjQ1IDIwMDkgLTA1MDAKCiAgICBQUTJGQURTOiBFbmFibGUgUENJLgoKICAgIFBDSSBvbiBQUTJGQURTIGlzIHZlcnkgc2ltaWxhciB0byBQQ0kgb24gTVBDODI3MkFEUy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4Mzg2M2RmMDRiZDMwYmZlMjQzMGIwYzQzY2E5Zjc4NTk2ZDNmMGJjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IEFwciA0IDE2OjU3OjUwIDIwMDkgKzAyMDAKCiAgICBGaXggcXVvdGluZyBidWcgaW50cm9kdWNlZCBieSBjb21taXQgNzRkZTdhZWYKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGVjZjNmYjIyM2E1NmUzYzZhYTY5NmQ5NGQ2OTRlZWFjYTBmNDRkMzMKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgQXByIDQgMTY6MTQ6NTEgMjAwOSArMDIwMAoKICAgIEZpeCBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnaHRvbnMnCgogICAgSW5jbHVkZSA8bmV0aW5ldC9pbi5oPiBpbnN0ZWFkIG9mIDxsaW51eC9pbi5oPiB0byBnZXQgaHRvbnMoKQogICAgcHJvdG90cHllLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZTZhNjc4OWY0MWYwNTYwY2UyODAwODlmYmQzZjFiZDBmMGY2NDMwNgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVNhdCBBcHIgNCAxMDoyMTowMiAyMDA5IC0wNTAwCgogICAgZnNsX2xhdzogRml4IGJ1ZyBpbiBjYWxjdWxhdGlvbiBvZiBMQVcgc2l6aW5nCgogICAgSW4gc2V0X2Rkcl9sYXdzKCkgd2hlbiB3ZSBkZXRlcm1pbmVkIGhvdyBtdWNoIG9mIHRoZSBzaXplIHJlcXVlc3RlZAogICAgdG8gYmUgbWFwcGVkIHdhcyBjb3ZlcmVkIGJ5IHRoZSB0aGUgZmlyc3QgTEFXIHdlIG5lZWRlZCB0byByZWNhbGN1bGF0ZQogICAgdGhlIHNpemUgYmFzZWQgb24gd2hhdCB3YXMgYWN0dWFsbHkgbWFwcGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMzIwNDliNDA0OGZmOGU1OWJkNWJhNjE2MGQ2ZDUyMDZkMjgzYjJhMgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBBcHIgMiAxMzo1NzowNSAyMDA5IC0wNTAwCgogICAgZnNsX3BjaTogTW92ZSBwcm90b3R5cGVzIGludG8gZnNsX3BjaS5oIGFuZCByZW1vdmUgZXhwbGljaXQgZXh0ZXJucwoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYzg1MTQ2MjJlMjcxM2Q5YzQ3OTE5YWNmZTIzZmNlMzg2NzgyYWZlNwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBBcHIgMiAxMzoyMjo0OCAyMDA5IC0wNTAwCgogICAgZnNsX3BjaTogUmVuYW1lZCBpbW1hcF9mc2xfcGNpLmggdG8gZnNsX3BjaS5oCgogICAgUmVuYW1lIHRoZSBwY2kgaGVhZGVyIGZvciBGU0wgSFcgc28gd2UgY2FuIG1vdmUgc29tZSBwcm90b3R5cGVzCiAgICBpbiB0aGVyZSBhbmQgc3RvcCBkb2luZyBleHBsaWNpdCBleHRlcm5zCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBhZmNiY2UwN2U5MzIzYzBlOGFlYjc4M2JhN2NlNjEwNDg2MGZkN2E3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IEFwciA0IDE2OjEwOjQwIDIwMDkgKzAyMDAKCiAgICBGaXggYnVpbGRpbmcgb2YgZW52X2VtYmVkZGVkLm8KCiAgICBTaW5jZSBjb21taXQgYTcwNmJmYzcgY29tbW9uL2Vudl9lbWJlZGRlZC5vIGFuZCB0b29scy9lbnZjcmMgd2VyZQogICAgb25seSBidWlsdCB3aGVuIENPTkZJR19FTlZfSVNfRU1CRURERUQgd2FzIHNldCwgYnV0IHRoaXMgYnJlYWtzCiAgICBidWlsZGluZyBmb3IgbWFueSBib2FyZHMuCgogICAgV2UgYWx3YXlzIGhhdmUgdG8gYnVpbGQgdGhlc2UgZmlsZXMgd2hlbiBDT05GSUdfRU5WX0lTX0lOX0ZMQVNIIGlzCiAgICBzZXQuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBhMzFlMDkxYWQ3MDkxNTI3OGZiMTViNzlkNmFlNTNlYTJkNDRiMjUxCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IEFwciA0IDEyOjQ5OjExIDIwMDkgKzAyMDAKCiAgICByZW5hbWUgaW5jbHVkZS96bGliLmggdG8gaW5jbHVkZS91LWJvb3QvemxpYi5oCgogICAgU29tZSBzeXN0ZW1zIGhhdmUgemxpYi5oIGluc3RhbGxlZCBpbiAvdXNyL2luY2x1ZGUvLiBUaGlzIGlzbid0IHRoZQogICAgZGVzaXJlZCBmaWxlIGZvciB1LWJvb3QgY29kZSAtIHdlIHdhbnQgdGhlIG9uZSBpbiBpbmNsdWRlL3psaWIuaC4KICAgIFRoaXMgcmVuYW1lIHdpbGwgYXZvaWQgdGhlIGNvbmZsaWN0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYWU2NDRjMTc4ZjA5Nzg3NGE5MmE2ZDkzNGYzNjQ5ODVmYzdlMDc1YQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBBcHIgNCAxMjo0NjozMSAyMDA5ICswMjAwCgogICAgdG9vbHMvTWFrZWZpbGU6IGZpeCBpbWFnZS5jIGRlcGVuZGFuY3kgbG9jYXRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGIwNzRhNzA4MTEyNGQ3ZjA1ZmQxNjUxYTNiYzBiNTU3OWZkZmE0NzMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBBcHIgNCAwNzo0MjoyNSAyMDA5IC0wNDAwCgogICAgdG9vbHM6IGFkZCBuY2IgdG8gZ2l0aWdub3JlCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDQ1M2MwZDc1NTgyMTVjYmM4NjM2ZDk0YWYxNzI4ODZkODRlMGRiYmEKQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KRGF0ZToJRnJpIEFwciAzIDE2OjQ1OjQ2IDIwMDkgKzAyMDAKCiAgICBpbmNsdWRlL25zMTY1NTAuaDogVW5pZnkgc3RydWN0dXJlIGRlY2xhcmF0aW9uIGZvciByZWdpc3RlcnMKCiAgICBJbnN0ZWFkIG9mIHNwZWNpYWwgY2FzaW5nIHRoZSBkaWZmZXJlbnQgYWNjZXNzIHBhdHRlcm5zLCB1c2UgY29tbW9uCiAgICBjb2RlIHdpdGggbGlnaHQgbWFjcm9zIHNwcmlua2xlZCBpbiB0byBhY2NvbW9kYXRlIGZvciB0aGUgZGlmZmVyZW50CiAgICBsYXlvdXRzIG9mIHRoZSByZWdpc3RlciBzdHJ1Y3R1cmUuCgogICAgTm90ZSB0aGF0IHRoaXMgYWxzbyBjaGFuZ2VzIHRoZSB0eXBlcyBvZiB0aGUgcmVnaXN0ZXJzIGZvciB0aGUKICAgICJwb3NpdGl2ZWx5IHBhY2tlZCAoPjEpIiBjYXNlcy4gIEFzIHRoZSByZWdpc3RlcnMgdHJ1bHkgYXJlIHVuc2lnbmVkCiAgICBjaGFycywgdGhpcyBpcyBzdXJlbHkgdGhlIFJpZ2h0IFRoaW5nLCBidXQgaXQgaXMgYSBzZW1hbnRpYyBjaGFuZ2UuCiAgICBOb3RlIHRoYXQgZm9yIHRoaXMgY2FzZSBkZXBlbmRpbmcgb24gdGhlIGVuZGlhbm5lc3Mgb24gdGhlIGJ1cywgd2UgbWF5CiAgICBzZWUgYSBjaGFuZ2Ugb2YgYmVoYXZpb3VyLgoKICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgoKY29tbWl0IDBhMTQ1Y2U2ZTcwNzVhYTBmNDg2OWQ2ZjYxNDlhNWZmMjA1ZDk1ZGYKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglGcmkgTWFyIDEzIDE4OjU0OjUyIDIwMDkgLTA1MDAKCiAgICBEZWxldGUgbm93IHVudXNlZCB0b29scy9NYWtlZmlsZS53aW4zMgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgMmY4ZDM5NmI5MzAyZWRkY2Q4ZDU1MjY0OGUxMDFhNDZiN2E4MGFjZApBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBNYXIgMTMgMTg6NTQ6NTEgMjAwOSAtMDUwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBidWlsZGluZyBuYXRpdmUgd2luMzIgdG9vbHMKCiAgICBBZGQgc3VwcG9ydCBmb3IgY29tcGlsaW5nIHRoZSBob3N0IHRvb2xzIGluIHRoZSB0b29scyBkaXJlY3RvcnkgdXNpbmcKICAgIHRoZSBNaW5HVyB0b29sY2hhaW4uICBUaGlzIHByb2R1Y2VzIGV4ZWN1dGFibGVzIHdoaWNoIGNhbiBiZSB1c2VkIG9uCiAgICBzdGFuZGFyZCBXaW5kb3dzIGNvbXB1dGVycyB3aXRob3V0IHJlcXVpcmluZyBjeWd3aW4uCgogICAgT25lIG11c3Qgc3BlY2lmeSB0aGUgTWluR1cgY29tcGlsZXIgYW5kIHN0cmlwIHV0aWxpdGllcyBhcyBpZiB0aGV5CiAgICB3ZXJlIHRoZSBob3N0IHRvb2xjaGFpbiBpbiBvcmRlciB0byBidWlsZCB3aW4zMiBleGVjdXRhYmxlcywgZWc6CgogICAgbWFrZSBIT1NUQ0M9aTU4Ni1taW5ndzMybXN2Yy1nY2MgSE9TVFNUUklQPWk1ODYtbWluZ3czMm1zdmMtc3RyaXAgdG9vbHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IGU1MGFiZjY2MmVmYmY0Y2UwZTczMTA2MmM4ZDNjOGVjNTQ3NjNhZTIKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglGcmkgTWFyIDEzIDE4OjU0OjUwIDIwMDkgLTA1MDAKCiAgICB0b29scy9NYWtlZmlsZTogU2ltcGxpZnkgSE9TVF9DRkxBR1MvSE9TVF9MREZMQUdTIGdlbmVyYXRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IGIwZDRkNzIxOWE0ODA2ZTQ2YWZmYzk2YmQxZjY1Mzk3MTk0YTZlNzIKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglGcmkgTWFyIDEzIDE4OjU0OjQ5IDIwMDkgLTA1MDAKCiAgICB0b29scy9NYWtlZmlsZTogQ3JlYXRlIGdlbmVyaWMgYnVpbGQgcnVsZXMKCiAgICBDcmVhdGUgYSBmZXcgZ2VuZXJpYyBidWlsZCBydWxlcyB0byByZXBsYWNlIHRoZSBjdXJyZW50IG1ldGhvZCB3aGljaCBoYXMKICAgIDEgYnVpbGQgdGFyZ2V0IGZvciBlYWNoIGZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDI3MzE3NGRkYmNjZTIxNWM0MmY2YzMwNzQ3MGNkNTU4MGEzZjcyYmYKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglGcmkgTWFyIDEzIDE4OjU0OjQ4IDIwMDkgLTA1MDAKCiAgICB0b29scy9NYWtlZmlsZTogVXNlIGF1dG8tZ2VuZXJhdGVkIG9iamVjdCBmaWxlIGRlcGVuZGVuY2llcwoKICAgIEZpbGVzIGluIHRoZSBTUkNTIHZhcmlhYmxlIGhhdmUgdGhlaXIgZGVwZW5kZW5jaWVzIGF1dG9tYXRpY2FsbHkKICAgIGdlbmVyYXRlZCBzbyByZW1vdmUgZHVwbGljYXRlIGV4cGxpY2l0IGRlcGVuZGVuY2llcwoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgZmI4YjMzYzFlNmQ2MjFlYTMzNDdhNzVhZDNhNDJhMzg2YjQ0ZTU4OQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBNYXIgMTMgMTg6NTQ6NDcgMjAwOSAtMDUwMAoKICAgIHRvb2xzL01ha2VmaWxlOiBSZW1vdmUgc3ltbGlua3MgZm9yIHJlbWFpbmluZyBzb3VyY2UgZmlsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IGVlZDA3MzMxNWI2NDQ3ZWNlYWRmNzQ2OGE0YzJiNzU3NDQyYzdjNmYKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglGcmkgTWFyIDEzIDE4OjU0OjQ2IDIwMDkgLTA1MDAKCiAgICB0b29scy9NYWtlZmlsZTogRHluYW1pY2FsbHkgZ2VuZXJhdGUgbGliZmR0IG9iamVjdCBkZXBlbmRlbmNpZXMKCiAgICBBZGQgdGhlIGxpYmZkdCBmaWxlcyB0byB0aGUgU1JDUyB2YXJpYWJsZSBzbyB0aGF0IHRoZXkgaGF2ZSB0aGVpcgogICAgZGVwZW5kZW5jaWVzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCBjMDE3MDE3NTM5M2I5NDU2MGZhN2E1ZGE2ZGQzMTM3N2RmNWY0YTcyCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJRnJpIE1hciAxMyAxODo1NDo0NSAyMDA5IC0wNTAwCgogICAgdG9vbHMvTWFrZWZpbGU6IFJlbW92ZSBzeW1saW5rcyBmb3IgZmR0IHRhcmdldHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDQ1ZDZiZGZmNjg4NzdlYTIxNGZmMzNjYzFjODlhMjljNzZlOTZmNTEKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglGcmkgTWFyIDEzIDE4OjU0OjQ0IDIwMDkgLTA1MDAKCiAgICB0b29scy9NYWtlZmlsZTogQWRkIGxpYmZkdC8gdG8gdGhlIGluY2x1ZGUgc2VhcmNoIHBhdGgKCiAgICBUaGlzIGNoYW5nZSBtYWtlcyB0aGUgcHJvY2VzcyBvZiBzeW1saW5raW5nIGxpYmZkdF9pbnRlcm5hbC5oCiAgICB1bm5lY2Vzc2FyeQoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgZmJhMGUzYTA4MTRmOWJmNDhjMzJhNGM4YTc5ODdjMzZhZTk2NjUxYgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBNYXIgMTMgMTg6NTQ6NDMgMjAwOSAtMDUwMAoKICAgIHRvb2xzOiBSZW1vdmUgdW5lY2Vzc2FyeSBzeW1saW5raW5nIG9mIHpsaWIuaAoKICAgIGNyYzMyLmMgdXNlcyB0aGUgemxpYi5oIGhlYWRlciBpbiBpbmNsdWRlL3UtYm9vdC96bGliLmguICBUaGUgc3ltbGluawogICAgd2FzIHByZXZpb3VzbHkgbmVjZXNzYXJ5IHRvIGdpdmUgVS1Cb290J3MgdmVyc2lvbiBvZiB6bGliLmggcHJlY2VkZW5jZQogICAgb3ZlciB0aGUgaG9zdCBjb21wdXRlcidzIHZlcnNpb24gb2YgemxpYi5oLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgNDBiOGQ5MDlhY2UwNmY2ZjQ5NGRlZTA4ZmZhNjRhODI0OTNlNzJlOQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBNYXIgMTMgMTg6NTQ6NDIgMjAwOSAtMDUwMAoKICAgIHRvb2xzL01ha2VmaWxlOiBBZGQgdG9vbHMvIHRvIHRoZSBpbmNsdWRlIHNlYXJjaCBwYXRoCgogICAgVGhpcyBjaGFuZ2UgbWFrZXMgdGhlIHByb2Nlc3Mgb2Ygc3ltbGlua2luZyBta2ltYWdlLmggYW5kIGZkdF9ob3N0LmgKICAgIHVubmVjZXNzYXJ5CgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCAxY2QzMDBkZTVlMTljOWU4MzgzZWUyZWIyYjZiZDNiOGI5Mzc4Yzc4CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJRnJpIE1hciAxMyAxODo1NDo0MSAyMDA5IC0wNTAwCgogICAgdG9vbHMvTWFrZWZpbGU6IENvbXBpbGUgbmNiIHdoZW4gQ09ORklHX05FVENPTlNPTEUKCiAgICBBbHNvIGNvbmRpdGlvbmFsbHkgYWRkIG5jYi5vIHRvIE9CSl9GSUxFUyBsaXN0CgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCAxMjNjNDhhMjFjZTA4YjRhMzNmMzZlOTZjYzc1ZjkyMzI0ZTc2MWQ3CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJRnJpIE1hciAxMyAxODo1NDo0MCAyMDA5IC0wNTAwCgogICAgdG9vbHMvTWFrZWZpbGU6IE1ha2UgZ2VuX2V0aF9hZGRyIGRlcGVuZGVudCB1cG9uIENPTkZJR19DTURfTkVUCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCA0ZDkzYTBhODA3YjhjYTAyODliYTVkYTAwYzY0NmNkMmQ1NGFmMTIwCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJRnJpIE1hciAxMyAxODo1NDozOSAyMDA5IC0wNTAwCgogICAgdG9vbHMvTWFrZWZpbGU6IE1ha2UgZW52Y3JjIGRlcGVuZGVudCB1cG9uIENPTkZJR19FTlZfSVNfRU1CRURERUQKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IGNkMjZhMzFhMjNmOWE1OGJhNTI4NzBmOGZmYjU3ZDc3ZDFiYWVlMjAKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglGcmkgTWFyIDEzIDE4OjU0OjM4IDIwMDkgLTA1MDAKCiAgICB0b29scy9NYWtlZmlsZTogTWFrZSBpbmNhLXN3YXAtYnl0ZXMgZGVwZW5kZW50IG9uIENPTkZJR19JTkNBX0lQCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCA3Y2Q1Y2JjMzQ2OTljY2MxNWQwMjc3ZjQ4Mzc1Y2FkOTI4ZDA0ZmFmCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJRnJpIE1hciAxMyAxODo1NDozNyAyMDA5IC0wNTAwCgogICAgdG9vbHMvTWFrZWZpbGU6IE1ha2UgdWJzaGExIGRlcGVuZGVudCB1cG9uIENPTkZJR19TSEExX0NIRUNLX1VCX0lNRwoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgZWViYTg2MTc5MDhlMzNmN2U3ZGIzYjE1ODhjMDRjYTY1Yjg1Njc5MwpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBNYXIgMTMgMTg6NTQ6MzYgMjAwOSAtMDUwMAoKICAgIHRvb2xzL01ha2VmaWxlOiBNYWtlIGltZzJzcmVjIGRlcGVuZGVudCB1cG9uIENPTkZJR19DTURfTE9BRFMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDMzNWZmZTdlMGUwYTMwZTkwY2U0MDljMzI3OTAxNmE1ODIxNTdkOGUKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglGcmkgTWFyIDEzIDE4OjU0OjM1IDIwMDkgLTA1MDAKCiAgICB0b29scy9NYWtlZmlsZTogQnVpbGQgYm1wX2xvZ28gb25seSB3aGVuIExDRCBvciBWSURFTyBsb2dvcyBhcmUgZW5hYmxlZAoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgZWUzNTg0YTU5NzAyMzBlZTk2YWFlMTk1MDVhZDMyMjY3MzRlZTRmZgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBNYXIgMTMgMTg6NTQ6MzQgMjAwOSAtMDUwMAoKICAgIHRvb2xzL01ha2VmaWxlOiBTcGxpdCB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgaW50byBtdWx0aXBsZSBsaW5lcwoKICAgIFNwbGl0IHZhcmlhYmxlIGRlY2xhcmF0aW9ucyBpbnRvIG11bHRpcGxlIGxpbmVzIGFuZCB1c2UgdGhlIHN0YW5kYXJkCiAgICBWQVIteSBjb252ZW50aW9uLiAgQWxzbyBtb3ZlIG9iamVjdCBhbmQgYmluYXJ5IHZhcmlhYmxlIGRlY2xhcmF0aW9ucyB0bwogICAgYWZ0ZXIgY29uZmlnLm1rIGhhcyBiZWVuIGluY2x1ZGVkIHRvIGFsbG93IGZvciB0aGVzZSBsaXN0cyB0byB1dGlsaXplCiAgICB0aGUgQ09ORklHX1hYWCB2YXJpYWJsZXMuCgogICAgVGhlc2UgY2hhbmdlcyBsYXkgdGhlIGdyb3VuZHdvcmsgZm9yIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG9mIGZpbGVzCiAgICBpbiB0aGUgdG9vbHMgZGlyZWN0b3J5LgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgMjFkMjhlOTVlZDg3NGFiMWVkOTc4N2Y5MzlkOGE1M2U5OWQzMGRkYgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBNYXIgMTMgMTg6NTQ6MzMgMjAwOSAtMDUwMAoKICAgIHRvb2xzL01ha2VmaWxlOiBSZW1vdmUgaW5hcHByb3ByaWF0ZSBkb3VibGUtdGFicwoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgNjUyZjRiYTA3NjY4OWZkMGFjZDQ0NzU2MWE3NzdiMWM0NDBhNGI1NwpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBNYXIgMTMgMTg6NTQ6MzIgMjAwOSAtMDUwMAoKICAgIHRvb2xzL01ha2VmaWxlOiBSZW1vdmUgSE9TVEFSQ0ggSE9TVE9TIGRlZmluZXMKCiAgICBUaGUgdmFsdWVzIG9mIEhPU1RBUkNIIGFuZCBIT1NUT1Mgd2hpY2ggYXJlIGV4cG9ydGVkIGZyb20gdGhlIHRvcC1sZXZlbAogICAgTWFrZWZpbGUgc2hvdWxkIGJlIHVzZWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDJlZWI0ZTk1ZmJmYWZlNTQ2NDVmYWU3ZWMwYjI1OTQxMDFmMDU3M2IKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglGcmkgTWFyIDEzIDE4OjU0OjMxIDIwMDkgLTA1MDAKCiAgICBnZW5fZXRoX2FkZHI6IFVzZSBQT1NJWCByYW5kKCkgYW5kIHNyYW5kKCkKCiAgICBSZXBsYWNlIHJhbmRvbSgpL3NyYW5kb20oKSB1c2Ugd2l0aCByYW5kKCkvc3JhbmQoKSB0byBzdXBwb3J0CiAgICBjb21waWxhdGlvbiB3aXRoIHRoZSBtaW5ndyB0b29sY2hhaW4uICBUaGUgcmFuZCgpL3NyYW5kKCkgZnVuY3Rpb25zIGFyZQogICAgZ2VuZXJhbGx5IG1vcmUgY29tbW9uIGFuZCBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gdGhlIG9yaWdpbmFsCiAgICByYW5kb20oKS9zcmFuZG9tKCkgY2FsbHMuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCAyNGQyYWU1ZTlkZWJlNGI3NTE1MWE1NTI1MTAzMWExNDQ3N2ZhODc1CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJRnJpIE1hciAxMyAxODo1NDoyOCAyMDA5IC0wNTAwCgogICAgZWxmLmg6IFVzZSBzdGRpbnQuaCB0byBwcm92aWRlIHN0YW5kYXJkIHR5cGVkZWZzIGZvciBXSU4zMgoKICAgIFRoZSBvcmlnaW5hbCBjb2RlIHByb3ZpZGVkIGFuIGluY29tcGxldGUgc2V0IG9mIHR5cGVkZWZzIGZvciBXSU4zMgogICAgY29tcGlsZXMgYW5kIHJlcGxpY2F0ZWQgdGhlIHN0YW5kYXJkIHR5cGVkZWZzIHRoYXQgYXJlIGFscmVhZHkKICAgIHByb3ZpZGVkIGJ5IHN0ZGludC5oCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCBhNzA2YmZjN2QwZTJkMTkzNWM1NjcwMDQ1Mjg4ZTZjZDFmZmRmYWJjCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJRnJpIE1hciAxMyAxODo1NDoyNyAyMDA5IC0wNTAwCgogICAgY29tbW9uL01ha2VmaWxlOiBDb25kaXRpb25hbGx5IGNvbXBpbGUgZW52X2VtYmVkZGVkLm8KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDJiNDhmN2Q1ZjYyODM1Zjg3Mjc4ZWZiNDk4Mzk3YjZhZTllMmQxMTcKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglGcmkgTWFyIDEzIDE4OjU0OjI2IDIwMDkgLTA1MDAKCiAgICBNYWtlZmlsZTogQWRkIHJlbW92YWwgb2YgKi5leGUgZmlsZXMgdG8gY2xlYW4gdGFyZ2V0CgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCBkMGQ2MTQ0ZTBlNGEwM2E2ODMxMWI3ODFmM2RkZTM4ZGM5MzE2YjgyCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJRnJpIE1hciAxMyAxODo1NDoyNSAyMDA5IC0wNTAwCgogICAgTWFrZWZpbGU6IE1ha2UgYXV0b2NvbmYubWsgYSBkZXBlbmRlbmN5IG9mIHRoZSBkZXBlbmQgdGFyZ2V0CgogICAgVGhlIG9yaWdpbmFsIGNvZGUgZGlkIG5vdCBnZW5lcmF0ZSBhdXRvY29uZi5tayB1bnRpbCBhZnRlciBzb21lIHRhcmdldHMKICAgIGRlcGVuZGVuY2llcyBoYWQgYWxyZWFkeSBiZWVuIGNhbGN1bGF0ZWQsIGZvciBleGFtcGxlIHRoZSBkaXJlY3RvcmllcyBpbgogICAgdGhlIFNVQkRJUlMgdmFyaWFibGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDc1ZWI4MmVjN2NhY2IxOGQwNTlkNzAxYjM1Njc3YjkzZDJiYjc1OTYKQXV0aG9yOiB1bnNpayBLaW0gPGRvbmFyaTc1QGdtYWlsLmNvbT4KRGF0ZToJV2VkIEZlYiAyNSAxMTozMToyNCAyMDA5ICswOTAwCgogICAgbWZsYXNoOiBJbml0aWFsIG1mbGFzaCBzdXBwb3J0CgogICAgTWZsYXNoIGlzIGZ1c2lvbiBtZW1vcnkgZGV2aWNlIG1haW5seSB0YXJnZXRlZCBjb25zdW1lciBlbGV0cm9uaWMgYW5kCiAgICBtb2JpbGUgcGhvbmUuCiAgICBJbnRlcm5hbGx5LCBpdCBoYXZlIG5hbmQgZmxhc2ggYW5kIG90aGVyIGhhcmR3YXJlIGxvZ2ljcyBhbmQgc3VwcG9ydHMKICAgIHNvbWUgZGlmZmVyZW50IG9wZXJhdGlvbiAoQVRBLCBJTywgWElQKSBtb2Rlcy4KCiAgICBJTyBtb2RlIGlzIGN1c3RvbSBtb2RlIGZvciB0aGUgaG9zdCB0aGF0IGRvZXNuJ3QgaGF2ZSBJREUgaW50ZXJmYWNlLgogICAgKE1hbnkgbW9iaWxlIHRhcmdldGVkIFNvQyBkb2Vzbid0IGhhdmUgSURFIGJ1cykKCiAgICBUaGlzIGRyaXZlciBzdXBwb3J0IG1mbGFzaCBJTyBtb2RlLgoKICAgIEZvbGxvd2luZ3MgYXJlIGJyaWVmIGRlc2NyaXB0aW9ucyBhYm91dCBJTyBtb2RlLgoKICAgIDEuIElPIG1vZGUgYmFzZWQgb24gQVRBIHByb3RvY29sIGFuZCB1c2VzIHNvbWUgY3VzdG9tIGNvbW1hbmQuIChyZWFkCiAgICAgICBjb25maXJtLCB3cml0ZSBjb25maXJtKQogICAgMi4gSU8gbW9kZSB1c2VzIFNSQU0gYnVzIGludGVyZmFjZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiB1bnNpayBLaW0gPGRvbmFyaTc1QGdtYWlsLmNvbT4KCmNvbW1pdCAyMDA3NzllM2UyYTlhZWRhNzAzMGIxNzFhOGMzOWQ3Nzk3MDE5OTE3CkF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+CkRhdGU6CUZyaSBBcHIgMyAxMTo1MzowMSAyMDA5ICswMjAwCgogICAgUmVuYW1lIGNvbW1vbiBuczE2NTUwIGNvbnN0YW50cyB3aXRoIFVBUlRfIHByZWZpeCB0byBwcmV2ZW50IGNvbmZsaWN0cwoKICAgIEZpeCBwcm9ibGVtcyBpbnRyb2R1Y2VkIGluIGNvbW1pdAogICAgN2I1NjExY2RkMTJjYTBjYzMzZjk5NGYwZDRhNDQ1NDc4OGZjMzEyNCBbaW5rYTR4MDogQWRkIGhhcmR3YXJlCiAgICBkaWFnbm9zaXMgZnVuY3Rpb25zIGZvciBpbmthNHgwXSB3aGljaCByZWRlZmluZWQgTVNSX1JJIHdoaWNoIGlzCiAgICBhbHJlYWR5IHVzZWQgb24gUG93ZXJQQyBzeXN0ZW1zLgoKICAgIEFsc28gZWxpbWluYXRlIHJlZHVuZGFudCBkZWZpbml0aW9ucyBpbiBwczJtdWx0LmguCU1vcmUgY2xlYW51cCB3aWxsCiAgICBiZSBuZWVkZWQgZm9yIG90aGVyIHJlZHVuZGFudCBvY2N1cnJlbmNlcyB0aG91Z2guCgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgOTkwNjdiMDhmNGEwY2UyMGZmMzM3YTM1MjExMjM5ZjMzNGQ4ZjQ1MQpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXByIDEgMTU6MzM6MjQgMjAwOSAtMDUwMAoKICAgIE5vaXNpbHkgZGlzYWJsZSB0aGUgbGVnYWN5IE5BTkQgc3Vic3lzdGVtLgoKICAgIExlZ2FjeSBOQU5EIGlzIG1hcmtlZCBmb3IgZmVhdHVyZSByZW1vdmFsIGFmdGVyIEFwcmlsIDIwMDkgKGkuZS4gdGhpcwogICAgdXBjb21pbmcgcmVsZWFzZSkuCVRoZXJlIGFyZSBzdGlsbCBzZXZlcmFsIGJvYXJkcyB0aGF0IHJlZmVyZW5jZSBpdAogICAgKHRob3VnaCBtYW55IGRvIHNvIG9ubHkgZm9yIGRpc2stb24tY2hpcCBzdXBwb3J0IHdoaWNoIGhhcyBiZWVuIHNpbGVudGx5CiAgICBkaXNhYmxlZCBmb3IgYSB3aGlsZSBub3cpLglUaGVzZSBib2FyZHMgd2lsbCBub3cgZmFpbCB0byBidWlsZAogICAgd2l0aCAjZXJyb3IsIHRob3VnaCB0aGUgY29kZSBpcyBzdGlsbCB0aGVyZSBpZiB0aGUgdXNlciByZW1vdmVzICNlcnJvci4KCiAgICBUaGUgcGxhbiBpcyB0byByZW1vdmUgdGhlIGNvZGUgb3V0cmlnaHQgaW4gdGhlIG5leHQgcmVsZWFzZSwgYWxvbmcgd2l0aAogICAgYW55IGJvYXJkIGNvZGUgdGhhdCByZWZlcnMgdG8gaXQgKHN1Y2ggYXMgYm9hcmQvZXNkL2NvbW1vbi9hdXRvX3VwZGF0ZS5jKS4KCiAgICBBbHNvLCByZW1vdmUgdGhlIGxlZ2FjeSBOQU5EIEFQSSBkZXNjcmlwdGlvbiBmcm9tIFJFQURNRS5uYW5kLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDY5YmNhYmI1MTY4NmZkZDEzM2NiMTg0OGMwZDNiMGE0ZmM2Y2E1Y2YKQXV0aG9yOiBhcGdtb29ydGh5IDxtb29ydGh5LmFwZ0BzYW1zdW5nLmNvbT4KRGF0ZToJRnJpIE1hciAyNyAxNDo0NToyMyAyMDA5ICswNTMwCgogICAgRml4IE9uZU5BTkQgaXBsIHRvIHJlYWQgQ09ORklHX1NZU19NT05JVE9SX0xFTgoKICAgIEN1cnJlbnRseSBPbmVOQU5EIGluaXRpYWwgcHJvZ3JhbSBsb2FkZXIgKGlwbCkgcmVhZHMgb25seSBibG9jayAwIGllIDEyOEtCLgogICAgSG93ZXZlciwgdS1ib290IGltYWdlIGZvciBhcG9sbG9uIGJvYXJkIGlzIDE5NUtCIG1ha2luZyB0aGUgYm9hcmQKICAgIHVuYm9vdGFibGUgd2l0aCBPbmVOQU5ELgoKICAgIEZpeCBpcGwgdG8gcmVhZCBDT05GSUdfU1lTX01PTklUT1JfTEVOLgogICAgQ09ORklHX1NZU19NT05JVE9SX0xFTiBtYWNybyBob2xkcyB0aGUgVS1Cb290IGltYWdlIHNpemUuCgogICAgU2lnbmVkLW9mZi1ieTogUm9oaXQgSGFnYXJndW5kZ2kgPGgucm9oaXRAc2Ftc3VuZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBHYW5naGV5YW1vb3J0aHkgICA8bW9vcnRoeS5hcGdAc2Ftc3VuZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3NGRlN2FlZmQ3OTY5MGJhZThjZjVhNTEyMGY1OTYyZDQ0NGJlMDg5CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEFwciAxIDIzOjM0OjEyIDIwMDkgKzAyMDAKCiAgICBBZGQgInNvdXJjZSIgY29tbWFuZDsgcHJlcGFyZSByZW1vdmFsIG9mICJhdXRvc2NyIiBjb21tYW5kCgogICAgQWNjb3JkaW5nIHRvIHRoZSBkb2MvZmVhdHVyZS1yZW1vdmFsLXNjaGVkdWxlLnR4dCwgdGhlICJhdXRvc2NyIgogICAgY29tbWFuZCB3aWxsIGJlIHJlcGxhY2VkIGJ5IHRoZSAic291cmNlIiBjb21tYW5kIGluIGFwcHJveGltYXRlbHkgNgogICAgbW9udGhzIGZyb20gbm93LgoKICAgIFRoaXMgcGF0Y2ggcHJlcGFyZXMgdGhpcyBjaGFuZ2UgYW5kIHN0YXJ0cyBhIDYgbW9udGggdHJhbnNpdGlvbgogICAgcGVyaW9kIGFzIGZvbGxvd3M6CgogICAgLSBUaGUgbmV3ICJzb3VyY2UiIGNvbW1hbmQgaGFzIGJlZW4gYWRkZWQsIHdoaWNoIGltcGxlbWVudHMgZXhhY3RseQogICAgICB0aGUgc2FtZSBmdW5jdGlvbmxhaXR5IGFzIHRoZSBvbGQgImF1dG9zY3IiIGNvbW1hbmQgYmVmb3JlCiAgICAtIFRoZSBvbGQgImF1dG9zY3IiIGNvbW1hbmQgbmFtZSBpcyBrZXB0IGFzIGFuIGFsaWFzIGZvciBjb21wYXRpYmlsaXR5CiAgICAtIENvbW1hbmQgc2VxdWVuY2VzLCBzY3JpcHQgZmlsZXMgYXRjLiBoYXZlIGJlZW4gYWRhcHRlZCB0byB1c2UgdGhlCiAgICAgIG5ldyAic291cmNlIiBjb21tYW5kCiAgICAtIFJlbGF0ZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzICgiYXV0b3NjcmlwdCIsICJhdXRvc2NyaXB0X3VuYW1lIikKICAgICAgaGF2ZSAqbm90KiBiZWVuIGFkYXB0ZWQgeWV0OyB0aGVzZSB3aWxsIGJlIHJlbmFtZWQgcmVzcC4gcmVtb3ZlZCBpbgogICAgICBhIHNlcGFyYXRlIHBhdGNoIHdoZW4gdGhlIHN1cHBvcnQgZm9yIHRoZSAiYXV0b3NjciIgY29tbWFuZCBnZXQncwogICAgICBmaW5hbGx5IGRyb3BwZWQuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA3ODIzN2RmNTUyNDgwMzRhMmQ3YzJkYWVhOTkyYjlkYmU3Y2E4ZTk2CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IEFwciAyIDE3OjMxOjA5IDIwMDkgKzAyMDAKCiAgICBBZGQgIkdQTCBjbGVhbnVwIiB0YXNrIHRvIGZlYXR1cmUtcmVtb3ZhbC1zY2hlZHVsZS50eHQKCiAgICBBbm5vdW5jZSByZW1vdmFsIG9mIGFsbCBub24tR1BMIG9yIEdQTC1pbmNvbXBhdGlibGUgZmlsZXMKICAgIGFmdGVyIEF1Z3VzdCAyMDA5LgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZDk1OTZmZmJkYzc5Y2VhMjg1MDEwYjY3ZGQyMGE0NjE4MzAzZjYyNApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEFwciAyIDEyOjUxOjI4IDIwMDkgLTA0MDAKCiAgICBzZjogc3RtaWNybzogZG9udCBzZW5kIDQgYnl0ZXMgd2hlbiByZWFkaW5nIHN0YXR1cyByZWdpc3RlcgoKICAgIEkgY2FuJ3QgZmluZCBhbnl3aGVyZSBpbiB0aGUgZGF0YXNoZWV0IHRoYXQgc2F5cyB0aGUgc3RhdHVzIHJlZ2lzdGVyIG5lZWRzCiAgICAzIGR1bW15IGJ5dGVzIHNlbnQgdG8gaXQgYmVmb3JlIGJlaW5nIGFibGUgdG8gcmVhZCBiYWNrIHRoZSBmaXJzdCByZWFsCiAgICByZXN1bHQuICBUZXN0cyBvbiBhIEJsYWNrZmluIGJvYXJkIHNob3cgdGhhdCBhZnRlciB3cml0aW5nIHRoZSBvcGNvZGUsIHRoZQogICAgc3RhdHVzIHJlZ2lzdGVyIHN0YXJ0cyBjb21pbmcgYmFjayBpbW1lZGlhdGVseS4gIFNvIG9ubHkgd3JpdGUgb3V0IHRoZQogICAgcmVhZCBzdGF0dXMgcmVnaXN0ZXIgb3Bjb2RlIGJlZm9yZSBwb2xsaW5nIHRoZSByZXN1bHQuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgQ0M6IEphc29uIE1jTXVsbGFuIDxtY211bGxhbkBuZXRhcHAuY29tPgogICAgQ0M6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMWFiZTM2NWZmY2ZjMjljMDYxZThmZDhiNDU1NTFiZTVhZDE0MjhkZApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEFwciAyIDA4OjExOjMxIDIwMDkgLTA0MDAKCiAgICBzZjogc2V0IGNvbW1vbiB0aW1lb3V0cyBpbiBzZWNvbmRzLCBub3QgbWlsbGlzZWNvbmRzCgogICAgU2luY2UgdGltZW91dHMgYXJlIG9ubHkgaGl0IHdoZW4gdGhlcmUgaXMgYSBwcm9ibGVtIGluIHRoZSBzeXN0ZW0sIHdlCiAgICBkb24ndCB3YW50IHRvIHByZW1hdHVyZWx5IHRpbWVvdXQgb24gYSBmdW5jdGlvbmluZyBzZXR1cC4gIFRodXMgaGF2aW5nCiAgICBsb3cgdGltZW91dHMgKGluIG1pbGxpc2Vjb25kcykgZG9lc24ndCBnYWluIHVzIGFueXRoaW5nIGluIHRoZSBwcm9kdWN0aW9uCiAgICBjYXNlLCBidXQgcmF0aGVyIGluY3JlYXNlcyBsaWtlbHkgaG9vZCBvZiBjYXVzaW5nIHByb2JsZW1zIHdoZXJlIG5vbmUKICAgIG90aGVyd2lzZSBleGlzdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBDQzogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDJhNmNlMTExNWIzY2JlNzQ2OTY1Y2ZhMDA1OGNlNjQ1YjZjMWFkYTEKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBBcHIgMiAwNjo1MTo0OSAyMDA5IC0wNDAwCgogICAgc2Y6IHN0bWljcm86IHVzZSBjb21tb24gcGFnZSB0aW1lb3V0IGRlZmluZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIENDOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgMGRjZGJiMTcyYzJmZGY2MGM1YzU3ODk4MDMwOGIzMTJmZDU2NDk2ZgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IE1hciAyOCAwNjo0MTowOSAyMDA5IC0wNDAwCgogICAgc2Y6IGFsd2F5cyByZWFkIDUgYnl0ZXMgZm9yIHRoZSBpZGNvZGUKCiAgICBTb21lIFNQSSBmbGFzaCBkcml2ZXJzIGxpa2UgdG8gaGF2ZSBleHRlbmRlZCBpZCBpbmZvcm1hdGlvbiBhdmFpbGFibGUKICAgIChsaWtlIHRoZSBzcGFuc2lvbiBmbGFzaCksIHNvIHJhdGhlciB0aGFuIG1ha2luZyBpdCByZS1pc3N1ZSB0aGUgSUQgY21kCiAgICB0byBnZXQgYXQgdGhlIGxhc3QgMiBieXRlcywgaGF2ZSB0aGUgY29tbW9uIGNvZGUgcmVhZCA1IGJ5dGVzIHJhdGhlciB0aGFuCiAgICBqdXN0IDMuICBUaGlzIGFsc28gbWF0Y2hlcyB0aGUgTGludXggYmVoYXZpb3Igd2hlcmUgaXQgYWx3YXlzIHJlYWRzIDUgaWQKICAgIGJ5dGVzIGZyb20gYWxsIGZsYXNoZXMuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgQWNrZWQtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KICAgIENDOiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTcyNmJhNGFiYWExNmNkNmMzODVhZDM1MGQ0MDNmOThhOGVhY2Y1MgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJRnJpIE1hciAyNyAxNjozNDoyMSAyMDA5IC0wNDAwCgogICAgc2Y6IHN0bWljcm86IGRyb3AgcmVkdW5kYW50IGlkIHJlYWQKCiAgICBUaGUgY29tbW9uIFNQSSBmbGFzaCBjb2RlIHJlYWRzIHRoZSBpZGNvZGUgYW5kIHBhc3NlcyBpdCBkb3duIHRvIHRoZSBTUEkKICAgIGZsYXNoIGRyaXZlciwgc28gdGhlcmUgaXMgbm8gbmVlZCB0byByZWFkIGl0IGFnYWluIG91cnNlbHZlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBBY2tlZC1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgogICAgQ0M6IEphc29uIE1jTXVsbGFuIDxtY211bGxhbkBuZXRhcHAuY29tPgogICAgQ0M6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMWM1ODc0Mzc0ZTA5MWI0YmI2MjkxN2M1MTk4NjFmNzY4MmZlMDY2ZQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJRnJpIE1hciAyNyAxOToyNzo1OCAyMDA5IC0wNDAwCgogICAgc2Y6IGFkZCBkcml2ZXIgZm9yIFNTVCBmbGFzaGVzCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgQWNrZWQtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBmNzczYTFiYmRiOGYzYmYxZGRhYjI4NzRmMzZmMDQzYzRmOGYwNDRkCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gTWFyIDIzIDIzOjAzOjU4IDIwMDkgLTA0MDAKCiAgICBzZjogZHJvcCBERUJVRyBkZWZpbmVzCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgQWNrZWQtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCA2Yjg1MGE5ZmE4YTIxNmYzNjkyZGEyNTExY2IxYTZjMTY0MDliMWFmCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIEphbiA0IDA3OjQ0OjA3IDIwMDkgKzAxMDAKCiAgICBtdGQ6IGFkZCBzb21lIGF0NDUgc3BpIGZsYXNoIHN1cHBvcnQKCiAgICAgLSBBVDQ1REIzMjFECiAgICAgLSBBVDQ1REIxNjFECiAgICAgLSBBVDQ1REIwODFECiAgICAgLSBBVDQ1REIwNDFECiAgICAgLSBBVDQ1REIwMjFECiAgICAgLSBBVDQ1REIwMTFECgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA2ODA1ZTRiZjgzZTZmNDQ0Zjc0MTExMDEyMjg3NjZjOGE3YWVjNWY3CkF1dGhvcjogTWluZ2thaSBIdSA8TWluZ2thaS5odUBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgTWFyIDMxIDE0OjA5OjQxIDIwMDkgKzA4MDAKCiAgICBtdGQ6IFNQSSBGbGFzaDogU3VwcG9ydCB0aGUgU3BhbnNpb24gRmxhc2gKCiAgICBBZGQgTVREIFNQSSBGbGFzaCBzdXBwb3J0IGZvciBTMjVGTDAwOEEsIFMyNUZMMDE2QSwKICAgIFMyNUZMMDMyQSwgUzI1RkwwNjRBLCBTMjVGTDEyOFAuCgogICAgU2lnbmVkLW9mZi1ieTogTWluZ2thaSBIdSA8TWluZ2thaS5odUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDQwNTg3NzAxOTI0YWEwYWZjODZiMzg0MDQyMWI0Y2M2ZGU0MmM3NDgKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBNYXIgMzAgMjA6NTY6NDUgMjAwOSAtMDQwMAoKICAgIEJsYWNrZmluOiBmb3JjZSBhbGwgYm9hcmRzIHRvIEhaIG9mIDEwMDAKCiAgICBTaW5jZSB0aGUgQmxhY2tmaW4gdGltZXIgY29kZSByZXF1aXJlcyBIWiB0byBiZSAxMDAwLCBiYXJmIG9uIGFueSBib2FyZAogICAgdGhhdCB0cmllcyB0byB1c2UgYSBkaWZmZXJlbnQgdmFsdWUuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGY0MDMyZDJlZWM5ZDcxYTU5YzZjNzI0NjcxZTU3N2Y2N2E3NjgzOWIKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CUZyaSBNYXIgMjcgMjE6MDc6NDUgMjAwOSAtMDQwMAoKICAgIEJsYWNrZmluOiBiZjUzMy1zdGFtcDogZHJvcCBvbGQgc3BpIGZsYXNoIGRyaXZlcgoKICAgIE5vdyB0aGF0IHRoZSBjb21tb24gU1BJIGZsYXNoIGNvZGUgc3VwcG9ydHMgYWxsIHRoZSBmbGFzaGVzLCB3ZSBjYW4gc3RvcAogICAgdXNpbmcgdGhlIG9sZCBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGJjNzJmNTBhNjU5ZDBkMWI1NTE4MTdlMTkxMGI5YjJiZTFjN2U0OTYKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBNYXIgMjYgMTU6NDI6MTIgMjAwOSAtMDQwMAoKICAgIEJsYWNrZmluOiBhZGQgQkY1MzgvQkY1MzkgU1BJIHBvcnRtdXggaGFuZGxpbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNDZhYzM1MmYwZjk0MDZhNWY5YWExNTdhYzYyODY3ZmI0NjUwZGZkMwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIE1hciAyMyAyMjozNjoxMCAyMDA5IC0wNDAwCgogICAgQmxhY2tmaW46IGRvIG5vdCBkZWxheSBvbiBvdXRwdXQgYnl0ZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZGJjNmFiOWY3NWJkMGMxM2QzZjQyNjkyZTk0NjNmOGFiNjVmYzM4MgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIE1hciAyMyAyMjoxNzoyNyAyMDA5IC0wNDAwCgogICAgQmxhY2tmaW46IGRyb3AgbmV3bGluZSBmcm9tIE9UUCBoZWxwCgogICAgTG9va3MgbGlrZSBJIGFjY2lkZW50YWxseSBhZGRlZCBhIG5ld2xpbmUgdG8gdGhlIE9UUCBoZWxwIHdoZW4gbWVyZ2luZyBhbmQKICAgIG9sZGVyIGNoYW5nZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZDNjMzhkOTZiOTkxZDY0MWEzM2Y3NzQ4MTMwZGFlMDA4NTYzY2RjOQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU3VuIE1hciAyMiAyMzo0MzozMSAyMDA5IC0wNDAwCgogICAgQmxhY2tmaW46IGNvbnZlcnQgYmZpbl9zZGggdG8gbGVnYWN5IG1tYwoKICAgIFRoZSBCbGFja2ZpbiBTREggY29udHJvbGxlciBpcyBzdGlsbCB1c2luZyB0aGUgbGVnYWN5IGZyYW1ld29yaywgc28gdXBkYXRlCiAgICB0aGUgZHJpdmVyIHRvIHVzZSB0aGUgcmVuYW1lZCBmdW5jdGlvbnMuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGQyNDhjZmIyZDk0MGI3NDJmNmJmZGJhOWI4MzJhM2RmOTZkYTMxMDEKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVN1biBGZWIgMjIgMTY6MzA6MzggMjAwOSAtMDUwMAoKICAgIEJsYWNrZmluOiBiZjUzNy1zdGFtcDogc3BsaXQgQ0YvSURFIGNvZGUgb3V0IGludG8gZGVkaWNhdGVkIGNmLWlkZS5jCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGFkOTA3MzIxMWNhOWU2MjE2MmEzOTg1MWUwODJiOGQwN2E2NjJmYjYKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CUZyaSBGZWIgMTMgMTc6MTA6NTggMjAwOSAtMDUwMAoKICAgIEJsYWNrZmluOiBmaXggY3Jhc2ggd2hlbiBib290aW5nIGZyb20gZXh0ZXJuYWwgbWVtb3J5CgogICAgV2hlbiB0ZXN0aW5nIGEgdS1ib290IGJpbmFyeSB0aGF0IGhhc24ndCBiZWVuIGJvb3RlZCBmcm9tIHRoZSBib290cm9tLCB3ZQogICAgaGF2ZSB0byBtYWtlIHN1cmUgdGhlIGJvb3RzdHJ1Y3Qgc3RydWN0dXJlIGhhcyBzYW5lIHN0b3JhZ2Ugc3BhY2UuCUlmIHdlCiAgICBkb24ndCwgdGhlIGluaXRjb2RlIHdpbGwgY3Jhc2ggd2hlbiBpdCB0cmllcyB0byBkZXJlZmVyZW5jZSBhbiBpbnZhbGlkCiAgICBwb2ludGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA4NGE5ZGRhMzI0YzNmYWE1NmJlMTQ0NDlkNzUxOWI5OTNkOTM5N2E5CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gT2N0IDEyIDIxOjMyOjUyIDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogYmY1MThmLWV6YnJkOiBuZXcgYm9hcmQgcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAwYzMxZGRmN2I3MGY3N2RlZGU0MmRjODJlY2FiNzc1M2E4MTlhY2FhCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gT2N0IDEyIDIxOjMwOjQ4IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogYmY1MjYtZXpicmQ6IG5ldyBib2FyZCBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDVjNDVmN2NhYzJmNzRlMmMxNGFhNmIwMjhjZDk2OTY1MWNjOWFjOGUKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVN1biBPY3QgMTIgMjE6MjU6MzMgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBiZjUzOGYtZXpraXQ6IG5ldyBib2FyZCBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGQ5YTVkMTEzYjkzNTgzYzk4NDcxMTEyN2FiODUwM2UxMzZlZDFlNGEKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVN1biBPY3QgMTIgMjA6NTk6MTIgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBiZjUyNy1lemtpdDogbmV3IGJvYXJkIHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNzZkMjE4MDNkZGQ3ZGM0YmNiODE3MzllYTJkM2NkNjc5ZTA1MmY0NgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU3VuIE9jdCAxMiAwNTowNTo0MiAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGJmNTQ4LWV6a2l0OiBuZXcgYm9hcmQgcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA2N2I4OWM3OWU3MmZlODZiMGVhMDE5OTQyNWQ4ODA2MzBiZWI5NWQ4CkF1dGhvcjogTGF1cmVudCBHcmVnb2lyZSA8bGF1cmVudC5ncmVnb2lyZUB0b210b20uY29tPgpEYXRlOglUdWUgTWFyIDMgMTQ6MjM6NTkgMjAwOSArMDEwMAoKICAgIGxpYmZkdDogRml4IEMrKyBjb21waWxlLXRpbWUgY2FzdCBlcnJvciBvbiBnbnUgNC4yLjEKCiAgICBBbGxvdyB0aGUgaW5jbHVzaW9uIG9mIGxpYmZkdC5oIGluIEMrKyBzb3VyY2UuCgogICAgU2lnbmVkLW9mZi1ieTogTGF1cmVudCBHcmVnb2lyZSA8bGF1cmVudC5ncmVnb2lyZUB0b210b20uY29tPgogICAgQWNrZWQtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgoKY29tbWl0IDEzZDkzZjM4ZTg2ODE4NzM5MzE3YjAyMDZkNTk3MjY1Y2Y5ZTY3NWUKQXV0aG9yOiBFbWlsIE1lZHZlIDxFbWlsaWFuLk1lZHZlQEZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBGZWIgMjMgMTA6NDM6MzYgMjAwOSAtMDYwMAoKICAgIEZpeCBhIHBvc3NpYmxlIG92ZXJmbG93IGNhc2UgZGV0ZWN0ZWQgYnkgZ2NjIDQuMy4yCgogICAgLi4uL2R0Yy9saWJmZHQvZmR0X3N3LmM6IEluIGZ1bmN0aW9uICdmZHRfZW5kX25vZGUnOgogICAgLi4uL2R0Yy9saWJmZHQvZmR0X3N3LmM6ODE6IGVycm9yOiBhc3N1bWluZyBzaWduZWQgb3ZlcmZsb3cgZG9lcyBub3Qgb2NjdXIgd2hlbiBhc3N1bWluZyB0aGF0IChYICsgYykgPCBYIGlzIGFsd2F5cyBmYWxzZQoKICAgIFNpZ25lZC1vZmYtYnk6IEVtaWwgTWVkdmUgPEVtaWxpYW4uTWVkdmVARnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhMjJkOWNmYmI1YmNmYjNkYzZmZmQ2NGQzOTFiNTY4ZThhMGNlMzgzCkF1dGhvcjogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+CkRhdGU6CUZyaSBGZWIgNiAxNDowMzoyNCAyMDA5ICsxMTAwCgogICAgbGliZmR0OiBSZXdvcmsvY2xlYW51cCBmZHRfbmV4dF90YWcoKQoKICAgIEN1cnJlbnRseSwgY2FsbGVycyBvZiBmZHRfbmV4dF90YWcoKSBtdXN0IHVzdWFsbHkgZm9sbG93IHRoZSBjYWxsIHdpdGgKICAgIHNvbWUgc29ydCBvZiBjYWxsIHRvIGZkdF9vZmZzZXRfcHRyKCkgdG8gdmVyaWZ5IHRoYXQgdGhlIGJsb2IgaXNuJ3QKICAgIHRydW5jYXRlZCBpbiB0aGUgbWlkZGxlIG9mIHRoZSB0YWcgZGF0YSB0aGV5J3JlIGdvaW5nIHRvIHByb2Nlc3MuCiAgICBUaGlzIGlzIGEgYml0IHNpbGx5LCBzaW5jZSBmZHRfbmV4dF90YWcoKSBnZW5lcmFsbHkgaGFzIHRvIGNhbGwKICAgIGZkdF9vZmZzZXRfcHRyKCkgb24gYXQgbGVhc3Qgc29tZSBvZiB0aGUgZGF0YSBmb2xsb3dpbmcgdGhlIHRhZyBmb3IKICAgIGl0cyBvd24gb3BlcmF0aW9uLgoKICAgIFRoaXMgcGF0Y2ggYWx0ZXJzIGZkdF9uZXh0X3RhZygpIHRvIGFsd2F5cyB1c2UgZmR0X29mZnNldF9wdHIoKSB0bwogICAgdmVyaWZ5IHRoZSBkYXRhIGJldHdlZW4gaXRzIHN0YXJ0aW5nIG9mZnNldCBhbmQgdGhlIG9mZnNldCBpdCByZXR1cm5zCiAgICBpbiBuZXh0b2Zmc2V0LiAgVGhpcyBzaW1wbGlmaWVzIGZkdF9nZXRfcHJvcGVydHkoKSB3aGljaCBubyBsb25nZXIgaGFzCiAgICB0byB2ZXJpZnkgaXRzZWxmIHRoYXQgdGhlIHByb3BlcnR5IGRhdGEgaXMgYWxsIHByZXNlbnQuCgogICAgQXQgdGhlIHNhbWUgdGltZSwgSSBuZWF0ZW4gYW5kIGNsYXJpZnkgdGhlIGVycm9yIGhhbmRsaW5nIGZvcgogICAgZmR0X25leHRfdGFnKCkuICBQcmV2aW91c2x5LCBmZHRfbmV4dF90YWcoKSBjb3VsZCByZXR1cm4gLTEgaW5zdGVhZCBvZgogICAgYSB0YWcgdmFsdWUgaW4gc29tZSBjaXJjdW1zdGFuY2VzIC0gd2hpY2ggYWxtb3N0IG5vbmUgb2YgdGhlIGNhbGxlcnMKICAgIGNoZWNrZWQgZm9yLiAgQWxzbywgZmR0X25leHRfdGFnKCkgY291bGQgcmV0dXJuIEZEVF9FTkQgZWl0aGVyIGJlY2F1c2UKICAgIGl0IGVuY291bnRlcmVkIGFuIEZEVF9FTkQgdGFnLCBvciBiZWNhdXNlIGl0IHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUKICAgIHN0cnVjdHVyZSBibG9jayAtIG5vIHdheSB3YXMgcHJvdmlkZWQgdG8gdGVsbCBiZXR3ZWVuIHRoZXNlIGNhc2VzLgoKICAgIFdpdGggdGhpcyBwYXRjaCwgZmR0X25leHRfdGFnKCkgYWx3YXlzIHJldHVybnMgRkRUX0VORCB3aXRoIGEgbmVnYXRpdmUKICAgIHZhbHVlIGluIG5leHRvZmZzZXQgZm9yIGFuIGVycm9yLiAgVGhpcyBtZWFucyB0aGUgc2V2ZXJhbCBwbGFjZXMgd2hpY2gKICAgIGxvb3AgbG9va2luZyBmb3IgRkRUX0VORCB3aWxsIHN0aWxsIHdvcmsgY29ycmVjdGx5IC0gdGhleSBvbmx5IG5lZWQgdG8KICAgIGNoZWNrIGZvciBlcnJvcnMgYXQgdGhlIGVuZC4gIFRoZSBlcnJvcnMgd2hpY2ggZmR0X25leHRfdGFnKCkgY2FuCiAgICByZXBvcnQgYXJlOgoJLSAtRkRUX0VSUl9UUlVOQ0FURUQgaWYgaXQgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzdHJ1Y3R1cmUKCSAgIGJsb2NrIGluc3RlYWQgb2YgZmluZGluZyBhIHRhZy4KCgktIC1GRFRfQkFEU1RSVUNUVVJFIGlmIGEgYmFkIHRhZyB3YXMgZW5jb3VudGVyZWQsIG9yIGlmIHRoZQoJICAgICAgIHRhZyBkYXRhIGNvdWxkbid0IGJlIHZlcmlmaWVkIHdpdGggZmR0X29mZnNldF9wdHIoKS4KCiAgICBUaGlzIHBhdGNoIGFsc28gdXBkYXRlcyB0aGUgY2FsbGVycyBvZiBmZHRfbmV4dF90YWcoKSwgd2hlcmUKICAgIGFwcHJvcHJpYXRlLCB0byBtYWtlIHVzZSBvZiB0aGUgbmV3IGVycm9yIHJlcG9ydGluZy4KCiAgICBGaW5hbGx5LCB0aGUgcHJvdG90eXBlIGZvciB0aGUgbG9uZyBnb25lIF9mZHRfbmV4dF90YWcoKSBpcyByZW1vdmVkCiAgICBmcm9tIGxpYmZkdF9pbnRlcm5hbC5oLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgoKY29tbWl0IDJjMGI4NDNlNzEwYWExZTJkYTI1YzI1OTJlNmRiZTVkMGIwYWI3ZGEKQXV0aG9yOiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KRGF0ZToJRnJpIEZlYiA2IDE0OjAxOjU2IDIwMDkgKzExMDAKCiAgICBsaWJmZHQ6IFJld29yayBmZHRfbmV4dF9ub2RlKCkKCiAgICBDdXJyZW50bHkgZmR0X25leHRfbm9kZSgpIHdpbGwgZmluZCB0aGUgbmV4dCBub2RlIGluIHRoZSBibG9iCiAgICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgaXMgYWJvdmUsIGJlbG93IG9yIGF0IHRoZSBzYW1lIGxldmVsIGluIHRoZQogICAgdHJlZSBhcyB0aGUgc3RhcnRpbmcgbm9kZSAtIHRoZSBkZXB0aCBwYXJhbWV0ZXIgaXMgdXBkYXRlZCB0byBpbmRpY2F0ZQogICAgd2hpY2ggaXMgdGhlIGNhc2UuCVdoZW4gYSBkZXB0aCBwYXJhbWV0ZXIgaXMgc3VwcGxpZWQsIHRoaXMgcGF0Y2gKICAgIG1ha2VzIGl0IGluc3RlYWQgdGVybWluYXRlIGltbWVkaWF0ZWx5IHdoZW4gaXQgZmluZHMgdGhlIEVORF9OT0RFIHRhZwogICAgZm9yIGEgbm9kZSBhdCBkZXB0aCAwLiAgSW4gdGhpcyBjYXNlIGl0IHJldHVybnMgdGhlIG9mZnNldCBpbW1lZGlhdGVseQogICAgcGFzdCB0aGUgRU5EX05PREUgdGFnLgoKICAgIFRoaXMgaGFzIGEgY291cGxlIG9mIGFkdmFudGFnZXMuICBGaXJzdCwgdGhpcyBzbGlnaHRseSBzaW1wbGlmaWVzCiAgICBmZHRfc3Vibm9kZV9vZmZzZXQoKSwgd2hpY2ggbm8gbG9uZ2VyIG5lZWRzIHRvIGV4cGxpY2l0bHkgY2hlY2sgdGhhdAogICAgZmR0X25leHRfbm9kZSgpJ3MgaXRlcmF0aW9uIGhhc24ndCBsZWZ0IHRoZSBzdGFydGluZyBub2RlLglTZWNvbmQsCiAgICB0aGlzIGFsbG93cyBmZHRfbmV4dF9ub2RlKCkgdG8gYmUgdXNlZCB0byBpbXBsZW1lbnQKICAgIF9mZHRfbm9kZV9lbmRfb2Zmc2V0KCkgY29uc2lkZXJhYmx5IHNpbXBsaWZ5aW5nIHRoZSBsYXR0ZXIgZnVuY3Rpb24uCgogICAgVGhlIG90aGVyIHVzZXJzIG9mIGZkdF9uZXh0X25vZGUoKSBlaXRoZXIgZG9uJ3QgbmVlZCB0byBpdGVyYXRlIG91dCBvZgogICAgdGhlIHN0YXJ0aW5nIG5vZGUsIG9yIGRvbid0IHBhc3MgYSBkZXB0aCBwYXJhbWV0ZXIgYXQgYWxsLglBbnkKICAgIGNhbGxlcnMgdGhhdCByZWFsbHkgbmVlZCB0byBpdGVyYXRlIG91dCBvZiB0aGUgc3RhcnRpbmcgbm9kZSwgYnV0IGtlZXAKICAgIHRyYWNraW5nIGRlcHRoIGNhbiBkbyBzbyBieSBiaWFzaW5nIHRoZSBpbml0aWFsIGRlcHRoIHZhbHVlLgoKICAgIFRoaXMgaXMgYSBzZW1hbnRpYyBjaGFuZ2UsIGJ1dCBJIHRoaW5rIGl0J3MgdmVyeSB1bmxpa2VseSB0byBicmVhayBhbnkKICAgIGV4aXN0aW5nIGxpYnJhcnkgdXNlcnMuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+Cgpjb21taXQgYzEyMzA5ODAzNWJlOGJhZTM4NTliYmZiZDA2ODYxZjE5N2MwNzYzMQpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgTWFyIDMxIDE3OjQ5OjM2IDIwMDkgLTA1MDAKCiAgICBtcGM4M3h4OiBTZXQgZ3VhcmRlZCBiaXQgb24gQkFUIHRoYXQgY292ZXJzIHRoZSBlbmQgb2YgdGhlIGFkZHJlc3Mgc3BhY2UKCiAgICBUaGUgbXBjODMxM2VyZGIgYm9hcmQgY3VycmVudGx5IHNldHMgREJBVDYgdG8gY292ZXIgYWxsIG9mIHRoZSBmaW5hbCAyNTZNaUIgb2YKICAgIGFkZHJlc3Mgc3BhY2U7IGhvd2V2ZXIsIG5vdCBhbGwgb2YgdGhpcyBzcGFjZSBpcyBjb3ZlcmVkIGJ5IGEgZGV2aWNlLiAgSW4KICAgIHBhcnRpY3VsYXIsIGZsYXNoIHNpdHMgYXQgMHhmZTAwMDAwMC0weGZlN2ZmZmZmLCBhbmQgbm90aGluZyBpcyBtYXBwZWQKICAgIGF0IHRoZSBmYXIgZW5kIG9mIHRoZSBhZGRyZXNzIHNwYWNlLgoKICAgIEluIHpsaWIsIHRoZXJlIGlzIGEgbG9vcCB0aGF0IHJlZmVyZW5jZXMgcFstMV0gaWYgcCBpcyBub24tTlVMTC4gIFVuZGVyCiAgICBzb21lIGNpcmN1bXN0YW5jZXMsIHRoaXMgbGVhZHMgdG8gdGhlIENQVSBzcGVjdWxhdGl2ZWx5IGxvYWRpbmcgZnJvbQogICAgMHhmZmZmZmZmOCBpZiBwIGlzIE5VTEwuICBUaGlzIGxlYWRzIHRvIGEgbWFjaGluZSBjaGVjay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCiAgICBjb250aW51YXRpb24gdG8gdGhlIHJlbWFpbmluZyBtcGM4M3h4IGJvYXJkcyB0aGF0IHN1ZmZlciBmcm9tIHRoZSBzYW1lIHByb2JsZW0uCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjMmViOGJlN2Y3NjBhMmVmZTMwYTQ5NWJmYjEwODU3ODM4ZGNmM2ZhCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIE1hciAzMCAxNDoyODowNSAyMDA5IC0wNTAwCgogICAgcnRjOiByZW1vdmUgYnJva2VuIHJ0Y19yZWFkIGFuZCBydGNfd3JpdGUgZGVjbGFyYXRpb25zCgogICAgY29tbWl0IDA0ZTExY2YzICJydGM6IGFkZCBzdXBwb3J0IGZvciA0NTQzIFJUQyAobWFudWZhY3R1cmVkIGJ5IGUuZy4KICAgIEVQU09OKSIgaW50cm9kdWNlcyB0aGUgZm9sbG93aW5nIGJ1aWxkIGVycm9yIG9uIGJvYXJkcyBjb25maWd1cmluZyBlLmcsCiAgICB0aGUgZHMxMzc0IHJ0YzoKCiAgICBDb25maWd1cmluZyBmb3IgTVBDODM3WEVNRFMgYm9hcmQuLi4KICAgIGRzMTM3NC5jOjEwMzogZXJyb3I6IHN0YXRpYyBkZWNsYXJhdGlvbiBvZiAncnRjX3JlYWQnIGZvbGxvd3Mgbm9uLXN0YXRpYyBkZWNsYXJhdGlvbgogICAgL2hvbWUvcjFhYWhhL2dpdC91LWJvb3QvaW5jbHVkZS9ydGMuaDo2NDogZXJyb3I6IHByZXZpb3VzIGRlY2xhcmF0aW9uIG9mICdydGNfcmVhZCcgd2FzIGhlcmUKICAgIGRzMTM3NC5jOjEwNDogZXJyb3I6IGNvbmZsaWN0aW5nIHR5cGVzIGZvciAncnRjX3dyaXRlJwogICAgL2hvbWUvcjFhYWhhL2dpdC91LWJvb3QvaW5jbHVkZS9ydGMuaDo2NTogZXJyb3I6IHByZXZpb3VzIGRlY2xhcmF0aW9uIG9mICdydGNfd3JpdGUnIHdhcyBoZXJlCgogICAgdGhpcyByZXZlcnRzIHRoZSBlcnJvbmVvdXMgY2h1bmsuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KICAgIENDOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KICAgIENDOiBBbmRyZWFzIFBmZWZmZXJsZSA8YXBAZGVueC5kZT4KCmNvbW1pdCBmYzM5YzJmZDUxZTY0NzA3ZGU0ZDYxZWQ0OTQ3OWViZWEyODQ3ZTFiCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIE1hciAzMSAxNzo1ODoxMyAyMDA5IC0wNTAwCgogICAgODV4eC84Nnh4OiBFbnN1cmUgTVAgYm9vdCBwYWdlIGlzIG5vdCB1c2VkCgogICAgV2UgaGFkIGEgYnVnIG9uIDg2eHggaW4gd2hpY2ggdGhlIGJvb3QgcGFnZSB1c2VkIHRvIGJyaW5nIHVwIHNlY29uZGFyeQogICAgY29yZXMgd2FzIGJlaW5nIG92ZXJ3cml0dGVuIGFuZCB1c2VkIGZvciB0aGUgbWFsbG9jIHJlZ2lvbiBpbiB1LWJvb3QuCgogICAgV2UgbmVlZCB0byByZXNlcnZlIHRoZSByZWdpb24gb2YgbWVtb3J5IHRoYXQgdGhlIGJvb3QgcGFnZSBpcyBnb2luZyB0bwogICAgYmUgcHV0IGF0IHNvIG5vdGhpbmcgdXNlcyBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgQWNrZWQtYnk6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBjODQwZDI2Yzc1MjE0MWI5NGJiYzI0YWM3NDhkZGQ0NTc1MmE5NTVhCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIE1hciAzMSAyMzoxMTowNSAyMDA5IC0wNTAwCgogICAgODV4eDogSW50cm9kdWNlIGRldGVybWluZV9tcF9ib290cGcoKSBoZWxwZXIuCgogICAgTWF0Y2ggZGV0ZXJtaW5lX21wX2Jvb3RwZygpIHRoYXQgd2FzIGFkZGVkIGZvciA4Nnh4LiAgV2UgbmVlZCB0aGlzIHRvCiAgICBhZGRyZXNzIGEgYnVnIGludHJvZHVjZWQgaW4gdjIwMDkuMDMgd2l0aCA4Nnh4IE1QIGJvb3RpbmcuCVdlIGhhdmUgdG8KICAgIG1ha2Ugc3VyZSB0byByZXNlcnZlIHRoZSByZWdpb24gb2YgbWVtb3J5IHVzZWQgZm9yIHRoZSBNUCBib290cGcoKSBzbwogICAgb3RoZXIgdS1ib290IGNvZGUgZG9lc24ndCB1c2UgaXQuCgogICAgQWxzbyBhZGRlZCBhIGNvbW1lbnQgYWJvdXQgaG93IGNwdV9yZXNldCgpIGlzIGRlYWxpbmcgdy9hbiBlcnJhdGEgb24KICAgIGVhcmx5IDg1eHggTVAgSFcuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA3NjQ5YTU5MGI1M2VlNTQ4ZjQxNDI4YmYyMDc4MGY3NGNlOWZjMDk5CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIE1hciAzMSAyMzowMjozOCAyMDA5IC0wNTAwCgogICAgODZ4eDogQ2xlYW51cCBNUCBzdXBwb3J0CgogICAgKiBVc2UgQ09ORklHX01QIGluc3RlYWQgb2YgQ09ORklHX05VTV9DUFVTIHRvIG1hdGNoIDg1eHgKICAgICogSW50cm9kdWNlIGRldGVybWluZV9tcF9ib290cGcoKSBoZWxwZXIuICBXZSdsbCBuZWVkIHRoaXMgdG8gYWRkcmVzcyBhCiAgICAgIGJ1ZyBpbnRyb2R1Y2VkIGluIHYyMDA5LjAzIHdpdGggODZ4eCBNUCBib290aW5nLglXZSBoYXZlIHRvIG1ha2Ugc3VyZQogICAgICB0byByZXNlcnZlIHRoZSByZWdpb24gb2YgbWVtb3J5IHVzZWQgZm9yIHRoZSBNUCBib290cGcoKSBzbyBvdGhlcgogICAgICB1LWJvb3QgY29kZSBkb2Vzbid0IHVzZSBpdC4KICAgICogQWRkZWQgZHVtbXkgdmVyc2lvbnMgb2YgY3B1X3Jlc2V0KCksIGNwdV9zdGF0dXMoKSAmIGNwdV9yZWxlYXNlKCkgdG8KICAgICAgYWxsb3cgY21kX21wLmMgdG8gYnVpbGQgYW5kIHdvcmsuIEluIHRoZSBmdXR1cmUgd2Ugc2hvdWxkIGxvb2sgYXQKICAgICAgaW1wbGVtZW50aW5nIGFsbCB0aGVzZSBmdW5jdGlvbnMuIFRoaXMgY291bGQgYmUgY29tbW9uIHcvODV4eCBpZiB3ZQogICAgICB1c2Ugc3BpbiB0YWJsZXMgb24gODZ4eC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGY2ZWY4YjdhNDNlZDdmNjhhNGJiNTI0ZmFhZDVlNGY3NWVhM2UzZTIKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBNYXIgMzEgMTg6Mzg6MzcgMjAwOSAtMDUwMAoKICAgIG1wYzg2NDFocGNuL3NiYzg2NDFkOiBBZGQgbWlzc2luZyBib2FyZF9sbWJfcmVzZXJ2ZXMKCiAgICBXZSdyZSBtaXNzaW5nIHRoZSBib2FyZF9sbWJfcmVzZXJ2ZSBkZWZpbml0aW9ucyB0aGF0IGFsbG93CiAgICBjcHVfbXBfbG1iX3Jlc2VydmUgdG8gYmUgY2FsbGVkOyB0aGlzIG1lYW5zIHRoYXQgTGludXgKICAgIGlzIGZyZWUgdG8gcmVhbGxvY2F0ZSByZXNlcnZlZCBwYWdlcy4gIExpbnV4IGN1cnJlbnRseSBib290cwogICAgYmVjYXVzZSB3ZSdyZSBnZXR0aW5nIGx1Y2t5IC0gdGhlIHBhZ2Ugd2UndmUgcmVzZXJ2ZWQgaXMKICAgIGhpZ2ggZW5vdWdoIGluIG1lbW9yeSB0aGF0IGl0IGlzbid0IGFsbG9jYXRlZCBieSBMaW51eAogICAgd2hpbGUgd2Ugc3RpbGwgbmVlZCBpdCB0byBiZSBpbiBleGlzdGVuY2UuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAwZmM0ZjY0YzU5ODczYTQ3ZDU1NWRkNjZiYWQyNTc5N2Q0ZWNiMGVkCkF1dGhvcjogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgpEYXRlOglUdWUgTWFyIDMxIDEzOjQzOjEwIDIwMDkgKzAyMDAKCiAgICBOZXRTdGFyOiBmaXggTkFORAoKICAgIEZpeCBOQU5EIHN1cHBvcnQgYnJva2VuIGR1cmluZyBuZXcgTkFORCBjb2RlIG1lcmdlLiBNb3ZlIHRob3NlIGZldyBsaW5lcyBvZgogICAgY29kZSB0byBib2FyZC9uZXRzdGFyL25ldHN0YXIuYwoKICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KCmNvbW1pdCBkMTQ0Zjk0ZDU5MGI1MTkwYTk5NjNiZDBmMjAyNmIyYTdjZTY3ZWRhCkF1dGhvcjogSmVucyBTY2hhcnNpZyA8ZXN3QGJ1cy1lbGVrdHJvbmlrLmRlPgpEYXRlOglUdWUgTWFyIDMxIDA4OjE4OjI5IDIwMDkgKzAyMDAKCiAgICBzb2Z0X2kyYy5jIGNvbXBpbGVyL2xpbmtlciBlcnJvcgoKICAgIFRoaXMgcGF0Y2ggZml4IHRoZSBjb21waWxlci9saW5rZXIgZXJyb3JzCgogICAgY29tbW9uL2NtZF9pMmMuYzoxMjUyOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBpMmNfZ2V0X2J1c19zcGVlZCcKICAgIGNvbW1vbi9jbWRfaTJjLmM6MTI1NjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgaTJjX3NldF9idXNfc3BlZWQnCgogICAgaWYgYm9hcmQgdXNlIENPTkZJR19JMkNfQ01EX1RSRUUgYW5kIENPTkZJR19JMkNfTVVMVElfQlVTIGlzIG5vdAogICAgdWVzZC91bmRlZiAod3JvbmcgZGVmaW5lIG9yZGVyKQoKICAgIGFuZAoKICAgIHJlbW92ZXMgYWRkaXRpb25hbCBlbXB0eSBsaW5lcwoKICAgIFNpZ25lZC1vZmYtYnk6IEplbnMgU2NoYXJzaWcgPGVzd0BidXMtZWxla3Ryb25pay5kZT4KCmNvbW1pdCA3NjU1NDdkYzVlMGU4Y2JlNmI4ZjRlYThhNWQ2ZmYyMzc5MzVjMzUyCkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE1hciAyNyAxNzowMjo0NSAyMDA5IC0wNDAwCgogICAgTVBDODV4eDogQWRkIE1QQzg1NjlNRFMgYm9hcmQgc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBNUEM4NTY5TURTIGJvYXJkIHN1cHBvcnQuIFRoZSBVQVJULCBRRSBVRUMxIGFuZCBVRUMyLCBCUkQKICAgIEVFUFJPTSBvbiBJMkMyIGJ1cywgUENJIGV4cHJlc3MgYW5kIEREUjMgU1BEIGFyZSBzdXBwb3J0ZWQgaW4gdGhpcyBwYXRjaC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSGlsbGVsIEF2bmkgPEhpbGxlbC5Bdm5pQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDIyYjZkYmMxNjk2ZDkyN2Q5MzhkZDRlMTZmNjVkODNjMGQ0ZmIzZjQKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgTWFyIDI3IDE3OjAyOjQ0IDIwMDkgLTA0MDAKCiAgICBNUEM4NXh4OiBBZGQgTVBDODU2OSBDUFUgc3VwcG9ydAoKICAgIFRoZXJlIGlzIGEgd29ya2Fyb3VuZCBmb3IgTVBDODU2OSBDUFUgRXJyYXRhLCB3aGljaCBuZWVkcyB0byBzZXQgQml0IDEzIG9mCiAgICBMQkNSIGluIDRLIGJvb3RwYWdlLiBXZSBzZXR1cCBhIHRlbXAgVExCIGZvciBlTEJDIGNvbnRyb2xsZXIgaW4gYm9vdHBhZ2UsCiAgICB0aGVuIGludmFsaWRhdGUgaXQgYWZ0ZXIgTEJDUiBiaXQgMTMgaXMgc2V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDJkNGRlNmFlNWJlNTRiMzY3YTcyYTdlZjRlMGNmMzZhOWNkNDg4MWYKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTWFyIDI2IDE3OjAxOjQ5IDIwMDkgLTA0MDAKCiAgICBNUEM4NXh4OiBMb2FkIGFuZCBlbmFibGUgUUUgbWljcm9jb2RlIHBhdGNoIGluIElSQU0KCiAgICBGb3IgdGhlIHNpbGljb24gd2hpY2ggZG9lc24ndCBoYXZlIFJPTSBzdXBwb3J0IGluIFFFLCBpdCBhbHdheXMgbmVlZHMgdG8gbG9hZAogICAgYSBwcmUtYnVpbHQgdWNvZGUgYmluYXJ5IHRvIElSQU0gc28gdGhhdCBRRSBjYW4gd29yay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSGlsbGVsIEF2bmkgPEhpbGxlbC5Bdm5pQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMWIzZTQwNDRhMjhhM2Q5NWIwYWFkNDFiZGM1MjQ4MmJiMmNjOWIyYgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBNYXIgMTkgMDk6MTY6MTAgMjAwOSAtMDUwMAoKICAgIDg1eHg6IEFkZCBzdXBwb3J0IGZvciBhZGRpdGlvbmFsIGU1MDBtYyBmZWF0dXJlcwoKICAgICogRW5hYmxlIGJhY2tzaWRlIEwyCiAgICAqIGU1MDBtYyBubyBsb25nZXIgaGFzIHRpbWViYXNlIGVuYWJsZSBpbiBISUQgKG1vdmVkIHRvIENDU1IgcmVnaXN0ZXIpCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBjMzYwY2VhYzAyODYxNTlmOTRkOWQxYTk0OTZmYzk4NThjOGQ5YmVjCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU2F0IE1hciAxNCAxMjo0ODozMCAyMDA5ICswODAwCgogICAgZnNsLWRkcjogYWRkIHRoZSBERFIzIFNQRCBpbmZyYXN0cnVjdHVyZQoKICAgIC0gc3VwcG9ydCBtaXJyb3JlZCBESU1Ncywgbm90IHN1cHBvcnQgcmVnaXN0ZXIgRElNTXMKICAgIC0gdGVzdCBwYXNzZWQgb24gUDIwMjBEUyBib2FyZCB3aXRoIE1UOUpTRjEyODcyQVktMUcxRDEKICAgIC0gdGVzdCBwYXNzZWQgb24gTVBDODU2OU1EUyBib2FyZCB3aXRoIE1UOEpTRjEyODY0SFktMUcxRDEKCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogVHJhdmlzIFdoZWF0bGV5IDx0cmF2aXMud2hlYXRsZXlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2YTgxOTc4MzY3MDI5OTE0NjhjZWFkNWVhZDA3M2Y1ODllMjYyM2FkCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU2F0IE1hciAxNCAxMjo0ODoxOSAyMDA5ICswODAwCgogICAgZnNsLWRkcjogRml4IHR3byBidWdzIGluIHRoZSBkZHIgaW5mcmFzdHJ1Y3R1cmUKCiAgICAxLiB3cl9sYXQKICAgICAgIFVNIHNhaWQgdGhlIHRvdGFsIHdyaXRlIGxhdGVuY3kgZm9yIEREUjIgaXMgZXF1YWwgdG8KICAgICAgIFdSX0xBVCArIEFERF9MQVQsIHRoZSB3cml0ZSBsYXRlbmN5IGlzIENMICsgQUREX0xBVCAtIDEuCiAgICAgICBzbywgdGhlIFdSX0xBVCA9IENMIC0gMTsKICAgIDIuIHJkX3RvX3ByZQogICAgICAgd2UgbWlzc2VkIHRvIGFkZCB0aGUgQUREX0xBVCBmb3IgRERSMiBjYXNlLgoKICAgIFJlcG9ydGVkLWJ5OiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNTQwZGNmMWNiODY5NjFlMTFhYTkyYzQ3NjcxZjI3NzYyYzU4MWQ4YwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBNYXIgMjYgMDE6MzQ6MzkgMjAwOSAtMDUwMAoKICAgIDgzeHg6IFVzZSBjb21tb24gTFNETVIgZGVmaW5lcyBmcm9tIGFzbS9mc2xfbGJjLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgQWNrZWQtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjBmZTkzZWRhNjk3MjFhZWYxZmRlZjU3NjE2NGI2NjhmYWQ4M2JiZApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBNYXIgMjYgMDE6MzQ6MzggMjAwOSAtMDUwMAoKICAgIDg1eHg6IFVzZSBjb21tb24gTFNETVIgZGVmaW5lcyBmcm9tIGFzbS9mc2xfbGJjLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDAwODhjMjk4ZjBlZWI5MGVjMDAxZjc0NGU5OTU5ZGVhODNkZDU2M2EKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgTWFyIDI2IDAxOjM0OjM3IDIwMDkgLTA1MDAKCiAgICBBZGQgTFNETVIgKFNEUkFNIE1vZGUgUmVnaXN0ZXIpIGRlZmluaXRpb24gb24gbG9jYWxidXMKCiAgICBUaGUgbWFza3MgZm9yIHZhcmlvdXMgYml0IGRlZmluZXMgb2YgTFNETVIgYXJlIGNvbW1vbiBhbmQgdGh1cyB3ZSBjYW4KICAgIGRlZmluZSB0aGVtIGluIG9uZSBwbGFjZSByYXRoZXIgdGhhbiByZXBsaWNhdGluZyB0aGVtIGluIGVhY2ggY29uZmlnLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDg5YzAwZmIxNTg1OTIxMzc4OGYwYWQwODk5MzRjMzc2ZmIzNTYwOTkKQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+CkRhdGU6CU1vbiBNYXIgMzAgMTg6NTg6NDEgMjAwOSArMDIwMAoKICAgIE9NQVA6IHVzZSB7cmVhZCx3cml0ZX1sIHRvIGFjY2VzcyB0aW1lciByZWdpc3RlcnMKCiAgICBTaWduZWQtb2ZmLWJ5OiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+Cgpjb21taXQgODE0NzJkODkzZmE1NjVjOWQzMDA5MjhhNDBlNTA0YTY4OWJkZTEzMQpBdXRob3I6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KRGF0ZToJTW9uIE1hciAzMCAxODo1ODo0MSAyMDA5ICswMjAwCgogICAgT01BUDogcmVuYW1lIHRpbWVyIGRpdmlzb3IKCiAgICBEaXZpc29yIGZpZWxkIGlzIGNhbGxlZCBQVFYgbm90IFBWVC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGZlNjcyZDYwYjJhOGM5ZTgwMzU5NmJhNDUzM2ZhMTc3NjAxNTU1MWQKQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+CkRhdGU6CU1vbiBNYXIgMzAgMTg6NTg6NDAgMjAwOSArMDIwMAoKICAgIE9NQVA6IHJlaW5kZW50IHRpbWVyIGNvZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+Cgpjb21taXQgYjNmNjZiMGJhMDk5NDllMDc5NmNlN2ZhZDYzNjdmNzVmMTVlZDg5MApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CU1vbiBNYXIgMzAgMTg6NTg6NDAgMjAwOSArMDIwMAoKICAgIHMzYzI0MTA6IG1vdmUgbmFuZCBkcml2ZXIgdG8gZHJpdmVycy9tdGQvbmFuZAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZDNiNjM1Nzc0MTk0NDA0YmNkNDI0ZjZiMzc2NDE5YmNlMjIwNzZhZApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CU1vbiBNYXIgMzAgMTg6NTg6NDAgMjAwOSArMDIwMAoKICAgIHMzYzI0eDA6IG1vdmUgaTJjIGRyaXZlciB0byBkcml2ZXJzL2kyYwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMzAwZjk5ZjQ1MzlkZDVjYWY3ZTE5YWY1ZTRlYTVlYjI1OTQ0NTkxMwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CU1vbiBNYXIgMzAgMTg6NTg6MzkgMjAwOSArMDIwMAoKICAgIHMzYzI0eDA6IG1vdmUgc2VyaWFsIGRyaXZlciB0byBkcml2ZXJzL3NlcmlhbAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgOTQyYmE5OTY5YjllZmEyNWY4MTZjMjM4ODYxZWNiMzM5YzU0ZWQ3MwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CU1vbiBNYXIgMzAgMTg6NTg6MzkgMjAwOSArMDIwMAoKICAgIGRhdmluY2k6IG1vdmUgaTJjIGRyaXZlciB0byBkcml2ZXJzL2kyYwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZWU0ZjNlMjc2NWExYzY1Yzk4NjFjNWQyY2YyZTZmZWI4NGI5MGJkOApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CU1vbiBNYXIgMzAgMTg6NTg6MzkgMjAwOSArMDIwMAoKICAgIGRhdmluY2k6IG1vdmUgbmFuZCBkcml2ZXIgdG8gZHJpdmVycy9tdGQvbmFuZAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZDNlNTVkMDc3NGExODBjMTgzN2JkN2RkZWM0NjQwMTVlODgzYmQ4NgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CU1vbiBNYXIgMzAgMTg6NTg6MzggMjAwOSArMDIwMAoKICAgIGlteDogbW92ZSBzZXJpYWwgZHJpdmVyIHRvIGRyaXZlcnMvc2VyaWFsCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAyMzQ0YmI4ZGUyMzU0MTAxYTgyNjRjMjEyMzMwM2M5ZDhkMmFlZDNjCkF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+CkRhdGU6CU1vbiBNYXIgMzAgMDA6MzE6MzYgMjAwOSArMDIwMAoKICAgIGlua2E0eDA6IFVzZSBwcm9wZXIgYWNjZXNzb3IgbWFjcm9zIGZvciBtZW1vcnkgbWFwcGVkIHJlZ2lzdGVycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KCmNvbW1pdCBlOTc5ZTg1ZmQzOWIwNjQzNjkyMmJiNGQ2YmI1ZmFmY2JjNzc1MTgyCkF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+CkRhdGU6CU1vbiBNYXIgMzAgMDA6MzE6MzUgMjAwOSArMDIwMAoKICAgIGlua2E0eDA6IEFkZCBoYXJkd2FyZSBkaWFnbm9zaXMgYW5kIFJUQyBpbiBjb25maWd1cmF0aW9uLgoKICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgYm9hcmQgc3BlY2lmaWMgY29tbXVuaWNhdGlvbiByb3V0aW5lcyBuZWVkZWQgYnkKICAgIHRoZSBleHRlcm5hbCA0NTQzIFJUQy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgUGZlZmZlcmxlIDxhcEBkZW54LmRlPgoKY29tbWl0IDdiNTYxMWNkZDEyY2EwY2MzM2Y5OTRmMGQ0YTQ0NTQ3ODhmYzMxMjQKQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KRGF0ZToJTW9uIE1hciAzMCAwMDozMTozNCAyMDA5ICswMjAwCgogICAgaW5rYTR4MDogQWRkIGhhcmR3YXJlIGRpYWdub3NpcyBmdW5jdGlvbnMgZm9yIGlua2E0eDAKCiAgICBUaGlzIHBhdGNoIGFkZHMgYWR2YW5jZWQgZGlhZ25vc2lzIGZ1bmN0aW9ucyBmb3IgdGhlIGlua2E0eDAgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBQZmVmZmVybGUgPGFwQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KCmNvbW1pdCAwNGUxMWNmMzgzZmY2MjMxNTM1ZmQ5ODEwMjNiYjEzMDZiMjEzM2Q0CkF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+CkRhdGU6CU1vbiBNYXIgMzAgMDA6MzE6MzMgMjAwOSArMDIwMAoKICAgIHJ0YzogYWRkIHN1cHBvcnQgZm9yIDQ1NDMgUlRDIChtYW51ZmFjdHVyZWQgYnkgZS5nLiBFUFNPTikKCiAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgUGZlZmZlcmxlIDxhcEBkZW54LmRlPgoKY29tbWl0IDU3MmU2MTc5YWRiNTQ0N2ZmNDJlYzJhYTVjZjNhMjZkZWNmOTc1ODMKQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KRGF0ZToJTW9uIE1hciAzMCAwMDozMTozMiAyMDA5ICswMjAwCgogICAgZHJpdmVycy90d3NlcmlhbDogQWRkIHByb3RvY29sIGRyaXZlciBmb3IgInRocmVlIHdpcmUgc2VyaWFsIiBpbnRlcmZhY2UuCgogICAgVGhpcyBwcmV0dHkgdW5pbnRlbGxpZ2VudCBpbnRlcmZhY2UgaXMgdXNlZCBvbiBzb21lIFJUQyBjaGlwcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KCmNvbW1pdCBhNmVmM2RkZWFmYmU4MDA3YWYzNjYyY2M0NTA5Yjg5N2M1M2FiMzk1CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIE1hciAyOSAyMzowMTo0MiAyMDA5ICswMjAwCgogICAgYXJtNzIwdC9jbHBzNzExMTogbW92ZSBzZXJpYWwgZHJpdmVyIHRvIGRyaXZlcnMvc2VyaWFsCgogICAgYWRkIENPTkZJR19DTFBTNzExMV9TRVJJQUwgdG8gYWN0aXZhdGUgdGhlIGRyaXZlcgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNjc5MGM1NTcwNDUzMWViOThmNzZiNTFkNTBlMGY3M2QxOWZhMjk4OApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBNYXIgMjkgMjM6MDE6NDIgMjAwOSArMDIwMAoKICAgIGxwYzIyOTI6IG1vdmUgc2VyaWFsIGRyaXZlciB0byBkcml2ZXJzL3NlcmlhbAoKICAgIGFkZCBDT05GSUdfTFBDMjI5Ml9TRVJJQUwgdG8gYWN0aXZhdGUgdGhlIGRyaXZlcgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMTc2YTYwMGQwZWNkYWNjYmFjNDgzZDJiYTk5MmQwMTE5Zjg1MzExOQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBNYXIgMjkgMjM6MDE6NDIgMjAwOSArMDIwMAoKICAgIGtzODY5NTogbW92ZSBzZXJpYWwgZHJpdmVyIHRvIGRyaXZlcnMvc2VyaWFsCgogICAgYWRkIENPTkZJR19LUzg2OTVfU0VSSUFMIHRvIGFjdGl2YXRlIHRoZSBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDZkMjdiY2ExNWQ0NDVmY2YwN2Q2ZTdlMzBjZWQ5NWM5NDVjODc1ZWEKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gTWFyIDI5IDIzOjAxOjQyIDIwMDkgKzAyMDAKCiAgICBzM2M2NHh4OiBtb3ZlIHVzYiBkcml2ZXIgdG8gZHJpdmVycy91c2IKCiAgICBhZGQgQ09ORklHX1VTQl9TM0M2NFhYIHRvIGFjdGl2YXRlIHRoZSBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGVjZmE4ZGRhMmY1NWUxZmJlMTJkZWUwYjVjYzE2ZTdkNDg0Njc0YzkKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gTWFyIDI5IDIzOjAxOjQxIDIwMDkgKzAyMDAKCiAgICBpbXgzMTogbW92ZSBzZXJpYWwgZHJpdmVyIHRvIGRyaXZlcnMvc2VyaWFsCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA5ZWE5MWM5ZmVmYjM5MjBkNzM1NTMzYTc3OThjMWE0NGEzZWQzZmZjCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIE1hciAyOSAyMzowMTo0MSAyMDA5ICswMjAwCgogICAgbmV0YXJtOiBtb3ZlIHNlcmlhbCBkcml2ZXIgdG8gZHJpdmVycy9zZXJpYWwKCiAgICBhZGQgQ09ORklHX05FVEFSTV9TRVJJQUwgdG8gYWN0aXZhdGUgdGhlIGRyaXZlcgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNDEyYWI3MDU4ODg3NDJhZGQ0MzVkZDZmZmMyZThiZGExNDk2MjIzNQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBNYXIgMjkgMjM6MDE6NDEgMjAwOSArMDIwMAoKICAgIHNhMTEwMDogbW92ZSBzZXJpYWwgZHJpdmVyIHRvIGRyaXZlcnMvc2VyaWFsCgogICAgYWRkIENPTkZJR19TQTExMDBfU0VSSUFMIHRvIGFjdGl2YXRlIHRoZSBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGIyMzY4NzU0YTkyMDIyMjVmZDA3MmUxNTlmYjc4ZGE3ZDJjZGI2MjMKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gTWFyIDI5IDIzOjAxOjQxIDIwMDkgKzAyMDAKCiAgICBzM2M0NGIwOiBleHRyYWN0IGNhY2hlIGZyb20gY3B1LmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDQwZmQ2MjYyMjNlYWU1MzYzNzE5YmNiOWE2ODk2ZjA4Y2VlZWU5MGEKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gTWFyIDI5IDIzOjAxOjQxIDIwMDkgKzAyMDAKCiAgICBzM2M0NGIwOiBtb3ZlIHNlcmlhbCBkcml2ZXIgdG8gZHJpdmVycy9zZXJpYWwKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDVmZTEzNzdjYzQ2MTk5ZmU3MWM0N2JlNGIxYWE4MTQ0MGFlOTZmOWYKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gTWFyIDI5IDIzOjAxOjQwIDIwMDkgKzAyMDAKCiAgICBzM2M0NGIwOiBtb3ZlIHJ0YyBkcml2ZXIgdG8gZHJpdmVycy9ydGMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDUwZjYwMWNjYTg5ODU2MTVmOWUzZGU0YzM0ODg3NDQ4YWRlOGE2NGIKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gTWFyIDI5IDIzOjAxOjQwIDIwMDkgKzAyMDAKCiAgICBzM2M0NGIwOiBtb3ZlIGkyYyBkcml2ZXIgdG8gZHJpdmVycy9pMmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDI4MWRmYjBjMGM1MzExOTRmOTllNjBkNjI4NWNjYTRlMmE5ZmIxYjYKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gTWFyIDI5IDIzOjAxOjM2IDIwMDkgKzAyMDAKCiAgICBzM2M0NTEwYjogbW92ZSBzcGVjaWZpYyBjb2RlIHRvIHNvYyBkaXJlY3RvcnkKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDA0NTMxZjNjMTFjNjkzZGM1NDkyNGY4MmM0MTk3OWQ5NjAzMDljOWQKQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+CkRhdGU6CVdlZCBNYXIgMjUgMjM6NDM6NTggMjAwOSArMDEwMAoKICAgIE5ldFN0YXI6IGFkZCBSVEMgc3VwcG9ydAoKICAgIEFkZCBSVEMgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+Cgpjb21taXQgNzFmN2JkMzA1ZDk3NjhiY2I3ZGRiZTRiNTgyM2NiZjNiMzU5N2IxMQpBdXRob3I6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KRGF0ZToJV2VkIE1hciAyNSAyMzo0Mzo1MCAyMDA5ICswMTAwCgogICAgTmV0U3RhcjogdXNlIGdlbmVyaWMgZmxhc2ggZHJpdmVyCgogICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgoKY29tbWl0IDNmNDY0YjBmYzAwOWQ0MWQyNzM0YzA4ZTQ3MmViNmQ0NDVmNzNhNWMKQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+CkRhdGU6CU1vbiBNYXIgMTYgMjM6MzE6MjAgMjAwOSArMDEwMAoKICAgIE5ldFN0YXI6IHVwZGF0ZSBjcmNpdCB1dGlsaXR5CgogICAgTWFrZSBjcmMzMiBmdW5jdGlvbiB0byBtYXRjaCBpdHMgcHJvdG90eXBlLiBVc2UgbW9yZSBtZWFuaW5nZnVsIGlkZW50aWZpZXJzLgoKICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KCmNvbW1pdCA0ODhmNWQ4NzkwYzQ1MWZjNTI3ZmU1ZDJlZjIxOGYyYTVlNDBlYTE3CkF1dGhvcjogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgpEYXRlOglNb24gTWFyIDIzIDE3OjQ2OjI3IDIwMDkgKzAxMDAKCiAgICBSZW1vdmUgbm93aGVyZSB1c2VkIHN5bWJvbCBDT05GSUdfU1lTX0NMS1NfSU5fSFoKCiAgICBTaWduZWQtb2ZmLWJ5OiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+Cgpjb21taXQgODg2ODViNWY2MjI3NDE2N2FkMmJhOGE1OGUxMDhkODlmZjcxOTU1YgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBNYXIgMjkgMDA6NTg6MTYgMjAwOSArMDEwMAoKICAgIFZDTUE5OiBmaXggY29tcGlsZSBlcnJvcnMKCiAgICBGaXggdGhlc2U6CiAgICBjbWRfdmNtYTkuYzo4Mjogd2FybmluZzogaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ2V0aF9nZXRlbnZfZW5ldGFkZHInCiAgICBjbWRfdmNtYTkuYzo4OTogZXJyb3I6ICdlbmV0YWRkcicgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAyNmU0MmNiZDc4NjI0MWZlYzM3MGEwYjkyYWQ1OTFmNGU5Y2M0MjNiCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIE1hciAyOSAwMDo1NDoyMSAyMDA5ICswMTAwCgogICAgQVJNOiBmaXggd2FybmluZzogJ3ByaW50X2V0aCcgZGVmaW5lZCBidXQgbm90IHVzZWQKCiAgICBUaGlzIHdhcm5pbmcgZ290IGlzc3VlZCBmb3IgYWxsIEFSTSBzeXN0ZW1zIHRoYXQgZG9uJ3QgaGF2ZQogICAgQ09ORklHX0NNRF9ORVQgZW5hYmxlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGZkODhkOTFhNjM5Y2U0MWI4MjVjOGQ1MGRjMjE4MjA1MGU5OGZlNTMKQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+CkRhdGU6CU1vbiBNYXIgMjMgMTg6MTY6MzQgMjAwOSArMDEwMAoKICAgIGNzODkwMCBjb21waWxlIGZpeAoKICAgIGNzODkwMC5jOiBJbiBmdW5jdGlvbiAnZXRoX2luaXQnOgogICAgY3M4OTAwLmM6MTY0OiB3YXJuaW5nOiBwYXNzaW5nIGFyZ3VtZW50IDIgb2YgJ2V0aF9nZXRlbnZfZW5ldGFkZHInIGZyb20gaW5jb21wYXRpYmxlIHBvaW50ZXIgdHlwZQogICAgY3M4OTAwLmM6MTY1OiBlcnJvcjogaW52YWxpZCBvcGVyYW5kcyB0byBiaW5hcnkgPDwKICAgIGNzODkwMC5jOjE2NjogZXJyb3I6IGludmFsaWQgb3BlcmFuZHMgdG8gYmluYXJ5IDw8CiAgICBjczg5MDAuYzoxNjc6IGVycm9yOiBpbnZhbGlkIG9wZXJhbmRzIHRvIGJpbmFyeSA8PAoKICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KICAgIEFja2VkLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGQyNTY3YmU5MTUwMzY3MjA2OTNmM2RkZDAwYzM5YjViNGQ4NmZiOGQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgTWFyIDI4IDIwOjE2OjE2IDIwMDkgKzAxMDAKCiAgICBGaXggaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ2V0aF9bZ3NdZXRlbnZfZW5ldGFkZHInCgogICAgLi4uYW5kIHNvbWUgb3RoZXIgY29tcGlsZSB3YXJuaW5ncy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDk3YjA1ZDdkNTI0YTZiNGYxOTVmMDdiOGY5MGU5ODU2MWE4NTU5NmMKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgTWFyIDI4IDE2OjE3OjI5IDIwMDkgKzAxMDAKCiAgICBtcGM4eHgvZXRoZXIuYzogZml4IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAnYmQnCgogICAgQWxzbyBtaW5vciBjb2Rpbmcgc3R5bGUgY2xlYW51cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDJkY2U1NTFlMTA3MjhmOWU1NjU1Mjc5Zjc2MWYxZDNjYzBhOGZlOTAKQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KRGF0ZToJV2VkIE1hciAyNSAxNzoyNzo1MiAyMDA5ICswMTAwCgogICAgY29tbWFuZC5jOiBFeHBvc2UgdGhlIGNvcmUgb2YgZG9faGVscCBhcyBfZG9faGVscCB0byB0aGUgcmVzdCBvZiB1LWJvb3QuCgogICAgT3RoZXIgY29tbWFuZHMgaW1wbGVtZW50aW5nIHN1YmNvbW1hbmRzIGNhbiByZXVzZSB0aGlzIGNvZGUgbmljZWx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBQZmVmZmVybGUgPGFwQGRlbnguZGU+Cgpjb21taXQgNGUzMjVmYmZhNGRlYTA0ZWNlYjYzOTJlMDA4MDdjNDBkMjE0ZGM2ZgpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglUdWUgTWFyIDI0IDE4OjAyOjMzIDIwMDkgKzAxMDAKCiAgICBtcGM1eHh4OiBBZGQgc3RydWN0dXJlIGRlZmluaXRpb24gZm9yIHNldmVyYWwgbW9yZSByZWdpc3RlciBibG9ja3MuCgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgNzM5YjBlNTk0Njc3YTA2NzY1NzdiYzk1ZGI0NDk1YTU1NjNmYzdmOApBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglGcmkgTWFyIDI3IDE1OjAzOjU1IDIwMDkgKzAxMDAKCiAgICBNQUlOVEFJTkVSUzogQWRkIGVudHJ5IGZvciAnaW5rYTR4MCcgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgZTU1ZWNlYzQ1MzQwNzU1ZWY0N2NiYmIxM2ZiMzVjZWVkNjBlYjExNQpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglGcmkgTWFyIDI3IDE1OjAzOjU0IDIwMDkgKzAxMDAKCiAgICBNQUlOVEFJTkVSUzogS2VlcCBsaXN0IHNvcnRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KCmNvbW1pdCAwYmFlY2E0YjA5YjcwMzcyOGY4ZTY2YjUyNDE4MDM5ZmQ4ZjhjZTM1CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgTWFyIDI2IDExOjE3OjQxIDIwMDkgLTA0MDAKCiAgICBrYXJlZi9tZXRyb2JveC94cGVkaXRlMWs6IGZpeCBldGhfc2V0ZW52X2VuZXRhZGRyIHR5cG9zCgogICAgVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCAiZXRoX3NldGVudl9lbmV0YWRkciIsIG5vdCAiZXRoX3B1dGVudl9lbmV0YWRkciIuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgQ0M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNzY3NTZlNDFjZGUwYTYxN2U3ODFhNjA0Y2M0N2RmYWVmNjM2OTdjZApBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglUaHUgTWFyIDI2IDA3OjMzOjU5IDIwMDkgKzAxMDAKCiAgICBwcGM6IGNsZWFudXAgY29tcGlsZXIgZXJyb3JzL3dhcm5pbmdzCgogICAgQ3VycmVudCB1LWJvb3QgdG9wIG9mIHRyZWUgYnVpbGRzIHdpdGggd2FybmluZ3MvZXJyb3JzIGZvcgogICAgdGhlIGZvbGxvd2luZyBib2FyZHM6CgogICAgYWRzNTEyMSBjcGNpNTIwMCBtZWNwNTIwMCB2MzhiIElBRDIxMCBNQlggTUJYODYwVCBOWDgyMwogICAgUlBYQ2xhc3NpYyBkZWJyaXMgUE42MgoKICAgIGZvbGxvd2luZyBwYXRjaCBzb2x2ZXMgdGhpcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgM2VkZjY4YzQ3ZmRkNTJmMTljMWU4NDA3NzFjMTliYTkwY2Y1Y2VkMQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE1hciAyNiAxNjoxNDoxMyAyMDA5ICswMTAwCgogICAgcHBjNHh4OiBTZXF1b2lhOiBGaXggVExCIHJlYXNzaWdubWVudCBpbiBOQU5EIGJvb3RpbmcgY29kZQoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIFNlcXVvaWEgVExCIGluaXQgY29kZSB0byByZWNvbmZpZ3VyZQogICAgdGhlIGNvcnJlY3QgVExCIChib290IHNwYWNlKSBhZnRlciBydW5uaW5nIGZyb20gUkFNLiBUaGlzIGJ1ZyB3YXMKICAgIGludHJvZHVjZWQgd2l0aCBwYXRjaCA0ZDMzMmRiZWIwOGY1ODYzZDFlYTY5ZDkxYTAwYzU0OTlkM2E4N2VkCiAgICBbcHBjNHh4OiBNYWtlIFNlcXVvaWEgYm9vdCB2eFdvcmtzXSB3aGljaCBjaGFuZ2VkIHRoZSBvcmRlciBvZiB0aGUKICAgIFRMQiBpbiB0aGUgU2VxdW9pYSBpbml0LlMgZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZTJiNjZmZTQ1M2EzNjc5ZjgwN2IzN2ZjNTkyM2Q4OTIxNDMwMjc2NApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVRodSBNYXIgMjYgMTA6MDA6NTcgMjAwOSArMDEwMAoKICAgIGFkczUxMjE6IGVuYWJsZSBpbnN0cnVjdGlvbiBjYWNoZQoKICAgIEVuYWJsaW5nIHRoZSBpbnN0cnVjdGlvbiBjYWNoZSBzaWduaWZpY2FudGx5IGFjY2VsZXJhdGVzIFUtQm9vdAogICAgb3BlcmF0aW9ucyBsaWtlIENSQyBjaGVja2luZywgaW1hZ2UgdW5jb21wcmVzc2lvbiwgZXRjLgoKICAgIEt1ZG9zIHRvIEFuZHJlYSBTY2lhbiBmb3IgcG9pbnRpbmcgb3V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMzNlODhjNTU3YjI5Yzg0YzUyMDM5YmEwNTk5M2ZhNzBmZTYyYWZlMwpBdXRob3I6IEpvbiBTbWlybCA8am9uc21pcmxAZ21haWwuY29tPgpEYXRlOglTdW4gTWFyIDIyIDIyOjU1OjQ1IDIwMDkgLTA0MDAKCiAgICBtcGM1MjAwOiBzdXBwcmVzcyBwcmludGYgdW50aWwgY29uc29sZSBpbml0aWFsaXplZAoKICAgIE9uIGJvYXJkcyB3aGljaCBoYXZlIHRoZSBlbnZpcm9ubWVudCBpbiBlZXByb20sIGkyY19pbml0KCkgaXMgY2FsbGVkCiAgICBiZWZvcmUgdGhlIGNvbnNvbGUgYW5kIFJBTSBhcmUgaW5pdGlhbGl6ZWQuCiAgICBTdXBwcmVzcyBwcmludGZzIHVudGlsIHRoZSBjb25zb2xlIGlzIGluaXRpYWxpemVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBTbWlybCA8am9uc21pcmxAZ21haWwuY29tPgogICAgQWNrZWQtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDBjNjkyNjczNmVmZmJiOWExOTA0Nzk0OWI3ZTliM2U4ZmVhYjdjNDYKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CkRhdGU6CVdlZCBNYXIgMjUgMTE6MzY6NTAgMjAwOSArMDEwMAoKICAgIEFSTTogQWRkIHRoZSBpbXgzMV9waHljb3JlX2VldCBib2FyZCB0byBNQUtFQUxMCgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgoKY29tbWl0IDkxN2NmYzcwYzE4Yjc0ZmE4YTgwMTg5YmRjZTgzOTUxOTlmYTgzNjAKQXV0aG9yOiBOaXNoYW50aCBNZW5vbiA8bm1AdGkuY29tPgpEYXRlOglXZWQgTWFyIDI1IDIyOjEzOjU2IDIwMDkgKzAxMDAKCiAgICBPTUFQMzpCZWFnbGU6IEVuYWJsZSBtdGRwYXJ0cwoKICAgIGh0dHA6Ly93d3cuZGVueC5kZS93aWtpL0RVTEcvVUJvb3RDbWRHcm91cEZsYXNoI1VCb290Q21kRmxNdGRwYXJ0cwogICAgcHJvdmlkZXMgYSBmbGV4aWJsZSB3YXkgdG8gY3JlYXRlIGFuZCBtYWludGFpbiB1LWJvb3QgbXRkCiAgICBwYXJ0aXRpb25zLiBUaGlzIGFsbG93cyBjb21tYW5kcyBzdWNoIGFzICJuYW5kIGVyYXNlIGZzIgogICAgdG8gd29yayBhbmQgdGhlIHVzZXIgbm8gbG9uZ2VyIG5lZWRzIHRvIGRlY29kZSB0aGUgYWJzb2x1dGUKICAgIG5hbmQgb2Zmc2V0cy4gVGhpcyBwYXRjaCBlbmFibGVzIHRoaXMgZnVuY3Rpb24gZm9yIGJlYWdsZWJvYXJkCgogICAgU2lnbmVkLW9mZi1ieTogTmlzaGFudGggTWVub24gPG5tQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNGRlMWE1ZGFhYjA3OWRkYzhjZTEyNzQxNDQ3MDAyMDNkNjkyMTA1YwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU3VuIEZlYiAyMiAxNjoyNjozNSAyMDA5IC0wNTAwCgogICAgQmxhY2tmaW46IGJmNTM3LXN0YW1wOiBzcGxpdCBwb3N0IGNvZGUgb3V0IGludG8gZGVkaWNhdGVkIHBvc3QuYwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA1ZThmMjQ1NzQzZWQxNGM4OWU0OTViYTJjMDI3NzAzZGI5ODEzMTYwCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgT2N0IDExIDIyOjUxOjU2IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogYWRkIHN1cHBvcnQgZm9yIFMyNUZMMTI4IHBhcnRzCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGJmMWUwMjhiZjNlYWIxZDcwMmZhMDYyN2NhZGU0NDYwNjg4ZjM5MTMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBPY3QgMTEgMjI6NTE6MjMgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBvdmVyaGF1bCBTUEkgZmxhc2ggaGFuZGxpbmcgdG8gc3BlZWQgdGhpbmdzIHVwCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGVmY2MwOGNlZGVkYTIxNjhiOTZmMTJhMjJhNTg3MjM0MDg4MGQzMzQKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBPY3QgMTEgMjI6NTE6MDUgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBhZGQgc3VwcG9ydCBmb3IgU1NUIFNQSSBmbGFzaGVzCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDViOGNmYmU2M2Y3MjQyZWJiMTAwOGYzMGJiYmM4NWE5ZDU0YjM4Y2YKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBPY3QgMTEgMjI6NTA6MTAgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBhZGQgaGFjayBmb3IgY3JhcHB5IG0yNXA4MAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA2ZjVmZDU2ZjA4MzJlYTVjMjU0ZTJlNGJlODRlYTIxZmM4ZWNkNWM1CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglXZWQgSmFuIDIxIDIwOjQ3OjEyIDIwMDkgLTA1MDAKCiAgICBCbGFja2ZpbjogYmY1Mzctc3RhbXA6IGluY3JlYXNlIG1vbml0b3Igc2l6ZQoKICAgIFRoZSBuZXcgamZmczIgY29kZSBwdXNoZWQgdGhlIGNvZGUgc2l6ZSBqdXN0IG92ZXIgdGhlIGxpbWl0LCBzbyBpbmNyZWFzZQogICAgdGhlIGxpbWl0IGEgYml0IG1vcmUuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGY4MmNhYWNjYzg3ZTFmNzY0NDhmZjQyYTZiOTMwZTU5Nzk3ZTRmNjUKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBEZWMgOCAxNjoxNjoxMSAyMDA4IC0wNTAwCgogICAgQmxhY2tmaW46IGJmNTM3LXN0YW1wOiBidW1wIGRlZmF1bHQgU0NMSyB1cCB0byAxMjVNSHoKCiAgICBTaW5jZSBhbGwgb2YgdGhlIGJmNTM3LXN0YW1wIGFuZCBiZjUzNy1lemtpdCBib2FyZHMgb3V0IHRoZXJlIGNhbiBoYW5kbGUgaXQsCiAgICBpbmNyZWFzZSB0aGUgc3BlZWQgb2YgU0NMSyB0byAxMjVNSHogcmF0aGVyIHRoYW4gMTAwTUh6LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA3NTFlNTRjM2I3NzMxMWI3MjBiNzk0ODEzY2NlMjA1NDZmMjg4YWRhCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgT2N0IDExIDIyOjQ0OjE0IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogYmY1Mzctc3RhbXA6IHJld3JpdGUgTUFDLWluLWZsYXNoIGhhbmRsaW5nCgogICAgVXNlIHRoZSBjb21tb24gbmV0IGV0aCBmdW5jdGlvbnMgdG8gc2V0dXAgdGhlIGVudi9nbG9iYWwgZGF0YSB3aXRoIHRoZSBNQUMKICAgIGFkZHJlc3MsIGFuZCBwcm9wZXJseSBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgQ09ORklHX1NZU19OT19GTEFTSCBpcyBkZWZpbmVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA4OGY5ZmFmZmIzODNiYmM2ZjIzYjhjYzg1MTljNWZmZWNmYTJjOGFkCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgRGVjIDkgMTM6NDc6MzkgMjAwOCAtMDUwMAoKICAgIEJsYWNrZmluOiBhZGQgY2xraW5faHo9IHRvIGRlZmF1bHQga2VybmVsIGNvbW1hbmQgbGluZSBmb3IgQURJIGJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA5ZjY0YmEyNDEyZDNjZWRlOWViMWYyOTA5ODdlNWMzYTI4ZGYzMjMyCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gT2N0IDEyIDIzOjQ5OjEzIDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogYmY1MzMtc3RhbXA6IGJ1bXAgdXAgZGVmYXVsdCBjbG9ja3MKCiAgICBTaW5jZSB0aGUgaGFyZHdhcmUgY2FuIGhhbmRsZSBpdCwgYnVtcCB0aGUgZGVmYXVsdCBjbG9ja3MgZnJvbSA4MG1oeiBTQ0xLCiAgICBhbmQgMzk4bWh6IENDTEsgdG8gMTAwbWh6IFNDTEsgYW5kIDQ5OG1oeiBDQ0xLLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAyM2ZkOTU5ZWVhYWEwNDM0YWM3ZjljMTE5MWRlNjZjNzZkOTdkNjk5CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgT2N0IDExIDIyOjQwOjIyIDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogYmY1MzMtc3RhbXA6IHJld3JpdGUgc3RhcnR1cCBMRUQgbm90aWZpY2F0aW9ucwoKICAgIEFnYWluLCBkb24ndCBjbG9iYmVyIHBpbnMgdGhhdCB3ZSBhcmVuJ3QgYWN0dWFsbHkgdXNpbmcsIGFuZCB1c2UgdGhlIGNvbW1vbgogICAgTEVEIGZyYW1ld29yayByYXRoZXIgdGhhbiBvdXIgb3duIGhvYi1qb2ItYnV0LW5vdC1yZWFsbHktd29ya2luZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgY2Y2ZjQ2OWUyNzMwZmM4YWIzNTIzODA4YjgyOGJlMDAwZDZlZWU3NwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU3VuIEp1biAxIDA5OjA5OjQ4IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogdW5pZnkgY29tbW9uIEFESSBib2FyZCBzZXR0aW5ncwoKICAgIFJhdGhlciB0aGFuIGR1cGxpY2F0ZSB0aGUgc2FtZSBBREkgc2V0dGluZ3MgaW4gZXZlcnkgQURJIGJvYXJkLCBjcmVhdGUgYQogICAgY29tbW9uIEFESSBjb25maWcgaGVhZGVyIGFuZCBoYXZlIGFsbCBBREkgYm9hcmRzIHN0YXJ0IHVzaW5nIHRoYXQuCVRoaXMKICAgIHdpbGwgYWxzbyBtYWtlIG1lcmdpbmcgdGhlIH4xMCBib2FyZHMgSSBoYXZlIHRvIGZvcndhcmQgcG9ydCBhIGxvdCBlYXNpZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDE5NmM3NDMxMWYzOTRjNmViMDhiZDlhYjA3YTM1NjcxMjk5Yjk4NTEKQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxrbXBhcmtAaW5mcmFkZWFkLm9yZz4KRGF0ZToJVHVlIE1hciAzIDA5OjA1OjUzIDIwMDkgKzA5MDAKCiAgICBSZWR1Y2UgT25lTkFORCBJUEwgY29tbW9uIGNvZGUKCiAgICBPbmVOQU5EIElQTCBoYXMgY29tbW9uIGNvZGVzIGZvciBSQU0gaW5pdCwgbG9hZCBkYXRhLCBhbmQganVtcCB0byAybmQKICAgIGJvb3Rsb2FkZXIsIGJ1dCBpdCdzIGNvbW1vbiBjb2RlIHVzZWQgYWJvdXQgMzAwfjQwMCBieXRlcy4gU28gYm9hcmQKICAgIHNwZWNpZmljIGNvZGVzLCBzdWNoIGFzIGxvd2xldmVsX2luaXQsIGNhbid0IGhhcyBlbm91Z2ggY29kZS4gSXQgbWFrZQogICAgYSBkaWZmaWN1bHQgdG8gaW1wbGVtZW50IE9uZU5BTkQgSVBMLgoKICAgIGhpcyBwYXRjaCBtYWtlIHRoaXMgY29tbW9uIGNvZGUgYXMgc21hbGwgYXMgcG9zc2libGUuIGFuZCBnaXZlCiAgICBsb3dsZXZlbF9pbml0IGNhbiBoYXZlIG1vcmUgY29kZXMuCgogICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDE2ZjJmNWEzNTEwMDQxMjllNzllNzk4MTY2OTdhMzY3ZmQ5ZTU0NDYKQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KRGF0ZToJV2VkIEZlYiAxMSAxODozODoyNCAyMDA5ICswMTAwCgogICAgQWRkIG11bHRpLWNoaXAgTkFORCBzdXBwb3J0IGZvciB0aGUgVFFNODU0OCBtb2R1bGVzCgogICAgVGhpcyBwYXRjaGVzIGNvbmZpZ3VyZXMgdGhlIE5BTkQgVVBNLUZTTCBkcml2ZXIgd2l0aCBtdWx0aS1jaGlwCiAgICBzdXBwb3J0IGZvciB0aGUgTWljcm9uIE1UMjlGOEcwOEZBQiBOQU5EIGZsYXNoIG1lbW9yeSBvbiB0aGUKICAgIFRRTTg1NDggbW9kdWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDMzODQ2ZGYyOGZhMWY0Y2Y5NmE5NmMxODE0MmQ0OGQ4MTNjYWE4OTIKQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KRGF0ZToJV2VkIEZlYiAxMSAxODozODoyMyAyMDA5ICswMTAwCgogICAgQWRkIHdhaXQgZmxhZ3MgdG8gc3VwcG9ydCBib2FyZC9jaGlwIHNwZWNpZmljIGRlbGF5cwoKICAgIFRoZSBOQU5EIGZsYXNoIG9uIHRoZSBUUU04NTQ4X0JFIG1vZHVsZXMgcmVxdWlyZXMgYSBzaG9ydCBkZWxheSBhZnRlcgogICAgcnVubmluZyB0aGUgVVBNIHBhdHRlcm4gbGlrZSB0aGUgTVBDODM2MEVSREsgYm9hcmQgZG9lcy4gVGhlIFRRTTg1NDhfQkUKICAgIHJlcXVpcmVzIGEgZnVydGhlciBzaG9ydCBkZWxheSBhZnRlciB3cml0aW5nIG91dCBhIGJ1ZmZlci4gTm9ybWFsbHkgdGhlCiAgICBSL0IgcGluIHNob3VsZCBiZSBjaGVja2VkLCBidXQgaXQncyBub3QgY29ubmVjdGVkIG9uIHRoZSBUUU04NTQ4X0JFLgogICAgVGhlIGNvcnJlc3BvbmRpbmcgTGludXggRlNMIFVQTSBkcml2ZXIgdXNlcyBzaW1pbGFyIGRlbGF5IHBvaW50cyBhdCB0aGUKICAgIHNhbWUgbG9jYXRpb25zLiBUbyBtYW5hZ2UgdGhlc2UgZXh0cmEgZGVsYXlzIGluIGEgbW9yZSBnZW5lcmFsIHdheSwgSQogICAgaW50cm9kdWNlZCB0aGUgIndhaXRfZmxhZ3MiIGZpZWxkIGFsbG93aW5nIHRoZSBib2FyZC1zcGVjaWZpYyBkcml2ZXIgdG8KICAgIHNwZWNpZnkgdmFyaW91cyB0eXBlcyBvZiBleHRyYSBkZWxheS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDA2ZTlmN2RmMDU0ZDI2ZDdmNDljNTZiZjlhNjg0NGIxOTNhZDYzMTMKQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KRGF0ZToJV2VkIEZlYiAxMSAxODozODoyMiAyMDA5ICswMTAwCgogICAgQWRkIHN1cHBvcnQgZm9yIFRRTS1zcGVjaWZpYyBjaGlwIHNlbGVjdCBsb2dpYyB0byBGU0wtVVBNCgogICAgRm9yIHRoZSBOQU5EIGNoaXBzIG9uIHRoZSBUUU04NTQ4IG1vZHVsZXMsIGEgc3BlY2lhbCBjaGlwLXNlbGVjdCBsb2dpYyBpcwogICAgdXNlZC4gSXQgdXNlcyBkZWRpY2F0ZWQgYWRkcmVzcyBsaW5lcyB0byBiZSBzZXQgdmlhIFVQTSBtYWNoaW5lIGFkZHJlc3MKICAgIHJlZ2lzdGVyIChtYXIpLiBUaGlzIHBhdGNoIGFkZHMgc3VjaCBzdXBwb3J0IHRvIHRoZSBGU0wtVVBNIGRyaXZlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGU5M2MxYzE2OWQ0OWVkYTdiYWJhZDljNzgxZjU0MWUyZTM0ZjBmZjAKQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KRGF0ZToJV2VkIEZlYiAxMSAxODozODoyMSAyMDA5ICswMTAwCgogICAgQWRkIG11bHRpIGNoaXAgc3VwcG9ydCB0byB0aGUgRlNMLVVQTSBkcml2ZXIKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgbXVsdGktY2hpcCBOQU5EIGRldmljZXMgdG8gdGhlIEZTTC1VUE0KICAgIGRyaXZlci4gVGhlICJkZXZfcmVhZHkiIGNhbGxiYWNrIG9mIHRoZSAic3RydWN0IGZzbF91cG1fbmFuZCIgaXMgbm93CiAgICBjYWxsZWQgd2l0aCB0aGUgYXJndW1lbnQgImNoaXBfbnIiIHRvIGFsbG93IHRlc3RpbmcgdGhlIHByb3BlciBjaGlwCiAgICBzZWxlY3QgbGluZS4gVGhlIE5BTkQgc3VwcG9ydCBvZiB0aGUgTVBDODM2MEVSREsgaXMgdXBkYXRlZCBhcyB3ZWxsLgogICAgTm8gb3RoZXIgYm9hcmRzIGFyZSBjdXJyZW50bHkgdXNpbmcgdGhlIEZTTCBVUE0gZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjcyZWQyYWVlOTFiNDg1NmY2NjcxZmM3MmNkMzQxNjhkOGYxYjYyNApBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgpEYXRlOglXZWQgRmViIDExIDE4OjM4OjIwIDIwMDkgKzAxMDAKCiAgICBFbmFibGUgbXVsdGkgY2hpcCBzdXBwb3J0IGluIHRoZSBOQU5EIGxheWVyCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIE5BTkRfTUFYX0NISVBTIHRvIHRoZSBNVEQgTkFORCBsYXllci4KICAgIE11bHRpLWNoaXBzIGRldmljZXMgYXJlIGRpc3BsYXllZCBhcyBzaG93bjoKCiAgICAgIERldmljZSAwOiAyeCBOQU5EIDUxMk1pQiAzLDNWIDgtYml0LCBzZWN0b3Igc2l6ZSAxMjggS2lCCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3NDM5OGIyM2Y5YzJmZmRjMTM3ZmQ5MjkxMGE0NmUzMzMzZmI5M2Y5CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgT2N0IDExIDIxOjU4OjMzIDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogcHV0IG1lbW9yeSBpbnRvIHNlbGYtcmVmcmVzaCBiZWZvcmUvYWZ0ZXIgcHJvZ3JhbW1pbmcgY2xvY2tzCgogICAgV2hlbiBpbml0aWFsaXppbmcgdGhlIGNvcmUgY2xvY2tzLCBzdGljayBleHRlcm5hbCBtZW1vcnkgaW50byBzZWxmLXJlZnJlc2guCiAgICBUaGlzIGdhaW5zIHVzIGEgZmV3IGNvb2wgdGhpbmdzOgogICAgIC0gc3VwcG9ydCBzdXNwZW5kLXRvLVJBTSB3aXRoIExpbnV4CiAgICAgLSByZXByb2dyYW0gY2xvY2tzIGF1dG9tYXRpY2FsbHkgd2hlbiBkb2luZyAiZ28iIG9uIHUtYm9vdC5iaW4gaW4gUkFNCiAgICAgLSBtYWtlIHN1cmUgc2V0dGluZ3MgYXJlIHN0YWJsZSBiZWZvcmUgZmxhc2hpbmcgbmV3IHZlcnNpb24KICAgICAtIGZpbmFsbHkgZnVsbHkgdW5pZnkgaW5pdGlhbGl6ZSBzdGFydHVwIGNvZGUgcGF0aCBiZXR3ZWVuIExEUi9ub24tTERSCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGQzNDdkNTcyYWIxZjJkNDdiZjI1N2M5ZjdjYTJlNjAyMDM4YTEzNmIKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBPY3QgMTEgMjE6NTY6MDggMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBkbyBub3QgcHJvZ3JhbSB2b2x0YWdlIHJlZ3VsYXRvciBvbiBwYXJ0cyB0aGF0IGRvIG5vdCBoYXZlIG9uZQoKICAgIFNvbWUgbmV3ZXIgQmxhY2tmaW5zIChsaWtlIHRoZSBCRjUxeCkgZG8gbm90IGhhdmUgYW4gb24tY2hpcCB2b2x0YWdlCiAgICByZWd1bGF0b3IsIHNvIGRvIG5vdCBhdHRlbXB0IHRvIHByb2dyYW0gdGhlIG1lbW9yeSBhcyBpZiBpdCBkb2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAwZDRmMjRiNzBmN2E5NzlmNTgxNzRmM2ViMjcxODc0OTUwYjU1MWI2CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gSnVuIDEgMDE6Mjg6MjQgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBzZXR1cCBhIHNhbmUgZGVmYXVsdCBFQklVX1NEQkNUTCBmb3IgU0RSQU0gY29udHJvbGxlcnMKCiAgICBJZiB0aGUgYm9hcmQgY29uZmlnIGRvZXMgbm90IHNwZWNpZnkgYW4gZXhwbGljaXQgRUJJVV9TREJDVEwgdmFsdWUsIHNldCBpdAogICAgdXAgd2l0aCBzYW5lIHZhbHVlcyBiYXNlZCBvbiBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDM5ODZlOTgxZjU2NWMwOGYxMGM3ZTUyNmFmOGNiNTE4ZDc0MWMzNDkKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBEZWMgNiAxODowNjo1OCAyMDA4IC0wNTAwCgogICAgQmxhY2tmaW46IGhhbmRsZSByZWJvb3QgYW5vbWFseSA0MzIKCiAgICBXb3JrYXJvdW5kIGFub21hbHkgNDMyOgogICAgVGhlIGJmcm9tX1N5c0NvbnRyb2woKSBmaXJtd2FyZSBmdW5jdGlvbiBkb2VzIG5vdCBjbGVhciB0aGUgU0lDX0lXUjEKICAgIHJlZ2lzdGVyIGJlZm9yZSBleGVjdXRpbmcgdGhlIFBMTCBwcm9ncmFtbWluZyBzZXF1ZW5jZS4gIFRoZXJlZm9yZSwgYW55CiAgICBpbnRlcnJ1cHQgZW5hYmxlZCBpbiB0aGUgU0lDX0lXUjEgcmVnaXN0ZXIgcHJpb3IgdG8gdGhlIGNhbGwgdG8KICAgIGJmcm9tX1N5c0NvbnRyb2woKSBjYW4gcHJlbWF0dXJlbHkgdGVybWluYXRlIHRoZSBpZGxlIHNlcXVlbmNlIHJlcXVpcmVkCiAgICBmb3IgdGhlIFBMTCB0byByZWxvY2sgcHJvcGVybHkuIFNJQ19JV1IwIGlzIHByb3Blcmx5IGhhbmRsZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDdlMWQyMTJiNmRhNDkyYzZlYTMyYzYyYWY5MmUxODUyODRmNDEyOTEKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBPY3QgMTggMDQ6MDQ6NDkgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBraWxsIG9mZiBMRFIganVtcCBibG9jawoKICAgIFRoZSBCb290IFJPTSB1c2VzIEVWVDEgYXMgdGhlIGVudHJ5IHBvaW50IHNvIHNldCB0aGF0IHJhdGhlciB0aGFuIGhhdmluZwogICAgdG8gdXNlIGEgdGlueSBqdW1wIGJsb2NrIGluIHRoZSBkZWZhdWx0IEVWVDEgbG9jYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGE3NWZhMTQ4ZDYwYjE5NzU0MDM0NDFlNDU1NjU2MjFiYmE1MGQyZDkKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVR1ZSBKYW4gNiAxMDowMDo0OCAyMDA5IC0wNTAwCgogICAgQmxhY2tmaW46IHNpbXBsaWZ5IHN5bWJvbF9sb29rdXAoKSBhIGJpdAoKICAgIE5vIG5lZWQgdG8gc2tpcCBhIGJ5dGUgYXMgdGhlIHN5bWJvbCB0YWJsZSBoYW5kbGVzIHRoaXMuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDU5ZjA5NzhhN2U3OGQyMDI3N2RkYmRlN2NhZjBlYTg3N2YzY2ZkOTgKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBGZWIgNyAwNTo0MzoyMSAyMDA5IC0wNTAwCgogICAgQmxhY2tmaW46IGZpeCBTSUNfUlZFQ1QgZGVmaW5pdGlvbjogaXQgaXMgMTZiaXRzLCBub3QgMzJiaXRzCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDU4MTMwZjg5MjAxNTFkOWU4OTQyYmJkZjMzODhmMmRlZmI0N2U0MTUKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBGZWIgNyAwNTo0MToxNyAyMDA5IC0wNTAwCgogICAgQmxhY2tmaW46IGRyb3AgU1BPUlRfVFggcmVhZCBoZWxwZXIgbWFjcm9zCgogICAgVGhlIFNQT1JUX1RYIHJlZ2lzdGVycyBjYW5ub3QgYmUgcmVhZCAodGhlIGhhcmR3YXJlIHdpbGwgdHJpZ2dlciBhbiBlcnJvciksCiAgICBzbyBkcm9wIHRoZSByZWFkIGhlbHBlciBtYWNyb3MuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDgyMGIwNzZjNDQ5Njg4YmNkNGFmNmRiNWEzM2FlNDI0ZDFhNjBkMGUKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBGZWIgNyAwNToyNTozNSAyMDA5IC0wNTAwCgogICAgQmxhY2tmaW46IHVuaWZ5IGR1cGxpY2F0ZSBDUFUgcG9ydCBkZWZpbml0aW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA3NDRmZDI0MGQxODFiMGIwNWIxNDM2ZTFiNjU1YzlhNjI1MjZjNzUyCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglGcmkgRmViIDYgMDA6NTk6NTAgMjAwOSAtMDUwMAoKICAgIEJsYWNrZmluOiBkcm9wIG5vdy11bnVzZWQgQ09ORklHX1NZU19CRklOX0NNRF9YWFgKCiAgICBXaXRoIHRoZSBuZXcgQ09ORklHX1hYWCBzeXN0ZW0gYW5kIENPTkZJR19DTURfWFhYIGhhbmRsaW5nLCB0aGVzZSBkZWZpbmVzCiAgICBhcmUgbm8gbG9uZ2VyIHVzZWQvbmVlZGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA0NWM0ODk1M2U4YTQwMzhiZDQ5YzQ2ODEzZmNmZjVhMjA3ODY3YWU0CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gT2N0IDYgMDQ6MDE6MjYgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBwcmludCBvdXQgRmxhc2g6IGJlZm9yZSBjaGVja2luZyBpdAoKICAgIElmIHRoZXJlIGlzIHNvbWUgcHJvYmxlbSBpbiB0aGUgZmxhc2ggaW5pdC9jaGVja2luZyBjb2RlLCBpdCdzIG5pY2VyIHRvIHNlZQogICAgdGhlIG1lc3NhZ2UgIkZsYXNoOiIgYmVmb3JlIGNyYXNoaW5nLiAgVGhpcyB3YXkgdGhlIHNvdXJjZSBvZiB0aGUgcHJvYmxlbQogICAgaXMgYSBiaXQgbW9yZSBzdHJhaWdodGZvcndhcmQuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDFjN2E3OWEwNGViOTE2ZjY4NWY3Mjc1NTIwYjVlZWE2OTY4YTE1NTkKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBBdWcgNyAxNTozMzowOSAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IHNhZmVseSBmbHVzaCBkYXRhIGNhY2hlcyB3aGVuIGluIHdyaXRlYmFjayBtb2RlCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGMwNmYyYjEzMDIyNzAzNjExYmMzZTUxMmJkMzRmOTAxNGE0NmY0NDgKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBBdWcgNyAxMzoyMTo0OCAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IHVwZGF0ZSBsb2NrYm94IGFwaSBhY2NvcmRpbmcgdG8gbGF0ZXN0IGRvY3VtZW50YXRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMmRlY2MyYThkMTdhNTM5N2NiNTk1NmU0NmM4NDY2YzczNmUzMDVhMgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IE9jdCAxMSAyMTo0OTowNiAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IG1hcmsgYmZpbl9yZXNldCBzdGF0aWMKCiAgICBUaGUgZnVuY3Rpb24gaXMgb25seSB1c2VkIGxvY2FsbHksIHNvIG1hcmsgaXQgc3RhdGljLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA5NzQ0NzNjYWE3MzJmNjMzMTI2ODdlZjJiZDJkMjJkYWQ4ZTk5YjlhCkF1dGhvcjogU29uaWMgWmhhbmcgPFNvbmljLlpoYW5nQGFuYWxvZy5jb20+CkRhdGU6CUZyaSBNYXIgMjAgMTk6Mjg6MjAgMjAwOSAtMDQwMAoKICAgIEJsYWNrZmluOiBzcGk6IHRoZXJlIGlzIG5vIFBPUlRKX0ZFUiBNTVIgb24gQkY1MzcKCiAgICBTaW5jZSB0aGUgUE9SVEogb24gdGhlIEJGNTM3IGlzIHBlcmlwaGVyYWwtb25seSAobm8gR1BJTyBmdW5jdGlvbmFsaXR5KSwKICAgIHRoZW4gdGhlcmUgaXMgbm8gUE9SVEpfRkVSIHJlZ2lzdGVyIGZvciB1cyB0byB3b3JyeSBhYm91dC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTb25pYyBaaGFuZyA8U29uaWMuWmhhbmdAYW5hbG9nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBlODJiNzYyZjI5M2RlYmM1M2M1YWZhOTBmMzcyNjRmNmIwNzUyMGY5CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgTWFyIDE3IDEzOjU4OjIzIDIwMDkgLTA0MDAKCiAgICBCbGFja2ZpbjogZml4IGp0YWcgY29uc29sZSB0c3RjCgogICAgVGhlIGp0YWcgdHN0YyBvcGVyYXRpb24gd2FzIGNoZWNraW5nIHRoZSBoYXJkd2FyZSB0byBzZWUgaWYgZGF0YSBpcwogICAgYXZhaWxhYmxlIGZyb20gaXQgKHdoaWNoIGlzIGZpbmUgZm9yIHRoZSBqdGFnIGdldGMgb3BlcmF0aW9uKSwgYnV0IHRoZQogICAgaGlnaGVyIGxheWVycyBuZWVkIHRvIGtub3cgd2hldGhlciBhbnkgZGF0YSBpcyBhdmFpbGFibGUuICBTaW5jZSB3ZSBoYXZlCiAgICB0byByZWFkIHVwIHRvIDQgYnl0ZXMgYXQgYSB0aW1lIGZyb20gdGhlIGhhcmR3YXJlLCB0aGUgaGlnaGVyIGxheWVycyBuZWVkCiAgICB0byBrbm93IHRoZXkgY2FuIGNvbnN1bWUgdGhlIGNhY2hlZCBieXRlcyBhcyB3ZWxsLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBiYzY4M2Y1OGIxZjFkOGQyMDU0NmZlMDE5NDgzOTY3YTUxYTQ5ZGYxCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gRmViIDIyIDE2OjIzOjQxIDIwMDkgLTA1MDAKCiAgICBCbGFja2ZpbjogYmY1Mzctc3RhbXA6IG1vdmUgQ09ORklHX1BPU1QgaGFuZGxpbmcgdG8gQ09CSlMtJCguLi4pCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDg5OTZkMTYwOGFjYjhmNTlmY2IxODZkYzdlZDdkODdmOGZlZTEyOTcKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVN1biBGZWIgMjIgMTY6MDI6MjcgMjAwOSAtMDUwMAoKICAgIEJsYWNrZmluOiB1bmlmeSBuZXQtcmVsYXRlZCBpbml0IGNvZGUKCiAgICBVbmlmeSBhbGwgb2YgdGhlIG5ldC1yZWxhdGVkIGluaXQgY29kZSBpbiB0aGUgY29tbW9uIEJsYWNrZmluIGJvYXJkIGluaXQKICAgIGNvZGUgdG8gY2xlYW4gdXAgdGhlIGlmZGVmIG1lc3MgYSBiaXQuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGM2ZWEzMGU1MmVhODJhZjQ4NThkMmI2Zjk5ZTBmZDJlYTI3NmQ2NTcKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBGZWIgMTggMTI6NTE6NDggMjAwOSAtMDUwMAoKICAgIEJsYWNrZmluOiBmaXggU1dSU1QvU1lTQ1IgcmVnaXN0ZXIgc2l6ZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYTlkNjc3N2QzOTE1NDk3OGI5ZWY5YzY4MmIyNjI3YTM0ODBiMTk0YwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIEZlYiAxOCAxMjo1MTozMSAyMDA5IC0wNTAwCgogICAgQmxhY2tmaW46IHVwZGF0ZSBhbm9tYWx5IGxpc3RzCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDRkN2MzMmRhZDJlNzg3Zjg5MGViY2Q1MWJmYjcyM2ExMjY5MTNjOTAKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUaHUgTWFyIDE5IDE4OjMxOjM4IDIwMDkgKzAxMDAKCiAgICBhdnIzMjogZml4IGNhY2hlZmx1c2guaCBsb2NhdGlvbiBpbnRyb2R1Y3RlZCBieSBkOGYyYWEzMjk4NjEwYgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgM2EzYmFmM2VlNjFlNmIyOGFmM2I0OWViYWJjOWFiNGY2MDE1YWE0OApBdXRob3I6IEVyaWMgU2NodW1hbm4gPEUuU2NodW1hbm5AcGh5dGVjLmRlPgpEYXRlOglTYXQgTWFyIDIxIDA5OjU5OjM0IDIwMDkgLTA0MDAKCiAgICBNYWtlIGZsYXNoIHByb3RlY3Rpb24gd29yaywgd2hlbiB0aGUgZW52aXJvbm1lbnQgaXMgaW4gRUVQUk9NCgogICAgT24gdGhlIHBjbTAzMCB0aGUgZW52aXJvbm1lbnQgaXMgbG9jYXRlZCBpbiB0aGUgb25ib2FyZCBFRVBST00uIEJ1dCB3ZSB3YW50CiAgICB0byBoYW5kbGUgZmxhc2ggc2VjdG9yIHByb3RlY3Rpb24gaW4gYSBzYWZlIG1hbm5lci4gU28gd2UgbXVzdCByZWFkIHRoZQogICAgdW5sb2NrIGVudmlyb25tZW50IHZhcmlhYmxlIGZyb20gRUVQUk9NIGluc3RlYWQgZnJvbSBmbGFzaC4KCiAgICBUaGlzIHBhdGNoIGlzIHJlcXVpcmVkIGFzIGxvbmcgdGhlIGV2aXJvbm1lbnQgaXMgc2F2ZWQgaW50byB0aGUgRUVQUk9NLgoKICAgIFN0ZWZhbjogQWRkaXRpb25hbCBjaGFuZ2UgYXMgc3VnZ2VzdGVkIGJ5IFdvbGZnYW5nLCB1c2UgYmlnZ2VyIGNoYXIgYXJyYXkKICAgIChpbnN0ZWFkIG9mIDQpLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVyaWMgU2NodW1hbm4gPEUuU2NodW1hbm5AcGh5dGVjLmRlPgogICAgU2lnbmVkLW9mZi1ieTogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgogICAgQWNrZWQtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZGUzY2U4YzU5ZjQ4Zjk5Nzc5ZDdkNzM3OWE1NDMyZGVkMTJlYzA2YwpBdXRob3I6IEpvbiBTbWlybCA8am9uc21pcmxAZ21haWwuY29tPgpEYXRlOglTYXQgTWFyIDIxIDExOjE3OjU2IDIwMDkgLTA0MDAKCiAgICBBZGQgZGVmaW5lIGZvciBtcGM1MjAwIENETV9DTEtfRU5BCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIFNtaXJsIDxqb25zbWlybEBnbWFpbC5jb20+Cgpjb21taXQgZGY0ODZiMWZhM2Y3NTBiMTUzZWFjN2RhYTBiM2JmMWY1OTRlNTA5OApBdXRob3I6IE5pY29sYXMgRmVycmUgPG5pY29sYXMuZmVycmVAYXRtZWwuY29tPgpEYXRlOglTdW4gTWFyIDIyIDE0OjQ4OjE2IDIwMDkgKzAxMDAKCiAgICBhdDkxOiBTdXBwb3J0IGZvciB0aGUgYXQ5MXNhbTlnMjAgOiBBdG1lbCA0MDBNaHogQVJNIDkyNmVqLXMgU09DLgoKICAgIEFUOTFzYW05ZzIwIGlzIGFuIGV2b2x1dGlvbiBvZiB0aGUgYXQ5MXNhbTkyNjAgd2l0aCBhIGZhc3RlciBjbG9jayBzcGVlZC4KCiAgICBUaGUgQVQ5MVNBTTlHMjAtRUsgYm9hcmQgaXMgYW4gdXBkYXRlZCByZXZpc2lvbiBvZiB0aGUgQVQ5MVNBTTkyNjAtRUsgYm9hcmQuCiAgICBJdCBpcyBlc3NlbnRpYWxseSB0aGUgc2FtZSwgd2l0aCBhIGZldyBtaW5vciBkaWZmZXJlbmNlcy4KCiAgICBIZXJlIGlzIHRoZSBjaGlwIHBhZ2Ugb24gQXRtZWwgd2Vic2l0ZToKICAgIGh0dHA6Ly93d3cuYXRtZWwuY29tL2R5bi9wcm9kdWN0cy9wcm9kdWN0X2NhcmQuYXNwP3BhcnRfaWQ9NDMzNwoKICAgIFNpZ25lZC1vZmYtYnk6IEp1c3RpbiBXYXRlcnMgPGp1c3Rpbi53YXRlcnNAdGltZXN5cy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOaWNvbGFzIEZlcnJlIDxuaWNvbGFzLmZlcnJlQGF0bWVsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMTE4ZDE2ODAzNWNjOTNmNTg2ZGE0ODEyYzg5Y2IxNTNlYjlmNDI0MwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBNYXIgMjIgMTQ6Mjg6MTQgMjAwOSArMDEwMAoKICAgIGNtY19wdTI6IGZpeCBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnZXRoX3NldGVudl9lbmV0YWRkcicKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDE3NmM0YTk4MmM2NTMxZjk2NDI2YWZhYTExMjZjZjlhNWUyZDVlMDMKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gTWFyIDIyIDE0OjI4OjEzIDIwMDkgKzAxMDAKCiAgICBjbWNfcHUyOiBmaXggbWlzY19pbml0X3IgcHJvdG90eXBlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA1MzE1OGFlYTk5NTIyMTcwNmI0MmM3YmFkOWY3MTdiMzFhZTIwNDE0CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIEphbiAxMSAwMzozMjowMSAyMDA5ICswMTAwCgogICAgYXQ5MXNhbTl4ZWVrOiBmaXggc29jIG5hbWUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDc0YzA3NmQ2YzMzZDZkNDJhYjA2NTU0MWEzODM4MzU4Nzg3OWU3YjcKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gTWFyIDIyIDEwOjIyOjM0IDIwMDkgKzAxMDAKCiAgICBhdDkxc2FtOS9hdDkxY2FwOiBtb3ZlIG5hbmQgZHJpdmVycyB0byBkcml2ZXJzL210ZC9uYW5kCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAxNjM5NjYwODdkNjI2ODA1NDdmMTg4YTkzYzYxZDAxYzgxNTUyNTRlCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IE1hciAyMSAyMTowODowMSAyMDA5ICswMTAwCgogICAgYXRtZWwvYXQ5MS9ib2FyZHM6IGNvbXBpbGUgZGF0YWZsYXNoIHBhcnRpdGlvbiBvbmx5IHdoZW4gZGF0YWZsYXNoIGlzCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBlMmMwNDc2Zjk1OGY4ZTBiMjY5YTExMThmNGJhNGE1Y2Q0NzVhYTU2CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IE1hciAyMSAyMTowODowMCAyMDA5ICswMTAwCgogICAgYXQ5MXNhbTkvYXQ5MWNhcDogbW92ZSBjb21tb24gbWFjYiBpbml0aWFsaXNhdGlvbiB0byBjcHUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGYzZjkxZjg4NmJjODkyN2ZkNjkyYWM0MTFiNzQyM2E4N2ZmZWM1MzIKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgTWFyIDIxIDIxOjA4OjAwIDIwMDkgKzAxMDAKCiAgICBhdDkxc2FtOS9hdDkxY2FwOiBtb3ZlIGNvbW1vbiB1c2IgaG9zdCBpbml0aWFsaXNhdGlvbiB0byBjcHUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGE0ODRiMDBiODZlNzJhYzZkYTZlZTRmY2UxM2RiYzZiMjU2NjcyZmUKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgTWFyIDIxIDIxOjA4OjAwIDIwMDkgKzAxMDAKCiAgICBhdDkxc2FtOS9hdDkxY2FwOiBtb3ZlIGNvbW1vbiBsZWQgbWFuYWdlbWVudCB0byBjcHUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDdlYmFmYjdlYzFhMDI4NWFmODM4MDYyM2MwMDk1NzZmOTI1ODNiOTgKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgTWFyIDIxIDIxOjA3OjU5IDIwMDkgKzAxMDAKCiAgICBhdDkxc2FtOS9hdDkxY2FwOiBtb3ZlIGNvbW1vbiBzcGkgaW5pdGlhbGlzYXRpb24gdG8gY3B1CgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAxMzMyYTJhMDY5NGM4ZTEwYTViYWRlMzk3Y2Y4MzY0NWIyYzNmZDdlCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IE1hciAyMSAyMTowNzo1OSAyMDA5ICswMTAwCgogICAgYXQ5MXNhbTkvYXQ5MWNhcDogbW92ZSBjb21tb24gc2VyaWFsIGluaXRpYWxpc2F0aW9uIHRvIGNwdQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZTYwYmViMTNjZjAxMzVkYzcxYzU0MTAyMTQ4N2I1Y2NjNGQyNjljYgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBNYXIgMjEgMjI6MDQ6NDEgMjAwOSArMDEwMAoKICAgIFByZXBhcmUgMjAwOS4wMwoKICAgIFVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDllNzhkYWUyYjI3NmM1YmY5YWI5MmNkODUxNzNmNmNiOTJiMWI3ZDUKQXV0aG9yOiBWaXZlayBLdXRhbCA8dml2ZWsua3V0YWxAYXppbmdvLmNvbT4KRGF0ZToJTW9uIEZlYiAyMyAyMTozNToxMSAyMDA5ICswNTMwCgogICAgUmVwbGFjZWQgZW5kcG9pbnQgbnVtYmVycyB3aXRoIGFwcHJvcHJpYXRlIG1hY3JvcyBpbiB1c2J0dHkuYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBWaXZlayBLdXRhbCA8dml2ZWsua3V0YWxAYXppbmdvLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IGZhYWM0ZmQ4NTJlMzljYjFkN2E3NDA4MDFiMDYwZTQxYWVhY2VmMWYKQXV0aG9yOiBNaWNoYWVsIExhd25pY2sgPG1sLmxhd25pY2tAZ214LmRlPgpEYXRlOglUaHUgTWFyIDE5IDEwOjA2OjQxIDIwMDkgKzAxMDAKCiAgICBVQklGUzogTWlzc2luZyBvZmZzZXQgcmVsb2NhdGlvbiBmb3IgY29tcHJlc3NvciAnbm9uZScKCiAgICBPbiBzeXN0ZW1zIHdoZXJlIFUtQm9vdCBpcyBsaW5rZWQgdG8gYW5vdGhlciBhZGRyZXNzIHRoYW4gaXQgcmVhbGx5IGxheXMKICAgIChlLmcuIGJhY2t1cCBpbWFnZSksIGNhbGxzIHZpYSBmdW5jdGlvbiBwb2ludGVycyBtdXN0IGJlIGZpeGVkIHdpdGggYQogICAgJys9IGdkLT5yZWxvY19vZmYnLgogICAgVGhpcyB3YXMgbm90IGRvbmUgZm9yIG5vbmVfY29tcHIgaW4gdWJpZnNfY29tcHJlc3NvcnNfaW5pdCgpIHdoYXQgbGVhZHMKICAgIHRvIHN5c3RlbSBjcmFzaCBvbiB1Ymlmc21vdW50IGNvbW1hbmQuCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBMYXduaWNrIDxtbC5sYXduaWNrQGdteC5kZT4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgY2U2ZDBjOGRlMDMxZjM0NWJkZTc0NWYzYjg1NTA4MmFkZjFjNGU0NQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE1hciAxOSAxNTozNTo1MCAyMDA5ICswMTAwCgogICAgVUJJRlM6IEFkZCBVQklGUyBjb21tYW5kcwoKICAgIFRoaXMgcGF0Y2hzZXQgYWRkcyB0aGVzZSBVQklGUyByZWxhdGVkIGNvbW1hbmRzOgoKICAgIC0gdWJpZnNtb3VudAogICAgICBNb3VudCBhbiBVQklGUyB2b2x1bWUKCiAgICAtIHViaWZzbHMKICAgICAgTGlzdCBhIGRpcmVjdG9yeSBvZiB0aGUgbW91bnRlZCBVQklGUyB2b2x1bWUKCiAgICAtIHViaWZzbG9hZAogICAgICBMb2FkIGEgZmlsZSBmcm9tIHRoZSBtb3VudGVkIFVCSUZTIHZvbHVtZSB0byBtZW1vcnkKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOWVlZmUyYTJiMzdhODM4NTU4ZTNkMjEzYTlmNTUxOTUwM2QwYzE4MApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE1hciAxOSAxNTozNTowNSAyMDA5ICswMTAwCgogICAgVUJJRlM6IEltcGxlbWVudCByZWFkLW9ubHkgVUJJRlMgc3VwcG9ydCBpbiBVLUJvb3QKCiAgICBUaGUgVS1Cb290IFVCSUZTIGltcGxlbWVudGF0aW9uIGlzIGxhcmdlbHkgYSBkaXJlY3QgY29weSBmcm9tIHRoZSBjdXJyZW50CiAgICBMaW51eCB2ZXJzaW9uICgyLjYuMjktcmM2KS4gQXMgYWxyZWFkeSBkb25lIGluIHRoZSBVQkkgdmVyc2lvbiB3ZSBoYXZlIGFuCiAgICAiYWJzdHJhY3Rpb24gbGF5ZXIiIHRvIHJlZGVmaW5lIG9yIHJlbW92ZSBzb21lIE9TIGNhbGxzIChlLmcuIG11dGV4X2xvY2soKQogICAgLi4uKS4gVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byB1c2UgdGhlIG9yaWdpbmFsIExpbnV4IGNvZGUgd2l0aCB2ZXJ5CiAgICBsaXR0bGUgY2hhbmdlcy4gQW5kIGJ5IHRoaXMgd2UgY2FuIGJldHRlciB1cGRhdGUgdG8gbGF0ZXIgTGludXggdmVyc2lvbnMuCgogICAgSSByZW1vdmVkIHNvbWUgb2YgdGhlIExpbnV4IGZlYXR1cmVzIHRoYXQgYXJlIG5vdCB1c2VkIGluIHRoZSBVLUJvb3QKICAgIHZlcnNpb24gKGUuZy4gZ2FyYmFnZS1jb2xsZWN0aW9uLCB3cml0ZSBzdXBwb3J0KS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBDQzogQXJ0ZW0gQml0eXV0c2tpeSA8ZGVkZWtpbmRAaW5mcmFkZWFkLm9yZz4KICAgIENDOiBBZHJpYW4gSHVudGVyIDxleHQtQWRyaWFuLkh1bnRlckBub2tpYS5jb20+Cgpjb21taXQgYjFiNGU4OWEwZjNiNzU4NTRjMzlhNjJjYWU0MWJhZDU2ZDIxMGFkZgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE1hciAxOSAxNTozNDo1NiAyMDA5ICswMTAwCgogICAgQWRkIExaTyBkZWNvbXByZXNzb3Igc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBMWk8gZGVjb21wcmVzc2lvbiBzdXBwb3J0IHRvIFUtQm9vdC4gSXQgaXMgbmVlZGVkIGZvcgogICAgdGhlIHVwY29taW5nIFVCSUZTIHN1cHBvcnQsIHNpbmNlIFVCSUZTIHVzZXMgTFpPIGFzIGRlZmF1bHQgY29tcHJlc3Nvci8KICAgIGRlY29tcHJlc3Nvci4gU2luY2Ugd2Ugb25seSBzdXBwb3J0IHJlYWQtb25seSBpbiBVQklGUywgb25seSB0aGUKICAgIGRlY29tcHJlc3NvciBpcyBuZWVkZWQuCgogICAgQWxsIHRoaXMgaXMgY29waWVkIHdpdGggbWlub3IgY2hhbmdlcyBmcm9tIHRoZSBjdXJyZW50IExpbnV4IGtlcm5lbAogICAgdmVyc2lvbiAoMi42LjI4LXJjOCkuCgogICAgVGhpcyBwYXRjaCBvbmx5IGltcGxlbWVudHMgdGhpcyBMWk8gZGVjb21wcmVzc29yIHN1cHBvcnQgZm9yIFBQQy4KICAgIE90aGVyIHBsYXRmb3JtcyB1c2luZyBVQklGUyB3aWxsIGhhdmUgdG8gYWRkIHRoZSByZXF1aXJlZAogICAgImluY2x1ZGUvYXNtL3VuYWxpZ25lZC5oIiBhcyB3ZWxsLiBJdCBzaG91bGQgYmUgZmFpcmx5IGVhc3kgdG8gY29weSB0aGlzCiAgICBmcm9tIHRoZSBMaW51eCBzb3VyY2UgdHJlZSBhcyBJIGhhdmUgZG9uZSBpdCBmb3IgUFBDIGluIHRoaXMgcGF0Y2guCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDY4ZDdkNjUxMDBlODRkZjAwYmNhOTcxYzExNDA5MjczMWI0NDEwOTAKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBNYXIgMTkgMTM6MzA6MzYgMjAwOSArMDEwMAoKICAgIFNlcGFyYXRlIG10ZHBhcnRzIGNvbW1hbmQgZnJvbSBqZmZzMgoKICAgIEN1cnJlbnRseSB0aGUgbXRkcGFydHMgY29tbWFuZHMgYXJlIGluY2x1ZGVkIGluIHRoZSBqZmZzMiBjb21tYW5kIHN1cHBvcnQuCiAgICBUaGlzIGRvZXNuJ3QgbWFrZSBzZW5zZSBhbnltb3JlIHNpbmNlIG90aGVyIGNvbW1hbmRzIChlLmcuIFVCSSkgdXNlIHRoaXMKICAgIGluZnJhc3RydWN0dXJlIGFzIHdlbGwgbm93LiBUaGlzIHBhdGNoIHNlcGFyYXRlcyB0aGUgbXRkcGFydHMgY29tbWFuZHMgZnJvbQogICAgdGhlIGpmZnMyIGNvbW1hbmRzIG1ha2luZyBpdCBwb3NzaWJsZSB0byBvbmx5IHNlbGVjdCBtdGRwYXJ0cyB3aGVuIG5vIEpGRlMyCiAgICBzdXBwb3J0IGlzIG5lZWRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgoKY29tbWl0IDAyYTMwMWNkNTA4N2VhZmZkZjQ1NmUwYTVjZWMxMTAwYzRkOWEzOTgKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBGZWIgMjUgMTI6MTE6MTUgMjAwOSArMDEwMAoKICAgIHBvd2VycGM6IE9ubHkgdXNlIGV0aF9nZXRlbnZfZW5ldGFkZHIoKSBpZiBuZXR3b3JraW5nIGlzIGVuYWJsZWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNWM0ZmE5YjQ3NGFmOTVkNjBmMDE5ZWM2MzY5Y2JlNzdiOWRhYjRiNQpBdXRob3I6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgTWFyIDE3IDEwOjA2OjQwIDIwMDkgKzAxMDAKCiAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIGRpZ3N5IE1UQyBib2FyZC4KCiAgICBUaGlzIGlzIHRoZSBJbnRlckNvbnRyb2wgY3VzdG9tIGRldmljZSBiYXNlZCBvbiB0aGUgTVBDNTIwMEIgY2hpcC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KCmNvbW1pdCBmZjdkYzA2NzM2OWUzMDA2Njc0NGYwOTY5OTVhZWY3ZDk3NTc0ZDE1CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gRmViIDIzIDE2OjUyOjM2IDIwMDkgKzAxMDAKCiAgICBwb3dlcnBjOiBGaXggY29tcGlsYXRpb24gd2FybmluZyBpbiBib2FyZC5jCgogICAgRml4IHRoaXMgd2FybmluZzoKCiAgICBib2FyZC5jOiBJbiBmdW5jdGlvbiAnYm9hcmRfaW5pdF9yJzoKICAgIGJvYXJkLmM6NjUzOiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ2knCiAgICBib2FyZC5jOjY1MTogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdlJwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5Y2Q2OTAxNjBkM2NlMWE3ZmI0Y2VlZWU2Yzk5Y2VkYjFhYzFkNDljCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gRmViIDIzIDE2OjQyOjUxIDIwMDkgKzAxMDAKCiAgICBwcGM0eHg6IERvbid0IHdyaXRlIHRoZSBNQUMgYWRkcmVzcyBpbnRvIHRoZSBpbnRlcm5hbCBTb0MgcmVnaXN0ZXJzCgogICAgUmVtb3ZlIHRoaXMgY29kZS4gSXQncyBub3QgbmVlZGVkLiBUaGUgNHh4IEVNQUMgZHJpdmVyIHN0b3JlcyB0aGUgTUFDCiAgICBhZGRyZXNzZXMgaW50byB0aGUgU29DIHJlZ2lzdGVycyBpbnN0ZWFkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBiYjU3YWQ0YmU3NmQwZTJlN2Y5ZWM1NjY3ODIzNWNjOTg3MmZmNDBmCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CUZyaSBGZWIgMjAgMTA6MTk6MTkgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogVXNlIGNvcnJlY3QgaW8gYWNjZXNzb3JzIGZvciBlc2QgNDA1LzQ0MCBib2FyZHMKCiAgICBUaGlzIHBhdGNoIHJlcGxhY2VzIGluL291dDgvMTYvMzIgbWFjcm9zIGJ5IGluL291dF84L19iZTE2L19iZTMyCiAgICBtYWNyb3MuIEFsc28gdm9sYXRpbGUgcG9pbnRlciByZWZlcmVuY2VzIGFyZSByZXBsYWNlZCBieSB0aGUKICAgIG5ldyBhY2Nlc3NvcnMuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwNDkyMTZmMDQ1ZmQ4ZTBmNDViY2VmMTIxYzJiYjFjN2QzZGU2OTg4CkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CUZyaSBGZWIgMjAgMTA6MTk6MTggMjAwOSArMDEwMAoKICAgIHBwYzR4eDogVXNlIGNvcnJlY3QgaW8gYWNjZXNzb3JzIGZvciBlc2QgNDA1IGJvYXJkcwoKICAgIFRoaXMgcGF0Y2ggcmVwbGFjZXMgaW4vb3V0OC8xNi8zMiBtYWNyb3MgYnkgaW4vb3V0XzgvX2JlMTYvX2JlMzIKICAgIG1hY3Jvcy4gQWxzbyB2b2xhdGlsZSBwb2ludGVyIHJlZmVyZW5jZXMgYXJlIHJlcGxhY2VkIGJ5IHRoZQogICAgbmV3IGFjY2Vzc29ycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGE1OTIwNWQxNTE5Mzc1ZDAyN2Y5N2E1NDVhZDY0MmFiMjBmY2U2ZjgKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJRnJpIEZlYiAyMCAxMDoxOToxNyAyMDA5ICswMTAwCgogICAgcHBjNHh4OiBDbGVhbnVwIGxpbmtlciBzY3JpcHRzIG9mIGVzZCA0eHggYm9hcmRzCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyZjEwM2VlMjg0ZTY4OTM0YTY0ODczMmRiNWUwYjZjZWI0YTFlZDhmCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CUZyaSBGZWIgMjAgMTA6MTk6MTYgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogVXBkYXRlIFRFWFRfQkFTRSBmb3IgREFTQV9TSU0gYm9hcmRzCgogICAgRml4IGJ1aWxkaW5nIERBU0FfU0lNIGJvYXJkcyBieSBpbmNyZWFzaW5nIFUtQm9vdCdzIHNpemUgaW4gZmxhc2guCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwOWRiOGY0ZGU2ODA1ZjFkZGU1MTBjMTY3ZjIwZTU2YTU0MDVkMjllCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CUZyaSBGZWIgMjAgMTA6MTk6MTUgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogRFU0MDUgbWFpbnRlbmFuY2UgZml4CgogICAgLXN0cmlwIHVudXNlZCBmZWF0dXJlcwogICAgLWZpeCByZXNldHRpbmcgcGh5CgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3NTUxMWI0N2FjMjY0N2JlNDgyMThkYmI5M2FmMDViMjFmNDA0ZjY3CkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CUZyaSBGZWIgMjAgMTA6MTk6MTQgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogQWJvcnQgYXV0b2Jvb3Qgb25seSBieSBzcGFjZSBrZXkgb24gQ1BDSTQwNSBib2FyZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlMTdlZTE1N2NhOWZmMGQ0Y2M1ODQxZDA2YzRiNzBjMTYwM2RmMjljCkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJVHVlIEZlYiAyNCAyMToxNDo1NiAyMDA5ICsxMTAwCgogICAgQWRkIGJhc2ljIHJlbG9jYXRpb24gdG8gaTM4NiBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KCmNvbW1pdCA4YzYzZDQ3NjUxZjc3ZDlmYjg4N2NhZDQzMzM3MGI4NjZlYjBhMTkzCkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJVHVlIEZlYiAyNCAyMToxNDo0NSAyMDA5ICsxMTAwCgogICAgSW1wbGVtZW50IFNDNTIwIHRpbWVycwoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzcyBhdCBnbWFpbC5jb20+Cgpjb21taXQgNmQ3ZjYxMGIwOWY4MTNiMTIzOWVlZGNiZmU5MjFjZmQ0MzlhZWEyNQpBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CVR1ZSBGZWIgMjQgMjE6MTQ6MzIgMjAwOSArMTEwMAoKICAgIEZhY3RvciBvdXQgU0M1MjAgc3ViLWZlYXR1cmVzCgogICAgTW92ZWQgc3ViLWZlYXR1cmVzIG9mIHRoZSBTQzUyMCBjb2RlIHdoaWNoIGlzIGN1cnJlbnRseSBzZWxlY3RpdmVseSBjb21waWxlZAogICAgdXNpbmcgI2lmZGVmIG91dCBvZiBzYzUyMC5jIGludG8gaW5kaXZpZHVhbCBmaWxlcyBzZWxlY3RpdmVseSBjb21waWxlZCB2aWEKICAgIHRoZSBtYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzcyBhdCBnbWFpbC5jb20+Cgpjb21taXQgYWJmMGNkM2RmZjIyN2NmYjZlODJhZDEzYmU2MmUyOGU2ZTg5ZDVkZgpBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CVR1ZSBGZWIgMjQgMjE6MTM6NDAgMjAwOSArMTEwMAoKICAgIFJld3JpdGUgaTM4NiBpbnRlcnJ1cHQgaGFuZGxpbmcKCiAgICBSZXdyaXRlIGludGVycnVwdCBoYW5kbGluZyBmdW5jdGlvbmFsaXR5IGZvciB0aGUgaTM4NiBwb3J0LiBTZXBhcmF0ZWQKICAgIGZ1bmN0aW9uYWxpdHkgaW50byBzZXBhcmF0ZSBDUFUgYW5kIEFyY2hpdGVjdHVyZSBjb21wb25lbnRzLgoKICAgIEl0IGFwcGVhcnMgYXMgaWYgdGhlIGkzODYgaW50ZXJydXB0IGhhbmRsZXIgZnVuY3Rpb25hbGl0eSB3YXMgaW50ZW5kZWQKICAgIHRvIGFsbG93IG11bHRpcGxlIGhhbmRsZXJzIHRvIGJlIGluc3RhbGxlZCBmb3IgYSBnaXZlbiBpbnRlcnJ1cHQuCiAgICBVbmZvcnR1bmF0ZWx5LCB0aGlzIGZ1bmN0aW9uYWxpdHkgd2FzIG5vdCBmdWxseSBpbXBsZW1lbnRlZCBhbmQgYWxzbwogICAgaGFkIHRoZSBwcm9ibGVtIHRoYXQgaXJxX2ZyZWVfaGFuZGxlcigpIGRvZXMgbm90IGFsbG93IHRoZSBwYXNzaW5nCiAgICBvZiB0aGUgaGFuZGxlciBmdW5jdGlvbiBwb2ludGVyIGFuZCB0aGVyZWZvcmUgY291bGQgbmV2ZXIgYmUgdXNlZCB0bwogICAgZnJlZSBzcGVjaWZpYyBoYW5kbGVycyB0aGF0IGhhZCBiZWVuIGluc3RhbGxlZCBmb3IgYSBnaXZlbiBJUlEuCgogICAgVGhlcmUgd2VyZSBhbHNvIHZhcmlvdXMgaXNzdWVzIHdpdGggYXJyYXkgYm91bmRzIG5vdCBiZWluZyBmdWxseQogICAgdGVzdGVkLgoKICAgIEkgaGFkIHR3byBvYmplY3RpdmVzIGluIG1pbmQgZm9yIHRoZSBuZXcgaW1wbGVtZW50YXRpb246CgogICAgMSkgS2VlcCB0aGUgaW1wbGVtZW50YXRpb24gYXMgc2ltaWxhciBhcyBwb3NzaWJsZSB0byBleGlzdGluZwogICAgICAgaW1wbGVtZW50YXRpb25zLiBUbyB0aGF0IGVuZCwgSSBoYXZlIHVzZWQgdGhlIGxlb24yLzMKICAgICAgIGltcGxlbWVudGF0aW9ucyBhcyB0aGUgcmVmZXJlbmNlCgogICAgMikgU2VwZXJhdGUgQ1BVIGFuZCBBcmNoaXRlY3R1cmUgc3BlY2lmaWMgZWxlbWVudHMuIEFsbCBzcGVjaWZpYyBpMzg2CiAgICAgICBpbnRlcnJ1cHQgZnVuY3Rpb25hbGl0eSBpcyBub3cgaW4gY3B1L2kzODYvIHdpdGggdGhlIGhpZ2ggbGV2ZWwKICAgICAgIEFQSSBhbmQgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGNvZGUgaW4gbGliX2kzODYuIEZ1bmN0aW9uYWxpdHkKICAgICAgIHNwZWNpZmljIHRvIHRoZSBQQy9BVCBhcmNoaXRlY3R1cmUgKGkuZS4gY2FzY2FkZWQgaTgyNTkgUElDcykgaGFzCiAgICAgICBiZWVuIGZ1cnRoZXIgc3BsaXQgb3V0IGludG8gYW4gaW5kaXZpZHVhbCBmaWxlIHRvIGFsbG93IGZvciB0aGUKICAgICAgIGltcGxlbWVudGF0aW9uIG9mIHRoZSBQSUMgYXJjaGl0ZWN0dXJlIG9mIHRoZSBTQzUyMCBDUFUgKHN1cHBvcnRzCiAgICAgICBtb3JlIElSUXMpCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzIGF0IGdtYWlsLmNvbT4KCmNvbW1pdCBlY2U0NDRiNDJiNzFlYjViY2UzNGEyNGVjNTg0NTczYjNjOGM0YTk4CkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJVHVlIEZlYiAyNCAyMToxMjozNSAyMDA5ICsxMTAwCgogICAgTW92ZSBhbGk1MTJ4LmgKCiAgICBNb3ZlZCBhbGk1MTJ4LmggZnJvbSBpbmNsdWRlL2FzbS1pMzg2L2ljLyB0byAvaW5jbHVkZQoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzcyBhdCBnbWFpbC5jb20+Cgpjb21taXQgNmQ4M2UzYWM2MWRjZGJjYjdmMDQ2NjQzMDlhOTY4OWZlMDFjNTcwNApBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CVR1ZSBGZWIgMjQgMjE6MTI6MjAgMjAwOSArMTEwMAoKICAgIFJlbmFtZSBTQzUyMCBDb25maWd1cmF0aW9uIE9wdGlvbnMKCiAgICBPcHRpb25zIGFyZSBub3cgYWxsIHVuaWZvcm1seSBDT05GSUdfU1lTX1NDNTIwXzxvcHRpb24+CgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzIGF0IGdtYWlsLmNvbT4KCmNvbW1pdCBmNjJmYjk5OTQxYzYyNTYwNWFhMTZhMDA5N2IzOTZhNWMxNmQyYzg4CkF1dGhvcjogVHJlbnQgUGllcGhvIDx4eXp6eUBzcGVha2Vhc3kub3JnPgpEYXRlOglXZWQgRmViIDE4IDE1OjIyOjA1IDIwMDkgLTA4MDAKCiAgICBGaXggYWxsIGxpbmtlciBzY3JpcHQgdG8gaGFuZGxlIGFsbCByb2RhdGEgc2VjdGlvbnMKCiAgICBBIHJlY2VudCBnY2MgYWRkZWQgYSBuZXcgdW5hbGlnbmVkIHJvZGF0YSBzZWN0aW9uIGNhbGxlZCAnLnJvZGF0YS5zdHIxLjEnLAogICAgd2hpY2ggbmVlZHMgdG8gYmUgYWRkZWQgdGhlIHRoZSBsaW5rZXIgc2NyaXB0LiAgSW5zdGVhZCBvZiBqdXN0IGFkZGluZyB0aGlzCiAgICBvbmUgc2VjdGlvbiwgd2UgdXNlIGEgd2lsZGNhcmQgIi5yb2RhdGEqIiB0byBnZXQgYWxsIHJvZGF0YSBsaW5rZXIgc2VjdGlvbgogICAgZ2NjIGhhcyBub3cgYW5kIG1pZ2h0IGFkZCBpbiB0aGUgZnV0dXJlLgoKICAgIEhvd2V2ZXIsICcqKC5yb2RhdGEqKScgYnkgaXRzZWxmIHdpbGwgcmVzdWx0IGluIHN1Yi1vcHRpbWFsIHNlY3Rpb24KICAgIG9yZGVyaW5nLiAgVGhlIHNlY3Rpb25zIHdpbGwgYmUgc29ydGVkIGJ5IG9iamVjdCBmaWxlLCB3aGljaCBjYXVzZXMgZXh0cmEKICAgIHBhZGRpbmcgYmV0d2VlbiB0aGUgdW5hbGlnbmVkIHJvZGF0YS5zdHIuMS4xIG9mIG9uZSBvYmplY3QgZmlsZSBhbmQgdGhlCiAgICBhbGlnbmVkIHJvZGF0YSBvZiB0aGUgbmV4dCBvYmplY3QgZmlsZS4gIFRoaXMgaXMgZWFzeSB0byBmaXggYnkgdXNpbmcgdGhlCiAgICBTT1JUX0JZX0FMSUdOTUVOVCBjb21tYW5kLgoKICAgIFRoaXMgcGF0Y2ggaGFzIG5vdCBiZSB0ZXN0ZWQgb25lIG1vc3Qgb2YgdGhlIGJvYXJkcyBtb2RpZmllZC4gIFNvbWUgYm9hcmRzCiAgICBoYXZlIGEgbGlua2VyIHNjcmlwdCB0aGF0IGxvb2tzIHNvbWV0aGluZyBsaWtlIHRoaXM6CgogICAgKigudGV4dCkKICAgIC4gPSBBTElHTigxNik7CiAgICAqKC5yb2RhdGEpCiAgICAqKC5yb2RhdGEuc3RyMS40KQogICAgKiguZWhfZnJhbWUpCgogICAgSSBjaGFuZ2UgdGhpcyB0bzoKCiAgICAqKC50ZXh0KQogICAgLiA9IEFMSUdOKDE2KTsKICAgICooLmVoX2ZyYW1lKQogICAgKihTT1JUX0JZX0FMSUdOTUVOVChTT1JUX0JZX05BTUUoLnJvZGF0YSopKSkKCiAgICBUaGlzIG1lYW5zIHRoZSBzdGFydCBvZiByb2RhdGEgd2lsbCBubyBsb25nZXIgYmUgMTYgYnl0ZXMgYWxpZ25lZC4KICAgIEhvd2V2ZXIsIHRoZSBib3VuZGFyeSBiZXR3ZWVuIHRleHQgYW5kIHJvZGF0YS9laF9mcmFtZSBpcyBzdGlsbCBhbGlnbmVkIHRvCiAgICAxNiBieXRlcywgd2hpY2ggaXMgd2hhdCBJIHRoaW5rIHRoZSByZWFsIHB1cnBvc2Ugb2YgdGhlIEFMSUdOIGNhbGwgaXMuCgogICAgU2lnbmVkLW9mZi1ieTogVHJlbnQgUGllcGhvIDx4eXp6eUBzcGVha2Vhc3kub3JnPgoKY29tbWl0IDU2NmI2NTJjN2NkYjBlNWUwNTI5YmIzZDFlYWZmYmQyYmY0NWEwMzIKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBGZWIgMTEgMTg6MjY6MDggMjAwOSAtMDUwMAoKICAgIHJlbW92ZSBiaV9lbmV0KmFkZHIgZnJvbSBnbG9iYWwgZGF0YSBmb3IgYWxsIGFyY2hlcwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIENDOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgogICAgQ0M6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KICAgIENDOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBzZXpuYW0uY3o+CiAgICBDQzogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KICAgIENDOiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KICAgIENDOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgZWI4NWFhNTk0YzFiNTdhMWUzYmU5Njg5YjY1MTcxYTEzN2EzNjQzMgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIEZlYiAxMSAyMDowNzoxOSAyMDA5IC0wNTAwCgogICAgcHBjOiBtYXJrIGdsb2JhbCBiaV9lbmV0KmFkZHIgYXMgbGVnYWN5CgogICAgVGhlIGVudmlyb25tZW50IGlzIHRoZSBjYW5vbmljYWwgc3RvcmFnZSBsb2NhdGlvbiBvZiB0aGUgbWFjIGFkZHJlc3MsIHNvCiAgICB3ZSdyZSBraWxsaW5nIG9mZiB0aGUgZ2xvYmFsIGRhdGEgbG9jYXRpb24gYW5kIG1vdmluZyBldmVyeXRoaW5nIHRvCiAgICBxdWVyeWluZyB0aGUgZW52IGRpcmVjdGx5LgoKICAgIEluIHRoZSBwcGMgY2FzZSwgdGhlc2UgdGhpbmdzIGFyZSBwYXJ0IG9mIHRoZSBsZWdhY3kgQUJJLCBzbyBrZWVwIHRoZW0KICAgIGFyb3VuZCBidXQgbWFyayB0aGVtIGFzIGxlZ2FjeSBzbyBubyBuZXcgY29kZSB3aWxsIHRvdWNoIHRoZW0uCgogICAgQWxzbyBzdG9wIGNhbGxpbmcgbG9hZF9zZXJudW1fZXRoYWRkcigpIHNpbmNlIGFsbCBib2FyZHMgbm93IGltcGxlbWVudAogICAgdGhpcyBhcyBhIHN0dWIuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgQ0M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgOWMxNTAxMDJiYzFkZTM3NWQzNmQ5N2ExY2MyZGQwZTk2MzliMTVkZgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIEZlYiAxMSAyMDowOTo1MiAyMDA5IC0wNTAwCgogICAgYm9hcmRzOiBnZXQgbWFjIGFkZHJlc3MgZnJvbSBlbnYgYW5kIG1vdmUgbG9hZF9zZXJudW1fZXRoYWRkcigpIHRvIGJvYXJkIGluaXQKCiAgICBUaGUgZW52aXJvbm1lbnQgaXMgdGhlIGNhbm9uaWNhbCBzdG9yYWdlIGxvY2F0aW9uIG9mIHRoZSBtYWMgYWRkcmVzcywgc28KICAgIHdlJ3JlIGtpbGxpbmcgb2ZmIHRoZSBnbG9iYWwgZGF0YSBsb2NhdGlvbiBhbmQgbW92aW5nIGV2ZXJ5dGhpbmcgdG8KICAgIHF1ZXJ5aW5nIHRoZSBlbnYgZGlyZWN0bHkuCgogICAgUmF0aGVyIHRoYW4gaGF2ZSBjb21tb24gcHBjIGNvZGUgY2FsbCBhIGJvYXJkLXNwZWNpZmljIGZ1bmN0aW9uIGxpa2UKICAgIGxvYWRfc2VybnVtX2V0aGFkZHIoKSwgaGF2ZSBlYWNoIGJvYXJkIGNhbGwgaXQgaW4gaXRzIG93biBib2FyZC1zcGVjaWZpYwogICAgbWlzY19pbml0X3IoKSBmdW5jdGlvbi4KCiAgICBUaGUgYm9hcmRzIHRoYXQgZ2V0IGNvbnZlcnRlZCBoZXJlIGFyZToKCS0ga3VwNGsva3VwNHgKCS0gcGNzNDQwZXAKCS0gdHFtOHh4CgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgQ0M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CiAgICBDQzogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDkyYjUwZmZlZjk3OGYwNTg1OGEwZmY0Y2JlODg0MzBiYzUxYTI4YTIKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBGZWIgMTEgMTk6NTU6MDEgMjAwOSAtMDUwMAoKICAgIGNtY19wdTI6IGdldCBtYWMgYWRkcmVzcyBmcm9tIGVudmlyb25tZW50CgogICAgVGhlIGVudmlyb25tZW50IGlzIHRoZSBjYW5vbmljYWwgc3RvcmFnZSBsb2NhdGlvbiBvZiB0aGUgbWFjIGFkZHJlc3MsIHNvCiAgICB3ZSdyZSBraWxsaW5nIG9mZiB0aGUgZ2xvYmFsIGRhdGEgbG9jYXRpb24gYW5kIG1vdmluZyBldmVyeXRoaW5nIHRvCiAgICBxdWVyeWluZyB0aGUgZW52IGRpcmVjdGx5LgoKICAgIEFsc28gcmVuYW1lIGxvYWRfc2VybnVtX2V0aGFkZHIoKSB0byBtaXNjX2luaXRfcigpIHNvIHdlIGRvbid0IG5lZWQgdG8KICAgIGhhbmRsZSB0aGlzIGJvYXJkIHNwZWNpYWxseSBpbiBjb21tb24gQVJNIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgQ0M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZDhkMjFlNjk5ZDdmY2ZiNmFiMTE2MzUxMTAyNjZkZDA5YjdlZGM2MgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIEZlYiAxNiAxODowMzoxNCAyMDA5IC0wNTAwCgogICAgYm9hcmRzOiBtb3ZlIGJvYXJkX2dldF9lbmV0YWRkcigpIGludG8gYm9hcmQtc3BlY2lmaWMgaW5pdAoKICAgIFRoZSBlbnZpcm9ubWVudCBpcyB0aGUgY2Fub25pY2FsIHN0b3JhZ2UgbG9jYXRpb24gb2YgdGhlIG1hYyBhZGRyZXNzLCBzbwogICAgd2UncmUga2lsbGluZyBvZmYgdGhlIGdsb2JhbCBkYXRhIGxvY2F0aW9uIGFuZCBtb3ZpbmcgZXZlcnl0aGluZyB0bwogICAgcXVlcnlpbmcgdGhlIGVudiBkaXJlY3RseS4KCiAgICBSYXRoZXIgdGhhbiBoYXZlIHRoZSBjb21tb24gcHBjIGNvZGUgaGF2ZSBib2FyZC1zcGVjaWZpYyBob29rcywgbW92ZSB0aGUKICAgIGJvYXJkX2dldF9lbmV0YWRkcigpIGZ1bmN0aW9uIGludG8gdGhlIGJvYXJkLXNwZWNpZmljIGluaXQgZnVuY3Rpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIENDOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGYxMWU2ZmY1YjE4NTlkOTIxM2YwZDUwMWIzMzA5ZTA2NWY0ODc1NDMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBGZWIgMTEgMTk6Mzk6NTUgMjAwOSAtMDUwMAoKICAgIGFybTogZ2V0IG1hYyBhZGRyZXNzIGZyb20gZW52aXJvbm1lbnQKCiAgICBUaGUgZW52aXJvbm1lbnQgaXMgdGhlIGNhbm9uaWNhbCBzdG9yYWdlIGxvY2F0aW9uIG9mIHRoZSBtYWMgYWRkcmVzcywgc28KICAgIHdlJ3JlIGtpbGxpbmcgb2ZmIHRoZSBnbG9iYWwgZGF0YSBsb2NhdGlvbiBhbmQgbW92aW5nIGV2ZXJ5dGhpbmcgdG8KICAgIHF1ZXJ5aW5nIHRoZSBlbnYgZGlyZWN0bHkuCgogICAgU29tZSB3YXJ0cyBhcmUgcmVtYWluaW5nIGFuZCBzaG91bGQgYmUga2lsbGVkIG9mZiAoYnkgbW92aW5nIHRoZSBmdW5jIHRvCiAgICB0aGUgYXBwcm9wcmlhdGUgYm9hcmQgaW5pdCBjb2RlKToKCS0gZGF2aW5jaV9ldGhfc2V0X21hY19hZGRyCgktIGNzODkwMF9nZXRfZW5ldGFkZHIKCS0gc21jX3NldF9tYWNfYWRkcgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIENDOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDAxMDdjZjY2ZjczNDZlOGM3ZDZjZjBmZTk5ZDJmMjY1MTM0YWZkNTkKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBGZWIgMTEgMTk6MzY6MjAgMjAwOSAtMDUwMAoKICAgIG54ODIzOiBnZXQgbWFjIGFkZHJlc3MgZnJvbSBlbnZpcm9ubWVudAoKICAgIFRoZSBlbnZpcm9ubWVudCBpcyB0aGUgY2Fub25pY2FsIHN0b3JhZ2UgbG9jYXRpb24gb2YgdGhlIG1hYyBhZGRyZXNzLCBzbwogICAgd2UncmUga2lsbGluZyBvZmYgdGhlIGdsb2JhbCBkYXRhIGxvY2F0aW9uIGFuZCBtb3ZpbmcgZXZlcnl0aGluZyB0bwogICAgcXVlcnlpbmcgdGhlIGVudiBkaXJlY3RseS4KCiAgICBGb3IgdGhlIG54ODIzLCB0aGUgc2VyaWFsIG51bWJlciBpcyBtb3ZlZCBvdXQgb2YgbG9hZF9zZXJudW1fZXRoYWRkcigpIGFuZAogICAgaW50byBtaXNjX2luaXRfcigpIGFzIGlzIHRoZSBlbnYgc2V0dXAuICBUaGlzIGxldHMgdXMga2lsbCBvZmYgdGhlIGZvcm1lcgogICAgZnVuY3Rpb24gaW4gdGhlIHByb2Nlc3MuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgQ0M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMTliNWI1MzNjY2Q1MjJhYmViNTAxZDUxMDc1MDY5M2MzNWUyMDQ1NgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIEZlYiAxMSAxODoyNzoxOCAyMDA5IC0wNTAwCgogICAgbGliXyovYm9hcmQuYzogZG8gbm90IGluaXRpYWxpemUgYmlfZW5ldCphZGRyIGluIGdsb2JhbCBkYXRhCgogICAgU2luY2UgZXZlcnlvbmUgaXMgdXNpbmcgdGhlIGVudmlyb25tZW50IGZvciBtYWMgYWRkcmVzcyBzdG9yYWdlLCB0aGVyZSBpcwogICAgbm8gcG9pbnQgaW4gc2VlZGluZyB0aGUgZ2xvYmFsIGRhdGEuCgogICAgVGhlIGFyY2hlcyB0aGF0IGFyZSBjb252ZXJ0ZWQgaGVyZToKCWkzODYKCW02OGsKCW1pY3JvYmxhemUKCW1pcHMKCW5pb3MKCW5pb3MyCglzaAoJc3BhcmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBDQzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KICAgIENDOiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+CiAgICBDQzogTWljaGFsIFNpbWVrIDxtb25zdHJAc2V6bmFtLmN6PgogICAgQ0M6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CiAgICBDQzogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+CiAgICBDQzogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDc0MGU4YmE3ZDQ3NWM0OWMxYjc2MDU4ZTFiZjM1NGUzNzZiNWM0ZTAKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBGZWIgMTEgMTk6MTk6NTQgMjAwOSAtMDUwMAoKICAgIG5wZTogZ2V0IG1hYyBhZGRyZXNzIGZyb20gZW52aXJvbm1lbnQKCiAgICBUaGUgZW52aXJvbm1lbnQgaXMgdGhlIGNhbm9uaWNhbCBzdG9yYWdlIGxvY2F0aW9uIG9mIHRoZSBtYWMgYWRkcmVzcywgc28KICAgIHdlJ3JlIGtpbGxpbmcgb2ZmIHRoZSBnbG9iYWwgZGF0YSBsb2NhdGlvbiBhbmQgbW92aW5nIGV2ZXJ5dGhpbmcgdG8KICAgIHF1ZXJ5aW5nIHRoZSBlbnYgZGlyZWN0bHkuCgogICAgVGhlIHJlc3VsdGluZyBjb2RlIGNhbiBhbHNvIGJlIHNpbXBsaWZpZWQgZXZlbiBmdXJ0aGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIENDOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBDQzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA2YmFjZmE2YThlOWIyNjRkMzdjMTI2MmZjMWYzZTk0OGQxZmVhYjgxCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglXZWQgRmViIDExIDE5OjE4OjQxIDIwMDkgLTA1MDAKCiAgICBjcHUvOiBnZXQgbWFjIGFkZHJlc3MgZnJvbSBlbnZpcm9ubWVudAoKICAgIFRoZSBlbnZpcm9ubWVudCBpcyB0aGUgY2Fub25pY2FsIHN0b3JhZ2UgbG9jYXRpb24gb2YgdGhlIG1hYyBhZGRyZXNzLCBzbwogICAgd2UncmUga2lsbGluZyBvZmYgdGhlIGdsb2JhbCBkYXRhIGxvY2F0aW9uIGFuZCBtb3ZpbmcgZXZlcnl0aGluZyB0bwogICAgcXVlcnlpbmcgdGhlIGVudiBkaXJlY3RseS4KCiAgICBUaGUgY3B1cyB0aGF0IGdldCBjb252ZXJ0ZWQgaGVyZToKCWF0OTFybTkyMDAKCW1wYzUxMngKCW1wYzV4eHgKCW1wYzgyNjAKCW1wYzh4eAoJcHBjNHh4CgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgQ0M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CiAgICBDQzogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+CiAgICBDQzogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDAzZjNkOGQzYjM5Y2Y4NWMwY2U3Y2E5MDNiNDM2NzAxZThhYTYxMGIKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBGZWIgMTEgMTk6MDk6NTQgMjAwOSAtMDUwMAoKICAgIGxhbjkxYzk2L3NtYzkxMTExL3NtYzkxMXg6IGdldCBtYWMgYWRkcmVzcyBmcm9tIGVudmlyb25tZW50CgogICAgVGhlIGVudmlyb25tZW50IGlzIHRoZSBjYW5vbmljYWwgc3RvcmFnZSBsb2NhdGlvbiBvZiB0aGUgbWFjIGFkZHJlc3MsIHNvCiAgICB3ZSdyZSBraWxsaW5nIG9mZiB0aGUgZ2xvYmFsIGRhdGEgbG9jYXRpb24gYW5kIG1vdmluZyBldmVyeXRoaW5nIHRvCiAgICBxdWVyeWluZyB0aGUgZW52IGRpcmVjdGx5LgoKICAgIEFsc28sIGRvIG5vdCBib3RoZXIgY2hlY2tpbmcgdGhlIEVFUFJPTSBpZiB0aGUgZW52IGlzIHNldHVwLiAgVGhpcwogICAgc2ltcGxpZmllcyB0aGUgY29kZSBncmVhdGx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERuZWsgPHdkQGRlbnguZGU+CiAgICBDQzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KICAgIENDOiBSb2xmIE9mZmVybWFubnMgPHJvZkBzeXNnby5kZT4KICAgIENDOiBFcmlrIFN0YWhsbWFuIDxlcmlrQHZ0LmVkdT4KICAgIENDOiBEYXJpcyBBIE5ldmlsIDxkbmV2aWxAc25tYy5jb20+CiAgICBDQzogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgoKY29tbWl0IGM1MjdjZTkyNTExY2JmNzIzYzJjYTc3YmVlMWNmOWVjZjgzZGFjODEKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBGZWIgMTEgMTk6MTQ6MDkgMjAwOSAtMDUwMAoKICAgIHNoX2V0aDogZ2V0IG1hYyBhZGRyZXNzIGZyb20gZW52aXJvbm1lbnQKCiAgICBUaGUgZW52aXJvbm1lbnQgaXMgdGhlIGNhbm9uaWNhbCBzdG9yYWdlIGxvY2F0aW9uIG9mIHRoZSBtYWMgYWRkcmVzcywgc28KICAgIHdlJ3JlIGtpbGxpbmcgb2ZmIHRoZSBnbG9iYWwgZGF0YSBsb2NhdGlvbiBhbmQgbW92aW5nIGV2ZXJ5dGhpbmcgdG8KICAgIHF1ZXJ5aW5nIHRoZSBlbnYgZGlyZWN0bHkuCgogICAgVGhlIHNoX2V0aCBkcml2ZXIgY2FuIGFsc28gYmUgc2ltcGxpZmllZCBhIGJpdCBieSB1c2luZyBlbmV0YWRkciBtZW1iZXIgb2YKICAgIHRoZSBldGhfZGV2aWNlIHN0cnVjdHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBDQzogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgogICAgQ0M6IENhcmxvcyBNdW5veiA8Y2FybG9zQGtlbmF0aS5jb20+CiAgICBDQzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAwYTUyMzhjZWE5MDY2NWMyMzAyOTdhOGZkNzdiYjBiM2I2MWNhMTc3CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglXZWQgRmViIDExIDE5OjA2OjA5IDIwMDkgLTA1MDAKCiAgICBjczg5MDA6IGdldCBtYWMgYWRkcmVzcyBmcm9tIGVudmlyb25tZW50CgogICAgVGhlIGVudmlyb25tZW50IGlzIHRoZSBjYW5vbmljYWwgc3RvcmFnZSBsb2NhdGlvbiBvZiB0aGUgbWFjIGFkZHJlc3MsIHNvCiAgICB3ZSdyZSBraWxsaW5nIG9mZiB0aGUgZ2xvYmFsIGRhdGEgbG9jYXRpb24gYW5kIG1vdmluZyBldmVyeXRoaW5nIHRvCiAgICBxdWVyeWluZyB0aGUgZW52IGRpcmVjdGx5LgoKICAgIFRoZSBjczg5MDAgZHJpdmVyIGFsc28gY2hhbmdlcyBzbGlnaHRseSBpbiB0aGF0IHRoZSBoYXJkd2FyZSBpcyBub3QKICAgIGNvbnN1bHRlZCBpZiB0aGUgbWFjIGFkZHJlc3MgaW4gdGhlIGVudiBpcyBzYW5lLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIENDOiBNYXJpdXMgR3JvZWdlciA8bWdyb2VnZXJAc3lzZ28uZGU+CiAgICBDQzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBjNGI4NzYyZjExZDMzN2U2YTlkOTBjMjI3YjI4NzFkNjVkMzcyNDY5CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglXZWQgRmViIDExIDE5OjA0OjI1IDIwMDkgLTA1MDAKCiAgICBiY201NzB4OiBnZXQgbWFjIGFkZHJlc3MgZnJvbSBlbnZpcm9ubWVudAoKICAgIFRoZSBlbnZpcm9ubWVudCBpcyB0aGUgY2Fub25pY2FsIHN0b3JhZ2UgbG9jYXRpb24gb2YgdGhlIG1hYyBhZGRyZXNzLCBzbwogICAgd2UncmUga2lsbGluZyBvZmYgdGhlIGdsb2JhbCBkYXRhIGxvY2F0aW9uIGFuZCBtb3ZpbmcgZXZlcnl0aGluZyB0bwogICAgcXVlcnlpbmcgdGhlIGVudiBkaXJlY3RseS4KCiAgICBTaW5jZSB0aGUgYWRkcmVzcyBpcyBpbiB0aGUgUExNX0RFVklDRV9CTE9DSyBzdHJ1Y3R1cmUgYWxyZWFkeSwgdGhlcmUgaXMKICAgIG5vIG5lZWQgdG8gcGFzcyB0aGUgTm9kZUFkZHJlc3MgYXMgYSBzZWNvbmQgcGFyYW1ldGVyLiAgU28gZHJvcCB0aGUgc2Vjb25kCiAgICBhcmd1bWVudCB0byB0aGUgTE1fU2V0TWFjQWRkcmVzcygpIGZ1bmN0aW9uIChhbmQgdXBkYXRlIHRoZSB0aWdvbjMgZHJpdmVyCiAgICBhY2NvcmRpbmdseSkuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgQ0M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZDNmODcxNDgyZjA2ZjZhNGVhZjRhM2ZhZmRlODQ4NDZiYWQ4N2I0ZgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIEZlYiAxMSAxOTowMToyNiAyMDA5IC0wNTAwCgogICAgZHJpdmVycy9uZXQvOiBnZXQgbWFjIGFkZHJlc3MgZnJvbSBlbnZpcm9ubWVudAoKICAgIFRoZSBlbnZpcm9ubWVudCBpcyB0aGUgY2Fub25pY2FsIHN0b3JhZ2UgbG9jYXRpb24gb2YgdGhlIG1hYyBhZGRyZXNzLCBzbwogICAgd2UncmUga2lsbGluZyBvZmYgdGhlIGdsb2JhbCBkYXRhIGxvY2F0aW9uIGFuZCBtb3ZpbmcgZXZlcnl0aGluZyB0bwogICAgcXVlcnlpbmcgdGhlIGVudiBkaXJlY3RseS4KCiAgICBUaGUgZHJpdmVycyB0aGF0IGdldCBjb252ZXJ0ZWQgaGVyZToKCTNjNTg5Cgk0eHhfZW5ldAoJZGMyMTE0eAoJZG05MDAweAoJZW5jMjhqNjAKCWZzbF9tY2RtYWZlYwoJa3M4Njk1ZXRoCgltY2ZmZWMKCXJ0bDgwMTkKCXJ0bDgxNjkKCXMzYzQ1MTBiX2V0aAoJeGlsaW54X2VtYWMKCXhpbGlueF9lbWFjbGl0ZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIENDOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgogICAgQ0M6IFJvbGYgT2ZmZXJtYW5ucyA8cm9mQHN5c2dvLmRlPgogICAgQ0M6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIENDOiBTYXNjaGEgSGF1ZXIgPHNhc2NoYWhhdWVyQHdlYi5kZT4KICAgIENDOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgogICAgQ0M6IEdyZWcgVW5nZXJlciA8Z3JlZy51bmdlcmVyQG9wZW5nZWFyLmNvbT4KICAgIENDOiBYdWUgTGlnb25nIDxsZ3h1ZUBob3RtYWlsLmNvbT4KICAgIENDOiBNYXNhbWkgS29taXlhIDxta29taXlhQHNvbmFyZS5pdD4KICAgIENDOiBDdXJ0IEJydW5lIDxjdXJ0QGN1Y3kuY29tPgogICAgQ0M6IE1pY2hhbCBTSU1FSyA8bW9uc3RyQG1vbnN0ci5ldT4KCmNvbW1pdCBiNmI0NjI1ZDE3NTAxOWUzODdlNWIwZjY1YTE3MzIyYTc4ZjZiYjkwCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglXZWQgRmViIDExIDE4OjM4OjM4IDIwMDkgLTA1MDAKCiAgICBib2FyZHM6IGdldCBtYWMgYWRkcmVzcyBmcm9tIGVudmlyb25tZW50CgogICAgVGhlIGJvYXJkcyB0aGF0IGdldCBjb252ZXJ0ZWQgaGVyZSB0byB1c2UgdGhlIGVudmlyb25tZW50IGZvciB0aGUgbWFjCiAgICBhZGRyZXNzIHJhdGhlciB0aGFuIGdsb2JhbCBkYXRhOgoJZGVicmlzCgltZ2NvZ2UKCW1nc3V2ZAoJbXVhczMwMDEKCW5ldHN0YWwKCXBuNjIKCXNpeG5ldAoJdmNtYTkKCXhpbGlueCAodGhlIG9uZXMgdGhhdCB1c2UgeGlsaW54X2VuZXQpCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgQ0M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CiAgICBDQzogU2FuZ21vb24gS2ltIDxkb2dvaWxAZXRpbnN5cy5jb20+CiAgICBDQzogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CiAgICBDQzogRGF2aWQgTXVlbGxlciA8ZC5tdWVsbGVyQGVsc29mdC5jaD4KICAgIENDOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgogICAgQ0M6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGRlbnguZGU+CiAgICBDQzogRGF2ZSBFbGxpcyA8REdFQHNpeG5ldGlvLmNvbT4KICAgIENDOiBSaWNhcmRvIFJpYmFsZGEgPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+Cgpjb21taXQgMDZhMGM0MzgxYTY1ZWQ1MDBjODE2YTA1YjlhZTdiMjA3YzNiMWQ0YgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIEZlYiAxMSAxODozNjo0NSAyMDA5IC0wNTAwCgogICAgQW1pZ2FPbmVHM1NFL2VuZXQ6IGdldCBtYWMgYWRkcmVzcyBmcm9tIGVudmlyb25tZW50CgogICAgQWx3YXlzIHVzZSB0aGUgTUFDIGFkZHJlc3MgdGhhdCBpcyBzdG9yZWQgaW4gdGhlIGVudmlyb25tZW50IGZpcnN0IGJlZm9yZQogICAgZmFsbGluZyBiYWNrIHRvIHRoZSBST00uICBUaGlzIGFsc28gY3V0cyBvdXQgYW55IGNvbXBhcmlzb24gc3RlcHM6IGlmIHRoZQogICAgbWFjIGluIHRoZSBlbnYgaXMgc2FuZSwgdGhlIFJPTSBpcyBuZXZlciBjb25zdWx0ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgQ0M6IFRob21hcyBGcmllZGVuIDxUaG9tYXNGQGh5cGVyaW9uLWVudGVydGFpbm1lbnQuY29tPgogICAgQ0M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNTZiNTU1YTY0NGYzY2JiMWIzOTI5Y2I1MmI2MWQzY2U0ODM4ODVmNQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIEZlYiAxMSAxODo1MjozOCAyMDA5IC0wNTAwCgogICAgbnZlZGl0OiBkbyBub3QgdXBkYXRlIGdsb2JhbCBiaV9lbmV0YWRkciBhbmQgZG8gbm90IGNhbGwgZXRoX3NldF9lbmV0YWRkcigpCgogICAgU2luY2UgdGhlIGV0aGVybmV0IGxheWVyIGhhbmRsZXMgdXBkYXRpbmcgb2YgZGV2aWNlIGFkZHJlc3NlcyBpdHNlbGYgZnJvbQogICAgdGhlIGVudmlyb25tZW50LCB0aGVyZSBpcyBubyBwb2ludCBpbiBjYWxsaW5nIGV0aF9zZXRfZW5ldGFkZHIoKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBDQzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA1MDEzNTMzNDY3YzFkZTczMWMyZjBjOWJlYjRiNDFjZTNmMDdjYmViCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglXZWQgRmViIDExIDE4OjU0OjA3IDIwMDkgLTA1MDAKCiAgICBseW54a2RpOiBnZXQgbWFjIGFkZHJlc3MgZnJvbSBlbnZpcm9ubWVudAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIENDOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDYyYzkzZDkyZjFiNjI2NmIyZjMzYzVmNDAzOTMxYjUxY2JkMmEyNDYKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBGZWIgMTEgMTg6NTE6NDMgMjAwOSAtMDUwMAoKICAgIGJvb3R2eDogZ2V0IG1hYyBhZGRyZXNzIGZyb20gZW52aXJvbm1lbnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBDQzogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBtZW1iZXIuZnNmLm9yZz4KICAgIENDOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGRlMmRmZjZmZjg5Zjk4YzYwNjJmNGQyMjRmZDQzNGEzZWRlMDM1ZDEKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBGZWIgMTEgMTg6NTA6MTAgMjAwOSAtMDUwMAoKICAgIGJkaW5mbzogZ2V0IG1hYyBhZGRyZXNzIGZyb20gZW52aXJvbm1lbnQKCiAgICBBZGQgYSBuZXcgcHJpbnRfZXRoKCkgZnVuY3Rpb24gdG8gYXV0b21hdGUgdGhlIGV0aCphZGRyIGVudiB2YXIgYWNxdWlzaXRpb24KICAgIGFuZCBkaXNwbGF5LiAgQWZmZWN0cyBhbGwgYXJjaGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIENDOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CiAgICBDQzogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+CiAgICBDQzogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KICAgIENDOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBzZXpuYW0uY3o+CiAgICBDQzogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgogICAgQ0M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgOTU4MjNjYTA3NzMzNTY4NjBlNjIyZWUzMzA0YTRiN2NhZmNiZjE5YQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIEZlYiAxMSAxODoyMzo0OCAyMDA5IC0wNTAwCgogICAgbmV0OiBnZXQgbWFjIGFkZHJlc3MgZnJvbSBlbnZpcm9ubWVudCBhbmQgdXNlIGV0aCB1dGlsIGZ1bmNzCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgQ0M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNTAwYjZjNTFlNGM0MWY0NTYyY2I0ODM0NGFmOThkZWI3ZTM0MjczMQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIE9jdCAxMyAxNTowNjoyNSAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGJmaW5fbWFjOiBmb3JjZSBib2FyZHMgdG8gc2V0dXAgdGhlIE1BQyB0aGVtc2VsdmVzCgogICAgU2luY2UgdGhlIG9uLWNoaXAgTUFDIGRvZXMgbm90IGhhdmUgYW4gZWVwcm9tIG9yIHNpbWlsYXIgaW50ZXJmYWNlLCBmb3JjZQogICAgYWxsIEJsYWNrZmluIGJvYXJkcyB0aGF0IHVzZSB0aGlzIGRyaXZlciB0byBzZXR1cCB0aGUgYm9hcmQgZGF0YSB3aXRoIGEKICAgIHByb3BlciBNQUMuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgQ0M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNmZmNDEzN2YyYWQ2NDBlNGZjOGVhMWIwNDU1MTYxZGRmZjFmNjczMApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIEZlYiAxMSAxNDoxMjozNCAyMDA5IC0wNTAwCgogICAgZG9jL1JFQURNRS5lbmV0YWRkcjogZG9jdW1lbnQgcHJvcGVyIE1BQyB1c2FnZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIENDOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDNmNmU2OTkzZTkyZmQwNjU4ZGExNzQ2ZDFjODQ2NDQ2MTJlZTUyMGIKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBKYW4gMjkgMTk6NDM6NDQgMjAwOSAtMDUwMAoKICAgIG5ldDogbmV3IHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggZW5ldGFkZHIncwoKICAgIERlY2xhcmUgbmV3IHV0aWxpdHkgZnVuY3Rpb25zIGZvciBjb252ZXJ0aW5nIGJldHdlZW4gdGhlIGVudmlyb25tZW50CiAgICB2YXJpYWJsZXMgKGV0aCphZGRyKSBhbmQgdGhlIGJpbmFyeSBNQUMgYWRkcmVzcyByZXByZXNlbnRhdGlvbi4gIFRoaXMgd2F5CiAgICB3ZSBjYW4gdW5pZnkgYWxsIHRoZSByYW5kb20gcGxhY2VzIHRoYXQgYWxyZWFkeSBkbyB0aGlzIGtpbmQgb2YgdGhpbmcuCgogICAgVGhlIGZ1bmN0aW9ucyBpbiBxdWVzdGlvbjoKCWV0aF9wYXJzZV9lbmV0YWRkciAtICIuLi4iIC0+IHsuLi59CglldGhfZ2V0ZW52X2VuZXRhZGRyIC0gZW52IC0+IHsuLi59CglldGhfc2V0ZW52X2VuZXRhZGRyIC0gey4uLn0gLT4gZW52CgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgQ0M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYjY0NDZiNjc3NThlYTFlNDEyMjNmMDc4MjkyNGJiNzNmZDBhODlkMApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIEZlYiAxNyAwMDowMDo1MyAyMDA5IC0wNTAwCgogICAgY29udmVydCBwcmludF9JUGFkZHIoKSB0byAlcEk0CgogICAgTm93IHRoYXQgb3VyIHByaW50ZiBmdW5jdGlvbnMgc3VwcG9ydCB0aGUgJXBJNCBtb2RpZmllciBsaWtlIHRoZSBrZXJuZWwsCiAgICBsZXQncyBkcm9wIHRoZSBpbmZsZXhpYmxlIHByaW50X0lQYWRkcigpIGZ1bmN0aW9uIGFuZCBjb3ZlcnQgb3ZlciB0byB0aGUKICAgICVwSTQgbW9kaWZpZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgQ0M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNmM2MTY2ZjUyOTgzZGFjNzc1ZTM4NTJmOWQwZjQ5ZDAzM2YyNzEwOApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIEZlYiAxNiAyMzoyMTozNiAyMDA5IC0wNTAwCgogICAgdnNwcmludGY6IHB1bGwgdXBkYXRlcyBmcm9tIExpbnV4IGtlcm5lbAoKICAgIFRoaXMgYnJpbmdzIGluIHN1cHBvcnQgZm9yIHRoZSAlcCBtb2RpZmllciB3aGljaCBhbGxvd3MgdXMgdG8gZWFzaWx5IHByaW50CiAgICBvdXQgdGhpbmdzIGxpa2UgaXAgYWRkcmVzc2VzLCBtYWMgYWRkcmVzc2VzLCBhbmQgcG9pbnRlcnMuCgogICAgSXQgYWxzbyBjb252ZXJ0cyB0aGUgcmFyZWx5IHVzZWQgJ3EnIGxlbmd0aCBtb2RpZmllciB0byB0aGUgY29tbW9uICdMJwogICAgbW9kaWZpZXIgd2hlbiBkZWFsaW5nIHdpdGggcXVhZCB0eXBlcy4KCiAgICBXaGlsZSB0aGlzIG5ldyBjb2RlIGlzIGEgYml0IGxhcmdlciAofjFrIC50ZXh0KSwgbW9zdCBvZiBpdCBzaG91bGQgYmUgbWFkZQogICAgdXAgYnkgY29udmVydGluZyB0aGUgZXhpc3RpbmcgaXAvbWFjIGFkZHJlc3MgY29kZSB0byB1c2UgZm9ybWF0IG1vZGlmaWVycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYTQzZWE1Y2M2ZDYxMjQ3MWZiYzc0ZjBhMjZiMmJlYTU4NjRhYTFkNgpBdXRob3I6IEpvbiBTbWlybCA8am9uc21pcmxAZ21haWwuY29tPgpEYXRlOglUaHUgTWFyIDE5IDIzOjA0OjE4IDIwMDkgLTA0MDAKCiAgICAuZ2l0aWdub3JlIGZvciBnZW5lcmF0ZWQgZmlsZXMgaW4gYXBpX2V4YW1wbGVzIGRpcmVjdG9yeQoKICAgIEFkZCAuZ2l0aWdub3JlIGZvciBnZW5lcmF0ZWQgZmlsZXMgaW4gYXBpX2V4YW1wbGVzIGRpcmVjdG9yeQoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBTbWlybCA8am9uc21pcmxAZ21haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0MDI4MWE5Y2EyMWE2YjZkN2I5OTZiNGQ0ZWVhYTE5MDI2MzM3MjMxCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgpEYXRlOglXZWQgTWFyIDE4IDEyOjI3OjA0IDIwMDkgKzA5MDAKCiAgICBuZXQ6IHNoX2V0aDogUmVtb3ZlIHNoX2V0aF9yZXNldCgpIGZyb20gaGFsdCBmdW5jdGlvbgoKICAgIHNoX2V0aF9yZXNldCBpcyBmdW5jdGlvbiB0byByZXNldCBFdGhlciBJUC4KICAgIFRoZSBNQUMgYWRkcmVzcyBpcyBzdG9yZWQgaW4gSVAsIGJ1dCBpdCBpcyBpbml0aWFsaXplZCBieSB0aGlzIGZ1bmN0aW9uLgogICAgT1MgKGUuZy4gTGludXggS2VybmVsKSBjYW4gbm90IHVzZSB0aGlzIGRldmljZSB3aGVuIGluaXRpYWxpemVkLgogICAgVGhpcyByZXZpc2VzIHRoaXMgcHJvYmxlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Cgpjb21taXQgZjg4NTNkMTA1ZGE3ZDY5YmM5MmE1YjQ1NzhmOWI4NTIzNGU1NThlYwpBdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KRGF0ZToJRnJpIE1hciAyMCAxMjo0NTo1MCAyMDA5ICswMTAwCgogICAgcHBjNHh4OiBGaXggYnVnIGluIFBDSSBvdXRib3VuZCBtYXAgY29uZmlndXJhdGlvbiBmb3IgY2FueW9ubGFuZHMKCiAgICBQQ0kgb3V0Ym91bmQgYWRkcmVzcyBtYXAgY29uZmlndXJhdGlvbiBkb2Vzbid0IG1hdGNoIHRoZQogICAgUENJIG1lbW9yeSBhZGRyZXNzIHJhbmdlIGNvdmVyZWQgYnkgYXBwcm9wcmlhdGUgVExCIGVudHJ5CiAgICBjb25maWd1cmF0aW9uIGZvciBjYW55b25sYW5kcyBjYXVzaW5nIG1hY2hpbmUgY2hlY2sKICAgIGV4Y2VwdGlvbnMgd2hpbGUgYWNjZXNzaW5nIFBDSSBtZW1vcnkgcmVnaW9ucy4gVGhpcyBwYXRjaAogICAgcHJvdmlkZXMgYSBmaXggZm9yIHRoaXMgaXNzdWUuCgogICAgS2F6dWFraSBJY2hpbm9oZSBvYnNlcnZlZCBhbmQgcmVwb3J0ZWQgdGhpcyBpc3N1ZSB3aGlsZQogICAgdGVzdGluZyBkaXNwbGF5IG91dHB1dCB3aXRoIFBDSSBBVEkgdmlkZW8gY2FyZCBvbiBjYW55b25sYW5kcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgN2E4ODYwMWEzNDEzMjU0OGMzYzU5MWVhODdhYjM0NjhiNTExMjFiMApBdXRob3I6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+CkRhdGU6CUZyaSBNYXIgNiAxMDowOTozNyAyMDA5IC0wNTAwCgogICAgQ0ZJOiBnZW9tZXRyeSByZXZlcnNhbCBmb3IgU1RNaWNybyBNMjlXMzIwRFQKCiAgICBGb2xsb3cgdXAgdG8gdGhlIGZsYXNoX2ZpeHVwX3N0bSB0byBmaXggZ2VvbWV0cnkgcmV2ZXJzYWwKICAgIG9uIFNUTWljcm8gTTI5VzMyMEVUIGZsYXNoIGNoaXAuIFRoZSBNMjlXMzIwRFQgaGFzIDQgZXJhc2UgcmVnaW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDY5ZjQzNjRkODA3ZDdmZGVhM2RlNzM4NWFkMmY4ZDgzYzU4N2FlYwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIEZlYiAyNSAxNzoyOTo0MCAyMDA5IC0wNTAwCgogICAgc21jOTExeF9lZXByb206IHVwZGF0ZSByZWdpc3RlciBBUEkKCiAgICBUaGUgc21jOTExeCBkcml2ZXIgY2hhbmdlZCB0aGUgbmFtaW5nIGNvbnZlbnRpb24gZm9yIGl0cyByZWdpc3RlciBmdW5jcywKICAgIHNvIHVwZGF0ZSB0aGUgZWVwcm9tIGNvZGUgYWNjb3JkaW5nbHkuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgQ0M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNmEzOTdlZjBlNmM1OGNhYWI4YmY0MjdkNDQ3NzE0YmM5YjNiYjlkNApBdXRob3I6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgTWFyIDE3IDEwOjA2OjM5IDIwMDkgKzAxMDAKCiAgICBtcGM1Mnh4OiBHZXQgcmlkIG9mIGJvYXJkLXNwZWNpZmljICNpZmRlZidzIGluIGNwdS9tcGM1eHh4L2lkZS5jCgogICAgVG90YWw1MjAwIGFuZCBkaWdzeSBNVEMgdXNlIEkyQyBwb3J0IDIgcGlucyBhcyBhIEFUQSBjaGlwIHNlbGVjdC4KICAgIFRvIGF2b2lkIGFkZGluZyBib2FyZC1zcGVjaWZpYyBpZmRlZnMgdG8gY3B1L21wYzV4eHgvaWRlLmMgbmV3CiAgICBkZWZpbmUgQ09ORklHX1NZU19BVEFfQ1NfT05fSTJDMiB3YXMgaW50cm9kdWNlZC4gSXQgaXMgdXNlZCBieQogICAgVG90YWw1MjAwIGFuZCB3aWxsIGJlIHVzZWQgYnkgZGlnc3kgTVRDIGFuZCBvdGhlciBib2FyZHMgd2l0aAogICAgQVRBIENTIG9uIEkyQyBwaW5zLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDFiNjI3NWRmYjE3M2JkMmVkYjhmMjA4ZGQwNTBkNmY0N2FlMzk2NTQKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVGh1IE1hciAxMiAwNzozNzozNCAyMDA5ICswMTAwCgogICAgOHh4OiBhZGQgc3VwcG9ydCBmb3IgbmV3IGtleW1pbGUga21zdXB4NCBib2FyZC4KCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGttc3VweDQgYm9hcmQgZnJvbSBLZXltaWxlLAogICAgYmFzZWQgb24gYSBGcmVlc2NhbGUgTVBDODUyVCBDUFUKCiAgICAtIHNlcmlhbCBjb25zb2xlIG9uIFNNQzEKICAgIC0gMzIgTUIgU0RSQU0KICAgIC0gMzIgTUIgTk9SIEZsYXNoCiAgICAtIEV0aGVybmV0IG92ZXIgU0NDMwogICAgLSBJMkMgQml0YmFuZwoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IGQwNDQ5NTRmZTJhN2U3YTNkZDEwNGViOWM5ZDIxMDRlMzhkYTI5MTEKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVGh1IE1hciAxMiAwNzozNzoyOCAyMDA5ICswMTAwCgogICAgOHh4LCBtZ3N1dmQ6IHJlbmFtZSBib2FyZCB0byBhIG1vcmUgZ2VuZXJpYyBuYW1lCgogICAgcmVuYW1pbmcgdGhlICJtZ3N1dmQiIGJvYXJkIHBvcnQgaW50byAia204eHgiLCBiZWNhdXNlCiAgICB0aGVyZSBjb21lIG1vcmUgc2ltaWxhciBib2FyZHMgZnJvbSBrZXltaWxlLgogICAgQ29tcGlsaW5nIHRoZSBtZ3N1dmQgYm9hcmQgd2l0aCAibWFrZSBtZ3N1dmRfY29uZmlnIgogICAgcmVtYWlucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAxOGIyZjM1YmRlMTY3MmUwNzRhM2Q1MDQ4MzgzY2I1NmZkYTc0NWNiCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVRodSBNYXIgMTIgMDc6Mzc6MjMgMjAwOSArMDEwMAoKICAgIDh4eCwgbWdzdXZkOiBDb2RpbmcgU3R5bGUgY2xlYW51cCBjb25maWcgZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDM2NDEyM2RiNjczMGQzMjMzMGY4MThiNjUzNjBkMmNkMjczOTY2NjcKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVGh1IE1hciAxMiAwNzozNzoxOCAyMDA5ICswMTAwCgogICAgcG93ZXJwYzogY29tbW9uIHVwZGF0ZXMgZm9yIGtleW1pbGUgYm9hcmRzCgogICAgLSBhZGRlZCB0byBrZXltaWxlLWNvbW1vbi5oOgogICAgICAtIGJvb3Rjb3VudCBzdXBwb3J0CiAgICAgIC0gQ09NTUFORCBISVNUT1JZCiAgICAgIC0gQ09ORklHX0FVVE9fQ09NUExFVEUKICAgICAgLSBDT05GSUdfU1lTX0ZMQVNIX1BST1RFQ1RJT04KICAgICAgLSBKRkZTMiBzdXBwb3J0CiAgICAgIC0gQ09ORklHX1ZFUlNJT05fVkFSSUFCTEUKICAgIC0gZXh0cmFjdGVkIGNvbW1vbiBJMkMgc2V0dGluZ3MgZm9yIGFsbCBib2FyZHMKICAgIC0gY29tbW9uIGRlZmF1bHQgZW52aXJvbm1lbnQgc2V0dGluZ3Mgc3VtbWFyaXplZAoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDUwNmYzOTE4ODhiODJkMWI4M2JkZDc0OWMzY2VhOWViMmZkNjRkZjgKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVGh1IE1hciAxMiAwNzozNzoxNSAyMDA5ICswMTAwCgogICAgOHh4LCBpY2FjaGU6IGVuYWJsaW5nIElDYWNoZSBub3QgYmVmb3JlIHJ1bm5pbmcgZnJvbSBSQU0KCiAgICB3aXRoIHRoZSBuZXcgQ09ORklHX1NZU19ERUxBWUVEX0lDQUNIRSBjb25maWcgb3B0aW9uLCBJQ2FjaGUKICAgIGlzIG5vdCBlbmFibGVkIGJlZm9yZSBjb2RlIHJ1bnMgZnJvbSBSQU0uCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgY2FiZjdiOWM4M2JkNzgwYTU4MDVkZGJiNGMwY2U0MzFkNWI5ZjlmMwpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglUaHUgTWFyIDEyIDA3OjM3OjExIDIwMDkgKzAxMDAKCiAgICA4Mnh4LCBtZ2NvZ2U6IGZpeCBlbnZpcm9ubWVudCBzZWN0b3Igc2l6ZQoKICAgIFNpemUgb2Ygb25lIGVudmlyb25tZW50IHNlY3RvciBpcyAweDIwMDAwLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDI3MDU3ZDQxNmM3Y2M5ZWIxODYwOTUzZGE4ODM2MzUyYzA3ZjEzZTkKQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+CkRhdGU6CU1vbiBNYXIgMTYgMjM6Mjc6MzEgMjAwOSArMDEwMAoKICAgIE5ldFN0YXI6IGNvbmZpZyByZWluZGVudGF0aW9uCgogICAgRml4IGluZGVudGF0aW9uIGJyb2tlbiBieSBzeW1ib2wgcmVuYW1lcy4gIlNvcnQiIGRyaXZlciByZWxhdGVkIGRlZmluaXRvbnMuCgogICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgoKY29tbWl0IDhkODIzNWY4NGQzZWYzZjI5YjdkMTRlNzQxMzY5YjU4MjRiNWJiNGEKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgTWFyIDE3IDExOjIxOjQzIDIwMDkgKzAwMDAKCiAgICBDb2xkRmlyZTogRml4IGluY29ycmVjdCBkZWZpbml0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5MDE3ZDkzMjVhNTA2N2IyYWIwZDcwYTJkM2M5MDc2MjBjOWFiN2Y4CkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIE1hciAyIDE5OjE2OjQ1IDIwMDkgKzAwMDAKCiAgICBDb2xkRmlyZTogRml4IE01MzI5RVZCIGFuZCBNNTM3M0VWQiBuYW5kIGlzc3VlCgogICAgVGhlIE5hbmQgZmxhc2ggd2FzIHVuYWJsZSB0byByZWFkIGFuZCB3cml0ZSBwcm9wZXJseQogICAgZHVlIHRvIE5hbmQgQ2hpcCBTZWxlY3QgKG5DRSkgc2V0dXAgd2FzIGluIHJldmVyc2UKICAgIG9yZGVyLiBBbHNvLCBpbmNyZWFzZSB0aGUgTmFuZCB0aW1lIG91dCB2YWx1ZSB0byA2MC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQyYjY4YWYxMDYyZjc1YmI0YTkxY2Y0N2UzMjlhN2U4MTAwY2Q4MTUKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSmFuIDI3IDE1OjE5OjM1IDIwMDkgKzAwMDAKCiAgICBDb2xkRmlyZTogUExBVEZPUk1fQ1BQRkxBR1MgdXBkYXRlcyBmb3IgbmV3IGNvbXBpbGVyCgogICAgVXBkYXRlIFBMQVRGT1JNX0NQUEZMQUdTIHRvIGFjY2VwdCA0LjMueCB2ZXJzaW9uIG9mCiAgICBDb2xkRmlyZSBjb21waWxlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGQ2ZTRiYWY0OTk4N2ZjNmY3NWU4NTc0YzBjMjczMDFhODI4YjMxMzIKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSmFuIDI3IDEyOjU3OjQ3IDIwMDkgKzAwMDAKCiAgICBDb2xkRmlyZTogUHJvdmlkZSBnemlwIGltYWdlIHNpemUgVjIgJiBWMyBwbGF0Zm9ybXMKCiAgICBEZWZhdWx0IGd6aXAgYm9vdG0gc2l6ZSBpcyA4TUIuIFNvbWUgcGxhdGZvcm1zIHJlcXVpcmUKICAgIG1vcmUgdGhhbiA4TUIKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGMzYTllNjM3NDIxMDY3OWE4MWY2MTFjMWJjZjk2ODk4OGJjMjBlNDEKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgRmViIDE4IDExOjQ5OjMxIDIwMDkgKzAwMDAKCiAgICBDb2xkRmlyZTogRml4IE01NDQ1MSBzZXJpYWwgYm9vdCBkcmFtIHNldHVwCgogICAgVGhlIHNlcmlhbCBib290IGRyYW0gZXh0ZW5kZWQvc3RhbmRhcmQgbW9kZSByZWdpc3RlciB3YXMgbm90CiAgICBzZXR1cCBhbmQgd2FzIHVzaW5nIGRlZmF1bHQgRFJBTSBzZXR1cCBjYXVzaW5nIHRoZSBVLWJvb3Qgd2FzCiAgICB1bnN0YWJsZSB0byBib290IHVwIGluIHNlcmlhbCBtb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzJkMTFkNTgxNTlhNTc1ZjA4YTk4MmNhZDhhNWE5NDFmZmU1Y2MzZApBdXRob3I6IGFydW4gYyA8YXJ1bi5lZGFyYXRoQGdtYWlsLmNvbT4KRGF0ZToJVGh1IERlYyA0IDE1OjU3OjE1IDIwMDggKzA1MzAKCiAgICBDb2xkZmlyZTogWEwgQnVzIG1pbm9yIGZpeGVzCgogICAgQWNjb3JkaW5nIHRvIGNvbGRmaXJlIG1hbnVhbCBkYXRhIHRpbWVvdXQgPiBhZGRyZXNzIHRpbWUgb3V0CiAgICBhbHNvIHVzZSBjb3JyZWN0IG1hY3JvIHRvIHByb2dyYW0gWEFSQl9DRkcKCiAgICBTaWduZWQtb2ZmLWJ5OiBBcnVuIEMgPGFydW5lZGFyYXRoQG1pc3RyYWxzb2x1dGlvbnMuY29tPgoKY29tbWl0IDY1ZDhiYzk0ZDgyMTQ4MTJjY2RmMzM3MmQzZmVmODQ1Y2Y0ZWMyZTUKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE1hciAxNyAxMjowNjowNCAyMDA5IC0wNTAwCgogICAgTkFORDogSGF2ZSBuYm9vdCBhY2NlcHQgLmUgYW5kIC5pIGFzIGxlZ2FjeSBuby1vcHMuCgogICAgVGhpcyB3YXMgaW50ZW5kZWQgdG8gaGFwcGVuIGJlZm9yZSwgYnV0IGEgdHJpdmlhbCBidWcgcHJldmVudGVkIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDA5ODc1MDU1NDA5MThiMjQ2NGI3MzA2OWFmM2E1Yjc2NmRiZDNjZWIKQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+CkRhdGU6CUZyaSBNYXIgMTMgMTQ6Mzg6MTkgMjAwOSArMDEwMAoKICAgIE5BTkQ6IE1ha2UgbmJvb3Qgc2tpcCBiYWQgYmxvY2tzCgogICAgbmJvb3QgY29tbWFuZCBjdXJyZW50bHkgZG9lcyBub3Qgc2tpcCBiYWQgYmxvY2tzIGFuZCBnaXZlcyByZWFkIGVycm9yIHdoZW4KICAgIGxvYWRpbmcgaW1hZ2Ugc3RvcmVkIG92ZXIgYmFkIGJsb2NrLiBXaXRoIHBhdGNoIGFwcGxpZWQsIG5ib290IHdvcmtzIGFzCiAgICBleHBlY3RlZDoKCiAgICBEZXZpY2UgMCBiYWQgYmxvY2tzOgogICAgICAwMDc4MDAwMAogICAgICAwMTRhMDAwMAogICAgICAwMjAwMDAwMAogICAgICAwMmNjMDAwMAogICAgICAwNGFhMDAwMAoKICAgIExvYWRpbmcgZnJvbSBOQU5EIDEyOE1pQiAzLDNWIDgtYml0LCBvZmZzZXQgMHgyYzAwMDAwCiAgICAgICBJbWFnZSBOYW1lOiAgIExpbnV4LTIuNi4yMi1vbWFwMQogICAgICAgQ3JlYXRlZDogICAgICAyMDA4LTExLTIwICAyMzo0NDozMiBVVEMKICAgICAgIEltYWdlIFR5cGU6ICAgQVJNIExpbnV4IEtlcm5lbCBJbWFnZSAodW5jb21wcmVzc2VkKQogICAgICAgRGF0YSBTaXplOiAgICAxMDUyNTIwIEJ5dGVzID0gIDEgTUIKICAgICAgIExvYWQgQWRkcmVzczogMTAwMDgwMDAKICAgICAgIEVudHJ5IFBvaW50OiAgMTAwMDgwMDAKICAgIFNraXBwaW5nIGJhZCBibG9jayAweDAyY2MwMDAwCiAgICBBdXRvbWF0aWMgYm9vdCBvZiBpbWFnZSBhdCBhZGRyIDB4MTA0MDAwMDAgLi4uCiAgICAuLi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwYjJmMzhmZTNjNDU1NWRkMmI4MWM2OTg4MDQwM2MxM2FkNzIzMTUzCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgTWFyIDEyIDA3OjI3OjI1IDIwMDkgKzAxMDAKCiAgICBwcGM0eHg6IGx3bW9uNTogT25seSB1c2Ugb25lIENTIChyYW5rKSBpbiBERFIyIGNvbmZpZ3VyYXRpb24KCiAgICBUaGlzIHBhdGNoIGZpeGVzIGEgcHJvYmxlbSBzcG90dGVkIGJ5IE1pa2hhaWwgWm9sb3RhcnlvdiBvbiBTZXF1b2lhIHdpdGgKICAgIHRoZSBERFIyIGNvbmZpZ3VyYXRpb24gdG8gb25seSB1c2Ugb25lIENTIChyYW5rKS4gQXMgdGhpcyBjb2RlIGlzIG1vc3QKICAgIGxpa2VseSBjb3BpZWQgZnJvbSB0aGUgb3JpZ2luYWwgU2VxdW9pYSB2ZXJzaW9uLCB0aGlzIGVycm9yIHdhcyBjb3BpZWQKICAgIGFzIHdlbGwuCgogICAgVGhpcyBwYXRjaCBhbHNvIHJlbW92ZXMgc29tZSBkZWFkIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDkxOTliOWNjOGY1NmFjYTI2NTA0YjQ4Y2Y3MDIxNzYyMDhmNDZlNTQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBNYXIgMTIgMDc6MjQ6NDAgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogUE1DNDQwOiBPbmx5IHVzZSBvbmUgQ1MgKHJhbmspIGluIEREUjIgY29uZmlndXJhdGlvbgoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBwcm9ibGVtIHNwb3R0ZWQgYnkgTWlraGFpbCBab2xvdGFyeW92IG9uIFNlcXVvaWEgd2l0aAogICAgdGhlIEREUjIgY29uZmlndXJhdGlvbiB0byBvbmx5IHVzZSBvbmUgQ1MgKHJhbmspLiBBcyB0aGlzIGNvZGUgaXMgbW9zdAogICAgbGlrZWx5IGNvcGllZCBmcm9tIHRoZSBvcmlnaW5hbCBTZXF1b2lhIHZlcnNpb24sIHRoaXMgZXJyb3Igd2FzIGNvcGllZAogICAgYXMgd2VsbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZWU4NmZkMTVlMWNjZGE0YmU0MWYxZGJhODJiOGM5ZWZlYTlhMzE0NQpBdXRob3I6IE1pa2hhaWwgWm9sb3RhcnlvdiA8bGVib25AbGVib24ub3JnLnVhPgpEYXRlOglXZWQgTWFyIDExIDEwOjU0OjQ2IDIwMDkgKzAyMDAKCiAgICBGaXggQU1DQyBTZXF1b2lhIGJvYXJkIEREUiBtZW1vcnkgY29uZmlndXJhdGlvbgoKICAgIFNlcXVvaWEgYm9hcmQgc2NoZW1hdGljcyAoREVTMDIxMV8xMV9TQ0hfMTEucGRmLCBwYWdlIDUsIHVuaXQgVTFEKQogICAgc3BlY2lmaWVzIHRoYXQgQmFua1NlbCMxIGlzIG5vdCBjb25uZWN0ZWQsIHdoaWxlIGJvb3Rsb2FkZXIgbWVtb3J5CiAgICBjb25maWd1cmF0aW9uIGlzIChib2FyZC9hbWNjL3NlcXVvaWEvc2RyYW0uYyk6CgkgICBtdHNkcmFtKEREUjBfMTAsIDB4MDAwMDAzMDApOwogICAgaS5lLiBib3RoIENoaXAgU2VsZWN0cyB1c2VkIC0gbm90IGNvcnJlY3QuCgogICAgSWYgd2UgY2hhbmdlIHRvIGNvcnJlY3QgdmFsdWUgaGVyZToKCSAgIG10c2RyYW0oRERSMF8xMCwgMHgwMDAwMDEwMCk7CiAgICBtZW1vcnkgaXMgYWNjZXNzaWJsZSBPSyBhbHNvLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2hhaWwgWm9sb3RhcnlvdiA8bGVib25AbGVib24ub3JnLnVhPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGIzZGQ2MjllNzg4NzBiYTJkYzlmODAzMjk3ODcyMWMwZmEwMmE4NTYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gTWFyIDE1IDIyOjQwOjA5IDIwMDkgKzAxMDAKCiAgICBQcmVwYXJlIDIwMDkuMDMtcmMyCgogICAgVXBkYXRlIENIQU5FR0xPRywgZml4IG1pbm9yIGNvZGluZyBzdHlsZSBpc3N1ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDM5NGQzMGRkMWVlMjNiODBmZDVlNTllMTdlYmUwZmVjYTkyN2FiMzEKQXV0aG9yOiBKZXJyeSBWYW4gQmFyZW4gPGd2Yi51Ym9vdEBnbWFpbC5jb20+CkRhdGU6CUZyaSBNYXIgMTMgMTE6NDA6MTAgMjAwOSAtMDQwMAoKICAgIG1wYzgzeHg6IEFkZCBiYW5rIGNvbmZpZ3VyYXRpb24gdG8gRlNMIHNwZF9zZHJhbS5jCgogICAgVGhlIHJvdXRpbmUgYXNzdW1lZCA0IGJhbmsgU0RSQU1zLCBlbmhhbmNlIHRvIGNvbmZpZ3VyZSBmb3IgNCBvciA4CiAgICBiYW5rIFNEUkFNcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgogICAgQWNrZWQtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGI1ODE2MjZjMWUyNDc0YTNkYWRmNjlkNGYwZTA1ODJlY2NiYzQyMzUKQXV0aG9yOiBOb3JiZXJ0IHZhbiBCb2xodWlzIDxudmJvbGh1aXNAYWltdmFsbGV5Lm5sPgpEYXRlOglGcmkgTWFyIDEzIDA4OjU4OjE0IDIwMDkgKzAxMDAKCiAgICBtcGM4M3h4OiBjb3JyZWN0bHkgc2V0IGVuY3J5cHRpb24gYW5kIEkyQyBidXMgMCBjbG9jawoKICAgIFRoaXMgcGF0Y2ggbWFrZXMgc3VyZSB0aGUgY29ycmVjdCBtYXNrIGlzIGFwcGxpZWQgd2hlbiBzZXR0aW5nCiAgICB0aGUgZW5jcnlwdGlvbiBhbmQgSTJDIGJ1cyAwIGNsb2NrIGluIFNDQ1IuCiAgICBGYWlsaW5nIHRvIGRvIHNvIG1heSBsZWFkIHRvIEVOQ0NNIGJlaW5nIDAgaW4gd2hpY2ggY2FzZSBJMkMgYnVzIDAKICAgIHdvbid0IGZ1bmN0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vcmJlcnQgdmFuIEJvbGh1aXMgPG52Ym9saHVpc0BhaW12YWxsZXkubmw+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGU2YTZhNzA0MTUxYzJkN2U0YTdiNDg1NTQ1YjQ4YTYwMjBjY2NhMTcKQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgpEYXRlOglUaHUgTWFyIDEyIDE5OjMwOjUwIDIwMDkgKzAxMDAKCiAgICBPTUFQMzogQWRkIHN1cHBvcnQgZm9yIE9NQVAzIGRpZSBJRAoKICAgIFJlYWQgYW5kIHN0b3JlIE9NQVAzIGRpZSBJRCBpbiBVLUJvb3QgZW52aXJvbm1lbnQuCgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KCmNvbW1pdCBmOTQ5YmQ4ZDA4OWVjMzA1OWM0NjBhYzgyOWMwZDkxOWUxZDdhZjBlCkF1dGhvcjogSm9uIFNtaXJsIDxqb25zbWlybEBnbWFpbC5jb20+CkRhdGU6CVdlZCBNYXIgMTEgMTU6MDg6NTYgMjAwOSAtMDQwMAoKICAgIE1QQzUyMDAgRkVDIE1JSSBzcGVlZCByZWdpc3RlcgoKICAgIFNldCBhIG5vbi16ZXJvIHNwZWVkIGluIHRoZSBNSUkgcmVnaXN0ZXIgc28gdGhhdCBNSUkgY29tbWFuZHMgd2lsbCB3b3JrLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBTbWlybCA8am9uc21pcmxAZ21haWwuY29tPgoKY29tbWl0IDk0YTM1MzYxMWI5M2FjNGNiNDQzNGE1ZjdlOThhYTA5MDJkYTkxOWUKQXV0aG9yOiBZdXN1a2UuR29kYSA8Z29kYS55dXN1a2VAcmVuZXNhcy5jb20+CkRhdGU6CUZyaSBNYXIgMTMgMTY6MDg6MTggMjAwOSArMDkwMAoKICAgIHNoOiBhcDMyNXJ4YTogQ2hhbmdlIHRoZSB3YWl0IGN5Y2xlIGluIHRoZSBhcmVhIDUKCiAgICBTaWduZWQtb2ZmLWJ5OiBZdXN1a2UgR29kYSA8Z29kYS55dXN1a2VAcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgMmRiMGUxMjc4YjlmMTEyNjNlMGExMzMyNmI1N2Q0Zjk5NzgxZjdhYwpBdXRob3I6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJV2VkIEZlYiAyNSAxNjowNDoyNiAyMDA5ICswOTAwCgogICAgc2g6IEZpeCBjYW5ub3Qgd29yayBydGw4MTM5IG9uIHIyZHBsdXMKCiAgICBUaGUgcnRsODEzOSBkcml2ZXIgdXNlIHBjaV9tZW1fdG9fcGh5cy4gU28gaXQgbmVlZCBQQ0kgc3lzdGVtIG1lbW9yeQogICAgcmVnaXN0cmF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCA2NGYzYzBiOGJhOTlkNjY1MWRiNTkyNzNlNDk3YWI1ZTg1N2M4ZDRmCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgpEYXRlOglGcmkgRmViIDI3IDE4OjM1OjQxIDIwMDkgKzA5MDAKCiAgICBzaDogQWRkIG5ldGRldiBoZWFkZXIgZml4aW5nIG9mIHdhcm5pbmcvYnVpbGQKCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgYWRhOTMxODI1MmY1MWMyNjI2ZTk4MzdjNjIzZjk4MTJiMDMwOGRlYQpBdXRob3I6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJVHVlIE1hciAzIDE1OjExOjE3IDIwMDkgKzA5MDAKCiAgICBzaDogQWRkIHN1cHBvcnQgMzItQml0IEV4dGVuZGVkIEFkZHJlc3MgTW9kZSB0byBzaDc3ODVsY3IKCiAgICBXZSBjYW4gYnVpbHQgJ21ha2Ugc2g3Nzg1bGNyXzMyYml0X2NvbmZpZycuIEFuZCBhZGQgbmV3IGNvbW1hbmQgInBtYiIKICAgIGZvciB0aGlzIG1vZGUuIFRoaXMgY29tbWFuZCBjaGFuZ2VzIFBNQiBmb3IgdXNpbmcgNTEyTUIgc3lzdGVtIG1lbW9yeS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgMDZiMTgxNjNiNTdlNmIwMzQ5YjBjMjk5MjIyZDUwZTdiMWU0MWU1MApBdXRob3I6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJV2VkIEZlYiAyNSAxNDoyNjo0MiAyMDA5ICswOTAwCgogICAgc2g6IEFkZCBzb21lIHJlZ2lzdGVyIHZhbHVlIGNvbmZpZ3VyYWJsZSB0byBQQ0kgb2YgU0g3NzgwCgogICAgU29tZSByZWdpc3RlciB2YWx1ZSB3YXMgaGFyZGNvZGVkIGZvciBTeXN0ZW0gbWVtb3J5IHNpemUgMTI4TUIgYW5kCiAgICBtZW1vcnkgb2Zmc2V0IDB4MDgwMDAwMDAuIFRoaXMgcGF0Y2ggZml4ZWQgdGhlIHByb2JsZW0uCgogICAgU2lnbmVkLW9mZi1ieTogWW9zaGloaXJvIFNoaW1vZGEgPHNoaW1vZGEueW9zaGloaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDA2ZTI3MzVlYjg1Y2JlYTdjZWNiM2MzMDhkNmQwNzhiMzY1MWIyMmMKQXV0aG9yOiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVdlZCBGZWIgMjUgMTQ6MjY6NTIgMjAwOSArMDkwMAoKICAgIHNoOiBBZGQgc3lzdGVtIG1lbW9yeSByZWdpc3RyYXRpb24gdG8gUENJIGZvciBTSDQKCiAgICBJdCBpcyBuZWNlc3NhcnkgZm9yIHNvbWUgcGNpIGRldmljZSBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogWW9zaGloaXJvIFNoaW1vZGEgPHNoaW1vZGEueW9zaGloaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGIzMDYxYjQwZGI2OTEyNDVhN2JiOWE1NTM1NGI0ZWRhY2JmMzkwMmQKQXV0aG9yOiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVdlZCBGZWIgMjUgMTQ6MjY6NTUgMjAwOSArMDkwMAoKICAgIHNoOiBBZGQgdmFsdWUgZm9yIFBDSSBzeXN0ZW0gbWVtb3J5IHJlZ2lzdHJhdGlvbiBvZiBzaDc3ODVsY3IKCiAgICBTaWduZWQtb2ZmLWJ5OiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgNmQ4NGFlMzk1NmE2Y2Q3YWViZDg2ZjY2MTEzMDc1MjU5NGU2MDEyNApBdXRob3I6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJVHVlIE1hciAzIDE1OjExOjA4IDIwMDkgKzA5MDAKCiAgICBzaDogQWRkIG1hY3JvcyBmb3IgU0gtNEEgMzItQml0IEFkZHJlc3MgRXh0ZW5kZWQgTW9kZQoKICAgIFNpZ25lZC1vZmYtYnk6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCAzZTNlZWMzOWRlOGZlMGFlNjJlNmU0ZDRlM2ZhNDQ0MmVlOWVkNmIxCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgpEYXRlOglUdWUgRmViIDMgMTM6MzU6MDUgMjAwOSArMDkwMAoKICAgIHNoOiB1c2Ugd3JpdGV7OCwxNiwzMn0gaW4gbXM3NzIwc2UgbG93bGV2ZWxfaW5pdAoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCAwNDUyMzUyZGYxMThiYzlkZDY4NGEwNTZhYWFhNWZiNGFlZDExNzhhCkF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CkRhdGU6CU1vbiBNYXIgOSAxODowNzo1MyAyMDA5IC0wNTAwCgogICAgdHNlYzogcmVwb3J0IHdoZW4gdGhlcmUgaXMgbm8gdmVuZG9yIHNwZWNpZmljIFBIWSBzdXBwb3J0CgogICAgQ29tbWl0IGFmMWMyYjg0IGFkZGVkIGEgZ2VuZXJpYyBwaHkgc3VwcG9ydCwgd2l0aCBhbiBJRCBvZiB6ZXJvCiAgICBhbmQgYSAzMiBiaXQgbWFzazsgbWVhbmluZyB0aGF0IGl0IHdpbGwgbWF0Y2ggb24gYW55IFBIWSBJRC4KCiAgICBUaGUgcHJvYmxlbSBpcyB0aGF0IHRoZXJlIGlzIGEgdGVzdCB0aGF0IGNoZWNrZWQgaWYgYSBtYXRjaGluZwogICAgUEhZIHdhcyBmb3VuZCwgYW5kIGlmIG5vdCwgaXQgcHJpbnRlZCB0aGUgbm9uLW1hdGNoaW5nIElELgogICAgQnV0IHNpbmNlIHRoZXJlIHdpbGwgYWx3YXlzIGJlIGEgbWF0Y2ggKG9uIHRoZSBnZW5lcmljIFBIWSwKICAgIHdvcnN0IGNhc2UpLCB0aGlzIHRlc3Qgd2lsbCBuZXZlciB0cmlwLgoKICAgIEluIHRoZSBjYXNlIG9mIGEgbWlzY29uZmlndXJlZCBQSFkgYWRkcmVzcywgb3Igb2YgYSBQSFkgdGhhdAogICAgaXNuJ3QgZXhwbGljaXRseSBzdXBwb3J0ZWQgb3V0c2lkZSBvZiB0aGUgZ2VuZXJpYyBzdXBwb3J0LAogICAgeW91IHdpbGwgbmV2ZXIgc2VlIHRoZSBJRCBvZiAweGZmZmZmZmZmLCBvciB0aGUgSUQgb2YgdGhlCiAgICByZWFsIChidXQgdW5zdXBwb3J0ZWQpIGNoaXAuICBJdCB3aWxsIHNpbGVudGx5IGZhbGwgdGhyb3VnaAogICAgb250byB0aGUgZ2VuZXJpYyBzdXBwb3J0LgoKICAgIFRoaXMgY2hhbmdlIG1ha2VzIHRoYXQgdGVzdCB1c2VmdWwgYWdhaW4sIGFuZCBlbnN1cmVzIHRoYXQKICAgIHRoZSBzZWxlY3Rpb24gb2YgZ2VuZXJpYyBQSFkgc3VwcG9ydCBkb2Vzbid0IGhhcHBlbiB3aXRob3V0CiAgICBzb21lIHNvcnQgb2Ygbm90aWNlLiAgSXQgYWxzbyBtYWtlcyBpdCBleHBsaWNpdGx5IGNsZWFyIHRoYXQKICAgIHRoZSBnZW5lcmljIFBIWSBtdXN0IGJlIGxhc3QgaW4gdGhlIFBIWSB0YWJsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYzI3OWRmYzEwMTg2Y2ViYTc4ZDM4NjIwMzZmMTU4NzUwZTg2NTk5YQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBNYXIgOSAxMDo1MzowNSAyMDA5ICswMTAwCgogICAgU0lNUEM4MzEzIGJvYXJkOiBmaXggb3V0IG9mIHRyZWUgYnVpbGRpbmcuCgogICAgRml4IHR5cG8gaW4gbWFrZWZpbGUgd2hpY2ggYnJva2Ugb3V0IG9mIHRyZWUgYnVpbGRzLgoKICAgIEFsc28gdXNlIGV4cG9saWNpdCAicm0iIGluc3RlYWQgb2YgImxuIC1zZiIgd2hpY2ggaXMga25vd24gdG8gYmUKICAgIHVucmVsaWFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNDliNWFmZjQ5MWJkNTc0OTM1ZWNhZjg1NDUxNTIwNjZhMjVlZmYzZApBdXRob3I6IGtzaUBrb2k4Lm5ldCA8a3NpQGtvaTgubmV0PgpEYXRlOglNb24gRmViIDIzIDEwOjUzOjEzIDIwMDkgLTA4MDAKCiAgICBBZGQgZVRTRUMgMS8yIElPIG92ZXJyaWRlIGNvbnRyb2wgKGNvcnJlY3RlZCkKCiAgICBUaGlzIGFkZHMgdHNlYzEyaW9vdmNyIHRvIGluY2x1ZGUvYXNtLXBwYy9pbW1hcF84NXh4LmggKHdhcyByZXNlcnZlZC4pCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2V5IEt1YnVzaHluIDxrc2lAa29pOC5uZXQ+Cgpjb21taXQgNDhjMmI3YmI0MzJkYTg0ZmNjZTA1YjRkYjZlZmFkMGJlNzNhOTNkYwpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE1hciA2IDE5OjA1OjUyIDIwMDkgLTA2MDAKCiAgICBmc2w6IFJlbW92ZSB1bm5lY2Vzc2FyeSBkZWJ1ZyBwcmludGZzCgogICAgVGhlc2Ugd2VyZSBsZWZ0IGluIGFjY2lkZW50YWxseSwgYW5kIGFyZSBub3QgcmVhbGx5IHVzZWZ1bCB1bmxlc3MgdGhlCiAgICBjb2RlIGlzIGFzIGJyb2tlbiBhcyBpdCB3YXMgd2hlbiBpdCB3YXMgYmVpbmcgZGV2ZWxvcGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwZWU4NGI4OGI3OGJjZTQyNTE5MGQ4Y2Q3YWRmNGMzMGNiYTBjMmYwCkF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEZlYiAyNCAwMjozNzo1OSAyMDA5IC0wNjAwCgogICAgRml4IG1wYzg1eHggZGRyLWdlbjMgZGRyX3NkcmFtX2NmZy4KCiAgICBDb21taXQgZTFiZTBkMjUsICIzMmJpdCBCVWcgZml4IGZvciBERFIyIG9uIDg1NzIiIHByZXZlbnRlZCBvdGhlcgogICAgc2RyYW1fY2ZnIGJpdHMgKHN1Y2ggYXMgZWNjIGFuZCBzZWxmX3JlZnJlc2hfaW5fc2xlZXApIGZyb20gYmVpbmcgc2V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYTkyMmZkYjg3YWYyNWMyNWMwMzI0MjQ5MDhkY2Y2MGZiZjMyNTBlYQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVR1ZSBGZWIgMjQgMDY6MTM6MTAgMjAwOSArMDEwMAoKICAgIFBYQTogdGltZXIgdXNlIGRvX2RpdiBhbmQgc2ltcGxpZnkgaXQKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDRiMDBkMWFhODJiNmFmOWI0ZTYyOGE1NzI5YTEyMDg2ZTQ0NTU4YjMKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gTWFyIDkgMTA6NTE6MzkgMjAwOSArMDEwMAoKICAgIFNJTVBDODMxMyBib2FyZDogZml4IG91dCBvZiB0cmVlIGJ1aWxkaW5nLgoKICAgIEZpeCB0eXBvIGluIG1ha2VmaWxlIHdoaWNoIGJyb2tlIG91dCBvZiB0cmVlIGJ1aWxkcy4KCiAgICBBbHNvIHVzZSBleHBvbGljaXQgInJtIiBpbnN0ZWFkIG9mICJsbiAtc2YiIHdoaWNoIGlzIGtub3duIHRvIGJlCiAgICB1bnJlbGlhYmxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZjcwZmQxM2UyZmU0Y2Y1OGUyNTEyNzFjMjdmOWMwNmUxNDFkN2Y5YQpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglUdWUgRmViIDI0IDExOjMwOjUxIDIwMDkgKzAxMDAKCiAgICA4MzYwLCBrbWV0ZXIxOiBhZGRlZCBib290Y291bnQgZmVhdHVyZS4KCiAgICBhZGQgQ09ORklHX0JPT1RDT1VOVF9MSU1JVCBmZWF0dXJlIGZvciA4MzYwIENQVS4KCiAgICBUaGUgYm9vdGNvdW50ZXIgdXNlcyA4IGJ5dGVzIGZyb20gdGhlIG11cmFtLAogICAgYmVjYXVzZSBubyBvdGhlciBtZW1vcnkgd2FzIGZvdW5kIG9uIHRoaXMKICAgIENQVSBmb3IgdGhlIGJvb3Rjb3VudCBmZWF0dXJlLiBTbyB3ZSBtdXN0CiAgICBjb3JyZWN0IHRoZSBtdXJhbSBzaXplIGluIERUUyBiZWZvcmUgYm9vdGluZwogICAgTGludXguCgogICAgVGhpcyBmZWF0dXJlIGlzIGFjdHVhbCBvbmx5IGltcGxlbWVudGVkIGZvcgogICAgTVBDODM2MCwgYmVjYXVzZSBub3QgYWxsIDgzeHggQ1BVIGhhdmUgcWUsCiAgICBhbmQgdGhlcmVmb3JlIG5vIG11cmFtLCB3aGljaCB0aGlzIGZlYXR1cmUKICAgIHVzZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFlN2VkMjU2NTAzMWUwMWFiYzE4YzcxMzAzMGEwYTk4MjljMDc2ODQKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVHVlIEZlYiAyNCAxMTozMDo0OCAyMDA5ICswMTAwCgogICAgODN4eCwga21ldGVyOiBRRV9FTkVUMTAgZXJyYXRhIGZvciBTaWxpY29uIFJldmlzaW9uIDIuMQoKICAgIG9sZCBjb2RlIGltcGxlbWVudGVkIHRoZSBRRV9FTkVUMTAgZXJyYXRhIG9ubHkgZm9yIFNpbGljb24KICAgIFJldmlzaW9uIDIuMC4gTmV3IGNvZGUgcmVhZHMgbm93IHRoZSBTaWxpY29uIFJldmlzaW9uCiAgICByZWdpc3RlciBhbmQgc2V0cyBkZXBlbmRlbmQgb24gdGhlIFNpbGljb24gUmV2aXNpb24gdGhlCiAgICB2YWx1ZXMgYXMgYWR2aXNlZCBpbiB0aGUgUUVfRU5FVDEwIGVycmF0YS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjA1Zjc4ZTM0YTNmMDEwMzY5M2I4OTFmMjU3M2VkZDM1MmU3ZDQ5NQpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglUdWUgRmViIDI0IDExOjMwOjQ0IDIwMDkgKzAxMDAKCiAgICA4M3h4LCBrbWV0ZXIxOiB1cGRhdGVzIGZvciAyMDA5LjAzCgogICAgLSBIUkNXIHVwZGF0ZQogICAgICBIUkNXSF9CT09UU0VRX0RJU0FCTEUgbm90IEhSQ1dIX0JPT1RTRVFfTk9STUFMCiAgICAgIEhSQ1dIX0xBTEVfRUFSTFkgYWRkZWQKICAgIC0gRERSLVNEUkFNIHNldHRpbmdzIG1vZGlmaWVkLiBUaGlzIHNvbHZlcyBzcG9yYWRpY2FsbHkKICAgICAgcHJvYmxlbXMgd2l0aCB0aGlzIG1lbW9yeS4KICAgIC0gQ1MxIG5vdyAxMjggTUIgd2luZG93IHNpemUKICAgIC0gQ1MzIG5vdyA1MTIgTUIgd2luZG93IHNpemUKICAgIC0gUFJBTSBhY3RpdmF0ZWQKICAgIC0gTVREUEFSVFNfREVGQVVMVCBkZWZpbmVkCiAgICAtIENPTkZJR19IT1NUTkFNRSBhZGRlZAogICAgLSBNT05JVE9SX0xFTiBub3cgMzg0IEtCCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDExOGNiZTNjMzVjODk4ZjhkMDIwYjI5ZDZkYzE4MDMwN2NhY2YxNDcKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVHVlIEZlYiAyNCAxMTozMDo0MCAyMDA5ICswMTAwCgogICAgODN4eCwga21ldGVyMTogYXV0b2RldGVjdCBzaXplIG9mIEREUiBJSSBSQU0KCiAgICBpdCBpcyBwb3NzaWJsZSB0aGF0IHNvbWUgYm9hcmQgdmFyaWFudHMgaGF2ZSBkaWZmZXJlbnQgRERSIElJCiAgICBSQU0gc2l6ZXMuIFNvIHdlIGF1dG9kZXRlY3QgdGhlIHNpemUgb2YgdGhlIGFzc2VtYmxlZCBSQU0uCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGMxYmNlNGZmZjc1MGQ3MzRiMWZhNzQ2N2ViMDhmOTM5MDJjOTdjYTYKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVHVlIEZlYiAyNCAxMTozMDozNyAyMDA5ICswMTAwCgogICAgODN4eCwgaTJjOiBhZGQgbXV4IHN1cHBvcnQgZm9yIGZzbF9pMmMKCiAgICBUaGlzIHBhdGNoIGFkZHMgSTJDIG11eCBzdXBwb3J0IGZvciB0aGUgZnNsX2kyYyBkcml2ZXIuIFRoaXMKICAgIGFsbG93cyB5b3UgdG8gYWRkICJuZXciIGkyYyBidXNzZXMsIHdoaWNoIGFyZSByZWFjaGVkIG92ZXIKICAgIGkyYyBtdXhlcy4gRm9yIG1vcmUgaW5mb3MsIHBsZWFzZSBsb29rIGluIHRoZSBSRUFETUUgYW5kCiAgICBzZWFyY2ggZm9yIENPTkZJR19JMkNfTVVYLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxOWYwZTkzMDQxZGJmZTIyZjhkMzliOThlNGY3ZjllYTg3Yjc3ODAzCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVR1ZSBGZWIgMjQgMTE6MzA6MzQgMjAwOSArMDEwMAoKICAgIDgzeHgsIGttZXRlcjE6IGFkZCBJMkMsIGR0dCwgZWVwcm9tIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZHMgSTJDIHN1cHBvcnQgZm9yIHRoZSBLZXltaWxlIGttZXRlcjEgYm9hcmQuCiAgICBJdCB1c2VzIHRoZSBGaXJzdCBJMkMgQ29udHJvbGxlciBmcm9tIHRoZSBDUFUsIGZvcgogICAgYWNjZXNzaW5nIDQgdGVtcGVyYXR1cmUgc2Vuc29ycywgYW4gZWVwcm9tIHdpdGggSVZNIGRhdGEKICAgIGFuZCB0aGUgYm9vdGVlcHJvbSBvdmVyIGEgcGNhOTU0NyBtdXguCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGRiMWQ3MmFmZDc3Mjg3YmM4NTc3MjEwZjNmNzFhYjI0OWRjZjE0NmYKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVHVlIEZlYiAyNCAxMTozMDozMCAyMDA5ICswMTAwCgogICAgaTJjLCBkdHQ6IG1vdmUgZHR0X2luaXQgKCkgdG8gYm9hcmRfaW5pdF9yICgpCgogICAgSW4gY2FzZSB3aGVyZSBhIGJvYXJkIG5vdCB1c2VzIENPTkZJR19QT1NULCBpdCBpcyBub3QKICAgIG5lY2Vzc2FyeSB0byBpbml0IHRoZSBEVFRzIHdoZW4gcnVubmluZyBmcm9tIGZsYXNoLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1YjAwNTU1NDdmMDI0NjkwOGI3OWNjMzAwMTcwZDg3MzgwYjY5ZTE4CkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEZlYiAyNSAxMjozMTozMiAyMDA5ICswODAwCgogICAgODN4eDogRml4IHNvbWUgYnVncyBpbiBzcGQgc2RyYW0gY29kZQoKICAgIDEuIFJEX1RPX1BSRSBtaXNzZWQgdG8gYWRkIHRoZSBBTCwgYW5kIG5lZWQgbWluIDIgY2xvY2tzIGZvcgogICAgICB0UlRQIGFjY29yZGluZyB0byBERFIyIEpFREVDIHNwZWMuCiAgICAyLiBXUlRPUkQgLSB0V1RSIG5lZWQgbWluIDIgY2xvY2tzIGFjY29yZGluZyB0byBERFIyIEpFREVDIHNwZWMuCiAgICAzLiBhZGQgdGhlIHN1cHBvcnQgb2YgRERSMi01MzMsNjY3LDgwMCBESU1NcwogICAgNC4gY3BvCiAgICA1LiBtYWtlIHRoZSBBTCB0byBtaW4gdG8gZ2FpbiBiZXR0ZXIgcGVyZm9ybWFuY2UuCgogICAgVGhlIE1pY3JvbiBNVDlIVEY2NDcyQ0hZLTY2N0QxIERJTU1zIHRlc3QgcGFzc2VkIG9uCiAgICBNUEM4Mzd4RU1EUyBwbGF0Zm9ybSBhdCAyNjZNSHovMzMzTUh6LzQwME1IeiBkYXRhIHJhdGUuCgogICAgaXRlbXMgMSwgMiBhbmQgNToKICAgIEFja2VkLWJ5OiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KCiAgICBSZXBvcnRlZC1ieTogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+CiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiN2JlNjNhYmVjNDU4NThjMDQ0ZjBmYmQ2YWVlZjUyNGM0NjYzZjliCkF1dGhvcjogVmFsZXJpeSBHbHVzaGtvdiA8Z3Z2QGxzdGVjLmNvbT4KRGF0ZToJV2VkIEZlYiA0IDE4OjI3OjQ5IDIwMDkgKzAyMDAKCiAgICBNUEM4MzQ5SVRYOiBzZXZlcmFsIGNvbmZpZyBpc3N1ZXMgZml4ZWQKCiAgICBUaGUgcHJldmlvdXMgdmVyc2lvbiByZWJvb3RlZCBmb3JldmVyIHdpdGggRERSIGJpZ2dlciB0aGFuIDI1Nk1CLgogICAgQWNjZXNzIHRoZSBEUzEzMzkgUlRDIGNoaXAgaXMgb24gSTJDMSBidXMuCiAgICBBbGxvdyBESENQLgoKICAgIFNpZ25lZC1vZmYtYnk6IFZhbGVyaXkgR2x1c2hrb3YgPGd2dkBsc3RlYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDdlMmVjMWRlMWQyZDcyM2I1OWQ3ZGQyZmI4NWZmNzFiOTUyZDYzYWYKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJVGh1IEZlYiAxOSAxODoyMDozOSAyMDA5ICswMzAwCgogICAgbXBjODN4eDogTVBDODM3WEVNRFM6IEluaXRpYWxpemUgU2VyRGVzIGJlZm9yZSBuZWdhdGluZyBQQ0lFIHJlc2V0IHNpZ25hbAoKICAgIFRoZSBTZXJEZXMgaW5pdGlhbGl6YXRpb24gc2hvdWxkIGJlIGZpbmlzaGVkIGJlZm9yZSBuZWdhdGluZyB0aGUgcmVzZXQKICAgIHNpZ25hbCBhY2NvcmRpbmcgdG8gdGhlIHJlZmVyZW5jZSBtYW51YWwuIFRoaXMgaXNuJ3QgYW4gaXNzdWUgb24gcmVhbAogICAgaGFyZHdhcmUsIGJ1dCB3ZSdkIGJldHRlciBzdGljayB0byB0aGUgc3BlY2lmaWNhdGlvbnMgYW55d2F5LgoKICAgIFN1Z2dlc3RlZC1ieTogTGl1IERhdmUgPERhdmVMaXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5YzJkNjNlYzBlOTUyMDk0OGI2ZDU5OGVhMzJlOWFhNGUwZGU4NDdmCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVdlZCBGZWIgMjUgMTI6Mjg6MzIgMjAwOSArMDEwMAoKICAgIGkyYywgZHR0OiBtb3ZlIGR0dF9pbml0ICgpIHRvIGJvYXJkX2luaXRfciAoKQoKICAgIGl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gaW5pdCB0aGUgRFRUcyBzbyBlYXJseSwKICAgIHNvIG1vdmUgdGhpcyBpbml0IHRvIGJvYXJkX2luaXRfciAoKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAwMGNjNTU5NWE3Y2FhYzgwNjZiNDA4Nzc0MzgzYTk1NmMyZTI2Nzk3CkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglXZWQgRmViIDI1IDIwOjI4OjEzIDIwMDkgKzAxMDAKCiAgICBsY2Q6IEZpeCBjb21waWxhdGlvbiB3YXJuaW5nIGluIGNvbW1vbi9sY2QuYwoKICAgIEZpeCBmb2xsb3dpbmcgd2FybmluZyB3aGlsZSBjb21waWxhdGlvbiBmb3IgbWNjMjAwIGJvYXJkOgoKICAgIGxjZC5jOiBJbiBmdW5jdGlvbiAnbGNkX2Rpc3BsYXlfYml0bWFwJzoKICAgIGxjZC5jOjYyNTogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdjbWFwJwoKICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCBmNWE3N2EwOWM5M2ZlN2YwNGMwYzU2ZjY0ZWE0MzZmN2QzMThkNjc0CkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJVHVlIEZlYiAyNCAyMToxMToyNCAyMDA5ICsxMTAwCgogICAgTW92ZWQgU0M1MjAgRmlsZXMgKGZpeCBjb21taXQgNDA3OTc2MTg1ZTBkZGEyYzkwZTg5MDI3MTIxYTEwNzFiOWM3N2JmYikKCiAgICBGaXhlcyBjb21taXQgNDA3OTc2MTg1ZTBkZGEyYzkwZTg5MDI3MTIxYTEwNzFiOWM3N2JmYgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzcyBhdCBnbWFpbC5jb20+Cgpjb21taXQgNzViYTZkNjkzYjhmNjI0N2FhNGI4MTMyM2EyZWUyZmEyODIyMjIxNQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIEZlYiAyMyAxMDoyOTo0NyAyMDA5IC0wNTAwCgogICAgc21jOTExeDogc3BsaXQgb3V0IHVzZWZ1bCBkZWZpbmVzL2Z1bmN0aW9ucyBpbnRvIGxvY2FsIGhlYWRlcgoKICAgIFRoZSBzbWM5MTF4IGRyaXZlciBoYXMgYSBsb3Qgb2YgdXNlZnVsIGRlZmluZXMvZnVuY3Rpb25zIHdoaWNoIGNhbiBiZSB1c2VkCiAgICBieSBwaWVjZXMgb2YgY29kZSAoc3VjaCBhcyBleGFtcGxlIGVlcHJvbSBwcm9ncmFtbWVycykuICBSYXRoZXIgdGhhbgogICAgZm9yY2luZyBlYWNoIHBsYWNlIHRvIGR1cGxpY2F0ZSB0aGVzZSBkZWZpbmVzL2Z1bmN0aW9ucywgc3BsaXQgdGhlbSBvdXQKICAgIG9mIHRoZSBzbWRjOTExeCBkcml2ZXIgaW50byBhIGxvY2FsIGhlYWRlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBBY2tlZC1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KICAgIENDOiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+CiAgICBDQzogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgogICAgQ0M6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KICAgIENDOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGEyYmI3MTA1YTc5YWY4ZjJmZmE5Zjg3MjU2ZmNlNmMxY2JjYmQ4ZTEKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CkRhdGU6CVR1ZSBGZWIgMjQgMTA6NDQ6MDIgMjAwOSArMDEwMAoKICAgIEFSTTogYWRkIGFuICJlZXQiIHZhcmlhbnQgb2YgdGhlIGlteDMxX3BoeWNvcmUgYm9hcmQKCiAgICBUaGUgImVldCIgdmFyaWFudCBvZiB0aGUgaW14MzFfcGh5Y29yZSBib2FyZCBoYXMgYW4gT0xFRCBkaXNwbGF5LCB1c2luZyBhCiAgICBzNmU2M2Q2IGRpc3BsYXkgY29udHJvbGxlciBvbiB0aGUgZmlyc3QgU1BJIGludGVyZmFjZSwgdXNpbmcgR1BJTzU3IGFzIGEKICAgIGNoaXAtc2VsZWN0IGZvciBpdC4gV2l0aCB0aGlzIGNvbmZpZ3VyYXRpb24geW91IGNhbiBkaXNwbGF5IDI1NiBjb2xvdXIgQk1QCiAgICBpbWFnZXMgaW4gMTYtYml0IFJHQiAoUkdCNTY1KSBMQ0QgbW9kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CiAgICBBY2tlZC1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAwYzk5ZjZhYjMxYzU2MzU4NzRiYTdhMmU4ZDM3NzkxYmZiZjAyZjhmCkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglGcmkgRmViIDYgMTA6Mzc6NTcgMjAwOSArMDEwMAoKICAgIHZpZGVvOiBhZGQgYW4gaS5NWDMxIGZyYW1lYnVmZmVyIGRyaXZlcgoKICAgIEFkZCBhIGRyaXZlciBmb3IgdGhlIFN5bmNocm9ub3VzIERpc3BsYXkgQ29udHJvbGxlciBhbmQgdGhlIERpc3BsYXkKICAgIEludGVyZmFjZSBvbiBpLk1YMzEsIHVzaW5nIElQVSBmb3IgRE1BIGNoYW5uZWwgc2V0dXAuIFNvIGZhciBvbmx5CiAgICBkaXNwbGF5aW5nIG9mIGJpdG1hcHMgaXMgc3VwcG9ydGVkLCBubyB0ZXh0IG91dHB1dC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CiAgICBBY2tlZC1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IGIyNDVlNjVlZTNjNGNjZTNjY2YwMDhhMjFmNDUyODIzOTY1NTg3NmMKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CkRhdGU6CUZyaSBGZWIgNiAxMDozNzo1MyAyMDA5ICswMTAwCgogICAgTENEOiBzdXBwb3J0IDhicHAgQk1QcyBvbiAxNmJwcCBkaXNwbGF5cwoKICAgIFRoaXMgcGF0Y2ggYWxzbyBzaW1wbGlmaWVzIHNvbWUgaWZkZWZzIGluIGxjZC5jLCBpbnRyb2R1Y2VzIGEgZ2VuZXJpYwogICAgdmlkaW5mb190LCB3aGljaCBuZXcgZHJpdmVycyBhcmUgZW5jb3VyYWdlZCB0byB1c2UgYW5kIG9sZCBkcml2ZXJzIHRvIHN3aXRjaAogICAgb3ZlciB0by4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CiAgICBBY2tlZC1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IGEzMDNkZmIwZTlhOTNlNTE2ZWE5NDI3YjVjMDk1NDNkNWY3NGFkZTEKQXV0aG9yOiBNYXJrIEphY2tzb24gPG1wZmpAbWltYy5jby51az4KRGF0ZToJRnJpIEZlYiA2IDEwOjM3OjQ5IDIwMDkgKzAxMDAKCiAgICBBZGQgMTZicHAgQk1QIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZHMgMTZicHAgQk1QIHN1cHBvcnQgdG8gdGhlIGNvbW1vbiBsY2QgY29kZS4KCiAgICBVc2UgQ09ORklHX0JNUF8xNkJQUCBhbmQgc2V0IExDRF9CUFAgdG8gTENEX0NPTE9SMTYgdG8gZW5hYmxlIHRoZSBjb2RlLgoKICAgIEF0IHRoZSBtb21lbnQgaXQncyBvbmx5IGJlZW4gdGVzdGVkIG9uIHRoZSBNSU1DMjAwIEFWUjMyIGJvYXJkLCBidXQgZXh0ZW5kaW5nCiAgICB0aGlzIHRvIG90aGVyIHBsYXRmb3JtcyBzaG91bGQgYmUgYSBzaW1wbGUgdGFzayAhIQoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmsgSmFja3NvbiA8bXBmakBtaW1jLmNvLnVrPgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgogICAgQWNrZWQtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCA2ODk1NTFjNWZmMWIzOTRiODg0MTJmM2RmMjIxNDRlNzk0NjhkM2E5CkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglGcmkgRmViIDYgMTA6Mzc6NDEgMjAwOSArMDEwMAoKICAgIEEgZHJpdmVyIGZvciB0aGUgUzZFNjNENiBTUEkgZGlzcGxheSBjb250cm9sbGVyIGZyb20gU2Ftc3VuZwoKICAgIFRoaXMgaXMgYSBkcml2ZXIgZm9yIHRoZSBTNkU2M0Q2IFNQSSBPTEVEIGRpc3BsYXkgY29udHJvbGxlciBmcm9tIFNhbXN1bmcuCiAgICBJdCBvbmx5IHByb3ZpZGVzIGFjY2VzcyB0byBjb250cm9sbGVyJ3MgcmVnaXN0ZXJzIHNvIHRoZSBjbGllbnQgY2FuIGZyZWVseQogICAgY29uZmlndXJlIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgZmM3YTkzYzg0ZjNmMTM0NDg0ODExYTBkOWFkNzUxZmJjMWE3ZGE2ZApBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KRGF0ZToJRnJpIEZlYiAxMyAwOToyNjo0MCAyMDA5ICswMTAwCgogICAgaS5NWDMxOiBzdXBwb3J0IEdQSU8gYXMgYSBjaGlwLXNlbGVjdCBpbiB0aGUgbXhjX3NwaSBkcml2ZXIKCiAgICBTb21lIFNQSSBkZXZpY2VzIGhhdmUgc3BlY2lhbCByZXF1aXJlbWVudHMgb24gY2hpcC1zZWxlY3QgaGFuZGxpbmcuCiAgICBXaXRoIHRoaXMgcGF0Y2ggd2UgY2FuIHVzZSBhIEdQSU8gYXMgYSBjaGlwLXNlbGVjdCBhbmQgc3RyaWN0bHkgZm9sbG93CiAgICB0aGUgU1BJX1hGRVJfQkVHSU4gYW5kIFNQSV9YRkVSX0VORCBmbGFncy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CiAgICBBY2tlZC1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBiMzBkZTNjY2NmODg2NzU2NmNkMzE0ZTdjNzAzMzkwNGFmYTVkYzlkCkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglTYXQgRmViIDcgMDE6MTg6MDcgMjAwOSArMDEwMAoKICAgIGkuTVgzMTogYWRkIGEgc2ltcGxlIGdwaW8gZHJpdmVyCgogICAgVGhpcyBpcyBhIG1pbmltYWwgZHJpdmVyLCBzbyBmYXIgb25seSBtYW5hZ2luZyBvdXRwdXQuIEl0IHdpbGwKICAgIGJlIHVzZWQgYnkgdGhlIG14Y19zcGkuYyBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgogICAgQWNrZWQtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZjliNmExNTc1ZDlmMWNhMTkyZTRjYjYwZTU0N2FhNjZmMDhiYWEzZgpBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KRGF0ZToJU2F0IEZlYiA3IDAwOjA5OjEyIDIwMDkgKzAxMDAKCiAgICBpLk1YMzE6IGZpeCBTUEkgZHJpdmVyIGZvciBzaG9ydGVyIHRoYW4gMzIgYml0CgogICAgRml4IHNldHRpbmcgdGhlIFNQSSBDb250cm9sIHJlZ2lzdGVyLCA4IGFuZCAxNi1iaXQgdHJhbnNmZXJzCiAgICBhbmQgYSB3cm9uZyBwb2ludGVyIGluIHRoZSBmcmVlIHJvdXRpbmUgaW4gdGhlIG14Y19zcGkgZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDdlOTE1NTgwMzJhMGMxOTMyZGQ3ZjRmNTYyZjljN2NjNTVlZmM0OTYKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJVGh1IEZlYiAxOSAxODoyMDo1MiAyMDA5ICswMzAwCgogICAgbXBjODN4eDogTVBDODM3WEVSREI6IEFkZCBQQ0llIHN1cHBvcnQKCiAgICBPbiBNUEM4Mzc3RS1SREIgYW5kIE1QQzgzNzhFLVJEQiBib2FyZHMgd2UgaGF2ZSBQQ0llIGFuZCBtaW5pLVBDSWUKICAgIHNsb3RzLiBMZXQncyBzdXBwb3J0IHRoZW0uCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDUwYTRkMDhlOGYzMWRlYmJkNGVhMTJjYWYxMjY1ZjM2NDNjMzhkNWIKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJVGh1IEZlYiAxOSAxODoyMDo1MCAyMDA5ICswMzAwCgogICAgbXBjODN4eDogUENJOiBGaXggaGFyZC1jb2RlZCBmaXJzdF9idXNubyB2YWx1ZQoKICAgIFdlIHNob3VsZCB1c2UgcGNpX2xhc3RfYnVzbm8oKSBpbiBwY2lfaW5pdF9idXMoKSwgb3RoZXJ3aXNlIHdlJ2xsCiAgICBlcnJvbmVvdXNseSByZS11c2UgUENJMCdzIGZpcnN0X2J1c25vIGZvciBQQ0kxIGhvc2VzLgoKICAgIE5PVEU6IFRoZSBwYXRjaCBpcyB1bnRlc3RlZC4gQWxsIE1QQzgzeHggRlNMIGJvYXJkcyBJIGhhdmUgaGF2ZQogICAgUENJMSBpbiBtaW5pUENJIGZvcm0sIGZvciB3aGljaCBJIGRvbid0IGhhdmUgYW55IGNhcmRzIGhhbmR5LgoKICAgIEJ1dCBsb29raW5nIGluIGNwdS9tcGM4NXh4L3BjaS5jOgogICAgLi4uCiAgICAjaWZkZWYgQ09ORklHX01QQzg1WFhfUENJMgoJICAgIGhvc2UgPSAmcGNpX2hvc2VbMV07CgoJICAgIGhvc2UtPmZpcnN0X2J1c25vID0gcGNpX2hvc2VbMF0ubGFzdF9idXNubyArIDE7CgogICAgQW5kIGNvbnNpZGVyaW5nIHRoYXQgd2UgZG8gdGhlIHNhbWUgZm9yIE1QQzgzeHggUENJLUUgc3VwcG9ydCwKICAgIEkgdGhpbmsgdGhpcyBwYXRjaCBpcyBjb3JyZWN0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhNTg3OGQ0MjcxMjhjMWE5MjI2MDQ1ZWJlMDVmYmFkYWEwMmViOWRkCkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CVRodSBGZWIgMTkgMTg6MjA6NDYgMjAwOSArMDMwMAoKICAgIG1wYzgzeHg6IFBDSTogRml4IGJ1cy1yYW5nZSBmZHQgZml4dXBzIGZvciBQQ0kxIGNvbnRyb2xsZXJzCgogICAgVGhpcyBwYXRjaCBmaXhlcyBjb3B5LXBhc3RlIGlzc3VlOiBwY2lfaG9zZVswXSdzIGZpcnN0IGFuZCBsYXN0CiAgICBidXNub3Mgd2VyZSB1c2VkIHRvIGZpeHVwIHBjaTEncyBub2Rlcy4KCiAgICBXZSBkb24ndCBzZWUgdGhpcyBidWcgdHJpZ2dlcmluZyBvbmx5IGJlY2F1c2UgTGludXggcmVlbnVtZXJhdGUKICAgIGJ1c2VzIGFueXdheS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjI0YTk5ZjY2NjZhYzI3OGVjOWY5YzEzMzQ1MThhZjgyODgzM2QxOQpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglUaHUgRmViIDE5IDE4OjIwOjQ0IDIwMDkgKzAzMDAKCiAgICBtcGM4M3h4OiBQQ0llOiBGaXggQ09ORklHX1BDSV9TQ0FOX1NIT1cgcmVwb3J0aW5nIGJvZ3VzIHZhbHVlcwoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYW4gaXNzdWUgaW4gY29uZmlnIHNwYWNlIHJlYWQgYWNjZXNzb3JzOiB3ZSBzaG91bGQKICAgIGZpbGwtaW4gdGhlIHZhbHVlIGV2ZW4gaWYgd2UgZmFpbCAoZS5nLiBza2lwcGluZyBkZXZpY2VzKSwgb3RoZXJ3aXNlCiAgICBDT05GSUdfUENJX1NDQU5fU0hPVyByZXBvcnRzIGJvZ3VzIHZhbHVlcyBkdXJpbmcgYm9vdCB1cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZTJkNzJiYTU0M2M3YjY5MjRiNWI1ZDM5M2RjZDgwYjJiOWMzYTAyMgpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglUaHUgRmViIDE5IDE4OjIwOjQyIDIwMDkgKzAzMDAKCiAgICBtcGM4M3h4OiBQQ0llOiBEb24ndCBzdGFydCBidXMgZW51bWVyYXRpb24gYXQgMAoKICAgIEN1cnJlbnRseSB3ZSBhc3NpZ24gZmlyc3RfYnVzbm8gPSAwIGZvciB0aGUgZmlyc3QgUENJZSBob3NlLCBidXQgdGhpcwogICAgc2NoZW1lIHdvbid0IHdvcmsgaWYgd2UgaGF2ZSBvcmRpbmFyeSBQQ0kgaG9zZSBhbHJlYWR5IHJlZ2lzdGVyZWQgKGl0cwogICAgZmlyc3RfYnVzbm8gdmFsdWUgaXMgMCB0b28pLgoKICAgIFRoZSBvbGQgY29kZSB3b3JrZWQgZmluZSBvbmx5IGJlY2F1c2Ugd2UgaGF2ZSBQQ0kgZGlzYWJsZWQgb24KICAgIE1QQzgzN1hFTURTIGJvYXJkcyBpbiBzdGFuZC1hbG9uZSBtb2RlIChzZWUgY29tbWl0IDAwZjdiYmFlOTJlM2IxM2YyYjMKICAgICJtcGM4M3h4OiBmaXggUENJIHNjYW4gaGFuZyBvbiB0aGUgc3RhbmRhbG9uZSBNUEM4Mzd4RS1NRFMgYm9hcmRzIikuCiAgICBCdXQgb24gTVBDODM3WEVSREIgYm9hcmRzIHdlIGhhdmUgUENJIGFuZCBQQ0llLCBzbyB0aGUgYnVnIGFjdHVhbGx5CiAgICB0cmlnZ2Vycy4KCiAgICBTbywgdG8gZml4IHRoZSBpc3N1ZSwgd2Ugc2hvdWxkIHVzZSBwY2lfbGFzdF9idXNubygpICsgMSBmb3IgdGhlCiAgICBmaXJzdF9idXNubyAoaS5lLiBsYXN0IGF2YWlsYWJsZSBidXNubykuCgogICAgUmVwb3J0ZWQtYnk6IEh1YW5nIENoYW5nbWluZyA8Q2hhbmctTWluZy5IdWFuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGNjMmE4Yzc3NTFkZGJhZTMxMTY2NjAwNjRmNDQ2ODg4NTM4YjkzZTkKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJVGh1IEZlYiAxOSAxODoyMDo0MSAyMDA5ICswMzAwCgogICAgUENJOiBBZGQgcGNpX2xhc3RfYnVzbm8oKSBoZWxwZXIKCiAgICBUaGlzIGlzIGp1c3QgYSBoYW5keSByb3V0aW5lIHRoYXQgcmVwb3J0cyBsYXN0IFBDSSBidXNubzogd2Ugd2FsawogICAgZG93biBhbGwgdGhlIGhvc2VzIGFuZCByZXR1cm4gbGFzdCBob3NlJ3MgbGFzdF9idXNuby4KCiAgICBXaWxsIGJlIHVzZWQgYnkgUENJL1BDSWUgaW5pdGlhbGl6YXRpb24gY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYmQ3NjcyOWJjYmZkNjRiNWQwMTZhOWI5MzZmMDU4OTMxZmMwNmVhZgpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIEZlYiAyMyAxMzo1Njo1MSAyMDA5IC0wNjAwCgogICAgTVBDODZ4eDogc2V0IENPTkZJR19NQVhfTUVNX01BUFBFRCB0byAyRyBieSBkZWZhdWx0CgogICAgQ3VycmVudGx5LCB3ZSBnZXQgMjU2TUIgYXMgdGhlIGRlZmF1bHQsIGJ1dCBzaW5jZSBhbGwgdGhlIDg2eHgKICAgIGJvYXJkIGNvbmZpZ3MgZGVmaW5lIGEgMkcgQkFUIG1hcHBpbmcgZm9yIFJBTSwgcmFpc2UgZGVmYXVsdAogICAgdG8gMkcuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgQWNrZWQtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjMzMWUxOGI5ZGYwYWI5OGViZjNhYjQ0YzBlZmVhMTMxMTk0OWFhYQpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEZlYiAxMiAxMDo0MzozMiAyMDA5IC0wNjAwCgogICAgbXBjODY0MWhwY246IEluZGljYXRlIDM2LWJpdCBhZGRyIG1hcCBpbiBib290IG1lc3NhZ2VzCgogICAgSWYgMzYtYml0IGFkZHJlc3NpbmcgaXMgZW5hYmxlZCwgcHJpbnQgYSBtZXNzYWdlIG9uIHRoZSBjb25zb2xlCiAgICB3aGVuIHdlIGJvb3QuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDU4YTUxOGMzZDhhMmM3ZGUxMWQ0MTRlOGI5MDM0OTVkYWVlN2RjN2UKQXV0aG9yOiBNYXJrIEphY2tzb24gPG1wZmotbGlzdEBtaW1jLmNvLnVrPgpEYXRlOglGcmkgRmViIDEzIDE1OjQ4OjE4IDIwMDkgKzAwMDAKCiAgICBTZXR1cCBleHRyYSBNSU1DMjAwIGNoaXAgc2VsZWN0cwoKICAgIEFkZGVkIGNvZGUgdG8gc2V0dXAgdGhlIGV4dHJhIEZsYXNoIGFuZCBGUkFNIGNoaXAgc2VsZWN0cyBhcyB1c2VkIG9uIHRoZQogICAgTUlNQzIwMCBib2FyZC4KCiAgICBWMiBtb3ZlcyB0aGUgaW5pdCBjb2RlIGZyb20gdGhlIGNvbW1vbiAiY3B1LmMiIGZpbGUgaW50byB0aGUgYm9hcmQgc3BlY2lmaWMKICAgIHNldHVwIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyayBKYWNrc29uIDxtcGZqQG1pbWMuY28udWs+CiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgODA1MzQ4ODZhNzJhMDA4OGVlZjllNzgxYThlMGI3ZDA0ZWE0MWYzNgpBdXRob3I6IE1hcmsgSmFja3NvbiA8bXBmakBtaW1jLmNvLnVrPgpEYXRlOglNb24gTm92IDI0IDEyOjEwOjU2IDIwMDggKzAwMDAKCiAgICBNSU1DMjAwOiB0aWR5IEdDTEsgaW5pdCBjb2RlCgogICAgQ2hhbmdlIHRoZSBNSU1DMjAwIHN0YXJ0dXAgY29kZSB0byB1c2UgdGhlIGJ1aWx0LWluIChyYXRoZXIgdGhhbgogICAgaGFyZC1jb2RlZCkgZnVudGlvbnMgZm9yIHNldHRpbmcgdXAgZ2NsayBvdXRwdXRzLgoKICAgIFdlJ2xsIGFsc28gbW92ZSB0aGUgY29kZSB0byB0aGUgbmV3LCBtb3JlLWFwcHJvcHJpYXRlCiAgICBib2FyZF9wb3N0Y2xrX2luaXQoKSByb3V0aW5lLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmsgSmFja3NvbiA8bXBmakBtaW1jLmNvLnVrPgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGI0MjNmOTQwNjNiZjA0ZTkyMDQ3ZmY4NWM3ZTUzNDQxZWIzYjcxMmIKQXV0aG9yOiBPbGF2IE1vcmtlbiA8b2xhdm1ya0BnbWFpbC5jb20+CkRhdGU6CUZyaSBKYW4gMjMgMTI6NTY6MzIgMjAwOSArMDEwMAoKICAgIEFWUjMyOiBNdXN0IGFkZCBOT1BzIGFmdGVyIGRpc2FibGluZyBpbnRlcnJ1cHRzIGZvciBBVDMyVUMzQTA1MTJFUwoKICAgIFRoZSBBVDMyVUMzQTA1MTJFUyBjaGlwIGhhcyBhIGJ1ZyB3aGVuIGRpc2FibGluZyBpbnRlcnJ1cHRzLiBBcyBhCiAgICB3b3JrYXJvdW5kLCB0d28gTk9QcyBjYW4gYmUgaW5zZXJ0ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogR3VubmFyIFJhbmdveSA8Z3VubmFyQHJhbmdveS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIERyaXZla2xlcHAgPHBhdWxkcml2ZWtsZXBwQGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE9sYXYgTW9ya2VuIDxvbGF2bXJrQGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBmNWY2NTJmYTkxYWE2OWRiODExN2QyMTFhZjFiNGZlMDlmMmVkZDNiCkF1dGhvcjogR3VubmFyIFJhbmdveSA8Z3VubmFyQHJhbmdveS5jb20+CkRhdGU6CUZyaSBKYW4gMjMgMTI6NTY6MjkgMjAwOSArMDEwMAoKICAgIEFWUjMyOiBNYWtlIEdQSU8gaW1wbG1lbnRhdGlvbiBjcHUgZGVwZW5kZW50CgogICAgVGhlcmUgYXJlIHNvbWUgZGlmZmVyZW5jZXMgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIEdQSU8gaW4gdGhlCiAgICBhdDMydWMgY2hpcCBjb21wYXJlZCB0byB0aGUgYXA3MDB4IHNlcmllcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdW5uYXIgUmFuZ295IDxndW5uYXJAcmFuZ295LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgRHJpdmVrbGVwcCA8cGF1bGRyaXZla2xlcHBAZ21haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogT2xhdiBNb3JrZW4gPG9sYXZtcmtAZ21haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGEzOGRlMDgzZDI5NzlkYjM2ODBmMGQwOTc4YzUwOWExNzJjOGZhMDAKQXV0aG9yOiBPbGF2IE1vcmtlbiA8b2xhdm1ya0BnbWFpbC5jb20+CkRhdGU6CUZyaSBKYW4gMjMgMTI6NTY6MjggMjAwOSArMDEwMAoKICAgIEFWUjMyOiBNb3ZlIGFkZHJzcGFjZS5oIHRvIGFyY2gtZGlyZWN0b3J5LCBhbmQgbW92ZSBzb21lIGZ1bmN0aW9ucyBmcm9tIGlvLmggdG8gYWRkcnNwYWNlLmgKCiAgICBUaGUgQVZSMzJBIGFyY2hpdGVjdHVyZSAod2hpY2ggQVQzMlVDM0Etc2VyaWVzIGlzIGJhc2VkIG9uKSBoYXMgYQogICAgZGlmZmVyZW50IG1lbW9yeSBsYXlvdXQgdGhhbiB0aGUgQVZSMzJCLWFyY2hpdGVjdHVyZS4gVGhpcyBwYXRjaCBtb3ZlcwogICAgYWRkcnNwYWNlLmggdG8gYW4gYXJjaC1kZXBlbmRlbnQgZGlyZWN0b3J5IGluIHByZXBhcmF0aW9uIGZvcgogICAgQVQzMlVDM0Etc3VwcG9ydC4gSXQgYWxzbyBtb3ZlcyBzb21lIGFkZHJlc3Mtc3BhY2UgbWFuaXB1bGF0aW9uCiAgICBmdW5jdGlvbnMgZnJvbSBpby5oIHRvIGFkZHJzcGFjZS5oLgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1bm5hciBSYW5nb3kgPGd1bm5hckByYW5nb3kuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUGF1bCBEcml2ZWtsZXBwIDxwYXVsZHJpdmVrbGVwcEBnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBPbGF2IE1vcmtlbiA8b2xhdm1ya0BnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgZDhmMmFhMzI5ODYxMGI0NDEyN2RiYzQ3OTZkODAzOGFhNTg0N2UwYgpBdXRob3I6IE9sYXYgTW9ya2VuIDxvbGF2bXJrQGdtYWlsLmNvbT4KRGF0ZToJRnJpIEphbiAyMyAxMjo1NjoyNyAyMDA5ICswMTAwCgogICAgQVZSMzI6IE1ha2UgY2FjaGVmbHVzaCBjcHUtZGVwZW5kZW50CgogICAgVGhlIEFUMzJVQzNBIHNlcmllcyBvZiBwcm9jZXNzb3JzIGRvZXNuJ3QgY29udGFpbiBhbnkgY2FjaGUsIGFuZCBpc3N1aW5nCiAgICBjYWNoZSBjb250cm9sIGluc3RydWN0aW9ucyBvbiB0aG9zZSB3aWxsIGNhdXNlIGFuIGV4Y2VwdGlvbi4gVGhpcyBjb21taXQKICAgIG1ha2VzIGNhY2hlZmx1c2guaCBhcmNoLWRlcGVuZGVudCBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIEFUMzJVQzNBLXN1cHBvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogR3VubmFyIFJhbmdveSA8Z3VubmFyQHJhbmdveS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIERyaXZla2xlcHAgPHBhdWxkcml2ZWtsZXBwQGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE9sYXYgTW9ya2VuIDxvbGF2bXJrQGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCAyZjcwYzQ5ZTViOTgxMzYzNWFkNzM2NjZhYTMwZjMwNGM3ZmRlZGE5CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVR1ZSBGZWIgMTAgMDk6Mzg6NTIgMjAwOSArMDEwMAoKICAgIG5ldGxvb3A6IHNwZWVkIHVwIE5ldExvb3AKCiAgICBOZXRMb29wIHBvbGxzIGV2ZXJ5IGN5Y2xlIHdpdGggZ2V0ZW52IHNvbWUgZW52aXJvbm1lbnQgdmFyaWFibGVzLgogICAgVGhpcyBpcyBob3JyaWJseSBzbG93LCBlc3BlY2lhbGx5IHdoZW4gdGhlIGVudmlyb25tZW50IGlzIGJpZy4KCiAgICBUaGlzIHBhdGNoIHJlYWRzIG9ubHkgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiBOZXRMb29wLAogICAgd2hlbiB0aGV5IHdlcmUgY2hhbmdlZC4KCiAgICBBbHNvIG1vdmVkIHRoZSBpbml0IHBhcnQgb2YgdGhlIE5ldExvb3AgZnVuY3Rpb24gaW4gYSBzZXBlcmF0ZQogICAgZnVuY3Rpb24uCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGFkMmQxNjM5M2U5ZjY4NGU0YTkyNTVmNDJlOGJmZGQ4MTliNjdhODcKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBEZWMgMjIgMDI6NTY6MDcgMjAwOCAtMDUwMAoKICAgIHNtYzkxMXhfZWVwcm9tOiBuZXcgZXhhbXBsZSBhcHAgZm9yIG1hbmFnaW5nIG5ld2VyIFNNQyBwYXJ0cwoKICAgIEEgZm9yd2FyZCBwb3J0IG9mIHRoZSBsYXN0IHZlcnNpb24gdG8gd29yayB3aXRoIHRoZSBuZXdlciBzbWM5MTF4IGRyaXZlci4KICAgIEkgb25seSBoYXZlIGEgYm9hcmQgd2l0aCBhIExBTjkyMTggcGFydCBvbiBpdCwgc28gdGhhdCBpcyB0aGUgb25seSBvbmUKICAgIEkndmUgdGVzdGVkLiAgQnV0IHRoZXJlIGlzbid0IGFueXRoaW5nIGluIHRoaXMgdGhhdCB3b3VsZCBtYWtlIGl0IHRlcnJpYmx5CiAgICBjaGlwIHNwZWNpZmljIGFmYWlrLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIENDOiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+CiAgICBDQzogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgogICAgQ0M6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNzM2MzIzYTQ5MGI2NjRlYzBlZGMzZGRiMmMxYzRhNjgyNGRiNDVjNgpBdXRob3I6IFBpZXRlciBIZW5uaW5nIDxwaGVubmluZ0B2YXN0ZWNoLmNvLnphPgpEYXRlOglTdW4gRmViIDIyIDIzOjE3OjE1IDIwMDkgLTA4MDAKCiAgICBBZGRlZCBWaXRlc3NlIFZTQzgyMTEgZGVmaW5pdGlvbnMgdG8gVFNFQyBkcml2ZXIKCiAgICBBZGRlZCB0aGUgc3RydWN0IGNvbnRhaW5pbmcgUEhZIHNldHRpbmdzIGZvciB0aGUgVml0ZXNzZSBWU0M4MjExIHBoeSB0bwogICAgdGhlIHBoeV9pbmZvIGxpc3QgaW4gdHNlYy5jCgogICAgU2lnbmVkLW9mZi1ieTogUGlldGVyIEhlbm5pbmcgPHBoZW5uaW5nQHZhc3RlY2guY28uemE+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDMyNjg4ZTU3MmZmOTY3MTViNDE0MjBlOWE3ZjI4MGRiNmMzOTliNjUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gRmViIDIzIDAwOjIyOjIxIDIwMDkgKzAxMDAKCiAgICBVcGRhdGUgQ0hBTkdFTE9HOyAgUHJlcGFyZSAyMDA5LjAzLXJjMQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgODBiODI3YzJiNzgzMjljNjUwM2IyNzFlNDNkOWViNjkzZDY0NDcxMApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBGZWIgMjIgMjM6NDU6NDAgMjAwOSArMDEwMAoKICAgIEFSTTogc3luY2hyb25pemUgbWFjaC10eXBlcy5oIHdpdGggbGludXggdjIuNi4yOS1yYzUtMzE1LWc2ODNmZGM1CgogICAgVGhlIGZpbGUgd2FzIGdlbmVyYXRlZCBmcm9tIGJ1aWxkaW5nIHZlcnNhdGlsZV9kZWZjb25maWcuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAxNDIwOWFjMTNmZjYzMWUzNmM5YTlkZDQyNmM1OWMyZTJmNWRhYjAwCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJU3VuIEZlYiAyMiAxNDoyNDoxMSAyMDA5ICswOTAwCgogICAgTUlQUzogRml4IEdDQy00LjIgJ2Rpc2NhcmRzIHF1YWxpZmllcnMgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlJyB3YXJuaW5ncwoKICAgIENvbXBpbGluZyBkYmF1MXgwMCBhbmQgZ3RoMiBib2FyZHMgd2l0aCBHQ0MtNC4yLCB5b3Ugd291bGQgc2VlIG5ldyB3YXJuaW5ncwogICAgbGlrZSB0aGlzOgoKICAgIHNrdXJpYmF5QHVidW50dTp1LWJvb3QuZ2l0JCAuL01BS0VBTEwgZGJhdTEwMDAKICAgIENvbmZpZ3VyaW5nIGZvciBkYmF1MXgwMCBib2FyZC4uLgogICAgYXUxeDAwX2V0aC5jOiBJbiBmdW5jdGlvbiAnYXUxeDAwX3NlbmQnOgogICAgYXUxeDAwX2V0aC5jOjE1ODogd2FybmluZzogcGFzc2luZyBhcmd1bWVudCAxIG9mICd2aXJ0X3RvX3BoeXMnIGRpc2NhcmRzIHF1YWxpZmllcnMgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlCiAgICBhdTF4MDBfZXRoLmM6IEluIGZ1bmN0aW9uICdhdTF4MDBfcmVjdic6CiAgICBhdTF4MDBfZXRoLmM6MjExOiB3YXJuaW5nOiBwYXNzaW5nIGFyZ3VtZW50IDEgb2YgJ3ZpcnRfdG9fcGh5cycgZGlzY2FyZHMgcXVhbGlmaWVycyBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUKICAgIGF1MXgwMF9ldGguYzogSW4gZnVuY3Rpb24gJ2F1MXgwMF9pbml0JzoKICAgIGF1MXgwMF9ldGguYzoyNTI6IHdhcm5pbmc6IHBhc3NpbmcgYXJndW1lbnQgMSBvZiAndmlydF90b19waHlzJyBkaXNjYXJkcyBxdWFsaWZpZXJzIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZQogICAgYXUxeDAwX2V0aC5jOiBJbiBmdW5jdGlvbiAnYXUxeDAwX3JlY3YnOgogICAgYXUxeDAwX2V0aC5jOjIxMTogd2FybmluZzogcGFzc2luZyBhcmd1bWVudCAxIG9mICd2aXJ0X3RvX3BoeXMnIGRpc2NhcmRzIHF1YWxpZmllcnMgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlCiAgICBhdTF4MDBfZXRoLmM6IEluIGZ1bmN0aW9uICdhdTF4MDBfaW5pdCc6CiAgICBhdTF4MDBfZXRoLmM6MjUyOiB3YXJuaW5nOiBwYXNzaW5nIGFyZ3VtZW50IDEgb2YgJ3ZpcnRfdG9fcGh5cycgZGlzY2FyZHMgcXVhbGlmaWVycyBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUKICAgIGF1MXgwMF9ldGguYzogSW4gZnVuY3Rpb24gJ2F1MXgwMF9zZW5kJzoKICAgIGF1MXgwMF9ldGguYzoxNTg6IHdhcm5pbmc6IHBhc3NpbmcgYXJndW1lbnQgMSBvZiAndmlydF90b19waHlzJyBkaXNjYXJkcyBxdWFsaWZpZXJzIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZQoKICAgIFdlJ3JlIHBhc3NpbmcgYSB2b2xhdGlsZSBwb2ludGVyIHRvIGEgZnVuY3Rpb24gd2hpY2ggaXMgZXhwZWN0aW5nIGEgbm9uLQogICAgdm9sYXRpbGUgcG9pbnRlci4gIFRoYXQncyBwb3RlbnRpYWxseSBkYW5nZXJvdXMsIHNvIGdjYyB3YXJucyBhYm91dCBpdC4KICAgIENvbmZpcm1lZCB3aXRoIEVMREsgNC4yIChHQ0MgNC4yLjIpIGFuZCBTb3VyY2V5IEcrKyA0LjIgKEdDQyA0LjIuMykuCgogICAgVG8gZml4IHRoaXMsIHdlIGFkZCBhIHZvbGF0aWxlIGF0dHJpYnV0ZSB0byB0aGUgYXJndW1lbnQgaW4gcXVlc3Rpb24uCiAgICBUaGUgdmlydF90b19waHlzIGZ1bmN0aW9uIGluIExpbnV4IGtlcm5lbCBhbHNvIGRvZXMgdGhlIHNhbWUgdGhpbmcuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCBhYmE0NWM4NWIyMmY4YzU3ZmMyZmVkYmE4ZTk0OGUwNmMyZTJmNWIzCkF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KRGF0ZToJRnJpIEZlYiAyMCAxNzo1MToyOCAyMDA5ICswMTAwCgogICAgT01BUDM6IENsZWFuIHVwIE1NQyBjb2RlCgogICAgQ2xlYW4gdXAgT01BUDMgTU1DIGNvZGU6CgogICAgKiBDb252ZXJ0IHJlZ2lzdGVyIGFjY2VzcyB0byBzdHJ1Y3QgJiByZWFkeC93cml0ZXggc3R5bGUKICAgICogUmVwbGFjZSBoYXJkY29kZSB2YWx1ZXMgYnkgbWFjcm9zCiAgICAqIFJlbW92ZSBtYWNybyBkZWZpbmVkIHR3aWNlCgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KCmNvbW1pdCBjZmNkZjRhOWIzNjFkMDE1YzBkZWJhYzczZmJmN2M1MTFkZjRhOTM0CkF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KRGF0ZToJVGh1IEZlYiAxMiAxODo1NTo0MyAyMDA5ICswMTAwCgogICAgT01BUDM6IFBhbmRvcmE6IFVwZGF0ZSBwaW4gbXV4CgogICAgQ2xvY2sgcGluIG11c3QgaGF2ZSBpbnB1dCBlbmFibGVkIGZvciBNTUMzIHRvIHdvcmsuCiAgICBBbHNvIGVuYWJsZSBwdWxsLXVwcyBmb3IgY21kL2RhdGEgbGluZXMgdG8gYmUgY29uc2lzdGVudAogICAgd2l0aCByZW1haW5pbmcgTU1DIGhvc3QgcGluIHNldHVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYXp2eWRhcyBJZ25vdGFzIDxub3Rhc2FzQGdtYWlsLmNvbT4KCmNvbW1pdCA2NTMwYThiZjhhMDI3NGI5NDE5MTQxZTRjMmM1YTIzNWNjZTUzODBmCkF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KRGF0ZToJVGh1IEZlYiAxMiAxODo1NTo0MiAyMDA5ICswMTAwCgogICAgT01BUDM6IEFkZCBPTUFQMyBhdXRvIGRldGVjdGlvbgoKICAgIFRoaXMgcGF0Y2ggYWRkcyBPTUFQMyBjcHUgdHlwZSBhdXRvIGRldGVjdGlvbiBiYXNlZCBvbiBPTUFQMyByZWdpc3RlcgogICAgYW5kIHJlbW92ZXMgaGFyZGNvZGVkIHZhbHVlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGV2ZSBTYWtvbWFuIDxzYWtvbWFuQGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Cgpjb21taXQgZjk1NmZkMDMzOGY0OTkwNzkzYTEwZjc2NzkyOWJhNDk2MzY2NTI2MQpBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVRodSBGZWIgMTIgMTg6NTU6NDEgMjAwOSArMDEwMAoKICAgIE9NQVAzOiBCZWFnbGU6IEFkZCBib2FyZCByZXZpc2lvbiBkZXRlY3Rpb24KCiAgICBXaXRoIEJlYWdsZUJvYXJkIHJldmlzaW9uIEMgc29tZSBIVyBjaGFuZ2VzIGFyZSBpbnRyb2R1Y2VkIChlLmcuIFBpbk1VWCkKICAgIHdoaWNoIG1pZ2h0IG5lZWQgZGlmZmVyZW50IHNvZnR3YXJlIGhhbmRsaW5nLiBGb3IgdGhpcywgR1BJTyBwaW4gMTcxIChHUElPCiAgICBtb2R1bGUgNiwgb2Zmc2V0IDExKSBjYW4gYmUgdXNlZCB0byBjaGVjayBmb3IgYm9hcmQgcmV2aXNpb24uIElmIHRoaXMgcGluCiAgICBpcyBsb3csIHdlIGhhdmUgYSByZXYgQyBib2FyZC4gRWxzZSBpdCBtdXN0IGJlIGEgcmV2aXNpb24gQXggb3IgQnggYm9hcmQuCgogICAgVG8gaGFuZGxlIGJvYXJkIGRpZmZlcmVuY2VzIHlvdSBjYW4gY2FsbCBmdW5jdGlvbiBiZWFnbGVfZ2V0X3JldmlzaW9uKCkuCiAgICBFLmcuOgoKICAgIGlmIChiZWFnbGVfZ2V0X3JldmlzaW9uKCkpIHsKCiAgICAvKiBkbyBzcGVjaWFsIHJldmlzaW9uIEMgc3R1ZmYgaGVyZSAqLwoKICAgIH0KCiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgoKY29tbWl0IDI4OGYzY2Q5MTI5MThiOTc5MTlkMTNiNmY3ZmIxM2ZiZGRmNzRkNjgKQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgpEYXRlOglUaHUgRmViIDEyIDE4OjU1OjQwIDIwMDkgKzAxMDAKCiAgICBPTUFQMzogT3Zlcm86IENsZWFuIHVwIHBpbiBtdXggYW5kIEdQSU8gY29uZmlndXJhdGlvbgoKICAgICogTWFrZSBPdmVybyBHUElPMTE0IGFuIGlucHV0IGZvciB0b3VjaHNjcmVlbiBQRU5ET1dOCiAgICAqIE1ha2UgT3Zlcm8gR1BJTzE0NC0xNDcgcmVhZGFibGUKICAgICogTWFrZSBPdmVybyBFSENJIHBpbm11eCBtYXRjaCBiZWFnbGUgcmV2IGMgc2V0dXAKICAgICogQWRqdXN0IHBpbm11eCBmb3IgU01TQzkxMVggbmV0d29yayBjaGlwIHN1cHBvcnQKICAgICogUmVtb3ZlIHVubmVjZXNzYXJ5IEdQSU8gc2V0dXAKICAgICogRml4IG1lcmdlIGVycm9yIGluIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogU3RldmUgU2Frb21hbiA8c2Frb21hbkBnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgoKY29tbWl0IDI1NzkwMTliODI0OGU1ZjE2NmU2MGUzNzA2NTc2NmVmYzhhNDlkYmMKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gRmViIDIyIDE3OjA4OjQxIDIwMDkgKzAxMDAKCiAgICBubWRrODgxNTogZml4IG9uZW5hbmQgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMDE3NmMwM2EyNDY5Njc2ZGY1YmYxOWNmOTNhMWE2ZjU4MmY2YTEyMApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBGZWIgMjIgMTc6NTY6NTAgMjAwOSArMDEwMAoKICAgIG5vbWFkaWsvbmFuZDogZml4ICdlY2M1MTInIGRpc2NhcmRzIHF1YWxpZmllcnMgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA5NzUxYTQ1NmY3MDJiYTJmY2RmZDFiZGJjMDEzODkyN2VmMDA3ODU4CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIEZlYiAyMiAxNzo0OTo0MyAyMDA5ICswMTAwCgogICAgZGF2aW5jaTogZml4IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdkYXZpbmNpX2VycmF0YV93b3JrYXJvdW5kcycKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDRmNTcyODk4N2Y0ZjlmNzg0NTY4ODQ4MmFhMmI3ZjIxMjc3NjgxNjUKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gRmViIDIyIDE1OjQ5OjI4IDIwMDkgKzAxMDAKCiAgICBhcm06IGFkZCB1YXJ0IGRjYyBzdXBwb3J0CgogICAgU2VyaWFsIGRyaXZlciB2aWEgdGhlIEVtYmVkZGVkSUNFIG1hY3JvY2VsbCdzIERDQyBjaGFubmVsIHVzaW5nCiAgICBjby1wcm9jZXNzb3IgMTQuCgogICAgSXQgZG9lcyBpbmNsdWRlIGEgdGltZW91dCB0byBlbnN1cmUgdGhhdCB0aGUgc3lzdGVtIGRvZXMgbm90CiAgICB0b3RhbGx5IGZyZWV6ZSB3aGVuIHRoZXJlIGlzIG5vdGhpbmcgY29ubmVjdGVkIHRvIHJlYWQuCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAwY2QxOGZhOTgyZjlhOGMxYTkwY2U5NzEzNzlhN2Q2NDA4OTc2ZDQ4CkF1dGhvcjogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+CkRhdGU6CUZyaSBOb3YgMjEgMTQ6MzU6NTYgMjAwOCAtMDUwMAoKICAgIEFSTSBEYVZpbmNpOiBBZGQgY29tbW9uIHBlcmlwaGVyYWxzIGFuZCBtb2R1bGVzIGVuYWJsZSBmdW5jdGlvbnMuCgogICAgVGFrZW4gYWxsIHRoZSBkdXBsaWNhdGVkIGNvZGUgZm9yIGVuYWJsaW5nIGNvbW1vbiBtb2R1bGVzIGFuZCBhcHBseQogICAgc29mdHdhcmUgd29ya2Fyb3VuZHMgZnJvbSB0aGUgYm9hcmQgc3BlY2lmaWMgY29kZSBpbnRvIGNvbW1vbgogICAgZnVuY3Rpb25zLiBBbHNvIGFkZGVkIGNvbW1lbnRzIGV4cGxhaW5pbmcgdGhlIHdvcmthcm91bmRzCiAgICAoZnJvbSBUSSBlcnJhdGEgZG9jdW1lbnRzKSBhbmQgcmVwbGFjZWQgc29tZSBudW1lcmljYWwgYml0IG51bWJlcnMKICAgIHdpdGggbW9yZSBtZWFuaW5nZnVsIGRlZmluZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Cgpjb21taXQgZDNiZTFiY2FlN2E4MjA3ZTBhNzlmZmQwMzVkMGU5MGY4MDM3ODI5NQpBdXRob3I6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+CkRhdGU6CU1vbiBGZWIgOSAxNTo1MzozMyAyMDA5ICswMTAwCgogICAgRW5hYmxlIEV0aGVybmV0IGZvciBOb21hZGlrIDg4MTUgRXZhbHVhdGlvbiBLaXQKCiAgICBUaGlzIHRyaXZpYWxseSBlbmFibGVzIEV0aGVybmV0IHN1cHBvcnQgaW4gdGhlIGRlYnVnIGJvYXJkCiAgICBieSBzZXR0aW5nIHVwIHRoZSBwcm9wZXIgY2hpcCBzZWxlY3QuCgogICAgU2lnbmVkLW9mZi1ieTogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUB1bmlwdi5pdD4KICAgIEFja2VkLWJ5OiBBbmRyZWEgR2FsbG8gPGFuZHJlYS5nYWxsb0BzdG53aXJlbGVzcy5jb20+Cgpjb21taXQgMGQ4YzZlYWIyNDgxMDQ2ZTk0NDYyNjRiZmU5NDAyYmI5OGRkZjQzMwpBdXRob3I6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+CkRhdGU6CU1vbiBGZWIgOSAxNTo1MzozMSAyMDA5ICswMTAwCgogICAgTmFuZCBkcml2ZXIgZm9yIE5vbWFkaWsgU29DCgogICAgVGhpcyBkcml2ZXIgaW1wbGVtZW50cyB0aGUgRUNDIGFsZ29yaXRobSBkZXNjcmliZWQgaW4KICAgIHRoZSBDUFUgZGF0YSBzaGVldCBhbmQgdXNlcyB0aGUgT09CIGxheW91dCBjaG9zZW4gaW4KICAgIGFscmVhZHktcmVsZWFzZWQgZGV2ZWxvcG1lbnQgc3lzdGVtcyAoc2hpcHBlZCB3aXRoIGEgY3VzdG9tLW1hZGUKICAgIHUtYm9vdCAxLjMuMSkuCgogICAgU2lnbmVkLW9mZi1ieTogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUB1bmlwdi5pdD4KICAgIEFja2VkLWJ5OiBBbmRyZWEgR2FsbG8gPGFuZHJlYS5nYWxsb0BzdG53aXJlbGVzcy5jb20+Cgpjb21taXQgZWYzMzljYzJiNjhlNGNiZWYzZjkzNzZhNDUzMTVlMWI5NzRiYmQ4ZApBdXRob3I6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+CkRhdGU6CU1vbiBGZWIgOSAxNTo1MzozMSAyMDA5ICswMTAwCgogICAgQWRkZWQgbm9tYWRpay5oIGhlYWRlcgoKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+CiAgICBBY2tlZC1ieTogQW5kcmVhIEdhbGxvIDxhbmRyZWEuZ2FsbG9Ac3Rud2lyZWxlc3MuY29tPgoKY29tbWl0IDYwZWNlNmQ4MDQzZDFkZDgwZjVkZDMyYzU0MTIxMzcxNmQ2MjRiMTkKQXV0aG9yOiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVdlZCBPY3QgMjkgMjA6MDU6MTggMjAwOCArMDkwMAoKICAgIHI4YTY2NTk3LWhjZDogZml4IGNhbm5vdCB1c2UgZXh0ZXJuYWwgaHViCgogICAgRml4IHRoZSBwcm9ibGVtIHRoYXQgY2Fubm90IHVzZSBleHRlcm5hbCBodWIsIGJlY2F1c2UgdGhpcyBkcml2ZXIKICAgIGRpZCBub3QgY29udHJvbCBjb3JyZWN0bHkgYSBERVZBRER4IHJlZ2lzdGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IGUxZmZhZWU3MjgxOTBlNzZhNDU5NmEzNTc5ZDk0ZTczMDE0MzU4NWYKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBGZWIgMTkgMDE6MjA6MjcgMjAwOSAtMDUwMAoKICAgIEJsYWNrZmluOiBkaXNhYmxlIHN5c2NvbnRyb2wgY29kZSBmb3Igbm93CgogICAgTG9va3MgbGlrZSB0aGUgaW5pdGNvZGUgdXBkYXRlcyBmZWxsIG91dCBvZiBvcmRlciBkdXJpbmcgbXkgbWVyZ2VzLiAgVGhlCiAgICBwYXRjaCB0aGF0IHJlYWxseSBmaXhlcyB1cCB0aGlzIGNvZGUgaXMgcGFydCBvZiBwb3dlci1vbiBvdmVyaGF1bCBhbmQgc28KICAgIGlzIHRvbyBsYXJnZSBmb3IgbWVyZ2luZyBhdCB0aGlzIHBvaW50LiAgSW5zdGVhZCwgd2UgY2FuIGRpc2FibGUgdGhlIGNvZGUKICAgIGFzIG5vIGN1cnJlbnRseSBpbi10cmVlIGJvYXJkIGRlcGVuZHMgb24gaXQuICBUaGUgbmV4dCBtZXJnZSB3aW5kb3cgd2lsbAogICAgZml4IHRoaW5ncyB1cCBwcm9wZXJseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMWIyMjhkNjhmNTQ4MzJlZGQ4NjdlZjk4NTIwZjc2MGY2ODE5MmFiNwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEZlYiAxOSAwMToxOTo0OSAyMDA5IC0wNTAwCgogICAgQmxhY2tmaW46IGJmNTM3LXN0YW1wOiBmaXggSTJDIGJvYXJkIGRlZmluZXMKCiAgICBUaGUgcHJldmlvdXMgbWVyZ2UgZm9yIGNsZWFuaW5nIHVwIHRoZSBJMkMgZHJpdmVyIGluY29ycmVjdGx5IHJldmVydGVkIHRoZQogICAgQ0ZHX3h4eCByZW5hbWUgZm9yIHNvbWUgb2YgdGhlIEkyQyBkZWZpbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDA5ZmVlOGU4Njc3YTYyNjVlODkxNDRjY2MxNjNiZjAwZTMyMTc2OWUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gRmViIDIyIDAxOjE5OjUyIDIwMDkgKzAxMDAKCiAgICBDb2RpbmcgU3R5bGUgY2xlYW51cDsgdXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMWRjYjUwYWZiYjYzYTQzOTMyMGE5ODUzODBhMGFmMmRjYTA3OWQxZQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBGZWIgMjIgMDE6MTc6NDcgMjAwOSArMDEwMAoKICAgIE1ha2VmaWxlOiBmaXggY2xlYW51cAoKICAgIENvbW1pdCBlNDk0M2VjNSBtb3ZlZCB0aGUgQVJNIGJvYXJkcyB0byBhIHZlbmRvciBkaXJlY3RvcnkgYnV0IGZvcmdvdAogICAgdG8gYWRhcHQgdGhlIGNsZWFudXAgcnVsZXMgaW4gdGhlIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBlZGZmN2JjYzRkNTU0MGRmOGI0MTYyNzQ2NTJmZjAyZTk0YzM4YjllCkF1dGhvcjogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KRGF0ZToJRnJpIEZlYiAyMCAxMzowMTo1NiAyMDA5IC0wNTAwCgogICAgQ2xlYW51cCB0aGUgY29tbWVudCBmb3IgbTY4ayBsaW51eCBib290IGFyZ3VtZW50IHBhc3NpbmcuCgogICAgVGhpcyBwYXRjaCBjbGFyaWZpZXMgdGhlIHdheSBtNjhrIHBhc3NlcyBsaW51eCBib290IGFyZ3VtZW50LgogICAgVGhlIG9uZSBnb3RjaGEgaGVyZSBpcyB0aGF0IHRoZSBhc3NlbWJseSBpbnN0cnVjdGlvbiB0aGF0CiAgICB0aGUgY29tcGlsZXIgdXNlcyB0byBqdW1wIHRvIHRoZSBrZXJuZWwgaXMgJ2pzcicgd2hpY2ggcHVzaGVzIHRoZQogICAgcHJvZ3JhbSBjb3VudGVyIGZvciB0aGUgaW5zdHJ1Y3Rpb24gYWZ0ZXIgdGhlIGpzciBpbnRvIHRoZSBzdGFjayBwb2ludGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDRkNDE2NTBlZWM5NTk2NjgyODBhNjEyNDY3YmQ5NWM3YjgzOTg1MTMKQXV0aG9yOiBQZXRlciBHcmlmZmluIDxwZ3JpZmZpbkBtcGMtZGF0YS5jby51az4KRGF0ZToJVHVlIEZlYiAxMCAxNjo0NDo0NSAyMDA5ICswMDAwCgogICAgc2g6IEZpeCByc2s3MjAzIGluIHRyZWUgYnVpbGQKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBHcmlmZmluIDxwZ3JpZmZpbkBtcGMtZGF0YS5jby51az4KCmNvbW1pdCBmY2EwY2VjZmY3M2RiOTlkOTlhZDA5NGNjYTc5ODA0NzJiOGExMWI1CkF1dGhvcjogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgpEYXRlOglXZWQgRmViIDE4IDA5OjA1OjUyIDIwMDkgKzA5MDAKCiAgICBib290bTogUmVkdWNlIHRoZSB1bm5lY2Vzc2FyeSBtZW1tb3ZlCgogICAgQWx0aG91Z2ggbG9hZCBhZGRyZXNzIGFuZCBpbWFnZSBzdGFydCBhZGRyZXNzIGFyZSBzYW1lIGFkZHJlc3MsCiAgICBib290bSBjb21tYW5kIGFsd2F5cyBkb2VzIG1lbW1vdmUuCiAgICBUaGF0IGlzIHVubmVjZXNzYXJ5IG1lbW1vdmUgYW5kIGNhbiBiZSB0YWtlbiBmZXcgbWlsbGlzZWNvbmRzCiAgICAoYWJvdXQgNTAwIG1zZWMgdG8gMTAwMCBtc2VjKS4KICAgIElmIHNraXAgdGhpcyBtZW1tb3ZlLCB3ZSBjYW4gcmVkdWNlIHRoZSBib290IHRpbWUuCgogICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgoKY29tbWl0IDY3MGNiZGU4ZGE4MzY5MGZlZDEwNjRjMzM1OGY1NGFlMWQ2OTNlZDIKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgpEYXRlOglTdW4gRmViIDE1IDIyOjI5OjE1IDIwMDkgKzAxMDAKCiAgICBmcGdhOiBGaXggU3BhcnRhbiBJSUkgRlBHQSBib290aW5nCgogICAgVGhpcyBwYXRjaCBkb2VzIHNvbWUgbWlub3IgZml4aW5nIG9mIHRoZSBYaWxpbnggU3BhcnRhbiBJSUkKICAgIEZQR0EgYm9vdCBjb2RlOgoKICAgIC0gRml4ZWQgY2FsbCBvcmRlciBvZiBwb3N0IGNvbmZpZ3VyYXRpb24gY2FsbGJhY2sgYW5kCiAgICAgIHN1Y2Nlc3MgbWVzc2FnZSBwcmludGluZyAocmVzdWx0IG9mIGNvcHktcGFzdGU/KQogICAgLSByZW1vdmUgb2Jzb2xldGUgY29tbWVudAogICAgLSBtaW5vciBjb2Rpbmcgc3R5bGUgY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDM4MThiNjc3NjQxMDM4ZDI3YjI2NjNmYmQ2NzcxYWQzOGM5MzJmODYKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgpEYXRlOglTdW4gRmViIDE1IDIyOjI4OjM2IDIwMDkgKzAxMDAKCiAgICBmcGdhOiBGaXggU3BhcnRhbiBJSSBGUEdBIGJvb3RpbmcKCiAgICBUaGlzIHBhdGNoIGRvZXMgc29tZSBtaW5vciBmaXhpbmcgb2YgdGhlIFhpbGlueCBTcGFydGFuIElJCiAgICBGUEdBIGJvb3QgY29kZToKCiAgICAtIEZpeGVkIGNhbGwgb3JkZXIgb2YgcG9zdCBjb25maWd1cmF0aW9uIGNhbGxiYWNrIGFuZAogICAgICBzdWNjZXNzIG1lc3NhZ2UgcHJpbnRpbmcgKHJlc3VsdCBvZiBjb3B5LXBhc3RlPykKICAgIC0gcmVsb2NhdGUgcG9zdCBjb25maWd1cmF0aW9uIGNhbGxiYWNrIG9ubHkgd2hlbiBpdAogICAgICBpcyBpbXBsZW1lbnRlZAogICAgLSByZW1vdmUgb2Jzb2xldGUgY29tbWVudAogICAgLSBtaW5vciBjb2Rpbmcgc3R5bGUgY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IGI0NzQ2ZDhiZjlmNGVkNmRjOGE3NmM1ZDUyZGI2Njk2MDRhZmY4NGIKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBGZWIgMTEgMjA6MjY6NTIgMjAwOSAtMDUwMAoKICAgIGRyaXZlcnMvc2VyaWFsL25zMTY1NTA6IG1vdmUgaWZkZWYgaW50byBNYWtlZmlsZSBDT0JKUy0kKC4uLikKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNmJjYjRiODA2Y2VmOGE1ZGQwOGZhYzlhNGE2NzJiOTZkOWVlODA0ZQpBdXRob3I6IERlcmVrIE91IDxkb3VAc2ljb25peC5jb20+CkRhdGU6CVR1ZSBGZWIgMyAxNjowMDowNyAyMDA5IC0wNzAwCgogICAgbGNkX3B1dGMgYnVnIGZpeCBmb3IgdGFiLgoKICAgIFNpZ25lZC1vZmYtYnk6IERlcmVrIE91IDxkb3VAc2ljb25peC5jb20+Cgpjb21taXQgMzVjOWUxNGQ4MDk2ZTUxOWZlNzZjOTUzYTQzZDUyYTA5NjE3MzQ1YwpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KRGF0ZToJTW9uIEZlYiAyIDA5OjQ2OjIxIDIwMDkgKzA5MDAKCiAgICBNSVBTOiBjcHUvbWlwcy9NYWtlZmlsZTogQWRkIGEgbWlzc2luZyBTVEFSVCBsaW5lCgogICAgSW4gdGhlIGNvbW1pdCA3OWI1MWZmODIwNWYwMzU0ZDUzMDA1NzA2MTRjMWQyZGI0OTk2NzljIChbTUlQU10gY3B1L21pcHMvCiAgICBNYWtlZmlsZTogU3BsaXQgW0NTXU9CSlMgb250byBzZXBhcmF0ZSBsaW5lcyksIEkgd3JvbmdseSBkZWxldGVkIGEgU1RBUlQKICAgIGxpbmUuICBUaGlzIHBhdGNoIHB1dHMgaXQgYmFjay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+Cgpjb21taXQgOWE2M2I3ZjRmOGYzYzk5Y2YwMTdlMGQzZDRhMTUyZGZjZDkxM2I1YQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBGZWIgMjEgMjE6NTE6MjEgMjAwOSArMDEwMAoKICAgIEVuYWJsZSBleHQyIHN1cHBvcnQgZm9yIFRRTTh4eEwvTSBiYXNlZCBib2FyZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGUzYmE3ZjEzN2M3YzQ1NGFkNjI2Y2QwYmQyZTg0ZDczYzdhODY0NGYKQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CkRhdGU6CUZyaSBGZWIgMjAgMDM6NDc6NTAgMjAwOSArMDEwMAoKICAgIEFSTTpQWEEgVXNlIG5ldyBkZWZpbml0aW9ucyBpbiBtbWMuaAoKICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNjgyYmVlYWMzNGRjOWFiMThmYWI1OGIyNjk3M2QyZTI5ZDExMzcxNwpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEZlYiAyMCAwMzo0Nzo1MCAyMDA5ICswMTAwCgogICAgUmVkdWNlIHRoZSBzY29wZSBvZiBQWEEncyBtbWNfcmVhZC9tbWNfd3JpdGUvbW1jX2JyZWFkIGZ1bmN0aW9ucwoKICAgIFRoZXNlIG5hbWVzIGFyZSBiZWluZyB0YWtlbiBvdmVyIGJ5IHRoZSBuZXcgTU1DIGZyYW1ld29yay4JSG9wZWZ1bHkKICAgIHRoZSBQWEEgY2FuIGJlIGVhc2lseSBwb3J0ZWQsIGFuZCB0aGVzZSBmdW5jdGlvbnMgd2lsbCBnbyBhd2F5IGVudGlyZWx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYjAzZDkyZTU1ODQ5MzU4ODZmZjkxZDVhYTA3NTVkYzg4ODhiNzE4NwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBGZWIgMjAgMDM6NDc6NTAgMjAwOSArMDEwMAoKICAgIHB4YTogbW92ZSBtbWMgZHJpdmVycyB0byBkcml2ZXJzL21tYwoKICAgIGludHJvZHVjZSBuZXcgbWFjcm8gQ09ORklHX1BYQV9NTUMgdG8gYWN0aXZhdGUgaXQKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDk0OTBmNDY1NjQyYzgwYzA1NDg1NDY4OWEyZWYxYTc3ZDY1Y2YxZjMKQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CkRhdGU6CVRodSBGZWIgMTkgMTk6Mjc6MjIgMjAwOSAtMDYwMAoKICAgIEFSTTpQWEEgUmVtb3ZlIHJlZGVmaW5pdGlvbiBvZiBtbWNfY2lkIGFuZCBtbWNfY3NkLgoKICAgIFRoZXNlIHN0cnVjdHVyZXMgYXJlIGRlZmluZWQgaW4gdGhlIGNvbW1vbiBtbWMuaAoKICAgIFRoaXMgd2FzIGNvbXBpbGUgY2hlY2tlZCBvbiBjZXJmMjUwLgoKY29tbWl0IDk0YTMzMTI5MjBiNmY5YjVkYTI3MzA5NTQ5ZmI3MzY1MDcxOGMxMGEKQXV0aG9yOiBNaWNoYSBLYWxmb24gPHNtaWNoYWsudXZAZ21haWwuY29tPgpEYXRlOglXZWQgRmViIDExIDE5OjUwOjExIDIwMDkgKzAyMDAKCiAgICBweGE6IGZpeGluZyBnZXRfdGltZXIgdG8gcmV0dXJuIHRpbWUgaW4gbWlsaXNlY29uZHMuCgogICAgRml4aW5nIHRoZSBnZXRfdGltZXIgZnVuY3Rpb24gdG8gcmV0dXJuIHRpbWUgaW4gbWlsaXNlY29uZHMgaW5zdGVhZCBvZgogICAgdGlja3MuIEFsc28gZml4ZWQgUFhBIGJvYXJkcyB0byB1c2UgdGhlIGNvbnZlbnRpb25hbCB2YWx1ZSBvZiAxMDAwIGZvcgogICAgQ09ORklHX1NZU19IWi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYSBLYWxmb24gPHNtaWNoYWsudXZAZ21haWwuY29tPgoKY29tbWl0IGU1ZTg4YzM2MTRiNzliNTQ3MTk5MDVmNjZhZWZiNTFmOTQ5NGJjMWYKQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CkRhdGU6CVRodSBGZWIgMTkgMTY6NDU6NDMgMjAwOSAtMDYwMAoKICAgIEFSTTpPTUFQMyBDaGFuZ2UgbW1jX2luaXQgdG8gbW1jX2xlZ2FjeV9pbml0CgogICAgb21hcDNfbW1jLmMgd2FzIGNoYW5nZWQgdG8gZGVmaW5lIG1tY19sZWdhY3lfaW5pdC4KICAgIFJlbW92ZSB1bnVzZWQgZnVuY3Rpb25zLgoKICAgIENvbXBpbGUgdGVzdGVkIG9uIGFsbCBhcm0KICAgIFJ1bnRpbWUgdGVzdGVkIG9uIFpvb20xLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KCmNvbW1pdCA5ZTgwYmIyMTYyOTk4ODA2MzU3NGY4OGNhMGQyOGJhYWRmZjRkOTYzCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVRodSBGZWIgMTkgMTc6MjM6NTggMjAwOSArMDEwMAoKICAgIDgyeHgsIG1nY29nZTogdXBkYXRlcyBmb3IgMjAwOS4wMwoKICAgIC0gYWN0aXZhdGUgQ1M0IGZvciBhY2Nlc3NpbmcgdGhlIEZQR0EKICAgIC0gYWN0aXZhdGUgUnggYnVmIGxlbiA+IDEgb24gU01DCiAgICAtIHByYW0gYWN0aXZhdGVkCiAgICAtIE1URFBBUlRTX0RFRkFVTFQgZGVmaW5lZAogICAgLSB1cGRhdGUgdGhlIHNpemUgb2YgdGhlIGZsYXNoZXMgaW4gdGhlIERUUwogICAgICBiZWZvcmUgYm9vdGluZyBMaW51eAogICAgLSBNT05JVE9SX0xFTiB1cGRhdGVkIHRvIDM4NGsKICAgIC0gYWRkZWQgQ09ORklHX0hPU1ROQU1FCiAgICAtIGFkZGVkIENPTkZJR19FTlZfQlVGRkVSX1BSSU5UCiAgICAtIEVudmlyb25tZW50IHNpemUgcmVkdWNlZCB0byAxNmsKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBkZjkwOTU1NGUyNDAxZjMwNzkyNWUxYmQ0NWQ1NzZlNDE3NmQ5ZGU5CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVRodSBGZWIgMTkgMTc6MjQ6MDEgMjAwOSArMDEwMAoKICAgIDh4eCwgbWdzdXZkOiB1cGRhdGVzIGZvciAyMDA5LjAzCgogICAgLSBhY3RpdmF0ZSBSeCBidWYgbGVuID4gMSBvbiBTTUMKICAgIC0gcHJhbSBhY3RpdmF0ZWQKICAgIC0gTVREUEFSVFNfREVGQVVMVCBkZWZpbmVkCiAgICAtIHVwZGF0ZSB0aGUgc2l6ZSBvZiB0aGUgZmxhc2ggaW4gdGhlIERUUwogICAgICBiZWZvcmUgYm9vdGluZyBMaW51eAogICAgLSBNT05JVE9SX0xFTiB1cGRhdGVkIHRvIDM4NGsKICAgIC0gYWRkZWQgQ09ORklHX0hPU1ROQU1FCiAgICAtIGFkZGVkIENPTkZJR19FTlZfQlVGRkVSX1BSSU5UCiAgICAtIEVudmlyb25tZW50IHNpemUgcmVkdWNlZCB0byAxNmsKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAzNTExYjRlMjA4ZTEyYmU4NWI1MzI4NjZmMWM2NjBhYTJlMDIxNTU3CkF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KRGF0ZToJV2VkIEZlYiAxOCAxOTo1OTozOSAyMDA5ICswMTAwCgogICAgTU1DOiBEb24ndCB1c2UgbmV3IGZyYW1ld29yayBjb2RlIGlmIG5vdCBlbmFibGVkCgogICAgRG9uJ3QgdXNlIGNvZGUgb2YgbmV3IE1NQyBmcmFtZXdvcmsgaW4gY21kX21tYyBpZiBDT05GSUdfR0VORVJJQ19NTUMKICAgIGlzbid0IGVuYWJsZWQuCgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KCmNvbW1pdCAzMjQ4MmJlNjc3NzVlMDBiNGNiYzQ5ZmJhNjIzNDdjMWVjYzYyMjljCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IEZlYiAxOSAxMzo1MzoyOSAyMDA5ICswMTAwCgogICAgVFFNOHh4TDogbWFrZSBzb21lIHJvb20gaW4gbG93IG1lbW9yeSBmb3IgZnV0dXJlIG5lZWRzCgogICAgVEhlIFRRTTh4eEwgdXNlIGEgYWhuZC1vcHRpbWl6ZWQgbGlua2VyIHNjcmlwdCB0byBlZmZpY2llbnRseSB1c2UgdGhlCiAgICBzbWFsbCBib290IHNlY3RvcnMgaW4gdGhlIGZsYXNoLiBUaGlzIHBhdGNoIG1ha2VzIHNvbWUgcm9vbSBpbiB0aGUKICAgIGZpcnN0IHNlY3RvciB0byBwcmVwYXJlIGZvciBhIHNpemUgaW5jcmVhc2Ugb2YgbGliX2dlbmVyaWMvdnNwcmludGYubwogICAgYnkgYSBmdXR1cmUgcGF0Y2guCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjMTU3Y2VjM2MzZjZkZmMxOTQ1MzJiM2EzY2E4N2Y4NWI2NDI5NjJhCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEZlYiAxOCAxODowNjoxOCAyMDA5IC0wNjAwCgogICAgUkVBRE1FOiByZW1vdmUgZHVwbGljYXRlIGVudHJ5CgogICAgaXQncyBiZWVuIGFyb3VuZCBzaW5jZSB0aGUgb3JpZ2luYWwgY29tbWl0ICgyYWQ2YjUxMykgdGhhdCBhZGRlZCB0d28KICAgIGlkZW50aWNhbCBlbnRyaWVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMWJiYTMwZWZlMTcxN2JlYTEzMDI2ZTE1YzdjN2Q5MDY0MTlmYWM2OQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVRodSBGZWIgMTkgMDA6NDE6MDggMjAwOSArMDEwMAoKICAgIENvZGluZyBzdHlsZSBjbGVhbnVwLCB1cGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAzNjlkMGFhOTY3NGI2NWM4M2Y4NTUzYjliY2Y5ZDIwN2RjMzY5MjIzCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEZlYiAxOCAxNzo0Mzo1OSAyMDA5IC0wNjAwCgogICAgc2F0YV9zaWwzMTE0OiBmaXggY29tcGlsZXIgd2FybmluZwoKICAgIGp1ZGdpbmcgZnJvbSBvdGhlciBwcmludGZzIGluIHRoZSBzYW1lIGZpbGUsIGl0IHNlZW1zIGF0YSBzaG91bGQgYmUKICAgIHBvc3RwZW5kZWQgd2l0aCB0aGUgaW50ZXJmYWNlIG51bWJlciwgbm90IHRoZSBhZGRyZXNzIG9mIHRoZSBnbG9iYWwKICAgIHBvcnQgdmFyaWFibGUuICBGaXhlcyB0aGlzIGZvciBjdXJyZW50IHUtYm9vdC1tcGM4M3h4IHRyZWU6CgogICAgQ29uZmlndXJpbmcgZm9yIE1QQzgzNDlJVFggYm9hcmQuLi4KICAgIHNhdGFfc2lsMzExNC5jOiBJbiBmdW5jdGlvbiAnc2F0YV9idXNfc29mdHJlc2V0JzoKICAgIHNhdGFfc2lsMzExNC5jOjk5OiB3YXJuaW5nOiBmb3JtYXQgJyV1JyBleHBlY3RzIHR5cGUgJ3Vuc2lnbmVkIGludCcsIGJ1dCBhcmd1bWVudCAyIGhhcyB0eXBlICdzdHJ1Y3Qgc2F0YV9wb3J0IConCiAgICBzYXRhX3NpbDMxMTQuYzoxMDg6IHdhcm5pbmc6IGZvcm1hdCAnJXUnIGV4cGVjdHMgdHlwZSAndW5zaWduZWQgaW50JywgYnV0IGFyZ3VtZW50IDIgaGFzIHR5cGUgJ3N0cnVjdCBzYXRhX3BvcnQgKicKCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGY1Njc1YWE1Y2VlZWYzMDc0MDk3MGFiOGNhMGM4Y2JjMzI0OTQ1Y2QKQXV0aG9yOiBSb24gTWFkcmlkIDxyb25fbWFkcmlkQHNiY2dsb2JhbC5uZXQ+CkRhdGU6CVdlZCBGZWIgMTggMTQ6MzA6NDQgMjAwOSAtMDgwMAoKICAgIENyZWF0ZSBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgcmVzdHJpY3RlZCBuczE2NTUwIGZ1bmN0aW9ucwoKICAgIFRoaXMgcGF0Y2ggd2lsbCBjcmVhdGUgYSBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgYSBtaW5pbXVtIGNvbmZpZ3VyYXRpb24gZm9yCiAgICB0aGUgbnMxNjU1MCBzZXJpYWwgZHJpdmVyIGF0IGRyaXZlcnMvc2VyaWFsL25zMTY1NTAuYyBhbmQgd2lsbCBhcHBseSB0aGlzIG5ldwogICAgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gdGhlIFNJTVBDODMxMy5oIGNvbmZpZyBmaWxlIGluIG9yZGVyIHRvIGZpeCB0aGUgTkFORAogICAgYm9vdHN0cmFwIGJ1aWxkIGVycm9yLiAgVGhpcyBvcHRpb24gd2lsbCBleGNsdWRlIGFsbCBmdW5jdGlvbnMgd2l0aCBleGNlcHRpb24gb2YKICAgIE5TMTY1NTBfcHV0YyBhbmQgTlMxNjU1MF9pbml0LiAgVGhpcyB3aWxsIGJlIHVzZWQgcHJpbWFyaWx5IHRvIHNhdmUgc3BhY2UgYW5kCiAgICByZW1vdmUgdW51c2VkIGNvZGUgZnJvbSBidWlsZHMgaW4gd2hpY2ggc3BhY2UgaXMgbGltaXRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSb24gTWFkcmlkIDxyb25fbWFkcmlkQHNiY2dsb2JhbC5uZXQ+Cgpjb21taXQgN2IwYmMwMjE5ZGI4OTgxNjEzMjU5NDczY2YxOTY5OWFjMjU5YjRmYgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBGZWIgMTggMTY6MTQ6MjkgMjAwOSAtMDYwMAoKICAgIG1rY29uZmlnOiBpbmNsdWRlIGJvYXJkIGNvbmZpZy5oIGJlZm9yZSBhc20vY29uZmlnLmgKCiAgICBzd2FwcGluZyB0aGUgaW5jbHVkZSBvcmRlciBzdXBwcmVzc2VzIHdhcm5pbmdzIGZvciBib2FyZCBjb25maWdzCiAgICB0aGF0IGRlZmluZSB0aGVpciBvd24gQ09ORklHX01BWF9NRU1fTUFQUEVEOgoKICAgIEluIGZpbGUgaW5jbHVkZWQgZnJvbSAvaG9tZS9yMWFhaGEvZ2l0L3UtYm9vdC9pbmNsdWRlL2NvbmZpZy5oOjUsCgkJICAgIGZyb20gL2hvbWUvcjFhYWhhL2dpdC91LWJvb3QvaW5jbHVkZS9jb21tb24uaDozNSwKCQkgICAgZnJvbSBzaW1wYzgzMTMuYzoyNjoKICAgIC9ob21lL3IxYWFoYS9naXQvdS1ib290L2luY2x1ZGUvY29uZmlncy9TSU1QQzgzMTMuaDo4MToxOiB3YXJuaW5nOgogICAgIkNPTkZJR19NQVhfTUVNX01BUFBFRCIgcmVkZWZpbmVkCiAgICBJbiBmaWxlIGluY2x1ZGVkIGZyb20gL2hvbWUvcjFhYWhhL2dpdC91LWJvb3QvaW5jbHVkZS9jb25maWcuaDo0LAoJCSAgICBmcm9tIC9ob21lL3IxYWFoYS9naXQvdS1ib290L2luY2x1ZGUvY29tbW9uLmg6MzUsCgkJICAgIGZyb20gc2ltcGM4MzEzLmM6MjY6CiAgICAvaG9tZS9yMWFhaGEvZ2l0L3UtYm9vdC9pbmNsdWRlL2FzbS9jb25maWcuaDoyODoxOiB3YXJuaW5nOiB0aGlzIGlzCiAgICB0aGUgbG9jYXRpb24gb2YgdGhlIHByZXZpb3VzIGRlZmluaXRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGI4ODQ1YWJkYzBkY2YyMGQwOTQ0ZTk2NTE1M2Y1YWU3YTljMzA3N2MKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgRmViIDE4IDIxOjM1OjM4IDIwMDkgKzAxMDAKCiAgICBGaXggYnVpbGQgZXJyb3JzIGFmdGVyIG1ha2luZyBmbGFzaF9nZXRfaW5mbygpIG5vbi1zdGF0aWMKCiAgICBGaXggZm9yIHRoZXNlIGJ1aWxkIHByb2JsZW1zOgogICAgZXJyb3I6IHN0YXRpYyBkZWNsYXJhdGlvbiBvZiAnZmxhc2hfZ2V0X2luZm8nIGZvbGxvd3Mgbm9uLXN0YXRpYyBkZWNsYXJhdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYjQ5OTZkNmIyMTQwZTVkYTdmMWMzNDZmMzdhNjdiMTk5MDdiMzA3YQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEZlYiAxOCAxMzoxODowMCAyMDA5ICswMTAwCgogICAgcHBjNHh4OiBQQ0llOiBDaGFuZ2UgMTZHQiBpbmJvdW5kIG1lbW9yeSB0byA0R0IKCiAgICBUaGlzIHBhdGNoIGZpeGVzIGEgcHJvYmxlbSByZWNlbnRseSBzZWVuIG9uIHNvbWUgNHh4IHBsYXRmb3Jtcy4gRm9yCiAgICBleGFtcGxlIG9uIEtpbGF1ZWEgUENJZSBzbG90ICMwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmNTBmZTRiZDYxM2M2ZDM1YTJjMzQwNTVmMDJlOTUwMWRkNmE5YWQ1CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgRmViIDE4IDE0OjA1OjM3IDIwMDkgKzAxMDAKCiAgICBwcGM0eHg6IFNvbWUgbW9yZSBQTUM0MDUgY29kaW5nLXN0eWxlIGNsZWFudXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMmY2ZWI5MTcwYmY5MWI3MmVhNTFkY2VhMmE4YjljMTFiMGUyMGJjNQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+CkRhdGU6CVN1biBGZWIgMTUgMjI6Mjc6NDcgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogVXBkYXRlIFBNQzQwNSBib2FyZCBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBwcmVwYXJlcyB0aGUgZ29vZCBvbGQgUE1DNDA1IGJvYXJkIHN1cHBvcnQgZm9yCiAgICB1cGNvbWluZyBQTUM0MDVWMiBwYXRjaGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGM1NTNiNWY0YTBjNzdmYzc2ZTFkMjVlNzFjOGFhYTQ3NjU3ZTJkNmYKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgpEYXRlOglTdW4gRmViIDE1IDIyOjI2OjU0IDIwMDkgKzAxMDAKCiAgICBwcGM0eHg6IENsZWFudXAgUE1DNDA1IGJvYXJkIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGZpeGVzIGNvZGluZyBzdHlsZSBmb3IgUE1DNDA1IGJvYXJkIHN1cHBvcnQuCiAgICBBbHNvIHNvbWUgdW5uZWVkZWQgZmVhdHVyZXMvY29kZSBpcyByZW1vdmVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGI0ZTg1ZDBmMzdiNWI5MjRmYmY4MzQ4NjdhZDZkMGIzMWI4NmY2NjcKQXV0aG9yOiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KRGF0ZToJVGh1IEZlYiA1IDA0OjA4OjIwIDIwMDkgKzAxMDAKCiAgICBxb25nOiBjaGFuZ2VzIHRvIERhdmUvREVOWCBRb25nIGNvbmZpZ3VyYXRpb24KCiAgICAxLiBDaGFuZ2VzIHRvIHRoZSBkZWZhdWx0IGVudmlyb25tZW50OgogICAgICAtICJib290Y21kIiBkZWZpbmVkIGFzICJydW4gZmxhc2hfc2VsZiIKICAgICAgLSAic2F2ZWVudiIgY29tbWFuZCByZW1vdmVkIGZyb20gInVwZGF0ZSIKICAgICAgLSAidWJvb3QiIGNoYW5nZWQgdG8gInUtYm9vdCIgKGFsc28gaW4gImxvYWQiKQogICAgICAtICJhZGRtdGQiIHZhcmlhYmxlIGRlZmluZWQgKGFuZCBhZGRlZCB0byBhbGwgYm9vdCBjb21tYW5kcykKICAgIDIuIENPTkZJR19DTURfSkZGUzIgZGVmaW5lZCB0byBlbmFibGUgIm10ZHBhcnRzIiBjb21tYW5kCiAgICAzLiBNVERJRFNfREVGQVVMVCBhbmQgTVREUEFSVFNfREVGQVVMVCBkZWZpbmVkCiAgICA0LiBDT05GSUdfU1lTX0NCU0laRSBjaGFuZ2VkIGZyb20gMjU2IHRvIDUxMi4gVGhhdCBzb2x2ZXMgdGhlIHByb2JsZW0KICAgIHdpdGggdHJ1bmNhdGVkICJib290YXJncyIgZW52aXJvbm1lbnQgdmFyaWFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Cgpjb21taXQgNWYwMzIwMTA4ODcwZTVkNjI5ODNkMWQ1YzEzYTJhMDg3ZGRkZjY4NgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBGZWIgMSAxNzowNzo1MiAyMDA5ICswMTAwCgogICAgY29tbW9uL2NvbnNvbGU6IGF2b2lkIGlmZGVmIENPTkZJR19DT05TT0xFX01VWCB3aGVuIGl0J3MgcG9zc2libGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGVjNmYxNDk5NDYwMjI3NjY2MGY3MjY0YzZhYjNiOTFlZjFmNzYxNGQKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gRmViIDEgMTc6MDc6NTEgMjAwOSArMDEwMAoKICAgIGNvbW1vbi9jb25zb2xlOiBjb2Rpbmcgc3R5bGUgY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZGFhZjc0ZjE3NmI1NDhkZmQzNGE5OTkwMjMxZjQxODkyMDFkNTdiYQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEphbiAyOSAyMDowMjoyMyAyMDA5IC0wNTAwCgogICAgbXBjOHh4X3BjbWNpYTogbW92ZSBDT05GSUdfOHh4IG91dCBvZiAuYyBmaWxlIGFuZCBpbnRvIE1ha2VmaWxlCgogICAgTW92ZSB0aGUgQ09ORklHXzh4eCBtcGM4eHhfcGNtY2lhLmMgcHJvdGVjdGlvbiBvdXQgb2YgdGhlIEMgZmlsZSBhbmQKICAgIGludG8gdGhlIE1ha2VmaWxlIHNvIHdlIGF2b2lkIHBvaW50bGVzcyBjb21waWxpbmcgb2YgdGhlIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDdiZDI3MjJlODkwYmM4NzdhM2MwNTdkN2NjZGRjODA0NTFjOTk5MzkKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBKYW4gMjkgMjA6MDI6MDcgMjAwOSAtMDUwMAoKICAgIGRpc2s6IGNvbnZlcnQgcGFydF8qIGZpbGVzIHRvIENPQkotJChDT05GSUdfWFhYKSBzdHlsZQoKICAgIE1vdmUgdGhlIENPTkZJR19YWFggb3V0IG9mIHRoZSBwYXJ0X1hYWC5jIGZpbGUgYW5kIGludG8gTWFrZWZpbGUgdG8KICAgIGF2b2lkIHBvaW50bGVzcyBjb21waWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZjA1ZmE5MjA1ZTA0OTg2MTc2ZGM3YWI4YjcxMGJjYjVmYmU5ZjMzOApBdXRob3I6IFBldHJpIExlaHRpbmVuIDxwZXRyaS5sZWh0aW5lbkBpbm9pLmZpPgpEYXRlOglUaHUgSmFuIDI5IDEwOjM1OjQwIDIwMDkgKzAyMDAKCiAgICBpbmNsdWRlL2ltYWdlLmg6IEVhc2UgZ3JlcHBpbmcgb2YgaW1hZ2VfKiBmdW5jdGlvbnMKCiAgICBCZWNhdXNlIHRoZSBmdW5jdGlvbnMgaGF2ZSBiZWVuIGRlZmluZWQgdXNpbmcgbWFjcm9zLCBncmVwcGluZyBmb3IKICAgIHRoZWlyIGRlZmluaXRpb25zIGlzIG5vdCBwb3NzaWJsZS4gVGhpcyBwYXRjaCBhZGRzIHRoZSByZWFsIGZ1bmN0aW9uCiAgICBuYW1lcyBpbiBjb21tZW50cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRyaSBMZWh0aW5lbiA8cGV0cmkubGVodGluZW5AaW5vaS5maT4KICAgIEFja2VkLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYmRhYjM5ZDM1OGU2M2FhNDdmNDAwYThhNzZiOGQ1ZjI4Mzg0MmRmMwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIEphbiAyOCAxOTowODoxNCAyMDA5IC0wNTAwCgogICAgcmVuYW1lIENPTkZJR19DTURfRU5WIHRvIENPTkZJR19DTURfU0FWRUVOVgoKICAgIFRoZSBDT05GSUdfQ01EX0VOViBvcHRpb24gY29udHJvbHMgZW5hYmxlbWVudCBvZiB0aGUgYHNhdmVlbnZgIGNvbW1hbmQKICAgIHJhdGhlciB0aGFuIGEgZ2VuZXJpYyAiZW52IiBjb21tYW5kLCBvciBhbnl0aGluZyBlbHNlIHJlbGF0ZWQgdG8gdGhlCiAgICBlbnZpcm9ubWVudC4gIFNvLCBsZXQncyBtYWtlIHN1cmUgdGhlIGRlZmluZSBpcyBuYW1lZCBhY2NvcmRpbmdseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgOGIwNTkyYjg5ZTBmOWY4MWM5ZTE1MGM4MWQ5NmY4YTQzZTRkNjEwMQpBdXRob3I6IFZhbGVyaXkgR2x1c2hrb3YgPGd2dkBsc3RlYy5jb20+CkRhdGU6CUZyaSBKYW4gMjMgMjA6MDI6MTcgMjAwOSArMDIwMAoKICAgIGRpc2FibGUgaW1scyBjb21tYW5kIGlmIG5vIGZsYXNoIGlzIGRlZmluZWQKCiAgICBEZWZhdWx0IENPTkZJR19DTURfSU1MUyBtdXN0IGJlIGRpc2FibGVkIHdoZW4gQ09ORklHX1NZU19OT19GTEFTSCBpcyBkZWZpbmVkCgogICAgU2lnbmVkLW9mZi1ieTogVmFsZXJpeSBHbHVzaGtvdiA8Z3Z2QGxzdGVjLmNvbT4KCmNvbW1pdCA5MjNhYTQ4MTI2MjU5YzEzZGU5NTEzMTIwM2YxZDI4YmZhNWNiODg5CkF1dGhvcjogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KRGF0ZToJRnJpIEphbiAyMyAxMzoyNzoxOCAyMDA5ICswMTAwCgogICAgQVBJOiBJbXByb3ZlIGdsdWUgbWlkLWxheWVyIG9mIHRoZSBBUEkgZGVtbyBhcHBsaWNhdGlvbi4KCiAgICAtIEV4dGVuZCB1Yl9kZXZfcmVhZCgpIGFuZCB1Yl9kZXZfcmVjdigpIHNvIHRoZXkgcmV0dXJuIHRoZSBsZW5ndGggYWN0dWFsbHkKICAgIHJlYWQsIHdoaWNoIGFsbG93cyBmb3IgYmV0dGVyIGNvbnRyb2wgYW5kIGVycm9yIGhhbmRsaW5nICh0aGlzIGludHJvZHVjZXMKICAgIGFkZGl0aW9uYWwgZXJyb3IgY29kZSBBUElfRVNZU0MgcmV0dXJuZWQgYnkgdGhlIGdsdWUgbWlkLWxheWVyKS4KCiAgICAtIENsZWFuIHVwIGRlZmluaXRpb25zIG5hbWluZyBhbmQgdXNhZ2UuCgogICAgLSBPdGhlciBtaW5vciBjb3NtZXRpY3MuCgogICAgTm90ZSB0aGVzZSBjaGFuZ2VzIGRvIG5vdCB0b3VjaCB0aGUgQVBJIHByb3Blciwgc28gdGhlIGludGVyZmFjZSBiZXR3ZWVuCiAgICBVLUJvb3QgYW5kIHN0YW5kYWxvbmUgYXBwbGljYXRpb25zIHJlbWFpbnMgdW5jaGFuZ2VkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Cgpjb21taXQgNDRhOTRlNTk2YmEwZjZkMDk1MWIxNjU0MDNjNTIwYmY1NWIxYzU2ZgpBdXRob3I6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBKYW4gMjMgMTM6Mjc6MTcgMjAwOSArMDEwMAoKICAgIEFQSTogT25seSBvdXRwdXQgdGVzdCBkYXRhIHdoZW4gcmVhZGluZyB3YXMgc3VjY2Vzc2Z1bC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBDenViYWsgPHJjekBzZW1paGFsZi5jb20+Cgpjb21taXQgN2ZiNmM0ZjliMDZjNTUzOTA0M2M4YmZjNjU2NTcxMGI4MDkwODQxZApBdXRob3I6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBKYW4gMjMgMTM6Mjc6MTYgMjAwOSArMDEwMAoKICAgIEFQSTogUHJvdmlkZSBzeXNjYWxsIGVudHJ5IHBvaW50IGZvciB0aGUgQVJNIGFyY2hpdGVjdHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBDenViYWsgPHJjekBzZW1paGFsZi5jb20+CiAgICBBY2tlZC1ieTogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KCmNvbW1pdCBiODRkN2Q4ZjFlMTA2NmY4MTA4NjYzMDRhMTZhMzU4M2Y4OGU3Yzk4CkF1dGhvcjogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KRGF0ZToJRnJpIEphbiAyMyAxMzoyNzoxNSAyMDA5ICswMTAwCgogICAgQVBJOiBVc2Ugc3RhY2sgcG9pbnRlciBhcyBBUEkgc2lnbmF0dXJlIHNlYXJjaCBoaW50IGluIHRoZSBnbHVlIGxheWVyLgoKICAgIERlLWhhcmRjb2RlIHJhbmdlIGluIFJBTSB3ZSBzZWFyY2ggZm9yIHRoZSBBUEkgc2lnbmF0dXJlLiBJbnN0ZWFkIHVzZSB0aGUgc3RhY2sKICAgIHBvaW50ZXIgYXMgYSBoaW50IHRvIG5hcnJvdyBkb3duIHRoZSByYW5nZSBpbiB3aGljaCB0aGUgc2lnbmF0dXJlIGNvdWxkIHJlc2lkZQogICAgKGl0IGlzIG1hbGxvYydlZCBvbiB0aGUgVS1Cb290IGhlYXAsIGFuZCBpcyBob3BlZCB0byByZW1haW4gaW4gc29tZSBwcm94aW1pdHkKICAgIGZyb20gc3RhY2sgYXJlYSkuIEFkanVzdCBQb3dlclBDIGNvZGUgaW4gQVBJIGRlbW8gdG8gdGhlIG5ldyBzY2hlbWUuCgogICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgQ3p1YmFrIDxyY3pAc2VtaWhhbGYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KCmNvbW1pdCA4NmI0YmFmZGZhZjY2OWVkZThmZDk5MDQ0YWJjN2UyN2VhMjliNGY1CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIEZlYiAxNyAxMDoyNjozOCAyMDA5ICswMTAwCgogICAgVFFNODI2MDogZml4IGxvY2F0aW9ucyBvZiBrZXJuZWwgYW5kIHJhbWRpc2sgaW1hZ2VzIGluIGZsYXNoCgogICAgQWZ0ZXIgaW50cm9kdWNpbmcgcmVkdW5kYW50IGVudmlyb25tZW50IHRoZSBrZXJuZWwgaW1hZ2VzIHdhcwogICAgb3ZlcmxhcHBpbmcgd2l0aCBlbnZpcm9ubWVudC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDJiNjhiMjMzNzNmOTYxOTlhMGNhZmJmZDdhOWY3OWVkNjIzODFlYmIKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJV2VkIEZlYiAxMSAxOToyNjoxNSAyMDA5ICswMTAwCgogICAgODN4eDogYWRkIG1pc3NpbmcgVElNSU5HX0NGRzFfQ0FTTEFUXyogZGVmaW5lcwoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjOWUzNGZlMmU4NmY3YjZjYzgyNjBmNGIyNGNiZGM3ZGQ4MWUwNGM1CkF1dGhvcjogVmFsZXJpeSBHbHVzaGtvdiA8Z3Z2QGxzdGVjLmNvbT4KRGF0ZToJVGh1IEZlYiA1IDE0OjM1OjIxIDIwMDkgKzAyMDAKCiAgICBtcGM4MzQ5aXR4OiBhbGxvdyBTQVRBIGJvb3QgZnJvbSB0aGUgb25ib2FyZCBTSUwxMzM0CgogICAgVGhpcyBwYXRjaCBhbGxvd3MgdXNpbmcgb2YgU0FUQSBkZXZpY2VzIGNvbm5lY3RlZAogICAgdG8gdGhlIG9uYm9hcmQgUENJIFNJTDEzMzQgU0FUQSBjb250cm9sbGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFZhbGVyaXkgR2x1c2hrb3YgPGd2dkBsc3RlYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGUxYWMzODdmNDY0NTQ5OTc0Njg1NmFkYzFhZWFhOTc4N2RhMmVjYTYKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBPY3QgMzAgMTY6NTA6MTQgMjAwOCAtMDUwMAoKICAgIDgzeHg6IEFkZCBlU0RIQyBzdXBwb3J0IG9uIDgzNzkgRU1EUyBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4MDUyMmRjODM2OWE4OTkzODM2OWZiY2VlNTcyZTY2MjM3M2JjOWEzCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgT2N0IDMwIDE2OjUxOjMzIDIwMDggLTA1MDAKCiAgICA4NXh4OiBBZGQgZVNESEMgc3VwcG9ydCBmb3IgODUzNiBEUwoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1MDU4NmVmMjRlZDVjYWY2Y2U1NTkxZGY3NmYzNTUwMDlkYTJjZDc5CkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgT2N0IDMwIDE2OjQ3OjE2IDIwMDggLTA1MDAKCiAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIEZyZWVzY2FsZSBlU0RIQyBmb3VuZCBvbiA4Mzc5IGFuZCA4NTM2IFNvQ3MKCiAgICBUaGlzIHVzZXMgdGhlIG5ldyBNTUMgZnJhbWV3b3JrCgogICAgU29tZSBjb250cmlidXRpb25zIGJ5IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDI3MmNjNzBiMjExZTk0NWU0NDEzMTIyYWE3Mzg2OGY2YWRhNzMyYTUKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBPY3QgMzAgMTY6NDE6MDEgMjAwOCAtMDUwMAoKICAgIEFkZCBNTUMgRnJhbWV3b3JrCgogICAgSGVyZSdzIGEgbmV3IGZyYW1ld29yayAoYmFzZWQgcm91Z2hseSBvZmYgdGhlIGxpbnV4IG9uZSkgZm9yIG1hbmFnaW5nCiAgICBNTUMgY29udHJvbGxlcnMuICBJdCBoYW5kbGVzIGFsbCBvZiB0aGUgc3RhbmRhcmQgU0QvTU1DIHRyYW5zYWN0aW9ucywKICAgIGxlYXZpbmcgdGhlIGhvc3QgZHJpdmVycyB0byBpbXBsZW1lbnQgb25seSB3aGF0IGlzIG5lY2Vzc2FyeSB0bwogICAgZGVhbCB3aXRoIHRoZWlyIHNwZWNpZmljIGhhcmR3YXJlLgoKICAgIFRoaXMgYWxzbyBob29rcyB0aGUgaW5mcmFzdHJ1Y3R1cmUgaW50byB0aGUgUG93ZXJQQyBib2FyZCBjb2RlCiAgICAoc2ltaWxhciB0byBob3cgdGhlIGV0aGVybmV0IGluZnJhc3RydWN0dXJlIG5vdyBob29rcyBpbikKCiAgICBTb21lIG9mIHRoaXMgY29kZSB3YXMgY29udHJpYnV0ZWQgYnkgRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMWRlOTdmOTg1NmY2OTczODBjYzUwNDEyNmFiOTI1NjFlZDIzODgwMwpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE9jdCAzMCAxNjozMTozOSAyMDA4IC0wNTAwCgogICAgRWxpbWluYXRlZCBhcmNoLXNwZWNpZmljIG1tYyBoZWFkZXIgcmVxdWlyZW1lbnQKCiAgICBUaGUgY3VycmVudCBNTUMgaW5mcmFzdHJ1Y3R1cmUgcmVsaWVzIG9uIHRoZSBleGlzdGVuY2Ugb2YgYW4KICAgIGFyY2gtc3BlY2lmaWMgaGVhZGVyIGZpbGUuCVRoaXMgaXNuJ3QgbmVjZXNzYXJ5LCBhbmQgYSBjb3VwbGUKICAgIGRyaXZlcnMgd2VyZSBmb3JjZWQgdG8gaW1wbGVtZW50IGR1bW15IGZpbGVzIHRvIG1lZXQgdGhpcyByZXF1aXJlbWVudC4KICAgIEluc3RlYWQsIHdlIG1vdmUgdGhlIHN0dWZmIGluIHRob3NlIGhlYWRlciBmaWxlcyBpbnRvIGEgbW9yZSBhcHByb3ByaWF0ZQogICAgcGxhY2UsIGFuZCBlbGltaW5hdGUgdGhlIHN0dWJzIGFuZCB0aGUgI2luY2x1ZGUgb2YgYXNtL2FyY2gvbW1jLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYWJiNTQ2NmNjZjRjZTUwZjQxMmQ0NTk1ODZmNGY0YjgxY2I3M2FjMwpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE9jdCAzMCAxNjoyMTowMCAyMDA4IC0wNTAwCgogICAgQ29udmVydCBtbWNfaW5pdCB0byBtbWNfbGVnYWN5X2luaXQKCiAgICBUaGlzIGlzIHRvIGdldCBpdCBvdXQgb2YgdGhlIHdheSBvZiBpbmNvbWluZyBNTUMgZnJhbWV3b3JrCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGIyZTJlZDAyMzNhNWVmMjk5MzYxYWJlYzRmYmRhZWZiNjM0NTZlZmYKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBPY3QgMzAgMTY6MTk6MjUgMjAwOCAtMDUwMAoKICAgIEVsaW1pbmF0ZSBzdXBwb3J0IGZvciB1c2luZyBNTUMgYXMgbWVtb3J5CgogICAgTU1DIGNhcmRzIGFyZSBub3QgbWVtb3J5LCBzbyB3ZSBzdG9wIHRyZWF0aW5nIHRoZW0gdGhhdCB3YXkuCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGUxYmUwZDI1ZWNmNDk0YWU4MTI0NWNhNDM4NzM4YmE4MzlkNjMyOWIKQXV0aG9yOiBQb29uYW1fQWdncndhbC1iMTA4MTIgPGIxMDgxMkBmcmVlc2NhbGUuY29tPgpEYXRlOglTdW4gSmFuIDQgMDg6NDY6MzggMjAwOSArMDUzMAoKICAgIDMyYml0IEJVZyBmaXggZm9yIEREUjIgb24gODU3MgoKICAgIFRoaXMgZXJyYXRhIGZpeCBpcyByZXF1aXJlZCBmb3IgMzIgYml0IEREUjIgY29udHJvbGxlciBvbiA4NTcyLgogICAgTWF5ICBhbHNvIGJlIHJlcXVpcmVkIGZvciBQMTBYWDIwWFggcGxhdGZvcm1zCgogICAgU2lnbmVkLW9mZi1ieTogUG9vbmFtX0FnYXJ3YWwtYjEwODEyIDxiMTA4MTJAbGMxMTA2LnppbjMzLmFwLmZyZWVzY2FsZS5uZXQ+Cgpjb21taXQgZTBjNGZhYzc5ZDRkNzQ1NzJkZGQ0M2Y3NWU3MTg5Y2VjY2E4ZDBhZApBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEZlYiAxNiAwOTo0MDoyMCAyMDA5IC0wNjAwCgogICAgVFFNODV4eDogRml4IGEgY291cGxlIHdhcm5pbmdzIGluIFRRTTg1NDggYnVpbGQKCiAgICBUaGUgZWNtIHZhcmlhYmxlIGluIHNkcmFtLmMgd2FzIGJlaW5nIGRlY2xhcmVkIGZvciBhbGwgODU0OCwgYnV0IG9ubHkKICAgIHVzZWQgYnkgc3BlY2lmaWMgODU0OCBib2FyZHMsIHNvIHdlIG1ha2UgdGhhdCB2YXJpYWJsZSByZXF1aXJlIHRob3NlCiAgICBzcGVjaWZpYyBib2FyZHMsIHRvbwoKICAgIFRoZSBuYW5kIGNvZGUgd2FzIHVzaW5nIGFuIGluZGV4ICJpIiBpbnRvIGEgdGFibGUsIGFuZCB0aGVuIHJlLXVzaW5nICJpIgogICAgdG8gc2V0IGFkZHJlc3NlcyBmb3IgZWFjaCB1cG0uICBIb3dldmVyLCB0aGVuIGl0IHJlbGllZCBvbiB0aGUgb2xkIHZhbHVlCiAgICBvZiBpIHN0aWxsIGJlaW5nIHRoZXJlIHRvIGVuYWJsZSB0aGluZ3MuICBDaGFuZ2VkIHRoZSBzZWNvbmQgImkiIHRvICJqIgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjZjA3YTViYWVjZTBlY2ZjNTI4NGNmZGE4YTRlNjhlYWY5Mjc4MmY4CkF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+CkRhdGU6CVdlZCBGZWIgMTEgMTg6Mzg6MjYgMjAwOSArMDEwMAoKICAgIE1QQzg1eHg6IFRRTTg1NDg6IHdvcmthcm91bmQgZm9yIGVycmF0dW0gRERSIDE5IGFuZCAyMAoKICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgd29ya2Fyb3VuZCBmb3IgZXJyYXR1bSBERFIyMCBhY2NvcmRpbmcgdG8gTVBDODU0OAogICAgRGV2aWNlIEVycmF0YSBkb2N1bWVudCwgUmV2LiAxOiAiQ0tFIHNpZ25hbCBtYXkgbm90IGZ1bmN0aW9uIGNvcnJlY3RseQogICAgYWZ0ZXIgYXNzZXJ0aW9uIG9mIEhSRVNFVCIuIEZ1cnRoZXJtb3JlLCB0aGUgYnVnIEREUjE5IGlzIGZpeGVkIGluCiAgICBwcm9jZXNzb3IgdmVyc2lvbiAyLjEgYW5kIHRoZSB3b3JrLWFyb3VuZCBtdXN0IGJlIHJlbW92ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Cgpjb21taXQgMDgwNDA4ZmRjNzE3MDZhZGNiODgzZDIyMTI1NjM3YzU0ZjYwMTBiMQpBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgpEYXRlOglXZWQgRmViIDExIDE4OjM4OjI1IDIwMDkgKzAxMDAKCiAgICBNUEM4NXh4OiBUUU04NTQ4OiB1c2UgY2FjaGUgZm9yIEFHIGFuZCBCRSB2YXJpYW50cwoKICAgIFRoaXMgcGF0Y2ggbWFrZXMgYWNjZXNzZXMgdG8gdGhlIHN5c3RlbSBtZW1vcnkgY2FjaGFibGUgYnkgcmVtb3ZpbmcgdGhlCiAgICBjYWNoaW5nLWluaGliaXRlZCBhbmQgZ3VhcmRlZCBmbGFncyBmcm9tIHRoZSByZWxldmFudCBUTEIgZW50cmllcyBmb3IKICAgIHRoZSBUUU04NTQ4X0JFIGFuZCBUUU04NTQ4X0FHIG1vZHVsZXMuIEZZSSwgdGhlIEZyZWVzY2FsZSBNUEM4NSogYm9hcmRzCiAgICBhcmUgY29uZmlndXJlZCBzaW1pbGFybHkuCgogICAgVGhpcyByZXN1bHRzIGluIGEgYmlnIGF2ZXJhbGwgcGVyZm9ybWFjZSBpbXByb3ZlbWVudC4gVEZUUCBkb3dubG9hZHMsCiAgICBOQU5EIEZsYXNoIGFjY2Vzc2VzLCBrZXJuZWwgYm9vdHMsIGV0Yy4gYXJlIG11Y2ggZmFzdGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgoKY29tbWl0IGRjNWY1NWQ2MzZkN2JmMjFiYTE3NzU4ZmFjNGI5MjllYzRjMDU5ZjIKQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KRGF0ZToJV2VkIEZlYiAxMSAxODozODoyNCAyMDA5ICswMTAwCgogICAgTVBDODV4eDogVFFNODU0OF9BRzogYWRkIDEgR2lCIEREUjItU0RSQU0gY29uZmlndXJhdGlvbgoKICAgIFRoaXMgcGF0Y2ggYWRkIHN1cHBvcnQgZm9yIHRoZSAxIEdpQiBERFIyLVNEUkFNIG9uIHRoZSBUUU04NTQ4X0FHCiAgICBtb2R1bGUuCgogICAgU2lnbmVkLW9mZi1ieTogSmVucyBHZWhybGVpbiA8c2V3X3NAdHFzLmRlPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Cgpjb21taXQgODhiMGU4OGQxODY0NzkzNDllNWEyYjc3MWU4Mjc3NTEwOWUxMGZiNApBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgpEYXRlOglXZWQgRmViIDExIDE4OjM4OjIzIDIwMDkgKzAxMDAKCiAgICBNUEM4NXh4OiBUUU04NTQ4OiBmaXggU0RSQU0gdGltaW5nIGZvciA1MzMgTUh6CgogICAgQWNjb3JkaW5nIHRvIG5ldyBUUU04NTQ4IHRpbWluZyBzcGVjaWZpY2F0aW9uOgogICAgUmVmcmVzaCBSZWNvdmVyeTogMzQgLT4gNTMgY2xvY2tzCiAgICBDS0UgcHVsc2Ugd2lkdGg6ICAxIC0+IDMgY3ljbGVzCiAgICBXaW5kb3cgZm9yIGZvdXIgYWN0aXZpdGllczogMTMgLT4gMTQgY3ljbGVzCgogICAgU2lnbmVkLW9mZi1ieTogSmVucyBHZWhybGVpbiA8c2V3X3NAdHFzLmRlPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Cgpjb21taXQgYTg2NWJjZGFjODkyNzhjYWM0ZGZjMDdkZWM4Mjk5NDAzMTEwNDk5ZApBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgpEYXRlOglXZWQgRmViIDExIDE4OjM4OjIyIDIwMDkgKzAxMDAKCiAgICBNUEM4NXh4OiBUUU04NTQ4OiBhZGQgc3VwcG9ydCBmb3IgdGhlIFRRTTg1NDhfQUcgbW9kdWxlCgogICAgVGhlIFRRTTg1NDhfQUcgaXMgYSB2YXJpYW50IG9mIHRoZSBUUU04NTQ4IG1vZHVsZSB3aXRoIDEgR2lCIG1lbW9yeSwKICAgIENBTiBhbmQgd2l0aG91dCBQQ0kvUENJLVggYW5kIFJUQy4gVS1Cb290IGNhbiBiZSBidWlsdCBmb3IgdGhpcyBtb2R1bGUKICAgIHdpdGggIiQgbWFrZSBUUU04NTQ4X0FHX2NvbmZpZyIuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Cgpjb21taXQgYWQ3ZWU1ZDQzYjBkYjk0MDc5ZDU2NTIxZGFiY2EyNTY3NGYyODc0NwpBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgpEYXRlOglXZWQgRmViIDExIDE4OjM4OjIxIDIwMDkgKzAxMDAKCiAgICBNUEM4NXh4OiBUUU04NTQ4OiBhZGQgc3VwcG9ydCBmb3IgdGhlIFRRTTg1NDhfQkUgbW9kdWxlCgogICAgVGhlIFRRTTg1NDhfQkUgaXMgYSB2YXJpYW50IG9mIHRoZSBUUU04NTQ4IG1vZHVsZSB3aXRoIE5BTkQgYW5kIENBTgogICAgaW50ZXJmYWNlLiBXaXRoIE5BTkQgc3VwcG9ydCwgdGhlIGltYWdlIGlzIHNpZ25pZmljYW50bHkgbGFyZ2VyIGFuZAogICAgVEVYVF9CQVNFIGlzIGFkanVzdGVkIGFjY29yZGluZ2x5LiBVLUJvb3QgY2FuIGJlIGJ1aWx0IGZvciB0aGlzCiAgICBtb2R1bGUgd2l0aCAiJCBtYWtlIFRRTTg1NDhfQkVfY29uZmlnIi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KCmNvbW1pdCBhMzE4MjM0ODc4YzM0NmU2NzNiMmVmOGRjNGIxNGIzMzhmZTdmYzJiCkF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+CkRhdGU6CVdlZCBGZWIgMTEgMTg6Mzg6MjAgMjAwOSArMDEwMAoKICAgIE1QQzg1eHg6IFRRTTg1eHg6IG1ha2Ugc3RhbmRhcmQgUENJL1BDSS1YIGNvbmZpZ3VyYWJsZQoKICAgIFRoZSBUUU04NTQ4X0FHIG1vZHVsZSBkb2VzIG5vdCBoYXZlIHRoZSBzdGFuZGFyZCBQQ0kvUENJLVggaW50ZXJmYWNlCiAgICBjb25uZWN0ZWQgYnV0IGp1c3QgdGhlIFBDSSBFeHByZXNzIGludGVyZmFjZSAuIFNvIGZhciBpdCB3YXMgbm90CiAgICBwb3NzaWJsZSB0byBkaXNhYmxlIGl0IHdpdGhvdXQgZGlzYWJsaW5nIHRoZSBjb21wbGV0ZSBQQ0kgaW50ZXJmYWNlCiAgICAoQ09ORklHX1BDSSkgaW5jbHVkaW5nIFBDSSBFeHByZXNzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgoKY29tbWl0IDMxY2E5MTE5YzMxODZjZWM1NzliNTRkMmE3YTJiMzYxYjRkMmI3YmYKQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KRGF0ZToJV2VkIEZlYiAxMSAxODozODoxOSAyMDA5ICswMTAwCgogICAgTVBDODV4eDogVFFNODV4eDogZml4IGZsYXNoIHByb3RlY3Rpb24gZm9yIGJvb3QgbG9hZGVyCgogICAgQXMgdGhlIHJlc2V0IHZlY3RvciBpcyBsb2NhdGVkIGF0IDB4ZmZmZmZmZmMsIGFsbCBmbGFzaCBzZWN0b3JzIGZyb20gdGhlCiAgICBiZWdpbm5pbmcgb2YgdGhlIFUtQm9vdCBiaW5hcnkgdG8gMHhmZmZmZmZmZiBtdXN0IGJlIHByb3RlY3RlZC4gT24gdGhlCiAgICBUUU04NTQ4LUFHIGhhdmluZyBzbWFsbCBzZWN0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIGZsYXNoIGl0IGhhcHBlbmVkIHRoYXQKICAgIHRoZSBsYXN0IHR3byBzZWN0b3Igd2VyZSBub3QgcHJvdGVjdGVkIGFuZCBhbiAiZXJhc2UgYWxsIiBsZWZ0IGFuCiAgICB1bi1ib290YWJsZSBzeXN0ZW0gYmVoaW5kOgoKICAgIEJhbmsgIyAyOiBDRkkgY29uZm9ybWFudCBGTEFTSCAoMzIgeCAxNikgIFNpemU6IDMyIE1CIGluIDI3MCBTZWN0b3JzCiAgICAgIEFNRCBTdGFuZGFyZCBjb21tYW5kIHNldCwgTWFudWZhY3R1cmVyIElEOiAweEVDLCBEZXZpY2UgSUQ6IDB4MjU3RQogICAgICBFcmFzZSB0aW1lb3V0OiA4MTkyIG1zLCB3cml0ZSB0aW1lb3V0OiAxIG1zCgogICAgICBGRkZBMDAwMCBFIFJPICAgRkZGQzAwMDAJIFJPICAgRkZGRTAwMDAJIFJPICAgRkZGRTQwMDAJIFJPICAgRkZGRTgwMDAJIFJPCiAgICAgIEZGRkVDMDAwCSBSTyAgIEZGRkYwMDAwCSBSTyAgIEZGRkY0MDAwCSBSTyAgIEZGRkY4MDAwIEUgICAgICBGRkZGQzAwMAoKICAgIFRoZSBzYW1lIGJ1ZyBzZWVtcyB0byBiZSBpbiBkcml2ZXJzL210ZC9jZmlfZmxhc2guYzpmbGFzaF9pbml0KCkgYW5kIG1hbnkKICAgIGJvYXJkIEJTUHMgYXMgd2VsbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KCmNvbW1pdCBhMWM4YTcxOTI2MjE1MWY5NzExOWU3NjE2NjA0M2VlM2RhM2Y5N2IyCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJRnJpIEZlYiA2IDE0OjMwOjQwIDIwMDkgLTA2MDAKCiAgICA4Nnh4OiBVcGRhdGUgQ1BVIGluZm8gb3V0cHV0IG9uIGJvb3R1cAoKICAgIC0gVXBkYXRlIHN0eWxlIG9mIDg2eHggQ1BVIGluZm9ybWF0aW9uIG9uIGJvb3QgdG8gbW9yZSBjbG9zZWx5CiAgICAgIG1hdGNoIDg1eHggYm9hcmRzCiAgICAtIEZpeCBkZXRlY3Rpb24gb2YgODY0MS84NjQxRAogICAgLSBVc2Ugc3RybWh6KCkgdG8gZGlzcGxheSBmcmVxdWVuY2llcwogICAgLSBEaXNwbGF5IEwxIGluZm9ybWF0aW9uCiAgICAtIERpc3BsYXkgTDIgY2FjaGUgc2l6ZQogICAgLSBGaXhlZCBDUFUvU1ZSIHZlcnNpb24gb3V0cHV0CgogICAgPT0gQmVmb3JlID09CiAgICBGcmVlc2NhbGUgUG93ZXJQQwogICAgQ1BVOgoJQ29yZTogRTYwMCBDb3JlIDAsIFZlcnNpb246IDAuMiwgKDB4ODAwNDAyMDIpCglTeXN0ZW06IFVua25vd24sIFZlcnNpb246IDIuMSwgKDB4ODA5MDAxMjEpCglDbG9ja3M6IENQVToxMDY2IE1IeiwgTVBYOiA1MzMgTUh6LCBERFI6IDI2NiBNSHosIExCQzogMTMzIE1IegoJTDI6IEVuYWJsZWQKICAgIEJvYXJkOiBYLUVTIFhQZWRpdGU1MTcwIDNVIFZQWCBTQkMKCiAgICA9PSBBZnRlciA9PQogICAgQ1BVOiAgIDg2NDFELCBWZXJzaW9uOiAyLjEsICgweDgwOTAwMTIxKQogICAgQ29yZTogIEU2MDAgQ29yZSAwLCBWZXJzaW9uOiAyLjIsICgweDgwMDQwMjAyKQogICAgQ2xvY2sgQ29uZmlndXJhdGlvbjoKCSAgIENQVToxMDY2LjY2NyBNSHosIE1QWDo1MzMuMzMzIE1IegoJICAgRERSOjI2Ni42NjcgTUh6ICg1MzMuMzMzIE1UL3MgZGF0YSByYXRlKSwgTEJDOjEzMy4zMzMgTUh6CiAgICBMMTogICAgRC1jYWNoZSAzMiBLQiBlbmFibGVkCgkgICBJLWNhY2hlIDMyIEtCIGVuYWJsZWQKICAgIEwyOiAgICA1MTIgS0IgZW5hYmxlZAogICAgQm9hcmQ6IFgtRVMgWFBlZGl0ZTUxNzAgM1UgVlBYIFNCQwoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgMjJjMDBmOGQ3ZDQ1NGQ3N2U3NTlkZjU4NDE1ZDJkM2YzZDdlMTU0YwpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVRodSBGZWIgNSAxMToyNToyNCAyMDA5IC0wNjAwCgogICAgODZ4eDogVXBkYXRlIEdsb2JhbCBVdGlsaXRpZXMgc3RydWN0dXJlCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCA0ZWY2MzBkZjc3M2U0NTgwNmQ3MDFiZjVkMjVjMzI4Nzc4YmI0Y2RlCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJVGh1IEZlYiA1IDExOjI1OjI1IDIwMDkgLTA2MDAKCiAgICA4Nnh4OiBSZXNldCB1cGRhdGUKCiAgICBVcGRhdGUgdGhlIDg2eHggcmVzZXQgc2VxdWVuY2UgdG8gdHJ5IGV4ZWN1dGluZyBhIGJvYXJkLXNwZWNpZmljIHJlc2V0CiAgICBmdW5jdGlvbi4gIElmIHRoZSBib2FyZC1zcGVjaWZpYyByZXNldCBpcyBub3QgaW1wbGVtZW50ZWQgb3IgZG9lcyBub3QKICAgIHN1Y2NlZWQsIHRoZW4gYXNzZXJ0ICNIUkVTRVRfUkVRLiAgVXNpbmcgI0hSRVNFVF9SRVEgaXMgYSBtb3JlIHN0YW5kYXJkCiAgICByZXNldCBwcm9jZWR1cmUgdGhhbiB0aGUgcHJldmlvdXMgbWV0aG9kIGFuZCBhbGxvd3MgYWxsIGJvYXJkCiAgICBwZXJpcGhlcmFscyB0byBiZSByZXNldCBpZiBuZWVkZWQuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCBlZGYwZTI1MjRhOGM2YTNlOTFjMDA5YzQ5NmEwYWEwYWU4OWNkOGFiCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIEZlYiAxMCAyMzo1Mzo0MCAyMDA5IC0wNjAwCgogICAgZnNsLWRkcjogQWxsb3cgc3lzdGVtIHRvIGJvb3QgaWYgd2UgaGF2ZSBtb3JlIHRoYW4gNEcgb2YgbWVtb3J5CgogICAgUHJldmlvdXNseSBpZiB3ZSA+PTRHIG9mIG1lbW9yeSBhbmQgIUNPTkZJR19QSFlTXzY0QklUIHdlJ2QgcmVwb3J0CiAgICBhbiBlcnJvciBhbmQgaGFuZy4JSW5zdGVhZCBvZiBkb2luZyB0aGF0IHNpbmNlIEREUiBpcyBtYXBwZWQgaW4gdGhlCiAgICBsb3dlc3QgcHJpb3JpdHkgTEFXcyB3ZSBzZXR1cCB0aGUgRERSIGNvbnRyb2xsZXIgYW5kIHRoZSBtYXggYW1vdW50CiAgICBvZiBtZW1vcnkgd2UgcmVwb3J0IGJhY2sgaXMgd2hhdCB3ZSBjYW4gbWFwIChDT05GSUdfTUFYX01FTV9NQVBQRUQpCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIEFja2VkLWJ5OiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgOGQ5NDlhZmYzOGNmYjQzODhjYmQ3Mzg3NmU3N2JjZDA2ZDYwMWYyMApBdXRob3I6IFNyaWthbnRoIFNyaW5pdmFzYW4gPHNyaWthbnRoLnNyaW5pdmFzYW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEphbiAyMSAxNzoxNzozMyAyMDA5IC0wNjAwCgogICAgbXBjODV4eDogQWRkIHN1cHBvcnQgZm9yIHRoZSBQMjAyMAoKICAgIEFkZGVkIHZhcmlvdXMgcDIwMjAgcHJvY2Vzc29yIHNwZWNpZmljIGRldGFpbHM6CiAgICAqIFNWUiBmb3IgcDIwMjAsIHAyMDIwRQogICAgKiBpbW1hcCB1cGRhdGVzIGZvciBMQVdzIGFuZCBERFIgb24gcDIwMjAKICAgICogTEFXIGRlZmluZXMgcmVsYXRlZCB0byBwMjAyMAoKICAgIFNpZ25lZC1vZmYtYnk6IFNyaWthbnRoIFNyaW5pdmFzYW4gPHNyaWthbnRoLnNyaW5pdmFzYW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFRyYXZpcyBXaGVhdGxleSA8VHJhdmlzLldoZWF0bGV5QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGNiNjllNGRlODcwMmUxMDgzMjRlMWM0MDM2M2YzMGVmNmYyZTI5MTgKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgRmViIDEwIDE3OjM2OjE1IDIwMDkgLTA2MDAKCiAgICA4NXh4OiBwcmludCBib290IGhlYWRlciBpbmZvIHRvIGRpc3RpbnF1aXNoIDM2LWJpdCBhZGRyIG1hcCBvbiBNUEM4NTcyIERTCgogICAgQWRkZWQgc29tZSBpbmZvIHRoYXQgaXMgcHJpbnRlZCBvdXQgd2hlbiB3ZSBib290IHRvIGRpc3RpcXVpc2ggaWYgd2UKICAgIGJ1aWx0IE1QQzg1NzJEU19jb25maWcgdnMgTVBDODU3MkRTXzM2QklUX2NvbmZpZyBzaW5jZSB0aGV5IGhhdmUKICAgIGRpZmZlcmVudCBhZGRyZXNzIG1hcHMuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmZWVkZThiMDcwMTNiMzNmY2E4ZGQyYTkxNmIzYWM4NmJmNGQ0YzBhCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgRGVjIDUgMjA6MTA6MjIgMjAwOCAtMDYwMAoKICAgIEZpeHVwIFNHTUlJIFBIWSBpZHMgaW4gdGhlIGRldmljZSB0cmVlCgogICAgVGhlIGRldmljZSB0cmVlJ3MgUEhZIGFkZHJlc3NlcyBuZWVkIHRvIGJlIGZpeGVkIHVwIGlmIHdlJ3JlIHVzaW5nIHRoZQogICAgU0dNSUkgUmlzZXIgQ2FyZC4KCiAgICBUaGUgODU3MiwgODUzNiwgYW5kIDg1NDQgRFMgYm9hcmRzIHdlcmUgbW9kaWZpZWQgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uLgoKICAgIENvZGUgaWRlYSB0YWtlbiBmcm9tIExpdSBZdSA8eXUubGl1QGZyZWVzY2FsZS5jb20+CgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDVkYzBjZjY4ZjhmMTAxMDQyOTk3ZDc1MTg4MDgxZDg1MjZkNzA1ZWEKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBGZWIgMTEgMTU6MTA6MzEgMjAwOSAtMDYwMAoKICAgIE1ha2Ugc29tZSBtaW5vciB3aGl0ZXNwYWNlIGNoYW5nZXMgdG8gZWxpbWluYXRlIGxpbmUtd3JhcHBpbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOWU1Njk4NmEyYjc0ZDE5N2Y1MWVjYTcwZmFkN2I4MzZiMTkwMGM0ZApBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEZlYiAxMSAxNTowNzoyNCAyMDA5IC0wNjAwCgogICAgQWRkIGV0aF9nZXRfZGV2X2J5X2luZGV4CgogICAgVGhpcyBhbGxvd3MgY29kZSB0byBpdGVyYXRlIHRocm91Z2ggdGhlIGV0aGVybmV0IGRldmljZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjY3MzA1MTIwYWFmMjY4YTYxNDAxMjUzNDY2NzgxNjZkMTRmMWY0NwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBGZWIgOSAyMjowMzowNCAyMDA5IC0wNjAwCgogICAgODV4eDogRml4IGJ1ZyBpbiBkZXZpY2UgdHJlZSBzZXR1cCBpbiAzNi1iaXQgcGh5c2ljYWwgY29uZmcKCiAgICBJbiB0aGUgMzYtYml0IHBoeXNpY2FsIGNvbmZpZyBmb3IgTVBDODU3MkRTIHdoZW4gbmVlZCB0aGUgc3RhcnQgYWRkcmVzcwogICAgb2YgbWVtb3J5IGFuZCBpdCBzaXplIHRvIGJlIGtlcHQgaW4gcGh5c18qX3QgaW5zdGVhZCBvZiBhIHVsb25nIHNpbmNlCiAgICB3ZSBzdXBwb3J0ID40RyBvZiBtZW1vcnkgaW4gdGhlIGNvbmZpZyBhbmQgdWxvbmcgY2FudCByZXByZXNlbnQgdGhhdC4KICAgIE90aGVyd2lzZSB3ZSBlbmQgdXAgc2VlaW5nIHRoZSBtZW1vcnkgbm9kZSBpbiB0aGUgZGV2aWNlIHRyZWUgcmVwb3J0aW5nCiAgICBiYWNrIHdlIGhhdmUgbWVtb3J5IHN0YXJ0aW5nIEAgMCBhbmQgb2Ygc2l6ZSAwLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYWQ5N2RjZTE4NDQ1ZmYwNWJmMzI2MDk0ZTY5MWEwMWFhOTVhYThkYwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBGZWIgOSAyMjowMzowNSAyMDA5IC0wNjAwCgogICAgODV4eDogRml4IGFkZHJlc3MgbWFwIGZvciAzNi1iaXQgY29uZmlnIG9mIE1QQzg1NzJEUwoKICAgIFdoZW4gd2UgaW50cm9kdWNlZCB0aGUgMzYtYml0IGNvbmZpZyBvZiB0aGUgTVBDODU3MkRTIGJvYXJkIHdlIGhhZCB0aGUKICAgIHdyb25nIFBDSSBNRU0gYnVzIGFkZHJlc3MgbWFwLiAgQWRkaXRpb25hbGx5LCB0aGUgY2hhbmdlIHRvIHRoZSBhZGRyZXNzCiAgICBtYXAgZXhwb3NlcyBhIHNtYWxsIGlzc3VlIGluIG91ciBkdW1teSByZWFkIG9uIHRoZSBVTEkgYnVzLiAgV2UgbmVlZAogICAgdG8gdXNlIHRoZSBuZXcgbWFwcGluZyBmdW5jdGlvbnMgdG8gaGFuZGxlIHRoYXQgcmVhZCBwcm9wZXJseSBpbiB0aGUKICAgIDM2LWJpdCBjb25maWcuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmODUyM2NiMDgxNWIyZDNkMmQ3ODBiN2Q0OWNhNjE0MTA1NTU1ZjU4CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEZlYiA2IDA5OjU2OjM1IDIwMDkgLTA2MDAKCiAgICA4NXh4OiBGaXggaG93IHdlIG1hcCBERFIgbWVtb3J5CgogICAgUHJldmlvdXNseSB3ZSBvbmx5IGFsbG93ZWQgcG93ZXItb2YtdHdvIG1lbW9yeSBzaXplcyBhbmQgZGlkbnQKICAgIGhhbmRsZSA+Mkcgb2YgbWVtb3J5LiAgTm93IHdlIHdpbGwgbWFwIHVwIHRvIENPTkZJR19NQVhfTUVNX01BUFBFRAogICAgYW5kIHNob3VsZCBwcm9wZXJseSBoYW5kbGUgYW55IHNpemUgdGhhdCB3ZSBjYW4gbWFrZSBpbiB0aGUgVExCcwogICAgd2UgaGF2ZSBhdmFpbGFibGUgdG8gdXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDE1NDJmYmRlZWMwZDFlMmE2ZGYxMzE4OWRmOGRjYjFjZTg4MDJiZTMKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglGcmkgRmViIDYgMDk6NTY6MzQgMjAwOSAtMDYwMAoKICAgIGZzbC1kZHI6IGlnbm9yZSBtZW1jdGxfaW50bHZfY3RsIHNldHRpbmcgaWYgb25seSBvbmUgRERSIGNvbnRyb2xsZXIKCiAgICBJZiB3ZSBvbmx5IGhhdmUgb25lIGNvbnRyb2xsZXIgd2UgY2FuIGNvbXBsZXRlbHkgaWdub3JlIGhvdwogICAgbWVtY3RsX2ludGx2X2N0bCBpcyBzZXQuICBPdGhlcndpc2Ugb3RoZXIgbGV2ZWxzIG9mIGNvZGUgZ2V0IGNvbmZ1c2VkCiAgICBhbmQgdGhpbmsgd2UgaGF2ZSB0d2ljZSBhcyBtdWNoIG1lbW9yeS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGIyOWRlZTNjOTA2ZTlkYWFmNmJhZjc3NzJkMmUxNWUyNmI4NjM2YjgKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgRmViIDQgMDk6MzU6NTcgMjAwOSAtMDYwMAoKICAgIDg1eHg6IEZvcm1hdCBjcHUgZnJlcSBwcmludGluZyB0byBoYW5kbGUgOCBjb3JlcwoKICAgIE9ubHkgcHJpbnQgNCBjcHUgZnJlcSBwZXIgbGluZS4gIFRoaXMgd2F5IHdoZW4gd2UgaGF2ZSA4IGNvcmVzIGl0cyBhCiAgICBiaXQgbW9yZSByZWFkYWJsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDk3MDRmOWNhZjUzZjVjYWU1NDdkOGM1ZTFhZTk0YWE0ZTU3YjE2MGYKQXV0aG9yOiBBYnJhaGFtLCBUaG9tYXMgPHQtYWJyYWhhbUB0aS5jb20+CkRhdGU6CVR1ZSBPY3QgMjggMTY6NTE6MzEgMjAwOCArMDUzMAoKICAgIFVTQjogUmVtb3ZlIExVTiBudW1iZXIgZnJvbSBDREIKCiAgICBUaGUgTFVOIG51bWJlciBpcyBub3QgcGFydCBvZiB0aGUgQ29tbWFuZCBEZXNjcmlwdG9yIEJsb2NrIChDREIpIGZvciBzY3NpIGlucXVpcnksIHJlcXVlc3Qgc2Vuc2UsIHRlc3QgdW5pdCByZWFkeSwgcmVhZCBjYXBhY2l0eSBhbmQgcmVhZDEwIGNvbW1hbmRzLiBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIExVTiBudW1iZXIgaW5mb3JtYXRpb24gZnJvbSB0aGUgQ0RCLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBBYnJhaGFtIDx0LWFicmFoYW1AdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgZjNjMGRlNjM2MjUyZjNhMTg2NTRjOGY5YzYzNzBhOTU3NGE3ZTc1NQpBdXRob3I6IEF0aW4gTWFsYXZpeWEgPGF0aW4ubWFsYXZpeWFAZ21haWwuY29tPgpEYXRlOglUdWUgRmViIDMgMTU6MTc6MTAgMjAwOSAtMDUwMAoKICAgIEFkZGVkIHVzYnR0eV9jb25maWd1cmVkKCkgY2hlY2suIEZpeGVkIGF0dHJpYnV0ZShwYWNrZWQpIHdhcm5pbmdzLgoKICAgIFYzOiBGaXhlZCBsaW5lLXdyYXAgcHJvYmxlbSBkdWUgdG8gdXNlciBlcnJvciBpbiBtYWlsIQoKICAgIEFkZGVkIHVzYl9jb25maWd1cmVkKCkgY2hlY2tzIGluIHVzYnR0eV9wdXRzKCkgYW5kIHVzYnR0eV9wdXRjKCkgdG8gZ2V0IGFyb3VuZCBhIGhhbmcKICAgIHdoZW4gdXNiIGlzIG5vdCBjb25uZWN0ZWQgYW5kIHRoZSB1c2VyIGhhcyBzZXQgdXAgbXVsdGktaW8gKHNldGVudiBzdGRvdXQgc2VyaWFsLHVzYnR0eSBldGMpLgogICAgR290IHJpZCBvZiByZWR1bmRhbnQgX19hdHRyaWJ1dGVfXygocGFja2VkKSkgZGlyZWN0aXZlcyB0aGF0IHdlcmUgY2F1c2luZyB3YXJuaW5ncyBmcm9tIGdjYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBdGluIE1hbGF2aXlhIDxhdGluLm1hbGF2aXlhQGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IGU3ZGUxOGFmZThlY2Y5NmE1MWVmOTgxZDA2MDY2ZWViNmIxMjU0ZTcKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CkRhdGU6CUZyaSBGZWIgMTMgMDk6MjM6MzYgMjAwOSArMDEwMAoKICAgIGkuTVgzMTogU3RhcnQgdGhlIEkyQyBjbG9jayBvbiBkcml2ZXIgaW5pdGlhbGlzYXRpb24KCiAgICBpLk1YMzEgcG93ZXJzIG9uIHdpdGggbW9zdCBjbG9ja3MgcnVubmluZywgc28sIGFmdGVyIGEgcG93ZXIgb24gdGhpcyBleHBsaWNpdAogICAgY2xvY2sgc3RhcnQgdXAgaXMgbm90IHJlcXVpcmVkLiBIb3dldmVyLCBhcyBMaW51eCBib290cyBpdCBkaXNhYmxlcyBtb3N0IGNsb2NrcwogICAgdG8gc2F2ZSBwb3dlci4gVGhpcyBpbmNsdWRlcyB0aGUgSTJDIGNsb2NrLiBJZiB3ZSB0aGVuIHNvZnQgcmVib290IGZyb20gTGludXgKICAgIHRoZSBJMkMgY2xvY2sgc3RheXMgb2ZmLiBUaGlzIGJyZWFrcyB0aGUgcGh5Y29yZSwgd2hpY2ggaGFzIGl0cyBlbnZpcm9ubWVudCBpbgogICAgSTJDIEVFUFJPTS4gRml4IHRoZSBwcm9ibGVtIGJ5IGV4cGxpY2l0bHkgc3RhcnRpbmcgdGhlIGNsb2NrIGluIEkyQyBkcml2ZXIKICAgIGluaXRpYWxpc2F0aW9uIHJvdXRpbmUuCgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgogICAgQWNrLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDE1MjA4YWM5ZWFlMWMzNDBjNGJjMTFmNzBjYmY1YzlkYTc4YTU3YmEKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBGZWIgMTEgMjA6MzY6MTQgMjAwOSAtMDUwMAoKICAgIGkyYy5oOiBkcm9wIGkyY19yZWdfe3JlYWQsIHdyaXRlfSBoYWNrIGZvciBCbGFja2ZpbiBwYXJ0cwoKICAgIFRoZSBCbGFja2ZpbiBpMmMgZHJpdmVyIGhhcyBiZWVuIHJld3JpdHRlbiB0aHVzIHRoZSBzcGVjaWFsIGlmZGVmcyBpbiB0aGUKICAgIGNvbW1vbiBjb2RlIGFyZSBubyBsb25nZXIgbmVlZGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBjMmQ5YmVmYTBiNDY5NWI4OTQ3NmZiNWQyNTk3NDJjMDlhZmUyNDNmCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVRodSBGZWIgMTIgMDg6MDg6NTQgMjAwOSArMDEwMAoKICAgIDgyeHgsIG1nY29nZTogZml4IGNvbXBpbGUgZXJyb3IKCiAgICBXaXRoIGFjdHVhbCB1LWJvb3QgY29tcGlsaW5nIHRoZSBtZ2NvZ2UgcG9ydCBmYWlscywgYmVjYXVzZQogICAgc2luY2UgY29tbWl0IGJhNzA1YjViMWE5N2I0NzM4OGVkNDg4NThiZWY2YmY3YjZiZmNkNTYgaXQgaXMKICAgIG5lY2Vzc2FyeSB0byBkZWZpbmUgQ09ORklHX05FVF9NVUxUSS4KCiAgICBTZWVtcyB0byBtZSB0aGUgbWdjb2dlIHBvcnQgaXMgdGhlIG9ubHkgYWN0dWFsIGV4aXN0aW5nIDgyNjAKICAgIHBvcnQgd2hvIHVzZXMgQ09ORklHX0VUSEVSX09OX1NDQywgc28gbm8gb3RoZXIgODI2MCBwb3J0IG5lZWRlZAogICAgdG8gYmUgZml4ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgOWNhY2Y0ZmM0MDM1ZWFiZTlkOWFlMmE5YTE4OGM1MWE4MDI3YzkxZQpBdXRob3I6IERpcmsgRWliYWNoIDxlaWJhY2hAZ2RzeXMuZGU+CkRhdGU6CU1vbiBGZWIgOSAwODoxODozNCAyMDA5ICswMTAwCgogICAgcHBjNHh4OiBBZGQgUkVBRE1FIGVudHJ5IGZvciBDT05GSUdfUENJX0RJU0FCTEVfUENJRQoKICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgRWliYWNoIDxlaWJhY2hAZ2RzeXMuZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNzM2OWYwZTM4NGUyYTgzMWJlMTNhNzc3M2E1ODI0MmM5MTczZmE5YwpBdXRob3I6IENhcm9seW4gU21pdGggPGNhcm9seW4uc21pdGhAdGVrdHJvbml4LmNvbT4KRGF0ZToJVGh1IEZlYiAxMiAwNjoxMzo0NCAyMDA5ICswMTAwCgogICAgcHBjNHh4OiBGaXggaW5pdGlhbGl6YXRpb24gb2YgdGhlIFNEUkFNX0NPRFQgcmVnaXN0ZXIKCiAgICBUaGlzIGZpeGVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgU0RSQU1fQ09EVCByZWdpc3RlciBpbiB0aGUgcHBjNHh4IEREUjIKICAgIGluaXRpYWxpemF0aW9uIGNvZGUuIEl0IGFsc28gcmVtb3ZlcyB1c2Ugb2YgdGhlIFNEUkFNX0NPRFRfRkVFREJBQ0tfUkNWX1NJTkdMRV9FTkQKICAgIGFuZCBTRFJBTV9DT0RUX0ZFRURCQUNLX0RSVl9TSU5HTEVfRU5EICNkZWZpbmUncyBzaW5jZSB0aGV5IGFyZSByZXNlcnZlZCBiaXRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IENhcm9seW4gU21pdGggPGNhcm9seW4uc21pdGhAdGVrdHJvbml4LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjZWYwZWZhZjJmYTU1ZDFmMjUwNjZjZmIwMmJkOTg0YzI3ZjljYTMxCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgRmViIDExIDA5OjI5OjMzIDIwMDkgKzAxMDAKCiAgICBwcGM0eHg6IEZpeCBwcm9ibGVtIHdpdGggYm9hcmRfZXRoX2luaXQoKSB2cyBjcHVfZXRoX2luaXQoKSBvbiBBTUNDIGJvYXJkcwoKICAgIFNvbWUgQU1DQyBldmFsIGJvYXJkcyBkbyBoYXZlIGEgYm9hcmRfZXRoX2luaXQoKSBmdW5jdGlvbiBjYWxsaW5nCiAgICBwY2lfZXRoX2luaXQoKS4gVGhlc2UgYm9hcmRzIG5lZWQgdG8gY2FsbCBjcHVfZXRoX2luaXQoKSBleHBsaWNpdGx5IG5vdwogICAgd2l0aCB0aGUgbmV3IGV0aF9pbml0IHJld29yay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYzY0NTAxMmFlZmViYjMwMWU2OTA3ZDE0OGM2YzhlZmFjYWMwNDlkNApBdXRob3I6IEFkYW0gR3JhaGFtIDxhZ3JhaGFtQGFtY2MuY29tPgpEYXRlOglNb24gRmViIDkgMTM6MTg6MTIgMjAwOSAtMDgwMAoKICAgIHBwYzR4eDogQXV0b2NhbGlicmF0aW9uIGNhbiBzZXQgUkRDQyB0byBvdmVyIGFnZ3Jlc3NpdmUgdmFsdWUuCgogICAgVGhlIGNyaXRlcmlhIG9mIHRoZSBBTUNDIFNEUkFNIENvbnRyb2xsZXIgRERSIGF1dG9jYWxpYnJhdGlvbgogICAgVS1Cb290IGNvZGUgaXMgdG8gcGljayB0aGUgbGFyZ2VzdCBwYXNzaW5nIHdyaXRlL3JlYWQvY29tcGFyZQogICAgd2luZG93IHRoYXQgYWxzbyBoYXMgdGhlIHNtYWxsZXN0IFNEUkFNX1JEQ0MuW1JEU1NdIFJlYWQgU2FtcGxlCiAgICBDeWNsZSBTZWxlY3QgdmFsdWUuCgogICAgT24gc29tZSBLaWxhdWVhIGJvYXJkcyB0aGUgRERSIGF1dG9jYWxpYnJhdGlvbiBhbGdvcml0aG0gY2FuCiAgICBmaW5kIGEgbGFyZ2UgcGFzc2luZyB3cml0ZS9yZWFkL2NvbXBhcmUgd2luZG93IHdpdGggYSBzbWFsbAogICAgU0RSQU1fUkRDQy5bUkRTU10gYWdncmVzc2l2ZSB2YWx1ZSBvZiBSZWFkIFNhbXBsZSBDeWNsZSBTZWxlY3QKICAgIHZhbHVlICJUMSBTYW1wbGUiLgoKICAgIFRoaXMgU0RSQU1fUkRDQy5bUkRTU10gUmVhZCBTYW1wbGUgQ3ljbGUgU2VsZWN0IHZhbHVlIG9mCiAgICAiVDEgU2FtcGxlIiBwcm92ZXMgdG8gYmUgdG8gYWdncmVzc2l2ZSB3aGVuIGxhdGVyIG9uIFUtQm9vdAogICAgcmVsb2NhdGVzIGludG8gRERSIG1lbW9yeSBhbmQgZXhlY3V0ZXMuCgogICAgVGhlIG1lbW9yeSB0cmFjZXMgb24gdGhlIEtpbGF1ZWEgYm9hcmQgYXJlIHNob3J0IHNvIG9uIHNvbWUKICAgIEtpbGF1ZWEgYm9hcmRzIHRoZSBTRFJBTV9SRENDLltSRFNTXSBSZWFkIFNhbXBsZSBDeWNsZSBTZWxlY3QKICAgIHZhbHVlIG9mICJUMSBTYW1wbGUiIHNob3dzIHVwIGFzIGEgcG90ZW50aWFsbHkgdmFsaWQgdmFsdWUgZm9yCiAgICB0aGUgRERSIGF1dG9jYWxpYnJhdGlpb24gYWxnb3JpdGhtLgoKICAgIFRoZSBmaXggaXMgdG8gZGVmaW5lIGEgd2VhayBkZWZhdWx0IGZ1bmN0aW9uIHdoaWNoIHByb3ZpZGVzCiAgICB0aGUgbWluaW11bSBTRFJBTV9SRENDLltSRFNTXSBSZWFkIFNhbXBsZSBDeWNsZSBTZWxlY3QgdmFsdWUKICAgIHRvIGFjY2VwdCBmb3IgRERSIGF1dG9jYWxpYnJhdGlvbi4JVGhlIGRlZmF1bHQgd2lsbCBiZSB0aGUKICAgICJUMiBTYW1wbGUiIHZhbHVlLglBIGJvYXJkIGRldmVsb3BlciB3aG8gaGFzIGEgd2VsbCBkZWZpbmVkCiAgICBib2FyZCBhbmQgY2hvb3NlcyB0byBiZSBtb3JlIGFnZ3Jlc3NpdmUgY2FuIGFsd2F5cyBwcm92aWRlCiAgICB0aGVpciBvd24gYm9hcmQgc3BlY2lmaWMgc3RyaW5nIGZ1bmN0aW9uIHdpdGggdGhlIG1vcmUKICAgIGFnZ3Jlc3NpdmUgIlQxIFNhbXBsZSIgdmFsdWUgb3Igc3RpY2sgd2l0aCB0aGUgZGVmYXVsdAogICAgbWluaW11bSBTRFJBTV9SRENDLltSRFNTXSB2YWx1ZSBvZiAiVDIiLgoKICAgIEFsc28gcHV0IGluIGEgYXV0b2NhbGlicmF0aW9uIGxvb3AgZml4IGZvciBjYXNlIHdoZXJlIGN1cnJlbnQKICAgIHdyaXRlL3JlYWQvY29tcGFyZSBwYXNzaW5nIHdpbmRvdyBzaXplIGlzIHRoZSBzYW1lIGFzIGEgcHJpb3IKICAgIHdpbmRvdyBzaXplLCB0aGVuIGluIHRoaXMgY2FzZSBjaG9vc2UgdGhlIHdyaXRlL3JlYWQvY29tcGFyZQogICAgcmVzdWx0IHRoYXQgaGFzIHRoZSBhc3NvY2lhdGVkIHNtYWxsZXN0IFJEQ0MgVC1TYW1wbGUgdmFsdWUuCgogICAgU2lnbmVkLW9mZi1ieTogQWRhbSBHcmFoYW0gPGFncmFoYW1AYW1jYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMmVkZTg3OWZjYjY3NDcwNTI0ODQ3YmI0ZmM4OTcyNjUxYmI0NjE4NApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEZlYiAxMSAwOTozNzoxMiAyMDA5ICswMTAwCgogICAgcHBjNHh4OiBGaXggcHJvYmxlbSB3aXRoIENPTkZJR19NQVhfTUVNX01BUFBFRCBpbiBpbmNsdWRlL2FzbS1wcGMvY29uZmlnLmgKCiAgICBDT05GSUdfU0RSQU1fUFBDNHh4X0lCTV9ERFIyIGlzIG5vdCBzZXQgd2hlbiBpbmNsdWRlL2FzbS1wcGMvY29uZmlnLmggaXMKICAgIGluY2x1ZGVkLiBTbyBmb3Iga2F0bWFpLCBDT05GSUdfTUFYX01FTV9NQVBQRUQgd2lsbCBnZXQgc2V0IHRvIDI1Nk1CLgoKICAgIEl0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UgdG8gc2V0IENPTkZJR19NQVhfTUVNX01BUFBFRCB0byAyR0IgZm9yIGFsbCBQUEM0eHgKICAgIGJvYXJkcyByaWdodCBub3cuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGYxNWM2NTE1ZmMyM2Y4M2M1MWYzZGUyNzJjYTIzZDg2YjgwZTgxYjEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgRmViIDEyIDAwOjA4OjM5IDIwMDkgKzAxMDAKCiAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cDsgdXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNWZjNTZiOTA3ZDk5MzI2MGI5ZWJkYjEzN2FmNjZmZTY5NjM1YWU5ZQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBKYW4gMzAgMTY6MzY6NDAgMjAwOSAtMDYwMAoKICAgIEFkZCBmZWF0dXJlLXJlbW92YWwtc2NoZWR1bGUudHh0CgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCAyNTVkMjhlMTY0MmU4ZmMzMmE2NzUzMjI2YmUxYTk2YjQ4MWNlMTExCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVR1ZSBGZWIgMTAgMDk6MzI6MzggMjAwOSArMDEwMAoKICAgIDh4eCBzZXJpYWwsIHNtYzogQ29kaW5nLVN0eWxlIGNsZWFudXAgc2VyaWFsIFNNQyBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAyYjNmMTJjMjE0MzQ2NTA4Y2FlM2YxMjQ1ODA4YzFjYTU0YzgxZmRkCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVR1ZSBGZWIgMTAgMDk6MzE6NDcgMjAwOSArMDEwMAoKICAgIDh4eCBzZXJpYWwsIHNtYzogYWRkIGNvbmZpZ3VyYWJsZSBTTUMgUnggYnVmZmVyIGxlbgoKICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gQ09ORklHX1NZU19TTUNfUlhCVUZMRU4uCiAgICBXaXRoIHRoaXMgb3B0aW9uIGl0IGlzIHBvc3NpYmxlIHRvIGFsbG93IHRoZSByZWNlaXZlCiAgICBidWZmZXIgZm9yIHRoZSBTTUMgb24gOHh4IHRvIGJlIGdyZWF0ZXIgdGhlbiAxLiBJbiBjYXNlCiAgICBDT05GSUdfU1lTX1NNQ19SWEJVRkxFTiA9PSAxIHRoaXMgZHJpdmVyIHdvcmtzIGFzIHRoZQogICAgb2xkIHZlcnNpb24uCgogICAgV2hlbiBkZWZpbmluZyBDT05GSUdfU1lTX1NNQ19SWEJVRkxFTiBhbHNvCiAgICBDT05GSUdfU1lTX01BWElETEUgbXVzdCBiZSBkZWZpbmVkIHRvIHNldHVwIHRoZSBtYXhpbXVtCiAgICBpZGxlIHRpbWVvdXQgZm9yIHRoZSBTTUMuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgZTkxNWY4YmI3M2Q3NDE3OGJjMjFkM2E0NTc5NTk4ODNiMWFmZDFjMApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEZlYiA1IDIxOjA0OjM2IDIwMDkgLTA1MDAKCiAgICBjb21tb24ve2h1c2gsIGtnZGIsIHNlcmlhbH0uYzogYnVpbGQgYnkgQ09CSlMtJCguLi4pIGluIE1ha2VmaWxlCgogICAgTW92ZSBnbG9iYWwgJyNpZmRlZiBDT05GSUdfeHh4IC4uLi4gI2VuZGlmJyBvdXQgb2YgdGhlIC5jIGZpbGVzIGFuZCBpbnRvCiAgICB0aGUgQ09CSlMtJChDT05GSUdfeHh4KSBpbiB0aGUgTWFrZWZpbGUuICBBbHNvIGRlbGV0ZSB1bnVzZWQgdmFyIGluIGtnZGIKICAgIGNvZGUgaW4gdGhlIHByb2Nlc3MuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGFiNzZlOTg0OGExZjRkYjY0ZDE0MjMzNzQxZDczOWEzYjMzNjBjOTMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBGZWIgNSAyMTowNDo1MCAyMDA5IC0wNTAwCgogICAgYnppcDI6IG1vdmUgaWZkZWYgaGFuZGxpbmcgdG8gTWFrZWZpbGUgQ09CSlMtJCguLi4pCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGFlMGIwNWRmMDRlMWNjNjVjNWFkMTljY2QzNjJmNGJlODJkZjczMTYKQXV0aG9yOiBKZXJyeSBWYW4gQmFyZW4gPGd2Yi51Ym9vdEBnbWFpbC5jb20+CkRhdGU6CVRodSBGZWIgNSAyMjoxODowMiAyMDA5IC0wNTAwCgogICAgRml4IHdoaXRlc3BhY2UgZGFtYWdlOiBkb3VibGUgc3BhY2UgY2hhbmdlZCB0byBhIHRhYgoKICAgIEF0IHNvbWUgcG9pbnQgYW4gaW50ZW50aW9uYWwgZG91YmxlIHNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIHNlbnRlbmNlCiAgICBnb3QgY2hhbmdlZCBpbnRvIGEgdGFiIGluIHRoZSBHUEwgaGVhZGVyIGxpbmU6CiAgICAgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgZGFtYWdlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgNGY5NzU2NzhkZTk5NWI1NTc0OWQ1ZTg0NTkwYzI2ODk3MmE3YzgzNQpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglUdWUgRmViIDEwIDA5OjUzOjI5IDIwMDkgKzAxMDAKCiAgICBjZmk6IG1ha2UgZmxhc2hfZ2V0X2luZm8oKSBub24gc3RhdGljCgogICAgSWYgb24geW91ciBib2FyZCBpcyBtb3JlIHRoYW4gb25lIGZsYXNoLCB5b3UgbXVzdCBrbm93CiAgICB0aGUgc2l6ZSBvZiBldmVyeSBzaW5nbGUgZmxhc2gsIGZvciBleGFtcGxlLCBmb3IgdXBkYXRpbmcKICAgIHRoZSBEVFMgYmVmb3JlIGJvb3RpbmcgTGludXguIFNvIG1ha2UgdGhpcyBmdW5jdGlvbgogICAgZmxhc2hfZ2V0X2luZm8oKSBleHRlcm4sIGFuZCB5b3UgY2FuIGhhdmUgYWxsIGluZm8KICAgIGFib3V0IHlvdXIgZmxhc2hlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4NjMyMWZjMTEyOGM5M2ExMGFjNGFmYjlkMzE3YjBkZjhlY2UwZjllCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJVGh1IEZlYiA1IDIzOjU4OjI1IDIwMDkgLTA4MDAKCiAgICBuZXQ6IHJlbW92ZWQgYm9hcmQtc3BlY2lmaWMgQ09ORklHcyBmcm9tIE1QQzV4eHggRkVDIGRyaXZlcgoKICAgIEFkZGVkIG5ldyBDT05GSUcgb3B0aW9ucyBmb3IgdGhlIHRocmVlIHR5cGUgb2YgTUFDLVBIWSBpbnRlcmNvbm5lY3QgYW5kCiAgICBhcHBsaWVkIHRoZW0gYWxsIHJlbGV2YW50IGJvYXJkIGNvbmZpZyBmaWxlcwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNjM4ZWQzZTI5NmU3MGZhYjI4NmQxNTdiN2FkZWRhYWE0YTA5YTQ3NApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEZlYiA1IDIxOjA0OjQ3IDIwMDkgLTA1MDAKCiAgICBuZXQvc250cC5jOiBtb3ZlIGlmZGVmIGludG8gTWFrZWZpbGUgQ09CSlMtJCguLi4pCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA5ZTViZTgyMTRiYTc1MTQzNmU1N2MzYmUwNDRiZjZkY2NiOWE2Njg3CkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgRmViIDMgMTg6MjY6NDEgMjAwOSAtMDYwMAoKICAgIHRzZWM6IEZpeCBhIGJ1ZyBpbiBzb2Z0LXJlc2V0dGluZwoKICAgIFNPRlRfUkVTRVQgbXVzdCBiZSBhc3NlcnRlZCBmb3IgYXQgbGVhc3QgMyBUWCBjbG9ja3MuICBVc3VhbGx5LCB0aGF0J3MgYWJvdXQgMzAKICAgIGNsb2NrIGN5Y2xlcywgc28gaXQncyBiZWVuIG1vc3RseSB3b3JraW5nLglCdXQgd2UgaGFkIG5vIGd1YXJhbnRlZSwgYW5kIGF0CiAgICBzbG93ZXIgYml0cmF0ZXMsIGl0J3MganVzdCBvdmVyIGEgbWljcm9zZWNvbmQgKG92ZXIgMTAwMCBjbG9jayBjeWNsZXMpLiAgVGhpcwogICAgZW5mb3JjZXMgYSAyIG1pY3Jvc2Vjb25kIGdhcCBiZXR3ZWVuIGFzc2VydGlvbiBhbmQgZGVhc3NlcnRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAwOWZjYzhiNWQ4NjkwM2I3NmU3ZTRkMWQ4NzlkNmY0YmNhMjVjMjdiCkF1dGhvcjogU2ltb24gTXVudG9uIDxzaW1vbkBuaWRvcmFuLm01ZGF0YS5jb20+CkRhdGU6CU1vbiBGZWIgMiAwOTo0NDowOCAyMDA5ICswMDAwCgogICAgRml4IDEwME1icyBldGhlcm5ldCBvcGVyYXRpb24gb24gc2g3NzYzIGJhc2VkIGJvYXJkcwoKICAgIDEwME1icyBldGhlcm5ldCBkb2VzIG5vdCB3b3JrIG9uIHNoNzc2MyBjaGlwcyBkdWUgdG8gdGhlIHdyb25nIHZhbHVlIGJlaW5nCiAgICB1c2VkIGluIHRoZSBHRUNNUiByZWdpc3Rlci4gRm9sbG93aW5nIGRpZmYgZml4ZXMgdGhlIHByb2JsZW0KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBNdW50b24JPHNpbW9uQG5pZG9yYW4ubTVkYXRhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMmJjMmE4ZjZkYzlmZGRhNDY1MzE3ZGE1OTQ3NGU2NWMyNGEzOThhMgpBdXRob3I6IGtzaUBrb2k4Lm5ldCA8a3NpQGtvaTgubmV0PgpEYXRlOglGcmkgRmViIDYgMTY6Mjc6NTUgMjAwOSAtMDgwMAoKICAgIEZpeCBNUEM4MjYwIHdpdGggZXRoZXJuZXQgb24gU0NDCgogICAgVGhpcyBmaXhlcyBNUEM4MjYwIGNvbXBpbGF0aW9uIHdpdGggZXRoZXJuZXQgb24gU0NDLiBQcm9iYWJseSB3YXMgYQogICAgdHlwbyBvciBzb21ldGhpbmcuLi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZXkgS3VidXNoeW4gPGtzaUBrb2k4Lm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYWU1ZDhmNjEzY2VjMWE2YWY3YmYxZmM5YzQyYTNiODU2ZjAyMTAyMwpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglGcmkgSmFuIDMwIDEyOjU2OjE1IDIwMDkgKzAxMDAKCiAgICA4Mnh4IHNlcmlhbCwgc21jOiBDb2RpbmctU3R5bGUgY2xlYW51cCBzZXJpYWwgU01DIGRyaXZlcgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IGM5MmZhYzkxYTA2YzYwZjg3NGM2MDVlM2NhODBkZDQwN2MxY2FhYTcKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJRnJpIEphbiAzMCAxMjo1NTozOCAyMDA5ICswMTAwCgogICAgODJ4eCBzZXJpYWwsIHNtYzogYWRkIGNvbmZpZ3VyYWJsZSBTTUMgUnggYnVmZmVyIGxlbgoKICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gQ09ORklHX1NZU19TTUNfUlhCVUZMRU4uCiAgICBXaXRoIHRoaXMgb3B0aW9uIGl0IGlzIHBvc3NpYmxlIHRvIGFsbG93IHRoZSByZWNlaXZlCiAgICBidWZmZXIgZm9yIHRoZSBTTUMgb24gODJ4eCB0byBiZSBncmVhdGVyIHRoZW4gMS4gSW4gY2FzZQogICAgQ09ORklHX1NZU19TTUNfUlhCVUZMRU4gPT0gMSB0aGlzIGRyaXZlciB3b3JrcyBhcyB0aGUKICAgIG9sZCB2ZXJzaW9uLgoKICAgIFdoZW4gZGVmaW5pbmcgQ09ORklHX1NZU19TTUNfUlhCVUZMRU4gYWxzbwogICAgQ09ORklHX1NZU19NQVhJRExFIG11c3QgYmUgZGVmaW5lZCB0byBzZXR1cCB0aGUgbWF4aW11bQogICAgaWRsZSB0aW1lb3V0IGZvciB0aGUgU01DLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IGJjZWQ3Y2NlZmEwODUxMmM1NGE2ZDE0NjY1OGZmN2RiYzMzZDVkZmUKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglGcmkgRmViIDYgMDg6MDg6MDYgMjAwOSAtMDYwMAoKICAgIHBwYzogRml4IHJvbGwgb3ZlciBidWcgaW4gZmx1c2hfY2FjaGUoKQoKICAgIElmIHdlIGNhbGwgZmx1c2hfY2FjaGUoMHhmZmZmZjAwMCwgMHgxMDAwKSBpdCB3b3VsZCBuZXZlcgogICAgdGVybWluYXRlIHRoZSBsb29wIHNpbmNlIGVuZCA9IDB4ZmZmZmZmZmYgYW5kIHdlJ2Qgcm9sbCBvdmVyCiAgICBvdXIgY291bnRlciBmcm9tIDB4ZmZmZmZlMCB0byAwIChhc3N1bWluZyBhIDMyLWJ5dGUgY2FjaGUgbGluZSkKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDg3YzkwNjM5NjM1NjFkM2QwMTA2NGJlMzRkMGMzMDg1NWE1NjU4N2IKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgRmViIDUgMjA6NDA6NTggMjAwOSAtMDYwMAoKICAgIHBwYzogTW92ZSBDT05GSUdfTUFYX01FTV9NQVBQRUQgdG8gY29tbW9uIGNvbmZpZy5oCgogICAgTW92ZWQgQ09ORklHX01BWF9NRU1fTUFQUEVEIHRvIHRoZSBhc20vY29uZmlnLmggc28gaXRzIGtlcHQgY29uc2lzdGVudAogICAgYmV0d2VlbiB0aGUgdHdvIGN1cnJlbnQgdXNlcnMgKGxpYl9wcGMvYm9hcmQuYywgNDR4IFNQRCBERFIyKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0N2Q0MWNjM2ExMWEwM2M2ZDU2MTQ2ZDA1NjE0NWRmNzNmNDdlYjUwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEZlYiA1IDIwOjQwOjU3IDIwMDkgLTA2MDAKCiAgICBBZGQgYW4gYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGNvbmZpZy5oIGZvciBjb21tb24gZGVmaW5lcwoKICAgIFdlIGhhdmUgY29tbW9uIGRlZmluZXMgdGhhdCB3ZSBkdXBsaWNhdGUgaW4gdmFyaW91cyB3YXlzLiAgSGF2aW5nIGFuCiAgICBhcmNoIHNwZWNpZmljIGNvbmZpZy5oIGdpdmVzIHVzIGEgY29tbW9uIGxvY2F0aW9uIGZvciB0aG9zZSBkZWZpbmVzLgoKICAgIEV2ZW50dWFsbHkgd2Ugc2hvdWxkIGJlIGFibGUgdG8gcmVwbGFjZSB0aGlzIHdoZW4gd2UgaGF2ZSBwcm9wZXIKICAgIEtjb25maWcgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDRjNzhkNGE2YzAxNjIxNzIxYjczMjQxOGUxYzZkYTY4NGE1NmJiYjEKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBGZWIgMyAxODoxMDo1NiAyMDA5IC0wNjAwCgogICAgbXBjODY0MWhwY246IENoYW5nZSBQQ0kgTUVNIHBjaSBidXMgYWRkcmVzcwoKICAgIE5vdyB0aGF0IHRoZSByZXN0IG9mIHUtYm9vdCBjYW4gc3VwcG9ydCBpdCwgY2hhbmdlIHRoZSBQQ0kgYnVzCiAgICBhZGRyZXNzIG9mIHRoZSBQQ0kgTUVNIHJlZ2lvbnMgZnJvbSAweDgwMDAwMDAwIHRvIDB4YzAwMDAwMDAsCiAgICBhbmQgdXNlIHRoZSBzYW1lIGJ1cyBhZGRyZXNzIGZvciBib3RoIFBDSTEgYW5kIFBDSTIuICBUaGlzIHdpbGwKICAgIG1heGltaXplIHRoZSBhbW91bnQgb2YgUENJIGFkZHJlc3Mgc3BhY2UgbGVmdCBvdmVyIHRvIG1hcCBSQU0KICAgIG9uIHN5c3RlbXMgd2l0aCBsYXJnZSBhbW91bnRzIG9mIG1lbW9yeS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMTc4NWRiZWVkNDM1OTllZWQxZDg4NzU2NzNjOTY5MTJjZDc3MDE0MQpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIEZlYiAzIDE4OjEwOjU1IDIwMDkgLTA2MDAKCiAgICBkcml2ZXJzL2Jsb2NrL2FoY2k6IEZpeCBwY2kgbWFwcGluZyBidWcKCiAgICBUaGUgY29kZSBhc3N1bWVzIHRoYXQgdGhlIHBjaSBidXMgYWRkcmVzcyBhbmQgdGhlIHZpcnR1YWwKICAgIGFkZHJlc3MgdXNlZCB0byBhY2Nlc3MgYSByZWdpb24gYXJlIHRoZSBzYW1lLCBidXQgdGhleSBtaWdodAogICAgbm90IGJlLiAgRml4IHRoaXMgYXNzdW1wdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZDU5MWE4MGU3NDA5MWU3YTA2NThkMTY1NzIxZTZjN2RlMmVmMGJjZApBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIEZlYiAzIDE4OjEwOjU0IDIwMDkgLTA2MDAKCiAgICBNUEM4NjQxSFBDTjogRW5hYmxlIENPTkZJR19BRERSX01BUAoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA0OWY0NmYzYmYwOGFhZjdiMWRiMTMxYTEwODJmMWU2MDNiYjdhOTRiCkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgRmViIDMgMTg6MTA6NTMgMjAwOSAtMDYwMAoKICAgIG1wYzg2NDFocGNuOiBDbGVhbiB1cCBQQ0kgbWFwcGluZyBjb25jZXB0cwoKICAgIENsZWFuIHVwIFBDSSBtYXBwaW5nIGNvbmNlcHRzIGluIHRoZSA4NjQxIGNvbmZpZyAtIHJlbmFtZSBfQkFTRQogICAgdG8gX0JVUywgYXMgaXQncyBhY3R1YWxseSBhIFBDSSBidXMgYWRkcmVzcywgc2VwYXJhdGUgdmlydHVhbAogICAgYW5kIHBoeXNpY2FsIGFkZHJlc3NlcyBpbnRvIF9WSVJUIGFuZCBfUEhZUywgYW5kIHVzZSBlYWNoCiAgICBhcHBvcHJpYXRlbHkuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGM5MzE1ZTZiNGYyNDQ5ODFkZTBiMmVhYWEyOWE3ODM4YTE2NWI0OTQKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBGZWIgMyAxODoxMDo1MiAyMDA5IC0wNjAwCgogICAgbXBjODZ4eDogQWRkIHN1cHBvcnQgdG8gcG9wdWxhdGUgYWRkciBtYXAgYmFzZWQgb24gQkFUcwoKICAgIElmIENPTkZJR19BRERSX01BUCBpcyBlbmFibGVkLCB1cGRhdGUgdGhlIGFkZHJlc3MgbWFwCiAgICB3aGVuZXZlciB3ZSB3cml0ZSBhIGJhdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZDM1YWU1YTkzODY3OWJkN2UxODE2N2ZhZjc5ZDBmYjNjNjYzOWI1MQpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIEZlYiAzIDE4OjEwOjUxIDIwMDkgLTA2MDAKCiAgICBwb3dlcnBjOiBNb3ZlIGR1cGxpY2F0ZWQgQkFUIGRlZmluZXMgdG8gbW11LmgKCiAgICBUaGUgQkFUIGZpZWxkcyBhcmUgYXJjaGl0ZWN0ZWQ7IHRoZXJlJ3Mgbm8gbmVlZCBmb3IgdGhlc2UgdG8gYmUgaW4KICAgIGNwdS1zcGVjaWZpYyBmaWxlcy4gIERyb3AgdGhlIGR1cGxpY2F0aW9uIGFuZCBtb3ZlIHRoZXNlIHRvCiAgICBpbmNsdWRlL2FzbS1wcGMvbW11LmguICBBbHNvLCByZW1vdmUgdGhlIEJMX3h4eCBkZWZpbmVzIHRoYXQgd2VyZSBvbmx5CiAgICB1c2VkIGJ5IHRoZSBhbGFza2EgYm9hcmQsIGFuZCBzd2l0Y2ggdG8gdXNpbmcgdGhlIEJBVFVfQkxfeHh4IGRlZmluZXMKICAgIHVzZWQgYnkgYWxsIHRoZSBvdGhlciBib2FyZHMuICBUaGUgQkxfIGRlZmluZXMgcHJldmlvdXNseSBpbiB1c2UKICAgIGhhZCB0byBiZSBzaGlmdGVkIGludG8gdGhlIHByb3BlciBwb3NpdGlvbiBmb3IgdXNlLCB3aGljaCB3YXMgaW5lZmZpY2llbnQuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDZlNjFmYWU0ZDM2MGExMzgwYjYzZTdkMDA3YjMxNDc3ZTM2NmJjY2UKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBGZWIgMyAxODoxMDo1MCAyMDA5IC0wNjAwCgogICAgZHJpdmVycy9wY2k6IENyZWF0ZSBwY2lfbWFwX2JhciBmdW5jdGlvbgoKICAgIEl0IGlzIG5vIGxvbmdlciBhbHdheXMgdHJ1ZSB0aGF0IHRoZSBwY2kgYnVzIGFkZHJlc3MgY2FuIGJlCiAgICB1c2VkIGFzIHRoZSB2aXJ0dWFsIGFkZHJlc3MgZm9yIHBjaSBhY2Nlc3Nlcy4gIHBjaV9tYXBfYmFyKCkKICAgIGlzIGNyZWF0ZWQgdG8gcmV0dXJuIHRoZSB2aXJ0dWFsIGFkZHJlc3MgZm9yIGEgcGNpIHJlZ2lvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMmVjY2EzNDAxNzc1YjEyNWMzYjlmZjY1NzY2YmVmYjIzOTg5NDE0YgpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIEZlYiAzIDE4OjEwOjQ5IDIwMDkgLTA2MDAKCiAgICBtcGM4NjQxaHBjbjogU2V0IHVwIG91dGJvdW5kIHBjaSB3aW5kb3dzIGJlZm9yZSBpbmJvdW5kCgogICAgQmVjYXVzZSB0aGUgaW5ib3VuZCBwY2kgd2luZG93cyBhcmUgbWFwcGVkIGdlbmVyb3VzbHksIHNldCB1cAogICAgdGhlIG1vcmUgc3BlY2lmaWMgb3V0Ym91bmQgd2luZG93cyBmaXJzdC4gIFRoaXMgd2F5LCB3aGVuIHdlCiAgICBzZWFyY2ggdGhlIHBjaSByZWdpb25zIGZvciBzb21ldGhpbmcsIHdlIHdpbGwgaGl0IG9uIHRoZSBtb3JlCiAgICBzcGVjaWZpYyByZWdpb24uICBUaGlzIGNhbiBhY3R1YWxseSBiZSBhIHByb2JsZW0gb24gc3lzdGVtcwogICAgd2l0aCBsYXJnZSBhbW91bnRzIG9mIFJBTS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYjgxYjc3M2VhZDA2ODcxMTRkYzhhODAwZjk5ZWE2ZTUwNDQ0NzczOQpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIEZlYiAyIDE2OjM0OjUyIDIwMDkgLTA2MDAKCiAgICBtcGM4NjQxaHBjbjogVXNlIHBoeXNpY2FsIGFkZHJlc3MgaW4gZmxhc2ggYmFua3MgZGVmaW50aW9uCgogICAgSWYgdGhlIFZBIGFuZCBQQSBvZiB0aGUgZmxhc2ggYXJlbid0IHRoZSBzYW1lLCB0aGUgYmFua3MgbGlzdAogICAgc2hvdWxkIGJlIGluaXRpYWxpemVkIHRvIGhvbGQgdGhlIHBoeXNpY2FsIGFkZHJlc3MuICBDb3JyZWN0IHRoaXMuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDBkMTlmNmM4Y2JlNzFiOWU2ZDhjNmJkNjc0MmVkMjU1MWU5MTg4NzAKQXV0aG9yOiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KRGF0ZToJVHVlIEZlYiAxMCAwMDoyMjozMSAyMDA5ICswMTAwCgogICAgcW9uZzogc3VwcG9ydCBmb3IgRGF2ZS9ERU5YIFFvbmdFVkItTElURSBib2FyZAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBEYXZlL0RFTlggUW9uZ0VWQi1MSVRFIGkuTVgzMS1iYXNlZCBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNjJjYmM0MDhmNTJmYzlhNWViODQ5ZTBiODgyYzUwNDc4MGM5ZDE4MwpBdXRob3I6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgpEYXRlOglNb24gRmViIDkgMTg6NDU6MjggMjAwOSArMDEwMAoKICAgIGRuZXQ6IGRyaXZlciBmb3IgRGF2ZSBETkVUIGV0aGVybmV0IGNvbnRyb2xsZXIKCiAgICBEcml2ZXIgZm9yIERhdmUgRE5FVCBldGhlcm5ldCBjb250cm9sbGVyICh1c2VkIG9uIERhdmUvREVOWAogICAgUW9uZ0VWQi1MSVRFIGJvYXJkKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KICAgIEFja2VkLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDJkNDNlODczYTI5Y2E0OTU5YmE2YTMwZmM3ZmIzOTZkM2ZkMGRjY2YKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglGcmkgRmViIDYgMDk6NDk6MzIgMjAwOSAtMDYwMAoKICAgIHBjaTogZ2l2ZSBwcmVmZXJlbmNlIHRvIG5vbi1QQ0lfUkVHSU9OX1NZU19NRU1PUlkgcmVnaW9ucyB3aGVuIG1hdGNoaW5nCgogICAgV2hlbiB3ZSBzZWFyY2ggZm9yIGFuIGFkZHJlc3MgbWF0Y2ggaW4gcGNpX2hvc2Vfe3BoeXNfdG9fYnVzLGJ1c190b19waHlzfQogICAgd2Ugc2hvdWxkIGdpdmUgcHJlZmVyZW5jZSB0byBtZW1vcnkgcmVnaW9ucyB0aGF0IGFyZW4ndCBzeXN0ZW0gbWVtb3J5LgoKICAgIEl0cyBwb3NzaWJsZSB0aGF0IHdlIGhhdmUgb3ZlciBtYXBwZWQgc3lzdGVtIG1lbW9yeSBpbiB0aGUgcmVnaW9ucyBhbmQKICAgIHdlIHdhbnQgdG8gYXZvaWQgZGVwZW5kaW5nIG9uIHRoZSBvcmRlciBvZiB0aGUgcmVnaW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGZmNGU2NmU5M2MxYWQ0NzY0NGJlM2I0ZmZkNmE0NmUxY2U5YjY2MTIKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglGcmkgRmViIDYgMDk6NDk6MzEgMjAwOSAtMDYwMAoKICAgIHBjaTogUmVuYW1lIFBDSV9SRUdJT05fTUVNT1JZIHRvIFBDSV9SRUdJT05fU1lTX01FTU9SWSBmb3IgY2xhcml0eQoKICAgIFRoZSBQQ0lfUkVHSU9OX01FTU9SWSBhbmQgUENJX1JFR0lPTl9NRU0gYXJlIGEgYml0IHRvIHNpbWlsYXIgYW5kCiAgICBjYW4gYmUgY29uZnVzaW5nIHdoZW4gcmVhZGluZyB0aGUgY29kZS4KCiAgICBSZW5hbWUgUENJX1JFR0lPTl9NRU1PUlkgdG8gUENJX1JFR0lPTl9TWVNfTUVNT1JZIHRvIGNsYXJpZnkgaXRzIHVzZWQKICAgIGZvciBzeXN0ZW0gbWVtb3J5IG1hcHBpbmcgcHVycG9zZXMuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA1NGRjNTE3MzI4NzA5YzIwNGE5Y2JmN2EyNTNkOWY4ZTZjNGIyNmVjCkF1dGhvcjogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CkRhdGU6CVN1biBGZWIgOCAwMDo1OTo0MyAyMDA5ICswMzAwCgogICAgbXgzMTogYWRkIEdQSU8gcmVnaXN0ZXJzIGRlZmluaXRpb25zCgogICAgQWRkZWQgZGVmaW5pdGlvbnMgZm9yIGkuTVgzMSBwcm9jZXNzb3IgR1BJTyByZWdpc3RlcnMuCgogICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Cgpjb21taXQgOGRhNjAxMjgwYThhY2JjMzM4NTc4NDc4MGVkMzUxMzBlNTM4MTJmMQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVdlZCBGZWIgNCAxMzo0NzoyMiAyMDA5IC0wNjAwCgogICAgTkFORDogQWRkIHRpbWVvdXQgZm9yIHJlc2V0IGNvbW1hbmQKCiAgICBXaXRob3V0IHRoZSB0aW1lb3V0IHByZXNlbnQgYW4gaW5maW5pdGUgbG9vcCBjYW4gb2NjdXIgaWYgdGhlCiAgICBOQU5EIGRldmljZSBpcyBicm9rZW4gb3Igbm90IHByZXNlbnQuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDEwZGM2YTliZWY3M2Q3ZDRjYjI1YjNmZGUyN2VlOTFmODQ4NGIxMjYKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglXZWQgRmViIDQgMTM6Mzk6NDAgMjAwOSAtMDYwMAoKICAgIE5BTkQ6IFNpbGVuY2Ugd2FybmluZyB3aGVuIENPTkZJR19TWVNfTkFORF9RVUlFVF9URVNUCgogICAgQ29tbWl0IGNmYTQ2MGFkZmRlZmNjMzBkMTA0ZTFhOWVlNDQ5OTRlZTM0OWJiN2IgcmVtb3ZlZCBzdXBwb3J0CiAgICBmb3IgZGlzYWJsaW5nIHRoZSAiTm8gTkFORCBkZXZpY2UgZm91bmQhISEiIHdhcm5pbmcgd2hlbgogICAgQ09ORklHX1NZU19OQU5EX1FVSUVUX1RFU1Qgd2FzIGRlZmluZWQuICBUaGlzIHJlLWFkZHMgc3VwcG9ydAogICAgZm9yIHNpbGVuY2luZyB0aGUgd2FybmluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYWQwOWFiMmUzYWMyOGYzMDQzNzJlY2ViNGE1Y2I0ZDI0ZTEwMmExMwpBdXRob3I6IFZhbGVyaXkgR2x1c2hrb3YgPGd2dkBsc3RlYy5jb20+CkRhdGU6CU1vbiBKYW4gMTkgMTY6MzI6NTkgMjAwOSArMDIwMAoKICAgIE5BTkQ6IEZpeGVkIGludmFsaWQgcG9pbnRlcnMgdG8gc3RhdGljIHJlbG9jYXRlZCBjaGlwIG5hbWVzCgogICAgRGVhciBXb2xmZ2FuZywKCiAgICBZb3UgYXJlIHJpZ2h0LCB0aGUgcGF0Y2ggd2FzIHVnbHkuCiAgICBUaGUgbmV3IG9uZSBzZWVtcyB0byBiZSBiZXR0ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogVmFsZXJpeSBHbHVzaGtvdiA8Z3Z2QGxzdGVjLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGU3ZGVlYzFiZjZmYTNiM2EyMWNkOGQxNGZlMmE5MDlhNDJlZmM5ZDgKQXV0aG9yOiBOaXNoYW50aCBNZW5vbiA8bm1AdGkuY29tPgpEYXRlOglNb24gRmViIDIgMTg6MjA6MTIgMjAwOSAtMDYwMAoKICAgIEFSTTpPTUFQMzpab29tMTogQWRkIG5hbmQgdW5sb2NrIG9wdGlvbgoKICAgIEVuYWJsZSBOQU5EX1VOTE9DSyBvcHRpb24gZm9yIHVubG9ja2luZyBuYW5kIGZvcgogICAgZXJhc2Uvd3JpdGUgb3BlcmF0aW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IE5pc2hhbnRoIE1lbm9uIDxubUB0aS5jb20+Cgpjb21taXQgNWE5NDI3ZGM5Yjg0Mzg3NTlkYjNmNjdhMWU1NDcwNjJmNzZlYjE4ZApBdXRob3I6IGRlcmVrQHNpY29uaXguY29tIDxkZXJla0BzaWNvbml4LmNvbT4KRGF0ZToJTW9uIEphbiAyNiAxNDowODoxNyAyMDA5IC0wNzAwCgogICAgZW52X25hbmQ6IGZpeCBlbnYgbWVtb3J5IHJlbGVhc2UKCiAgICBUaGlzIGZpeGVzIGEgYnVnIHRoYXQgdG1wIGVudmlyb25tZW50IG1lbW9yeSBub3QgYmVpbmcgcmVsZWFzZWQuCgogICAgU2lnbmVkLW9mZi1ieTogRGVyZWsgT3UgPGRvdUBzaWNvbml4LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDA1ZmQ4ODc3NjQxOWRmNTllN2YzN2JhYzA2M2EyMDk0MDlkZDgwMWQKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CkRhdGU6CUZyaSBGZWIgNiAxMDozNzo0NSAyMDA5ICswMTAwCgogICAgQVJNOiByZW1vdmUgdW51c2VkIHZhcmlhYmxlCgogICAgVGhlICJzaXplIiB2YXJpYWJsZSBpbiBzdGFydF9hcm1ib290KCkgaW4gbGliX2FybS9ib2FyZC5jIGlzIG9ubHkgcmVhbGx5CiAgICB1c2VkIGluICIjaWZuZGVmIENPTkZJR19TWVNfTk9fRkxBU0giIGNhc2UsIGFuZCBldmVuIHRoZXJlIGl0IGNhbiBiZQogICAgZWxpbWluYXRlZCAodGhhbmtzIHRvIEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIGZvciBhIHN1Z2dlc3Rpb24uKQoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCA2OTg5ZTRmNTQ2ZDk2MGE0MDdkZDU0MjVmODAwZGZmOTc1MWM4MTMyCkF1dGhvcjogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KRGF0ZToJVGh1IEZlYiA1IDA5OjMzOjUwIDIwMDkgLTA1MDAKCiAgICBDb2xkZmlyZTogTTUyN3g6IEFkZCBtaXNzaW5nIEdQSU8gcmVnaXN0ZXIgYWRkcmVzcyBkZWZpbmVzCgogICAgQWRkIG1pc3NpbmcgR1BJTyByZWdpc3RlcnMgYWRkcmVzcyBkZWZpbml0aW9uIGZvciBDb2xkZmlyZSBNNTI3MS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgoKY29tbWl0IGM0ZmY3N2Y1ZTZjM2EwMTYxMGNlOTc0MzRjMGQ1OWFjYjE0NzZmOTUKQXV0aG9yOiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgpEYXRlOglGcmkgSmFuIDIzIDE0OjQyOjU4IDIwMDkgLTA1MDAKCiAgICBDb2xkZmlyZTogbWNmbWlpOiBBbGxvdyBub24tYXV0b25lZ290aWF0aW5nIFBIWXMgdG8gdXNlIG1paSBjb21tYW5kCgogICAgTW9kaWZpZWQgbWlpX2luaXQgdG8gc3VwcG9ydCBib2FyZHMgd2l0aCBQSFlzIHRoYXQgYXJlIG5vdCBzZXQgdG8KICAgIGF1dG9uZWdvdGlhdGUsIGJ1dCBzdGlsbCB3YW50IHRvIHVzZSB1LWJvb3QncyBtaWkgY29tbWFuZHMgdG8gcHJvYmUKICAgIHRoZSBzbWkgYnVzLiBTdWNoIFBIWXMgd2lsbCBub3Qgc2V0IHRoZSBBdXRvbmVnb3RpYXRlLWRvbmUgYml0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+Cgpjb21taXQgOTJkM2U2ZTBmZmNiYjcyMjRjODMxMDRmOGQ4N2I1YjRiZjM5YTM4ZgpBdXRob3I6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+CkRhdGU6CUZyaSBKYW4gMjMgMTE6NDQ6MzAgMjAwOSAtMDUwMAoKICAgIENvbGRmaXJlOiBBcHBsaWVkIGJhdWRyYXRlIGZvcm11bGEgb2Ygc2VyaWFsX2luaXQgdG8gc2VyaWFsX3NldGJyZwoKICAgIEFwcGxpZWQgdGhlIHBhdGNoIGZvciBiYXVkcmF0ZSBkaXZpZGVyIHZhbHVlIHRydW5jYXRpb24gZm9yCiAgICBzZXJpYWxfaW5pdCB0byBzZXJpYWxfc2V0YnJnIGFzIHdlbGwuCgogICAgU2lnbmVkLW9mZi1ieTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KCmNvbW1pdCA4NzA2ZWYzNzhmMmRiMWVmNjViOWMyZjkwOTU2MWYyM2UzZGMyMTQ4CkF1dGhvcjogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KRGF0ZToJRnJpIEphbiAyMyAxNDowNzowNSAyMDA5IC0wNTAwCgogICAgQ29sZGZpcmU6IE01MjcxRVZCOiBCb2FyZCBoZWFkZXIgdXBkYXRlIChkZXBlbmRlbmNpZXMpCgogICAgQ2xlYW51cCBmb3IgTTUyNzFFVkI6CiAgICBBZGRlZCBjbGFyaWZpY2F0aW9uIG9uIHRoZSB1c2Ugb2YgQ09ORklHX1NZU19DTE9DSy4KICAgIE1vZGlmaWVkIHRvIHVzZSB1LWJvb3QncyBIVVNIIHBhcnNlci4KICAgIENsZWFudXAgb24gZW52aXJvbm1lbnQgc2V0dGluZ3MuCiAgICBSZW1vdmVkIGNvbXBpbGVyIHdhcm5pbmcgYnkgZGVmaW5pbmcgQ09ORklHX1NZU19DUzBfKgoKICAgIERlcGVuZGVuY2llczoKICAgIEFkZGVkIHRoZSB1c2Ugb2YgQ09ORklHX1NZU19NQ0ZfU1lOQ1IgZm9yIGNsb2NrIG11bHRpcGxpZXIuCiAgICBUaGlzIGRlcGVuZHMgb24gYSBwYXRjaCB0byBpbmNsdWRlL2FzbS1tNjhrL201MjcxLmgKICAgIHRoYXQgZGVmaW5lcyB0aGUgbXVsdGlwbGllciBhbmQgZGl2aWRlciByYXRpb3MuCgogICAgUmVtb3ZlZCB0aGUgZGVmaW5pdGlvbiBvZiBDT05GSUdfU1lTX0ZFQ0kyQy4KICAgIFRoaXMgZGVwZW5kcyBvbiBhIHBhdGNoIHRoYXQgcmVtb3ZlcyB0aGUgdXNlIG9mIGl0IGluCiAgICBjcHUvbWNmNTJ4Mi9jcHVfaW5pdC5jCgogICAgU2lnbmVkLW9mZi1ieTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KCmNvbW1pdCBlMGRiMzQ0ZmFiZmViNGY5NjQ5ODQ2Zjk0ODM4ZjUxMTcyZjZhMWY2CkF1dGhvcjogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KRGF0ZToJVGh1IEphbiAyOSAxNDozNjowNiAyMDA5IC0wNTAwCgogICAgQ29sZGZpcmU6IE01MjcxOiBBbGxvdyBib2FyZCBoZWFkZXIgZmlsZSB0byBzcGVjaWZ5IGNsb2NrIG11bHRpcGxpZXIKCiAgICBNNTI3MSBkeW5hbWljIGNsb2NrIG11bHRpcGxpZXIuIEl0IGlzIGN1cnJlbnRseSBmaXhlZCBhdCAxMDBNSHouCgogICAgQWxsb3cgdGhlIGJvYXJkIGhlYWRlciBmaWxlIHRvIHNldCB0aGVpciBvd24gbXVsdGlwbGllciBhbmQgZGl2aWRlci4KICAgIEFkZGVkIHRoZSAjZGVmaW5lIGZvciB0aGUgbXVsdGlwbGllciBhbmQgZGl2aWRlciB0byB0aGUgY3B1IGhlYWRlciBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+Cgpjb21taXQgZDFlZjI1ZGQ4MWM3OWRjZmFkNWMyZmYwMTYyYjFiZWEyMWQwNGJjMwpBdXRob3I6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+CkRhdGU6CUZyaSBKYW4gMjMgMTA6NDc6MTMgMjAwOSAtMDUwMAoKICAgIENvbGRmaXJlOiBNNTI3MUVWQjogUmVtb3ZlIHVzYWdlIG9mIENPTkZJR19TWVNfRkVDSTJDCgogICAgRGlzY29udGludWUgdGhlIHVzZSBvZiBDT05GSUdfU1lTX0ZFQ0kyQyAob25seSB1c2VkIGJ5IE01MjcxRVZCKS4KICAgIFVzZSByZWFkLW1vZGlmeS13cml0ZSB0byBhY3RpdmF0ZSB0aGUgRkVDIHBpbnMgd2l0aG91dCBkaXNhYmxpbmcgSTJDLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+Cgpjb21taXQgZWU3M2NjNTlhYjkwNDk3NmFmM2MzM2I0NTRmYzg0Zjc4NjE4YjJkMQpBdXRob3I6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+CkRhdGU6CUZyaSBKYW4gMjMgMDk6NDU6MzQgMjAwOSAtMDUwMAoKICAgIENvbGRmaXJlOiBjbWRfYmRpbmZvIGNsZWFudXAKCiAgICBDT05GSUdfTTY4SyBiZGluZm8gY2xlYW51cDoKCiAgICBGaXhlZCBjb21waWxlciB3YXJuaW5nIGFib3V0IGJhdWRyYXRlIHByaW50aW5nLgogICAgZm9ybWF0ICclZCcgZXhwZWN0cyB0eXBlICdpbnQnLCBidXQgYXJndW1lbnQgMiBoYXMgdHlwZSAnbG9uZyB1bnNpZ25lZCBpbnQnLgoKICAgIEFkZGVkIHByaW50aW5nIG9mICJjcHVmcmVxIgoKICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+Cgpjb21taXQgNGZmYzM5MDUwYWE0NmVkOGEzZDI5NzMyMjkzZGZmNzY5ZTU0ZmZmYQpBdXRob3I6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+CkRhdGU6CUZyaSBKYW4gMjMgMDk6Mjc6MDAgMjAwOSAtMDUwMAoKICAgIENvbGRmaXJlOiBGaXggaGFsZi1iYXVkIFVBUlQgYnkgYWRkaW5nIE01MjcxIHRvIENvbGRmaXJlIHYyIGNvcmUgbGlzdAoKICAgIEFkZGVkIHRoZSBDT05GSUdfTTUyNzEgdG8gdGhlIGxpc3Qgb2YgQ29sZGZpcmUgVjIgcHJvY2Vzc29yLiBUaGlzCiAgICB3YXMgY2F1c2luZyB0aGUgYnVzIGNsb2NrIChub3QgQ1BVIGNsb2NrKSB0byBiZSBkZWNsYXJlZCB0d2ljZSBhcwogICAgZmFzdCBhcyBpdCBhY3R1YWxseSBpcy4gVGhpcyBjYXVzZXMgVUFSVFMgdG8gb3BlcmF0ZSBhdCBoYWxmIHRoZQogICAgc3BlY2lmaWVkIGJhdWRyYXRlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+Cgpjb21taXQgNTlkMWJkYTdmOTJjOGEyOGMzYWJhOTRlNDgwNjM3NDlkNDI1OTQ5ZgpBdXRob3I6IERpcmsgRWliYWNoIDxlaWJhY2hAZ2RzeXMuZGU+CkRhdGU6CVR1ZSBGZWIgMyAxNToxNToyMSAyMDA5ICswMTAwCgogICAgcHBjNHh4OiBNYWtlIFBDSUUgc3VwcG9ydCBzZWxlY3RhYmxlCgogICAgT24gc29tZSBwbGF0Zm9ybXMgUENJRSBzdXBwb3J0IGlzIG5vdCByZXF1aXJlZCwgYnV0IHdvdWxkIGJlIGluY2x1ZGVkCiAgICBiZWNhdXNlIHRoZSBjcHUgc3VwcG9ydHMgaXQuIFRvIHJlZHVjZSBmb29wcmludCBpdCBpcyBub3cgY29uZmlndXJhYmxlCiAgICB2aWEgQ09ORklHX1BDSV9ESVNBQkxFX1BDSUUuCgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBiMTI5ZWZmNWVkZTM5NGNjMWZhZWI2ZGJmNmE5ODdlOTFhYmNlNTUyCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVR1ZSBGZWIgMyAyMjoxMzoxNiAyMDA5ICswMTAwCgogICAgcHBjNHh4OiBPbmx5IGZpeHVwIG9wYiBhdHRhY2hlZCBVQVJUcwoKICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyB0aGUgZmR0IFVBUlQgY2xvY2sgZml4dXAgY29kZSB0bwogICAgb25seSB0b3VjaCBDUFUgaW50ZXJuYWwgVUFSVHMgb24gNHh4IHN5c3RlbXMuCiAgICBPbmx5IHRoZXNlIFVBUlRzIGFyZSBkZWZpbml0ZWx5IGNsb2NrZWQgYnkgZ2QtPnVhcnRfY2xrLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDRiN2UzZDA0NWNjODJmN2Y3YjZmM2ExOWI1NGE4MTRkYTM2YWM1MmMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVR1ZSBKYW4gMTMgMTE6MDA6MjkgMjAwOSAtMDUwMAoKICAgIEJsYWNrZmluOiBtb3ZlIGRlZmF1bHQgYm9vdCBTUEkgQ1MgdG8gY29tbW9uIGNvZGUKCiAgICBNb3ZlIHRoZSBkZWZhdWx0IFNQSSBDUyB0aGF0IHdlIGJvb3QgZnJvbSBpbnRvIGNvbW1vbiBjb2RlIHNvIHRoYXQgaXQgY2FuCiAgICBiZSB1c2VkIGluIG90aGVyIFNQSSBkcml2ZXJzIGFuZCBlbnZpcm9ubWVudCBzZXR0aW5ncy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZjc5MGVmNmZmMTIzODFjYjBlNDNkZTU0ZmIyYjBmMTIwNGFkOGVkNgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIERlYyAxMCAxMjozMzo1NCAyMDA4IC0wNTAwCgogICAgQmxhY2tmaW46IGR5bmFtaWNhbGx5IHVwZGF0ZSBVQVJUIHNwZWVkIHdoZW4gaW5pdGlhbGl6aW5nCgogICAgUHJldmlvdXNseSwgYm9vdGluZyBvdmVyIHRoZSBVQVJUIHJlcXVpcmVkIHRoZSBiYXVkIHJhdGUgdG8gYmUga25vd24gYWhlYWQKICAgIG9mIHRpbWUuICBVc2luZyBhIGJpdCBvZiB0cmlja3kgc2ltcGxlIG1hdGgsIHdlIGNhbiBjYWxjdWxhdGUgdGhlIG5ldyBib2FyZAogICAgcmF0ZSBiYXNlZCBvbiB0aGUgb2xkIGRpdmlzb3JzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IFJvYmluIEdldHogPHJnZXR6QGJsYWNrZmluLnVjbGludXgub3JnPgoKY29tbWl0IDk3ZjI2NWYxNGYyMzA1MGYzY2I5OTdmNjE3ZjNhNjkxN2I4NDNlYTIKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVR1ZSBEZWMgOSAxNzoyMTowOCAyMDA4IC0wNTAwCgogICAgQmxhY2tmaW46IGFkZCBzdXBwb3J0IGZvciBmYXN0IFNQSSByZWFkcyB3aXRoIEJvb3QgUk9NCgogICAgTmV3ZXIgQmxhY2tmaW4gYm9vdCByb21zIHN1cHBvcnQgdXNpbmcgdGhlIGZhc3QgU1BJIHJlYWQgY29tbWFuZCByYXRoZXIgdGhhbgogICAganVzdCB0aGUgc2xvdyBvbmUuCUlmIHRoZSBmdW5jdGlvbmFsaXR5IGlzIGF2YWlsYWJsZSwgdGhlbiB1c2UgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDY3NjE5OTgyYmZjNWNkNjI3MTBhNDhlM2NiZmZjMzA0Y2I3OGMzNDEKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBPY3QgMTEgMjE6NDY6NTIgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBjaGVjayBmb3IgcmVzZXJ2ZWQgc2V0dGluZ3MgaW4gRERSIE1NUnMKCiAgICBTb21lIGJpdHMgb2YgdGhlIEREUiBNTVJzIHNob3VsZCBub3QgYmUgc2V0LiAgSWYgdGhleSBkbywgYmFkIHRoaW5ncyBtYXkKICAgIGhhcHBlbiAobGlrZSByYW5kb20gZmFpbHVyZXMgb3IgaGFyZHdhcmUgZGVzdHJ1Y3Rpb24pLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA2MjJhOGRjMDk1OGRkNTk5NzQzMzQ4ZWE5NGViMTBiOWQwYmU4YWU2CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgT2N0IDExIDIxOjU0OjAwIDIwMDggLTA0MDAKCiAgICBCbGFja2Zpbjogc2V0IGRlZmF1bHQgdm9sdGFnZSBsZXZlbHMgZm9yIEJGNTM4L0JGNTM5IHBhcnRzCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDA5ZGM2YjBiYmQxZDVlMzljZGRkZWViYzA1OWY5YTc1NjMwZTRmNmYKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVN1biBKdW4gMSAwMToyOTo1NyAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IHVzZSBvbi1jaGlwIHN5c2NvbnRyb2woKSByb20gZnVuY3Rpb24gd2hlbiBhdmFpbGFibGUKCiAgICBOZXdlciBCbGFja2ZpbidzIGhhdmUgYW4gb24tY2hpcCByb20gd2l0aCBhIHN5c2NvbnRyb2woKSBmdW5jdGlvbiB0aGF0IG5lZWRzCiAgICB0byBiZSB1c2VkIHRvIHByb3Blcmx5IHByb2dyYW0gdGhlIG1lbW9yeSBhbmQgdm9sdGFnZSBzZXR0aW5ncyBhcyBpdCB3aWxsCiAgICBpbmNsdWRlIChwb3NzaWJseSBjcml0aWNhbCkgZmFjdG9yeSB0ZXN0ZWQgYmlhcyB2YWx1ZXMuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGUxZmI2ZDBkNTJmYmUzZmJjMWE0YzY1MWRhY2YxMWU5YzE0MTdmNjMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBGZWIgNSAxMTo0NDo1MiAyMDA5ICswMTAwCgogICAgY2ZpX2ZsYXNoOiBGaXggdHlwbyBpbiBjZmlfZmxhc2guYwoKICAgIFBhdGNoICJmbGFzaC9jZmlfZmxhc2g6IFVzZSB2aXJ0dWFsIHNlY3RvciBzdGFydCBhZGRyZXNzLCBub3QgcGh5cyIKICAgIGludHJvZHVjZWQgYSBzbWFsbCB0eXBvIGFuZCBjb21waWxhdGlvbiB3YXJuaW5nIGZvciBzeXN0ZW1zIHdpdGggQ0ZJCiAgICBsZWdhY3kgc3VwcG9ydCAoZS5nLiBoY3U0KS4gVGhpcyBwYXRjaCBmaXhlcyBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMjg3NDVkYjk2OWI3MjY5Mzc1NDk5MWM4MzhmNjhhN2ZiNGE4YjFhYgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEphbiAyOSAxMToyMTozOCAyMDA5ICswMTAwCgogICAgamVkZWNfZmxhc2g6IE9ubHkgdXNlIG1hbnVmYWN0dXJlciBkZWZpbmVzIGZyb20gY29tbW9uIGZsYXNoLmgKCiAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGRvdWJsZSBkZWZpbmVkIG1hbnVmYWN0dXJlciBkZWZpbmVzIGZyb20KICAgIGplZGVjX2ZsYXNoLmMuIFNpbmNlIHRoZSBjb21tb24gZGVmaW5lcyBpbiBmbGFzaC5oIGFyZSAzMmJpdAogICAgd2Ugbm93IG5lZWQgdGhlICgxNikgY2FzdC4gVGhpcyBwYXRjaCBhbHNvIHJlbW92ZXMgdGhlIGNvbXBpbGF0aW9uCiAgICB3YXJuaW5nIChlLmcuIHNlZW4gb24gaGN1NSk6CgogICAgLi9NQUtFQUxMIGhjdTUKICAgIENvbmZpZ3VyaW5nIGZvciBoY3U1IGJvYXJkLi4uCiAgICBqZWRlY19mbGFzaC5jOjIxOTogd2FybmluZzogbGFyZ2UgaW50ZWdlciBpbXBsaWNpdGx5IHRydW5jYXRlZCB0byB1bnNpZ25lZCB0eXBlCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGVjMjFkNWNmY2I2YjRlN2ZjZGQ1YzZlOTI2ZTFhODI0OTAwNzA2ZjIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBGZWIgNSAxMToyNTo1NyAyMDA5ICswMTAwCgogICAgY2ZpX2ZsYXNoOiBTaWxlbmNlIGNvbXBpbGF0aW9uIHdhcm5pbmcKCiAgICBQYXRjaCAiZmxhc2gvY2ZpX2ZsYXNoOiBVc2UgdmlydHVhbCBzZWN0b3Igc3RhcnQgYWRkcmVzcywgbm90IHBoeXMiCiAgICBpbnRyb2R1Y2VkIGEgc21hbGwgY29tcGlsYXRpb24gd2FybmluZy4gVGhpcyBwYXRjaCBmaXhlcyBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDljZTk5MjFhN2Q4YjFjZTc2NDY1NmIxNGI0MjIxN2JiZjRmYWEzOApBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIEZlYiAyIDE2OjM0OjUxIDIwMDkgLTA2MDAKCiAgICBmbGFzaC9jZmlfZmxhc2g6IFVzZSB2aXJ0dWFsIHNlY3RvciBzdGFydCBhZGRyZXNzLCBub3QgcGh5cwoKICAgIGluY2x1ZGUvZmxhc2guaCB3YXMgY29tbWVudGVkIHRvIHNheSB0aGF0IHRoZSBhZGRyZXNzIGluCiAgICBmbGFzaF9pbmZvLT5zdGFydCB3YXMgYSBwaHlzaWNhbCBhZGRyZXNzLiAgSG93ZXZlciwgZnJvbSB1LWJvb3QncwogICAgcG9pbnQgb2YgdmlldywgYW5kIGxvb2tpbmcgYXQgbW9zdCBmbGFzaCBjb2RlLCBpdCBtYWtlcyBtb3JlCiAgICBzZW5zZSBmb3IgdGhpcyB0byBiZSBhIHZpcnR1YWwgYWRkcmVzcy4gIFNvIEkgY29ycmVjdGVkIHRoZQogICAgY29tbWVudCB0byBpbmRpY2F0ZSB0aGF0IHRoaXMgd2FzIGEgdmlydHVhbCBhZGRyZXNzLgoKICAgIFRoZSBvbmx5IGZsYXNoIGRyaXZlciB0aGF0IHdhcyBhY3R1YWxseSB0cmVhdGluZyB0aGUgYWRkcmVzcwogICAgYXMgcGh5c2ljYWwgd2FzIHRoZSBtdGQvY2ZpX2ZsYXNoIGRyaXZlci4gIEhvd2V2ZXIsIHRoaXMgY29kZQogICAgd2FzIHVzaW5nIGl0IGluY29uc2lzdGVudGx5IGFzIGl0IGFjdHVhbGx5IGRpcmVjdGx5IGRlcmVmZXJlbmNlZAogICAgdGhlICJzdGFydCIgZWxlbWVudCwgd2hpbGUgaXQgdXNlZCBtYXBfcGh5c21lbSB0byBnZXQgYQogICAgdmlydHVhbCBhZGRyZXNzIGluIG90aGVyIHBsYWNlcy4gIEkgY2hhbmdlZCB0aGlzIGRyaXZlciBzbwogICAgdGhhdCB0aGUgY29kZSB3aGljaCBpbml0aWFsaXplcyB0aGUgaW5mby0+c3RhcnQgZmllbGQgY2FsbHMKICAgIG1hcF9waHlzbWVtIHRvIGdldCBhIHZpcnR1YWwgYWRkcmVzcywgZWxpbWluYXRpbmcgdGhlIG5lZWQgZm9yCiAgICBmdXJ0aGVyIG1hcF9waHlzbWVtIGNhbGxzLglUaGUgY29kZSBpcyBub3cgY29uc2lzdGVudC4KCiAgICBUaGUgKm9ubHkqIHBsYWNlIGEgcGh5c2ljYWwgYWRkcmVzcyBzaG91bGQgYmUgdXNlZCBpcyB3aGVuIGRlZmluaW5nIHRoZQogICAgZmxhc2ggYmFua3MgbGlzdCB0aGF0IGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgZmxhc2hfaW5mbyBzdHJ1Y3QsCiAgICB1c3VhbGx5IGZvdW5kIGluIHRoZSBib2FyZCBjb25maWcgZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNjU3ZjIwNjJkOGUxN2ViZjRhNTVmNTJjOWU3MWMwN2MwYzk0Yzc3OQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBGZWIgNCAwOTo0MjoyMCAyMDA5ICswMTAwCgogICAgRml4IGNvbXBpbGVyIHdhcm5pbmcKCiAgICAoc2hvd3MgdXAgb25seSB3aGVuIERFQlVHIGlzIGVuYWJsZWQpCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0NzgzMmNkMTVhZTAyZmI2ZmRlOGViZWQ1YjI3MmY4NTc3NWYyY2ViCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gT2N0IDYgMDM6NDU6NTUgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiB1cGRhdGUgYW5vbWFseSBsaXN0cwoKICAgIFVwZGF0ZSB0aGUgYW5vbWFseSBsaXN0cyB0byBtYXRjaCBsYXRlc3QgYW5vbWFseSBzaGVldHMuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDcwYTRkYTQ1ZTE2YjcyZThlNWIwYmFhZWNkYWVlOWJlODYxOTY0N2QKQXV0aG9yOiBSYWxwaCBLb25kemllbGxhIDxya0Bhcmdvcy1tZXNzdGVjaG5pay5kZT4KRGF0ZToJTW9uIEphbiAyNiAxMjozNDozNiAyMDA5IC0wNzAwCgogICAgQURTNTEyMSBBZGQgUEFUQSBzdXBwb3J0CgogICAgT3JpZ2luYWwgcGF0Y2ggZnJvbSBSYWxwaCBLb25kemllbGxhCiAgICBwbHVzIGNsZWFuIHVwIGJ5IFdvbGZnYW5nIERlbmsKICAgIHBsdXMgY2hhbmdlcyBieSBKb2huIFJpZ2J5Cgl1c2UgaXBzIGNsb2NrIG5vdCBscGMKCXBvcnQgZm9yd2FyZCB0byBjdXJyZW50IHUtYm9vdCByZWxlYXNlCgogICAgU2lnbmVkLW9mZi1ieTogUmFscGggS29uZHppZWxsYSA8cmtAYXJnb3MtbWVzc3RlY2huaWsuZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYWJmYmQwYWU0OTY3ZGYxODEwMjM0NWRiNGY0YjUyOWExM2RhMTA3YgpBdXRob3I6IE1hcnRoYSBNYXJ4IDxtbWFyeEBzaWxpY29udGt4LmNvbT4KRGF0ZToJTW9uIEphbiAyNiAxMDo0NTowNyAyMDA5IC0wNzAwCgogICAgQURTNTEyMSBBZGQgSUMgSWRlbnQgTW9kdWxlIChJSU0pIHN1cHBvcnQKCiAgICBJSU0gKElDIElkZW50aWZpY2F0aW9uIE1vZHVsZSkgaXMgdGhlIGZ1c2Vib3ggZm9yIHRoZSBtcGM1MTIxLgogICAgVXNlICNkZWZpbmUgQ09ORklHX0lJTSB0byB0dXJuIG9uIHRoZSBjbG9jayBmb3IgdGhpcyBtb2R1bGUKICAgIHVzZSAjZGVmaW5lIENPTkZJR19DTURfRlVTRSB0byBhZGQgZnVzZWJveCBjb21tYW5kcy4KICAgIEZ1c2Vib3ggY29tbWFuZHMgaW5jbHVkZSB0aGUgYWJpbGl0eSB0byByZWFkCiAgICB0aGUgc3RhdHVzLCByZWFkIHRoZSByZWdpc3RlciBjYWNoZSwgb3ZlcnJpZGUgdGhlIHJlZ2lzdGVyIGNhY2hlLAogICAgcHJvZ3JhbSB0aGUgZnVzZXMgYW5kIHNlbnNlIHRoZW0uCgogICAgU2lnbmVkLW9mZi1ieTogTWFydGhhIE1hcnggPG1tYXJ4QHNpbGljb250a3guY29tPgogICAgU2lnbmVkLW9mZi1ieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTRkMTljZDFiY2U5YTI0YjEzMzU1OThmMTU2ODE0MGY0OTUwZTRkOQpBdXRob3I6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSmFuIDIzIDEwOjMzOjE1IDIwMDkgLTA3MDAKCiAgICBBRFM1MTIxIEZpeCByZXYyIHNpbGljb24gcGNpIGlvcGFkIGNvbmZpZwoKICAgIFJlc2V0IGNvbmZpZyBpcyBub3QgY29ycmVjdAoKICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRjMTU0MjUyYzQ4MGIxM2Y2OWNlMWI3MWE5NTMwYjA1MTVkYTc2YTYKQXV0aG9yOiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE5vdiAxOSAxMzo1NzozNCAyMDA4IC0wNzAwCgogICAgQURTNTEyMSBESVUgQWRkIGRpdV9ibXBfYWRkciBlbnYKCiAgICBBZGQgc3VwcG9ydCBmb3IgdXNpbmcgYSBibXAgb3RoZXIgdGhhbgogICAgRlNMX0xvZ29fQk1QIGZvciB0aGUgRElVIHNwbGFzaCBzY3JlZW4uCgogICAgQ2FuIG5vdyBzZXQgdGhlIGVudiB2YXIgImRpdV9ibXBfYWRkciIgdG8KICAgIHRoZSBhZGRyZXNzIG9mIGEgQk1QIGluIGZsYXNoIHRvIHVzZSBpbnN0ZWFkCiAgICBvZiB0aGUgZGVmYXVsdCBGU0xfTG9nb19CTVAuCgogICAgU2lnbmVkLW9mZi1ieTogTWFydGhhIE1hcnggPG1tYXJ4QHNpbGljb250a3guY29tPgogICAgU2lnbmVkLW9mZi1ieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTJjMjBmYmQzYTc3ODhjMWExNTRmNTBhM2Y0NGYyOGE3NzYzZjk5YQpBdXRob3I6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgT2N0IDMwIDE2OjM5OjM1IDIwMDggLTA2MDAKCiAgICBBRFM1MTIxIERJVSBNYWtlIGluY2x1c2lvbiBvZiBGU0wgbG9nbyBvcHRpb25hbAoKICAgIE1ha2UgaW5jbHVzaW9uIG9mIEZTTCBsb2dvIG9wdGlvbmFsIGFuZAogICAgdHVybiBpdCBvZmYgYnkgZGVmYXVsdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiZDk5ZWMxNDlhYmU5NGU3ZjZiMmJkYTQ3NjZkNzAxYjQwMDUwNTNmCkF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CkRhdGU6CVN1biBGZWIgMSAxMjoyNzo1MyAyMDA5ICswMTAwCgogICAgQ29tcGlsZSB3YXJuaW5nIGZpeCBpbiBvbmVuYW5kX3Vib290LmgKCiAgICBSZWdyZXNzaW9uIHNpbmNlIG1lcmdlIHdpbmRvdyBhZnRlciAyMDA5LjAxCgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgYTI3MGQxZTcyOTVjM2Q4MjlmNDJjMDQ4MDExNzk0MWRmYzFjNjQ3NwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEphbiAyOSAwNjozMzo1NSAyMDA5ICswMTAwCgogICAgVVNCOiBBZGQgRUhDSSBzdXBwb3J0IGZvciBWQ1QgRUhDSSBjb250cm9sbGVyIChyZWFsbHkgd2l0aCBkcml2ZXIgbm93KQoKICAgIFNvbWVob3cgSSBtaXNzZWQgdGhlIHJlYWwgZHJpdmVyIHBhcnQgaW4gbXkgbGFzdCBwYXRjaCB2ZXJzaW9uLiBUaGlzIHBhdGNoCiAgICBub3cgYWRkcyB0aGUgZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IDcxNmViZjQzNmM5ZTQzZGY2NzQwZTAxNzJmNmIyYTgxZGRiZjFiOGUKQXV0aG9yOiBDbGlmZiBDYWkgPGNsaWZmLmNhaUBhbmFsb2cuY29tPgpEYXRlOglTYXQgTm92IDI5IDE4OjIyOjM4IDIwMDggLTA1MDAKCiAgICBCbGFja2ZpbjogYWRkIGRyaXZlciBmb3Igb24tY2hpcCBNTUMvU0QgY29udHJvbGxlcgoKICAgIFRoaXMgaXMgYSBwb3J0IG9mIHRoZSBMaW51eCBCbGFja2ZpbiBvbi1jaGlwIFNESCBkcml2ZXIgdG8gVS1Cb290LgoKICAgIFNpZ25lZC1vZmYtYnk6IENsaWZmIENhaSA8Y2xpZmYuY2FpQGFuYWxvZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNmU4N2VhMGNhOTUxNDY1ZWJhMTQ0YWIyZTZkYmE2ZmI1MDc3MzdhMgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IE9jdCAxMSAyMjo0NzozNCAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGFkZCBwb3J0IG11eGluZyBmb3IgQkY1MXggU1BJCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGZjNjhmOWY4NTk1OTY2NGQ1MjhkYWVhMmFlZjVlZjU0OTc0MzMxY2UKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVR1ZSBKYW4gNiAwNjoxNjoxOSAyMDA5IC0wNTAwCgogICAgQmxhY2tmaW46IG91dHB1dCBib290aW5nIHNvdXJjZSB3aGVuIGJvb3RpbmcKCiAgICBLbm93aW5nIHRoZSBib290aW5nIHNvdXJjZSBvZiB0aGUgcGFydCBpcyB1c2VmdWwsIGVzcGVjaWFsbHkgd2hlbiB0aGUgcGFydAogICAgY2FuIHN3aXRjaCBkeW5hbWljYWxseSBiZXR3ZWVuIHNvdXJjZXMuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDhkZjNjZTBmNDljMzc5NDc4MDBhYzdjODRlNzUxNDk5ODgyNjE5ZmMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBEZWMgMTEgMDY6MzA6NDYgMjAwOCAtMDUwMAoKICAgIEJsYWNrZmluOiBzZXQgZGVmYXVsdCBDT05GSUdfRU5WX1NQSV9DUyBiYXNlZCBvbiBib290cm9tCgogICAgU2V0IHRoZSBkZWZhdWx0IENPTkZJR19FTlZfU1BJX0NTIHZhbHVlIHRvIG1hdGNoIHRoZSBTUEkgQ1MgdGhhdCBpcyB1c2VkIGJ5CiAgICB0aGUgQmxhY2tmaW4gb24tY2hpcCBib290cm9tIHRvIGJvb3Qgb3V0IG9mIFNQSSBmbGFzaC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMmI0YTQ4NmU2ZmFjNTAyZDhiODgzZTM0NGNjNDAxMjI4Mzk0NWIzZApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IERlYyAxMSAwNDowNjoyNiAyMDA4IC0wNTAwCgogICAgQmxhY2tmaW46IHVwZGF0ZSBhc20tYmxhY2tmaW4vcG9zaXhfdHlwZXMuaCB0byBsYXRlc3QgTGludXggdmVyc2lvbgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBlNWViOTNlNzczOTFiY2MzMDg2OTcxMTZjNTQ0ZWExMzQwYWFhZThhCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgRGVjIDYgMDI6NTQ6NTIgMjAwOCAtMDUwMAoKICAgIEJsYWNrZmluOiBhZGQgcG9ydCBJIGJpdHMKCiAgICBTb21lIHBlb3BsZSBuZWVkIHRvIGFjY2VzcyBwb3J0IEksIHNvIG1ha2Ugc3VyZSB0aGUgcGlucyBhcmUgZGVmaW5lZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgOGE2YjI3MjU5NmQ0M2RlMGRiNDk0M2VhYzdhZjU4YzM1MzRjNDAyNgpBdXRob3I6IFNvbmljIFpoYW5nIDxTb25pYy5aaGFuZ0BhbmFsb2cuY29tPgpEYXRlOglXZWQgTm92IDI2IDIyOjE2OjQ1IDIwMDggLTA1MDAKCiAgICBCbGFja2ZpbjogYWRkIGRyaXZlciBmb3Igb24tY2hpcCBBVEFQSSBjb250cm9sbGVyCgogICAgVGhpcyBpcyBhIHBvcnQgb2YgdGhlIExpbnV4IEJsYWNrZmluIG9uLWNoaXAgQVRBUEkgZHJpdmVyIHRvIFUtQm9vdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTb25pYyBaaGFuZyA8U29uaWMuWmhhbmdAYW5hbG9nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBiZTlkOGM3ODBlNjgzMWNiODRiN2Q0NTkwY2VhZTAzZGNhOGZjMTBiCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglXZWQgTm92IDI2IDIxOjQzOjA2IDIwMDggLTA1MDAKCiAgICBCbGFja2ZpbjogYWRkIGRyaXZlciBmb3Igb24tY2hpcCBOQU5EIGNvbnRyb2xsZXIKCiAgICBUaGlzIGlzIGEgcG9ydCBvZiB0aGUgTGludXggQmxhY2tmaW4gb24tY2hpcCBORkMgZHJpdmVyIHRvIFUtQm9vdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNDE0OGUwMmFiYWU5YTA5OWY0NDQ0YjVlMTY4ZWJjMmI5MTFkMjI5NQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIE5vdiAxMiAwNzoxODoxNSAyMDA4IC0wNTAwCgogICAgQmxhY2tmaW46IGJ1aWxkIHdpdGggLW1uby1mZHBpYwoKICAgIFVzZSB0aGUgLW1uby1mZHBpYyBmbGFnIHNvIHRoYXQgYW55IEJsYWNrZmluIHRvb2xjaGFpbiBjYW4gYmUgdXNlZCB0byBidWlsZAogICAgdXAgdS1ib290LCBpbmNsdWRpbmcgb25lcyB0aGF0IG91dHB1dCBGRFBJQyBFTEYgYnkgZGVmYXVsdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNzBlOTU1ODlhMjRhMmQ4M2FkMDAzMTdlNGE5NjExZDAyMTFlY2I1OApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIE5vdiAxMSAwNTo0Mzo1NyAyMDA4IC0wNTAwCgogICAgQmxhY2tmaW46IGZpeCB1cCBFQklVIGRlZmluZXMKCiAgICBUaGUgRUJJVSBkZWZpbmVzIGZvciBFQlNaIDI1Ni81MTIgd2VyZSBpbmNvcnJlY3QuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDk2MTk1NGVhMGVjOGRjNDM0MTAzNGMxYTFmZjMxMDdlYzA1Mjc4MDkKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBOb3YgNSAxMjo0NToyNCAyMDA4IC0wNTAwCgogICAgQmxhY2tmaW46IHVzZSA4LzE2LzMyIGJpdCB0cmFuc2ZlciB3aWR0aHMgaW4gZG1hX21lbWNweSgpCgogICAgUmF0aGVyIHRoYW4gdXNpbmcgOGJpdCB0cmFuc2ZlcnMgZm9yIGV2ZXJ5dGhpbmcsIHVzZSA4LzE2LzMyIGJpdCB0cmFuc2ZlcnMKICAgIGFzIHVzYWJsZSB3aXRoIHRoZSBzb3VyY2UvZGVzdGluYXRpb24gYWRkcmVzc2VzIGFuZCB0aGUgY291bnQgc2l6ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYjkzYzY4NjQ4NDI2ZjkwNmQ2M2I5ODExNzQ5NmI2NDE1ZjUwNWYzOQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIE5vdiA1IDA4OjUwOjIzIDIwMDggLTA1MDAKCiAgICBCbGFja2Zpbjogb25seSBmbGFnIEwxIGluc3RydWN0aW9uIGZvciBETUEgbWVtY3B5CgogICAgVGhlIHBlcmZvcm1hbmNlIGRpZmZlcmVuY2UgZnJvbSBkb2luZyBhbiA4IGJpdCBETUEgbWVtY3B5IHZzIGFuIG9wdGltaXplZAogICAgY29yZSBtZW1jcHkgY2FuIGJlIHByZXR0eSBiaWcgd2hlbiB5b3UgYWRkIGluIHRoZSBvdmVyaGVhZCBvZiBzZXR0aW5nIHVwIHRoZQogICAgTURNQSByZWdpc3RlcnMsIGNhY2hlIGZsdXNoZXMsIGV0Yy4uLiAgU28gb25seSB1c2UgZG1hX21lbWNweSgpIHdoZW4gd2UKICAgIGFjdHVhbGx5IHJlcXVpcmUgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGUzNDdjMDkyYTNiM2EyY2UxZTcyZjI1ZjQ4MjkxNjM2MzRkMDlmYmUKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBOb3YgNSAwNzoyMDozNyAyMDA4IC0wNTAwCgogICAgQmxhY2tmaW46IGRtYV9tZW1jcHkoKTogZml4IHJhbmRvbSBmYWlsdXJlcwoKICAgIFdlIGhhdmUgdG8gbWFrZSBzdXJlIHRoZSBETUEgY2hhbm5lbCBpcyBhY3R1YWxseSBkaXNhYmxlZCBpbiBoYXJkd2FyZSBiZWZvcmUKICAgIGF0dGVtcHRpbmcgdG8gcmVwcm9ncmFtIGl0LiAgT3RoZXJ3aXNlIHRoZSBuZXcgc2V0dGluZ3MgYXJlIGlnbm9yZWQgYW5kIHdlCiAgICBlbmQgdXAgd2l0aCByYW5kb20gaGFuZ3MvZmFpbHVyZXMuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGZkY2U4M2MxMDg4NDZkNmYwZDViMTc3NGUxY2MyOWYyNTczYTZhZDMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVR1ZSBOb3YgNCAwMDowNDowMyAyMDA4IC0wNTAwCgogICAgQmxhY2tmaW46IHJld3JpdGUgY2FjaGUgaGFuZGxpbmcgZnVuY3Rpb25zCgogICAgVGFrZSB0aGUgY2FjaGUgZmx1c2ggZnVuY3Rpb25zIGZyb20gdGhlIGtlcm5lbCBhcyB0aGV5IHVzZSBoYXJkd2FyZSBsb29wcyBpbgogICAgb3JkZXIgdG8gZ2V0IG9wdGltYWwgcGVyZm9ybWFuY2UuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDg0YzVmMGRjNDdkMTc1OTNmZDgxMjA2NjE0ODkxYmRjOTRmNmQ1MWMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBOb3YgMyAyMjozMDowNSAyMDA4IC0wNTAwCgogICAgQmxhY2tmaW46IHNldHVwIGJpX2VuZXRhZGRyIGZvciBzaW5nbGUgbmV0cwoKICAgIEZvciBzeXN0ZW1zIHdpdGggQ09ORklHX05FVF9NVUxUSSBkaXNhYmxlZCwgYmlfZW5ldGFkZHIgZG9lcyBub3QgZ2V0IHNldHVwCiAgICBiYXNlZCBvbiAkZXRoYWRkciwgc28gc2V0IGl0IHVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA0MDU5OTIzOWU3ODc1YjM5ZTJhNWMxMmU2NTQ1OTkyMDQxYzcyYzUyCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglGcmkgT2N0IDI0IDIyOjQ4OjQ3IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogY2FjaGUgY29yZS9zeXN0ZW0gY2xvY2sgdmFsdWVzCgogICAgQ2FsY3VsYXRpbmcgdGhlIGNsb2NrcyByZXF1aXJlcyBhIGJpdCBvZiBjYWxscyB0byBnY2MgbWF0aCBmdW5jdGlvbnMsIHNvCiAgICBjYWNoZSB0aGUgdmFsdWVzIGFmdGVyIHRoZSBmaXJzdCBydW4gc2luY2UgdGhleSdsbCBtb3N0IGxpa2VseSBuZXZlcgogICAgY2hhbmdlIG9uY2UgVS1Cb290IGlzIHVwIGFuZCBydW5uaW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA2OTU3YTYyMDliMDJmNmI2OTYwN2ZjNDc0MjVmMTM3MzFjYzQ3N2YxCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglGcmkgT2N0IDI0IDE4OjE4OjE2IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogZW5hYmxlIC0tZ2Mtc2VjdGlvbnMKCiAgICBTdGFydCBidWlsZGluZyBhbGwgQmxhY2tmaW4gYm9hcmRzIHdpdGggLWZmdW5jdGlvbi1zZWN0aW9ucy8tZmRhdGEtc2VjdGlvbnMKICAgIGFuZCBsaW5raW5nIHdpdGggLS1nYy1zZWN0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZWUxZDIwMDFlYTdmYmFiYjJiOTI1NjAyNmRjNTQ2OGYwNTczMzdmOApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIE9jdCAyMCAyMTowODo1NCAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGRvbnQgY2hlY2sgYmF1ZCBpZiBpdCB3b250IGFjdHVhbGx5IGdldCB1c2VkCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDQwMGY1Nzc4ZjM3NWJjOTljNzNjODQ4OGM1NTVkZWYyNjFjY2ZhYjcKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVR1ZSBPY3QgMTQgMDc6NTQ6MDkgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBhZGQgZHJpdmVyIGZvciBvbi1jaGlwIFNQSSBjb250cm9sbGVyCgogICAgVGhpcyBmaWxscyBvdXQgdGhlIFNQSSBiYWNrZW5kIGZvciB0aGUgQmxhY2tmaW4gb24tY2hpcCBTUEkgcGVyaXBoZXJhbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgN2ExZTg3YjEwNjJlNmVhYzA3MDRjNmZjMmY3YzY2MWNhZjg4MTRjZApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IE9jdCAxOCAwNTozMzo1MSAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IG9ubHkgYnVpbGQgcG9zdCBjb2RlIHdoZW4gQ09ORklHX1BPU1QKCiAgICBTYXZlIHNvbWUgdGltZSBieSB1c2luZyBDT05GSUdfUE9TVCBpbiB0aGUgTWFrZWZpbGUgcmF0aGVyIHRoYW4gQyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNmQ3ZDQ4MDNjNzRiYjg2ZTFiNDAxYjExOTllNjMzODFhNjJiOTM4MgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEphbiA4IDExOjU3OjU3IDIwMDkgLTA1MDAKCiAgICBCbGFja2ZpbjogYmZpbl9tYWM6IGNsZWFudXAgcG9pbnRlci9jYXN0cyBmb3IgYWxpYXNpbmcgaXNzdWVzCgogICAgUmVkbyBob3cgcG9pbnRlcnMgYXJlIG1hbmFnZWQgdG8gZ2V0IHJpZCBvZiB1Z2x5IGNhc3RzIGFuZCBzdHJpY3QgcG9pbnRlcgogICAgYWxpYXNpbmcgaXNzdWVzIHRoYXQgYXJlIGhpZ2hsaWdodGVkIGJ5IGdjYyA0LjMuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgQWNrZWQtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMDkyZDI0ODdiYWY3YzI5MzQzYzE2NWUzYWU4MmVhOGE3ZjllNjc5YgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIERlYyA5IDE3OjQ2OjIxIDIwMDggLTA1MDAKCiAgICBCbGFja2ZpbjogYmZpbl9tYWM6IGNvbnZlcnQgQ09ORklHX0JGSU5fTUFDX1JNSUkgdG8gQ09ORklHX1JNSUkKCiAgICBObyBwb2ludCBpbiBoYXZpbmcgYSBCbGFja2Zpbi1zcGVjaWZpYyBkZWZpbmUgIkNPTkZJR19CRklOX01BQ19STUlJIiB0aGF0CiAgICBkb2VzIGV4YWN0bHkgdGhlIHNhbWUgdGhpbmcgYXMgY29tbW9uICJDT05GSUdfUk1JSSIuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgQWNrZWQtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgOGVlZDZjYTUxZTUwZmFkZTY4ODdlOGJkYjFmZjZhNDQxMTZiNDJiNQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIE5vdiA1IDA2OjM2OjE1IDIwMDggLTA1MDAKCiAgICBCbGFja2ZpbjogYmZpbl9tYWM6IHVzZSBjb21tb24gZGVidWcoKQoKICAgIFJhdGhlciB0aGVuIGRlZmluaW5nIG91ciBvd24gREVCVUdGKCksIGp1c3QgdXNlIHRoZSBjb21tb24gZGVidWcoKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBBY2tlZC1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBhN2VjNmFjOGIyYzZkY2U2ZmM2NzBhMmE4NTVkZWI2ZWVlMzQwZTA0CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gT2N0IDIwIDEzOjU5OjUxIDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogYmZpbl9tYWM6IHJlc3BlY3QgQ09ORklHX1BIWV97QUREUixDTE9DS19GUkVRfQoKICAgIFJhdGhlciB0aGFuIGhhdmluZyB0aGUgb24tY2hpcCBNQUMgaGFyZGNvZGVkIHRvIHBoeSBhZGRyZXNzIDEgYW5kIGEgc3BlZWQKICAgIG9mIDIuNW1oeiwgdXNlIHRoZXNlIGFzIGRlZmF1bHRzIGlmIHRoZSBib2FyZCBkb2Vzbid0IHNwZWNpZnkgb3RoZXJ3aXNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIEFja2VkLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGFjNDVhZjRlNjNlYTkyNWY0YWNjYzk4NDUzYWFiMWExMTY2YzE5NmQKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVR1ZSBPY3QgMTQgMDQ6NTI6MDAgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBiZmluX21hYzogY2xlYW51cCBNSUkvUEhZIGZ1bmN0aW9ucwoKICAgIENsZWFudXAgYW5kIHJld3JpdGUgdGhlIE1JSS9QSFkgcmVsYXRlZCBmdW5jdGlvbnMgc28gdGhhdCB3ZSBjYW4gcmV1c2UgdGhlCiAgICBleGlzdGluZyBjb21tb24gbGludXgvbWlpcGh5LmggY29kZSBhbmQgaG9vayBpbnRvIHRoZSBgbWlpYCBjb21tYW5kLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIEFja2VkLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDZiMzEwYTA1ZjBkMTBjNzUxZjIyNDY4MDQwOTMyMTM5ZjcxYzcxZDMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVR1ZSBPY3QgMTQgMDA6MzE6MzAgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBiZmluX21hYzogc2V0IE1EQ0RJViBiYXNlZCBvbiBTQ0xLCgogICAgUmF0aGVyIHRoYW4gaGFyZGNvZGluZyBNRENESVYgdG8gMjQgKHdoaWNoIGlzIGNvcnJlY3QgZm9yIH4xMjVtaHogU0NMSyksCiAgICB1c2UgdGhlIHJlYWwgYWxnb3JpdGhtIHNvIGl0IGdldHMgc2V0IGNvcnJlY3RseSByZWdhcmRsZXNzIG9mIFNDTEsuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgQWNrZWQtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgOTMwNTkwZjNlNDljOGYzMjI1NmVkZjJlNTg2MWUxNTM1YTMyOWM2YwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBKYW4gMzEgMDk6MTA6NDggMjAwOSArMDEwMAoKICAgIGl4cDogbW92ZSBzZXJpYWwgdG8gZHJpdmVycy9zZXJpYWwKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGY5MGM4MDIyZjQ0OGJjNWU5MzA5MGU0YjcxNDM2OGU1MmU5MTJmMGYKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgSmFuIDMxIDA5OjA0OjU4IDIwMDkgKzAxMDAKCiAgICBpeHA6IG1vdmUgcGNpIGluaXQgaW4gYXJtL2JvYXJkIGluc3RlYWQgb2YgY3B1CgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA4Y2I3OWI1ZjI3NWYxODg4Y2NiMjc4YTJkMjE5NzE0MDQ0NGE4NGI3CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IEphbiAzMSAwODo1Njo0OSAyMDA5ICswMTAwCgogICAgaXhwOiBtb3ZlIHBjaSBkcml2ZXJzIHRvIGRyaXZlcnMvcGNpCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAwMTJkNWJhYjA5YTUzNGU0ODAwYjAyZjUwY2Y1MDhlNjgzNzIwMmVhCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IEphbiAzMSAwODo1Mzo0NCAyMDA5ICswMTAwCgogICAgaXhwOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBmNjkzZjUwMWQ2NzQzNGRmMWY4MTVmZDE4MjRhNzE5NzNhZTA4MjA3CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IEphbiAzMSAwODo1Mzo0NCAyMDA5ICswMTAwCgogICAgaXhwOiBhZGQgbWlzc2luZyBvcyBkZWZpbmUKCiAgICBuZWVkIGJ5IGFybS1lbGYgdG9vbGNoYWlucyBhbmQgbm8gaW1wYWN0IG9uIHRoZSBhcm0tbGludXggb25lCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBiNGUyZjg5ZGZjYjIwNmEyMmQzNGZhNmIzNDg3OGQ4NWI0OThiMzlmCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IEphbiAzMSAwOTo1MzozOSAyMDA5ICswMTAwCgogICAgaXhwOiByZW1vdmUgdGhlIG9wdGlvbiB0byBpbmNsdWRlIHRoZSBNaWNyb2NvZGUKCiAgICBpbnN0ZWFkIHRoZSBib2FyZCB3aWxsIGhhdmUgdG8gbG9hZCBpdCBmcm9tIGZsYXNoIG9yIHJhbQogICAgd2hpY2ggd2lsbCBiZSBzcGVjaWZpZWQgYnkgbnBlX3Vjb2RlIGVudiB2YXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDFiMDE3YmFmMjA3MWQ4ZGFmNjQzYmNlODcyNTBkYjg5OGM2MDZjNjYKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglGcmkgSmFuIDMwIDA5OjQ1OjIzIDIwMDkgKzAxMDAKCiAgICBpeHAvbnBlOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA0ZTY5MDg3YTFkNmVmMmVjYTZmNDYwMjZjZjVlNzM5OWI2YzllN2MwCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIEphbiAyOCAyMTo1ODowNCAyMDA5ICswMTAwCgogICAgU1gxOiBhZGQgaGFyZHdhcmUgVjIgc3VwcG9ydAoKICAgIEluIHRoZSBWMiB0aGUgMiBmbGFzaCBoYXMgYmVlbiByZXBsYWNlIGJ5IG9uZSAzMk1CIGZsYXNoCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBmODc3ZjIyMzNkYmNkNzQxN2MyZjBiYWJlNmE4NDkwOTliMTY3ZjNjCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIEphbiAyOCAyMTo1ODowMyAyMDA5ICswMTAwCgogICAgU1gxOiBGaXggc2Vjb25kIGZsYXNoIG1hcHBpbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDQ3ZmQzYmZmZWQ2NDMwYzkxZWIyNjYwZjg1OTU3NGVkOThiZTViZDgKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglXZWQgSmFuIDI4IDIxOjU4OjAzIDIwMDkgKzAxMDAKCiAgICBTWDE6IGFkZCBDT05GSUdfU1RET1VUX1VTQlRUWSB0byBlbmFibGUgcHJlYm9vdCBzdGRvdXQgcmVkaXJlY3QgdG8gdXNidHR5CgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBjZmNhMzM4MzdlYzgzODI5YzZhNDljM2JjYzg2YzMxYmMyNDk1ZmY2CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIEphbiAyOCAyMTo1Nzo1OSAyMDA5ICswMTAwCgogICAgbW92ZSBTYW1zdW5nJ3MgYm9hcmQgdG8gYm9hcmQvc2Ftc3VuZwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZTQ5NDNlYzU3NDY2ZWE1ZGZhMDg1ZTdhOWUwZWM0NGNiOTNjNGUxZQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVRodSBKYW4gMjkgMTI6MDc6MjEgMjAwOSArMDEwMAoKICAgIG1vdmUgQVJNIEx0ZC4gdG8gdmVuZG9yIGRpcgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYTg3ZmIxYjMwOGEyYTM3NWNiOWNhNzRjYTBkZDNlMmM1NzkzZDNiZgpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgpEYXRlOglXZWQgSmFuIDI4IDE1OjMwOjM3IDIwMDkgLTA1MDAKCiAgICBwcGM0eHg6IENsZWFuIHVwIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgS29yYXQgYm9hcmQKCiAgICBUaGlzIHBhdGNoIHVwZGF0ZXMgdGhlIGRlZmF1bHQgZW52aXJvbm1lbnRhbCB2YXJpYWJsZXMgZm9yIHRoZQogICAgS29yYXQgUFBDIDQ0MEVQeCBib2FyZCwgYW5kIG1ha2VzIGFkZGl0aW9uYWwgbWlub3IgZml4ZXMuCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZjIwNDA1ZTMxNjgwZWZjMzYyOTNjNTliNDk2M2RiNTdjOWQ5M2RmNApBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgpEYXRlOglXZWQgSmFuIDI4IDE1OjMwOjAyIDIwMDkgLTA1MDAKCiAgICBwcGM0eHg6IEFkZCB2YXJpYWJsZSAia29yYXRfdXNiY2YiIGZvciBLb3JhdCBib2FyZAoKICAgIFRoZSBuZXcgZW52aXJvbm1lbnQgdmFyaWFibGUgImtvcmF0X3VzYmNmIiBzZWxlY3RzIHRoZSBVU0IKICAgIHBvcnQgdXNlZCBieSB0aGUgS29yYXQgYm9hcmQncyBDb21wYWN0Rmxhc2ggY29udHJvbGxlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmYzAxZWExZTI3ZDViMTI0ZjBhMTg2OGQwY2U1NjlmMTU2ZDU4ZGZlCkF1dGhvcjogR3VubmFyIFJhbmdveSA8Z3VubmFyQHJhbmdveS5jb20+CkRhdGU6CUZyaSBKYW4gMjMgMTI6NTY6MzEgMjAwOSArMDEwMAoKICAgIEFWUjMyOiBtYWNiIC0gU2VhcmNoIGZvciBQSFkgaWQKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3Igc2VhcmNoaW5nIHRocm91Z2ggYXZhaWxhYmxlIFBIWS1hZGRyZXNzZXMgaW4KICAgIHRoZSBtYWNiLWRyaXZlci4gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBBVEVWSzExMDAgZXZhbHVhdGlvbiBib2FyZCwKICAgIHdoZXJlIHRoZSBQSFktYWRkcmVzcyB3aWxsIGJlIGluaXRpYWxpemVkIHRvIGVpdGhlciAxIG9yIDcuCgogICAgVGhpcyBwYXRjaCBhZGRzIGEgY29uZmlnIG9wdGlvbiwgQ09ORklHX01BQ0JfU0VBUkNIX1BIWSwgd2hpY2ggd2hlbgogICAgZW5hYmxlZCB0ZWxscyB0aGUgZHJpdmVyIHRvIHNlYXJjaCBmb3IgdGhlIFBIWSBhZGRyZXNzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1bm5hciBSYW5nb3kgPGd1bm5hckByYW5nb3kuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUGF1bCBEcml2ZWtsZXBwIDxwYXVsZHJpdmVrbGVwcEBnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBPbGF2IE1vcmtlbiA8b2xhdm1ya0BnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGFmODYyNmUwYzA4YTc4MGQ5ZGVkMWQ5YzQ4ODNhODkzNTVmNjBlNzUKQXV0aG9yOiBPbGF2IE1vcmtlbiA8b2xhdm1ya0BnbWFpbC5jb20+CkRhdGU6CUZyaSBKYW4gMjMgMTI6NTY6MjYgMjAwOSArMDEwMAoKICAgIEZpeCBJUCBhbGlnbm1lbnQgcHJvYmxlbQoKICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB2b2xhdGlsZSBmcm9tOgogICAgdm9sYXRpbGUgSVBfdCAqaXAgPSAoSVBfdCAqKXhpcDsKCiAgICBEdWUgdG8gYSBidWcsIGF2cjMyLWdjYyB3aWxsIGFzc3VtZSB0aGF0IGlwIGlzIGFsaWduZWQgb24gYSB3b3JkIGJvdW5kYXJ5IHdoZW4KICAgIHVzaW5nIHZvbGF0aWxlLCB3aGljaCBjYXVzZXMgYW4gZXhjZXB0aW9uIHNpbmNlIHhpcCBpc24ndCBhbGlnbmVkIG9uIGEgd29yZAogICAgYm91bmRhcnkuCgogICAgU2lnbmVkLW9mZi1ieTogR3VubmFyIFJhbmdveSA8Z3VubmFyQHJhbmdveS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIERyaXZla2xlcHAgPHBhdWxkcml2ZWtsZXBwQGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE9sYXYgTW9ya2VuIDxvbGF2bXJrQGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMTJhOGI5ZGIxMmY4MmExODlmZjE0M2E1ODczMTAwN2Y1NDY5ZGE2MQpBdXRob3I6IFJvbiBNYWRyaWQgPHJvbl9tYWRyaWRAc2JjZ2xvYmFsLm5ldD4KRGF0ZToJV2VkIEphbiAyOCAxNjoxNzoyMSAyMDA5IC0wODAwCgogICAgTWFydmVsbCA4OEUxMTE4IGludGVycnVwdCBmaXgKCiAgICBUaGlzIHBhdGNoIGFkanVzdHMgdGhlIExFRCBjb250cm9sIHNvIHRoYXQgaW50ZXJydXB0IGxpbmVzIGFyZSBub3QgcmVhZGluZyBMRURzCiAgICBhbmQgZWZmZWN0aXZlbHkgY2F1c2luZyBpbmRlZmluaXRlIGludGVycnVwdHMgdG8gdGhlIGNvbnRyb2xsZXIuCgogICAgU2lnbmVkLW9mZi1ieTogUm9uIE1hZHJpZCA8cm9uX21hZHJpZEBzYmNnbG9iYWwubmV0PgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA5YTM3ZjJhY2MzMWEzMjk2ZGRkZDM1NzRlYTllYWY3ZjMxOTgwN2I5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDIxIDE3OjE0OjI2IDIwMDkgKzAxMDAKCiAgICBuZXQ6IHNtYzkxMXguYzogQWRkIExBTjkyMTEgdG8gY2hpcF9pZHNbXSBhcnJheQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNzVlZGViZTMwMTFjOTYzYTdjZDg0YmUwZjRhOTg3NDc3ZjJhYWY4OQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIEphbiAyNyAxNjo1MzozOSAyMDA5IC0wNTAwCgogICAgTW92ZSBpc192YWxpZF9ldGhlcl9hZGRyKCkgdG8gaW5jbHVkZS9uZXQuaAoKICAgIEltcG9ydCB0aGUgaXNfdmFsaWRfZXRoZXJfYWRkcigpIGZ1bmN0aW9uIGZyb20gdGhlIExpbnV4IGtlcm5lbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDI2ODg1OTMzOGMwMTg4ZWFiMWQwZDNiODY3YjdkYWQzYzVjYzczNGEKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CU1vbiBKYW4gNSAxMjoyNToxMyAyMDA5ICswMTAwCgogICAgbmV0OiBTb3J0IE1ha2VmaWxlIGxhYmVscwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMWZiY2JlOWE5NWYzOWFmYjJkZjZhYjhjYmEyNWIyODRiNDdlYmZiMgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBKYW4gMjggMjM6MDY6NDIgMjAwOSArMDEwMAoKICAgIDg1eHg6IEZpeCBjb21waWxlIGJyZWFrYWdlIHdpdGggc2JjODU0MCBhbmQgc2JjODU2MAoKICAgIFRoaXMgZml4ZXMgYW4gZXJyb3Igd2hpY2ggcmFpc2VzIGp1c3QgYSB3YXJuaW5nOgogICAgc2JjODU2MC5jOjI1MDogd2FybmluZzogcGFzc2luZyBhcmd1bWVudCAyIG9mICdzdHJtaHonIG1ha2VzIGludGVnZXIgZnJvbSBwb2ludGVyIHdpdGhvdXQgYSBjYXN0CgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA2MjYyNWMwYjA4MWJkNDAxOWNlY2FiMTRlOWZjMmUwNWU0OGQyYTU4CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglXZWQgSmFuIDI4IDEzOjQ4OjU1IDIwMDkgLTA1MDAKCiAgICBTUEQ4MjNUUzogZG8gbm90IGRlZmluZSBDT05GSUdfQ01EX0VOVgoKICAgIFNpbmNlIHRoZSBTUEQ4MjNUUyBib2FyZCBkb2VzIG5vdCBhY3R1YWxseSBoYXZlIGFueSB3cml0YWJsZSBmbGFzaCB0byBzYXZlCiAgICBpdHMgZW52aXJvbm1lbnQsIHVuZGVmaW5lIENPTkZJR19DTURfRU5WIHNvIHRoZSAic2F2ZWVudiIgY29tbWFuZCBpcwogICAgZGlzYWJsZWQuCgogICAgVGhpcyBmaXhlcyB0aGUgYnVpbGQgZXJyb3I6CiAgICBjb21tb24vbGliY29tbW9uLmEoY21kX252ZWRpdC5vKTogSW4gZnVuY3Rpb24gYGRvX3NhdmVlbnYnOgogICAgY29tbW9uL2NtZF9udmVkaXQuYzo1NTc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHNhdmVlbnYnCiAgICBtYWtlOiAqKiogW3UtYm9vdF0gRXJyb3IgMQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA3Mzc5ZjQ1YTdiYzcxOTQxYzM5MjBjMmY2YjNjM2ZhYTRkN2ZkMzE1CkF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KRGF0ZToJV2VkIEphbiAyOCAyMTo0MDoxNiAyMDA5ICswMTAwCgogICAgT01BUDM6IEFkZCBab29tMSBib2FyZCBzdXBwb3J0CgogICAgU3VwcG9ydCBmb3IgWm9vbSBNREsgd2l0aCBPTUFQMzQzMC4gRGV0YWlscyBvZiBab29tIE1ESyBhdmFpbGFibGUgaGVyZToKICAgIGh0dHA6Ly93d3cubG9naWNwZC5jb20vcHJvZHVjdHMvZGV2a2l0L3RpL3pvb21fbW9iaWxlX2RldmVsb3BtZW50X2tpdAoKICAgIFNpZ25lZC1vZmYtYnk6IE5pc2hhbnRoIE1lbm9uIDxubUB0aS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBLcmlkbmVyIDxqa3JpZG5lckBiZWFnbGVib2FyZC5vcmc+Cgpjb21taXQgMmJlMmM2Y2M2NzRlMjYyMzc5NjJmNWNmNGMwZDMxMWUxMzllNDI0MQpBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVdlZCBKYW4gMjggMjE6Mzk6NTggMjAwOSArMDEwMAoKICAgIE9NQVAzOiBBZGQgUGFuZG9yYSBzdXBwb3J0CgogICAgQWRkIFBhbmRvcmEgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmF6dnlkYXMgSWdub3RhcyA8bm90YXNhc0BnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gS3JpZG5lciA8amtyaWRuZXJAYmVhZ2xlYm9hcmQub3JnPgoKY29tbWl0IGFkOWJjOGU1MmQxNzRkNjk5ZDEzNjdiZTBiOTAwODllNGZkZWI5MzMKQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgpEYXRlOglXZWQgSmFuIDI4IDIxOjM5OjU4IDIwMDkgKzAxMDAKCiAgICBPTUFQMzogQWRkIEVWTSBib2FyZAoKICAgIEFkZCBFVk0gYm9hcmQgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYW5pa2FuZGFuIFBpbGxhaSA8bWFuaS5waWxsYWlAdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEtyaWRuZXIgPGprcmlkbmVyQGJlYWdsZWJvYXJkLm9yZz4KCmNvbW1pdCA5ZDBmYzgxMTBlN2U3NTUyMzkzMjljMjZmMzAwZDVmYzk5NDZkM2VjCkF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KRGF0ZToJV2VkIEphbiAyOCAyMTozOTo1NyAyMDA5ICswMTAwCgogICAgT01BUDM6IEFkZCBPdmVybyBib2FyZAoKICAgIEFkZCBPdmVybyBib2FyZCBzdXBwb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZXZlIFNha29tYW4gPHNha29tYW5AZ21haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEtyaWRuZXIgPGprcmlkbmVyQGJlYWdsZWJvYXJkLm9yZz4KCmNvbW1pdCBmOTA0Y2RiYjY4MTY3YzY0Nzg4N2YxOTkyOWFkMjk1ZGJhYWM4ODYyCkF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KRGF0ZToJVHVlIEphbiAyNyAxODoxOToxMiAyMDA5ICswMTAwCgogICAgT01BUDM6IEFkZCBjb21tb24gcG93ZXIgY29kZSwgUkVBRE1FLCBhbmQgQmVhZ2xlQm9hcmQKCiAgICBBZGQgQmVhZ2xlQm9hcmQgc3VwcG9ydCwgY29tbW9uIHBvd2VyIGNvZGUgYW5kIFJFQURNRS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBLcmlkbmVyIDxqa3JpZG5lckBiZWFnbGVib2FyZC5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgoKY29tbWl0IDljZGE0ZjEwNGI1MzEzZmFkYzIxYjc1YWE3ODFjN2E2YWFmNmVhNjAKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgSmFuIDI4IDA4OjMxOjEwIDIwMDkgLTA2MDAKCiAgICA4NXh4OiBGaXggY29tcGlsZSBicmVha2FnZSB3aXRoIE1QQzg1NDBFVkFMCgogICAgQ29uZmlndXJpbmcgZm9yIE1QQzg1NDBFVkFMIGJvYXJkLi4uCiAgICBtcGM4NTQwZXZhbC5jOiBJbiBmdW5jdGlvbiAnY2hlY2tib2FyZCc6CiAgICBtcGM4NTQwZXZhbC5jOjUzOiBlcnJvcjogaW52YWxpZCBvcGVyYW5kcyB0byBiaW5hcnkgLwogICAgbWFrZVsxXTogKioqIFttcGM4NTQwZXZhbC5vXSBFcnJvciAxCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAxYTQ0OGRiNzdiMTAxNTM3MDNiYzVlNGFkMTNkZDU1ZDg4YmViMWQ2CkF1dGhvcjogQnJ5YW4gV3UgPGJyeWFuLnd1QGFuYWxvZy5jb20+CkRhdGU6CVN1biBKYW4gMTggMjM6MDQ6MjcgMjAwOSAtMDUwMAoKICAgIHVzYl9zY2FuX2RldmljZXM6IGZpeCBvdXRwdXQgd2l0aCBubyBkZXZpY2VzCgogICAgV2Ugc2hvdWxkIGNoZWNrIHRoZSByZXR1cm4gb2YgdXNiX25ld19kZXZpY2UoKSBzbyB0aGF0IGlmIG5vIFVTQiBkZXZpY2UgaXMKICAgIGZvdW5kLCB3ZSBwcmludCBvdXQgdGhlIHJpZ2h0IG1lc3NhZ2UgcmF0aGVyIHRoYW4gYWx3YXlzIHNheWluZyAibmV3IHVzYgogICAgZGV2aWNlIGZvdW5kIi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCcnlhbiBXdSA8YnJ5YW4ud3VAYW5hbG9nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IGYxYzFmNTQwMjQzNDM4MjQ2YWVmYjcwM2ZkY2YxNjk1N2UzYTcyZTEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBKYW4gMjIgMTA6MTE6MjEgMjAwOSArMDEwMAoKICAgIFVTQjogQWRkIGhpZ2gtc3BlZWQgKDQ4ME1iL3MpIHRvIGFsbCBVU0IgcmVsYXRlZCBvdXRwdXRzCgogICAgV2l0aCB0aGlzIHBhdGNoIHRoZSBVU0IgcmVsYXRlZCBjb25uZWN0aW9uIHNwZWVkIG91dHB1dCAoInVzYiB0cmVlIiBjb21tYW5kIGFuZAogICAgZGVidWcgb3V0cHV0KSBpcyBub3cgaGlnaC1zcGVlZCBlbmFibGVkLgoKICAgIFRoaXMgcGF0Y2ggYWxzbyBmaXhlcyBhIGNvbXBpbGF0aW9uIHdhcm5pbmcgd2hlbiBkZWJ1Z2dpbmcgaXMgZW5hYmxlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCBkYWEyZGFmYjQ1MGE4MDczYTRlNDJmZDQ2Y2Q0ZTk5NWIyMDhlNGNiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDIxIDE3OjEyOjE5IDIwMDkgKzAxMDAKCiAgICBVU0I6IEFkZCBkY2FjaGUgc3VwcG9ydCB0byB0aGUgRUhDSSBkcml2ZXIKCiAgICBUaGlzIHBhdGNoIGFkZHMgcm91dGluZXMgdG8gaGFuZGxlIChmbHVzaC9pbnZhbGlkYXRlKSB0aGUgZGNhY2hlIGZvciB0aGUKICAgIFFIIGFuZCBxVEQgc3RydWN0dXJlcyBhbmQgZGF0YSBidWZmZXJzLiBUaGlzIGlzIG5lZWRlZCBvbiBwbGF0Zm9ybXMgdXNpbmcKICAgIHRoaXMgRUhDSSBzdXBwb3J0IHdpdGggZGNhY2hlIGVuYWJsZWQgKGxpa2UgdGhlIE1JUFMgVkNUIGJvYXJkIHBvcnQpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IDRlMGVhMGVmYzFlNTAxMTg2YWNhODU3N2E0MDQyZmM2ZmE2NDE2MDIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBKYW4gMjEgMTc6MTI6MjggMjAwOSArMDEwMAoKICAgIFVTQjogQWRkIEVIQ0kgc3VwcG9ydCBmb3IgVkNUIEVIQ0kgY29udHJvbGxlcgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IDgzMmU2MTQxOGVlZGZlYTE3MmJkMmZkZmQwZWEwZDE5OWNjNzBhOWQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBKYW4gMjEgMTc6MTI6MTAgMjAwOSArMDEwMAoKICAgIFVTQjogQWRkIGNvbmZpZyBvcHRpb24gdG8gY2FsbCBlaGNpX2hjZF9pbml0KCkgYWdhaW4gYWZ0ZXIgRUhDSSByZXNldAoKICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgY29uZmlnIG9wdGlvbiBDT05GSUdfRUhDSV9IQ0RfSU5JVF9BRlRFUl9SRVNFVAogICAgdG8gY2FsbCBlaGNpX2hjZF9pbml0KCkgYWdhaW4gYWZ0ZXIgZWhjaV9yZXNldCgpIGlzIGV4ZWN1dGVkLiBUaGlzCiAgICBpcyBuZWVkZWQgZm9yIHRoZSB1cGNvbWluZyBWQ1QgRUhDSSBzdXBwb3J0IHdoaWNoIG5lZWRzIHRvIHJlLWluaXQKICAgIHRoZSBoY2QgcGFydCBhZ2FpbiBhZnRlciB0aGUgRUhDSSBDTURfUkVTRVQgaXMgZXhlY3V0ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgNTk3ZWIyOGJkOTY5MTI2NmI3YjgwNDM2NGNkYTU3N2NkYjUxZDEwNgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEphbiAyMSAxNzoxMjowMSAyMDA5ICswMTAwCgogICAgVVNCOiBGaXggc3BlZWQgZGV0ZWN0aW9uIG9uIEVIQ0kgY250ciB3aXRoIHJvb3QgaHViIHRyYW5zYWN0aW9uIHRyYW5zbGF0b3JzCgogICAgVGhpcyBwYXRjaCBmaXhlcyBhbiBpc3N1ZSB0aGF0IHRoZSBzcGVlZCBvZiBVU0IgZGV2aWNlcyB3YXMgbm90IGRldGVjdGVkCiAgICBjb3JyZWN0bHkgb24gc29tZSBFSENJIGNvbnRyb2xsZXJzLiBUaGlzIHdpbGwgYmUgdXNlZCBvbiB0aGUgdXBjb21pbmcgVkNUCiAgICBFSENJIHN1cHBvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgMjBjYzA2NjExZWEzM2ZjMGE2N2E1ZTU2ZTY0NzYzNzlkMmRlMzA5MQpBdXRob3I6IFRob21hcyBBYnJhaGFtIDx0LWFicmFoYW1AdGkuY29tPgpEYXRlOglTdW4gSmFuIDQgMDk6NDE6MjAgMjAwOSArMDUzMAoKICAgIHVzYiA6IG11c2IgOiBFbmFibGluZyBVU0IgTVNDIHN1cHBvcnQgZm9yIERNNjQ0NiAoVEkgRGFWaW5jaSkgcGxhdGZvcm0KCiAgICBFbmFibGluZyBVU0IgTVNDIHN1cHBvcnQgZm9yIERNNjQ0NiAoVEkgRGFWaW5jaSkgcGxhdGZvcm0gaW4gdGhlCiAgICBjb25maWd1cmF0aW9uIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogUmF2aSBCYWJ1IDxyYXZpYmFidUB0aS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTd2FtaW5hdGhhbiBTIDxzd2FtaS5peWVyQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBBYnJhaGFtIDx0LWFicmFoYW1AdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQWpheSBLdW1hciBHdXB0YSA8YWpheS5ndXB0YUB0aS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCA1MzhlZjk2NzcxNTMyMmY2NGVlMDhlZmEyMjk2ZDk2ODIxMTFiMDE0CkF1dGhvcjogVGhvbWFzIEFicmFoYW0gPHQtYWJyYWhhbUB0aS5jb20+CkRhdGU6CVN1biBKYW4gNCAwOTo0MToxNiAyMDA5ICswNTMwCgogICAgdXNiIDogbXVzYiA6IEVuYWJsaW5nIERNNjQ0NiAoVEkgRGFWaW5jaSkgVVNCIG1vZHVsZSBwb3dlcgoKICAgIEVuYWJsaW5nIERNNjQ0NiAoVEkgRGFWaW5jaSkgVVNCIG1vZHVsZSBwb3dlciBhbmQgTVVTQiBsb3ctbGV2ZWwKICAgIGNvbnRyb2xsZXIgaG9vayB1cCB0byBVU0IgY29yZSBsYXllci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYXZpIEJhYnUgPHJhdmliYWJ1QHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN3YW1pbmF0aGFuIFMgPHN3YW1pLml5ZXJAdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIEFicmFoYW0gPHQtYWJyYWhhbUB0aS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBBamF5IEt1bWFyIEd1cHRhIDxhamF5Lmd1cHRhQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IGUxNDJlOWYzNWY4ZWM2MWU3NGJmODAxOTQyOGIwMDNmNTA3MGMzM2IKQXV0aG9yOiBUaG9tYXMgQWJyYWhhbSA8dC1hYnJhaGFtQHRpLmNvbT4KRGF0ZToJU3VuIEphbiA0IDA5OjQxOjEzIDIwMDkgKzA1MzAKCiAgICB1c2IgOiBtdXNiIDogQWRkaW5nIERNNjQ0NiAoVEkgRGFWaW5jaSkgcGxhdGZvcm0gc3BlY2lmaWMgVVNCIHN1cHBvcnQKCiAgICBBZGRpbmcgRE02NDQ2IChUSSBEYVZpbmNpKSBwbGF0Zm9ybSBzcGVjaWZpYyBVU0IgZnVuY3Rpb25hbGl0eSBmb3IKICAgIFVTQiBQaHkgYW5kIFZCVVMgaW5pdGlhbGl6YXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogUmF2aSBCYWJ1IDxyYXZpYmFidUB0aS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTd2FtaW5hdGhhbiBTIDxzd2FtaS5peWVyQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBBYnJhaGFtIDx0LWFicmFoYW1AdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQWpheSBLdW1hciBHdXB0YSA8YWpheS5ndXB0YUB0aS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCBhOWQzOWViZTkxZWNkZDVhYzBhMGNmNTZlYTE2MmExOTc3M2RiOGRhCkF1dGhvcjogVGhvbWFzIEFicmFoYW0gPHQtYWJyYWhhbUB0aS5jb20+CkRhdGU6CVN1biBKYW4gNCAwOTo0MTowOSAyMDA5ICswNTMwCgogICAgdXNiIDogbXVzYiA6IEFkZGluZyBVU0IgVkJVUyBlbmFibGUgZnVuY3Rpb25hbGl0eSBmb3IgRE02NDR4IERWRVZNCgogICAgQWRkaW5nIFVTQiBWQlVTIGVuYWJsZSBmdW5jdGlvbmFsaXR5IGZvciBETTY0NHggRFZFVk0gKFRJIERhVmluY2kpCiAgICBwbGF0Zm9ybS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYXZpIEJhYnUgPHJhdmliYWJ1QHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN3YW1pbmF0aGFuIFMgPHN3YW1pLml5ZXJAdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIEFicmFoYW0gPHQtYWJyYWhhbUB0aS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBBamF5IEt1bWFyIEd1cHRhIDxhamF5Lmd1cHRhQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IGExNDI4OTY5MzRjNzU1ZTY3OWJhODdlMjI3YThlNDQ5ZjM5YjAwMTIKQXV0aG9yOiBUaG9tYXMgQWJyYWhhbSA8dC1hYnJhaGFtQHRpLmNvbT4KRGF0ZToJU3VuIEphbiA0IDA5OjQxOjAzIDIwMDkgKzA1MzAKCiAgICB1c2IgOiBtdXNiIDogQWRkaW5nIGhvc3QgY29udHJvbGxlciBkcml2ZXIgZm9yIE1lbnRvciBVU0IgY29udHJvbGxlcgoKICAgIEFkZGluZyBNZW50b3IgVVNCIGNvcmUgZnVuY3Rpb25hbGl0eSBhbmQgTWVudG9yIFVTQiBIb3N0IGNvbnRyb2xsZXIKICAgIGZ1bmN0aW9uYWxpdHkgZm9yIE1lbnRvciBVU0IgT1RHIGNvbnRyb2xsZXIgKG11c2JoZHJjKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYXZpIEJhYnUgPHJhdmliYWJ1QHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN3YW1pbmF0aGFuIFMgPHN3YW1pLml5ZXJAdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIEFicmFoYW0gPHQtYWJyYWhhbUB0aS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBBamF5IEt1bWFyIEd1cHRhIDxhamF5Lmd1cHRhQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IGM3ZDcwM2YzZjNjM2Q2YjAyMGJkYTRjZjYzM2Y4YTYxNjdjM2NkMmEKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBKYW4gMSAxODoyNzoyNyAyMDA5IC0wNTAwCgogICAgdXNiLmg6IHVzZSBzdGFuZGFyZCBfX0xJVFRMRV9FTkRJQU4gZnJvbSBMaW51eCBoZWFkZXJzCgogICAgUmF0aGVyIHRoYW4gZm9yY2luZyBwZW9wbGUgdG8gZGVmaW5lIGEgY3VzdG9tICJMSVRUTEVFTkRJQU4iLCBqdXN0IHVzZSB0aGUKICAgIF9fTElUVExFX0VORElBTiBvbmUgZnJvbSB0aGUgTGludXggYnl0ZW9yZGVyIGhlYWRlcnMgdGhhdCBldmVyeSBhcmNoIGlzCiAgICBhbHJlYWR5IHNldHRpbmcgdXAuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgN2I2ZTMxZWIxN2UzZmY3NjIzOGE2MDgwM2ZjNTMxNTE3ZDUxNjIyMwpBdXRob3I6IE1pY2hhZWwgVHJpbWFyY2hpIDx0cmltYXJjaGlAZ2FuZGFsZi5zc3N1cC5pdD4KRGF0ZToJV2VkIERlYyAzMSAxMDozMzo1NiAyMDA4ICswMTAwCgogICAgVVNCIGVoY2kgaXhwNHh4IHN1cHBvcnQKCiAgICBBZGQgVVNCIGVoY2kgaXhwNHh4IGhvc3QgY29udHJvbGxlci4gVGVzdCBvbiBpeGRwNDY1IGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgVHJpbWFyY2hpIDx0cmltYXJjaGltaWNoYWVsQHlhaG9vLml0PgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgMWVkOWY5YWRjODgyMTg4NDFkZmViNjBiOTA5NGE1YTU0OGJmZjAwOQpBdXRob3I6IE1pY2hhZWwgVHJpbWFyY2hpIDx0cmltYXJjaGlAZ2FuZGFsZi5zc3N1cC5pdD4KRGF0ZToJV2VkIERlYyAzMSAxMDozMzoyMiAyMDA4ICswMTAwCgogICAgVVNCIGVoY2kgcmVtb3ZlIGluZmluaXRlIGxvb3AgYW5kIHVzZSBoYW5kc2hha2UgZnVuY3Rpb24KCiAgICBVU0IgZWhjaSBjb2RlIGNsZWFudXAuIFVzZSBoYW5kc2hha2UgaW5zdGVhZCBvZiBpbmZpbml0ZSB3aGlsZSBsb29wCiAgICB0byBjaGVjayB0aGUgU1REX0FTUyBzdGF0dXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpbWljaGFlbEB5YWhvby5pdD4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IDhmZWEyOTE0YWM5NzQwMjliNjU5MjZlZjgyNDdkOTA4Zjg0ZDIwMmQKQXV0aG9yOiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpQGdhbmRhbGYuc3NzdXAuaXQ+CkRhdGU6CVdlZCBEZWMgMzEgMTA6MzI6NDEgMjAwOCArMDEwMAoKICAgIEFkZCBpbml0aWFsIHN1cHBvcnQgZm9yIFVTQiBlaGNpIHBjaQoKICAgIEFkZCBVU0IgZWhjaSBwY2kgc3VwcG9ydC4gVGhpcyBwYXRjaCBkb2Vzbid0IGluY2x1ZGUgYW55CiAgICBwY2lfaWRzIGFuZCBpdCBpcyBub3QgdGVzdGVkIG9uIHJlYWwgaGFyZHdhcmUuCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBUcmltYXJjaGkgPHRyaW1hcmNoaW1pY2hhZWxAeWFob28uaXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCAxNGU0MTExY2RhYjdlNzczOGZmNmEyMDNkNDQ1ZTRkODM3N2YwNThmCkF1dGhvcjogQnJ5YW4gV3UgPEJyeWFuLld1QGFuYWxvZy5jb20+CkRhdGU6CVRodSBKYW4gMSAxOTo0ODowNyAyMDA5IC0wNTAwCgogICAgdXNiX3N0b3JhZ2U6IGRvIG5vdCByZXNldCBTYW5EaXNrIENvcnBvcmF0aW9uIFUzIENydXplciBNaWNybyBVU0IgdGh1bWIgZHJpdmUKCiAgICBUaGUgU2FuRGlzayBDb3Jwb3JhdGlvbiBVMyBDcnV6ZXIgTWljcm8gMS80R0IgRmxhc2ggRHJpdmUgMDAwMDE2MjQ0MzczRkZCNAogICAgZG9lcyBub3QgbGlrZSB0byBiZSByZXNldCwgc28gY2hlY2sgZm9yIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEJyeWFuIFd1IDxicnlhbi53dUBhbmFsb2cuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgMWViNzM0ZmVkM2I3OWE1ZTYxMDZkYWQxNmU4ODA0MTg5NGZkYWIzMApBdXRob3I6IFRob21hcyBBYnJhaGFtIDx0LWFicmFoYW1AdGkuY29tPgpEYXRlOglTdW4gSmFuIDQgMTI6MTU6MzUgMjAwOSArMDUzMAoKICAgIHVzYiA6IHVzYl9rYmQgOiBQb3B1bGF0aW5nICdwcml2JyBtZW1iZXIgb2YgVVNCIGtleWJvYXJkIGRldmljZV90IHN0cnVjdHVyZQoKICAgIFRoaXMgcGF0Y2ggcG9wdWxhdGVzIHRoZSAncHJpdicgZmllbGQgb2YgdGhlIFVTQiBrZXlib2FyZCBkZXZpY2VfdAogICAgc3RydWN0dXJlLiBUaGUgJ3ByaXYnIGZpZWxkIGlzIHBvcHVsYXRlZCB3aXRoIHRoZSBhZGRyZXNzIG9mIHRoZQogICAgJ3N0cnVjdCB1c2JfZGV2aWNlJyBzdHJ1Y3R1cmUgdGhhdCByZXByZXNlbnRzIHRoZSBVU0IgZGV2aWNlLgoKICAgIFRoZSAncHJpdicgZmllbGQgY2FuIHRoZW4gYmUgdXNlZCBpbiB0aGUgJ3VzYl9ldmVudF9wb2xsJyBmdW5jdGlvbiB0bwogICAgZGV0ZXJtaW5lIHRoZSBVU0IgZGV2aWNlIHRoYXQgcmVxdWlyZXMgdG8gYmUgcG9sbGVkLiBBbgogICAgZXhhbXBsZSBvZiBpdHMgdXNhZ2UgaW4gJ3VzYl9ldmVudF9wb2xsJyBmdW5jdGlvbiBpcyBhcyBiZWxvdy4KCglkZXZpY2VfdCAqZGV2OwoJc3RydWN0IHVzYl9kZXZpY2UgKnVzYl9rYmRfZGV2OwoKCTxzbmlwPgoKCWRldiA9IGRldmljZV9nZXRfYnlfbmFtZSgidXNia2JkIik7Cgl1c2Jfa2JkX2RldiA9IChzdHJ1Y3QgdXNiX2RldmljZSAqKWRldi0+cHJpdjsKCWlmYWNlID0gJnVzYl9rYmRfZGV2LT5jb25maWcuaWZfZGVzY1swXTsKCiAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQWJyYWhhbSA8dC1hYnJhaGFtQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IDM2NjUyM2MyNmI2MzIwYWYxNzE0NTliMTllNmUwZTllM2JhYTgzY2EKQXV0aG9yOiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpQGdhbmRhbGYuc3NzdXAuaXQ+CkRhdGU6CVRodSBEZWMgMTggMTA6MDU6MzcgMjAwOCArMDEwMAoKICAgIFVTQiBjaGFuZ2Ugc3BlZWQKCiAgICBVU0IgY2hhbmdlcyB0aGUgc3BlZWQgYWNjb3JkaW5nIHRvIHRoZSBwb3J0IHN0YXR1cwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgVHJpbWFyY2hpIDx0cmltYXJjaGltaWNoYWVsQHlhaG9vLml0PgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgYzBkNzIyZmU3ZWUxY2I0NTJkZmQ5MjQ2NDE5MTg4YjNmNmQ5YzRkZgpBdXRob3I6IFJlbXkgQsO2aG1lciA8bGludXhAYm9obWVyLm5ldD4KRGF0ZToJU2F0IERlYyAxMyAyMjo1MTo1OCAyMDA4ICswMTAwCgogICAgRUhDSSBmaXggY29kZSBhbmQgaXhwNHh4IHRlc3QuCiAgICBVU0IgZWhjaSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjoKCiAgICAjZGVmaW5lIENPTkZJR19DTURfVVNCCSAgICAxCiAgICAjZGVmaW5lIENPTkZJR19VU0JfU1RPUkFHRQkgICAgMQogICAgI2RlZmluZSBDT05GSUdfVVNCX0VIQ0kKICAgICNkZWZpbmUgQ09ORklHX1VTQl9FSENJX0lYUDRYWAkxCiAgICAjZGVmaW5lIENPTkZJR19FSENJX0lTX1RESQkxCiAgICAjZGVmaW5lIENPTkZJR19FSENJX0RFU0NfQklHX0VORElBTiAgICAgMQogICAgI2RlZmluZSBDT05GSUdfRUhDSV9NTUlPX0JJR19FTkRJQU4gICAgIDEKICAgICNkZWZpbmUgQ09ORklHX1NZU19VU0JfRUhDSV9NQVhfUk9PVF9QT1JUUyAyCiAgICAjZGVmaW5lIENPTkZJR19MRUdBQ1lfVVNCX0lOSVRfU0VRCSAgICAxCgogICAgMiBVU0IgRGV2aWNlKHMpIGZvdW5kCgkgICBzY2FubmluZyBidXMgZm9yIHN0b3JhZ2UgZGV2aWNlcy4uLiAwIFN0b3JhZ2UgRGV2aWNlKHMpIGZvdW5kCiAgICA9PiB1c2IgdHJlZQoKICAgIERldmljZSBUcmVlOgogICAgICAxICBIdWIgKDEuNU1CaXQvcywgMG1BKQogICAgICB8ICB1LWJvb3QgRUhDSSBIb3N0IENvbnRyb2xsZXIKICAgICAgfAogICAgICB8Ky0yICBNYXNzIFN0b3JhZ2UgKDEyTUJpdC9zLCAxMDBtQSkKCSAgIFNvbnkgU3RvcmFnZSBNZWRpYSAwQzA3MDQwOTMwMjk2CgogICAgPT4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpbWljaGFlbEB5YWhvby5pdD4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQsO2aG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCA1MWFiMTQyYjhiNTQ2ZDVlNjI3YjJjOGMzNmQwYWRhZTIyMjU2NWY3CkF1dGhvcjogbWljaGFlbCA8bWljaGFlbEBwYW5pY2tpbmcucmV0aXM+CkRhdGU6CVRodSBEZWMgMTEgMTM6NDM6NTUgMjAwOCArMDEwMAoKICAgIFtQQVRDSF0gVGhpcyBwYXRjaCBhZGQgdmFyaXVzIGZpeCB0byB0aGUgZWhjaS4KICAgIC0gZml4IGVoY2lfcmVhZGwsIGVoY2lfd3JpdGVsCiAgICAtIGludHJvZHVjZSBuZXcgZGVmaW5lIGluIGVoY2kuaAogICAgLSBpbnRyb2R1Y2UgdGhlIGhhbmRzaGFrZSBmdW5jdGlvbiBmb3Igd2FpdGluZyBvbiBhIHJlZ2lzdGVyCiAgICAtIGZpeCB1c2JfZWhjaV9mc2wgd2l0aCB0aGUgbmV3IEhDX0xFTkdUSCBtYWNybwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgVHJpbWFyY2hpIDx0cmltYXJjaGltaWNoYWVsQHlhaG9vLml0PgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCw7ZobWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IGRiNjMyOTliMWRkMjg5NGFkZTU0MjI3ODIxMGJjY2QwNDZkZTY0MzUKQXV0aG9yOiBtaWNoYWVsIDxtaWNoYWVsQHBhbmlja2luZy5yZXRpcz4KRGF0ZToJV2VkIERlYyAxMCAxNzo1NToxOSAyMDA4ICswMTAwCgogICAgW1BBVENIXSBGaXggRUhDSSB1c2IuIEkgc3RhcnQgdG8gdGVzdCBvbiBhCiAgICBJWFA0NjUgYm9hcmQgYW5kIEkgZmluZCBzb21lIGVycm9ycyBpbiB0aGUgY29kZS4gVGhpcwogICAgcGF0Y2ggZml4OgogICAgLSBkZXNjcmlwdG9yIGluaXRpemlhbGl6YXRpb24gKGNvbmZpZywgaW50ZXJmYWNlIGFuZCBlbmRwb2ludAogICAgICBtdXN0IGJlIG9uZSBuZXh0LXRvIHRoZSBvdGhlciB3aGVuIHRoZSBVU0JfRFRfQ09ORklHIG1lc3NhZ2UKICAgICAgaXMgc2VuZC4KICAgIC0gRklYIGxpdHRsZS9lbmRpYW4gYmlnZW5kaWFuIChpbnRyb2R1Y2UgdGhlIENPTkZJR19FSENJX0RFU0NfQklHX0VORElBTgogICAgICBhbmQgdGhlIENPTkZJR19FSENJX01NSU9fQklHX0VORElBTikKICAgIC0gSW50cm9kdWNlIHRoZSBsaW51eCB2ZXJzaW9uIG9mIHRoZSB1c2JfY29uZmlnX2Rlc2NyaXB0b3IgYW5kCiAgICAgIHVzYl9pbnRlcmZhY2UgZGVzY3JpcHRvci4gVGhpcyBkZXNjcmlwdG9yIGRvZXMndCBjb250YWlucwogICAgICB1LWJvb3QgZXh0ZW5zaW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgVHJpbWFyY2hpIDx0cmltYXJjaGltaWNoYWVsQHlhaG9vLml0PgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCw7ZobWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IDZiOTI0ODdkY2Y5YWZlODNhMzU3MDE1M2Q2Njk0MGZkYjI5M2JlNzYKQXV0aG9yOiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpQGdhbmRhbGYuc3NzdXAuaXQ+CkRhdGU6CUZyaSBOb3YgMjggMTM6MjI6MDkgMjAwOCArMDEwMAoKICAgIFVTQiBlaGNpIGZyZWVzY2FsZSBzdXBwb3J0CgogICAgQWRkIFVTQiBlaGNpIGZyZWVzY2FsZSBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBUcmltYXJjaGkgPHRyaW1hcmNoaUBnYW5kYWxmLnNzc3VwLml0PgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCw7ZobWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IGFhZjA5OGNmZWVkMDQ1OTVkNGM1MTAwZmZkMzkwOTVkNzllZGJmOTAKQXV0aG9yOiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpQGdhbmRhbGYuc3NzdXAuaXQ+CkRhdGU6CUZyaSBOb3YgMjggMTM6MjA6NDYgMjAwOCArMDEwMAoKICAgIFVTQiBlaGNpIGNvcmUgc3VwcG9ydAoKICAgIEFkZCBVU0IgZWhjaSBjb3JlIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpQGdhbmRhbGYuc3NzdXAuaXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IELDtmhtZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgM2UxMjY0ODRkZjc4NjhlMzQxNTQ1Y2NlNzQwYjI0YjYyYjBjZDNiNwpBdXRob3I6IE1pY2hhZWwgVHJpbWFyY2hpIDx0cmltYXJjaGlAZ2FuZGFsZi5zc3N1cC5pdD4KRGF0ZToJRnJpIE5vdiAyOCAxMzoxOToxOSAyMDA4ICswMTAwCgogICAgUHJlcGFyZSBVU0IgbGF5ZXIgZm9yIGVoY2kKCiAgICBQcmVwYXJlIFVTQiBsYXllciBmb3IgZWhjaSBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBUcmltYXJjaGkgPHRyaW1hcmNoaUBnYW5kYWxmLnNzc3VwLml0PgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCw7ZobWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IGEwY2IzZmMzMWU1ODk5NmExYzU3MzI3MTVhYzA0MTU5ZDRkMjg0ZmQKQXV0aG9yOiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpQGdhbmRhbGYuc3NzdXAuaXQ+CkRhdGU6CVdlZCBEZWMgMTAgMTU6NTI6MDYgMjAwOCArMDEwMAoKICAgIFVTQiBzdG9yYWdlIGNsZWFudXAgcGF0Y2gKCiAgICBDbGVhbnVwIHVzYiBzdG9yYWdlCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBUcmltYXJjaGkgPHRyaW1hcmNoaW1pY2hhZWxAeWFob28uaXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCBmZTAzM2FkNmQwODgzMDYzZmU4NTcyMzdhYmI5NDM2ZmFiMDMyMDhjCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gT2N0IDEyIDA2OjAyOjU1IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogZml4dXAgbWlzYyB3YXJuaW5ncyBzdWNoIGFzIHByaW50ZidzIGFuZCBtaXNzaW5nIGNhc3RzCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDFmNGEzYmI1MDM0MzcxOWM0MzRkN2UyNTQxYTJmODY0ODBhNmQyNWMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVN1biBPY3QgMTIgMjI6MDk6MjYgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBjb252ZXJ0IG9sZCBib2FyZHMgdG8gdXNlIENPQkpTLXkgTWFrZWZpbGUgc3R5bGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMWY3NWQ2ZjBmZjAwNTc2MmQzZTZhZDkyYWU0Y2UyYWIzNjZiM2JiNQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IE9jdCAxMSAyMjozODozNyAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGJmNTMzLXN0YW1wOiByZXdyaXRlIHJlc291cmNlIHN3YXAgbG9naWMKCiAgICBUaGUgb2xkIHN3YXAgZnVuY3Rpb24gdGVuZGVkIHRvIGNsb2JiZXIgdW5yZWxhdGVkIHBpbnMgYW5kIHNjcmV3IHVwIG1hc2tzLgogICAgUmV3cml0ZSB0aGUgdGhpbmcgZnJvbSBzY3JhdGNoIHNvIGl0IG9ubHkgdXNlcyB0aGUgcmVzb3VyY2VzIGl0IG5lZWRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAyOWQ0ZWEwYTkwNzNjODI0NjkxODQzMzEwMTAxMzZmNTJlZGY4ZGI2CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgT2N0IDExIDIyOjA4OjQyIDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogYm9vdGxkcjogaW1wbGVtZW50IEJGNTN4L0JGNTZ4IExEUiBsb2FkZXIKCiAgICBUaGUgQkY1M3gvQkY1NnggcGFydHMgZG8gbm90IGhhdmUgYW4gb24tY2hpcCBST00gdG8gYm9vdCBMRFJzIG91dCBvZgogICAgYXJiaXRyYXJ5IG1lbW9yeSBsb2NhdGlvbnMsIHNvIGltcGxlbWVudCBhIGJhc2ljIG9uZSBpbiBzb2Z0d2FyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgOGIzNWUzYWVmZjZjMmQ3NDdjMzc2OTc5OTdiM2Y4YTgwODQzMjMyOQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IE9jdCAxMSAyMjowNTo0MiAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGltcGxlbWVudCByZWFsIHdyaXRlIHN1cHBvcnQgZm9yIE9UUAoKICAgIE5vdyB0aGF0IHJlYWwgZG9jdW1lbnRhdGlvbiBoYXMgYmVlbiByZWxlYXNlZCBmb3IgdGhlIE9UUCBpbnRlcmZhY2UgYW5kCiAgICB0aGUgb24tY2hpcCBST00gd3J0IHdyaXRpbmcvdGltaW5ncywgaW1wbGVtZW50IHN1cHBvcnQgZm9yIHJlYWRpbmcvd3JpdGluZwogICAgYXMgd2VsbCBhcyBkdW1waW5nL2xvY2tpbmcuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDkzNzJjMzIxNDgwOGZhYjU0NTIyN2Q4ZDBmNzZiM2JmY2M2NzYwZWMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBPY3QgMTEgMjI6MDQ6MDUgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiB1cGRhdGUgb24tY2hpcCBST00gQVBJCgogICAgVGhpcyBicmluZ3MgdGhlIEFQSSBmb3IgdGhlIG9uLWNoaXAgUk9NIGluIGxpbmUgd2l0aCB0aGUgdG9vbGNoYWluIGFuZAogICAgaGFyZHdhcmUgZG9jdW1lbnRhdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNzYzMzkwM2JmZjQzMmVjN2IyNzkwNWRjZTczOTY5NTg1NTNmMmJlNgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IE9jdCAxMSAyMTo1MjoxNyAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGFsbG93IHNlcmlhbCBjb25zb2xlIHRvIGJlIGRpc2FibGVkCgogICAgU29tZSBkZXZpY2VzIGhhdmUgbm8gVUFSVCBkZXZpY2UgcHVsbGVkIG91dCwgc28gYWxsb3cgcGVvcGxlIHRvIGRpc2FibGUgdGhlCiAgICBkcml2ZXIgY29tcGxldGVseSBpbiBmYXZvciBvZiBvdGhlciBtZXRob2RzIChsaWtlIEpUQUctY29uc29sZSkuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDM2ZWE4ZTlhZDExMDdhZjEyZDI0NGJiYThjNzNlODViOWY2NTVlNDUKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBPY3QgMTEgMjE6NTE6MjAgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBzdXBwb3J0IGNvbnNvbGUtb3Zlci1KVEFHCgogICAgVGhlIEJsYWNrZmluIEpUQUcgaGFzIHRoZSBhYmlsaXR5IHRvIHBhc3MgZGF0YSB2aWEgYSBiYWNrLWNoYW5uZWwgd2l0aG91dAogICAgaGFsdGluZyB0aGUgcHJvY2Vzc29yLiAgVXRpbGl6ZSB0aGF0IGNoYW5uZWwgdG8gZW11bGF0ZSBhIGNvbnNvbGUuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGNmOGYyZWZiNWYzOWM1MjI1ZGE5MjM5MWMxNGEwN2VlY2JlY2E4ODEKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBPY3QgMTEgMjE6NDk6MDYgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBoYW5kbGUgbmV3IGFub21hbGllcyB3aXRoIHJlc2V0CgogICAgV29ya2Fyb3VuZCBmdW4gbmV3IGFub21hbGllcyByZWxhdGVkIHRvIHNvZnR3YXJlIHJlc2V0IG9mIHRoZSBwcm9jZXNzb3IuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGIxZTk0MzViNjQzMDQzZGQ4ZmJkMWZjYzQ3MzA5YzZhY2I3YjNjOGUKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBPY3QgMTEgMjE6NDQ6MDAgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBwYXNzIFJFVFggdG8gTGludXgKCiAgICBNYWtlIHN1cmUgd2Ugc2F2ZSB0aGUgdmFsdWUgb2YgUkVUWCBhdCBwb3dlciBvbiBhbmQgdGhlbiBwYXNzIGl0IG9uIHRvIHRoZQogICAga2VybmVsIHNvIHRoYXQgaXQgY2FuIG5pY2VseSBkZWJ1ZyBhICJkb3VibGUtZmF1bHQtY2F1c2VkLWEtcmVzZXQiIGNyYXNoLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBiNWViYTNmYWZjY2NkMTk3OTM4MGYxMmEyNTZiZDBlMTliZTNkNjFlCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgT2N0IDExIDIxOjQwOjI2IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogY2xhcmlmeSByZWxvY2F0aW9uIGNvbW1lbnQgZHVyaW5nIGluaXQKCiAgICBQZW9wbGUgb2Z0ZW4gYXNrIHF1ZXN0aW9ucyBhYm91dCB0aGUgaW5pdCBwcm9jZXNzIGFuZCB3aGVuIHRoaW5ncyBnbwogICAgZnJvbSBmbGFzaCB0byByZWxvY2F0ZWQgYmFzZSwgc28gY2xhcmlmeSB0aGUgY29tbWVudHMgYSBiaXQuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDk1NDMzZjZkNDNlZGU2YjQwYzFkOTAwZjNmNzA0YzgzOWFhMDc0ZjEKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBPY3QgMTEgMjE6MjM6NDEgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBqdXN0IHNldCBTUCByZWdpc3RlciBkaXJlY3RseSBkdXJpbmcgaW5pdAoKICAgIE5vIG5lZWQgdG8gc2V0IHRoZSBTUCByZWdpc3RlciBpbmRpcmVjdGx5IHRvIHRoZSBjb25maWd1cmVkIHZhbHVlIHdoZW4gaXQKICAgIGNhbiBiZSBzZXQgZGlyZWN0bHkuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDUxMjMwZTZlMzU2Y2NmNGM5MzJlMGM0ZmY1NGYxZTQ5ZGEwMjI4NWMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBPY3QgMTEgMjE6MTU6NTMgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBhZGQgcG9ydG11eGluZyBmb3IgVUFSVHMgb24gdGhlIEJGNTF4CgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDRmNmEzMTMyNDBjNTMxMDQyZjE2OTA5YTNhMTcwYWIwNDdiOTU3NzkKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVN1biBKdW4gMSAwMToyNjoyOSAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IHJlc3BlY3QgQ09ORklHX0NMS0lOX0hBTEYKCiAgICBBcyBwb2ludGVkIG91dCBieSBJdmFuIEtvcnlha292c2tpeSwgdGhlIGluaXRpYWxpemF0aW9uIGNvZGUgd2FzIG5vdAogICAgYWN0dWFsbHkgcmVzcGVjdGluZyB0aGUgQ09ORklHX0NMS0lOX0hBTEYgb3B0aW9uIHdoZW4gY29uZmlndXJpbmcgdGhlCiAgICBQTExfQ1RMIHJlZ2lzdGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBkYzJiZmIwYjU4ZDc0NjJiOWViYTY4ZjNhZTM4ZTM4Y2FkYTBhZDMzCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gSnVuIDEgMDE6MjE6MzQgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiB1c2UgY29tbW9uIG1lbWNweSByb3V0aW5lIGR1cmluZyBpbml0CgogICAgUmF0aGVyIHRoYW4gdXNpbmcgYSBsb2NhbCBjdXN0b20gbWVtY3B5IGZ1bmN0aW9uLCBqdXN0IGNhbGwgdGhlIGV4aXN0aW5nCiAgICBvcHRpbWl6ZWQgQmxhY2tmaW4gdmVyc2lvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMzYyYzk0MzM0NzM2NGU5MzczYWY0YzU1MzA3Nzg0OTFhYjU2ZWMyZQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIEFwciA5IDAyOjI3OjA2IDIwMDggLTA0MDAKCiAgICBCbGFja2Zpbjogc2V0IGRlZmF1bHQgYm9vdCBTUEkgQ1MgZm9yIEJGNTM4L0JGNTM5CgogICAgVGhlIEJGNTM4L0JGNTM5IHVzZSBDUzIgZm9yIGJvb3Rpbmcgb2ZmIG9mIHJhdGhlciB0aGFuIENTMSBsaWtlIG5ld2VyCiAgICBCbGFja2ZpbiBwYXJ0cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNzRkZGU4MGJkNWQ1NWJjMTQ2NjMwODUzY2ExOTFhYWVlYTdjMzBmNApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIEFwciA5IDAyOjIwOjU5IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogcHVudCB1bnVzZWQgQkY1MzMtU1RBTVAgZGVmaW5pdGlvbnMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZmVlNTMxZWVlZmMzYjVmMmM2M2M3ZmUyN2I5ZjU1ZDkyNGM1OWMyNgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJRnJpIEFwciAxOCAyMDo0NDoxMSAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IHJlc3VycmVjdCBCRjUzMy1TVEFNUCB2aWRlbyBzcGxhc2ggZHJpdmVyCgogICAgVGhpcyB2aWRlbyBkcml2ZXIgdXNlZCB0byBsaXZlIGluIHRoZSBCbGFja2ZpbiBjcHUgZGlyZWN0b3J5LCBidXQgaXQgd2FzCiAgICBsb3N0IGR1cmluZyB0aGUgdW5pZmljYXRpb24gcHJvY2Vzcy4gIFRoaXMgYnJpbmdzIGl0IGJhY2suCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGE3NTBkMDM4ZjI1NDhkODQ2ZWExZTA0NmQ4NzNkYzkzMmQwNDEzMTkKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBBcHIgOSAwMjozMToyOSAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IHRpZ2h0ZW4gdXAgcG9zdCBtZW1vcnkgY29kaW5nIHN0eWxlCgogICAgTm8gZnVuY3Rpb25hbCBjaGFuZ2VzIGhlcmU7IGp1c3QgY2xlYW51cCBjb2RlIHN0eWxlIGEgYml0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAwNjQ5OTA4ZjkyYzliZDIxNGRkMTM5YWEzZDQ2OThjMTY1NGE0NWM2CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglXZWQgQXByIDkgMDI6Mjk6MTggMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBiZjUzNy1zdGFtcCBuYW5kOiBmaXggbW9yZSBzdHlsZSBlcnJvcnMgaW4gcHJldmlvdXMgY29tbWl0CgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDQxZjMzMjVhZTlhZGQ2NDEwMzZkN2NiMzYyZTg4NGI2OThlNTNmMDcKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBPY3QgMTEgMjA6MzE6MTcgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBkcm9wIGRlYWQvd3JvbmcgZGVidWcgY29kZSBpbiBpbml0ZHJhbSgpCgogICAgVGhlIERFQlVHIGNvZGUgaW4gaW5pdGRyYW0oKSBpcyBxdWl0ZSBvbGQgYW5kIHdhcyBuZXZlciByZWFsbHkgdXNlZnVsLCBzbwogICAganVzdCBkcm9wIGl0IGFsdG9nZXRoZXIuICBDb21tb24gQmxhY2tmaW4gZGVidWcgY29kZSBkb2VzIGEgYmV0dGVyIGpvYi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNjViYTFhYmQzYjkwZTBiMjU4NTc0NTgwOWI3OGUyNjUxYmQzYmFjYgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IE9jdCAxMSAyMDozMDoyOCAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGJmNTMzLWV6a2l0OiBzaHVmZmxlIGZsYXNoIGRlZmluZXMgYSBsaXR0bGUKCiAgICBTb21lIG9mIHRoZSBmbGFzaCBkZWZpbmVzIHdlcmVuJ3QgaW4gdGhlIGNvcnJlY3QgbG9jYXRpb24gYW5kIGNhdXNlZCBidWlsZAogICAgcHJvYmxlbXMgaW4gc29tZSBjb25maWd1cmF0aW9ucywgc28gbGV0J3MgbW92ZSB0eXBlcyBhbmQgZGVmaW5lcyB0byBiZXR0ZXIKICAgIGxvY2FsIGxvY2F0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYmU4NTNiZjg2YjQxZTkxZjRjNDIyZjBmNTZmZGY4N2VhMzE5MTI2NgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIE9jdCA2IDA0OjE2OjQ3IDIwMDggLTA0MDAKCiAgICBCbGFja2Zpbjogb3ZlcmhhdWwgaTJjIGRyaXZlcgoKICAgIFRoZSBjdXJyZW50IEJsYWNrZmluIGkyYyBkcml2ZXIgZG9lcyBub3Qgd29yayBwcm9wZXJseSB3aXRoIGNlcnRhaW4gZGV2aWNlcwogICAgZHVlIHRvIGl0IGJyZWFraW5nIHVwIHRyYW5zZmVycyBpbmNvcnJlY3RseS4gIFRoaXMgaXMgYSByZXdyaXRlIG9mIHRoZQogICAgZHJpdmVyIGFuZCByZWxvY2F0ZXMgaXQgdG8gdGhlIG5ld2VyIHBsYWNlIGluIHRoZSBzb3VyY2UgdHJlZS4KCiAgICBBbHNvIHJlbW92ZSBkdXBsaWNhdGVkIEkyQyBzcGVlZCBkZWZpbmVzIGluIEJsYWNrZmluIGJvYXJkIGNvbmZpZ3MgYW5kCiAgICBkaXNhYmxlIEkyQyBzbGF2ZSBhZGRyZXNzIHVzYWdlIHNpbmNlIGl0IGlzbid0IGltcGxlbWVudGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBiNmVkYzcxOWExMDZhYjdmYTZlNjk1MGI0ZDk3YmMzOWMxMzY4ZTQ1CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gT2N0IDYgMDQ6MDA6MDcgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiByZXNwZWN0IENPTkZJR19TWVNfTU9OSVRPUl9MRU4gZm9yIGRlZmF1bHQgZmxhc2ggcHJvdGVjdGlvbgoKICAgIFJlc3BlY3QgdGhlIENPTkZJR19TWVNfTU9OSVRPUl9MRU4gZGVmaW5lIHJhdGhlciB0aGFuIGFzc3VtaW5nIGEgc2l6ZSBvZgogICAgMTI4a0Igd2hlbiBzZXR0aW5nIHVwIHRoZSBkZWZhdWx0IGZsYXNoIHByb3RlY3Rpb24gcmVnaW9uIGZvciBVLUJvb3QKICAgIGl0c2VsZi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNzhhMGJhN2RjMjRjOTY4MjM3MWY2ZWU4NTQ5YjU2OWZiNTczYTMyOQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIE9jdCA2IDAzOjU3OjM5IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogcmVzcGVjdC9jaGVjayBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUKCiAgICBXaGVuIHNldHRpbmcgdXAgdGhlIGdsb2JhbCBkYXRhLCByYXRoZXIgdGhhbiByZWx5aW5nIG9uIHNpemVvZigpLCB1c2UgdGhlCiAgICBjb21tb24gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFIGRlZmluZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMDE4MTVjMmQwNmM1YjgzOGYyY2Q1MzY3MDNlNDdiZDJjOTE0ODE5NApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIE9jdCA2IDAzOjUyOjI0IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogaW1wbGVtZW50IGdlbmVyYWwgc3VwcG9ydCBmb3IgQ09ORklHX1NUQVRVU19MRUQKCiAgICBIZXJlIGFyZSB0aGUgQmxhY2tmaW4tc3BlY2lmaWMgYW5kIGJvYXJkLWluZGVwZW5kZW50IHBpZWNlcyBmb3Igc3RhdHVzIGxlZHMuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDY4ODJiNWE3OWEzMjQ3NDk0YjYyYzA1MDE1ZmE2NzI1NTdmMWJmYWEKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBPY3QgNiAwMzo0OTozMiAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGRvIG5vdCBpbml0IGkyYyBpbiBCbGFja2ZpbiBib2FyZCBpbml0CgogICAgVGhlIGNvbW1vbiBjb2RlIHRha2VzIGNhcmUgb2YgY2FsbGluZyBpMmNfaW5pdCgpIHdoZW4gbmVlZGVkLCBzbyBubyBwb2ludAogICAgaW4gdXMgZG9pbmcgaXQgYXMgd2VsbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMTExOGVhNzM2OThlZWU2ZTcyZWY1Y2JmYzAwZTQxNzQ2MDQwMzA0ZgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIE9jdCA2IDAzOjQyOjIwIDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogYmZpbl9tYWM6IHVwZGF0ZSBwb3J0IG11eGluZwoKICAgIEFkZHMgc3VwcG9ydCBtb3JlIEJsYWNrZmluIHBhcnRzIGFuZCBmaXhlcyBicm9rZW4gbXV4aW5nIGZvciBvbGRlciBvbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAwNWI3NWU0ODgzMmZjNGFmZWVjZjhlNzZkNzA0MzQ5NTU3ZGZmYTM1CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gT2N0IDYgMDM6MzU6NDQgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBmaXggZGNhY2hlIGhhbmRsaW5nIHdoZW4gZG9pbmcgZG1hIG1lbWNweSdzCgogICAgT3VyIGRjYWNoZSBpbnZhbGlkYXRlIGZ1bmN0aW9uIGRvZXNuJ3QganVzdCBpbnZhbGlkYXRlLCBpdCBhbHNvIGZsdXNoZXMuCiAgICBTbyByZW5hbWUgdGhlIGZ1bmN0aW9uIGFjY29yZGluZ2x5IGFuZCBmaXggdGhlIGRtYV9tZW1jcHkoKSBmdW5jdGlvbiBzbyBpdAogICAgZG9lc24ndCBpbmFkdmVydGVudGx5IGNvcnJ1cHQgdGhlIGRhdGEgZGVzdGluYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDY4ZTU2MzI0OTQxNjgwOTVkNzVmMTIwYWY3MDA0M2I2OGFmZDI0NzYKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBBdWcgNyAxODo1Njo1NiAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGRvbnQgZ2VuZXJhdGUgbGRycyB3aXRoIC0tZm9yY2UKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNzQ2MjkwZGZkODZhNzBiNDFmYzVmZGQzZGYxNDI0YTY0N2Q1YzVlOApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEF1ZyA3IDE4OjU1OjMwIDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogcGFzcyAtLWJtb2RlLy0taW5pdGNvZGUgd2hlbiBjcmVhdGluZyBsZHIKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMDMzMmU0ZGY3MWZjY2Y5YTk2YzVhNDM5M2UzYzVkNWRhYTUwODgwYQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEF1ZyA3IDE4OjM5OjI3IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogbWluaW1pemUgdGltZSBjYWNoZSBpcyB0dXJuZWQgb2ZmIHdoZW4gcmVwbGFjaW5nIGNwbGIgZW50cmllcwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAyMWQ2MzEzNjA0MzBjZjBhZTkwOTk2MTIyNzNjZDRkZTI4OTExYmE5CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgQXVnIDcgMTU6MzE6MTMgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBzcGxpdCBjYWNoZSBoYW5kbGluZyBvdXQgb2YgZG1hX21lbWNweSgpCgogICAgQ3JlYXRpbmcgYSBuZXcgZG1hX21lbWNweSgpIGZ1bmN0aW9uIHRoYXQgc2tpcHMgYWxsIGNhY2hlIGNoZWNrcyBhbGxvd3MgdXMKICAgIHRvIHVzZSB0aGUgZnVuY3Rpb24gaW4gdmVyeSBlYXJseSBpbml0IHdoZXJlIHRoZSBjYWNoZSBpcyBub3QgeWV0IHNldHVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBkMzFlYjM4NTEyYmVkMzc3ZDVkNGIzYzY5NjY2MmU1MjEyMGEyZTRjCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgQXVnIDcgMTU6MzA6NDkgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBhYm9ydCBkbWFfbWVtY3B5KCkgZm9yIEwxIHNjcmF0Y2hwYWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgODFiNzk5YWRkNzA5MTc3ZTgzODQ2NjQ2MWY3Yjk5ODk0ODhiMGZkNQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEF1ZyA3IDE1OjI3OjUyIDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogcmVuYW1lIGJvb3RtLmMgdG8gYm9vdC5jCgogICAgVGhlIGJvb3QgZmlsZSBjb250YWlucyBmdW5jdGlvbnMgZm9yIG1vcmUgdGhhbiBqdXN0ICJib290bSIsIHNvIHJlbmFtZSBpdAogICAgYWNjb3JkaW5nbHkuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGQ3Y2E3ZGQ1YmZjNDE4YWMxNzNlOWQyNzEyZjZjYzJkODE0N2EwOTEKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBBdWcgNyAxMzoyMjozNyAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IHNldCBtb3JlIHNhbmUgZGVmYXVsdCBib2FyZCBjb25maWcgdmFsdWVzCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDM2Y2Q1MmEwMDc5NGZiMTVmZmFiMDVkNjQwYWNjYTkyZDc0ODI5OTMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBBdWcgNyAxNToyNDo1OSAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGNvbnZlcnQgQ01EX0xJTkVfQUREUiB0byBDT05GSUdfTElOVVhfQ01ETElORV97QUREUixTSVpFfQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBjODA1NGJjMTJlMDA2NjliZDc1ODhmMmIzMGZlZjQ4YWE5NGJhYmFjCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgQXVnIDcgMTM6MjE6MjcgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBhZGQgYml0IGRlZmluZXMgZm9yIEREUiBwYXJ0cwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAxNTQ1MDJmZTA3OTZmM2I3YTQ2OTgzNzhjNWQyMDgwYWUyOGE5NzgyCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgQXVnIDcgMTM6MjE6MTEgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBhZGQgZGVmaW5lcyB0byBkZXNjcmliZSBhY3RpdmUgYm9vdHJvbSBiZWhhdmlvcgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAyYjZmZDVjNzdkYjljNmVkM2NlYTk3OTljODZmZjkyMmNmMDEwN2IyCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEphbiAyNyAxNjowMzo1MyAyMDA5IC0wNjAwCgogICAgbXBjODN4eDogZml4IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGZsdXNoX2NhY2hlJyBlcnJvciBpbiBzaW1wYzgzMTMgYnVpbGQKCiAgICBleHRlbmQgY29tbWl0IGM3MDU2NGU2YjFiZDA4ZjMyMzAxODIzOTIyMzg5MDdmMzUzMWE4N2UKICAgICJOQU5EOiBGaXggY2FjaGUgYW5kIG1lbW9yeSBpbmNvbnNpc3RlbmN5IGlzc3VlIiB0byBhZGQgdGhlIGNhY2hlLm8gZGVwZW5kZW5jeQogICAgdG8gdGhlIHNpbXBjODMxMyBidWlsZCBhbmQgZml4IHRoaXM6CgogICAgLi4uTGFyZ2UgUGFnZSBOQU5ELi4uQ29uZmlndXJpbmcgZm9yIFNJTVBDODMxMyBib2FyZC4uLgogICAgbmFuZF9ib290X2ZzbF9lbGJjLm86IEluIGZ1bmN0aW9uIGBuYW5kX2Jvb3QnOgogICAgbmFuZF9zcGwvYm9hcmQvc2hlbGRvbi9zaW1wYzgzMTMvbmFuZF9ib290X2ZzbF9lbGJjLmM6MTUwOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBmbHVzaF9jYWNoZScKICAgIG1ha2VbMV06ICoqKiBbL2hvbWUvcjFhYWhhL2dpdC91LWJvb3QtbXBjODN4eC9uYW5kX3NwbC91LWJvb3Qtc3BsXSBFcnJvciAxCiAgICBtYWtlOiAqKiogW25hbmRfc3BsXSBFcnJvciAyCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1NGE3Y2M0OTEyZmVlZmE0NWJlOTYxY2M0N2NjMTU5NTYzNzI1ZDJmCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEphbiAyOCAwOToyNTozMSAyMDA5ICswMTAwCgogICAgbXBjODUzNmRzLmM6IGluY2x1ZGUgc2F0YS5oIHRvIGZvciBuZWVkZWQgZnVuY3Rpb24gcHJvdG90eXBlcwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMmZiMjYwNGQ1YzIwYmViMDYxYjBhOTQyODJiN2Y2ZWIxNGQwMGNiOApBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVR1ZSBKYW4gMjcgMTg6MDM6MTIgMjAwOSAtMDYwMAoKICAgIENvbW1hbmQgdXNhZ2UgY2xlYW51cAoKICAgIFJlbW92ZSBjb21tYW5kIG5hbWUgZnJvbSBhbGwgY29tbWFuZCAidXNhZ2UiIGZpZWxkcyBhbmQgdXBkYXRlCiAgICBjb21tb24vY29tbWFuZC5jIHRvIGRpc3BsYXkgIm5hbWUgLSB1c2FnZSIgaW5zdGVhZCBvZgogICAganVzdCAidXNhZ2UiLiBBbHNvIHJlbW92ZSBuZXdsaW5lcyBmcm9tIGNvbW1hbmQgdXNhZ2UgZmllbGRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgNzk2MjFiYzEwYmE4YjhjNDVkMzQ4OTk0YWJhNWI5ZTQ5MjNjYjc3YgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVR1ZSBKYW4gMjcgMTg6MDM6MTEgMjAwOSAtMDYwMAoKICAgIGFtY2M6IENsZWFuIHVwIGNvbW1hbmQgdXNhZ2Ugb3V0cHV0CgogICAgVXBkYXRlIHRhaWh1IGFuZCB0YWlzaGFuIGNvbW1hbmRzIHRvIHVzZSBjbWRfdXNhZ2UoKSBmdW5jdGlvbgogICAgdG8gZGlzcGxheSB1c2FnZSBtZXNzYWdlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDYyYzNhZTdjNmVmMjE1YjFhZmE2MTRhYmRmNjFhY2YwNzc3NTIyMDcKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglUdWUgSmFuIDI3IDE4OjAzOjEwIDIwMDkgLTA2MDAKCiAgICBTdGFuZGFyZGl6ZSBjb21tYW5kIHVzYWdlIG1lc3NhZ2VzIHdpdGggY21kX3VzYWdlKCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDg0Y2RlMmJiNDA5YzA3YzZlZjM2YTE5MmQxOTQzNTlkNGU5Y2NkNzAKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglUdWUgSmFuIDI3IDE4OjAzOjA5IDIwMDkgLTA2MDAKCiAgICBwY3M0NDBlcDogQ2xlYW4gdXAgbGVkIGNvbW1hbmQgZGVmaW5pdGlvbgoKICAgIFRoZSBwY3M0NDBlcCdzIGxlZCBjb21tYW5kIHVzYWdlIGZvcm1hdHRpbmcgaXMgbm9uLXN0YW5kYXJkLiAgSXQKICAgIHdhcyBtYWRlIHN0YW5kYXJkIGluIHByZXBhcmF0aW9uIGZvciBsYXJnZXIgY29tbWFuZCB1c2FnZSB1cGRhdGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgOTUwN2U3ODY3ZTA0ZGM0OGM4MGVlMzMzYzJhOWE1ZTcwZTg4N2Y2MgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVR1ZSBKYW4gMjcgMTg6MDM6MDggMjAwOSAtMDYwMAoKICAgIENsZWFuIHVwIGRpdWZiIGNvbW1hbmQgZGVmaW5pdGlvbnMKCiAgICBUaGUgZGl1ZmIgY29tbWFuZCB1c2FnZSBmb3JtYXR0aW5nIGlzIG5vbi1zdGFuZGFyZC4gIEl0IHdhcwogICAgbWFkZSBzdGFuZGFyZCBpbiBwcmVwYXJhdGlvbiBmb3IgbGFyZ2VyIGNvbW1hbmQgdXNhZ2UgdXBkYXRlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDY0NTBhODQ4NTgzNmZjODA2MTVhZTZkZTZhODY0YzMzMzY5YjQ0ZjUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDI4IDAwOjI5OjI2IDIwMDkgKzAxMDAKCiAgICBVcGRhdGUgQ0hBTkdFTE9HLCB0aW55IGNvZGluZyBzdHlsZSBjbGVhbnVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgY2Y3ZTM5OWZiMzViM2FlYTkwYTI3ZDFkZjcyZjQ1ZjVkNjE1NjIwNApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIEphbiAyNyAxNjoxMjoyMSAyMDA5IC0wNTAwCgogICAgU0FUQTogZG8gbm90IGF1dG8taW5pdGlhbGl6ZSBkdXJpbmcgYm9vdAoKICAgIFJhdGhlciB0aGFuIGhhdmUgdGhlIGJvYXJkIGNvZGUgaW5pdGlhbGl6ZSBTQVRBIGF1dG9tYXRpY2FsbHkgZHVyaW5nIGJvb3QsCiAgICBtYWtlIHRoZSB1c2VyIG1hbnVhbGx5IHJ1biAic2F0YSBpbml0Ii4gIFRoaXMgYnJpbmdzIHRoZSBTQVRBIHN1YnN5c3RlbSBpbgogICAgbGluZSB3aXRoIGNvbW1vbiBVLUJvb3QgcG9saWN5LgoKICAgIFJhdGhlciB0aGFuIGhhdmluZyBhIGRlZGljYXRlZCB3ZWFrIGZ1bmN0aW9uICJpc19zYXRhX3N1cHBvcnRlZCIsIHBlb3BsZQogICAgY2FuIG92ZXJyaWRlIHNhdGFfaW5pdGlhbGl6ZSgpIHRvIGRvIHRoZWlyIHdlaXJkIGJvYXJkIHN0dWZmLiAgVGhlbiB0aGV5CiAgICBjYW4gY2FsbCB0aGUgYWN0dWFsIF9fc2F0YV9pbml0aWFsaXplKCkuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDUwOTcwODM5NzEyZGRhMzUzOTllMmZhODNmZTgxOGRmOTM1NGQ2MTgKQXV0aG9yOiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgpEYXRlOglNb24gSmFuIDI2IDA4OjQ1OjE0IDIwMDkgLTA1MDAKCiAgICBwYXJ0X2VmaTogRml4IHBhcnRpdGlvbiBzaXplIGNhbGN1bGF0aW9uIGR1ZSB0byBpbmNsdXNpdmUgZW5kaW5nIExCQS4KCiAgICBUaGUgZW5kaW5nIExCQSBpcyBpbmNsdXNpdmUuIEhlbmNlLCB0aGUgcGFydGl0aW9uIHNpemUgc2hvdWxkIGJlCiAgICAoKGVuZGluZy1MQkEgKyAxKSAtIHN0YXJ0aW5nLUxCQSkgdG8gZ2V0IHRoZSBwcm9wZXIgcGFydGl0aW9uIHNpemUuCgogICAgVGhpcyBpcyBjb25maXJtZWQgYWdhaW5zdCB0aGUgcmVzdWx0cyBmcm9tIHRoZSBwYXJ0ZWQgdG9vbC4KICAgIChlLmcuIHVzZSBwYXJ0ZWQgL2Rldi9zZGEgLXMgdW5pdCBTIHByaW50KSBhbmQgb2JzZXJ2ZSB0aGUgc2l6ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgoKY29tbWl0IGI1YjAwNGFkOGEwYWM2Zjk4YmQ1NzA4ZWM4YjIyZmJkZGQxYzEwNDIKQXV0aG9yOiBUb21hc3ogRmlnYSA8dG9tYXN6LmZpZ2FAZ21haWwuY29tPgpEYXRlOglUdWUgRGVjIDMwIDE4OjM1OjU3IDIwMDggKzAxMDAKCiAgICBqZmZzMjogRml4IHplcm8gc2VjdG9yX3NpemUgd2hlbiBub3QgdXNpbmcgQ09ORklHX0pGRlMyX0NNRExJTkUKCiAgICBUaGlzIHBhdGNoIGZpeGVzIGEgYnVnICg/KSBpbnRyb2R1Y2VkIGFmdGVyIGluY2x1c2lvbiBvZiB0aGUgbmV3CiAgICBKRkZTMiBjb2RlLgoKICAgIFdoZW4gbm90IHVzaW5nIENPTkZJR19KRkZTMl9DTURMSU5FLCB0aGUgY29kZSBpbiBjbWRfamZmczIuYyBkb2Vzbid0CiAgICBmaWxsIGluIHBhcnQtPnNlY3Rvcl9zaXplIChrZWVwaW5nIGl0IGFzIDApLCBidXQgYSBjb3JyZWN0IHZhbHVlIGlzCiAgICBuZWVkZWQgYnkgdGhlIGNvZGUgaW4gamZmczJfMXBhc3MuYy4gVGhpcyBjYXVzZXMgYWxsIEpGRlMyIGFjY2Vzc2VzCiAgICB0byBiZSBpbiB0aGUgc2FtZSBwbGFjZSBvZiB0aGUgbWVtb3J5LCB3aGF0IG9idmlvdXNseSBtZWFucwogICAgaW1wb3NzaWJpbGl0eSB0byB1c2UgdGhlIEpGRlMyIHBhcnRpdGlvbi4KCiAgICBUaGlzIHByb2JsZW0gaXMgZml4ZWQgaW4gdGhpcyBwYXRjaCBieSBpbmNsdWRpbmcgc2VjdG9yIHNpemUKICAgIGNhbGN1bGF0aW9uIGluIG5vbi1DT05GSUdfSkZGUzJfQ01ETElORSBtdGRwYXJ0c19pbml0IHZhcmlhbnQuCgogICAgU2lnbmVkLW9mZi1ieTogVG9tYXN6IEZpZ2EgPHRvbWFzei5maWdhX2F0X2dtYWlsLmNvbT4KCmNvbW1pdCBiYTY5ZGMyNmE1ZmQ2MDZkYTQ5NTczYmIyZjE1ZTc1NmEzNGYzZjk4CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgRGVjIDMwIDAyOjU5OjI1IDIwMDggLTA1MDAKCiAgICBzYXZlZW52OiBzdGFuZGFyZGl6ZSBlbmFibGVtZW50CgogICAgUmF0aGVyIHRoYW4gc3BlY2lhbCBjYXNpbmcgZWFjaCBlbnZpcm9ubWVudCB0eXBlIGZvciBlbmFibGluZyB0aGUgc2F2ZWVudgogICAgY29tbWFuZCwgaGF2ZSB0aGVtIGFsbCBiZWhhdmUgdGhlIHNhbWUuICBUaGlzIGF2b2lkcyBiaXRyb3QgYXMgbmV3IGVudgogICAgc291cmNlcyBhcmUgYWRkZWQvcmVtb3ZlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMmFjNjk4NWE3NDY2YTFjOGE3YWE4YjJmYTI0ZDM2MDkyNWE4Mjc2NApBdXRob3I6IEFuZHJldyBEeWVyIDxhZHllckByaWdodGhhbmR0ZWNoLmNvbT4KRGF0ZToJTW9uIERlYyAyOSAxNzozNjowMSAyMDA4IC0wNjAwCgogICAgc29mdF9pMmMuYyBhZGQgb3B0aW9uIGZvciByZXBlYXRlZCBzdGFydCBpbiBpMmNfcmVhZCgpCgogICAgVGhpcyBwYXRjaCBhZGRzIGEgI2RlZmluZSB0byBvcHRpb25hbGx5IGNoYW5nZSB0aGUgYmVoYXZpb3VyIG9mCiAgICBpMmNfcmVhZCgpIGluIHNvZnRfaTJjLmMgdG8gc2VuZCBhbiBJMkMgcmVwZWF0ZWQgc3RhcnQgaW5zdGVhZCBvZiBhCiAgICBzdG9wLXN0YXJ0IGJldHdlZW4gc2VuZGluZyB0aGUgZGV2aWNlIGFkZHJlc3MgcG9pbnRlciB3cml0ZSBhbmQKICAgIHJlYWRpbmcgYmFjayB0aGUgZGF0YS4gIFRoZSBjdXJyZW50IGJlaGF2aW91ciBpcyByZXRhaW5lZCBhcyB0aGUKICAgIGRlZmF1bHQuCgogICAgV2hpbGUgbW9zdCBkZXZpY2VzIHdpbGwgd29yayBlaXRoZXIgd2F5LCBJIGhhdmUgYSBzbWFydCBiYXR0ZXJ5KCopCiAgICB0aGF0IHJlcXVpcmVzIHJlcGVhdGVkIHN0YXJ0LCBhbmQgc29tZW9uZSBhdCBzb21lIHBvaW50IGZvdW5kIGEKICAgIGRldmljZSB0aGF0IHJlcXVpcmVkIGEgc3RvcC1zdGFydC4KCiAgICAoKikgaHR0cDovL3d3dy5pbnNwaXJlZC1lbmVyZ3kuY29tL1N0YW5kYXJkX1Byb2R1Y3RzL05MMjA1NC9OTDIwNTQlMjBSZXYxLjAlMjBEYXRhJTIwU2hlZXQucGRmCgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IER5ZXIgPGFkeWVyQHJpZ2h0aGFuZHRlY2guY29tPgoKY29tbWl0IDM0MjkwNzE3MDA5NjNjYTJmOTQ0YzUxZDY5NWE3NDgxYWYwY2VlMzMKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgSmFuIDI3IDIyOjA3OjE0IDIwMDkgKzAxMDAKCiAgICB7ZGVsdGEsenlsb25pdGV9L2xvd2xldmVsX2luaXQuUzogZml4IHR5cG8KCiAgICBDb21taXQgOWQ4MDNkOGMgbWlzdGFrZW5seSBjaGFuZ2VkIHNvbWUgY29uc3RhbnRzCiAgICBmcm9tIDB4MzAwIGludG8gMzAwIC0gdGhpcyBwYXRjaCBmaXhlcyBpdC4KCiAgICBQb2ludGVkIG91dCBieSBUb20gRXZhbnMgPHRvbUBjZW9zLmNvbS5hdT4sIHNlZQogICAgaHR0cDovL2FydGljbGUuZ21hbmUub3JnL2dtYW5lLmNvbXAuYm9vdC1sb2FkZXJzLnUtYm9vdC81MTk5MiBmb3IKICAgIGRldGFpbHMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAxYmM0MzQzNzMwMTNhZjI0MTgzNWMxNDAxMWFjM2YyOTFkY2NiZjUzCkF1dGhvcjogU3RlZmFuIEFsdGhvZWZlciA8c3RlZmFuLmFsdGhvZWZlckB3ZWIuZGU+CkRhdGU6CVNhdCBEZWMgMjAgMTk6NDA6NDEgMjAwOCArMDEwMAoKICAgIGRyaXZlcnMvbmV0L2UxMDAwLmM6IG1pc3NpbmcgdGVybWluYXRvciBmb3Igc3VwcG9ydGVkIGRldmljZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gQWx0aG9lZmVyIDxzdGVmYW4uYWx0aG9lZmVyQHdlYi5kZT4KCmNvbW1pdCA2NWY3ZDQxMDMxYTcwYjE2NDliMzUwMjA5OTVjNTA1ZWRjYTkxNTMzCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIEphbiAyNyAyMTozNjoyOCAyMDA5ICswMTAwCgogICAgZmF0LmM6IGZpeCB3YXJuaW5nOiBhcnJheSBzdWJzY3JpcHQgaXMgYWJvdmUgYXJyYXkgYm91bmRzCgogICAgRml4IGJhc2VkIG9uIHN1Z2dlc3Rpb24gYnkgRGF2aWQgSGF3a2lucyA8ZHdoQG92cm8uY2FsdGVjaC5lZHU+LgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMTA3YjgwMWNmM2ZlMzk2MTJkNjlkNzA1ODFlYmMzYmY1ZTIxNTU1NApBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglGcmkgSmFuIDIgMTU6MTE6NDEgMjAwOSArMDEwMAoKICAgIEZpeCBndW56aXAgaW4gY2FzZSBvZiBpbnN1ZmZpY2llbnQgb3V0cHV0IGJ1ZmZlcgoKICAgIFUtQm9vdCdzIGd1bnppcCgpIGZ1bmN0aW9uIGRvZXMgbm90IGhhbmRsZSB0aGUgcmV0dXJuIGNvZGUKICAgIG9mIHpsaWIncyBpbmZsYXRlKCkgZnVuY3Rpb24gY29ycmVjdGx5LiBndW56aXAoKSBpcyBpbXBsZW1lbnRlZAogICAgdG8gdW5jb21wcmVzcyBhbGwgaW5wdXQgZGF0YSBpbiBvbmUgcnVuLiBTbyB0aGUgY29ycmVjdCByZXR1cm4KICAgIGNvZGUgZm9yIHRoZSBnb29kIGNhc2UgaXMgWl9TVFJFQU1fRU5ELiBJbiBjYXNlIG9mIGluc3VmZmljaWVudAogICAgb3V0cHV0IGJ1ZmZlciBtZW1vcnkgaW5mbGF0ZSByZXR1cm5zIFpfT0suIEZvciBndW56aXAoKSB0aGlzCiAgICBpcyBhbiBlcnJvci4KCiAgICBJdCBhbHNvIG1ha2VzIHNlbnNlIHRvIG1lIHRvIGNhbGwgaW5mbGF0ZUVuZCgpIGFsc28gaW4gY2FzZQogICAgb2YgYW4gZXJyb3IuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgMmE2MWVmZjZhODJmMGQ2ZTIzMzVkOTY4Nzk5YjNmYmViM2ZmNGQ4ZQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEphbiAyMSAxNzoyNTowMSAyMDA5ICswMTAwCgogICAgTUlQUzogQWRkIFZDVCBib2FyZCBzZXJpZXMgc3VwcG9ydCAoUGFydCAzLzMpCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGFlNjkxZTU3MTljNDhmMWQyODI2Y2I3MjcyMjQ5N2QxZDE2Mjc2NWIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBKYW4gMjEgMTc6MjQ6NDkgMjAwOSArMDEwMAoKICAgIE1JUFM6IEFkZCBWQ1QgYm9hcmQgc2VyaWVzIHN1cHBvcnQgKFBhcnQgMi8zKQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1MDc1Mjc5MGJjOTI4NWMwYzFjNTIzNWU4OGYzYTRlZjJlZWMxZTcyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDIxIDE3OjI0OjM5IDIwMDkgKzAxMDAKCiAgICBNSVBTOiBBZGQgVkNUIGJvYXJkIHNlcmllcyBzdXBwb3J0IChQYXJ0IDEvMykKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDNkM2JmYjAwODA2YjU0NDFmMTg3MWM3NDA4YzE3NDk4NjNlMGZkYwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEphbiAyMSAxNzoyMDoyMCAyMDA5ICswMTAwCgogICAgTUlQUzogQWRkIGZsdXNoX2RjYWNoZV9yYW5nZSgpIGFuZCBpbnZhbGlkYXRlX2RjYWNoZV9yYW5nZSgpCgogICAgVGhpcyBwYXRjaCBhZGRzIGZsdXNoXy9pbnZhbGlkYXRlX2RjYWNoZV9yYW5nZSgpIHRvIHRoZSBNSVBTIGFyY2hpdGVjdHVyZS4KICAgIFRob3NlIGZ1bmN0aW9ucyBhcmUgbmVlZGVkIGZvciB0aGUgdXBjb21pbmcgZGNhY2hlIHN1cHBvcnQgZm9yIHRoZSBVU0IKICAgIEVIQ0kgZHJpdmVyLiBJIGNob3NlIHRoaXMgQVBJIGJlY2F1c2UgdGhvc2UgY2FjaGUgaGFuZGxpbmcgZnVuY3Rpb25zIGFyZQogICAgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBQUEMgYXJjaGl0ZWN0dXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgZGU4MzJhOTk0MTRmZjA2YTRiMmNkYzlmNTI4MGIzODdkYTAzOTgzNApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIEphbiAyNiAxMDowNToyMCAyMDA5ICswMTAwCgogICAgbmFuZF9zcGw6IEZpeCBjb21waWxlIHByb2JsZW0gd2l0aCBib2FyZF9uYW5kX2luaXQoKSBwcm90b3R5cGUKCiAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIG5vdyBvYnNvbGV0ZSBhbmQgYWRkaXRpb25hbGx5IHdyb25nbHkgZGVmaW5lZAogICAgYm9hcmRfbmFuZF9pbml0KCkgcHJvdG90eXBlIGZyb20gbmFuZF9zcGwvbmFuZF9ib290LmMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZThlYWM0MzcxODk0MzBkOGUwNGE1ZDI1NGVkOTJjNThiYzUzNGE3OQpBdXRob3I6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+CkRhdGU6CVdlZCBKYW4gMTQgMDg6NDQ6MjYgMjAwOSAtMDUwMAoKICAgIENGSTogQWRkIGdlb21ldHJ5IHJldmVyc2FsIGZvciBTVE1pY3JvIE0yOVczMjBFVAoKICAgIEFkZGVkIGZsYXNoX2ZpeHVwX3N0bSB0byBmaXggZ2VvbWV0cnkgcmV2ZXJzYWwgb24gU1RNaWNybyBNMjlXMzIwRVQgZmxhc2ggY2hpcC4KCiAgICBNb2RlbGVkIGFmdGVyIGZsYXNoX2ZpeHVwX2FtZCwgdGhpcyBwYXRjaCBoYW5kbGVzIHRoZSBnZW9tZXRyeSByZXZlcnNhbAogICAgb3IgZXJhc2Ugc2VjdG9ycyB0aGF0IGV4aXN0IGZvciBTVCBNaWNybyAobm93IE51bW9ueXgpIE0yOVczMjBFVCBmbGFzaC4KICAgIFNpbmNlIEkgY2Fubm90IHRlc3QgYWxsIFNUTSdzIGNoaXBzLCB0aGUgZGV0ZWN0aW9uIGlzIGltcGxlbWVudGVkIGFzCiAgICBuYXJyb3cgYXMgcG9zc2libGUgZm9yIG5vdy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDBmOGU4NTFlODk3YjUzNTk1OWEwNzgxMTcxOTEwY2Q5N2YzM2MzMGMKQXV0aG9yOiBKZW5zIEdlaHJsZWluIDxzZXdfc0B0cXMuZGU+CkRhdGU6CVR1ZSBEZWMgMTYgMTc6MjU6NTUgMjAwOCArMDEwMAoKICAgIENGSTogaW5jcmVhc2UgcGVyZm9ybWFuY2Ugb2YgZnVuY3Rpb24gZmluZF9zZWN0b3IoKQoKICAgIFRlc3RlZCBvbiBUUU01MjAwUy1CRCB3aXRoIFNhbXN1bmcgSzhQMjgxNVVRQgoKICAgIFNpZ25lZC1vZmYtYnk6IEplbnMgR2VocmxlaW4gPHNld19zQHRxcy5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhNzI5Mjg3MWE3OWNjNDhkOThlM2E3MDhkZDNjM2I4MTU4MGRiNmVmCkF1dGhvcjogSmVucyBHZWhybGVpbiA8c2V3X3NAdHFzLmRlPgpEYXRlOglUdWUgRGVjIDE2IDE3OjI1OjU0IDIwMDggKzAxMDAKCiAgICBDRkk6IGF2b2lkIHJlZHVuZGFudCBmdW5jdGlvbiBjYWxsIGluIHNpbmdsZSB3b3JkIHByb2dyYW1taW5nIG1vZGUKCiAgICBUaGUgZnVuY3Rpb24gZmluZF9zZWN0b3IoKSBkb2Vzbid0IG5lZWQgdG8gYmUgY2FsbGVkIHR3aWNlIGluCiAgICB0aGUgY2FzZSBvZiBBTUQgY29tbWFuZCBzZXQuCiAgICBUZXN0ZWQgb24gVFFNNTIwMFMtQkQgd2l0aCBTYW1zdW5nIEs4UDI4MTVVUUIuCgogICAgU2lnbmVkLW9mZi1ieTogSmVucyBHZWhybGVpbiA8c2V3X3NAdHFzLmRlPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGM4OTAxZjQ2YTcxZWMxNmUwODRlNjA0NTk2YTA5ZTIzYmZiMGY2YWMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBKYW4gMjYgMTA6MTU6MjMgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogUmVtb3ZlIGNvbXBpbGF0aW9uIHdhcm5pbmcgaW4gZ2RwcGM0NDBldGMuYwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5MWYzMzUzNDcyOGU2NDE2ZDMzMmFkMmI1M2FkMWQ2ZmRlNTdmN2ZjCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CUZyaSBKYW4gMiAxMjoxOTo0NyAyMDA5ICswMTAwCgogICAgcHBjNHh4OiBSZW1vdmUgQ09ORklHX1NZU19JR05PUkVfNDA1X1VBUlRfRVJSQVRBXzU5IGZyb20gY29uZmlnIGZpbGVzCgogICAgTG90J3Mgb2YgNDA1IGJvYXJkIGNvbmZpZyBmaWxlcyB1c2UgQ09ORklHX1NZU19JR05PUkVfNDA1X1VBUlRfRVJSQVRBXzU5LgogICAgRWl0aGVyIHRoZXkgZGVmaW5lIG9yIHVuZGVmIGl0LiBCZWNhdXNlIGl0J3Mgbm90IHVzZWQgaW4gYW55IHNvdXJjZQogICAgZmlsZXMgdGhpcyBwYXRjaCByZW1vdmVzIGFueSByZWZlcmVuY2VzIHRvIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDg5Yjg2MTlhYWVhZmM5MjJjYTBjM2JiMjQ5ODcyNTkxMDUwYzhkY2MKQXV0aG9yOiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgpEYXRlOglUdWUgRGVjIDkgMTM6MTI6NDAgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQWRkIEdEc3lzIFBvd2VyUEMgNDQwIEVUWCBib2FyZCBzdXBwb3J0LgoKICAgIEJvYXJkIHN1cHBvcnQgZm9yIHRoZSBHdW50ZXJtYW5uICYgRHJ1bmNrIFBvd2VyUEMgNDQwIEVUWCBtb2R1bGUuCiAgICBCYXNlZCBvbiB0aGUgQU1DQyBZb3NlbWl0ZSBib2FyZCBzdXBwb3J0IGJ5IFN0ZWZhbiBSb2VzZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDM5NDNkMmZmNmNjNDBkZDYwMWE5ZmVlYjM5ZWI2ZDNkNTA5MGVhNmQKQXV0aG9yOiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgpEYXRlOglUdWUgRGVjIDkgMTE6MDA6MDcgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogSW1wcm92ZSBERFIgYXV0b2RldGVjdAoKICAgIEFkZGVkIHN1cHBvcnQgZm9yIGEgc2Vjb25kIG1lbW9yeSBiYW5rIHRvIEREUiBhdXRvZGV0ZWN0aW9uIGZvciA0NDAKICAgIHBsYXRmb3Jtcy4KICAgIE1hZGUgaGFyZGNvZGVkIHZhbHVlcyBjb25maWd1cmFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3MWEwNDBmNGY1NTZjY2E0ZDMwZjA2ODA1ZDgyZTcxN2IzZWYxMDIwCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgpEYXRlOglGcmkgTm92IDIxIDEyOjA2OjI2IDIwMDggKzA5MDAKCiAgICBzaDogc2g3NzYzcmRwOiBVcGRhdGUgc2g3NzYzcmRwIGNvbmZpZwoKICAgIEFkZCBDT05GSUdfTkVUX01VTFRJIGluIGNvbmZpZyBmaWxlLCBiZWNhdXNlIHNoX2V0aCBjaGFuZ2VkIG5ldyBuZXd3b3JrIEFQSS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGJhNzA1YjViMWE5N2I0NzM4OGVkNDg4NThiZWY2YmY3YjZiZmNkNTYKQXV0aG9yOiBHYXJ5IEplbm5lam9obiA8Z2FyeWpAZGVueC5kZT4KRGF0ZToJVGh1IE5vdiAyMCAxMjoyODozOCAyMDA4ICswMTAwCgogICAgbWdjb2dlIG1ha2UgZXRoZXJfc2NjLmMgd29yayB3aXRoIENPTkZJR19ORVRfTVVMVEkKCiAgICBUaGlzIGNoYW5nZSBpcyBuZWVkZWQgZm9yIG1nY29nZSBiZWNhdXNlIGl0IHVzZXMgdHdvIGV0aGVybmV0IGRyaXZlcnMuCgogICAgQWRkIGEgY2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiB0aGUgUElHR1kgYm9hcmQgb24gbWdjb2dlLglXaXRob3V0IHRoaXMKICAgIGJvYXJkIG5ldHdvcmtpbmcgY2Fubm90IHdvcmsgYW5kIHRoZSBpbml0aWFsaXphdGlvbiBtdXN0IGJlIGFib3J0ZWQuCgogICAgT25seSBhbGxvY2F0ZSBydHggb25jZSB0byBwcmV2ZW50IERQUkFNIGV4aGF1c3Rpb24uCgogICAgSW5pdGlhbGl6ZSBldGhlcl9zY2MuYyBhbmQgdGhlIGtleW1pbGUtc3BlY2lmaWMgSERMQyBkcml2ZXIgKHRvIGJlIGFkZGVkCiAgICBzb29uKSBpbiBldGguYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHYXJ5IEplbm5lam9obiA8Z2FyeWpAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYmQzOTgwY2MwOTVhZjE3MjhiOTk0Y2RkOGJmMWFjNDMwYjYyODllNgpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJRnJpIE5vdiAyMSAxMjowNDoxOCAyMDA4ICswOTAwCgogICAgc2g6IHNoX2V0aDogQ2hhbmdlIG5ldyBuZXR3b3JrIEFQSQoKICAgIHNoX2V0aCB1c2VkIG9sZCBuZXR3b3JrIEFQSS4gVGhpcyBwYXRjaCBjaGFuZ2VkIG5ldyBBUEkuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA4OTBhMDJlOGVlNmI4YzI2YTZlM2U1MDVlMWEyZDI5Y2Q3M2FhNmY2CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgTm92IDEyIDEzOjMxOjAyIDIwMDggKzAxMDAKCiAgICBuZXQ6IHNtYzkxMXg6IE1ha2UgcmVnaXN0ZXIgcmVhZC93cml0ZSBmdW5jdGlvbnMgd2VhawoKICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgcmVnX3JlYWQvX3dyaXRlIHRvIHNtYzkxMXhfcmVnX3JlYWQvX3dyaXRlCiAgICBhbmQgZGVmaW5lcyB0aGVuIGFzIHdlYWsgc28gdGhhdCB0aGV5IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGJvYXJkCiAgICBzcGVjaWZpYyB2ZXJzaW9uLgoKICAgIFRoaXMgd2lsbCBiZSB1c2VkIGJ5IHRoZSB1cGNvbWluZyBWQ1RIIGJvYXJkIHN1cHBvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA4YjY5YjU2MzAzOTk4OTg4NTk2OWQyNDQ2NWM1NmY4YWM0YzA3YzRjCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVRodSBOb3YgMjAgMDk6NTc6MTQgMjAwOCArMDEwMAoKICAgIHBvd2VycGM6IG5ldDogc3VwcG9ydCBmb3IgdGhlIFNNU0MgTEFOODcwMCBQSFkKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZDUyNTRmMTQ5ZGE5ZTZjZDY0OWQ4ODdiMDQyY2U1NzdlZjNiYTc4ZApBdXRob3I6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+CkRhdGU6CVNhdCBKYW4gMjQgMTg6MTA6MzcgMjAwOSArMDEwMAoKICAgIEluaXRpYWwgc3VwcG9ydCBmb3IgTm9tYWRpayA4ODE1IGRldmVsb3BtZW50IGJvYXJkCgogICAgVGhlIE5NREs4ODE1IGJvYXJkIGlzIGRpc3RyaWJ1dGVkIGJ5IFNUIE1pY3JvZWxlY3Rvcm5pY3MuCiAgICBPdGhlciAocHJvcHJpZXRhcnkpIGNvZGUgbXVzdCBiZSBydW4gdG8gdW5sb2NrIHRoZSBDUFUgYmVmb3JlCiAgICBVLUJvb3QgcnVucy4gZG9jL1JFQURNRS5ubWRrODgxNSBvdXRsaW5lcyB0aGUgYm9vdCBzZXF1ZW5jZS4KCiAgICBUaGlzIGlzIHRoZSBpbml0aWFsIHBvcnQsIHdpdGggYmFzaWMgaW5mcmFzdHJ1Y3R1cmUgYW5kCiAgICBhIHdvcmtpbmcgc2VyaWFsIHBvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUB1bmlwdi5pdD4KICAgIEFja2VkLWJ5OiBBbmRyZWEgR2FsbG8gPGFuZHJlYS5nYWxsb0BzdG53aXJlbGVzcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDdkMjY0YzFlZjI2N2NmYzhkOTI4YmM4NTc3YTdjYzkwN2YyZjVlNDcKQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgpEYXRlOglTdW4gRGVjIDE0IDA5OjQ3OjE4IDIwMDggKzAxMDAKCiAgICBPTUFQMzogQWRkIEkyQyBzdXBwb3J0CgogICAgQWRkIEkyQyBzdXBwb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Cgpjb21taXQgYjFjM2JmOTlmYjQ3NzY3NWQ0NjRhZWFkYjVkZDY5ZDJjYmM5ZGM3YgpBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVN1biBEZWMgMTQgMDk6NDc6MTcgMjAwOCArMDEwMAoKICAgIE9NQVAzOiBBZGQgTU1DIHN1cHBvcnQKCiAgICBBZGQgTU1DIHN1cHBvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KCmNvbW1pdCAxMjIwMWExMzU0N2VjMjJkZGNkYWUyNzhlNzQ0NjVlNTRhM2JlNjBjCkF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KRGF0ZToJU3VuIERlYyAxNCAwOTo0NzoxNiAyMDA4ICswMTAwCgogICAgT01BUDM6IEFkZCBOQU5EIHN1cHBvcnQKCiAgICBBZGQgTkFORCBzdXBwb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pc2hhbnRoIE1lbm9uIDxubUB0aS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTeWVkIE1vaGFtbWVkIEtoYXNpbSA8a2hhc2ltQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Cgpjb21taXQgOTFlZWU1NDY3MzdhZTIxZDkzMGFmNDc5NTMwOTk3MTc0YzM0MmIxMwpBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVN1biBEZWMgMTQgMDk6NDc6MTUgMjAwOCArMDEwMAoKICAgIE9NQVAzOiBBZGQgY29tbW9uIGJvYXJkLCBpbnRlcnJ1cHQgYW5kIHN5c3RlbSBpbmZvCgogICAgQWRkIGNvbW1vbiBib2FyZCwgaW50ZXJydXB0IGFuZCBzeXN0ZW0gaW5mbyBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Cgpjb21taXQgNWVkM2U4NjU5ZTUzNzNmNmEyMjk4NzdhYzUwNmMwYjAwYTA1NGZiOApBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVN1biBEZWMgMTQgMDk6NDc6MTQgMjAwOCArMDEwMAoKICAgIE9NQVAzOiBBZGQgY29tbW9uIGNsb2NrLCBtZW1vcnkgYW5kIGxvdyBsZXZlbCBjb2RlCgogICAgQWRkIGNvbW1vbiBjbG9jaywgbWVtb3J5IGFuZCBsb3cgbGV2ZWwgY29kZQoKICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Cgpjb21taXQgMGIwMmIxODQwMDNlNmE1MDIzZTA1ZDVmMzFkZTU0ZGIyNzliMTQzMQpBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVN1biBEZWMgMTQgMDk6NDc6MTMgMjAwOCArMDEwMAoKICAgIE9NQVAzOiBBZGQgY29tbW9uIGNwdSBhbmQgc3RhcnQgY29kZQoKICAgIEFkZCBjb21tb24gY3B1IGFuZCBzdGFydCBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Cgpjb21taXQgYThiNjQ1MDU0NmNkNTA3ZDMzMWI4ZmRlMzg0NzkxZDg0YmRlNTY1MQpBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVN1biBEZWMgMTQgMDk6NDc6MTIgMjAwOCArMDEwMAoKICAgIE9NQVAzOiBBZGQgT01BUDMsIG1lbW9yeSBhbmQgZnVuY3Rpb24gcHJvdG90eXBlIGhlYWRlcnMKCiAgICBBZGQgT01BUDMsIG1lbW9yeSBhbmQgZnVuY3Rpb24gcHJvdG90eXBlIGhlYWRlciBmaWxlcyBmb3IgT01BUDMuCgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KCmNvbW1pdCAyYzgwMzIxMGE0NjRhYmJhYzM1NzUyY2ExYzczNzUxNDM2MGI0YzMyCkF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KRGF0ZToJU3VuIERlYyAxNCAwOTo0NzoxMSAyMDA4ICswMTAwCgogICAgT01BUDM6IEFkZCBwaW4gbXV4LCBjbG9jayBhbmQgY3B1IGhlYWRlcnMKCiAgICBBZGQgcGluIG11eCwgY2xvY2sgYW5kIGNwdSBoZWFkZXIgZmlsZXMgZm9yIE9NQVAzLgoKICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Cgpjb21taXQgNjg1NTMzNjQ2ZjRmZjE3YTg0ZWM5MjY1Y2FiYjYwYWYzMjViNmUxZgpBdXRob3I6IE1heGltIEFydGFtb25vdiA8c2NuMTg3NEB5YW5kZXgucnU+CkRhdGU6CVdlZCBEZWMgMyAwNTozODoxNyAyMDA4ICswMzAwCgogICAgYnVnZml4IGZvciBpLm14MzEgQ0NNX1VQQ1RMIHJlZwoKICAgIFNpZ25lZC1vZmYtYnk6IE1heGltIEFydGFtb25vdiA8c2NuMTg3NCBhdCB5YW5kZXgucnU+Cgpjb21taXQgMjQxMTNhNDRlZDVjZDMyNTdhMDIzN2MzOTYxZTEyMTgxMmZjYTZkYgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIERlYyAzMCAwMzoxNTozOCAyMDA4IC0wNTAwCgogICAgZWFzeWxvZ286IGFkZCBvcHRpb25hbCBnemlwIHN1cHBvcnQKCiAgICBTb21lIGltYWdlcyBjYW4gYmUgcXVpdGUgbGFyZ2UsIHNvIGFkZCBhbiBvcHRpb24gdG8gY29tcHJlc3MgdGhlCiAgICBpbWFnZSBkYXRhIHdpdGggZ3ppcCBpbiB0aGUgVS1Cb290IGltYWdlLiBUaGVuIGF0IHJ1bnRpbWUsIHRoZQogICAgYm9hcmQgY2FuIGRlY29tcHJlc3MgaXQgd2l0aCB0aGUgbm9ybWFsIHpsaWIgZnVuY3Rpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA3ZTRiOWI0ZjZmNDM4MzhmYWQzYWQ3MmMwMjlhM2Q3ZmM3YzdkNDhjCkF1dGhvcjogQnJ5YW4gV3UgPGJyeWFuLnd1QGFuYWxvZy5jb20+CkRhdGU6CUZyaSBKYW4gMiAyMDo0Nzo0NSAyMDA5IC0wNTAwCgogICAgZmF0OiBmaXggdW5hbGlnbmVkIGVycm9ycwoKICAgIEEgY291cGxlIG9mIGJ1ZmZlcnMgaW4gdGhlIGZhdCBjb2RlIGFyZSBkZWNsYXJlZCBhcyBhbiBhcnJheSBvZiBieXRlcy4KICAgIEJ1dCBpdCBpcyB0aGVuIGNhc3QgdXAgdG8gYSBzdHJ1Y3R1cmUgd2l0aCAxNmJpdCBhbmQgMzJiaXQgbWVtYmVycy4KICAgIFNpbmNlIEdDQyBhc3N1bWVzIHN0cnVjdHVyZSBhbGlnbm1lbnQgaGVyZSwgd2UgaGF2ZSB0byBmb3JjZSB0aGUKICAgIGJ1ZmZlcnMgdG8gYmUgYWxpZ25lZCBhY2NvcmRpbmcgdG8gdGhlIHN0cnVjdHVyZSB1c2FnZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCcnlhbiBXdSA8YnJ5YW4ud3VAYW5hbG9nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA2OGY4NzE4ZGYyZWQ0YzJmNDMwMzE0MDdjY2Y2Y2ZhODExMjVkZGRjCkF1dGhvcjogQnJhZCBCb3phcnRoIDxiZmxpbnV4QHl1bWJyYWQuY29tPgpEYXRlOglUaHUgSmFuIDEgMjI6NDU6NDcgMjAwOSAtMDUwMAoKICAgIHNwaSBmbGFzaDogZml4IGNyYXNoIGR1ZSB0byBzcGkgZmxhc2ggbWlzY29tbXVuaWNhdGlvbgoKICAgIEhpZ2hlciBzcGkgZmxhc2ggbGF5ZXJzIGV4cGVjdCB0byBiZSBnaXZlbiBiYWNrIGEgcG9pbnRlciB0aGF0IHdhcwogICAgbWFsbG9jZWQgc28gdGhhdCBpdCBjYW4gZnJlZSB0aGUgcmVzdWx0LCBidXQgdGhlIGxvd2VyIGxheWVycyByZXR1cm4KICAgIGEgcG9pbnRlciB0aGF0IGlzIGluIHRoZSBtaWRkbGUgb2YgdGhlIG1hbGxvY2VkIG1lbW9yeS4gUmVvcmRlciB0aGUKICAgIG1lbWJlcnMgb2YgdGhlIGxvd2VyIHNwaSBzdHJ1Y3R1cmVzIHNvIHRoYXQgdGhpbmdzIHdvcmsgb3V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEJyYWQgQm96YXJ0aCA8YmZsaW51eEB5dW1icmFkLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIEFja2VkLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgY2U4MmZmMDUzODhiNWRkYWZkZjYwODJlZjA3NzZjY2U3MmM0MGIxYwpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KRGF0ZToJU2F0IERlYyAyMCAxNDo1NDoyMSAyMDA4ICswMzAwCgogICAgRlBVIFBPU1Q6IGZpeCB3YXJuaW5ncyB3aGVuIGJ1aWxkaW5nIHdpdGggMi4xOCBiaW51dGlscwoKICAgIFdoZW4gY29tcGlsZSB1LWJvb3Qgd2l0aCB0aGUgMi4xOCBiaW51dGlscyB0aGUgZm9sbG93aW5nCiAgICB3YXJuaW5nIG1lc3NhZ2VzIGZvciBlYWNoIG9iamVjdCBmaWxlIGluIHBvc3QvbGliX3BwYy9mcHUvIGlzCiAgICBwcm9kdWNlZCBhdCB0aGUgbGlua2luZyBzdGFnZToKCiAgICBwb3N0L2xpYnBvc3QuYShhY2MxLm8pIHVzZXMgaGFyZCBmbG9hdCwgdS1ib290IHVzZXMgc29mdC1mbG9hdAogICAgLi4uCgogICAgVGhpcyBpcyBiZWNhdXNlIG9mIHRoZSBmYWN0IHRoYXQsIGluIGdlbmVyYWwsIHRoZSBzb2Z0LWZsb2F0IGFuZAogICAgaGFyZC1mbG9hdCBBQklzIGFyZSBpbmNvbXBhdGlibGU7IHRoZSAyLjE4IGJpbnV0aWxzIGRvIGNoZWNraW5nCiAgICBvZiB0aGUgVGFnX0dOVV9Qb3dlcl9BQklfRlAgYXR0cmlidXRlIG9mIHRoZSBmaWxlcyB0byBiZSBsaW5rZWQsIGFuZAogICAgcHJvZHVjZSB0aGUgd29ybmluZyBsaWtlIGFib3ZlIGlmIHRoZXNlIGFyZSBub3QgY29tcGF0aWJsZS4KCiAgICBUaGUgaW5jb21wYXRpYmlsaXR5IG9mIEFCSXMgaXMgY29uY2VybmVkIG9ubHkgdGhlIGZsb2F0IHZhbHVlczoKICAgIGUuZy4gdGhlIHNvZnQtZmxvYXQgQUJJIGFzc3VtZXMgdGhlIGZsb2F0IGFyZ3VtZW50IHBhc3NpbmcgaW4gdGhlCiAgICBwYWlyIG9mIHJYIHJlZ2lzdGVycywgYW5kIHRoZSBoYXJkLWZsb2F0IEFCSSBhc3N1bWVzIHBhc3Npbmcgb2YKICAgIHRoZSBmbG9hdCBhcmd1bWVudCBpbiB0aGUgZlggcmVnaXN0ZXIuIFdoZW4gd2UgZG9uJ3QgcGFzcyB0aGUgZmxvYXQKICAgIGFyZ3VtZW50cyBiZXR3ZWVuIHRoZSBmdW5jdGlvbnMgY29tcGlsZWQgd2l0aCBkaWZmZXJlbnQgZmxvYXRuZXNzLAogICAgdGhlbiBzdWNoIGFuIGFwcGxpY2F0aW9uIHdpbGwgd29yayBjb3JyZWN0bHkuCiAgICBUaGlzIGlzIHRoZSBjYXNlIGZvciB0aGUgRlBVIFBPU1Q6IHUtYm9vdCAoY29tcGlsZWQgd2l0aCBzb2Z0LWZsb2F0KQogICAgZG9lc24ndCBwYXNzIHRvIChhbmQgZG9lc24ndCBnZXQgZnJvbSkgdGhlIEZQVSBQT1NUIGZ1bmN0aW9ucyBhbnkKICAgIGZsb2F0czsgdGhlcmUgYXJlIG5vIGZ1bmN0aW9ucyBleHBvcnRlZCBmcm9tIHRoZSBwb3N0L2xpYl9wcGMvZnB1LwogICAgb2JqZWN0cyB3aGljaCB3b3VsZCB3b3JrIHdpdGggZmxvYXQgcGFyYW1ldGVycy9yZXR1cm5zIHRvby4gU28sIHdlCiAgICBjYW4gcmVhc3N1cmUgdGhlIGxpbmtlciBub3QgdG8gd29ycnkgYWJvdXQgdGhlIGRpZmZlcmVuY2UgaW4gQUJJCiAgICBhdHRyaWJ1dGVzIG9mIGxpbmtpbmcgZmlsZXMganVzdCBieSBzZXR0aW5nIHRoZSAnc29mdC1mbG9hdCcKICAgIGF0dHJpYnV0ZSBmb3IgdGhlIG9iamVjdHMgaW4gcG9zdC9saWJfcHBjL2ZwdS4gQW5kIHRoaXMgcGF0Y2ggZG9lcwogICAgdGhpcy4KCiAgICBBbHNvLCB0byBhdm9pZCBwYXNzaW5nIGJvdGggc29mdC0gYW5kIGhhcmQtZmxvYXQgb3B0aW9ucyBpbiBDRkxBR1MKICAgIHdoZW4gY29tcGlsaW5nIHRoZSBmaWxlcyBmcm9tIHBvc3QvbGliX3BwYy9mcHUgKHdoaWNoIGlzIE9LLCBidXQKICAgIGxvb2tzIHJhdGhlciBkaXJ0eSkgdGhpcyBwYXRjaCByZW1vdmVzIHRoZSBzb2Z0LWZsb2F0IHN0cmluZyBmcm9tCiAgICBDRkxBR1MgaW4gcG9zdC9saWJfcHBjL2ZwdS9NYWtlZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgYTdjOTMxMDQ1N2U4NWI0NTk4YWJlNWIzMDQxMDhlZGYxMTMzMmUyZgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVdlZCBEZWMgMTcgMTY6MzY6MjIgMjAwOCAtMDYwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBNYXhpbSdzIERTNDUxMCBJMkMgZGV2aWNlCgogICAgSW5pdGlhbCBzdXBwb3J0IGZvciB0aGUgRFM0NTEwLCBhIENQVSBzdXBlcnZpc29yIHdpdGgKICAgIGludGVncmF0ZWQgRUVQUk9NLCBTUkFNLCBhbmQgNCBwcm9ncmFtbWFibGUgbm9uLXZvbGF0aWxlCiAgICBHUElPIHBpbnMuIFRoZSBDT05GSUdfRFM0NTEwIGRlZmluZSBlbmFibGVzIHN1cHBvcnQKICAgIGZvciB0aGUgZGV2aWNlIHdoaWxlIHRoZSBDT05GSUdfQ01EX0RTNDUxMCBkZWZpbmUKICAgIGVuYWJsZXMgdGhlIGRzNDUxMCBjb21tYW5kLiBUaGUgYWRkaXRpb25hbAogICAgQ09ORklHX0RTNDUxMF9JTkZPLCBDT05GSUdfRFM0NTEwX01FTSwgYW5kCiAgICBDT05GSUdfRFM0NTEwX1JTVCBkZWZpbmVzIGFkZCBhZGRpdGlvbmFsIHN1Yi1jb21tYW5kcwogICAgdG8gdGhlIGRzNDUxMCBjb21tYW5kIHdoZW4gZGVmaW5lZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IGI2ZmM2ZmQ0OWE4NDU0M2UxMzI0ZTE2MjBiOWYzMDFmZjdjMWYyN2YKQXV0aG9yOiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgpEYXRlOglUdWUgRGVjIDE2IDE0OjUxOjU2IDIwMDggKzAxMDAKCiAgICBjb21tb246IEl0ZXJhdGlvbiBsaW1pdCBmb3IgbWVtb3J5IHRlc3QuCgogICAgVGhlIGl0ZXJhdGlvbiBsaW1pdCBpcyBwYXNzZWQgdG8gbXRlc3QgYXMgYSBmb3VydGggcGFyYW1ldGVyOgogICAgW3N0YXJ0IFtlbmQgW3BhdHRlcm4gW2l0ZXJhdGlvbnNdXV1dCiAgICBJZiBubyBmb3VydGggcGFyYW1ldGVyIGlzIHN1cHBsaWVkLCB0aGVyZSBpcyBubyBpdGVyYXRpb24gbGltaXQgYW5kIHRoZQogICAgdGVzdCB3aWxsIGxvb3AgZm9yZXZlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgoKY29tbWl0IDk3Y2FlM2E0YzY4ZDg1NjM3NGNjYzcwZmQyYzVmODcxNGNjOTRmN2QKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBEZWMgMTUgMTU6NDA6MTIgMjAwOCArMDEwMAoKICAgIHNlcmlhbDogUmVuYW1lIGRyaXZlciB2Y3RoIHRvIHZjdCB0byBzdXBwb3J0IG90aGVyIGJvYXJkIHZhcmlhbnRzCgogICAgTW92ZWQgZHJpdmVyIHZjdGguYyB0byB2Y3QuYyB0byBiZXR0ZXIgcmVmbGVjdCB0aGUgVkNUIGJvYXJkIHNlcmllcy4KICAgIFRoaXMgZHJpdmVyIGlzIG5vdyB1c2VkIGJ5IHRoZSBWQ1QgcGxhdGZvcm1zOgoKICAgIHZjdF9wcmVtaXVtCiAgICB2Y3RfcGxhdGludW0KICAgIHZjdF9wbGF0aW51bXN2YwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzNmVkZTRkNjNlNTljOTI3N2VjMTgwYjA5YzM5YjhiZjQ2NDI1YmEyCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJRnJpIERlYyAxMiAwMDo0NToyNyAyMDA4ICswOTAwCgogICAgbmlvczogTW92ZSBSRUFETUUubmlvc19DT05GSUdfU1lTX05JT1NfQ1BVIHRvIGRvYy8gZGlyCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCBjMzI4NGIwMzBiMWNkNDkyYjRmNDZjNTc2YWVhMDFiZWYyNTg1OTlkCkF1dGhvcjogUGV0ZXIgS29yc2dhYXJkIDxqYWNtZXRAc3Vuc2l0ZS5kaz4KRGF0ZToJV2VkIERlYyAxMCAxNjoyNDoxNiAyMDA4ICswMTAwCgogICAgY29tbW9uL21haW46IHN1cHBvcnQgYm9vdGRlbGF5PTAgZm9yIENPTkZJR19BVVRPQk9PVF9LRVlFRAoKICAgIFN1cHBvcnQgYm9vdGRlbGF5PTAgaW4gYWJvcnRib290IGZvciB0aGUgQ09ORklHX0FVVE9CT09UX0tFWUVEIGNhc2UKICAgIHNpbWlsYXIgdG8gdGhlIENPTkZJR19aRVJPX0JPT1RERUxBWV9DSEVDSyBzdXBwb3J0IGZvciB0aGUKICAgICFDT05GSUdfQVVUT0JPT1RfS0VZRUQgY2FzZS4KCiAgICBEbyB0aGlzIGJ5IHJldmVyc2luZyB0aGUgbG9vcCBzbyB3ZSBkbyBhdCBsZWFzdCBvbmUgaXRlcmF0aW9uIGJlZm9yZQogICAgY2hlY2tpbmcgZm9yIHRpbWVvdXQuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgS29yc2dhYXJkIDxqYWNtZXRAc3Vuc2l0ZS5kaz4KCmNvbW1pdCA5NGY5Mjc5ZjdiYmRjMDFiYmM3Y2Y4NWFlZGY5YjU0NTk0M2I5NGMzCkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KRGF0ZToJTW9uIERlYyA4IDE3OjI0OjA4IDIwMDggKzAxMDAKCiAgICBBZGRlZCBsZWdhY3kgZmxhc2ggU1QgTWljcm8gTTI5VzA0MEIKCmNvbW1pdCA2MjZkMDczNDhlNWY5ZjMwMmY0ZWExODIxNjFhODlmNzM2MmEwNDg4CkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJTW9uIERlYyA4IDIwOjA0OjUxIDIwMDggKzExMDAKCiAgICBGaXhlZCBvZmYtYnktb25lIGVycm9ycyBpbiBsaWJfbTY4ay9pbnRlcnJ1cHRzLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgoKY29tbWl0IGE1OTg5YzQyYWU1ZTI5NWYyNzRhNzk1YzQyNmM0NzgxOWJiZGJmZGEKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglTdW4gRGVjIDcgMTA6Mjk6MDUgMjAwOCArMTEwMAoKICAgIFJlbW92ZWQgYWxsIHJlZmVyZW5jZXMgdG8gQ09ORklHX1NZU19SRVNFVF9HRU5FUklDCgogICAgR2VuZXJpYyBpMzg2IHJlc2V0IC0gI2RlZmluZSBtYWRlIHJlZHVuZGFudCBieSB3ZWFrIGZ1bmN0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KCmNvbW1pdCAyYjUzNjBlYjJiYzBiNzQxYWU1Y2IzYzg0ZDM1Y2NkZDE3NjY3YzhhCkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJU3VuIERlYyA3IDEwOjI5OjA0IDIwMDggKzExMDAKCiAgICBSZW1vdmUgI2lmZGVmIENPTkZJR19TQzUyMCBpbiBzb3VyY2UgY29kZQoKICAgIENPTkZJR19TQzUyMCBpcyBub3cgdXNlZCBmb3IgY29uZGl0aW9uYWwgY29tcGlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Cgpjb21taXQgZWFkMDU2YmMyMDZmNmI3ZWU2ZGM5ODc2NjY3OGI2NDYzNWVhMjBiOApBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CVN1biBEZWMgNyAxMDoyOTowMyAyMDA4ICsxMTAwCgogICAgQWRkZWQgTU1DUiByZXNldCBmdW5jdGlvbmFsaXR5CgogICAgUmVzZXQgZnVuY3Rpb24gc3BlY2lmaWMgdG8gQU1EIFNDNTIwIG1pY3JvY29udHJvbGxlciAtIElzIG1vcmUgb2YgYQogICAgJ2hhcmQgcmVzZXQnIHRoYXQgdGhlIHRyaXBsZSBmYXVsdC4KCiAgICBSZXF1aXJlcyBDT05GSUdfU1lTX1JFU0VUX1NDNTIwIHRvIGJlIGRlZmluZWQgaW4gY29uZmlnCgogICAgSSB3b3VsZCBoYXZlIGxpa2VkIHRvIGFkZCB0aGlzIHRvIGEgbmV3IGZpbGUgKGNwdS9pMzg2L3NjNTIwL3Jlc2V0LmMpCiAgICBidXQgbGQgcmVxdWlyZXMgdGhhdCBhIG9iamVjdCBmaWxlIGluIGEgbGlicmFyeSBhcmhpdmUgTVVTVCBjb250YWluCiAgICBhdCBsZWFzdCBvbmUgZnVuY3Rpb24gd2hpY2ggZG9lcyBub3Qgb3ZlcnJpZGUgYSB3ZWFrIGZ1bmN0aW9uIChhbmQgaXMKICAgIGNhbGxlZCBmcm9tIG91dHNpZGUgdGhlIG9iamVjdCBmaWxlKSBpbiBvcmRlciBmb3IgdGhhdCBvYmplY3QgZmlsZSB0bwogICAgYmUgZXh0cmFjdGVkIGZyb20gdGhlIGFyY2hpdmUuIFRoaXMgd291bGQgYmUgdGhlIG9ubHkgZnVuY3Rpb24gb24gdGhlCiAgICBuZXcgZmlsZSwgYW5kIGhlbmNlLCB3aWxsIG5ldmVyIGdldCBsaW5rZWQgaW4uCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KCmNvbW1pdCAzZjVmMThkMTJkMzJlZTA2NjFiZjUxZGZjNTU3NTJjMDA1MjMwZDZlCkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJU3VuIERlYyA3IDEwOjI5OjAyIDIwMDggKzExMDAKCiAgICBNb3ZlZCBnZW5lcmljICh0cmlwbGUgZmF1bHQpIHJlc2V0IGNvZGUKCiAgICBNb3ZlZCBmcm9tIGludGVycnVwdHMuYyB0byBjcHUuYyBhbmQgbWFkZSBpbnRvIGEgd2VhayBmdW5jdGlvbiB0bwogICAgYWxsb3cgdmVuZG9yIHNwZWNpZmljIG92ZXJyaWRlCgogICAgVmVuZG9yIHNwZWNpZmljIENQVSByZXNldCAobGlrZSB0aGUgQU1EIFNDNTIwIE1NQ1IgcmVzZXQpIGNhbiBub3cgYmUKICAgIGFkZGVkIHRvIHRoZSB2ZW5kb3Igc3BlY2lmaWMgY29kZSB3aXRob3V0IHRoZSBuZWVkIHRvIHJlbWVtYmVyIHRvCiAgICAjdW5kZWYgdXNhZ2Ugb2YgdGhlIGdlbmVyaWMgbWV0aG9kIGFuZCBpZiB5b3UgZm9yZ2V0IHRvIGluY2x1ZGUgeW91cgogICAgY3VzdG9tIHJlc2V0IG1ldGhvZCwgeW91IHdpbGwgYWx3YXlzIGdldCB0aGUgZGVmYXVsdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgoKY29tbWl0IDk5MzNkNjA5MDIwYzI5Nzc4OGY1M2YzMzRjODQ2NWZhN2E5OWIxMGMKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglTdW4gRGVjIDcgMTA6Mjk6MDEgMjAwOCArMTEwMAoKICAgIE1vdmVkIGRlZmluaXRpb24gb2Ygc2V0X3ZlY3RvcigpIHRvIG5ldyBoZWFkZXIgZmlsZQoKICAgIFRoaXMgYWxsb3dzIGZvciBmdXR1cmUgdGlkeSB1cHMgYW5kIGZ1bmN0aW9uYWxpdHkgdGhhdCB3aWxsIHJlcXVpcmUKICAgIHNldF92ZWN0b3IgKCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgoKY29tbWl0IDQwNzk3NjE4NWUwZGRhMmM5MGU4OTAyNzEyMWExMDcxYjljNzdiZmIKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglTdW4gRGVjIDcgMTA6Mjk6MDAgMjAwOCArMTEwMAoKICAgIE1vdmVkIHNjNTIwIHNwZWNpZmljIGNvZGUgaW50byBuZXcgY3B1L2kzODYvc2M1MjAgZm9sZGVyCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgODVmZmJiZDUxOTE0OTI1YTU0MmQ4NTI4YmU3ZjA3MmU1YWIwMjE1NwpBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CVN1biBEZWMgNyAxMDoyODo1OCAyMDA4ICsxMTAwCgogICAgUmVuYW1lZCBjcHUvaTM4Ni9yZXNldC5TIHRvIHJlc2V0dmVjLlMKCiAgICBCcmluZ3MgaTM4NiBpbiBsaW5lIHdpdGggb3RoZXIgQ1BVcyB3aXRoIGEgcmVzZXQgdmVjdG9yIGFuZCBmcmVlcyB1cCByZXNldC5jCiAgICBmb3IgQ1BVIHJlc2V0IGZ1bmN0aW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Cgpjb21taXQgYTNmNGMxMjNmNTY5NDc0ZTgwZWEwMTJiOGRiMGRlNDZhZmRiNjQ0MwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBKYW4gMjQgMDE6MDE6NDkgMjAwOSArMDEwMAoKICAgIE1ha2VmaWxlOiBrZWVwIGxpc3RzIHNvcnRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGM2MjBjMDFlOTY4MTQ1NTg0NzA2OThlZDVjYWIxYmYyZjUwNGQxYjUKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglTdW4gRGVjIDcgMTA6Mjg6NTcgMjAwOCArMTEwMAoKICAgIEFkZGVkIGluaXRpYWwgZU5FVCBib2FyZCBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KCmNvbW1pdCAwYzBjY2Y0MDFlZTAzYTUwMDhmYzJjMTliMDVhNjYyYmNlMWExMDg2CkF1dGhvcjogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+CkRhdGU6CVRodSBOb3YgMjAgMTE6Mzc6MjYgMjAwOCArMDEwMAoKICAgIFBPV0VSUEMgODJ4eDogYWRkIHRoZSBTQ0MgYXMgYW4gSERMQyBjb250cm9sbGVyCgogICAgUmlnaHQgbm93IHRoaXMgaXMgb25seSB1c2VkIGJ5IGtleW1pbGUuCgogICAgU2lnbmVkLW9mZi1ieTogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+Cgpjb21taXQgMWU4ZjRlNzhjYTM5M2IzZDhlODZiZDgwNTU3NThkZDQ2NWQ5MTEzZgpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglUaHUgTm92IDIwIDA5OjU5OjA5IDIwMDggKzAxMDAKCiAgICBwb3dlcnBjLCBrZXltaWxlIGJvYXJkczogZXh0cmFjdCBpZGVudGljYWwgY29uZmlnIG9wdGlvbnMKCiAgICBUaGlzIHBhdGNoIGV4dHJhY3RzIHRoZSBpZGVudGljYWwgY29uZmlnIG9wdGlvbnMgZm9yIHRoZQogICAga2V5bWlsZSBib2FyZHMgbWdjb2dlLCBtZ3N1dmQgYW5kIGttZXRlcjEgaW4gYSBuZXcKICAgIGNvbW1vbiBjb25maWcgZmlsZSBrZXltaWxlLWNvbW1vbi5oLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDIxMGM4YzAwYWFkMzMyODE0NTIwNGFkYWI0MzRiYjdkNzBiMDZiNzUKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJRnJpIE5vdiAyMSAwODoyOTo0MCAyMDA4ICswMTAwCgogICAgcG93ZXJwYzoga2V5bWlsZTogQWRkIGEgY2hlY2sgZm9yIHRoZSBQSUdHWSBkZWJ1ZyBib2FyZAoKICAgIENoZWNrIHRoZSBwcmVzZW5jZSBvZiB0aGUgUElHR1kgb24gdGhlIGtleW1pbGUgYm9hcmRzIG1nY29nZSwKICAgIG1nc3V2ZCBhbmQga21ldGVyMS4gSWYgdGhlIFBJR0dZIGlzIG5vdCBwcmVzZW50LCBkb250IHJlZ2lzdGVyCiAgICB0aGlzIEV0aGVybmV0IGRldmljZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGRlMDQ0MzYxNGFmNGQxNjY3NWFiNDM2NjY1YWViMTFkZGM5ZjcyMTQKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVGh1IE5vdiAyMCAwOTo1Nzo0NyAyMDA4ICswMTAwCgogICAgcG93ZXJwYzogODN4eDogYWRkIHN1cHBvcnQgZm9yIHRoZSBrbWV0ZXIxIGJvYXJkCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBrbWV0ZXIxIGJvYXJkIGZyb20gS2V5bWlsZSwKICAgIGJhc2VkIG9uIGEgRnJlZXNjYWxlIE1QQzgzNjAgQ1BVLgoKICAgIC0gc2VyaWFsIGNvbnNvbGUgb24gVUFSVCAxCiAgICAtIDI1NiBNQiBERFIyIFJBTQogICAgLSA2NCBNQiBOT1IgRmxhc2gKICAgIC0gRXRoZXJuZXQgUk1JSSBNb2RlIG92ZXIgVUNDNAogICAgLSBQSFkgU01TQyBMQU44NzAwCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgM2ZlYjY0N2YzZmQwODgxMzgyYzdhMjlmNGNmMjgwYjY2NDczYWUwYQpBdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CkRhdGU6CVR1ZSBOb3YgNCAxMzo1MToxOCAyMDA4ICswMTAwCgogICAgQWRkIGEgZG9fZGl2KCkgd3JhcHBlciBtYWNybywgbGxkaXYoKS4KCiAgICBBZGQgYSBkb19kaXYoKSB3cmFwcGVyLCBsbGRpdigpLiBUaGUgbmV3IGlubGluZSBmdW5jdGlvbiBkb2Vzbid0IG1vZGlmeQogICAgdGhlIGRpdmlkZW5kIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgb2YgZGl2aXNpb24sIHNvIGl0IGlzIHVzZWZ1bAogICAgaW4gY29tcGxleCBleHByZXNzaW9ucywgaS5lLiAicmV0dXJuKGEvYikiIC0+ICJyZXR1cm4obGxkaXYoYSxiKSkiCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KCmNvbW1pdCAxOGFmMWM1ZjBmNzQwMmRjMGQ2YTcxYjAxMmM2ODAyNWRkOTdjZjcyCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEphbiAyMyAxNDoyMjoxNCAyMDA5IC0wNjAwCgogICAgODV4eDogQWRkIGEgMzYtYml0IHBoeXNpY2FsIGNvbmZpZ3VyYXRpb24gZm9yIE1QQzg1NzJEUwoKICAgIFdlIG1vdmUgYWxsIElPIGFkZHJlc3NlZCAoQ0NTUiwgbG9jYWxidXMsIFBDSSkgYWJvdmUgdGhlIDRHIGJvdW5kYXJ5CiAgICB0byBhbGxvdyBmb3IgbGFyZ2VyIG1lbW9yeSBzaXplcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGM1MWZjNWQ1M2M0NTYwYWJjNGQwYTYxMjZjMDZmYzY4MTMzZDE1MjgKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglGcmkgSmFuIDIzIDE0OjIyOjEzIDIwMDkgLTA2MDAKCiAgICA4NXh4OiBIYW5kbGUgZUxCQyBkaWZmZXJlbmNlIHcvMzYtYml0IHBoeXNpY2FsCgogICAgVGhlIGVMQkMgb25seSBoYW5kbGVzIDMyLWJpdCBwaHlzaWNhbCBhZGRyZXNzIGluIHN5c3RlbXMgd2l0aCAzNi1iaXQKICAgIHBoeXNpY2FsLiAgVGhlIHByZXZpb3MgZ2VuZXJhdGlvbiBvZiBMQkMgaGFuZGxlZCAzNC1iaXQgcGh5c2ljYWwKICAgIGFkZHJlc3MgaW4gMzYtYml0IHN5c3RlbXMuCUFkZGVkIGEgbmV3IENPTkZJRyBvcHRpb24gdG8gY29udmV5CiAgICB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBMQkMgYW5kIGVMQkMuCgogICAgQWxzbyBhZGRlZCBkZWZpbmVzIGZvciBYQU0gYml0cyB1c2VkIGluIExCQyBmb3IgdGhlIGV4dGVuZGVkIDM0LWJpdAogICAgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDcyYTk0MTRhOGUyMWU5NTM2ODIyYzczNTNiYzA4ZDIxY2U1YWQ1M2QKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglGcmkgSmFuIDIzIDE0OjIyOjEyIDIwMDkgLTA2MDAKCiAgICA4NXh4OiBVc2UgQlJfQUREUiBtYWNybyBmb3IgTkFORCBjaGlwc2VsZWN0cwoKICAgIFVzZSB0aGUgbmV3IEJSX0FERFIgbWFjcm8gdG8gcHJvcGVybHkgc2V0dXAgdGhlIGFkZHJlc3MgZmllbGQgb2YgdGhlCiAgICBsb2NhbGJ1cyBjaGlwc2VsZWN0cyB1c2VkIGJ5IE5BTkQuCgogICAgVGhpcyBhbGxvd3MgdXMgdG8gZGVhbCB3aXRoIDM2LWJpdCBwaHlzIG9uIHRoZXNlIGJvYXJkcyBpbiB0aGUgZnV0dXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMmZjN2ViMGNmYzYwOGM5MzY5MDAxZDU3YTA0MTFhZjVlNmE1OGY3YwpBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKYW4gMTUgMTE6NTg6MzUgMjAwOSAtMDUwMAoKICAgIEFkZCBzZWNvbmRhcnkgQ1BVcyBwcm9jZXNzb3IgZnJlcXVlbmN5IGZvciBlNTAwIGNvcmUKCiAgICBUaGlzIHBhdGNoIHVwZGF0ZXMgZTUwMCBmcmVxUHJvY2Vzc29yIHRvIGFycmF5IGJhc2VkIG9uIENPTkZJR19OVU1fQ1BVUywKICAgIGFuZCBwcmludHMgZWFjaCBDUFUncyBmcmVxdWVuY3kgc2VwYXJhdGVseS4gSXQgYWxzbyBmaXhlcyB1cCBlYWNoIENQVSdzCiAgICBmcmVxdWVuY3kgaW4gImNsb2NrLWZyZXF1ZW5jeSIgb2YgZmR0IGJsb2IuCgogICAgU2lnbmVkLW9mZi1ieTogSmFtZXMgWWFuZyA8SmFtZXMuWWFuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiZjViMWYwYzBkMjhjZTA2MmUxZDM2ODY4MDYzMmRmYjA5OWRlNjkyCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE5vdiAyMSAxNjozMTo1MyAyMDA4ICswODAwCgogICAgODV4eDogZW5hYmxlIHRoZSBhdXRvIHNlbGYgcmVmcmVzaCBmb3Igd2FrZSB1cCBBUlAKCiAgICBUaGUgd2FrZSB1cCBBUlAgZmVhdHVyZSBuZWVkIHVzZSB0aGUgbWVtb3J5IHRvIHByb2Nlc3MKICAgIHdha2UgdXAgcGFja2V0LCB3ZSBlbmFibGUgYXV0byBzZWxmIHJlZnJlc2ggdG8gc3VwcG9ydCBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiNDk4M2UxNmQxNTBhYjdkMDM5NzA0YzMxMGFhY2JkMmY0ZGMxZTBmCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE5vdiAyMSAxNjozMTo0MyAyMDA4ICswODAwCgogICAgZnNsLWRkcjogdXNlIHRoZSAxVCB0aW1pbmcgYXMgZGVmYXVsdCBjb25maWd1cmF0aW9uCgogICAgRm9yIGxpZ2h0IGxvYWRlZCBzeXN0ZW0sIHdlIHVzZSB0aGUgMVQgdGltaW5nIHRvIGdhaW4gYmV0dGVyCiAgICBtZW1vcnkgcGVyZm9ybWFuY2UsIGJ1dCBmb3Igc29tZSBoZWF2aWx5IGxvYWRlZCBzeXN0ZW0sCiAgICB5b3UgaGF2ZSB0byBhZGQgdGhlIDJUIHRpbWluZyBvcHRpb25zIHRvIGJvYXJkIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDIyY2NhN2UxY2Q1NDU5MGU5NjdjNzM1NThiMDdmZmJkY2NkMzk1MDQKQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgTm92IDIxIDE2OjMxOjM1IDIwMDggKzA4MDAKCiAgICBmc2wtZGRyOiBtYWtlIHRoZSBzZWxmIHJlZnJlc2ggaWRsZSB0aHJlc2hvbGQgY29uZmlndXJhYmxlCgogICAgU29tZSA4NXh4IHByb2Nlc3NvcnMgaGF2ZSB0aGUgYWR2YW5jZWQgcG93ZXIgbWFuYWdlbWVudCBmZWF0dXJlLAogICAgc3VjaCBhcyB3YWtlIHVwIEFSUCwgdGhhdCBuZWVkcyBlbmFibGUgdGhlIGF1dG9tYXRpYyBzZWxmIHJlZnJlc2guCgogICAgSWYgdGhlIEREUiBjb250cm9sbGVyIHBhc3MgdGhlIFNSX0lUIChzZWxmIHJlZnJlc2ggaWRsZSB0aHJlc2hvbGQpCiAgICBpZGxlIGN5Y2xlcywgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGVudGVyIHNlbGYgcmVmcmVzaC4gSG93ZXZlciwKICAgIGFueXRpbWUgb25lIHRyYW5zYWN0aW9uIGlzIGlzc3VlZCB0byB0aGUgRERSIGNvbnRyb2xsZXIsIGl0IHdpbGwKICAgIHJlc2V0IHRoZSBjb3VudGVyIGFuZCBleGl0IHNlbGYgcmVmcmVzaCBzdGF0ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyMmZmM2QwMTM0OGUwYTJkYzM2OWI3ZWZjYmFjMzBlNGNlODZkMTc4CkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE5vdiAyMSAxNjozMToyOSAyMDA4ICswODAwCgogICAgZnNsLWRkcjogY2xlYW4gdXAgdGhlIGRkciBjb2RlIGZvciBERFIzIGNvbnRyb2xsZXIKCiAgICAtIFRoZSBERFIzIGNvbnRyb2xsZXIgaXMgZXhwYW5kaW5nIHRoZSBiaXRzIGZvciB0aW1pbmcgY29uZmlnCiAgICAtIEFkZCB0aGUgRERSMyAzMi1iaXQgYnVzIG1vZGUgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDgwZWUzY2U2ZDdmZTk0NDFiNDM1MmQ3Y2ZhZjZhZmMyNTA3YjExMDYKQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgTm92IDIxIDE2OjMxOjIyIDIwMDggKzA4MDAKCiAgICBmc2wtZGRyOiB1cGRhdGUgdGhlIGJpdCBtYXNrIGZvciBERFIzIGNvbnRyb2xsZXIKCiAgICBBY2NvcmRpbmcgdG8gdGhlIGxhdGVzdCA4NTcyIFVNLCB0aGUgRERSMyBjb250cm9sbGVyCiAgICBpcyBleHBhbmRpbmcgdGhlIGJpdCBtYXNrLCBhbmQgd2UgdXNlIHRoZSBleHRlbmQgQUNUVE9QUkUKICAgIG1vZGUgd2hlbiB0UkFTIG1vcmUgdGhhbiAxOSBNQ0xLLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYWNhNWYwMThhODM4NmI4NTQ2OTQ4MmVkOTg2N2UzZTI5YTI0MzdkMApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBEZWMgMiAxNjowODo0MCAyMDA4IC0wNjAwCgogICAgODV4eDogSW50cm9kdWNlIENPTkZJR19TWVNfUENJKl9JT19WSVJUIGZvciBGU0wgYm9hcmRzCgogICAgSW50cm9kdWNlIGEgbmV3IGRlZmluZSB0byBzZXBlcmF0ZSBvdXQgdGhlIHZpcnR1YWwgYWRkcmVzcyB0aGF0IFBDSQogICAgSU8gc3BhY2UgaXMgYXQgZnJvbSB0aGUgcGh5c2ljYWwgYWRkcmVzcy4gIEluIG1vc3Qgc2l0dWF0aW9ucyB0aGVzZSBhcmUKICAgIG1hcHBlZCAxOjEuICBIb3dldmVyIGFueSBjb2RlIGFjY2Vzc2luZyB0aGUgYnVzIHNob3VsZCB1c2UgVklSVC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1YWYwZmRkODFjMzM3MGMzYTUxNDIxMjA4ZmRhNTY4YmRjYmJlYzIzCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIERlYyAyIDE2OjA4OjM5IDIwMDggLTA2MDAKCiAgICA4NXh4OiBJbnRyb2R1Y2UgQ09ORklHX1NZU19QQ0kqX01FTV9WSVJUIGZvciBGU0wgYm9hcmRzCgogICAgSW50cm9kdWNlIGEgbmV3IGRlZmluZSB0byBzZXBlcmF0ZSBvdXQgdGhlIHZpcnR1YWwgYWRkcmVzcyB0aGF0IFBDSQogICAgbWVtb3J5IGlzIGF0IGZyb20gdGhlIHBoeXNpY2FsIGFkZHJlc3MuICBJbiBtb3N0IHNpdHVhdGlvbnMgdGhlc2UgYXJlCiAgICBtYXBwZWQgMToxLiAgSG93ZXZlciBhbnkgY29kZSBhY2Nlc3NpbmcgdGhlIGJ1cyBzaG91bGQgdXNlIFZJUlQuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYTZlMDRjMzQ0YWQxZWVmZDQ3YTc1NDg0NDQxYjM4NWRhODE1YjhkZgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBEZWMgMiAxNjowODozOCAyMDA4IC0wNjAwCgogICAgODV4eDogVXNlIENPTkZJR19TWVNfe1BDSSosUklPKn1fTUVNX1BIWVMgZm9yIHBoeXNpY2FsIGFkZHJlc3Mgb24gRlNMIGJvYXJkcwoKICAgIFVzZSB0aGUgX01FTV9QSFlTIGRlZmluZXMgaW5zdGVhZCBvZiBfTUVNX0JVUyBmb3IgTEFXIGFuZCByZWFsIGFkZHJlc3MgZmllbGRzCiAgICBvZiBUTEJzLiAgVGhpcyBpcyB3aGF0IHdlIHNob3VsZCBoYXZlIGFsd2F5cyBiZWVuIHVzaW5nIGZyb20gdGhlIHN0YXJ0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDVmOTFlZjZhY2RiYWRlYzMzZTAxOTIwNDllMmIyNGExZDk2OTJmMWQKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgRGVjIDIgMTY6MDg6MzcgMjAwOCAtMDYwMAoKICAgIDg1eHg6IENvbnZlcnQgQ09ORklHX1NZU19QQ0kqX0lPX0JBU0UgdG8gX0lPX0JVUyBmb3IgRlNMIGJvYXJkcwoKICAgIFVzZSBDT05GSUdfU1lTX1BDSSpfSU9fQlVTIGZvciB0aGUgYnVzIHJlbGF0aXZlIGFkZHJlc3MgaW5zdGVhZAogICAgb2YgX0lPX0JBU0Ugc28gd2UgYXJlIG1vcmUgZXhwbGljaXQuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAxMDc5NWY0MmNiOTRlNzFiY2IyNjJiNjE1MDg0ZjY5ZGQ4ODYzOTlhCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIERlYyAyIDE2OjA4OjM2IDIwMDggLTA2MDAKCiAgICA4NXh4OiBDb252ZXJ0IENPTkZJR19TWVNfe1BDSSosUklPKn1fTUVNX0JBU0UgdG8gX01FTV9CVVMgZm9yIEZTTCBib2FyZHMKCiAgICBVc2UgQ09ORklHX1NZU197UENJLFJJT31fTUVNX0JVUyBmb3IgdGhlIGJ1cyByZWxhdGl2ZSBhZGRyZXNzIGluc3RlYWQKICAgIG9mIF9NRU1fQkFTRSBzbyB3ZSBhcmUgbW9yZSBleHBsaWNpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjOTUzZGRmZDU2YjNhZTNmMjg5MTBmZTNhZWQ2ZGU2OTY4ZDFjOWFhCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIERlYyAyIDE0OjE5OjM0IDIwMDggLTA2MDAKCiAgICA4NXh4OiBzZXBhcmF0ZSBGTEFTSCBCQVNFIHZpcnR1YWwgZnJvbSBwaHlzaWNhbCBhZGRyZXNzCgogICAgQWRkZWQgYSBDT05GSUdfU1lTX0ZMQVNIX0JBU0VfUEhZUyBmb3IgdXNlIGFzIHRoZSBwaHlzaWNhbCBhZGRyZXNzIGFuZAogICAgbWFpbnRhaW4gQ09ORklHX1NZU19GTEFTSF9CQVNFIGFzIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgb2YgdGhlIGZsYXNoLgoKICAgIFRoaXMgYWxsb3dzIHVzIHRvIGRlYWwgd2l0aCAzNi1iaXQgcGh5cyBvbiB0aGVzZSBib2FyZHMgaW4gdGhlIGZ1dHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1MmI1NjVmNWFkMjNiNjgyNDg5MDU1YjE4Nzc2N2Q4YmYxYzJlNDQ0CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIERlYyAyIDE0OjE5OjMzIDIwMDggLTA2MDAKCiAgICA4NXh4OiBzZXBhcmF0ZSBQSVhJUyB2aXJ0dWFsIGZyb20gcGh5c2ljYWwgYWRkcmVzcwoKICAgIEFkZGVkIGEgUElYSVNfQkFTRV9QSFlTIGZvciB1c2UgYXMgdGhlIHBoeXNpY2FsIGFkZHJlc3MgYW5kIG1haW50YWluCiAgICBQSVhJU19CQVNFIGFzIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgb2YgdGhlIFBJWElTIGZwZ2EgcmVnaXN0ZXJzLgoKICAgIFRoaXMgYWxsb3dzIHVzIHRvIGRlYWwgd2l0aCAzNi1iaXQgcGh5cyBvbiB0aGVzZSBib2FyZHMgaW4gdGhlIGZ1dHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzMDgzN2U1YjIxZDVhNzQyOTgzNTgxYWI5ZWUzZmFjMDg1MzExZDE5CkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE5vdiAxMSAwODo1MjowOSAyMDA4IC0wNTAwCgogICAgQWRkIFJFQURNRSBmaWxlIGZvciBNUEM4NTcyRFMgYm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2ZGFkYzkxOTVhZDY0MmNjNjYyNjMyZjRkOTJmOTJkM2Q3MWU4YmYyCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gT2N0IDIwIDE2OjE1OjA0IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogdXNlIGNvbW1vbiBzdHJtaHooKSBpbiBzeXN0ZW0gb3V0cHV0CgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDViYjkwN2E0OTI1Mzk3Nzg5YzkwZDA3NGY0ZjdlOTJjZTZiMzk0MDIKQXV0aG9yOiBSb24gTWFkcmlkIDxyb25fbWFkcmlkQHNiY2dsb2JhbC5uZXQ+CkRhdGU6CVRodSBKYW4gMjIgMTU6MDU6MjQgMjAwOSAtMDgwMAoKICAgIG1wYzgzeHg6IE5ldyBib2FyZCBzdXBwb3J0IGZvciBTSU1QQzgzMTMKCiAgICBUaGlzIHBhdGNoIHdpbGwgY3JlYXRlIGEgbmV3IGJvYXJkLCBTSU1QQzgzMTMsIGZyb20gU2hlbGRvbiBJbnN0cnVtZW50cy4gIFRoaXMKICAgIGJvYXJkIGJvb3RzIGZyb20gTkFORCBkZXZpY2VzIGFuZCBpcyBjb25maWd1cmVhYmxlIGZvciBlaXRoZXIgbGFyZ2Ugb3Igc21hbGwKICAgIHBhZ2UgZGV2aWNlcy4gIFRoZSBib2FyZCBzdXBwb3J0cyBub24tc29sZGVyZWQgRERSMiwgb25lIGV0aGVybmV0IHBvcnQsIGEKICAgIE1hcnZlbGwgODhFMTExOCBQSFksIGFuZCBQQ0kgaG9zdCBzdXBwb3J0LglUaGUgYm9hcmQgYWxzbyBoYXMgYSBGUEdBIGNvbm5lY3RlZAogICAgdG8gdGhlIGVMQkMgcHJvdmlkaW5nIGdsdWUgbG9naWMgdG8gYSBUTVMzMjBDNjd4eCBEU1AuCgogICAgU2lnbmVkLW9mZi1ieTogUm9uIE1hZHJpZCA8cm9uX21hZHJpZEBzYmNnbG9iYWwubmV0PgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkNGJhZGU4ZDc3YWEyMGUyODQ2ZmE0YWNjZmYwZTdmYTc5NjFhMTM0CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gSmFuIDE4IDE5OjQ2OjA2IDIwMDkgLTA1MDAKCiAgICBuYW5kOiBmaXh1cCBwcmludGYgbW9kaWZpZXJzIHRvIG1hdGNoIHR5cGVzIHVzZWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzODllNjYyMGUyMjcxMDk2ZGYzMzE2OTE3NTI4MDAzNjI3ZGI0MDIxCkF1dGhvcjogU2NobGFlZ2wgTWFuZnJlZCBqdW4gPG1hbmZyZWQuc2NobGFlZ2xAZ214LmF0PgpEYXRlOglUdWUgSmFuIDIwIDE2OjU3OjU1IDIwMDkgKzAxMDAKCiAgICBuYW5kIHJlYWQuamZmczIgKG5hbmRfbGVnYWN5KSBpbiBjb21tb24vY21kX25hbmQuYwoKICAgIEVycm9yIHdpdGggQ09ORklHX05BTkRfTEVHQUNZIGluIGNvbW1vbi9jbWRfbmFuZC5jOgogICAgV2l0aCBjdXJyZW50IGNvZGUgIm5hbmQgcmVhZC5qZmZzMnMiIChyZWFkIGFuZCBza2lwIGJhZCBibG9ja3MpIGlzIGFsd2F5cyBpbnRlcnByZXRlZCBhcwogICAgIm5hbmQgcmVhZC5qZmZzMiIgKHJlYWQgYW5kIGZpbGwgYmFkIGJsb2NrcyB3aXRoIDB4ZmYpLiBUaGlzIGlzIGJlY2F1c2UgIi5qZmZzMiIgaXMKICAgIHRlc3RlZCBiZWZvcmUgIi5qZmZzMnMiIGFuZCBvbmx5IHRoZSBmaXJzdCB0d28gY2hhcmFjdGVycyBhcmUgY29tcGFyZWQuCgogICAgQ29ycmVjdGlvbjoKICAgIFRlc3QgZm9yICIuamZmczJzIiBmaXJzdCBhbmQgY29tcGFyZSB0aGUgZmlyc3QgNyBjaGFyYWN0ZXJzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDZjODY5NjM3ZmVmMzFlNjYzODBmMGVhMWQ0OTY5MGEyZTI2ZWMwZDcKQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KRGF0ZToJRnJpIEphbiAxNiAxODo1NTo1NCAyMDA5ICswMTAwCgogICAgTkFORDogcmVuYW1lIE5BTkRfTUFYX0NISVBTIHRvIENPTkZJR19TWVNfTkFORF9NQVhfQ0hJUFMKCiAgICBUaGlzIHBhdGNoIHJlbmFtZXMgTkFORF9NQVhfQ0hJUFMgdG8gQ09ORklHX1NZU19OQU5EX01BWF9DSElQUyBhbmQKICAgIGNoYW5nZXMgdGhlIGRlZmF1bHQgZnJvbSA4IHRvIDEgZm9yIHRoZSBsZWdhY3kgYW5kIHRoZSBuZXcgTVRECiAgICBOQU5EIGxheWVyLiBUaGlzIGFsbG93cyB0byByZW1vdmUgYWxsIE5BTkRfTUFYX0NISVBTIGRlZmluaXRpb25zCiAgICBpbiB0aGUgYm9hcmQgY29uZmlnIGZpbGVzIGJlY2F1c2Ugbm9uZSBvZiB0aGUgYm9hcmRzIHVzZSBtdWx0aQogICAgY2hpcCBzdXBwb3J0IChOQU5EX01BWF9DSElQUyA+IDEpIHNvIGZhci4gVGhlIGJhbWJvbyBhbmQgdGhlIERVNDQwCiAgICBkZWZpbmUKCiAgICAgI2RlZmluZSBOQU5EX01BWF9DSElQUwkgICAgIENPTkZJR19TWVNfTUFYX05BTkRfREVWSUNFCgogICAgYnV0IHRoYXQncyBib2d1cyBhbmQgZGlkIG5vdCB3b3JrIGFueWhvdy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGM3MDU2NGU2YjFiZDA4ZjMyMzAxODIzOTIyMzg5MDdmMzUzMWE4N2UKQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgRGVjIDIgMTE6NDg6NTEgMjAwOCArMDgwMAoKICAgIE5BTkQ6IEZpeCBjYWNoZSBhbmQgbWVtb3J5IGluY29uc2lzdGVuY3kgaXNzdWUKCiAgICBXZSBsb2FkIHRoZSBzZWNvbmRhcnkgc3RhZ2UgdS1ib290IGltYWdlIGZyb20gTkFORCB0bwogICAgc3lzdGVtIG1lbW9yeSBieSBuYW5kX2xvYWQsIGJ1dCB3ZSBkaWQgbm90IGZsdXNoIGQtY2FjaGUKICAgIHRvIG1lbW9yeSwgbm9yIGludmFsaWRhdGUgaS1jYWNoZSBiZWZvcmUgd2UganVtcCB0byBSQU0uCiAgICBXaGVuIHRoZSBzeXN0ZW0gaGFzIGNhY2hlIGVuYWJsZWQgYW5kIHRoZSBUTEIvcGFnZSBhdHRyaWJ1dGUKICAgIG9mIHN5c3RlbSBtZW1vcnkgaXMgY2FjaGVhYmxlLCBpdCB3aWxsIGNhdXNlIGlzc3Vlcy4KCiAgICAtIDgzeHggZmFtaWx5IGlzIHVzaW5nIHRoZSBkLWNhY2hlIGxvY2ssIHNvIGFsbCBvZiBkLWNhY2hlCiAgICAgIGFjY2VzcyBpcyBjYWNoZS1pbmhpYml0ZWQuIHNvIHlvdSBjYW4ndCBzZWUgdGhlIGlzc3VlLgogICAgLSA4NXh4IGZhbWlseSBpcyB1c2luZyBkLWNhY2hlLCBpLWNhY2hlIGVuYWJsZSwgcGFydGlhbAogICAgICBjYWNoZSBsb2NrLiB5b3Ugd2lsbCBzZWUgdGhlIGlzc3VlLgoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIGNhY2hlIGlzc3VlLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1MDY1N2MyNzMyNzhmNzQzNzhlMWFjMzliNDFkNjEyYjkyZmRmZmEwCkF1dGhvcjogTmlzaGFudGggTWVub24gPG1lbm9uLm5pc2hhbnRoQGdtYWlsLmNvbT4KRGF0ZToJU2F0IERlYyAxMyAwOTo0MzowNiAyMDA4IC0wNjAwCgogICAgTkFORDogRW5hYmxlIG5hbmQgbG9jaywgdW5sb2NrIGZlYXR1cmUKCiAgICBFbmFibGUgbmFuZCBsb2NrLCB1bmxvY2sgYW5kIHN0YXR1cyBvZiBsb2NrIGZlYXR1cmUuCiAgICBOb3QgZXZlcnkgZGV2aWNlIGFuZCBwbGF0Zm9ybSByZXF1aXJlcyB0aGlzLCBoZW5jZSwKICAgIGl0IGlzIHVuZGVyIGRlZmluZSBmb3IgQ09ORklHX0NNRF9OQU5EX0xPQ0tfVU5MT0NLCgogICAgTmFuZCB1bmxvY2sgYW5kIHN0YXR1cyBvcGVyYXRlIG9uIGJsb2NrIGJvdW5kYXJ5IGluc3RlYWQKICAgIG9mIHBhZ2UgYm91bmRhcnkuIERldGFpbHMgaW46CiAgICBodHRwOi8vd3d3Lm1pY3Jvbi5jb20vcHJvZHVjdHMvcGFydGRldGFpbD9wYXJ0PU1UMjlDMkcyNE1BS0xBSkctNiUyMElUCgogICAgSW50aWFsIHNvbHV0aW9uIHByb3ZpZGVkIGJ5IFZpa3JhbSBQYW5kaXRhIDx2aWtyYW0ucGFuZGl0YUB0aS5jb20+CiAgICBJbmNsdWRlcyBwcmVsaW1pbmFyeSBzdWdnZXN0aW9ucyBmcm9tIFNjb3R0IFdvb2QKCiAgICBTaWduZWQtb2ZmLWJ5OiBOaXNoYW50aCBNZW5vbiA8bm1AdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjlmYjhiZTRmYzA3MTYyZmRmNmVkZjA0YmRjNzIzM2IwZTlhOTIwZQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IERlYyA2IDAyOjQwOjU1IDIwMDggLTA1MDAKCiAgICBOQU5EOiBtb3ZlIGJvYXJkX25hbmRfaW5pdCB0byBuYW5kLmgKCiAgICBSYXRoZXIgdGhhbiBwdXR0aW5nIHRoZSBmdW5jdGlvbiBwcm90b3R5cGUgZm9yIGJvYXJkX25hbmRfaW5pdCgpIGluIHRoZSBvbmUKICAgIHBsYWNlIHdoZXJlIGl0IGdldHMgY2FsbGVkLCBwdXQgaXQgaW50byBuYW5kLmggc28gdGhhdCBldmVyeSBwbGFjZSB0aGF0IGFsc28KICAgIGRlZmluZXMgaXQgZ2V0cyB0aGUgcHJvdG90eXBlLiAgT3RoZXJ3aXNlLCBlcnJvcnMgY2FuIGdvIHNpbGVudGx5IHVubm90aWNlZAogICAgc3VjaCBhcyB1c2luZyB0aGUgd3JvbmcgcmV0dXJuIHZhbHVlICh2b2lkIHJhdGhlciB0aGFuIGludCkgd2hlbiBkZWZpbmluZwogICAgdGhlIGZ1bmN0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFhZTM5ODYyMDQ0ZWJiMWU2ODIyMzRiNTFmOTQ0MjFlM2Y4NzFkNmEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBEZWMgMiAxMTowNjo0NyAyMDA4ICswMTAwCgogICAgT25lTkFORDogQWRkaXRpb25hbCBzeW5jIHdpdGggMi42LjI3CgogICAgLSBBZGQgc3VicGFnZSB3cml0ZSBzdXBwb3J0CiAgICAtIEFkZCBvbmVuYW5kX29vYl82NC8zMiBlY2NsYXlvdXQKCiAgICBUaGlzIGhhcyBiZWVuIG1pc3NpbmcgYW5kIHdpdGhvdXQgaXQgVUJJIGhhcyBzb21lIGluY29tcGF0aWJpbGllcyBpc3N1ZXMKICAgIHdpdGggdGhlIGN1cnJlbnQgKD49IDIuNi4yNykgTGludXgga2VybmVsIHZlcnNpb24uIHZpZF9oZHJfb2Zmc2V0IGlzCiAgICBwbGFjZWQgZGlmZmVyZW50bHkgKDIwNDggaW5zdGVhZCBvZiA1MTIpIHdpdGhvdXQgdGhpcyBmaXguCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTcxNGY1MWEyMDA5YmFhZWNmM2Q0ZjZlM2JkOGM0ZTkzYThkM2YyMwpBdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgpEYXRlOglUaHUgTm92IDEzIDE1OjE0OjMzIDIwMDggKzA5MDAKCiAgICBBZGQgbWFya2JhZCBmdW5jdGlvbgoKICAgIEFkZCBtaXNzaW5nIG1hcmtiYWQgZnVuY3Rpb24KICAgIElmIG5vdCwgaXQncyBoYW5nIHdoZW4gaXQgZW50ZXJlZCB0aGUgbXRkLT5tYXJrX2JhZCgpLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Cgpjb21taXQgYzQzOGVhMTc1ZDhkMDAyYzEwNjNiN2E5NGIwYzBlMjY2NjhkMWFjOQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE5vdiAxMiAxMzo0NzoyNCAyMDA4ICswMTAwCgogICAgT25lTkFORDogQmFkIGJsb2NrIGF3YXJlIHJlYWQvd3JpdGUgY29tbWFuZCBzdXBwb3J0CgogICAgVXBkYXRlIE9uZU5BTkQgY29tbWFuZCB0byBzdXBwb3J0IGJhZCBibG9jayBhd2FyZW5lc3MuCiAgICBBbHNvIGNoYW5nZSB0aGUgT25lTkFORCBjb21tYW5kIHN0eWxlIHRvIGJldHRlciBtYXRjaCB0aGUKICAgIE5BTkQgdmVyc2lvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBBY2tlZC1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KCmNvbW1pdCA4Y2YxMWYzYWE3ODY3MzczMGU5ZWNiYmU0Yjc1MjEzYjUzZjIxMmM4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgTm92IDExIDEwOjI5OjA5IDIwMDggKzAxMDAKCiAgICBPbmVOQU5EOiBTYXZlIHZlcnNpb25faWQgaW4gb25lbmFuZF9jaGlwIHN0cnVjdAoKICAgIFRoZSB2ZXJzaW9uICh2ZXJfaWQpIHdhcyBub3Qgc3RvcmVkIGluIHRoZSBvbmVuYW5kX2NoaXAgc3RydWN0dXJlIGFuZAogICAgYmVjYXVzZSBvZiB0aGlzIHRoZSBjb250aW51b3VzIGxvY2tpbmcgc2NoZW1lIGNvdWxkIGJlIGVuYWJsZWQgb24gc29tZQogICAgY2hpcHMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDRmY2EzMzEwZDYxMWNjMGY1MWQ3Mjk1ZWYzNTU3YWZiZGJkOTFkYzMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBOb3YgMTEgMTA6Mjg6NTMgMjAwOCArMDEwMAoKICAgIE9uZU5BTkQ6IEZpeCBjb21waWxlciB3YXJuaW5ncwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxYWM1NzQ0ZTMzZWUwYWE2ZDZkZGFiM2I5OWY5ZTcwOTUzMTU2ZTY5CkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE5vdiA0IDE0OjU1OjA2IDIwMDggKzA4MDAKCiAgICBtcGM4M3h4OiBlbmFibGUgZUxCQyBOQU5EIHN1cHBvcnQgZm9yIE1QQzgzMTVFUkRCIGJvYXJkCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlZjA5MjFkNmIwNWFlYjkwMzQxNThmOWJlZjUzMjNkNmRhOWM5MjVlCkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+CkRhdGU6CVR1ZSBOb3YgNCAwOToyNDowNyAyMDA4ICswOTAwCgogICAgU3luYyB3aXRoIDIuNi4yNwoKICAgIFN5bmMgd2l0aCBPbmVOQU5EIGtlcm5lbCBjb2RlcwoKICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Cgpjb21taXQgZTdmMzI1YmU5ZWRlYjg0YmI0NTczMDE3NzZiYmFjMWY3MjU3ZGFmYwpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJTW9uIEphbiA1IDEzOjM1OjMxIDIwMDkgKzAxMDAKCiAgICBtaWNyb2JsYXplOiBVc2UgY2FjaGUgZnVuY3Rpb25zIChlc3BlY2lhbGx5IGNhY2hlIHN0YXR1cykKICAgIGluIHN5c3RlbXMgd2hpY2ggYXJlIGNvbmZpZ3VyZWQgd2l0aG91dCBmbGFzaAoKY29tbWl0IGU5YjczN2RlYjJjMzAxMjUzNjJkMjBlMjQxNzA2MTc0NzYwMjZlOTQKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CU1vbiBKYW4gNSAxMzoyOTozMiAyMDA5ICswMTAwCgogICAgbWljcm9ibGF6ZTogQWRkIGNhY2hlIGZsdXNoCgpjb21taXQgYjRmOGRkYTM1YmZhZDQ0N2I0MTA2ODI4MjMyNzA1YjJlODc4ZDE2OApBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJTW9uIEphbiA1IDEzOjI4OjQwIDIwMDkgKzAxMDAKCiAgICBtaWNyb2JsYXplOiBBZGQgYm9vdHVwIG1lc3NhZ2VzIHRvIGJvYXJkLmMKCmNvbW1pdCAzMzBlNTU0NTliYzk5ODMzNDFkYTZjMWQ1YzdmZTAwYTY2NDQzNmZlCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglGcmkgRGVjIDE5IDEzOjI1OjU1IDIwMDggKzAxMDAKCiAgICBtaWNyb2JsYXplOiBDaGFuZ2UgbWljcm9ibGF6ZS1nZW5lcmljIGNvbmZpZyBmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgoKY29tbWl0IDUyYTgyMmVkOWMzN2EyZWEwZWQxMTJhMjZkOGZmNWE2Y2IxYzZmMTAKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CUZyaSBEZWMgMTkgMTM6MTQ6MDUgMjAwOCArMDEwMAoKICAgIG1pY3JvYmxhemU6IFJlbmFtZSBtbDQwMSB0byBtaWNyb2JsYXplLWdlbmVyaWMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Cgpjb21taXQgNjY3Nzg3NjE4MWNjODc3MmJjYThhMzcyNDc5YTUwMGQxNjBmMzk5MwpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSmFuIDIwIDExOjU2OjExIDIwMDkgLTA2MDAKCiAgICA4M3h4OiBVc2UgdGhlIHByb3BlciBzZXF1ZW5jZSBmb3IgdXBkYXRpbmcgSU1NUi4KCiAgICBUaGlzIGVuc3VyZXMgdGhhdCBzdWJzZXF1ZW50IGFjY2Vzc2VzIHByb3Blcmx5IGhpdCB0aGUgbmV3IHdpbmRvdy4KCiAgICBUaGUgZGNiaSBkdXJpbmcgdGhlIE5BTkQgbG9vcCB3YXMgYWNjaWRlbnRhbGx5IHdvcmtpbmcgYXJvdW5kIHRoaXM7CiAgICBpdCdzIG5vIGxvbmdlciBuZWNlc3NhcnksIGFzIHRoZSBjYWNoZSBpcyBub3QgZW5hYmxlZC4KCiAgICBSZXBvcnRlZC1ieTogU3VjaGl0IExlcGNoYSA8U3VjaGl0LkxlcGNoYUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDhiMzQ1NTdjNTQ2ZTVlOWYzNGViZjgzYzkzNDEzZGFkOTczZDkzZGYKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJVGh1IEphbiA4IDA0OjI2OjE5IDIwMDkgKzAzMDAKCiAgICBtcGM4M3h4OiBBZGQgUENJLUUgc3VwcG9ydCBmb3IgTVBDODM3WEVNRFMgYm9hcmRzCgogICAgTVBDODM3WEVNRFMgYm9hcmRzIGNhbiBzdXBwb3J0IFBDSS1FIHZpYSAiUENJLUUgcmlzZXIgY2FyZCIuIFRoZSBjYXJkCiAgICBwcm92aWRlcyB0d28gUENJLUUgKHgyKSBwb3J0cy4gVGhvdWdoLCBvbmx5IG9uZSBwb3J0IGNhbiBiZSB1c2VkIGluIHgyCiAgICBtb2RlLiBUd28gcG9ydHMgY2FuIGZ1bmN0aW9uIHNpbXVsdGFuZW91c2x5IGluIHgxIG1vZGUuCgogICAgUENJLUUgeDEveDIgbW9kZXMgY2FuIGJlIHN3aXRjaGVkIHZpYSAicGV4X3gyIiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOGYxMWUzNGIzMWE3YmUxMjRhMzIzOTY1M2YzM2FmOTUxMDUwMjA0NQpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglUaHUgSmFuIDggMDQ6MjY6MTcgMjAwOSArMDMwMAoKICAgIG1wYzgzeHg6IEFkZCBQQ0ktRSBzdXBwb3J0IGZvciBNUEM4MzE1RVJEQiBib2FyZHMKCiAgICBNUEM4MzE1RVJEQiBib2FyZHMgZmVhdHVyZXMgUENJLUUgeDEgYW5kIE1pbmkgUENJLUUgeDEgcG9ydHMuIExldCdzCiAgICBzdXBwb3J0IHRoZW0uCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGZkNjY0NmMwYjllYmU3ZTVhZmM0YWU0Yzc4MDk3ZDljZDMxN2E1ZTgKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJVGh1IEphbiA4IDA0OjI2OjEyIDIwMDkgKzAzMDAKCiAgICBtcGM4M3h4OiBBZGQgc3VwcG9ydCBmb3IgTVBDODN4eCBQQ0ktRSBjb250cm9sbGVycwoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBNUEM4M3h4IFBDSS1FIGNvbnRyb2xsZXJzIGluIFJvb3QgQ29tcGxleAogICAgbW9kZS4KCiAgICBUaGUgcGF0Y2ggaXMgYmFzZWQgb24gVG9ueSBMaSBhbmQgRGF2ZSBMaXUgd29ya1sxXS4KCiAgICBUaG91Z2ggdW5saWtlIHRoZSBvcmlnaW5hbCBwYXRjaCwgYnkgZGVmYXVsdCB3ZSBkb24ndCByZWdpc3RlciBQQ0ktRQogICAgYnVzZXMgZm9yIHVzZSBpbiBVLUJvb3QsIHdlIG9ubHkgY29uZmlndXJlIHRoZSBjb250cm9sbGVycyBmb3IgZnV0dXJlCiAgICB1c2UgaW4gb3RoZXIgT1NlcyAoTGludXgpLiBUaGlzIGlzIGRvbmUgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIGVub3VnaAogICAgb2Ygc3BhcmUgQkFUcyB0byBtYXAgYWxsIHRoZSBQQ0ktRSByZWdpb25zLgoKICAgIFRvIGFjdHVhbGx5IHVzZSBQQ0ktRSBpbiBVLUJvb3QsIHVzZXJzIHNob3VsZCBleHBsaWNpdGx5IGRlZmluZQogICAgQ09ORklHXzgzWFhfR0VORVJJQ19QQ0lFX1JFR0lTVEVSX0hPU0VTIHN5bWJvbCBpbiB0aGUgYm9hcmQgZmlsZS4gQW5kCiAgICBvbmx5IHRoZW4gVS1Cb290IHdpbGwgYWJsZSB0byBhY2Nlc3MgUENJLUUsIGJ1dCBhdCB0aGUgY29zdCBvZiBkaXNhYmxlZAogICAgYWRkcmVzcyB0cmFuc2xhdGlvbi4KCiAgICBbMV0gaHR0cDovL2xpc3RzLmRlbnguZGUvcGlwZXJtYWlsL3UtYm9vdC8yMDA4LUphbnVhcnkvMDI3NjMwLmh0bWwKCiAgICBTaWduZWQtb2ZmLWJ5OiBUb255IExpIDx0b255LmxpQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KICAgIEFja2VkLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4OGVjZjU1Y2FiZDdhZWEyOGZlODA5MzcyMGUyMDhmNTNjY2ZkY2Y1CkF1dGhvcjogSXJhIFNueWRlciA8aXdzQG92cm8uY2FsdGVjaC5lZHU+CkRhdGU6CU1vbiBKYW4gMTIgMTM6MzM6MTcgMjAwOSAtMDgwMAoKICAgIE1QQzgzNDlFTURTOiBkbyBub3Qgc2V0dXAgdW51c2VkIFBDSSBjbG9jayBvdXRwdXRzIGluIFBDSSBhZ2VudCBtb2RlCgogICAgV2hlbiBydW5uaW5nIGluIFBDSSBhZ2VudCBtb2RlLCB0aGUgUENJX0NMS19PVVQgc2lnbmFscyBhcmUgbm90IHVzZWQsIHNvIGRvCiAgICBub3QgZW5hYmxlIHRoZW0uIFNlZSB0aGUgTVBDODM0OUVBIFJlZmVyZW5jZSBNYW51YWwsIFNlY3Rpb24gNC40LjIKICAgICJDbG9ja2luZyBpbiBQQ0kgQWdlbnQgTW9kZSIuCgogICAgU2lnbmVkLW9mZi1ieTogSXJhIFcuIFNueWRlciA8aXdzQG92cm8uY2FsdGVjaC5lZHU+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDc1ZjM1MjA5ZjcwMmJiMjY4MjY4NTVlZDhjOGU0ZDEwOGFiNWY0MTIKQXV0aG9yOiBJcmEgU255ZGVyIDxpd3NAb3Zyby5jYWx0ZWNoLmVkdT4KRGF0ZToJTW9uIEphbiAxMiAxMzozMjoyNiAyMDA5IC0wODAwCgogICAgODN4eDogUENJIGFnZW50IG1vZGUgZml4ZXMgZm9yIG11bHRpLWJvYXJkIHN5c3RlbXMKCiAgICBXaGVuIHJ1bm5pbmcgYSBzeXN0ZW0gd2l0aCAyIG9yIG1vcmUgTVBDODM0OUVNRFMgYm9hcmRzIGluIFBDSSBhZ2VudCBtb2RlLAogICAgdGhlIGJvYXJkcyB3aWxsIGxvY2sgdXAgdGhlIFBDSSBidXMgYnkgc2Nhbm5pbmcgYWdhaW5zdCBlYWNoIG90aGVyLgoKICAgIFRoZSBib2FyZHMgbG9jayBhZ2FpbnN0IGVhY2ggb3RoZXIgYnkgdHJ5aW5nIHRvIGFjY2VzcyB0aGUgUENJIGJ1cyBiZWZvcmUKICAgIGNsZWFyaW5nIHRoZWlyIGNvbmZpZ3VyYXRpb24gbG9jayBiaXQuIEJvdGggYm9hcmRzIGVuZCB1cCBpbiBhIGxvb3AsCiAgICBzZW5kaW5nIGFuZCByZWNlaXZpbmcgIlRhcmdldCBOb3QgUmVhZHkiIG1lc3NhZ2VzIGZvcmV2ZXIuCgogICAgV2hlbiBydW5uaW5nIGluIFBDSSBhZ2VudCBtb2RlLCB0aGUgc2Nhbm5pbmcgbm93IHRha2VzIHBsYWNlIGFmdGVyIHRoZQogICAgYm9hcmRzIGhhdmUgY2xlYXJlZCB0aGVpciBjb25maWd1cmF0aW9uIGxvY2sgYml0LgoKICAgIEFsc28sIGFkZCBhIG1pc3NpbmcgZGVjbGFyYXRpb24gdG8gdGhlIG1wYzgzeHguaCBoZWFkZXIgZmlsZSwgZml4aW5nIGEKICAgIGJ1aWxkIHdhcm5pbmcuCgogICAgU2lnbmVkLW9mZi1ieTogSXJhIFcuIFNueWRlciA8aXdzQG92cm8uY2FsdGVjaC5lZHU+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ1NWE0NjkxNWI4Mjg5NmNjMjA3MGViMzI2ZDA3NTU1NWMyYmM1ODAKQXV0aG9yOiBSb24gTWFkcmlkIDxyb25fbWFkcmlkQHNiY2dsb2JhbC5uZXQ+CkRhdGU6CUZyaSBEZWMgMTIgMTM6MTI6NDUgMjAwOCAtMDgwMAoKICAgIG1wYzgzeHg6IFNpemUgb3B0aW1pemF0aW9uIG9mIHN0YXJ0LlMKCiAgICBDdXJyZW50bHkgdGhlcmUgYXJlIGluIGV4Y2VzcyBvZiAxMDAgYnl0ZXMgbG9jYXRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBpbWFnZQogICAgYnVpbHQgYnkgc3RhcnQuUyB0aGF0IGFyZSBub3QgYmVpbmcgdXRpbGl6ZWQuICBUaGlzIHBhdGNoIG1vdmVzIGEgZmV3IGZ1bmN0aW9ucwogICAgaW50byB0aGlzIHBhcnQgb2YgdGhlIGltYWdlLiAgVGhpcyB3aWxsIGNyZWF0ZSBhIGdyZWF0ZXIgbnVtYmVyIG9mICphdmFpbGFibGUqCiAgICBieXRlcyB0aGF0IGNhbiBiZSB1c2VkIGJ5IGJvYXJkIHNwZWNpZmljIGNvZGUgaW4gTkFORCBidWlsZHMgYW5kIHdpbGwgZGVjcmVhc2UKICAgIHRoZSBzaXplIG9mIHRoZSBhc3NlbWJsZWQgY29kZSBpbiBvdGhlciBidWlsZHMuCgogICAgU2lnbmVkLW9mZi1ieTogUm9uIE1hZHJpZCA8cm9uX21hZHJpZEBzYmNnbG9iYWwubmV0PgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3MmQxNWU3MDViYzM5ODM4ODQxMDVjYjc3NTVjN2JhODBlNzRhMGE1CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEphbiAyMSAyMzowODoxMiAyMDA5ICswMTAwCgogICAgUHJlcGFyZSB2MjAwOS4wMQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNjM1ZTVmOGZjODIzNjVlNmU5NzM0YjMxMzJiYzk1MTM1YTZkZTY3OQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBKYW4gMTggMjE6Mzc6NDggMjAwOSArMDEwMAoKICAgIFByZXBhcmUgMjAwOS4wMS1yYzMKCiAgICBVcGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0Y2RhNDM3ODk4Zjc4NzM3NTJmMDIwMTc1N2NkMzNmMTIxOTZjZTg3CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgSmFuIDE3IDEzOjMyOjQyIDIwMDkgLTA1MDAKCiAgICBidWlsZCBzeXN0ZW06IHRyZWF0IGFsbCBEYXJ3aW4ncyBhbGlrZQoKICAgIFRoZSB4ODYgYmFzZWQgdmVyc2lvbiBvZiBEYXJ3aW4gYmVoYXZlcyB0aGUgc2FtZSBxdWlya3kgd2F5IGFzIHRoZSBwb3dlcnBjCiAgICBEYXJ3aW4sIHNvIG9ubHkgY2hlY2sgSE9TVE9TIHdoZW4gc2V0dGluZyB1cCBEYXJ3aW4gd29ya2Fyb3VuZHMuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGMwODhhMTA4Yzc1ZGI1NjVlMDcyOTJmZDY2OGRmYTU0OTFlODViYzIKQXV0aG9yOiBQZXRlciBLb3JzZ2FhcmQgPGphY21ldEBzdW5zaXRlLmRrPgpEYXRlOglXZWQgSmFuIDE0IDEzOjUyOjI0IDIwMDkgKzAxMDAKCiAgICBmZHRfcmVzaXplKCk6IGZpeCBhY3R1YWxzaXplIGNhbGN1bGF0aW9ucyB3aXRoIHVuYWxpZ25lZCBibG9icwoKICAgIFRoZSBjb2RlIGluIGZkdF9yZXNpemUoKSB0byBleHRlbmQgdGhlIGZkdCBzaXplIHRvIGVuZCBvbiBhIHBhZ2UgYm91bmRhcnkKICAgIGlzIHdyb25nIGZvciBmZHQncyBub3QgbG9jYXRlZCBhdCBhbiBhZGRyZXNzIGFsaWduZWQgb24gYSBwYWdlIGJvdW5kYXJ5LgogICAgV2hhdCdzIGV2ZW4gd29yc2UsIHRoZSBjb2RlIHdvdWxkIG1ha2UgYWN0dWFsc2l6ZSBzaHJpbmsgcmF0aGVyIHRoYW4gZ3JvdwogICAgaWYgKGJsb2IgJiAweGZmZikgd2FzIGJpZ2dlciB0aGFuIHRoZSBhbW91bnQgb2YgcGFkZGluZyBhZGRlZCBieSBBTElHTigpLAogICAgY2F1c2luZyBmZHRfYWRkX21lbV9yc3YgdG8gZmFpbC4KCiAgICBGaXggaXQgYnkgYWxpZ25pbmcgZW5kIGFkZHJlc3MgKGJsb2IgKyBzaXplKSB0byBhIHBhZ2UgYm91bmRhcnkgaW5zdGVhZC4KICAgIEZvciBhbGlnbmVkIGZkdCdzIHRoaXMgaXMgZXF1aXZhbGVudCB0byB3aGF0IHdlIGhhZCBiZWZvcmUuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgS29yc2dhYXJkIDxqYWNtZXRAc3Vuc2l0ZS5kaz4KCmNvbW1pdCBmYWRhZDE1NzNmYjE2YzkwMDI1ZjA4YTI4NjFkNjA0N2QwOTNjYmE3CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglGcmkgSmFuIDkgMDQ6Mzg6MTcgMjAwOSAtMDUwMAoKICAgIG5jYjogdXNlIHNvY2tsZW5fdAoKICAgIFRoZSByZWN2ZnJvbSgpIGZ1bmN0aW9uIHRha2VzIGEgc29ja2xlbl90LCBub3QgYW4gaW50LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBmYzgzYzkyNzNjZWM2ZTZlNTQyZjRhMGVhM2I2NTNiN2QwNTEzZmZhCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIEphbiAxMSAxNjozNToxNiAyMDA5ICswMTAwCgogICAgc2g6IHNlcmlhbDogdXNlIHJlYWR4L3dyaXRleCBhY2Nlc3NvcnMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDllMWZhNjI4YmRiNjQ3NDU4MTFjZGQyNmM0Zjk1Mzg0NmMwNzYxODAKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gSmFuIDExIDE2OjM1OjE1IDIwMDkgKzAxMDAKCiAgICBzaDogc2VyaWFsOiBjb2Rpbmcgc3R5bGUgY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgYzk5MzVjOTkyNTc1OTIyYjdlZjEzZWVjMDY1NmVkODY2NWQzMjRlMwpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJU3VuIEphbiAxMSAxNzo0ODo1NiAyMDA5ICswOTAwCgogICAgc2g6IEZpeCBjb21waWxlIGVycm9yIG9uIGxvd2xldmVsX2luaXQgZmlsZQoKICAgIGxvd2xldmVsX2luaXQgb2YgU0ggd2FzIGNvcnJlY3RlZCB0byB1c2UgdGhlIHdyaXRlL3JlYWRYWCBtYWNyby4KICAgIEhvd2V2ZXIsIHRoZXJlIHdhcyBhIHByb2JsZW0gdGhhdCB3YXMgbm90IGFibGUgdG8gYmUgY29tcGlsZWQgcGFydGlhbGx5LgogICAgVGhpcyBwYXRjaCBjb3JyZWN0ZWQgdGhpcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgYTViMDRkMDBiZmViOTQwYzYyMjMyOTcyY2U2NDRkNTBiNDU3OTdmOQpBdXRob3I6IEtpZXJhbiBCaW5naGFtIDxraWVyYW5iaW5naGFtQGdtYWlsLmNvbT4KRGF0ZToJVHVlIERlYyAzMCAwMToxNjowMyAyMDA4ICswMDAwCgogICAgc2g6IEZpeCB1cCByc2s3MjAzIHRhcmdldCBmb3Igb3V0IG9mIHRyZWUgYnVpbGQKCiAgICBGaXggdXAgcnNrNzIwMyB0YXJnZXQgdG8gYnVpbGQgc3VjY2Vzc2Z1bGx5IHVzaW5nIG91dC1vZi10cmVlIGJ1aWxkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpZXJhbiBCaW5naGFtIDxrYmluZ2hhbUBtcGMtZGF0YS5jby51az4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBmN2U3OGYzYjc0YWFlOWNhY2EyOTk3YmFkODY1YTcyMzM4MzI2YzBhCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IERlYyAyMCAxOToyOTo0OSAyMDA4ICswMTAwCgogICAgc2g6IHVzZSB3cml0ZXs4LDE2LDMyfSBpbiBhbGwgbG93bGV2ZWxfaW5pdAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgZTQ0MzA3Nzk2MjNhZjUwMGRlMWNlZTc4OTJjMzc5ZjA3ZWY1OTgxMwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBEZWMgMjAgMTk6Mjk6NDggMjAwOCArMDEwMAoKICAgIHNoOiBsb3dsZXZlbF9pbml0IGNvZGluZyBzdHlsZSBjbGVhbnVwCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCA4NWNiMDUyZWU0MTY3NWNhMzYxZTZhNGM2OTQ1NWRjNzE1YzhmMmQ5CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IERlYyAyMCAxNToyNzo0NSAyMDA4ICswMTAwCgogICAgc2g6IHVwZGF0ZSBzaDIvc2gyYSB0aW1lciBjb2Rpbmcgc3R5bGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDFlMTVmZjk5OTMyMmU4MWFmNGMwYzBjNTQ4OTA4ZjM4OTQ0YmEzOWMKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgRGVjIDIwIDE1OjI1OjIyIDIwMDggKzAxMDAKCiAgICBzaDogdXBkYXRlIHNoIHRpbWVyIGNvZGluZyBzdHlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgMGUzZWNlMzM4MDFlMzc3YmU2N2ZmYTI5ZjA4MzQyMWFkODIwZjI4YgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBKYW4gMTQgMjM6MjY6MDUgMjAwOSArMDEwMAoKICAgIFByZXBhcmUgMjAwOS4wMS1yYzIKCiAgICBVcGRhdGUgQ0hBTkdFTE9HLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZTkyYzlhODYwZTQ0YzE0NTEzYzg5MDljZTQyOTllMjUzYTc3NWVlYgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBKYW4gMTQgMjI6MzU6MzAgMjAwOSArMDEwMAoKICAgIGNwdS9tcGM4MjR4L01ha2VmaWxlOiBmaXggd2FybmluZyB3aXRoIHBhcmFsbGVsIGJ1aWxkcwoKICAgIFBhcmFsbGVsIGJ1aWxkcyB3b3VsZCBvY2Nhc2lvbmFsbHkgaXNzdWUgdGhpcyBidWlsZCB3YXJuaW5nOgoKCWxuOiBjcmVhdGluZyBzeW1ib2xpYyBsaW5rIGBjcHUvbXBjODI0eC9iZWRidWdfNjAzZS5jJzogRmlsZSBleGlzdHMKCiAgICBVc2UgImxuIC1zZiIgYXMgcXVpY2sgd29yayBhcm91bmQgZm9yIHRoZSBpc3N1ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDNiYTYwNWQ0YmVlYzY0OTQzODUzOWU3ZGY5N2I1ZmVkYjI2NTkyZmIKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJRnJpIEphbiAyIDEyOjE4OjQ5IDIwMDkgKzAxMDAKCiAgICBwcGM0eHg6IEFkZCBsb2FkcGNpIGNvbW1hbmQgdG8gZXNkJ3MgQ1BDSTQwNTIgYW5kIENQQ0k0MDVBQiBib2FyZHMKCiAgICBUaGlzIHBhdGNoIGFkZHMgZXNkJ3MgbG9hZHBjaSBCU1AgY29tbWFuZCB0byBDUENJNDA1MiBhbmQKICAgIENQQ0k0MDVBQiBib2FyZC4gVGhpcyByZXF1aXJlcyBDT05GSUdfQ01EX0JTUCBhbmQgQ09ORklHX1BSQU0uCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNjAwZmU0NmZiM2RhYjdmMDc2MDRmOTAwOTkwNGYzMTU4NDQxNTExNApBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglGcmkgSmFuIDIgMTI6MTg6MTIgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogRGlzYWJsZSBwY2kgbm9kZSBpbiBkZXZpY2UgdHJlZSBvbiBDUENJNDA1IHBjaSBhZGFwdGVycwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGY2YTFmNDkwZDIyNGM2MDBhMDkxMzdlNThkMTAyNmQxNTBiOGU2NzkKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJRnJpIEphbiAyIDEyOjE3OjM2IDIwMDkgKzAxMDAKCiAgICBwcGM0eHg6IENsZWFudXAgQ1BDSTQwNSBib2FyZCBjb2RlCgogICAgVGhpcyBwYXRjaCBjbGVhbnMgdXAgQ1BDSTQwNSBib2FyZCBzdXBwb3J0OgogICAgLSB3cmFwIGxvbmcgbGluZXMKICAgIC0gdW5pZmljYXRpb24gb2Ygc3BhY2VzIGluIGZ1bmN0aW9uIGNhbGxzCiAgICAtIHJlbW92ZSBkZWFkIGNvZGUKCiAgICBVc2UgY29ycmVjdCBpbyBhY2Nlc3NvcnMgb24gcGVyaXBoZXJhbHMuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZmNlZWJiNDVhMGI5N2U5MmY5ODg5ODYxZjhjM2I5Y2I4ODVlNzA2ZgpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglGcmkgSmFuIDIgMTI6MTY6MzUgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogRW5hYmxlIGF1dG8gUlM0ODUgbW9kZSBvbiBQTFU0MDUgYm9hcmRzCgogICAgVGhpcyBwYXRjaCB0dXJucyBvbiB0aGUgYXV0byBSUzQ4NSBtb2RlIGluIHRoZSAybmQgZXh0ZXJuYWwKICAgIHVhcnQgb24gUExVNDA1IGJvYXJkcy4gVGhpcyBpcyBhIHNwZWNpYWwgbW9kZSBvZiB0aGUgdXNlZAogICAgRXhhciBYUjE2QzI4NTAgdWFydC4gQmVjYXVzZSB0aGVzZSBib2FyZHMgb25seSBoYXZlIGEgNDg1IHBoeXNpY2FsCiAgICBsYXllciBjb25uZWN0ZWQgaXQncyBhIGdvb2QgaWRlYSB0byB0dXJuIGl0IG9uIGJ5IGRlZmF1bHQuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1mQGVzZC5ldT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBiNWY2NWRmYTlhYThlMDY4ZTYyYWJhNDczM2RjNGZkOTdiMWQ5YmY2CkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEphbiAxMyAxNjoyOToyOCAyMDA5IC0wNTAwCgogICAgU29tZSBjaGFuZ2VzIG9mIFRMQiBlbnRyeSBzZXR0aW5nIGZvciBNUEM4NTcyRFMKCiAgICAtIE1vdmUgdGhlIFRMQiBlbnRyeSBvZiBQSVhJU19CQVNFIGZyb20gVExCMCB0byBUTEIxWzhdLCBiZWNhdXNlIGluIENBTVAgbW9kZSwKICAgIGFsbCB0aGUgVExCMCBlbnRyaWVzIHdpbGwgYmUgaW52YWxpZGF0ZWQgYWZ0ZXIgY3B1MSBicmluZ3MgdXAga2VybmVsLCB0aHVzIGNwdTAKICAgIGNhbiBub3QgYWNjZXNzIFBJWElTX0JBU0UgYW55bW9yZSAoYW55IGFjY2VzcyB3aWxsIGNhdXNlIERhdGFUTEJFcnJvciBleGNlcHRpb24pCgogICAgLSBTZXQgQ09ORklHX1NZU19ERFJfVExCX1NUQVJUIHRvIDkgZm9yIE1QQzg1NzJEUyBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk1MDI2NDMxN2ViOTU5NGIyYjVlZTJmYjY1MjA2MjAwYTFjNjAwN2EKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSmFuIDEzIDE2OjI5OjIyIDIwMDkgLTA1MDAKCiAgICBDaGFuZ2UgRERSIHRsYiBzdGFydCBlbnRyeSB0byBDT05GSUcgcGFyYW0gZm9yIDg1eHgKCiAgICBTbyB0aGF0IHdlIGNhbiBsb2NhdGUgdGhlIEREUiB0bGIgc3RhcnQgZW50cnkgdG8gdGhlIHZhbHVlIG90aGVyIHRoYW4gOC4gQnkKICAgIGRlZmF1bHQsIGl0IGlzIHN0aWxsIDguCgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2ZDNhMTBmNzNlY2U3ZmZiNzM2ODkwYzEwZTAyMzIyMjYxMmE0YWEwCkF1dGhvcjogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSmFuIDkgMTY6MDI6MzUgMjAwOSArMDgwMAoKICAgIENoYW5nZSBQQ0lFMSYyIGRlY2lpZGUgbG9naWMgb24gTVBDODU0NERTIGJvYXJkIG1vcmUgcmVhZGFibGUKCiAgICBUaGUgSU8gcG9ydCBzZWxlY3Rpb24gZm9yIE1QQzg1NDREUyBib2FyZDoKICAgICBQb3J0CQkJY2ZnX2lvX3BvcnRzCiAgICAgUENJRTEJCTB4MiwgMHgzLCAweDQsIDB4NSwgMHg2LCAweDcKICAgICBQQ0lFMgkJMHg0LCAweDUsIDB4NiwgMHg3CiAgICAgUENJRTMJCTB4NiwgMHg3CiAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBQQ0lFMTIgYW5kIFBDSUUyIGxvZ2ljIG1vcmUgcmVhZGFibGUuCiAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMDI4ZTExNjgxMWQyOGEwMzE2NjBmMWFkOWUyMGFjMTI5M2IzYzVjNwpBdXRob3I6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEphbiA5IDE2OjAxOjUyIDIwMDkgKzA4MDAKCiAgICBQQ0lFMiBhbmQgUENJRTMgYXJlIGRlY2lkZWQgYnkgY29ycmVzcG9uaW5nIGJpdCBpbiBkZXZkaXNyIGluc3RlYWQgb2YgUENJRTEgYml0CgogICAgUENJRTIgYW5kIFBDSUUzIHNob3VsZCBiZSBkZWNpZGVkIGJ5IGNvcnJlc3BvbmluZyBiaXQgaW4gZGV2ZGlzciBpbnN0ZWFkIG9mCiAgICBQQ0lFMSBiaXQuCiAgICBPbiBNUEM4NTcyRFMgYm9hcmQsIFBDSUUgcmVmZXJzIHRvIFBDSUUxLgogICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDlhZmMyZWYwMzA3YWVjZjUyNDgyZGY2N2MzMWI3NWQ1ZjllNjZiNDcKQXV0aG9yOiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBKYW4gOSAxNjowMDo1NSAyMDA5ICswODAwCgogICAgRml4IElPIHBvcnQgc2VsZWN0aW9uIGlzc3VlIG9uIE1QQzg1NDREUyBhbmQgTVBDODU3MkRTIGJvYXJkcwoKICAgIFRoZSBJTyBwb3J0IHNlbGVjdGlvbiBpcyBub3QgY29ycmVjdCBvbiBNUEM4NTcyRFMgYW5kIE1QQzg1NDREUyBib2FyZC4KICAgICBUaGlzIHBhdGNoIGZpeGVzIHRoaXMgaXNzdWUuCiAgICAgRm9yIE1QQzg1NzIKICAgICBQb3J0CQkJY2ZnX2lvX3BvcnRzCiAgICAgUENJRTEJCTB4MiwgMHgzLCAweDcsIDB4YiwgMHhjLCAweGYKICAgICBQQ0lFMgkJMHgzLCAweDcKICAgICBQQ0lFMwkJMHg3CgogICAgRm9yIE1QQzg1NDQKICAgIFBvcnQJCQljZmdfaW9fcG9ydHMKICAgIFBDSUUxCQkweDIsIDB4MywgMHg0LCAweDUsIDB4NiwgMHg3CiAgICBQQ0lFMgkJMHg0LCAweDUsIDB4NiwgMHg3CiAgICBQQ0lFMwkJMHg2LCAweDcKICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzZTNmZmZlM2JhZjNiZWZkZTI4N2ZlYzFmY2JmZTU1MDUyZmI4OTQ2CkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgRGVjIDMgMjI6MzY6NDQgMjAwOCAtMDYwMAoKICAgIG1wYzg2MTBocGNkOiBGaXggUENJIG1hcHBpbmcgY29uY2VwdHMKCiAgICBSZW5hbWUgX0JBU0UgdG8gX0JVUywgYXMgaXQncyBhY3R1YWxseSBhIFBDSSBidXMgYWRkcmVzcywKICAgIHNlcGFyYXRlIHZpcnR1YWwgYW5kIHBoeXNpY2FsIGFkZHJlc3NlcyBpbnRvIF9WSVJUIGFuZCBfUEhZUywKICAgIGFuZCB1c2UgZWFjaCBhcHBvcHJpYXRlbHkuCVRoaXMgbWFrZXMgdGhlIGNvZGUgZWFzaWVyIHRvIHJlYWQKICAgIGFuZCB1bmRlcnN0YW5kLCBhbmQgZmFjaWxpdGF0ZXMgbWFwcGluZyBjaGFuZ2VzIGdvaW5nIGZvcndhcmQuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDc5ZTQzNmNhZDNiNGE3ZGI4ODQwOGMzZjA1MTc1MDI4ZjMwZDcwMGQKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBEZWMgMyAyMjozNjoyNiAyMDA4IC0wNjAwCgogICAgc2JjODY0MWQ6IEZpeCBQQ0kgbWFwcGluZyBjb25jZXB0cwoKICAgIFJlbmFtZSBfQkFTRSB0byBfQlVTLCBhcyBpdCdzIGFjdHVhbGx5IGEgUENJIGJ1cyBhZGRyZXNzLAogICAgc2VwYXJhdGUgdmlydHVhbCBhbmQgcGh5c2ljYWwgYWRkcmVzc2VzIGludG8gX1ZJUlQgYW5kIF9QSFlTLAogICAgYW5kIHVzZSBlYWNoIGFwcG9wcmlhdGVseS4JVGhpcyBtYWtlcyB0aGUgY29kZSBlYXNpZXIgdG8gcmVhZAogICAgYW5kIHVuZGVyc3RhbmQsIGFuZCBmYWNpbGl0YXRlcyBtYXBwaW5nIGNoYW5nZXMgZ29pbmcgZm9yd2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYTlmM2FjYmNkMDdkYTcyYjU0NDZjZTU1NzUzMWEzZWQ4YjhiZWZmMApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBKYW4gMTIgMTQ6NTA6MzUgMjAwOSArMDEwMAoKICAgIE1QQzg2eHg6IGZpeCBidWlsZCB3YXJuaW5ncwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMDMyYTFjOTM0ZWY0ZGMwMDMyODFmNTczMDJiNmU2OTMwNjJjMTg2OApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIEphbiA1IDE2OjA5OjQ0IDIwMDkgLTA1MDAKCiAgICBiZjUzNy1zdGFtcC9uYW5kOiBmaXggYm9hcmRfbmFuZF9pbml0IHByb3RvdHlwZQoKICAgIFRoZSBib2FyZF9uYW5kX2luaXQoKSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGFuIGludCwgbm90IHZvaWQuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDY4N2Y5NTJlNDExOTU5NGFiOTEzYmUxMWM5MGY3ZjAxOGMyYTdhNzkKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBEZWMgMTEgMDc6MDQ6NDggMjAwOCAtMDUwMAoKICAgIEJsYWNrZmluOiBkcm9wIENPTkZJR19TUEkgaGFuZGxpbmcgaW4gYm9hcmQgaW5pdAoKICAgIFRoZSBlZXByb20gU1BJIGluaXQgZnVuY3Rpb25zIGFyZSBkdXBsaWNhdGVkIGFzIHRoZSBjb21tb24gY29kZSBhbHJlYWR5CiAgICBleGVjdXRlcyB0aGVzZSBmb3IgdXMuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGU3ZTY4NGIxMGQ3M2EzMDM5MDIyMDg1OTRjN2MzZTdlMGQ3NTMyODIKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CUZyaSBPY3QgMjQgMTc6NTE6NTcgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBmaXggb3V0LW9mLXRyZWUgYnVpbGRpbmcgd2l0aCBsZHNjcmlwdHMKCiAgICBNYW55IG9mIHRoZSBCbGFja2ZpbiBib2FyZCBsaW5rZXIgc2NyaXB0cyBhcmUgcHJlcHJvY2Vzc2VkLCBzbyBtYWtlIHN1cmUgd2UKICAgIG91dHB1dCB0aGUgbGlua2VyIHNjcmlwdCBpbnRvIHRoZSBidWlsZCB0cmVlIHJhdGhlciB0aGFuIHRoZSBzb3VyY2UgdHJlZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYjllZWNjMzQyZjc2N2I1MGUxNDc2ZmJjMWFhZDdkODhkZDRjZTVlYgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJRnJpIE9jdCAyNCAxNzo0ODo1NCAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGZpeCBsaW5rZXIgc2NyaXB0cyB0byB3b3JrIHdpdGggLS1nYy1zZWN0aW9ucwoKICAgIE1ha2Ugc3VyZSBhbGwgLnRleHQgc2VjdGlvbnMgZ2V0IHB1bGxlZCBpbiBhbmQgdGhlIGVudHJ5IHBvaW50IGlzIHByb3Blcmx5CiAgICByZWZlcmVuY2VkIHNvIHRoZXkgZG9uJ3QgZ2V0IGRpc2NhcmRlZCB3aGVuIGxpbmtpbmcgd2l0aCAtLWdjLXNlY3Rpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA1MDlmYzU1M2JjNjA4N2E2ZjcwNWIzYmY1MmYzOTUwZDdkMWVhYTU4CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgT2N0IDExIDIwOjQ1OjQ0IDIwMDggLTA0MDAKCiAgICBCbGFja2Zpbjogc2V0IHByb3BlciBMRFJGTEFHUyBmb3IgcGFyYWxsZWwgYm9vdGluZyBMRFJzCgogICAgSW4gb3JkZXIgdG8gYm9vdCBhbiBMRFIgb3V0IG9mIHBhcmFsbGVsIGZsYXNoLCB0aGUgbGRyIHV0aWxpdHkgbmVlZHMgYSBmZXcKICAgIGZsYWdzIHRvIHRlbGwgaXQgdG8gZ2VuZXJhdGUgdGhlIHJpZ2h0IGhlYWRlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgM2RkOTM5NWEwZDdjZTY5YTMzNWQwZTc0M2MwNGI5Y2FlZGQ2ODFkMwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVR1ZSBKYW4gNiAyMTo0MTo1OSAyMDA5ICswMTAwCgogICAgYXQ5MXJtOTIwMDogbW92ZSBkZWZpbmUgZnJvbSBsb3dsZXZlbF9pbml0IHRvIGhlYWRlcgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgOGE0ODY4NmZhYzIwMzAyODc3NjVmMTk3MGVhMDQ2YmQ1NzM0YjczMwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBKYW4gMyAxNzoyMjoyNiAyMDA5ICswMTAwCgogICAgbTUwMXNrOiBtb3ZlIHRvIHRoZSBjb21tb24gbWVtb3J5IHNldHVwCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBkNDgxYzgwZDc4Zjk1NDEzM2MwMzVkYWU2YzdkMjJkZTM2MjU3OTVkCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IEphbiAzIDE3OjIyOjI1IDIwMDkgKzAxMDAKCiAgICBhdDkxcm05MjAwOiByZW5hbWUgbG93bGV2ZWwgaW5pdCB2YWx1ZSB0byBDT05GSUdfU1lTXwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNGUxNzBiMTY2MjUyOTFhYTEwZDBkOWFiYzNmMzRlOGE1OTQ1ZDE1NwpBdXRob3I6IE5pY29sYXMgRmVycmUgPG5pY29sYXMuZmVycmVAYXRtZWwuY29tPgpEYXRlOglUdWUgSmFuIDYgMjE6MTM6MTQgMjAwOSArMDEwMAoKICAgIGF0OTE6IGFkZCBhdDkxc2FtOXhlZWsgYm9hcmQgc3VwcG9ydAoKICAgIEF0OTFzYW05eGUgaXMgYmFzaWNhbGx5IGFuIGF0OTFzYW05MjYwIHdpdGggZW1iZWRkZWQgZmxhc2guIFdlIGNhbiBtYW5hZ2UKICAgIGl0IGFzIGFub3RoZXIgZW50cnkgZm9yIGF0OTFzYW05MjYwIGluIHRoZSBNYWtlZmlsZS4KCiAgICBDaGVjayBkb2N1bWVudGF0aW9uIGF0IDoKICAgIGh0dHA6Ly93d3cuYXRtZWwuY29tL2R5bi9wcm9kdWN0cy9wcm9kdWN0X2NhcmQuYXNwP3BhcnRfaWQ9NDI2MwoKICAgIFNpZ25lZC1vZmYtYnk6IE5pY29sYXMgRmVycmUgPG5pY29sYXMuZmVycmVAYXRtZWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA5ZmZkNTNkYjg3MGE3ZGExMzRmOWExYWU3Njg5NGE2YjMxMjM3YmU1CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVHVlIEphbiA2IDIxOjE1OjU3IDIwMDkgKzAxMDAKCiAgICBmaXggYm1wX2xvZ28uaCBtYWtlIGRlcGVuZGVuY2llcyB0byBhbGxvdyBwYXJhbGxlbCBidWlsZAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZTEyZDlhOGZiNDhkMjQxNzZlZmZmY2NjMDcyYjQ0NWU2MGEzYWZlNApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBKYW4gMyAxNzoyMjoyNCAyMDA5ICswMTAwCgogICAgYXQ5MTogRml4IEF0bWVsJ3MgYXQ5MXNhbTkgYm9hcmRzIG91dCBvZiB0cmVlIGJ1aWxkCgogICAgaW50cm9kdWNlZCBpbiBjb21taXQgODlhN2E4N2YwODRjCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAwNjY4MjM2YmFmYWExYzExYzUyMTY1MmEyZmFjZWJjNzRiZWVjYmYwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIERlYyAzMCAyMjo1NjoxMSAyMDA4ICswMTAwCgogICAgUkVBRE1FOiB1cGRhdGUgbWFpbGluZyBsaXN0IG5hbWUgYW5kIGhpdHMgdG8gcGF0Y2ggc3VibWlzc2lvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGQ5MDExZjliNzU1NjFhMGJkOTI1NDkzNGMyYmIyYmM3OTlkNGY2NDUKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglUdWUgRGVjIDIzIDE2OjMyOjAxIDIwMDggLTA2MDAKCiAgICA4NXh4OiBFbmFibGUgaW5ib3VuZCBQQ0kgY29uZmlnIGN5Y2xlcyBmb3IgWC1FUyBib2FyZHMgY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgMWYwM2NiZmFlMjIxYjI0YmExMzQxYTBhM2Y2MmZmMDFjNWM4NzRkZgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVR1ZSBEZWMgMjMgMTY6MzI6MDAgMjAwOCAtMDYwMAoKICAgIFhQZWRpdGU1MjAwIGJvYXJkIHN1cHBvcnQgY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgZmVhOTFlZGVlOGFlMDI5NWUzYzMwYjFmZjU0NGRmNTFmNGQ2NjhlMQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVR1ZSBEZWMgMiAyMTo1ODowNCAyMDA4ICswMTAwCgogICAgdXNiX2tiZDogZml4IHVzYl9rYmRfZGVyZWdpc3RlciB3aGVuIERFVklDRV9ERVJFR0lTVEVSIG5vdCBlbmFibGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCw7ZobWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IGFkYTU5MWQyYTBlY2ZmNWY5YmM1ZWQxZWJmMzEwZjQzOWMzZDBhMjgKQXV0aG9yOiBUcmVudCBQaWVwaG8gPHRwaWVwaG9AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIERlYyAzIDE1OjE2OjM3IDIwMDggLTA4MDAKCiAgICBtcGM4WzU2XXh4OiBQdXQgbG9jYWxidXMgY2xvY2sgaW4gc3lzaW5mbyBhbmQgZ2QKCiAgICBDdXJyZW50bHkgTVBDODV4eCBhbmQgTVBDODZ4eCBib2FyZHMganVzdCBjYWxjdWxhdGUgdGhlIGxvY2FsYnVzIGZyZXF1ZW5jeQogICAgYW5kIHByaW50IGl0IG91dCwgYnV0IGRvbid0IHNhdmUgaXQuCgogICAgVGhpcyBjaGFuZ2VzIHdoZXJlIGl0cyBjYWxjdWxhdGVkIGFuZCBzdG9yZWQgdG8gYmUgbW9yZSBjb25zaXN0ZW50IHdpdGggdGhlCiAgICBDUFUsIENDQiwgVEIsIGFuZCBERFIgZnJlcXVlbmNpZXMgYW5kIHRoZSBNUEM4M3h4IGxvY2FsYnVzIGNsb2NrLgoKICAgIFRoZSBsb2NhbGJ1cyBmcmVxdWVuY3kgaXMgYWRkZWQgdG8gc3lzaW5mbyBhbmQgY2FsY3VsYXRlZCB3aGVuIHN5c2luZm8gaXMKICAgIHNldCB1cCwgaW4gY3B1L21wYzhbNTZdeHgvc3BlZWQuYywgdGhlIHNhbWUgYXMgdGhlIG90aGVyIGZyZXF1ZW5jaWVzIGFyZS4KCiAgICBnZXRfY2xvY2tzKCkgY29waWVzIHRoZSBmcmVxdWVuY3kgaW50byB0aGUgZ2xvYmFsIGRhdGEsIGFzIHRoZSBvdGhlcgogICAgZnJlcXVlbmNpZXMgYXJlLCBpbnRvIGEgbmV3IGZpZWxkIHRoYXQgaXMgb25seSBlbmFibGVkIGZvciBNUEM4NXh4IGFuZAogICAgTVBDODZ4eC4KCiAgICBjaGVja2NwdSgpIGluIGNwdS9tcGM4WzU2XXh4L2NwdS5jIHdpbGwgcHJpbnQgb3V0IHRoZSBsb2NhbCBidXMgZnJlcXVlbmN5CiAgICBmcm9tIHN5c2luZm8sIGxpa2UgdGhlIG90aGVyIGZyZXF1ZW5jaWVzLCBpbnN0ZWFkIG9mIGNhbGN1bGF0aW5nIGl0IG9uIHRoZQogICAgc3BvdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUcmVudCBQaWVwaG8gPHRwaWVwaG9AZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgQWNrZWQtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTg2M2Q2YWNhMTE0MDVlMWUwZDhhYmEyMDQ1ZDc4YWVlYzRkNGVlNwpBdXRob3I6IFRyZW50IFBpZXBobyA8dHBpZXBob0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgRGVjIDMgMTU6MTY6MzYgMjAwOCAtMDgwMAoKICAgIG1wYzg2eHg6IERvdWJsZSBsb2NhbCBidXMgY2xvY2sgZGl2aWRlcgoKICAgIFRoZSBsb2NhbCBidXMgY2xvY2sgZGl2aWRlciBzaG91bGQgYmUgZG91YmxlZCBmb3IgYm90aCA4NjEwIGFuZCA4NjQxLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRyZW50IFBpZXBobyA8dHBpZXBob0BmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0NDZjMzgxZTNlMTZmMTk4NTdiNzJlYTBkMDYyNDEyNjdiOGI5ZDU4CkF1dGhvcjogVHJlbnQgUGllcGhvIDx0cGllcGhvQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBEZWMgMyAxNToxNjozNSAyMDA4IC0wODAwCgogICAgbXBjODU2ODogRG91YmxlIGxvY2FsIGJ1cyBjbG9jayBkaXZpZGVyCgogICAgVGhlIGNsb2NrIGRpdmlkZXIgZm9yIHRoZSBNUEM4NTY4IGxvY2FsIGJ1cyBzaG91bGQgYmUgZG91YmxlZCwgbGlrZSB0aGUKICAgIG90aGVyIG5ld2VyIE1QQzg1eHggY2hpcHMuCgogICAgU2luY2UgdGhlcmUgYXJlIG5vdyBtb3JlIGNoaXBzIHdpdGggYSAyeCBkaXZpZGVyIHRoYW4gYSAxeCwgYW5kIGFueSBuZXcKICAgIDg1eHggY2hpcHMgd2lsbCBwcm9iYWJseSBiZSAyeCwgaW52ZXJ0IHRoZSBzZW5zZSBvZiB0aGUgI2lmIHNvIHRoYXQgaXQKICAgIGxpc3RzIHRoZSAxeCBjaGlwcyBpbnN0ZWFkIG9mIHRoZSAyeCBvbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRyZW50IFBpZXBobyA8dHBpZXBob0BmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmNTFmMDdlYjU4ZmFkMTJkZTkyOTRiYTRlZTZjMDlhMGRkZWFlZTAzCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIERlYyAxNiAxMjowOToyNyAyMDA4ICswODAwCgogICAgODV4eDogRml4IHRoZSBib290IHdpbmRvdyBpc3N1ZQoKICAgIElmIG9uZSBjdXN0b20gYm9hcmQgaXMgdXNpbmcgdGhlIDhNQiBmbGFzaCwgaXQgaXMgc2V0CiAgICBhcyBGTEFTSF9CQVNFID0gMHhlZjAwMDAwMCwgVEVYVF9CQVNFID0gMHhlZjc4MDAwMC4KICAgIFRoZSBjdXJyZW50IHN0YXJ0LlMgY29kZSB3aWxsIGJlIGJyb2tlbiBhdCBzd2l0Y2hfYXMuCgogICAgSXQgaXMgYmVjYXVzZSB0aGUgVExCMVsxNV0gaXMgc2V0IGFzIDE2TUIgcGFnZSBzaXplLAogICAgRVBOID0gVEVYVF9CQVNFICYgMHhmZjAwMDAwMCwgUlBOID0gMHhmZjAwMDAwMC4KCiAgICBGb3IgdGhlIDhNQiBmbGFzaCBjYXNlLCB0aGUgRVBOID0gMHhlZnh4eHh4eCwKICAgIFJQTiA9IDB4ZmZ4eHh4eHguIEFzc3VtZSB0aGUgdmlydCBhZGRyZXNzIG9mIHN3aXRjaF9hcwogICAgaXMgMHhlZjdmZjE4YywgdGhlIHJlYWwgYWRkcmVzcyBvZiB0aGUgaW5zdHJ1Y3Rpb24gYXQKICAgIHN3aXRjaF9hcyBzaG91bGQgYmUgMHhmZjdmZjE4Yy4gdGhlIDB4ZmY3ZmYxOGMgaXMgb3V0CiAgICBvZiB0aGUgcmFuZ2Ugb2YgdGhlIGRlZmF1bHQgOE1CIGJvb3QgTEFXIHdpbmRvdwogICAgMHhmZjgwMDAwMCAtIDB4ZmZmZmZmZmYuCgogICAgU28gd2hlbiB3ZSBzd2l0Y2ggdG8gQVMxIGFkZHJlc3Mgc3BhY2UgYXQgc3dpdGNoX2FzLAogICAgdGhlIGNvcmUgY2FuJ3QgZmV0Y2ggdGhlIGluc3RydWN0aW9uIGF0IHN3aXRjaF9hcyBhbnkKICAgIG1vcmUuIEl0IHdpbGwgY2F1c2UgYnJva2VuIGlzc3VlLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNThkYTg4OTBkNWZiZDA3NDc0NjAzNzcyMmE0MjNkZTlhYzQwODYxNgpBdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgpEYXRlOglUaHUgRGVjIDExIDE1OjQ3OjUwIDIwMDggLTA1MDAKCiAgICBzYmM4NTQ4OiB1c2UgcHJvcGVyIFBIWSBhZGRyZXNzCgogICAgVGhlIHZhbHVlcyBnaXZlbiBmb3IgdGhlIFBIWSBhZGRyZXNzIHdlcmUgd3JvbmcsIHNvIHRoZSBjb2RlCiAgICByZWFkIG5vIHZhbGlkIFBIWSBJRCwgYW5kIGZlbGwgdGhyb3VnaCB0byB0aGUgZ2VuZXJpYyBQSFkKICAgIHN1cHBvcnQsIHdoaWNoIHdvdWxkIHdvcmsgb24gMTAwME0gYnV0IHdvdWxkIG5vdCBhdXRvIG5lZ290aWF0ZQogICAgZG93biB0byAxMDBNIG9yIDEwTS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KCmNvbW1pdCBhZDIyZjkyNzNjNmYyNGZiZmE5MTdlODY3NjgwZTk2ODhlMGM1OWM1CkF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CkRhdGU6CVRodSBEZWMgMTEgMTU6NDc6NTEgMjAwOCAtMDUwMAoKICAgIHNiYzg1NDg6IGVuYWJsZSBjb21tYW5kIGxpbmUgZWRpdGluZyBieSBkZWZhdWx0LgoKICAgIExldHMgbWFrZSB0aGluZ3MgYSBiaXQgbW9yZSB1c2VyIGZyaWVuZGx5LglJdCBpc24ndCAxOTg1IGFueW1vcmUuCgogICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Cgpjb21taXQgYmQ5MzEwNWZhMTcxMTg0YTcxY2E4YjIyYmUwM2RjMjcwNWNmYmQzZgpBdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgpEYXRlOglUaHUgRGVjIDExIDE1OjQ3OjQ5IDIwMDggLTA1MDAKCiAgICBzYmM4NTQ4OiBkb24ndCBlbmFibGUgdGhlIDNyZCBhbmQgNHRoIGVUU0VDCgogICAgVGhlc2UgaW50ZXJmYWNlcyBkb24ndCBoYXZlIHVzYWJsZSBjb25uZWN0b3JzIG9uIHRoZSBib2FyZCwgc28gZG9uJ3QKICAgIGJvdGhlciBlbnVtZXJhdGluZyBvciBjb25maWd1cmluZyB0aGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgoKY29tbWl0IDE4MWEzNjUwMTEzODgzNzI4OTI3OTI4YjNhYzgxYWQ2ZGFkZTRiMmMKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgRGVjIDMgMTA6MDg6MTkgMjAwOCAtMDUwMAoKICAgIFNldCBJVlBSIHRvIGtlbnJlbCBlbnRyeSBwb2ludCBpbiBzZWNvbmQgY29yZSBib290IHBhZ2UKCiAgICBBc3N1bWluZyB0aGUgT1NlcyBleGNlcHRpb24gdmVjdG9ycyBzdGFydCBmcm9tIHRoZSBiYXNlIG9mIGtlcm5lbCBhZGRyZXNzLCBhbmQKICAgIHRoZSBrZXJuZWwgcGh5c2ljYWwgc3RhcnRpbmcgYWRkcmVzcyBjYW4gYmUgcmVsb2NhdGVkIHRvIGFuIG5vbi16ZXJvIGFkZHJlc3MuCiAgICBUaGlzIHBhdGNoIGVuYWJsZXMgdGhlIHNlY29uZCBjb3JlIHRvIGhhdmUgYSB2YWxpZCBJVlBSIGZvciBkZWJ1Z2dlciBiZWZvcmUKICAgIGtlcm5lbCBzZXR0aW5nIElWUFIgaW4gQ0FNUCBtb2RlLiBPdGhlcndpc2UsIElWUFIgaXMgMHgwIGFuZCBpdCBpcyBub3QgYSB2YWxpZAogICAgdmFsdWUgZm9yIHNlY29uZCBjb3JlIHdoaWNoIHJ1bnMga2VybmVsIGF0IGRpZmZlcmVudCBwaHlzaWNhbCBhZGRyZXNzIG90aGVyCiAgICB0aGFuIDB4MC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGE1ZDIxMmEyNjNjNThjYzc0NjQ4MWJmMWZjODc4NTEwNTMzY2U3ZDYKQXV0aG9yOiBUcmVudCBQaWVwaG8gPHRwaWVwaG9AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIERlYyAzIDE1OjE2OjM0IDIwMDggLTA4MDAKCiAgICBtcGM4eHh4OiBMQ1JSW0NMS0RJVl0gaXMgc29tZXRpbWVzIGZpdmUgYml0cwoKICAgIE9uIG5ld2VyIENQVXMsIDg1MzYsIDg1NzIsIGFuZCA4NjEwLCB0aGUgQ0xLRElWIGZpZWxkIG9mIExDUlIgaXMgZml2ZSBiaXRzCiAgICBpbnN0ZWFkIG9mIGZvdXIuCgogICAgSW4gb3JkZXIgdG8gYXZvaWQgYW4gaWZkZWYsIExDUlJfQ0xLRElWIGlzIHNldCB0byAweDFmIG9uIGFsbCBzeXN0ZW1zLiAgSXQKICAgIHNob3VsZCBiZSBzYWZlIGFzIHRoZSBmaWZ0aCBiaXQgd2FzIGRlZmluZWQgYXMgcmVzZXJ2ZWQgYW5kIHNldCB0byAwLgoKICAgIENvZGUgdGhhdCB3YXMgdXNpbmcgYSBoYXJkIGNvZGVkIDB4MGYgaXMgY2hhbmdlZCB0byB1c2UgTENSUl9DTEtESVYuCgogICAgU2lnbmVkLW9mZi1ieTogVHJlbnQgUGllcGhvIDx0cGllcGhvQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDU4ZWM0ODY2ZWQ5MTZjN2U0MjJmNTEwN2JiMjdiMDgyMjA4NDcyOGUKQXV0aG9yOiBUcmVudCBQaWVwaG8gPHRwaWVwaG9AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIERlYyAzIDE1OjE2OjM4IDIwMDggLTA4MDAKCiAgICBtcGM4WzU2XXh4OiBQdXQgbG9jYWxidXMgY2xvY2sgaW4gZGV2aWNlIHRyZWUKCiAgICBFeHBvcnQgdGhlIGxvY2FsYnVzIGZyZXF1ZW5jeSBpbiB0aGUgZGV2aWNlIHRyZWUsIHRoZSBzYW1lIHdheSB0aGUgQ1BVLCBUQiwKICAgIENDQiwgYW5kIHZhcmlvdXMgb3RoZXIgZnJlcXVlbmNpZXMgYXJlIGV4cG9ydGVkIGluIHRoZWlyIHJlc3BlY3RpdmUgZGV2aWNlCiAgICB0cmVlIG5vZGVzLgoKICAgIFNvbWUgbG9jYWxidXMgZGV2aWNlcyBuZWVkIHRoaXMgaW5mb3JtYXRpb24gdG8gYmUgcHJvZ3JhbWVkIGNvcnJlY3RseSwgc28KICAgIGl0IG1ha2VzIHNlbnNlIHRvIGV4cG9ydCBpdCBhbG9uZyB3aXRoIHRoZSBvdGhlciBmcmVxdWVuY2llcy4KCiAgICBVbmZvcnR1bmF0ZWx5LCB3aGVuIHNvbWVvbmUgd3JvdGUgdGhlIGxvY2FsYnVzIGR0cyBiaW5kaW5ncywgdGhleSBkaWRuJ3QKICAgIGJvdGhlciB0byBkZWZpbmUgd2hhdCB0aGUgImNvbXBhdGlibGUiIHByb3BlcnR5IHNob3VsZCBiZS4JU28gaXQgc2VlbXMgbm8KICAgIG9uZSB3YXMgcXVpdGUgc3VyZSB3aGF0IHRvIHB1dCBpbiB0aGVpciBkdHMgZmlsZXMuCgogICAgQmFzZWQgb24gY3VycmVudCBleGlzdGluZyBkdHMgZmlsZXMgaW4gdGhlIGtlcm5lbCBzb3VyY2UsIEkndmUgdXNlZAogICAgImZzbCxwcTMtbG9jYWxidXMiIGFuZCAiZnNsLGVsYmMiIGZvciBNUEM4NXh4LCB3aGljaCBhcmUgdXNlZCBieSBhbG1vc3QgYWxsCiAgICBvZiB0aGUgODV4eCBkZXZpY2VzLCBhbmQgYXJlIGxvb2tlZCBmb3IgYnkgdGhlIExpbnV4IGNvZGUuCVRoZSBlTEJDIGlzCiAgICBhcHBhcmVudGx5IG5vdCBlbnRpcmVseSBiYWNrd2FyZCBjb21wYXRpYmxlIHdpdGggdGhlIHBxMyBMQkMgYW5kIHNvIGVMQkMKICAgIGVxdWlwcGVkIHBsYXRmb3JtcyBsaWtlIDg1NzIgd29uJ3QgdXNlIHBxMy1sb2NhbGJ1cy4KCiAgICBGb3IgTVBDODZ4eCwgSSd2ZSB1c2VkICJmc2wsZWxiYyIgd2hpY2ggaXMgdXNlZCBieSBzb21lIG9mIHRoZSA4Nnh4IHN5c3RlbXMKICAgIGFuZCBpcyBhbHNvIGxvb2tlZCBmb3IgYnkgdGhlIExpbnV4IGNvZGUuICBPbiBNUEM4NjQxLCBJJ3ZlIGFsc28gdXNlZAogICAgImZzbCxtcGM4NjQxLWxvY2FsYnVzIiBhcyBpdCBpcyBhbHNvIGNvbW1vbmx5IHVzZWQgaW4gZHRzIGZpbGVzLCBzb21lIG9mCiAgICB3aGljaCBkb24ndCB1c2UgImZzbCxlbGJjIiBvciBhbnkgb3RoZXIgYWNjZXB0YWJsZSBuYW1lIHRvIG1hdGNoIG9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRyZW50IFBpZXBobyA8dHBpZXBob0BmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5ZDk0YWZmNjk5ZWVkMzhiMjg2ODE0ZmNiYjMzNWYzZWI4NTE2YTBlCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIERlYyAxNiAxNDo1OToyMiAyMDA4IC0wNjAwCgogICAgTkFORCBGU0wgZWxiYzogVXNlIHZpcnRfdG9fcGh5cyB0byBkZXRlcm1pbmUgd2hpY2ggYmFuayBpcyBpbiB1c2UKCiAgICBUaGUgY3VycmVudCBjb2RlIHRoYXQgZGV0ZXJtaW5lcyB3aGljaCBiYW5rL2NoaXBzZWxlY3QgaXMgdXNlZCBmb3IgYQogICAgZ2l2ZW4gTkFORCBpbnN0YW5jZSBvbmx5IHdvcmtlZCBmb3IgMzItYml0IGFkZHJlc3NlcyBhbmQgYXNzdW1lZAogICAgYSAxOjEgbWFwcGluZy4gIFRoaXMgYnJlYWtzIGluIDM2LWJpdCBwaHlzaWNhbCBjb25maWdzLgoKICAgIFRoZSBwcm9wZXIgd2F5IHRvIGhhbmRsZSB0aGlzIGlzIHRvIHVzZSB0aGUgdmlydF90b19waHlzKCkgYW5kCiAgICBCUl9QSFlTX0FERFIoKSByb3V0aW51ZXMgdG8gbWF0Y2ggdGhlIDM0LWJpdCBsYmMgYnVzIGFkZHJlc3MKICAgIHdpdGggdGhlIHRoZSB2aXJ0dWFsIGFkZHJlc3MgdGhlIE5BTkQgY29kZSB1c2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBBY2tlZC1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNzdjODExNWIxZjE4NzE4MTE2MzNlYWU3N2E1YTcwMGZhYzFmMGU1MApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBEZWMgMTYgMTQ6NTk6MjEgMjAwOCAtMDYwMAoKICAgIHBwYzogVXNlIGFkZHJtYXAgaW4gdmlydF90b19waHlzIGFuZCBtYXBfcGh5c21lbS4KCiAgICBJZiB3ZSBoYXZlIGFkZHIgbWFwIHN1cHBvcnQgZW5hYmxlZCB1c2UgdGhlIG1hcHBpbmcgZnVuY3Rpb25zIHRvCiAgICBpbXBsZW1lbnQgdmlydF90b19waHlzKCkgYW5kIG1hcF9waHlzbWVtKCkuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBlY2Y1Yjk4YzdhNmEyZTIyNTZkZmRkZDQ4ZmFiMjY2NzhkY2Q2YjkwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIERlYyAxNiAxNDo1OToyMCAyMDA4IC0wNjAwCgogICAgODV4eDogQWRkIHN1cHBvcnQgdG8gcG9wdWxhdGUgYWRkciBtYXAgYmFzZWQgb24gVExCIHNldHRpbmdzCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA3OGJiYzVjZTE1MWM1YTQ4NGJiNTFiZjE4NjZiNGE5OTNmZmMxNmVjCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJTW9uIERlYyAxIDEzOjQ3OjEzIDIwMDggLTA2MDAKCiAgICBYUGVkaXRlNTIwMCBib2FyZCBzdXBwb3J0CgogICAgSW5pdGlhbCBzdXBwb3J0IGZvciBFeHRyZW1lIEVuZ2luZWVyaW5nIFNvbHV0aW9ucyBYUGVkaXRlNTIwMCAtCiAgICBhIE1QQzg1NDgtYmFzZWQgUE1DIHNpbmdsZSBib2FyZCBjb21wdXRlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDQ4N2RjYjRmYjg5YmUwOTkyYmMwNmVjMTM0MTA5MDAxN2JkOWNmMmYKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglXZWQgT2N0IDI5IDEyOjM5OjI3IDIwMDggLTA1MDAKCiAgICA4NXh4OiBFbmFibGUgaW5ib3VuZCBQQ0kgY29uZmlnIGN5Y2xlcyBmb3IgWC1FUyBib2FyZHMKCiAgICBVcGRhdGUgWC1FUyBGcmVlc2NhbGUgYm9hcmRzIHRvIGFsbG93IGluYm91bmQgUENJIGNvbmZpZ3VyYXRpb24KICAgIGN5Y2xlcyB3aGVuIGNvbmZpZ3VyZWQgYXMgYWdlbnQvZW5kcG9pbnQuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCBjY2YwZmRkMDJiOTczMjNmOGNhYWUxOGQwNmNjOWRhZWFjMmYxOTJmCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJV2VkIERlYyAxNyAxNjozNjoyMyAyMDA4IC0wNjAwCgogICAgWFBlZGl0ZTUzNzAgYm9hcmQgc3VwcG9ydAoKICAgIEluaXRpYWwgc3VwcG9ydCBmb3IgRXh0cmVtZSBFbmdpbmVlcmluZyBTb2x1dGlvbnMgWFBlZGl0ZTUzNzAgLQogICAgYSBNUEM4NTcyLWJhc2VkIDNVIFZQWCBzaW5nbGUgYm9hcmQgY29tcHV0ZXIgd2l0aCBhIFBNQy9YTUMKICAgIHNpdGUuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCBlOTI3MzlkMzRlMmQ2YjZhY2E5M2IyNTk4MjQ4MjEwNzEwODk3Y2U4CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJV2VkIERlYyAxNyAxNjozNjoyMSAyMDA4IC0wNjAwCgogICAgQWRkIHN1cHBvcnQgZm9yIFBDQTk1M3ggSTJDIGdwaW8gZGV2aWNlcwoKICAgIEluaXRpYWwgc3VwcG9ydCBmb3IgTlhQJ3MgNCBhbmQgOCBiaXQgSTJDIGdwaW8gZXhwYW5kZXJzCiAgICAoZWcgcGNhOTUzNywgcGNhOTU1NywgZXRjKS4gVGhlIENPTkZJR19QQ0E5NTNYIGRlZmluZQogICAgZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgZGV2aWNlcyB3aGlsZSB0aGUgQ09ORklHX0NNRF9QQ0E5NTNYCiAgICBkZWZpbmUgZW5hYmxlcyB0aGUgcGNhOTUzeCBjb21tYW5kLiBUaGUgQ09ORklHX0NNRF9QQ0E5NTNYX0lORk8KICAgIGRlZmluZSBlbmFibGVzIGFuICdpbmZvJyBzdWItY29tbWFuZCB3aGljaCBwcm92aWRlcyBzdW1tYXJ5CiAgICBpbmZvcm1hdGlvbiBmb3IgdGhlIGdpdmVuIHBjYTk1M3ggZGV2aWNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgN2E4OTc5NTkxMTcxNjc2NDE3YWIzNjg1MmQ4ODExYThjNDZhY2NkOApBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVdlZCBPY3QgMjkgMTI6Mzk6MjYgMjAwOCAtMDUwMAoKICAgIHBjaS9mc2xfcGNpX2luaXQ6IEVuYWJsZSBpbmJvdW5kIFBDSSBjb25maWcgY3ljbGVzCgogICAgQWRkIGZzbF9wY2lfY29uZmlnX3VubG9jaygpIGZ1bmN0aW9uIHRvIGVuYWJsZSBhCiAgICBQQ0kvUENJZSBpbnRlcmZhY2UgY29uZmlndXJlZCBpbiBhZ2VudC9lbmRwb2ludCBtb2RlIHRvCiAgICByZXNwb25kIHRvIGluYm91bmQgUENJIGNvbmZpZ3VyYXRpb24gY3ljbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgOTJjNzhhM2JiY2IyY2U1MDhiNGJmMWM0YTFlMDk0MDQwNmEwMjRiYgpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJV2VkIERlYyAxNyAxNjo0MzoxOCAyMDA4ICswMTAwCgogICAgYXZyMzI6IFJlbW92ZSBzZWNvbmQgZGVmaW5pdGlvbiBvZiB2aXJ0X3RvX3BoeXMoKQoKICAgIFRoZSBzZWNvbmQgZGVmaW5pdGlvbiBpbnRyb2R1Y2VkIGJ5IDY1ZTQzYTEwNjMgY29uZmxpY3RzIHdpdGggdGhlCiAgICBleGlzdGluZyBvbmUuCgogICAgQWxzbywgY29udmVydCB0aGUgZXhpc3RpbmcgZGVmaW5pdGlvbiB0byB1c2UgcGh5c19hZGRyX3QuIFRoZSB2b2xhdGlsZQogICAgcXVhbGlmaWVyIGlzIHN0aWxsIG5lZWRlZCBkdWUgdG8gYnJhaW4gZGFtYWdlIGVsc2V3aGVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgYjYxNmYyYjU0NWY3Mzc1NzY2OWIzNzM4NmYwYjM3YmI2MWZjNjc5NwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CU1vbiBTZXAgOCAyMjoyNzoxOCAyMDA4ICswMjAwCgogICAgTUlQUzogcWVtdV9taXBzOiB1cGRhdGUgZG9jIHRvIGdlbmVyYXRlIGFuZCB0byB1c2UgcWVtdSBmbGFzaCwgaWRlIGZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCAxNmNkZjgxNjc3OWY1YjYwMmE5YjNiNGQyZWE0ZGVhMDUwOTVjMzViCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVHVlIERlYyAxNiAyMjoxMDozMSAyMDA4ICswMTAwCgogICAgTUlQUzogcWVtdV9taXBzOiB1cGRhdGUgZG9jIHRvIHVzZSBhbGwgZGlzayBhbmQgYm9vdCBsaW51eCBrZXJuZWwKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCAxMzA5NWIyZjA3ZGFjYjFmODYzNzcyMjY2YzE3ODlkNDdhNTIzYThhCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVHVlIERlYyAxNiAyMjoxMDozMCAyMDA4ICswMTAwCgogICAgTUlQUzogcWVtdV9taXBzOiBtb3ZlIGVudiBzdG9yYWdlIGp1c3QgYWZ0ZXIgdS1ib290CgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgYWNlZDc4ZDg1MmQwYjAwOWU4YWFhMTQ0NWFmOGNiNDA4NjFlZTU0OQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBEZWMgMTYgMjM6NDg6MjcgMjAwOCArMDEwMAoKICAgIFByZXBhcmUgMjAwOS4wMS1yYzEKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDllMmE3OWI0YzU4NWFkMzExMzhmYjkwYjY4ZmQwMjM0ZDY0YThkYTgKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgRGVjIDE2IDIzOjEzOjQ2IDIwMDggKzAxMDAKCiAgICBpbmNsdWRlL2NvbmZpZ3MvYXQ5MWNhcDlhZGsuaDogZml4IHR5cG8uCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0NWNhMDRmMjM3NzM2MTU5MzE1MWQyZDRkYTUxZjhiYTQ4MzJkMjMzCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIERlYyAxNiAyMjozMjoyNSAyMDA4ICswMTAwCgogICAgYm9hcmQvdHJhYi9tZW1vcnkuYzogRml4IGNvbXBpbGUgcHJvYmxlbXMuCgogICAgQXBwbHkgY2hhbmdlcyBmcm9tIGNvbW1pdCA0NGI0ZGJlZCB0byBib2FyZC90cmFiL21lbW9yeS5jLCB0b28uCgogICAgQWN0dWFsbHkgd2UnZCBuZWVkIGEgbWFqb3IgY2xlYW51cCBoZXJlIC0gYXMgaXQgdHVybnMgb3V0LAogICAgYm9hcmQvdHJhYi9tZW1vcnkuYyBpcyBtb3JlIG9yIGxlc3MgYSB2ZXJiYXRpbSBjb3B5IG9mCiAgICBwb3N0L2RyaXZlcnMvbWVtb3J5LmMgLi4uIGJ1dCB0aGVuLCB0cmFiIGlzIEVPTCBhbnl3YXkscgogICAgc28gdGhpcyBpcyBub3Qgd29ydGggdGhlIGVmZm9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGZmNDllYTg5NzdiNTY5MTZlZGQ1YjE3NjZkOTkzOTAxMGUzMGIxODEKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIERlYyAxNiAxNDoyNDoxNiAyMDA4IC0wNjAwCgogICAgTkFORDogTWFyayB0aGUgQkJUIGFzIHNjYW5uZWQgcHJpb3IgdG8gY2FsbGluZyBzY2FuX2JidC4KCiAgICBPdGhlcndpc2UsIHJlY3Vyc2lvbiBjYW4gb2NjdXIgaWYgc2Nhbl9iYnQgZG9lcyBub3QgZmluZCBhIGJhZCBibG9jawogICAgdGFibGUsIGFuZCB0cmllcyB0byB3cml0ZSBvbmUsIGFuZCB0aGUgYXR0ZW1wdCB0byBlcmFzZSB0aGUgQkJUIGFyZWEKICAgIGNhdXNlcyBhIGJhZCBibG9jayBjaGVjay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1ODRlZWRhYjY2ZDA4MjhmMmQ1NzFhMjRiMTA1MjZjNGU2NWY1NDdiCkF1dGhvcjogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CkRhdGU6CVRodSBEZWMgMTEgMDU6NTE6NTcgMjAwOCArMDMwMAoKICAgIGpmZnMyOiBpbmNsdWRlIDxsaW51eC9tdGQvY29tcGF0Lmg+IGluc3RlYWQgb2YgZGVmaW5pbmcgb3duIG1pbl90CgogICAgSW5jbHVkZSA8bGludXgvbXRkL2NvbXBhdC5oPiBoZWFkZXIgZm9yIG1pbl90IGRlZmluaXRpb24gaW5zdGVhZCBvZgogICAgcHJvdmlkaW5nIG91ciBvd24gb25lLiBSZW1vdmVzIHdhcm5pbmdzIGluIGNhc2Ugb2YgT25lTkFORCBzdXBwb3J0CiAgICBlbmFibGVkLgoKICAgIEFsdGhvdWdoIEkgdGhpbmtzIGl0J3MgYSBiaXQgc2lsbHkgdG8gaW5jbHVkZSA8bGludXgvbXRkL2NvbXBhdC5oPgogICAganVzdCBmb3IgbWluX3QuLi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYjFmZmVjZWMzN2I1N2E1OWMxMzkwNDIyNjdmYWFjNDU4ZTUzMjRlOQpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIERlYyAzIDIzOjA0OjM3IDIwMDggLTA2MDAKCiAgICBwb3dlcnBjOiBmaXggaW8uaCBidWlsZCB3YXJuaW5nIHdpdGggQ09ORklHX1BIWVNfNjRCSVQKCiAgICBDYXN0aW5nIGEgcG9pbnRlciB0byBhIHBoeXNfYWRkcl90IHdoZW4gaXQncyBhbiB1bnNpZ25lZCBsb25nIGxvbmcKICAgIG9uIGEgMzItYml0IHN5c3RlbSB3aXRob3V0IGZpcnN0IGNhc3RpbmcgdG8gYSBub24tcG9pbnRlciB0eXBlCiAgICBnZW5lcmF0ZXMgYSBjb21waWxlciB3YXJuaW5nLiBGaXggdGhpcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNmNkYWRjYjNmMWI2ZWFjNGExYzQyNTZhY2FhMTQzODQxM2Y5NTM1MQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBEZWMgMTYgMTY6MjI6NTAgMjAwOCArMDEwMAoKICAgIHRyYWI6IG1ha2UgdHJhYl9ma3Qgc3RhbmRhbG9uZSBjb2RlIGluZGVwZW5kZW50IG9mIGxpYmdjYwoKICAgIFVzZSBvdXIgb3duIGxvY2FsIGZ1bmN0aW9ucyBpbiBsaWJfYXJtLyBpbnN0ZWFkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYWExYmNjYTNkMmUyMmFmNGRlYTlmMDIxMzJmOWI1NmEzMDM3OGRlZApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBEZWMgMTYgMTQ6NDQ6MDYgMjAwOCArMDEwMAoKICAgIHBvc3QvTWFrZWZpbGU6IGZpeCBkZXBlbmRlbmN5IHByb2JsZW0gd2l0aCBwYXJhbGxlbCBidWlsZHMKCiAgICBQYXJhbGxlbCBidWlsZHMgKHVzaW5nICJtYWtlIC1qTiIpIHdvdWxkIG9jY2FzaW9uYWxseSBmYWlsIHdpdGggZXJyb3IKICAgIG1lc3NhZ2VzIGxpa2UKCXBwY180eHhGUC1vYmpkdW1wOiBzdHJpbmcubzogRmlsZSBmb3JtYXQgbm90IHJlY29nbml6ZWQKICAgIG9yCglwb3N0L2xpYnBvc3QuYShjcHUubyk6IEluIGZ1bmN0aW9uIGBjcHVfcG9zdF90ZXN0JzoKCS9ob21lL3dkL2dpdC91LWJvb3Qvd29yay9wb3N0L2xpYl9wcGMvY3B1LmM6MTMwOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjcHVfcG9zdF90ZXN0X3N0cmluZycKICAgIG9yIHNpbWlsYXIuIFdlIG5vdyBtYWtlIHN1cmUgdG8gcnVuIHRoZSAncG9zdGRlcHMiIHN0ZXAgYmVmb3JlCiAgICBhdHRlbXB0aW5nIHRvIGJ1aWxkIHRoZSBzcGVjaWZpYyBQT1NUIGxpYnJhcmllcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDRhMGY3NTM4YzVjMDgwNWZkOWE3OTE5NjdiYmFiYWNjNDFkZWFkZDkKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgRGVjIDE2IDE0OjQxOjAyIDIwMDggKzAxMDAKCiAgICBNYWtlZmlsZTogZml4IGRlcGVuZGVuY3kgcHJvYmxlbSB3aXRoIHBhcmFsbGVsIGJ1aWxkcwoKICAgIFBhcmFsbGVsIGJ1aWxkcyAodXNpbmcgIm1ha2UgLWpOIikgd291bGQgb2NjYXNpb25hbGx5IGZhaWwgd2l0aCBlcnJvcgogICAgbWVzc2FnZXMgbGlrZQoJaW5jbHVkZS9hdXRvY29uZi5tazoyMTI6ICoqKiBtaXNzaW5nIHNlcGFyYXRvci4gIFN0b3AuCiAgICBMaW5lIG51bWJlcnMgYW5kIGFmZmVjdGVkIGJvYXJkcyB3ZXJlIGNoYW5naW5nLiBPYnZpb3VzbHkgc29tZQogICAgTWFrZWZpbGVzIGluY2x1ZGVkIGF1dG9jb25mLm1rIHdoaWxlIGl0IHdhcyBzdGlsbCBiZWluZyB3cml0dGVuIHRvLgogICAgQXMgYSBmaXgsIHdlIG5vdyB3cml0ZSB0byBhIHRlbXBvcmFyeSBmaWxlIGZpcnN0IGFuZCB0aGVuIHJlbmFtZSBpdCwKICAgIHNvIHRoYXQgaXQgaXMgcmVhbGx5IHJlYWR5IHRvIHVzZSBhcyBzb29uIGFzIGl0IGFwcGVhcnMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0NTVhZTdlODdmNjdjNDRlNmFlYTY4ODY1YzgzYWNhZGQzZmNkMzZjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIERlYyAxNiAwMTowMjoxNyAyMDA4ICswMTAwCgogICAgQ29kaW5nIHN0eWxlIGNsZWFudXAsIHVwZGF0ZSBDSEFOR0VMT0cuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA4NGJjNzJkOTBjNTA1ZmVjM2VmNGI2OTM5OTU0MDdhMGJkNDA2NGU1CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgRGVjIDExIDE4OjM5OjA4IDIwMDggLTA1MDAKCiAgICBzcGkvc3RtaWNybzogZml4IGRlYnVnKCkgZGlzcGxheSBvZiBjbWQKCiAgICBUaGUgc3RtaWNyb193YWl0X3JlYWR5KCkgZnVuYyB0cmllcyB0byBzaG93IHRoZSBhY3R1YWwgb3Bjb2RlIHRoYXQgd2FzIHNlbnQKICAgIHRvIHRoZSBkZXZpY2UsIGJ1dCBpbnN0ZWFkIGl0IGRpc3BsYXlzIHRoZSBhcnJheSBwb2ludGVyLiAgRml4IGl0IHRvIHB1bGwKICAgIG91dCB0aGUgb3Bjb2RlIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBhcnJheS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNWIzMzc1YWM4YzM2YzI5Yzg3YWJiMTMyZmVkZTA1MDllYjIxZTVjOQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IERlYyAxMSAwNjoyMzozNyAyMDA4IC0wNTAwCgogICAgZW52X3NmOiBzdXBwb3J0IGVtYmVkZGVkIGVudmlyb25tZW50cwoKICAgIElmIGJvdGggQ09ORklHX0VOVl9TRUNUX1NJWkUgYW5kIENPTkZJR19FTlZfU0laRSBhcmUgZGVmaW5lZCwgYW5kIHRoZSBzZWN0CiAgICBzaXplIGlzIGxhcmdlciB0aGFuIHRoZSBlbnYgc2l6ZSwgdGhlbiBpdCBtZWFucyB0aGUgZW52IGlzIGVtYmVkZGVkIGluIGEKICAgIGJsb2NrLiAgU28gd2UgaGF2ZSB0byBzYXZlL3Jlc3RvcmUgdGhlIHBhcnQgb2YgdGhlIHNlY3RvciB3aGljaCBpcyBub3QgdGhlCiAgICBlbnZpcm9ubWVudC4gIFByZXZpb3VzbHksIHNhdmluZyB0aGUgZW52aXJvbm1lbnQgaW4gU1BJIGZsYXNoIGluIHRoaXMKICAgIHNldHVwIHdvdWxkIHByb2JhYmx5IGJyaWNrIHRoZSBib2FyZCBhcyB0aGUgcmVzdCBvZiB0aGUgc2VjdG9yIHRlbmRzIHRvCiAgICBjb250YWluIGFjdHVhbCBVLUJvb3QgZGF0YS9jb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIEFja2VkLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgZWNmNWYwNzdjOGU3NzQ1NGY1MzJlYWFjM2UzYWZiN2NmYzQ4YzYyZApBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBEZWMgMyAxMToyODozMCAyMDA4IC0wNjAwCgogICAgaTJjOiBtZXJnZSBhbGwgaTJjX3JlZ19yZWFkKCkgYW5kIGkyY19yZWdfd3JpdGUoKSBpbnRvIGlubGluZSBmdW5jdGlvbnMKCiAgICBBbGwgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBmdW5jdGlvbnMgaTJjX3JlZ19yZWFkKCkgYW5kCiAgICBpMmNfcmVnX3dyaXRlKCkgYXJlIGlkZW50aWNhbC4gV2UgY2FuIHNhdmUgc3BhY2UgYW5kIHNpbXBsaWZ5IHRoZQogICAgY29kZSBieSBjb252ZXJ0aW5nIHRoZXNlIGZ1bmN0aW9ucyBpbnRvIGlubGluZXMgYW5kIHB1dHRpbmcgdGhlbSBpbgogICAgaTJjLmguCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLUJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGUzOWNkODFjNDQ3NDBkNzM1NWQyNzdlZDNkMzg1MzZjYmUxZTAwM2QKQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgRGVjIDUgMTU6MzY6MTQgMjAwOCArMDgwMAoKICAgIGxpYl9wcGM6IHJld29yayB0aGUgZmx1c2hfY2FjaGUKCiAgICAtIEl0IGlzIHBvc3NpYmxlIHRvIG1pc3MgZmx1c2gvaW52YWxpZGF0ZSB0aGUgbGFzdAogICAgICBjYWNoZSBsaW5lLCB3ZSBmaXggaXQgYXQgaGVyZS4KICAgIC0gYWRkIHRoZSB2b2xhdGlsZSBhbmQgbWVtb3J5IGNsb2JiZXIuCgogICAgVGhleSBhcmUgcG9pbnRlZCBieSBTY290dCBXb29kLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjMyNDBiYTg4Y2Q2YTIyMDA1N2EwZjI4ZTViZjk3ZjViMTdhYzg0YgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVNhdCBEZWMgMTMgMTc6MjA6MjggMjAwOCAtMDYwMAoKICAgIEludHJvZHVjZSBhZGRyX21hcCBsaWJyYXJ5CgogICAgQWRkIGEgbGlicmFyeSB0aGF0IGhlbHBzIGluIHRyYW5zbGF0aW5nIGJldHdlZW4gdmlydHVhbCBhbmQgcGh5c2ljYWwKICAgIGFkZHJlc3Nlcy4JVGhpcyBsaWJyYXJ5IGNhbiBiZSB1c2VmdWwgYXMgYSBzaW1wbGUgbWVhbnMgdG8gaW1wbGVtZW50CiAgICBtYXBfcGh5c21lbSgpIGFuZCB2aXJ0X3RvX3BoeXMoKSBmb3IgcGxhdGZvcm1zIHRoYXQgbmVlZCBmdW5jdGlvbmFsaXR5CiAgICBiZXlvbmQgdGhlIHNpbXBsZSAxOjEgbWFwcGluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDY1ZTQzYTEwNjMxNTM3ZGNiOTJjMzAyZDM2MzAxYTEyMzA4MjE2YzMKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglTYXQgRGVjIDEzIDE3OjIwOjI3IDIwMDggLTA2MDAKCiAgICBJbnRyb2R1Y2UgdmlydF90b19waHlzKCkKCiAgICB2aXJ0X3RvX3BoeXMoKSByZXR1cm5zIHRoZSBwaHlzaWNhbCBhZGRyZXNzIGdpdmVuIGEgdmlydHVhbC4gSW4gbW9zdAogICAgY2FzZXMgdGhpcyB3aWxsIGJlIGp1c3QgdGhlIGlucHV0IHZhbHVlIGFzIHRoZSB2YXN0IG1ham9yaXR5IG9mCiAgICBzeXN0ZW1zIHJ1biBpbiBhIDE6MSBtb2RlLgoKICAgIEhvd2V2ZXIgaW4gc3lzdGVtcyB0aGF0IGFyZSBub3QgcnVubmluZyB0aGlzIHdheSBpdCBzaG91bGQgcmVwb3J0IHRoZQogICAgcGh5c2ljYWwgYWRkcmVzcyBvciB+MCBpZiBubyBtYXBwaW5nIGV4aXN0cyBmb3IgdGhlIGdpdmVuIHZpcnR1YWwKICAgIGFkZHJlc3MuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA0NTg0NTMwMWFmM2RlODY3NWMxZjdiYmM4MTVjNmRlMzU0NTI2MDVhCkF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgpEYXRlOglTdW4gRGVjIDcgMjI6MTI6NTAgMjAwOCArMDEwMAoKICAgIFBPU1QgTWFrZTogZml4IHRoZSBzdWItZGlyIGRlcGVuZGVuY2llcyBtaXNzaW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KCmNvbW1pdCAyMjUyNTc3OWNiNTFmMWJiZTRlOTZmZWE3Yjc3OGRlMTkzNWE1YTY5CkF1dGhvcjogTWFydGluIE1pY2hsbWF5ciA8dGJtQGN5cml1cy5jb20+CkRhdGU6CVdlZCBBdWcgNiAxNDo0NDowNSAyMDA4ICswMzAwCgogICAgRml4IGEgdHlwbyBpbiBmd19lbnYuY29uZmlnCgogICAgUmVwb3J0ZWQtYnk6IE1hcnRpbiBNaWNobG1heXIgPHRibUBjeXJpdXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBiYTQ5MGI3NzYxYzYyYjU0OWMyMjJhOTcyM2U1MzJkYzgwMWEzODk5CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJTW9uIERlYyAxIDE2OjIyOjQ1IDIwMDggLTA2MDAKCiAgICBSZW1vdmUgdW51c2VkIENPTkZJR19BRERSX1NUUkVBTUlORyBkZWZpbmVzCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCBkMTZkYTkzNDMwNTIwZDNlNDZjMWFiNTJlZWRhY2YzNmFiN2EyMzExCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJTW9uIE5vdiAyNCAxMTo1NDo0NyAyMDA4IC0wNjAwCgogICAgY21kX21lbTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZQoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgM2FlZDNhYTJjMTI4Y2U5ZmIzOWNhM2Y0ZTkzODVhNzQ5OWU5M2RiZgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBEZWMgMTQgMTA6Mjk6MzkgMjAwOCArMDEwMAoKICAgIEZpeCBuZXcgZm91bmQgQ0ZHXwoKICAgIEFsc28gZml4IHNvbWUgbWlub3IgdHlwb3MuCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMGUwYzg2MmVmZTcyNzllOTYwOWRiNzRkNzU4Y2QxYjg0YzZjNzIwOQpBdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CkRhdGU6CUZyaSBTZXAgMTkgMTI6MDc6MzQgMjAwOCArMDIwMAoKICAgIFJlbW92ZSBjb21waWxlciB3YXJuaW5nOiB0YXJnZXQgQ1BVIGRvZXMgbm90IHN1cHBvcnQgaW50ZXJ3b3JraW5nCgogICAgVGhpcyB3YXJuaW5nIGlzIGlzc3VlZCBieSBtb2Rlcm4gQVJNLUVBQkkgR0NDIG9uIG5vbi10aHVtYiB0YXJnZXRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFZsYWRpbWlyIFBhbmZpbG92IDxwdnJAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgoKY29tbWl0IGNkNjczNDUxMGE5ZmYwZjQxYzRhNzM1NjdkNDA4MGVhMDAzM2QyYzEKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglNb24gTm92IDI0IDEzOjMzOjUxIDIwMDggKzAxMDAKCiAgICBGaXggRklUIGFuZCBGRFQgc3VwcG9ydCB0byBoYXZlIENPTkZJR19PRl9MSUJGRFQgYW5kIENPTkZJR19GSVQgaW5kZXBlbmRlbnQKCiAgICBGRFQgc3VwcG9ydCBpcyB1c2VkIGZvciBib3RoIEZJVCBzdHlsZSBpbWFnZXMgYW5kIGZvciBhcmNoaXRlY3R1cmVzCiAgICB0aGF0IGNhbiBwYXNzIGEgZmR0IGJsb2IgdG8gYW4gT1MgKHBwYywgbTY4aywgc3BhcmMpLgoKICAgIEZvciBvdGhlciBhcmNoaXRlY3R1cmVzIGFuZCBib2FyZHMgd2hpY2ggZG8gbm90IHBhc3MgYSBmZHQgYmxvYiB0byBhbgogICAgT1MgYnV0IHdhbnQgdG8gdXNlIHRoZSBuZXcgdUltYWdlIGZvcm1hdCwgd2UganVzdCBuZWVkIEZJVCBzdXBwb3J0LgoKICAgIE5vdyB3ZSBjYW4gaGF2ZSB0aGUgNCBmb2xsb3dpbmcgY29uZmlndXJhdGlvbnMgOgoKICAgIDEpIEZJVCBvbmx5CQkgICAgQ09ORklHX0ZJVAogICAgMikgZmR0IGJsb2Igb25seQkgICAgQ09ORklHX09GX0xJQkZEVAogICAgMykgYm90aAkJICAgIENPTkZJR19PRl9MSUJGRFQgJiBDT05GSUdfRklUCiAgICA0KSBub25lCQkgICAgbm9uZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMTllZjRmN2E2ZWYzYjcyNWFhOWZlNGI0ZjVmYjY3NmE4NDE2MDE3MgpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglXZWQgRGVjIDEwIDE1OjEzOjMyIDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IERpc2FibGUgRUVQUk9NIHdyaXRlIGFjY2VzcyBvbiBQTUM0NDAgYm9hcmRzCgogICAgVGhpcyBwYXRjaCBkaXNhYmxlcyBFRVBST00gd3J0aWUgYWNjZXNzIGJ5IGRlZmF1bHQgb24gUE1DNDQwIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDViNjdhMTQzOWE3M2JhNmMzNDAwN2Q5ZmY2MGEyYzZhYTkwMjY1ZGYKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJV2VkIERlYyAxMCAxNToxMjo1NiAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBGaXggRXRoZXJuZXQgUEhZIExFRCBjb25maWd1cmF0aW9uIG9uIFBNQzQ0MCBib2FyZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCA3MWZhMDcxNGZlNTEzNGJjODcxOGMzOGQ1MjYxZDI2N2U4ODU4MmJhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgTm92IDE4IDE2OjM2OjEyIDIwMDggKzAxMDAKCiAgICBNSVBTOiBGbHVzaCBkYXRhIGNhY2hlIHVwb24gcmVsb2NhdGlvbgoKICAgIFRoaXMgcGF0Y2ggbm93IGFkZHMgYSBmbHVzaCB0byB0aGUgZGF0YSBjYWNoZSB1cG9uIHJlbG9jYXRpb24uIFRoZQogICAgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcyBtaXNzaW5nIHRoaXMuIE9ubHkgYSBjb21tZW50IHN0YXRlcyB0aGF0IGl0CiAgICBzaG91bGQgYmUgZG9uZS4gU28gbGV0J3MgcmVhbGx5IGRvIGl0IG5vdy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IDQ0MTc0MzQzNjg4ZGJhMzI1NzFhMzQ1NTBkYmEwODk3MWM2NWZlZjEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBOb3YgMTggMTY6MzY6MjIgMjAwOCArMDEwMAoKICAgIE1JUFM6IEFkZCBDT05GSUdfU0tJUF9MT1dMRVZFTF9JTklUCgogICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBDT05GSUdfU0tJUF9MT1dMRVZFTF9JTklUIG9wdGlvbiB0byBzdGFydC5TLiBUaGlzCiAgICBlbmFibGVzIHN1cHBvcnQgZm9yIGJvYXJkcyB3aGVyZSB0aGUgbG93bGV2ZWwgaW5pdGlhbGl6YXRpb24gaXMKICAgIGFscmVhZHkgZG9uZSB3aGVuIFUtQm9vdCBydW5zIChlLmcuIHZpYSBPbkNoaXAgUk9NKS4KCiAgICBUaGlzIHdpbGwgYmUgdXNlZCBpbiB0aGUgdXBjb21pbmcgVkNUSCBib2FyZCBzdXBwb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgZGIwOGVjYWE2ZWI4MTc2OTA0YjNiYWUxMDNhODVlZThmNzM1ZGM0MApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE5vdiAxMiAxMzoxODowMiAyMDA4ICswMTAwCgogICAgTUlQUzogQWRkIGJvYXJkX2Vhcmx5X2luaXRfZigpIHRvIGluaXRfc2VxdWVuY2UKCiAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGJvYXJkX2Vhcmx5X2luaXRfZigpIGNhbGwgdG8gdGhlIE1JUFMgaW5pdAogICAgc2VxdWVuY2UuIEEgd2VhayBkdW1teSBpbXBsZW1lbnRhdGlvbiBpcyBhbHNvIGFkZGVkIHdoaWNoIGNhbiBiZQogICAgb3ZlcnJpZGRlbiBieSBhIGJvYXJkIHNwZWNpZmljIHZlcnNpb24uCgogICAgVGhpcyB3aWxsIGJlIHVzZWQgYnkgdGhlIHVwY29taW5nIFZDVEggYm9hcmQgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IDlkMjNmYzU4NGM0YjdiOGJiOWVjYmVlNDg5MjBiMWIwNGIwOGZhMWIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBOb3YgMTIgMTM6MTg6MTkgMjAwOCArMDEwMAoKICAgIE1JUFM6IEFkZCBvbmVuYW5kX2luaXQoKSB0byBib2FyZC5jIGFuZCBtb3ZlIG5hbmRfaW5pdCgpCgogICAgVGhpcyBwYXRjaCBhZGRzIGEgY2FsbCB0byBvbmVuYW5kX2luaXQoKSBmb3IgT25lTkFORCBzdXBwb3J0IGFuZCBtb3ZlcwogICAgdGhlIG5hbmRfaW5pdCgpIGNhbGwgdG8gYW4gZWFybGllciBwbGFjZSwgc28gdGhhdCB0aGUgZW52aXJvbm1lbnQgY2FuCiAgICBiZSB1c2VkIGZyb20gTkFORCBhbmQgT25lTkFORC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IGQ4YmJjNTFjN2JhOWI3MzdhMjA5ODQzMzNkMTlmZTI4YTM1MjY0MzEKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVR1ZSBEZWMgOSAxMTozMjo0NiAyMDA4ICswOTAwCgogICAgc2g6IFVwZGF0ZSBzaDIvc2gyYSB0aW1lcgoKICAgIFJlbmVzYXMgU0gyL1NIMkEgdGltZXIgYnJva2VuLgogICAgVGhpcyBwYXRjaCBmaXggdGltZXIgZnVuY3Rpb24uCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGEzMTlmMTQ5NjIxMDExN2I3MzE5OGUzZDg4OWZmZmZhZjY4MjVkMDAKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglGcmkgRGVjIDUgMDc6Mjc6MzcgMjAwOCArMDEwMAoKICAgIHNoOiByMmRwbHVzIGZpeCByZWdpc3RlciBhY2Nlc3MKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDRkNGE5NjA1NWY2OTE3MzM1YTg5ZGJkZjJlNTU1NmZhNWFjMzI5ZjYKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUdWUgRGVjIDIgMDc6NDA6MDMgMjAwOCArMDEwMAoKICAgIHNoOiByMmRwbHVzL2xvd2xldmVsX2luaXQ6IGNvZGluZyBzdHlsZSBmaXgKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGM1NGI5YTQyZDhmNWFiNWIyYTAzOWIzYTJlNmZkZThiNDI3NzQ1ZTUKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVR1ZSBOb3YgMjUgMTE6MDU6MTkgMjAwOCArMDkwMAoKICAgIHNoOiBDaGFuZ2VkIHZhbHVlIG9mIENBQ0hFX09DX05VTV9FTlRSSUVTIGFuZCBDQUNIRV9PQ19XQVlfU0hJRlQKCiAgICBTSDQgaXMgZGlmZmVyZW50IGEgdmFsdWUgb2YgQ0FDSEVfT0NfTlVNX0VOVFJJRVMgYW5kCiAgICBDQUNIRV9PQ19XQVlfU0hJRlQgZXZlcnkgQ1BVLgogICAgVGhpcyBwYXRjaCBjb3JyZWN0cyB0aGVzZSB2YWx1ZXMuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGU5ZDVmMzU0OTc4ODViM2M2NWQ0OTRkMDlhNTI1ZDQ0M2RjY2NkM2IKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVRodSBOb3YgMjAgMTY6NDQ6NDIgMjAwOCArMDkwMAoKICAgIHNoOiBVcGRhdGUgc2ggdGltZXIgZnVuY3Rpb24KCiAgICBDaGFuZ2UgdG8gd3JpdGUvcmVhZFggZnVuY3Rpb24gYW5kIGZpeCB0aW1lciBwcm9ibGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBiODE3ODZjZmY0NzZjNDFlMzMyZWFlYjY3OTE1OGY2NTI3Y2Q2N2Q0CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgpEYXRlOglUdWUgTm92IDQgMTE6NTg6NTggMjAwOCArMDkwMAoKICAgIHNoOiBNaWdvLVI6IFVwZGF0ZSBCU0MgdmFsdWUKCiAgICBBIHZhbHVlIG9mIEJTQyBDUzQgd2FzIHdyb25nLCBGaXhlZCBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgNTc4Mzc1OGZkMjYwYTAyZjQ0NTY2YWQ4ZjI5Zjg5OTU2NWNkMDQwMwpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJTW9uIE5vdiAxNyAxNjo1MjowOSAyMDA4ICswOTAwCgogICAgc2g6IFVwZGF0ZSBtczc3MjJzZSBib2FyZCBjb25maWcKCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgMTVlMjY5N2M5ZjdmYjJiYTY3MmExYTcwZjA3Y2Q2ZDlkNGU5MmI1MQpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJTW9uIE5vdiAxNyAxNjo1MzowOSAyMDA4ICswOTAwCgogICAgc2g6IFVwZGF0ZSBTdXBlckggc2VyaWFsIGRyaXZlcgoKICAgIFRoZSBhZGRyZXNzIG9mIFNDRlNSIHJlZ2lzdGVyIGlzIHdyb25nIGF0IFNINzcyMC9TSDc3MjEuCiAgICBUaGlzIHBhdGNoIGZpeCB0aGlzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCA5YTFkMzU1N2RjZDQ3MzY1YzEyZWVhYjU4NGI4MjJlNTdkOTk0MzUyCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVHVlIE5vdiAxMSAyMjoyMDoxNSAyMDA4ICswMTAwCgogICAgc2g6IGZpeCByc2s3MjAzIGFuZCBNaWdvUiBvdXQgb2YgdHJlZSBidWlsZAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgMTk1MWY4NDdmMGE4NTE4NTM4NzFiNjEzYWQ3Y2YyMWE1MjQyMjI2YwpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglXZWQgRGVjIDEwIDE0OjQxOjI1IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBURVhUX0JBU0UgZm9yIENQQ0k0MDUgYm9hcmRzCgogICAgVGhpcyBwYXRjaCBmaXhlcyBidWlsZGluZyBVLUJvb3QgZm9yIENQQ0k0MDUgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDhjOTJhZjdiMmZiZDYwYWU4NzM3OTQ3N2Y5M2M3ZWM5NDQxYjc0NTIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBEZWMgOSAyMDowODowMSAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBSZW1vdmUgc29tZSBmZWF0dXJlcyBmcm9tIEFMUFIgdG8gZml0IGludG8gMjU2ayBhZ2FpbgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzYjA4OWU0Zjg4OWEyOTAyNDQ5ZDU1ZTA4MWM4ODZhZTYwN2NhZTg5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgRGVjIDEwIDEwOjMyOjU5IDIwMDggKzAxMDAKCiAgICBVQkk6IFNldCB1YmlfZGV2LnR5cGUgYmFjayB0byBERVZfVFlQRV9OT05FIHVwb24gZmFpbGluZyBpbml0aWFsaXphdGlvbgoKICAgIFdpdGggdGhpcyBwYXRjaCB3ZSBzZXQgdGhlIHR5cGUgYmFjayB0byBOT05FIHVwb24gZmFpbGluZyBVQkkgcGFydGl0aW9uCiAgICBpbml0aWFsaXphdGlvbi4gT3RoZXJ3aXNlIGZ1cnRoZXIgY2FsbHMgdG8gdGhlIFVCSSBzdWJzeXN0ZW0gd291bGQgdHJ5CiAgICB0byByZWFsbHkgYWNjZXNzIHRoZSBub24tZXhpc3RpbmcgVUJJIHBhcnRpdGlvbi4KCiAgICBUaGFua3MgdG8gTWljaGFlbCBMYXduaWNrIGZvciBwb2ludGluZyB0aGlzIG91dC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODE3MzI5MzUxNjM5YTg4OTVjZDliODdiMzNhZWZmMDQzZjNkNWE0NApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIERlYyAxMCAxMDoyODozMyAyMDA4ICswMTAwCgogICAgVUJJOiBSZXR1cm4gLUVOT01FTSB1cG9uIGZhaWxpbmcgbWFsbG9jCgogICAgUmV0dXJuIHdpdGggY29ycmVjdCBlcnJvciBjb2RlICgtRU5PTUVNKSBmcm9tIHViaV9hdHRhY2hfbXRkX2RldigpIHVwb24KICAgIGZhaWxpbmcgbWFsbG9jKCkuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDIxNDUxODhiZWEyZGY4ZjJiNDdhODdlYzMwNzFiNTUwMjdlOGQwYWUKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglUdWUgRGVjIDkgMjM6MzQ6MTUgMjAwOCAtMDgwMAoKICAgIEZpeCBjb21waWxlIGVycm9yIGluIGJ1aWxkaW5nIE1CWDg2MFQuCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA4ZmFiNDllYTkxMWZlOTI1MzkyZmE1YWZjYzliYzczNzNhM2QwY2VlCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglUdWUgTm92IDI1IDExOjQyOjIwIDIwMDggKzAxMDAKCiAgICBtaWNyb2JsYXplOiBSZW1vdmUgWFVQVjJQIGJvYXJkCgogICAgLS0tCgogICAgTWljcm9ibGF6ZSBwbGF0Zm9ybXMgdXNlIGdlbmVyaWMgc2V0dGluZ3MgYW5kIHRvIGhhdmUKICAgIG1hbnkgcGxhdGZvcm1zIGlzIGNvbmZ1c2luZyB0aGF0J3Mgd2h5IEkgZGVjaWRlZCB0byByZW1vdmUgdGhpcwogICAgcGxhdGZvcm0gZnJvbSBVLUJPT1QuIG1sNDAxIHRyZWUgaXMgc3VmZmljaWVudCBmb3IgY292ZXJpbmcKICAgIGFsbCBNaWNyb2JsYXplIHBsYXRmb3Jtcy4KCiAgICBUaGlzIGNoYW5nZSB3aWxsIGdvIHRocm91Z2ggbWljcm9ibGF6ZSBjdXN0b2RpYW4gdHJlZS4KCmNvbW1pdCA5OWJhNmYzNTM1ODI3MjBkZWZmZjZlNmU2NzYxZGM0NTVhMjA3ZDMxCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglNb24gTm92IDI0IDE4OjI1OjQxIDIwMDggKzAxMDAKCiAgICBtaWNyb2JsYXplOiBSZW1vdmUgQ09ORklHX0xJQkZEVCBkdWUgdG8gZXJyb3IgaW4gY29tbW9uIGZpbGVzCgpjb21taXQgZTdkNTkxZTgyM2E5OTE1MTM4MzNhZjcwMzA0Njg0MDllMjVhM2IxMwpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJTW9uIE5vdiAyNCAxMTo0MzowMCAyMDA4ICswMTAwCgogICAgbWljcm9ibGF6ZTogRml4IG1sNDAxIHVhcnQxNjU1MCBzZXR0aW5nCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgoKY29tbWl0IGM4NWZmMDU1M2E4Y2ZiY2NhNTFjMTViOTQ3ZTFlZDU1ZDM4MTBhMzkKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CU1vbiBOb3YgMjQgMTE6Mzg6MjIgMjAwOCArMDEwMAoKICAgIG1pY3JvYmxhemU6IFNldCB1cCByZWxvY2F0aW9uIGlzIGRvbmUKCmNvbW1pdCBiY2I2ZGQ5MTg3ZDRiMjNjNzQ4NzA0NzY3YmQxMmQyMGM4MjllOTk2CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgRGVjIDkgMjM6MjA6MzEgMjAwOCAtMDUwMAoKICAgIHRvb2xzL25ldGNvbnNvbGU6IG5ldyBzY3JpcHQgZm9yIHdvcmtpbmcgd2l0aCBuZXRjb25zb2xlIG92ZXIgVURQCgogICAgV2hpbGUgdGhlIGRvYy9SRUFETUUuTmV0Q29uc29sZSBkb2VzIGhhdmUgYSBzbmlwcGV0IGZvciBwZW9wbGUgdG8KICAgIGNyZWF0ZSB0aGVpciBvd24gbmV0Y2F0IHNjcmlwdCwgaXQncyBhIGxvdCBlYXNpZXIgdG8gbWFrZSBhIHNpbXBsZQogICAgZGVkaWNhdGVkIHNjcmlwdCBhbmQgdGVsbCBwZW9wbGUgdG8gdXNlIGl0LgoKICAgIEFsc28gc3BydWNlIGl0IHVwIGEgYml0IHRvIG1ha2UgaXQgdXNlciBmcmllbmRseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgOGM1MTcwYTdkMDg4NjAxZDVmMzBkODUwOTMzODhkYWIxZjFlOGVjMApBdXRob3I6IFNvbmljIFpoYW5nIDxTb25pYy5aaGFuZ0BhbmFsb2cuY29tPgpEYXRlOglUdWUgRGVjIDkgMjM6MjA6MTggMjAwOCAtMDUwMAoKICAgIGZzL2ZhdDogaGFuZGxlIEZBVCBvbiBTQVRBCgogICAgVGhlIEZBVCBmaWxlIHN5c3RlbSBkcml2ZXIgc2hvdWxkIGFsc28gaGFuZGxlIEZBVCBvbiBTQVRBIGRldmljZXMuCgogICAgU2lnbmVkLW9mZi1ieTogU29uaWMgWmhhbmcgPFNvbmljLlpoYW5nQGFuYWxvZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNGNkOGVkNDA2MTVhN2Q3NDFlZjJmMDllZTUzNzc5ZWM2OTA3YjhhNgpBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVR1ZSBEZWMgOSAyMzoyNjozMSAyMDA4IC0wODAwCgogICAgRml4IGNvbXBpbGUgZXJyb3IgaW4gYnVpbGRpbmcgTUJYODYwVC4KICAgIEJ1ZyB3YXMgaW50cm9kdWNlZCBpbiA5ZWI3OWJkODg1NmJjYWI4OTZlZDVlMWYxYmNhMTU5ODA3YTEyNGRkCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA5N2EyNGE3OGVlNmYzNGI4OWI4MjFjYjcwZWRhMWNmMzRhYTExZDk3CkF1dGhvcjogSmVycnkgVmFuIEJhcmVuIDxndmIudWJvb3RAZ21haWwuY29tPgpEYXRlOglNb24gTm92IDI0IDA4OjE1OjAyIDIwMDggLTA1MDAKCiAgICBsaWJmZHQ6IEZpeCByZWRlZmluZWQgdWludHB0cl90IHdhcm5pbmcgZm9yIFVTRV9IT1NUQ0MKCiAgICBDb21waWxpbmcgVS1Cb290IGluIGFuIG9sZCBPUyBlbnZpcm9ubWVudCAoUmVkSGF0LTcuMyAgOi0pCWdpdmVzIHRoZQogICAgZm9sbG93aW5nIHdhcm5pbmdzIGZyb20gRkRUOgoKICAgIGluY2x1ZGUvbGliZmR0X2Vudi5oOjUwOiB3YXJuaW5nOiByZWRlZmluaXRpb24gb2YgJ3VpbnRwdHJfdCcKICAgIC91c3IvaW5jbHVkZS9zdGRpbnQuaDoxMjk6IHdhcm5pbmc6ICd1aW50cHRyX3QnIHByZXZpb3VzbHkgZGVjbGFyZWQgaGVyZQoKICAgIEZpeDogUHJvdGVjdCB0aGUgZGVmaW5pdGlvbiBvZiB1aW50cHRyX3Qgd2hlbiBjb21waWxpbmcgb24gdGhlIGhvc3QKICAgIHN5c3RlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IDFmYzJiMTY1YzUxZDZmNDBjOGQ1MDVmMWIzZWFlZmRiNjU5OWIxN2IKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglTYXQgTm92IDIyIDA4OjQzOjI5IDIwMDggKzExMDAKCiAgICBNb3ZlZCBzYzUyMCBQQ0kgZGVmaW5pdGlvbnMgdG8gc3RhbmQtYWxvbmUgZmlsZQoKICAgIFNpZ25lZCBPZmYgQnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Cgpjb21taXQgMWY1MDcwYzBjMThmYTU2ODRiZmNlMDljOGFiZGYxMGMwNGVkNDhmYQpBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CVNhdCBOb3YgMjIgMDg6NDM6MjEgMjAwOCArMTEwMAoKICAgIEZpeGVkIHBhdGggdG8gc2M1MjAgU1NJIGluY2x1ZGUgZmlsZQoKICAgIFNpZ25lZCBPZmYgQnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Cgpjb21taXQgZDRmNzBkYTU0NGMzM2RiM2U0ZmNlNjQ3M2RlYTRlY2NhNDMyMjU0NQpBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CUZyaSBOb3YgMjEgMDY6Mjg6MDUgMjAwOCArMTEwMAoKICAgIEZpeGVkIGJ1aWxkIGVycm9yIGR1ZSB0byAjZGVmaW5lIG9mIF9MSU5VWF9TVFJJTkdfSF8gaW4gODI1NTlfZWVwcm9tLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgoKY29tbWl0IGMwMzQwNzVhNzEzYjYwZTY1NGM2NGU4OGU4N2RhMjk0NDBmMzFiYjQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBOb3YgMTIgMTM6MzA6MTAgMjAwOCArMDEwMAoKICAgIHNlcmlhbDogQWRkIHZjdGggVUFSVCBkcml2ZXIKCiAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIFVBUlQgZHJpdmVyIGZvciB0aGUgdXBjb21pbmcgVkNUSCBib2FyZCBzdXBwb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxNDJhODBmZmMzYjUzN2E5YzQ1YWNkMjQ0NGE0MmE3N2YxNDdjNjAyCkF1dGhvcjogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CkRhdGU6CVRodSBOb3YgMTMgMTk6NDk6MzYgMjAwOCArMDMwMAoKICAgIGpmZnMyOiBjYWNoZSBkYXRhX2NyYyByZXN1bHRzCgogICAgQXMgd2UgbW92ZWQgZGF0YV9jcmMoKSBpbnZvY2F0aW9uIGZyb20gamZmczJfMXBhc3NfYnVpbGRfbGlzdHMoKSB0bwogICAgamZmczJfMXBhc3NfcmVhZF9pbm9kZSgpIGRhdGFfY3JjIGlzIGdvaW5nIHRvIGJlIGNhbGN1bGF0ZWQgb24gZWFjaAogICAgaW5vZGUgYWNjZXNzLiBUaGlzIHBhdGNoIGFkZHMgY2FjaGluZyBvZiBkYXRhX2NyYygpIHJlc3VsdHMuIFRoZXJlCiAgICBpcyBubyBzaWduaWZpY2FudCBpbXByb3ZlbWVudCBpbiBzcGVlZCAoYmVjYXVzZSBvZiBmbGFzaCBhY2Nlc3MKICAgIGNhY2hpbmcgYWRkZWQgaW4gcHJldmlvdXMgcGF0Y2ggSSB0aGluaywgY3JjIGluIFJBTSBpcyByZWFsbHkgZmFzdCkKICAgIGJ1dCB0aGlzIHBhdGNoIGltcGFjdHMgbWVtb3J5IHVzYWdlIC0tIGV2ZXJ5IGJfbm9kZSBzdHJ1Y3R1cmUgdXNlcwogICAgMTIgYnl0ZXMgaW5zdGVhZCBvZiA4LgoKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXhleSBOZXltYW4gPGF2bkBlbWNyYWZ0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgoKY29tbWl0IDliNzA3NjIyOWVjNmE5NThiZDgzNWFiNzA3NDVmNzY3NjI5N2NlODIKQXV0aG9yOiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KRGF0ZToJVGh1IE5vdiAxMyAxOTo0OTozNSAyMDA4ICswMzAwCgogICAgamZmczI6IHN1bW1hcnkgc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciByZWFkaW5nIGZzIGluZm9ybWF0aW9uIGZyb20gc3VtbWFyeQogICAgbm9kZSBpbnN0ZWFkIG9mIHNjYW5uaW5nIGZ1bGwgZXJhc2VibG9jay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KCmNvbW1pdCA3MDc0MTAwNGRjMjg5NDZjZDgyYzdhZjY3ODljNGRkYjNmYzk0NTI2CkF1dGhvcjogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CkRhdGU6CVRodSBOb3YgMTMgMTk6NDk6MzQgMjAwOCArMDMwMAoKICAgIGpmZnMyOiBhZGQgYnVmZmVyIHRvIGNhY2hlIGZsYXNoIGFjY2Vzc2VzCgogICAgV2l0aCB0aGlzIHBhdGNoIEpGRlMyIGNvZGUgYWxsb2NhdGVzIG1lbW9yeSBidWZmZXIgb2YgbWF4X3RvdGxlbiBzaXplCiAgICAoc2l6ZSBvZiB0aGUgbGFyZ2VzdCBub2RlLCBjYWxjdWxhdGVkIGR1cmluZyBzY2FuIHRpbWUpIGFuZCB1c2VzIGl0IHRvCiAgICBzdG9yZSBlbnRpcmUgbm9kZS4gU3BlZWRzIHVwIGxvYWRpbmcuIElmIG1hbGxvYyBmYWlscyB3ZSB1c2Ugb2xkIHdheXMKICAgIHRvIGRvIHRoaW5ncy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbGV4ZXkgTmV5bWFuIDxhdm5AZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KCmNvbW1pdCA4YTM2ZDMxZjcyNDExMTQ0YWMwNDEyZWU3ZTE4ODBlODAxYWNkNzU0CkF1dGhvcjogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CkRhdGU6CVRodSBOb3YgMTMgMTk6NDk6MzMgMjAwOCArMDMwMAoKICAgIGpmZnMyOiByZXdyaXRlIGpmZnMyIHNjYW5uaW5nIGNvZGUgYmFzZWQgb24gTGludXggb25lCgogICAgUmV3cml0ZXMgamZmczJfMXBhc3NfYnVpbGRfbGlzdHMoKSBmdW5jdGlvbiBpbiBzdHlsZSBvZiBMaW51eCdzCiAgICBqZmZzMl9zY2FuX21lZGl1bSgpIGFuZCBqZmZzMl9zY2FuX2VyYXNlYmxvY2soKS4KICAgIFRoaXMgaW5jbHVkZXM6CiAgICAgLSBDYWNoaW5nIGZsYXNoIGFjY2VzZXMKICAgICAtIFNtYXJ0IGRlYWxpbmcgd2l0aCBmcmVlIHNwYWNlCgogICAgU2lnbmVkLW9mZi1ieTogQWxleGV5IE5leW1hbiA8YXZuQGVtY3JhZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Cgpjb21taXQgZTBiNTUzMjU3OWVkYThiNDYyOWYxYjRmNmU0OWMzY2M2MGY1MjIzNwpBdXRob3I6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgpEYXRlOglUaHUgTm92IDEzIDE5OjQ5OjMyIDIwMDggKzAzMDAKCiAgICBqZmZzMjogYWRkIHNlY3Rvcl9zaXplIGZpZWxkIHRvIHBhcnRfaW5mbyBzdHJ1Y3R1cmUKCiAgICBUaGlzIHBhdGNoIGFkZHMgc2VjdG9yX3NpemUgZmllbGQgdG8gcGFydF9pbmZvIHN0cnVjdHVyZSAodXNlZAogICAgYnkgbmV3IEpGRlMyIGNvZGUpLgoKICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgoKY29tbWl0IGY3Mzg0Njk1Njc3OGE3ZGZlZTgzNDAzZWY5NzQ3YWZmNzcxOTg4NDgKQXV0aG9yOiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KRGF0ZToJVGh1IE5vdiAxMyAxOTo0OTozMSAyMDA4ICswMzAwCgogICAgamZmczI6IGZpeCBzZWFyY2hpbmcgZm9yIGxhdGVzdCB2ZXJzaW9uIGluIGpmZnMyXzFwYXNzX2xpc3RfaW5vZGVzKCkKCiAgICBXZSBuZWVkIHRvIHVwZGF0ZSBpX3ZlcnNpb24gaW5zaWRlIGN5Y2xlIHRvIGZpbmQgcmVhbGx5IGxhdGVzdCB2ZXJzaW9uCiAgICBpbnNpZGUgamZmczJfMXBhc3NfbGlzdF9pbm9kZXMoKS4gV2l0aCB0aGF0IGZpeGVkIHdlIGNhbiB1c2UgaXNpemUgaW5zaWRlCiAgICBkdW1wX2lub2RlKCkgaW5zdGVhZCBvZiBjYWxsaW5nIGV4cGVuc2l2ZSBqZmZzMl8xcGFzc19yZWFkX2lub2RlKCkuCgogICAgU2lnbmVkLW9mZi1ieTogQWxleGV5IE5leW1hbiA8YXZuQGVtY3JhZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Cgpjb21taXQgMTExM2NiNzY0YjNkYTI1NmVmOGExZjk1MzlmNGVmYmUyMjFmZjNjNApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBEZWMgOSAyMzoxMzo1MSAyMDA4ICswMTAwCgogICAgZXZiNjQyNjA6IGZpeCAiY2FzdCB0byBwb2ludGVyIGZyb20gaW50ZWdlciBvZiBkaWZmZXJlbnQgc2l6ZSIgd2FybmluZ3MKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGQyNzc2ODI3MzE1YzNkNDY5YjhjYjRjZWMxNGQ1ODg3Nzc5OGRhYTIKQXV0aG9yOiBTdGVmYW4gQWx0aG9lZmVyIDxzdGVmYW4uYWx0aG9lZmVyQHdlYi5kZT4KRGF0ZToJU3VuIERlYyA3IDE5OjM5OjExIDIwMDggKzAxMDAKCiAgICBVU0I6IGRlc2NyaXB0b3IgaGFuZGxpbmcKCiAgICBIaSwKCiAgICBJIGZvdW5kIGEgYnVnIHdoZW4gd29ya2luZyB3aXRoIHRoZSB1LWJvb3QgVVNCIHN1YnN5c3RlbSBvbiBJWFA0MjUgcHJvY2Vzc29yCiAgICAoYmlnIGVuZGlhbiBYc2NhbGUgYWthIEFSTXY1KS4KICAgIEkgcmVjb2duaXplZCB0aGF0IHRoZSBzZWNvbmQgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3Igb2YgdGhlIGF0dGFjaGVkIG1lbW9yeQogICAgc3RpY2sgd2FzIGNvcnJ1cHRlZC4KCiAgICBUaGUgcmVhc29uIGZvciB0aGlzIGFyZSB0aGUgcGFja2VkIHN0cnVjdHVyZXMgYmVsb3cgKGVpdGhlciB1LWJvb3QgYW5kCiAgICB1LWJvb3QtdXNiKToKCiAgICAtLS0tLS0tLS0tLS0tLQogICAgLyogRW5kcG9pbnQgZGVzY3JpcHRvciAqLwogICAgc3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yIHsKCXVuc2lnbmVkIGNoYXIgIGJMZW5ndGg7Cgl1bnNpZ25lZCBjaGFyICBiRGVzY3JpcHRvclR5cGU7Cgl1bnNpZ25lZCBjaGFyICBiRW5kcG9pbnRBZGRyZXNzOwoJdW5zaWduZWQgY2hhciAgYm1BdHRyaWJ1dGVzOwoJdW5zaWduZWQgc2hvcnQgd01heFBhY2tldFNpemU7Cgl1bnNpZ25lZCBjaGFyICBiSW50ZXJ2YWw7Cgl1bnNpZ25lZCBjaGFyICBiUmVmcmVzaDsKCXVuc2lnbmVkIGNoYXIgIGJTeW5jaEFkZHJlc3M7CgogICAgfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAvKiBJbnRlcmZhY2UgZGVzY3JpcHRvciAqLwogICAgc3RydWN0IHVzYl9pbnRlcmZhY2VfZGVzY3JpcHRvciB7Cgl1bnNpZ25lZCBjaGFyICBiTGVuZ3RoOwoJdW5zaWduZWQgY2hhciAgYkRlc2NyaXB0b3JUeXBlOwoJdW5zaWduZWQgY2hhciAgYkludGVyZmFjZU51bWJlcjsKCXVuc2lnbmVkIGNoYXIgIGJBbHRlcm5hdGVTZXR0aW5nOwoJdW5zaWduZWQgY2hhciAgYk51bUVuZHBvaW50czsKCXVuc2lnbmVkIGNoYXIgIGJJbnRlcmZhY2VDbGFzczsKCXVuc2lnbmVkIGNoYXIgIGJJbnRlcmZhY2VTdWJDbGFzczsKCXVuc2lnbmVkIGNoYXIgIGJJbnRlcmZhY2VQcm90b2NvbDsKCXVuc2lnbmVkIGNoYXIgIGlJbnRlcmZhY2U7CgoJdW5zaWduZWQgY2hhciAgbm9fb2ZfZXA7Cgl1bnNpZ25lZCBjaGFyICBudW1fYWx0c2V0dGluZzsKCXVuc2lnbmVkIGNoYXIgIGFjdF9hbHRzZXR0aW5nOwoJc3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yIGVwX2Rlc2NbVVNCX01BWEVORFBPSU5UU107CiAgICB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKICAgIC0tLS0tLS0tLS0tLQoKICAgIEFzIHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yIGlzIG9ubHkgN2J5dGUgaW4gbGVuZ3RoLCB0aGUgc3RhcnQgb2YgYWxsCiAgICBvZGQgZXBfZGVzY1tdIHN0cnVjdHVyZXMgaXMgbm90IHdvcmQgYWxpZ25lZC4gVGhpcyBtYWtlcyB3TWF4UGFja2V0U2l6ZQogICAgb2YgdGhlc2Ugc3RydWN0dXJlcyBhbHNvIG5vdCB3b3JkIGFsaWduZWQuCgogICAgQVJNdjUgQXJjaGl0ZWN0dXJlIGhvd2V2ZXIgZG9lcyBub3Qgc3VwcG9ydCBub24tYWxpZ25lZCBtdWx0aWJ5dGUKICAgIGRhdGEgdHlwZSAoc2VlIEEyLjggb2YgQVJNIEFyY2hpdGVjdHVyZSBSZWZlcmVuY2UgTWFudWFsKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gQWx0aG9lZmVyIDxzdGVmYW4uYWx0aG9lZmVyQHdlYi5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQsO2aG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCA0YzI1M2ZkYjJhMTc1ZWEzNDcyYzM4YTE0NTVhMTZmYWE1OGU4MWYwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIERlYyA5IDEwOjI3OjMzIDIwMDggLTA2MDAKCiAgICBkcml2ZXJzL2ZzbF9wY2lfaW5pdDogRml4IGNvbXBpbGUgd2FybmluZwoKICAgIGZzbF9wY2lfaW5pdC5jOiBJbiBmdW5jdGlvbiAnZnNsX3BjaV9zZXR1cF9pbmJvdW5kX3dpbmRvd3MnOgogICAgZnNsX3BjaV9pbml0LmM6MTIyOiB3YXJuaW5nOiBjb21wYXJpc29uIGlzIGFsd2F5cyB0cnVlIGR1ZSB0byBsaW1pdGVkIHJhbmdlIG9mIGRhdGEgdHlwZQoKICAgIFRoZSBjaGVjayBvbmx5IG1ha2VzIHNlbnNlIGlmIHdlIGFyZSBDT05GSUdfUEhZU182NEJJVAoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZGVkYWNjMThhOGMyYjM5NTE1ODFlYjcyMWZhMDU1YTRlMGFjNDg0NQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBEZWMgNyAwOTo0NTozNSAyMDA4ICswMTAwCgogICAgdXNidHR5L29tYXA6IHVwZGF0ZSB0byBjdXJyZW50IEFQSQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IELDtmhtZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgZWUyZTliYTkxN2E2MmNjMmUzYTQ4NGJiNzljOGRhMGUwMWNiOTNlZApBdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KRGF0ZToJVHVlIERlYyA5IDE3OjUyOjA1IDIwMDggKzAxMDAKCiAgICB2aWRlbzogZml4IEZBRFM4MjMgYW5kIFJSdmlzaW9uIGNvbXBpbGluZyBpc3N1ZXMKCiAgICBTaW5jZSBjb21taXQgNTYxODU4ZWUgYnVpbGRpbmcgZm9yIEZBRFM4MjMgYW5kIFJSdmlzaW9uCiAgICBkb2Vzbid0IHdvcmsuIExldCdzIGluY2x1ZGUgdmVyc2lvbi5oIGFuZCB0aW1lc3RhbXAuaAogICAgdW5jb25kaXRpb25hbGx5IHRvIGZpeCB0aGUgcHJvYmxlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgMmQyZTA1NzI3ZmU0MDEzZjgwN2ZmYTgxNGRmZjBlNzUyNTlhMWRiNApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIERlYyAyIDEwOjUzOjQ3IDIwMDggKzAxMDAKCiAgICBVQkk6IEZpeCBzaXplIHBhcnNpbmcgaW4gInViaSBjcmVhdGUiCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDJlZTk1MWJhMmFjOTg3NGQyYTkzZDUyZTdhMTg3ZDMxODRiZTkzN2UKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBOb3YgMjcgMTQ6MDc6MDkgMjAwOCArMDEwMAoKICAgIFVCSTogRW5hYmxlIHJlLWluaXRpYWxpemluZyBvZiB0aGUgInViaSBwYXJ0IiBjb21tYW5kCgogICAgV2l0aCB0aGlzIHBhdGNoIG5vdywgdGhlIHVzZXIgY2FuIGNhbGwgInViaSBwYXJ0IiBtdWx0aXBsZSB0aW1lcyB0bwogICAgcmUtY29ubmVjdCB0aGUgVUJJIGRldmljZSB0byBhbm90aGVyIE1URCBwYXJ0aXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDlkZWYxMmNhZTMzZDJkM2VhMmRkNTZiMTk3ZmQzZGZiM2FkNjBiZjQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBOb3YgMjcgMTQ6MDU6MTUgMjAwOCArMDEwMAoKICAgIE1URDogRml4IHByb2JsZW0gYmFzZWQgb24gbm9uLXdvcmtpbmcgcmVsb2NhdGlvbiAobGlzdCBoZWFkIG10ZF9wYXJ0aXRpb25zKQoKICAgIERvbid0IHVzZSBMSVNUX0hFQUQoKSBidXQgaW5pdGlhbGl6ZSB0aGUgc3RydWN0IHZpYSBJTklUX0xJU1RfSEVBRCgpIHVwb24KICAgIGZpcnN0IGNhbGwgb2YgYWRkX210ZF9wYXJ0aXRpb25zKCkuIE90aGVyd2lzZSB0aGlzIHdvbid0IHdvcmsgb24gcGxhdGZvcm1zCiAgICB3aGVyZSB0aGUgcmVsb2NhdGlvbiBpcyBicm9rZW4gKGxpa2UgTUlQUyBvciBQUEMpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1ZTNhYjY4ZTlhY2Y5ZWRmMzA0YjhhYTMyYWQ3ZTAwNTQ4M2EyYzQ3CkF1dGhvcjogVHJlbnQgUGllcGhvIDx0cGllcGhvQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBOb3YgMTIgMTc6Mjk6NDggMjAwOCAtMDgwMAoKICAgIFNlY3Rpb24gbmFtZSBzaG91bGQgYmUgIi5kYXRhIiwgbm90ICJkYXRhIgoKICAgIFNpZ25lZC1vZmYtYnk6IFRyZW50IFBpZXBobyA8dHBpZXBob0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA3ZmE2YTJmM2I2NjU3OWRlYThiYzFhOTE3NzY0NmUxMTQxNzMxYjE1CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIERlYyA5IDAwOjM5OjA4IDIwMDggKzAxMDAKCiAgICBNQUtFQUxMOiBBdXRvbWF0aWNhbGx5IHVzZSBwYXJhbGxlbCBidWlsZHMKCiAgICBBZGQgbG9naWMgdG8gdGhlIE1BS0VBTEwgc2NyaXB0IHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIENQVSBjb3JlcwogICAgb24gdGhlIHN5c3RlbSwgYW5kIHJ1biBhIHBhcmFsbGVsIGJ1aWxkIGlmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUuCiAgICBVc3VhbGx5IHRoaXMgc2lnbmlmaWNhbnRybHkgYWNjZWxlcmF0ZXMgYnVpbGRzLgoKICAgIEFsbG93IHRvIG1hbnVhbGx5IGFkanVzdCB0aGUgbnVtYmVyIG9mIHBhcmFsbGVsIG1ha2Ugam9icyBieSB1c2luZwogICAgdGhlICJCVUlMRF9OQ1BVUyIgZW52aXJvbm1lbnQgdmFyaWFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAyNjg0MDVmYTdjNDQxNTZjNTE5MmE3MDc3OTkyMGM3MDkwNmFmOGQ2CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIERlYyA5IDAwOjI0OjMwIDIwMDggKzAxMDAKCiAgICB2eHdvcmtzLmg6IEZpeCBidWlsZCBwcm9ibGVtIGludHJvZHVjZWQgYnkgY29tbWl0cyAyOWE0YzI0ZC9lOTA4NGIyMwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMTUzMTc2YTk0MTQxMjBjYTE3MzZmM2NjNDk1MTYyM2Q2ZTE0ZTZhZgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVR1ZSBOb3YgMTEgMDY6MDg6NTkgMjAwOCArMDEwMAoKICAgIGF2cjMyL2Jvb3RtOiByZW1vdmUgdW51c2VkIHZhcmlhYmxlICdyZXQnCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIEFja2VkLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgNDM0YzUxYTVlNjJmNjA4YTJhNzhlZDUzOThhYzQzYTFjNzdjYzE4MwpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVdlZCBOb3YgMTIgMTM6MDY6NDggMjAwOCAtMDYwMAoKICAgIFJlbW92ZSB1bm5lZWRlZCBDT05GSUdfU0hFTEwgcmVmZXJlbmNlcwoKICAgIE1ha2Ugc2hvdWxkIGJlIHVzaW5nIHRoZSBiYXNoIHNoZWxsIGJ5IGRlZmF1bHQgd2hpY2ggbWFrZXMKICAgIENPTkZJR19TSEVMTCB1bm5lY2Vzc2FyeQoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgY2Y3YTdiOTk3OTRiYWM5MzY4OTk4MTliOTU1MzliZTFkYmQ3MTcwOApBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVdlZCBOb3YgMTIgMTI6MzM6MjAgMjAwOCAtMDYwMAoKICAgIFVzZSBiYXNoIGZvciBkZWZhdWx0IEdOVSBNYWtlIHNoZWxsIGFwcGxpY2F0aW9uCgogICAgU29tZSBNYWtlIHNjcmlwdCBjb21tYW5kcyByZWx5IG9uIGJhc2gtc3BlY2lmaWMgZmVhdHVyZXMgbGlrZSBicmFjZQogICAgZXhwYW5zaW9uLCBzbyBkZWZhdWx0IHRvIGJhc2ggZm9yIHRoZSBTSEVMTCB2YXJpYWJsZSB3aXRoIGEgZmFsbGJhY2sKICAgIHRvIHRoZSBzdGFuZGFyZCBzaCBzaGVsbAoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgNGI1MzAwMTg3NjQ5MzRhZDU2ODkxOTZlOWFhNTcxNGE2ZjRkMWE2YwpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglXZWQgTm92IDEyIDA5OjUwOjQ1IDIwMDggKzAxMDAKCiAgICBqZmZzMjogcmVuYW1lIGRldmljZXNfaW5pdCAoKSBpbiBjb21tb24vamZmczIuYwoKICAgIHJlbmFtZSBkZXZpY2VzX2luaXQgKCkgaW4gY29tbW9uL2pmZnMyLmMgdG8KICAgIGpmZnMyX2RldmljZXNfaW5pdCAoKSwgYmVjYXVzZSB0aGVyZSBpcyBhbHNvIGEKICAgIGRldmljZXNfaW5pdCAoKSBpbiBjb21tb24vZGV2aWNlcy5jLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IGFmNWViODQ3YTEwZjEwMzc1OTAwMDEzNTVkODhiYWIzZmU3YmU0OGIKQXV0aG9yOiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+CkRhdGU6CU1vbiBOb3YgMTAgMTI6NDY6MjAgMjAwOCArMDAwMAoKICAgIFNQQVJDOiBGaXhlZCBjb21waWxlciBlcnJvciBpbnRyb2R1Y2VkIGJ5IGNvbW1pdCBjMTYwYTk1NDQ3NDMKCiAgICBUaGlzIHBhdGNoIGZpeGVzIGEgYnVpbGQgZXJyb3IgZm9yIHRoZSBTUEFSQyBwbGF0Zm9ybS4gSXQgd2FzCiAgICBpbnRyb2R1Y2VkIGJ5IGNvbW1pdCBjMTYwYTk1NDQ3NDNlODBlODg4OWVkYjIyNzU1MzhlNzc2NGNlMzM0LgoKICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KCmNvbW1pdCA0YzYwMjU5ODk5YWEwMGY1OWRiMGQ5MzZiODgwN2Y5YTI2NDExYzBmCkF1dGhvcjogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+CkRhdGU6CVN1biBOb3YgOSAxMjo1MDo1OSAyMDA4ICswMTAwCgogICAgbWdzdXZkIGFkZCB0aGUgYm9hcmQtc3BlY2lmaWMgcGFydCBvZiB0aGUgSERMQyBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBHYXJ5IEplbm5lam9obiA8Z2FyeWpAZGVueC5kZT4KCmNvbW1pdCA1MzRhNDM1OTY2NmFmNDhiZDY5YTM3NDNkOGE4YzJiZGIxZDNlYzcwCkF1dGhvcjogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+CkRhdGU6CVN1biBOb3YgOSAxMjo0NTowMyAyMDA4ICswMTAwCgogICAgbWdjb2dlIGFkZCB0aGUgYm9hcmQtc3BlY2lmaWMgcGFydCBvZiB0aGUgSERMQyBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBHYXJ5IEplbm5lam9obiA8Z2FyeWpAZGVueC5kZT4KCmNvbW1pdCAxMzVmNTUzNDUzOGJiOGVhNGYzOGE3MDMwZGExMjE4N2QyMmVmN2UwCkF1dGhvcjogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+CkRhdGU6CVN1biBOb3YgOSAxMjozNjoxNSAyMDA4ICswMTAwCgogICAga2V5bWlsZSBhZGQgdGhlIGNvbW1vbiBwYXJ0cyBvZiB0aGUgSERMQyBkcml2ZXIKCiAgICBUaGlzIGltcGxlbWVudHMgdGhlIElDTiBwcm90b2NvbCB1c2VkIGFjcm9zcyB0aGUgYmFja3BsYW5lIGFuZCBpcwogICAgbmVlZGVkIGJ5IGFsbCB0aGUga2V5bWlsZSBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+Cgpjb21taXQgMWNiODJhOTIwN2E1NTA1NTczOTllYWJjN2ZlNDdmMjFiYmQ5ZGRmOApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBOb3YgNyAyMjo0NjoyMiAyMDA4ICswMTAwCgogICAgZHJpdmVycy9iaW9zX2VtdWxhdG9yOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBiY2RmMWQyY2Y2YjI0ZmI5MDVmZDdkYTgwZGE0YjNjNjVhNzk5NWI1CkF1dGhvcjogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KRGF0ZToJVGh1IE5vdiA2IDE0OjAxOjUxIDIwMDggLTA1MDAKCiAgICBjb21tb24vY21kX2lkZS5jOiBDb3JyZWN0ZWQgZW5kaWFuIG9yZGVyIHByaW50aW5nIGZvciBjb21wYWN0IGZsYXNoIHNlcmlhbCBudW1iZXIuCgogICAgQ29ycmVjdGVkIGVuZGlhbiBvcmRlciBwcmludGluZyBmb3IgY29tcGFjdCBmbGFzaCBzZXJpYWwgbnVtYmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+Cgpjb21taXQgMTZhMjhlZjIxOWMyNzQyM2ExZWY1MDJmMTkwNzBjNGQzNzUwNzliOApBdXRob3I6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgpEYXRlOglUaHUgTm92IDYgMTU6MDQ6MjMgMjAwOCArMDEwMAoKICAgIElPTVVYOiBBZGQgY29uc29sZSBtdWx0aXBsZXhpbmcgc3VwcG9ydC4KCiAgICBNb2RpZmljYXRpb25zIHRvIHN1cHBvcnQgY29uc29sZSBtdWx0aXBsZXhpbmcuICBUaGlzIGlzIGNvbnRyb2xsZWQgdXNpbmcKICAgIENPTkZJR19TWVNfQ09OU09MRV9NVVggaW4gdGhlIGJvYXJkIGNvbmZpZ3VyYXRpb24gZmlsZS4KCiAgICBUaGlzIGFsbG93cyBhIHVzZXIgdG8gc3BlY2lmeSBtdWx0aXBsZSBjb25zb2xlIGRldmljZXMgaW4gdGhlIGVudmlyb25tZW50CiAgICB3aXRoIGEgY29tbWFuZCBsaWtlIHRoaXM6IHNldGVudiBzdGRpbiBzZXJpYWwsbmMuICBBcyBhIHJlc3VsdCwgdGhlIHVzZXIgY2FuCiAgICBlbnRlciB0ZXh0IG9uIGJvdGggdGhlIHNlcmlhbCBhbmQgbmV0Y29uc29sZSBpbnRlcmZhY2VzLgoKICAgIEFsbCBkZXZpY2VzIC0gc3RkaW4sIHN0ZG91dCBhbmQgc3RkZXJyIC0gY2FuIGJlIHNldCBpbiB0aGlzIG1hbm5lci4KCiAgICAxKSBjb21tb24vaW9tdXguYyBhbmQgaW5jbHVkZS9pb211eC5oIGNvbnRhaW4gdGhlIGVudmlyb25tZW50IHNldHRpbmcKICAgIGltcGxlbWVudGF0aW9uLgogICAgMikgZG9jL1JFQURNRS5pb211eCBjb250YWlucyBhIHNvbWV3aGF0IG1vcmUgZGV0YWlsZWQgZGVzY3JpcHRpb24uCiAgICAzKSBUaGUgaW1wbGVtZW50YXRpb24gaW4gKDEpIGlzIGNhbGxlZCBmcm9tIGNvbW1vbi9jbWRfbnZlZGl0LmMgdG8KICAgIGhhbmRsZSBzZXRlbnYgYW5kIGZyb20gY29tbW9uL2NvbnNvbGUuYyB0byBoYW5kbGUgaW5pdGlhbGl6YXRpb24gb2YKICAgIGlucHV0L291dHB1dCBkZXZpY2VzIGF0IGJvb3QgdGltZS4KICAgIDQpIGNvbW1vbi9jb25zb2xlLmMgYWxzbyBjb250YWlucyB0aGUgY29kZSBuZWVkZWQgdG8gcG9sbCBtdWx0aXBsZSBjb25zb2xlCiAgICBkZXZpY2VzIGZvciBpbnB1dCBhbmQgc2VuZCBvdXRwdXQgdG8gYWxsIGRldmljZXMgcmVnaXN0ZXJlZCBmb3Igb3V0cHV0LgogICAgNSkgaW5jbHVkZS9jb21tb24uaCBpbmNsdWRlcyBpb211eC5oIGFuZCBjb21tb24vTWFrZWZpbGUgZ2VuZXJhdGVzIGlvbXV4Lm8KICAgIHdoZW4gQ09ORklHX1NZU19DT05TT0xFX01VWCBpcyBzZXQuCgogICAgU2lnbmVkLW9mZi1ieTogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+Cgpjb21taXQgNzc0Y2U3MjAyNmY3NGFjOTY0MWJjYmJjNTg4YjIwZjJlMTNmN2FiOApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIE5vdiA0IDE2OjAzOjQ2IDIwMDggLTA1MDAKCiAgICBzdHJpbmdzOiB1c2UgcHV0cygpIHJhdGhlciB0aGFuIHByaW50ZigpCgogICAgV2hlbiBydW5uaW5nIGBzdHJpbmdzYCBvbiByZWFsbHkgbG9uZyBzdHJpbmdzLCB0aGUgc3RhY2sgdGVuZHMgdG8gZ2V0CiAgICBzbWFzaGVkIGR1ZSB0byBwcmludGYoKS4gIFN3aXRjaCB0byBwdXRzKCkgaW5zdGVhZCBzaW5jZSB3ZSdyZSBvbmx5IHBhc3NpbmcKICAgIHRoZSBkYXRhIHRocm91Z2guCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGIwMzE1MGI1MmUzYzQ5MWE4NmEzY2MwOTQ1Mjc0ZjBlOGY5ODcyZTcKQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG1lbWJlci5mc2Yub3JnPgpEYXRlOglNb24gTm92IDMgMjI6MTY6MTggMjAwOCArMDEwMAoKICAgIFVzZSBuZXcgQ09ORklHX1NZU19WWFdPUktTIHBhcmFtZXRlcnMgZm9yIE5ldHN0YWwgYm9hcmRzCgogICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBtZW1iZXIuZnNmLm9yZz4KCmNvbW1pdCAyOWE0YzI0ZGU5OWQ4Y2I0YWMzMjk5MWMwNGNhYjg3ZWQ5NGNhMWY5CkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBtZW1iZXIuZnNmLm9yZz4KRGF0ZToJTW9uIE5vdiAzIDIyOjE1OjM0IDIwMDggKzAxMDAKCiAgICBjbWRfZWxmLmM6IENsZWFudXAgYm9vdHZ4IGFuZCBoYW5kbGUgbmV3IENPTkZJR19TWVNfVlhXT1JLUyBwYXJhbWV0ZXJzCgogICAgLSBmaXggc2l6ZSB0b28gc21hbGwgYnkgb25lIGluIHNwcmludGYKICAgIC0gY2hhbmdlZCBvbGQgKHByZSAyMDA0KSBkZXZpY2UgbmFtZSBpYm1FbWFjIHRvIGVtYWMKICAgIC0gYm9vdCBkZXZpY2UgbWF5IGJlIG92ZXJyaWRlbiBpbiBib2FyZCBjb25maWcKICAgIC0gc2VydmVybmFtZSBtYXkgYmUgZGVmaW5lZCBpbiBib2FyZCBjb25maWcKICAgIC0gYWRkaXRpb25hbCBwYXJhbWV0ZXJzIG1heSBiZSBkZWZpbmVkIGluIGJvYXJkIGNvbmZpZwogICAgLSBmaXhlZCBzb21lIGxpbmUgd3JhcHBpbmdzCiAgICAtIHJlcGxhY2VkCXJlZHVuZGFudCBNQVggZGVmaW5lIGJ5IG1heAoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbWVtYmVyLmZzZi5vcmc+Cgpjb21taXQgZTkwODRiMjNkMTYxMDJmNDRhY2UyNDM3OWExYzBjMzUyNDk3ZWY4MApBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbWVtYmVyLmZzZi5vcmc+CkRhdGU6CU1vbiBOb3YgMyAyMjoxNDozNiAyMDA4ICswMTAwCgogICAgQWRkIHZ4d29ya3MuaCB0byBoYW5kbGUgQ09ORklHX1NZU19WWFdPUktTIHBhcmFtZXRlcnMKCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG1lbWJlci5mc2Yub3JnPgoKY29tbWl0IDBiMmY0ZWNhZDQ3M2Q3ODU5NTljNzk3NmYyMGQyYTAwYmQwZWUwMWYKQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG1lbWJlci5mc2Yub3JnPgpEYXRlOglNb24gTm92IDMgMjI6MTM6NDcgMjAwOCArMDEwMAoKICAgIFJFQURNRTogRG9jdW1lbnQgQ09ORklHX1NZUyBwYXJhbWV0ZXJzIGZvciB2eHdvcmtzCgogICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBtZW1iZXIuZnNmLm9yZz4KCmNvbW1pdCBhY2U1MTQ4MzdjYWM2NTZlMjljMzdhMTk1NjljYjhlYTgzMDcxMTI2CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJRnJpIE9jdCAzMSAxMToxMjozOCAyMDA4IC0wNTAwCgogICAgbGNkOiBMZXQgdGhlIGJvYXJkIGNvZGUgc2hvdyBib2FyZC1zcGVjaWZpYyBpbmZvIGNsZWFudXAKCiAgICByZW1vdmUgdW5uZWVkZWQgdmVyc2lvbi5oIGZyb20gbGNkLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1NjE4NThlZTdkMDI3NGMzZTg5ZGM5OGQ0ZDA2OThjYjZmY2Y2ZmQ5CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJTW9uIE5vdiAzIDA5OjMwOjU5IDIwMDggLTA2MDAKCiAgICBVcGRhdGUgVS1Cb290J3MgYnVpbGQgdGltZXN0YW1wIG9uIGV2ZXJ5IGNvbXBpbGUKCiAgICBVc2UgdGhlIEdOVSAnZGF0ZScgY29tbWFuZCB0byBhdXRvLWdlbmVyYXRlIGEgbmV3IFUtQm9vdAogICAgdGltZXN0YW1wIG9uIGV2ZXJ5IGNvbXBpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCA4M2FkMTc5ZTJmMGY2MjViODhhZGI4ZWY1Njk2NzA5ZTQ2ZmI5MDc3CkF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CkRhdGU6CVRodSBEZWMgNCAyMjoyNTo1NyAyMDA4ICswMTAwCgogICAgUmVtb3ZlIHJlZHVuZGFudCBhcm12NCBmbGFnIGZyb20gYXJtOTI2ZWpzIGNvbXBpbGUgZmxhZ3MKCiAgICBDdXJyZW50bHkgdGhlIGFybTkyNmVqcyB0cmVlIGhhcyB0aGUgYXJtdjQgb3B0aW9uIHNldCBkdXJpbmcgY29tcGlsYXRpb24uCiAgICBUaGlzIGZsYWcgZG9lcyBub3QgYmVsb25nIGhlcmUgYmVjYXVzZSBhIGFybTkyNiBDUFUgaXMgYWx3YXlzIGEgYXJtdjUgQ1BVLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IDg5YTdhODdmMDg0YzY1N2Y4ZTMyYjUxM2E3N2I1MGVjYTA3ZTE3ZWMKQXV0aG9yOiBOaWNvbGFzIEZlcnJlIDxuaWNvbGFzLmZlcnJlQGF0bWVsLmNvbT4KRGF0ZToJU2F0IERlYyA2IDEzOjExOjE0IDIwMDggKzAxMDAKCiAgICBhdDkxOiBDaG9vc2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIGxvY2F0aW9uIHdpdGhpbiBtYWtlIGNvbmZpZyB0YXJnZXQKCiAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIHBvc3NpYmxpdHkgdG8gY2hvb3NlIHRoZSBtZWRpYSB3aGVyZSB0aGUgZW52aXJvbm1lbnQgd2lsbAogICAgYmUgbG9jYXRlZC4gVGhpcyBhbGxvdyB0byBjaG9vc2UgdGhpcyBmdW5kYW1lbnRhbCBjb25maWd1cmF0aW9uIHdpdGhvdXQgZWRpdGluZwogICAgY29uZmlnIGZpbGVzLgoKICAgIERvY3VtZW50YXRpb24gZmlsZSBhZGRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWNvbGFzIEZlcnJlIDxuaWNvbGFzLmZlcnJlQGF0bWVsLmNvbT4KICAgIEFja2VkLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgogICAgQWNrZWQtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMTQ1MGM0YTY2ODIzNzg1NjcwMzA0MTRhOWYxMTk4YzM5Yjc3MzBjNwpBdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KRGF0ZToJTW9uIE5vdiAzIDE1OjMwOjM0IDIwMDggKzAxMDAKCiAgICBsd21vbiwgdHFtOHh4OiBGaXggYnVpbGQgZXJyb3JzCgogICAgQ29tbWl0IDZiNTllMDNlMDIzN2E0MGEyMzA1ZWEzODVkZWZkZmQ5MjAwMDk3OGIKICAgIGxjZDogTGV0IHRoZSBib2FyZCBjb2RlIHNob3cgYm9hcmQtc3BlY2lmaWMgaW5mbwoKICAgIGludHJvZHVjZWQgc29tZSBidWdzIHdoaWNoIHByZXZlbnQgVS1Cb290IGJ1aWxkaW5nCiAgICBmb3IgbHdtb24gYm9hcmQgaWYgQ09ORklHX0xDRF9JTkZPX0JFTE9XX0xPR08gd2lsbAogICAgYmUgZGVmaW5lZCBpbiB0aGUgYm9hcmQgY29uZmlndXJhdGlvbi4KCiAgICBBbHNvICJMQ0QgZW5hYmxlZCIgYnVpbGRpbmcgZm9yIFRRTTgyM0wgZG9lc24ndCB3b3JrCiAgICBzaW5jZSB0aGlzIGNvbW1pdC4KCiAgICBUaGlzIHBhdGNoIGZpeGVzIGFib3ZlLW1lbnRpb25lZCBpc3N1ZXMuCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IGJmYTBhZjZiMjJmZjI1YjA3MTlhODkxMGY5YjZkMWY5NzVhYTZmYjAKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVN1biBOb3YgMiAwMToxODoxOCAyMDA4IC0wNDAwCgogICAgaWdub3JlIC5nZGJfaGlzdG9yeSBmaWxlcwoKICAgIFdoZW4gdXNpbmcgZ2RiLCBoaXN0b3J5IGZpbGVzIHdpbGwgb2Z0ZW4gZ2V0IGdlbmVyYXRlZC4gIFNvIGlnbm9yZSB0aGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBjOGFhN2RmYzE4ZjdjYzkwZDBhZWE2YzdiZWNiYjY3ZGZjNWJiYTRiCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIE9jdCAzMSAxMjoyNjo1NSAyMDA4ICswMTAwCgogICAgRlBHQTogbW92ZSBmcGdhIGRyaXZlcnMgdG8gZHJpdmVycy9mcGdhCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA2YTg2YmI2YzI1Mzc2ZjAzNTg0NzgyMTlmYTI4ZDdjODRkZDAxZWQwCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJTW9uIERlYyAxIDE2OjI5OjM4IDIwMDggLTA2MDAKCiAgICBuZXQ6IEZpeCBUZnRwU3RhcnQoKSBpcDpmaWxlbmFtZSBidWcKCiAgICBUaGUgVGZ0cFN0YXJ0KCkgZnVuY3Rpb24gbW9kaWZpZXMgdGhlICdCb290RmlsZScKICAgIHN0cmluZyB3aGVuICdCb290RmlsZScgY29udGFpbnMgYm90aCBhbiBJUCBhZGRyZXNzCiAgICBhbmQgZmlsZW5hbWUgKGVnIDEuMi4zLjQ6L3BhdGgvZmlsZSkuIFRoaXMgY2F1c2VzCiAgICBzdWJzZXF1ZW50IGNhbGxzIHRvIFRmdHBTdGFydCB0byBpbmNvcnJlY3RseSBwYXJzZQogICAgdGhlIFRGVFAgZmlsZW5hbWUgYW5kIHNlcnZlciBJUCBhZGRyZXNzIHRvIHVzZS4KICAgIEZvciBleGFtcGxlOgoKICAgID0+IHRmdHAgMHgxMDAwMDAgMTAuNTIuMC42MjovaG9tZS9wdHlzZXIvbm9uX2V4aXN0YW50CiAgICBTcGVlZDogMTAwLCBoYWxmIGR1cGxleAogICAgVXNpbmcgZVRTRUMxIGRldmljZQogICAgVEZUUCBmcm9tIHNlcnZlciAxMC41Mi4wLjYyOyBvdXIgSVAgYWRkcmVzcyBpcyAxMC41Mi4yNTMuNzkKCQkgICAgIF5eXl5eXl5eXl4gQ09SUkVDVAogICAgRmlsZW5hbWUgJy9ob21lL3B0eXNlci9ub25fZXhpc3RhbnQnLgoJICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXiBDT1JSRUNUCiAgICBMb2FkIGFkZHJlc3M6IDB4MTAwMDAwCiAgICBMb2FkaW5nOiAqCiAgICBURlRQIGVycm9yOiAnRmlsZSBub3QgZm91bmQnICgxKQogICAgU3RhcnRpbmcgYWdhaW4KCiAgICBlVFNFQzI6IE5vIGxpbmsuCiAgICBTcGVlZDogMTAwLCBoYWxmIGR1cGxleAogICAgVXNpbmcgZVRTRUMxIGRldmljZQogICAgVEZUUCBmcm9tIHNlcnZlciAxMC41Mi4wLjMzOyBvdXIgSVAgYWRkcmVzcyBpcyAxMC41Mi4yNTMuNzkKCQkgICAgIF5eXl5eXl5eXl4gV1JPTkcKICAgIEZpbGVuYW1lICcxMC41Mi4wLjYyJy4KCSAgICAgIF5eXl5eXl5eXl4gV1JPTkcKICAgIExvYWQgYWRkcmVzczogMHgxMDAwMDAKICAgIExvYWRpbmc6ICoKICAgIFRGVFAgZXJyb3I6ICdGaWxlIG5vdCBmb3VuZCcgKDEpCiAgICBTdGFydGluZyBhZ2FpbgoKICAgIFRmdHBTdGFydCgpIHdhcyBtb2RpZmllZCB0byBub3QgbW9kaWZ5IHRoZSAnQm9vdEZpbGUnIHN0cmluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBkMzJjNWJlNTBiZjA2MDBiZmRjNTQyMjNlZjM0MWVlOWM2M2RiNDQ1CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJTW9uIERlYyAxIDE2OjI2OjIxIDIwMDggLTA2MDAKCiAgICBuZXQ6IEFkZCBhZGRpdGlvbmFsIElQIGZyYWdtZW50YXRpb24gY2hlY2sKCiAgICBJZ25vcmUgSVAgcGFja2V0cyB3aGljaCBoYXZlIHRoZSAibW9yZSBmcmFnbWVudHMiIGZsYWcgYml0CiAgICBzZXQuICBUaGlzIGZsYWcgaW5kaWNhdGVzIHRoZSBJUCBwYWNrZXQgaXMgZnJhZ21lbnRlZCBhbmQKICAgIG11c3QgYmUgaWdub3JlZCBieSBVLUJvb3QuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZTBjMDdiODY4Y2FiNDA1YWI0YjUzMzVhMDI0Nzg5OWJmYzVlYTBiNgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBEZWMgMSAxNjoyNjoyMCAyMDA4IC0wNjAwCgogICAgbmV0OiBEZWZpbmUgSVAgZmxhZyBmaWVsZCB2YWx1ZXMKCiAgICBUaGVzZSBkZWZpbmVzIHdlcmUgcHVsbGVkIGZyb20gdGhlICJBZGQgc2ltcGxlCiAgICBJUC9VRFAgZnJhZ21lbnRhdGlvbiBzdXBwb3J0IiBwYXRjaCBmcm9tIEZyYW5rCiAgICBIYXZlcmthbXAgPGhhdmVyQHZuZXQuaWJtLmNvbT4uCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMjNhZmFiYTY1ZWM1MjA2NzU3ZTU4OWVmMzM0YThiMzgxNjhjMDQ1ZgpBdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KRGF0ZToJVHVlIERlYyAyIDEwOjMxOjA0IDIwMDggKzAxMDAKCiAgICBuZXQ6IHRzZWM6IEZpeCBNYXJ2ZWxsIDg4RTExMjFSIHBoeSBpbml0CgogICAgVGhpcyBwYXRjaCB0cmllcyB0byBlbnN1cmUgdGhhdCBwaHkgaW50ZXJydXB0IHBpbgogICAgd29uJ3QgYmUgYXNzZXJ0ZWQgYWZ0ZXIgYm9vdGluZy4gV2UgZXhwZXJpZW5jZWQKICAgIGZvbGxvd2luZyBpc3N1ZXMgd2l0aCBjdXJyZW50IDg4RTExMjFSIHBoeSBpbml0OgoKICAgIE1hcnZlbGwgODhFMTEyMVIgcGh5IGNhbiBiZSBoYXJkd2FyZS1jb25maWd1cmVkCiAgICB0byBzaGFyZSBNREMvTURJTyBhbmQgaW50ZXJydXB0IHBpbnMgZm9yIGJvdGggcG9ydHMKICAgIFAwIGFuZCBQMSAoZS5nLiBhcyBjb25maWd1cmVkIG9uIHNvY3JhdGVzIGJvYXJkKS4KICAgIFBvcnQgMCBpbnRlcnJ1cHQgcGluIHdpbGwgYmUgc2hhcmVkIGJ5IGJvdGggcG9ydHMKICAgIGluIHN1Y2ggY29uZmlndXJhdGlvbi4gQWZ0ZXIgYm9vdGluZyBMaW51eCBhbmQKICAgIGNvbmZpZ3VyaW5nIGV0aDAgaW50ZXJmYWNlLCBwb3J0IDAgcGh5IGludGVycnVwdHMKICAgIGFyZSBlbmFibGVkLiBBZnRlciByZWJvb3Rpbmcgd2l0aG91dCBwcm9wZXIgZXRoMAogICAgaW50ZXJmYWNlIHNodXRkb3duIHBvcnQgMCBwaHkgaW50ZXJydXB0cyByZW1haW4KICAgIGVuYWJsZWQgc28gYW55IGNoYW5nZSBvbiBwb3J0IDAgKGxpbmsgc3RhdHVzLCBldGMuKQogICAgY2F1c2UgYXNzZXJ0aW9uIG9mIHRoZSBpbnRlcnJ1cHQuIE5vdyBib290aW5nIExpbnV4CiAgICBhbmQgY29uZmlndXJpbmcgZXRoMSBpbnRlcmZhY2Ugd2lsbCBjYXVzZSBwZXJtYW5lbnQKICAgIHBoeSBpbnRlcnJ1cHQgc3Rvcm0gYXMgdGhlIHJlZ2lzdGVyZWQgcGh5IDEgaW50ZXJydXB0CiAgICBoYW5kbGVyIGRvZXNuJ3QgYWNrbm93bGVkZ2UgcGh5IDAgaW50ZXJydXB0cy4gVGhpcwogICAgb2YgY291cnNlIHNob3VsZCBiZSBmaXhlZCBpbiBMaW51eCBkcml2ZXIgdG9vLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDJlNDk3MGQ4MTA5ZDY5MGFkY2Y2MTVkOWUzY2FjN2I1YjJlOGVhZWQKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglUdWUgRGVjIDIgMTI6NTk6NTEgMjAwOCAtMDYwMAoKICAgIG5ldDogRml4IGRvd25sb2FkIGNvbW1hbmQgcGFyc2luZwoKICAgIFdoZW4gQ09ORklHX1NZU19IVVNIX1BBUlNFUiBpcyBkZWZpbmVkIG5ldHdvcmsgZG93bmxvYWQKICAgIGNvbW1hbmRzIHdpdGggMSBhcmd1bWVudCBpbiB0aGUgZm9ybWF0ICd0ZnRwICIvcGF0aC9maWxlIicKICAgIGRvIG5vdCB3b3JrIGFzIGV4cGVjdGVkLiBUaGUgaHVzaCBjb21tYW5kIHBhcnNlciBzdHJpcHMKICAgIHRoZSBxdW90ZXMgZnJvbSAiL3BhdGgvZmlsZSIgd2hpY2ggY2F1c2VzIHRoZSBuZXR3b3JrCiAgICBjb21tYW5kcyB0byBpbnRlcnByZXQgIi9wYXRoL2ZpbGUiIGFzIGFuIGFkZHJlc3MKICAgIGluc3RlYWQgb2YgdGhlIGludGVuZGVkIGZpbGVuYW1lLgoKICAgIFRoZSBwcmV2aW91cyBjaGVjayBmb3IgYSBsZWFkaW5nIHF1b3RlIGluIG5ldGJvb3RfY29tbW9uKCkKICAgIHdhcyByZXBsYWNlZCB3aXRoIGEgY2hlY2sgd2hpY2ggZW5zdXJlcyBvbmx5IHZhbGlkCiAgICBudW1iZXJzIGFyZSB0cmVhdGVkIGFzIGFkZHJlc3Nlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAzYzJjMmY0Mjc5MDUwNDBjMTUxM2QwYzUxZDYzNzY4OWNiYTQ4MzQ2CkF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CkRhdGU6CVRodSBOb3YgMjcgMjI6MzA6MjcgMjAwOCArMDEwMAoKICAgIFJlbW92ZSBub24tYXNjaWkgY2hhcmFjdGVycyBmcm9tIGZhdCBjb2RlCgogICAgVGhpcyBjb2RlIGNvbnRhaW5zIHNvbWUgbm9uLWFzY2lpIGNoYXJhY3RlcnMgaW4gY29tbWVudCBsaW5lcyBhbmQgY29kZS4KICAgIE1vc3QgZWRpdG9ycyBkbyBub3QgZGlzcGxheSB0aG9zZSBjaGFyYWN0ZXJzIHByb3Blcmx5IGFuZCBlZGl0aW5nIHRob3NlCiAgICBmaWxlcyByZXN1bHRzIGFsd2F5cyBpbiBkaWZmcyBhdCB0aGVzZSBwbGFjZXMgd2hpY2ggYXJlIHVzdWFsbHkgbm90IHJlcXVpcmVkCiAgICB0byBiZSBjaGFuZ2VkIGF0IGFsbC4gVGhpcyBpcyBlcnJvciBwcm9uZS4KCiAgICBTbywgcmVtb3ZlIHRob3NlIHdlaXJkIGNoYXJhY3RlcnMgYW5kIHJlcGxhY2UgdGhlbSBieSBub3JtYWwgQy1zdHlsZQogICAgZXF1aXZhbGVudHMgZm9yIHdoaWNoIHRoZSBwcm9wZXIgZGVmaW5lcyB3ZXJlIGFscmVhZHkgaW4gdGhlIGhlYWRlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCBkYzg4OWU4NjUzNTY0OTdkM2U0OTU1NzAxMThjMjI0NWViY2UyNjMxCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE5vdiAyOCAyMDoxNjo1OCAyMDA4ICswODAwCgogICAgODV4eDogZml4IHRoZSB3cm9uZyBERFIgc2V0dGluZ3MgZm9yIE1QQzg1NzJEUwoKICAgIFRoZSBkZWZhdWx0IEREUiBmcmVxIGlzIDQwME1IeiBvciA4MDBNIGRhdGEgcmF0ZSwKICAgIHRoZSBvbGQgc2V0dGluZ3MgaXMgcHVyZSB3cm9uZyBmb3IgdGhlIGRlZmF1bHQgY2FzZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5ZGY1OTUzM2Y3N2RlMjgyOWI0YjY2ZTViNzYyMGUwNGVkYWEzOTFjCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIE5vdiAyNCAxMDoyOToyNiAyMDA4IC0wNjAwCgogICAgODV4eDogaW5pdCBnZCBhcyBlYXJseSBhcyBwb3NzaWJsZQoKICAgIE1vdmVkIHVwIHRoZSBpbml0aWFsaXphdGlvbiBvZiBHRCBzbyBDIGNvZGUgbGlrZSBzZXRfdGxiKCkgY2FuIHVzZQogICAgZ2QtPmZsYWdzIHRvIGRldGVybWluZSBpZiB3ZSd2ZSByZWxvY2F0ZWQgb3Igbm90IGluIHRoZSBmdXR1cmUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYWVkNDYxYWY4MTAxMmEzOThhMjA1ZTliZTY3YWIzNzY2NzQ5MTgzOApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBOb3YgMjQgMTA6Mjk6MjUgMjAwOCAtMDYwMAoKICAgIDg1eHg6IEZpeCByZWxvY2F0aW9uIG9mIENDU1JCQVIKCiAgICBJZiB0aGUgdmlydHVhbCBhZGRyZXNzIGZvciBDQ1NSQkFSIGlzIHRoZSBzYW1lIGFmdGVyIHJlbG9jYXRpb24gYnV0CiAgICB0aGUgcGh5c2ljYWwgYWRkcmVzcyBpcyBjaGFuZ2luZyB3ZSdkIGVuZCB1cCBoYXZpbmcgdHdvIFRMQiBlbnRyaWVzIHdpdGgKICAgIHRoZSBzYW1lIFZBLiAgSW5zdGVhZCB3ZSBuZXcgdXMgdGhlIG5ldyBDQ1NSQkFSIHZpcnQgYWRkcmVzcyArIDRrIGFzIGEKICAgIHRlbXAgdmlydCBhZGRyZXNzIHRvIGFjY2VzcyB0aGUgb2xkIENDU1JCQVIgdG8gcmVsb2NhdGUgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZWExNTRhMTc4MTEzNWQ4MjJlZWRlZTc1NjdjYzE1NjA4OWVhZTkzYwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBOb3YgMjQgMTA6MjU6MTQgMjAwOCAtMDYwMAoKICAgIEZTTDogTW92ZWQgQlJfUEhZU19BRERSIGZvciBsb2NhbGJ1cyB0byBjb21tb24gaGVhZGVyCgogICAgVGhlIEJSX1BIWVNfQUREUiBtYWNybyBpcyB1c2VmdWwgb24gYWxsIG1hY2hpbmVzIHRoYXQgaGF2ZSBsb2NhbCBidXMKICAgIHdoaWNoIGlzIHByZXR0eSBtdWNoIGFsbCA4M3h4Lzg1eHgvODZ4eCBjaGlwcy4KCiAgICBBZGRpdGlvbmFsbHkgbW9zdCA4NXh4ICYgODZ4eCB3aWxsIG5lZWQgaXQgaWYgdGhleSB3YW50IHRvIHN1cHBvcnQKICAgIDM2LWJpdCBwaHlzaWNhbCBhZGRyZXNzZXMuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTQyN2NjZGUwMzU1YTJlYmY0NzQ1NGU4ZTFiZTU5ZjViOTg2NGUwOApBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBEZWMgMSAxMzo0NzoxMiAyMDA4IC0wNjAwCgogICAgODV4eDogQWRkIFBPUkRFVlNSX1BDSTEgZGVmaW5lCgogICAgQWRkIGRlZmluZSB1c2VkIHRvIGRldGVybWluZSBpZiBQQ0kxIGludGVyZmFjZSBpcyBpbiBQQ0kgb3IgUENJWCBtb2RlLgoKICAgIENvbnZlcnQgdXNlcnMgb2YgdGhlIG9sZCBQT1JERVZTUl9QQ0kgY29uc3RhbnQgdG8gdXNlIE1QQzg1eHhfUE9SREVWU1JfUENJMQoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzVkYjFjNmQzNGI1N2FlMTVlOTljZjAzYzhlOGY4YTYxNDhkNzRmMwpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgTm92IDIxIDE5OjI0OjIyIDIwMDggLTA2MDAKCiAgICBkcml2ZXJzL2ZzbF9wY2lfaW5pdDogRml4IGluYm91bmQgd2luZG93IG1hcHBpbmcgYnVnCgogICAgVGhlIGN1cnJlbnQgY29kZSB3aWxsIGNhdXNlIHRoZSBjcmVhdGlvbiBvZiBhIDRHQiB3aW5kb3cKICAgIHN0YXJ0aW5nIGF0IDAgaWYgd2UgaGF2ZSBtb3JlIHRoYW4gNEdCIG9mIFJBTSBpbnN0YWxsZWQsCiAgICB3aGljaCBvdmVybGFwcyB3aXRoIFBDSV9NRU0gc3BhY2UgYW5kIGNhdXNlcyBwY2lfYnVzX3RvX3BoeXMoKQogICAgdG8gcmV0dXJuIGVycm9uZW91cyBpbmZvcm1hdGlvbi4gTGltaXQgdGhlIHNpemUgdG8gNEdCIC0gMTsKICAgIHdoaWNoIGNhdXNlcyB0aGUgY29kZSB0byBjcmVhdGUgb25lIDJHQiBhbmQgb25lIDFHQiB3aW5kb3cKICAgIGluc3RlYWQuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNWExMDVhMzMzZGFiNmEyM2U5MmQ3NjNjZTc2ZDZmMzFkNTdmNDVkZgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBOb3YgMjAgMTU6MzY6NDggMjAwOCAtMDYwMAoKICAgIFJlbW92ZWQgdW51c2VkIENPTkZJR19MMV9JTklUX1JBTSBzeW1ib2wuCgogICAgUHJldmVudCBmdXJ0aGVyIHZpcmFsIHByb3BvZ2F0aW9uIG9mIHRoZSB1bnVzZWQKICAgIHN5bWJvbCBDT05GSUdfTDFfSU5JVF9SQU0gYnkganVzdCByZW1vdmluZyBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3MDA4ZDI2YTQwYTc2ZjkwY2FlNTgyNGM4MTJjZmVkNDQ5ZmI5N2I4CkF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE9jdCAyOSAwOToyMTo0NCAyMDA4IC0wNTAwCgogICAgZnNsIGRkciBza2lwIGludGVybGVhdmluZyBpZiBub3Qgc3VwcG9ydGVkLgoKICAgIFJlbW92ZWQgd2hpbGUoMSkgaGFuZyBpZiBtZW1jdGxfaW50bHZfY3RsIGlzIHNldCB3cm9uZy4KICAgIFJlbW92ZSBlbWJlZGRlZCB0YWJzIGZyb20gc3RyaW5ncy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGRkMzMyZTE4ZDA4MmRlNzVlY2EzZmMyYzdjNzc4ZjVkNDU3MWEwOTYKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CVRodSBOb3YgMTMgMTg6MDg6NTcgMjAwOCArMDEwMAoKICAgIDg1eHg6IHNvY3JhdGVzOiBmaXggRERSIFNEUkFNIHRsYiBlbnRyeSBjb25maWd1cmF0aW9uCgogICAgc2luY2UgY29tbWl0IGJlMGJkODIzNGI5Nzc3ZWNkNjNjNGM2ODZmNzJhZjA3MGQ4ODY1MTcKICAgIHRsYiBlbnRyeSBmb3Igc29jcmF0ZXMgRERSIFNEUkFNIHdpbGwgYmUgcmVjb25maWd1cmVkCiAgICBieSBzZXR1cF9kZHJfdGxicygpIGZyb20gaW5pdGRyYW0oKSBjYXVzaW5nIGFuCiAgICBpbmNvbnNpc3RlbmN5IHdpdGggcHJldmlvdXNseSBjb25maWd1cmVkIEREUiBTRFJBTSB0bGIKICAgIGVudHJ5IGZyb20gdGxiX3RhYmxlOgoKICAgIHNvY3JhdGVzPmwyY2FtIDcgOQogICAgSURYICBQSUQJICBFUE4gIFNJWkUgViBUUwkgICBSUE4gVTAtVTMgV0lNR0UgVVVVU1NTCiAgICAgIDcgOiAwMCAwMDAwMDAwMCAyNTZNQiBWICAwIC0+IDBfMDAwMDAwMDAJMDAwMCAtSS1HLSAtLS1SV1gKICAgICAgOCA6IDAwIDAwMDAwMDAwIDI1Nk1CIFYgIDAgLT4gMF8wMDAwMDAwMAkwMDAwIC0tLS0tIC0tLVJXWAogICAgICA5IDogMDAgMTAwMDAwMDAgMjU2TUIgViAgMCAtPiAwXzEwMDAwMDAwCTAwMDAgLS0tLS0gLS0tUldYCgogICAgVGhpcyBwYXRjaCBtYWtlcyB0aGUgcHJlc2VuY2Ugb2YgdGhlIEREUiBTRFJBTSB0bGIgZW50cnkgaW4KICAgIHRoZSB0bGJfdGFibGUgZGVwZW5kZW50IG9uIENPTkZJR19TUERfRUVQUk9NIHRvIGF2b2lkIHRoaXMKICAgIGluY29uc2lzdGVuY3kuCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhMmNkNTBlZDZlZjBhYzZiMTI3YjNkNmRiNzU2OTc5YTgzMzY3MThkCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJVHVlIE5vdiAxMSAxMDoxNzoxMCAyMDA4IC0wNjAwCgogICAgODV4eDogQWRkIENQVSAyIGVycmF0YSB3b3JrYXJvdW5kIHRvIGFsbCA4NTQ4IGJvYXJkcwoKICAgIEFsbCBtcGM4NTQ4LWJhc2VkIGJvYXJkcyBzaG91bGQgaW1wbGVtZW50IHRoZSBzdWdnZXN0ZWQgd29ya2Fyb3VuZAogICAgdG8gQ1BVIDIgZXJyYXRhLiBXaXRob3V0IHRoZSB3b3JrYXJvdW5kLCBpdHMgcG9zc2libGUgZm9yIHRoZQogICAgODU0OCdzIGNvcmUgdG8gaGFuZyB3aGlsZSBleGVjdXRpbmcgYSBtc3luYyBvciBtYmFyIDAgaW5zdHJ1Y3Rpb24KICAgIGFuZCBhIHNub29wYWJsZSB0cmFuc2FjdGlvbiBmcm9tIGFuIEkvTyBtYXN0ZXIgdGFnZ2VkIHRvIG1ha2UKICAgIHF1aWNrIGZvcndhcmQgcHJvZ3Jlc3MgaXMgcHJlc2VudC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlNTdmMGZhMTMzM2NkZjNjYTM2MTEwYWFjMjkwMDcxMmE1ZjgyOTc2CkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE9jdCAyOCAxNzo1Mzo0NSAyMDA4ICswODAwCgogICAgODV4eDogdGhlIEREUiB0bGIgaXMgbWlzc2VkIGZvciB0aGUgIUNPTkZJR19TUERfRUVQUk9NIGNhc2UKCiAgICB3ZSBuZWVkIFRMQiBlbnRyeSBmb3IgRERSIGF0ICFTUEQgY2FzZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5YjBhZDFiMWM3YTE1ZmY2NzQ5Nzg3MDVjN2M1MjI2NDk3OGRjNWQ4CkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE9jdCAyOCAxNzo1MzozOCAyMDA4ICswODAwCgogICAgODV4eDogcmVtb3ZlIHRoZSB1bnVzZWQgZGRyX2VuYWJsZV9lY2MgaW4gdGhlIGJvYXJkIGZpbGUKCiAgICBUaGUgRERSIGNvbnRyb2xsZXIgb2YgODU0OC84NTQ0Lzg1NjgvODU3Mi84NTM2IHByb2Nlc3NvcnMKICAgIGhhdmUgdGhlIEVDQyBkYXRhIGluaXQgZmVhdHVyZSwgYW5kIHRoZSBuZXcgRERSIGNvZGUgaXMKICAgIHVzaW5nIHRoZSBmZWF0dXJlLCBhbmQgd2UgZG9uJ3QgbmVlZCB0aGUgd2F5IHdpdGggRE1BIHRvCiAgICBpbml0IG1lbW9yeSBhbnkgbW9yZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0YTEyOWE1N2Q5MjNmN2MxNWFhMWY1NjcwMjhhODBhMzJkNjZhMTAwCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIE5vdiAzMCAxOTozNjo1MyAyMDA4ICswMTAwCgogICAgYXQ5MXJtOTIwMGRrOiBGaXggdHlwbwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZWQzYjE4ZTA1YzlhOGZmYTVmYjY0M2RhOWJjZWM3NDUyZTVkNWUwMQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBOb3YgMzAgMTk6MzY6NTAgMjAwOCArMDEwMAoKICAgIEFUOTE6IHJlbW92ZSBub24gc3VwcG9ydGVkIGJvYXJkIEFUOTFSTTkyMDBERiBtYWNybwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYmQ4NzY3NzJlZTA0MDk1ZTVkZDk0M2Q5NzUxNWExZjE0YmFkNGIxYwpBdXRob3I6IElsa28gSWxpZXYgPGlsaWV2QHJvbmV0aXguYXQ+CkRhdGU6CVR1ZSBEZWMgMiAxNzoyNzo1NCAyMDA4ICswMTAwCgogICAgbXRkL2RhdGFmbGFzaC5jOiBmaXggYSBwcm9ibGVtIHdpdGggdGhlIGxhc3QgcGFydGl0aW9uCgogICAgVGhpcyBwYXRjaCBmaXggdGhlIHByb2JsZW0gdGhhdCBvbmx5IHRoZSBbTkJfREFUQUZMQVNIX0FSRUEgLSAxXSBkYXRhZmxhc2gKICAgIHBhcnRpdGlvbiBjYW4gYmUgZGVmaW5lZCB0byB1c2UgdGhlIGFyZWEgdG8gdGhlIGVuZCBvZiBkYXRhZmxhc2ggc2l6ZS4KICAgIE5vdyBpdCBpcyBwb3NzaWJsZSB0byBoYXZlIG9ubHkgb25lIGRhdGFmbGFzaCBwYXJ0aXRpb24gZnJvbSAwIHRvIHRoZSBlbmQKICAgIG9mIG9mIGRhdGFmbGFzaCBzaXplLgoKICAgIFNpZ25lZC1vZmYtYnk6IElsa28gSWxpZXYgPGlsaWV2QHJvbmV0aXguYXQ+Cgpjb21taXQgMDNmNzk3NzkzYjEyNGRjY2FhZTE0NWI5NzdkMTVkNmNiOWU3NDUwNApBdXRob3I6IElsa28gSWxpZXYgPGlsaWV2QHJvbmV0aXguYXQ+CkRhdGU6CVR1ZSBEZWMgMiAxNzoyMDoxNyAyMDA4ICswMTAwCgogICAgZml4IHNvbWUgY29kaW5nIHN0eWxlIHZpb2xhdGlvbnMuCgogICAgVGhpcyBwYXRjaCBmaXggc29tZSBjb2Rpbmcgc3R5bGUgdmlvbGF0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBJbGtvIElsaWV2IDxpbGlldkByb25ldGl4LmF0PgoKY29tbWl0IDVlNDZiMWU1NDExMmY0YjdmZDUxODU2NjVlNTcxNTEwMTMyYzEyYTcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBOb3YgMjcgMTQ6MTE6MzcgMjAwOCArMDEwMAoKICAgIE9uZU5BTkQ6IEFkZCBtaXNzaW5nIG10ZCBpbmZvIHN0cnVjdCBiZWZvcmUgY2FsbGluZyBvbmVuYW5kX2VyYXNlKCkKCiAgICBXaXRob3V0IHRoaXMgcGF0Y2ggInNhdmVlbnYiIGNyYXNoZXMgd2hlbiBNVEQgcGFydGl0aW9ucyBhcmUgZW5hYmxlZCAoZS5nLgogICAgZm9yIHVzZSBpbiBVQkkpIHZpYSBDT05GSUdfTVREX1BBUlRJVElPTlMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjkzODJkNDA2NGZiYWZmNWRhYWNmZjRjMzIwOTM3MGZhNTcxMzk2NgpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTm92IDIwIDE2OjQzOjUyIDIwMDggLTA2MDAKCiAgICBtcGM4NjQxOiBGaXggZXJyb3IgaW4gUkVBRE1FCgogICAgSSBtYWRlIHNvbWUgdXBkYXRlcyB0byB0aGUgY29kZSB0aGF0IGRpZG4ndCBtYWtlIGl0IGludG8gdGhlCiAgICBSRUFETUUgLSBmaXggdGhpcwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDgwMWExOTQ2MTZkOTVlNmZjNDI2YTE3NmQ5NjE1Y2NiZjk4NzZjN2YKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTm92IDIwIDEyOjAxOjAyIDIwMDggLTA2MDAKCiAgICBSZW1vdmVkIHVudXNlZCBDT05GSUdfTDFfSU5JVF9SQU0gc3ltYm9sLgoKICAgIFByZXZlbnQgZnVydGhlciB2aXJhbCBwcm9wb2dhdGlvbiBvZiB0aGUgdW51c2VkCiAgICBzeW1ib2wgQ09ORklHX0wxX0lOSVRfUkFNIGJ5IGp1c3QgcmVtb3ZpbmcgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmNjk4NzM4ZTQ2Y2I0NjFlMjhjMmQ1ODIyOGJiMzRhMmZjZjVhNDc1CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE5vdiAyMCAxNDowMjo1NiAyMDA4IC0wNjAwCgogICAgODZ4eDogRml4IG5vbi02NC1iaXQgY29tcGlsYXRpb24gcHJvYmxlbXMuCgogICAgSW50cm9kdWNpbmcgNjQtYml0ICgzNi1iaXQpIHN1cHBvcnQgZm9yIHRoZSBNUEM4NjQxSFBDTgogICAgZmFpbGVkIHRvIGFjY29tb2RhdGUgdGhlIG90aGVyIHR3byA4Nnh4IGJvYXJkcy4KICAgIEludHJvZHVjZSBkZWZpbml0aW9ucyBmb3IgQ09ORklHX1NZU19DQ1NSQkFSX1BIWVNfe0xPVyxISUdIfQogICAgQ09ORklHX1NZU19DQ1NSX0RFRkFVTFRfREJBVHtVLEx9IGFuZCBDT05GSUdfU1lTX0NDU1JfREVGQVVMVF9JQkFUe1UsTH0KICAgIHdpdGggbm9taW5hbCAzMi1iaXQgdmFsdWVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYmViZmM2ZWYzZWM5OTRjOGUxODc4MzI2OWIxZDhkNDFmOGUzOGFmZApBdXRob3I6IE1pY2hhZWwgVHJpbWFyY2hpIDx0cmltYXJjaGlAZ2FuZGFsZi5zc3N1cC5pdD4KRGF0ZToJV2VkIE5vdiAyNiAxNzo0MDozNyAyMDA4ICswMTAwCgogICAgUmVtb3ZlIG9ic29sZXRlIGNvbW1hbmQgKGFwcGx5IGFmdGUgVVNCIHN0eWxlIHBhdGNoLCA4MCBjaGFycyBzdHJpY3QpCgogICAgUmVtb3ZlIFVTQiBvYnNvbGV0ZSBjb21tbWFuZAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgVHJpbWFyY2hpIDx0cmltYXJjaGlAZ2FuZGFsZi5zc3N1cC5pdD4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQsO2aG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCBkZTM5ZjhjMTlkN2MxMjAxNzI0OGM0OWQ0MzJkY2I4MWRiNjhmNzI0CkF1dGhvcjogTWljaGFlbCBUcmltYXJjaGkgPHRyaW1hcmNoaUBnYW5kYWxmLnNzc3VwLml0PgpEYXRlOglXZWQgTm92IDI2IDE3OjQxOjM0IDIwMDggKzAxMDAKCiAgICBVU0Igc3R5bGUgcGF0Y2gsIDgwIGNoYXJzIHN0cmljdAoKICAgIFVTQiBDb2RlIHN0eWxlIHBhdGNoCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBUcmltYXJjaGkgPHRyaW1hcmNoaUBnYW5kYWxmLnNzc3VwLml0PgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCw7ZobWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IGQxMGM1YTg3Y2I4YWZmYmI0ZDM1YTMxMTM3MDMxNmQ0MzgzZDU5OGUKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglGcmkgTm92IDcgMjI6NDY6MjEgMjAwOCArMDEwMAoKICAgIGRyaXZlcnMvdXNiOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQsO2aG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCAyMDc3ZTM0OGMyYTg0OTAxMDIyYWQ5NTMxMWI0N2I3MDM2MWU2ZGFhCkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBOb3YgMjUgMTA6NDc6MDIgMjAwOCAtMDYwMAoKICAgIE5BTkQ6IEZpeCBtaXNwbGFjZWQgcmV0dXJuIHN0YXRlbWVudCBpbiBuYW5kX3tyZWFkLHdyaXRlfV9za2lwX2JhZCgpLgoKICAgIFRoaXMgY2F1c2VkIHRoZSBvcGVyYXRpb24gdG8gYmUgbmVlZGxlc3NseSByZXBlYXRlZCBpZiB0aGVyZSB3ZXJlCiAgICBubyBiYWQgYmxvY2tzIGFuZCBubyBlcnJvcnMuCgogICAgU2lnbmVkLW9mZi1ieTogVmFsZXJpeSBHbHVzaGtvdiA8Z3Z2QGxzdGVjLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDg5Mjk1MDI4ZTdkOGY3YTUyNGY0ODUzMjgyNzlkNzJmZGIxMDIzODUKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CU1vbiBOb3YgMjQgMTI6MDk6NTAgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogbWwzMDAgcmVtb3ZlIFhpbGlueCBCU1AgZnJvbSBtbDMwMCBmb2xkZXIKCiAgICBUaGlzIEJTUCBzaG91bGQgYmUgb3V0c2lkZSB1LWJvb3Qgc291cmNlIHRyZWUuCiAgICBUaGUgc2Vjb25kIHJlYXNvbiBpcyB0aGF0IHhpbGlueCBwcGM0MDUgd2FzIG1vdmVkIHRvIGdlbmVyaWMgcGxhdGZvcm0uCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDI0ZWVhNjIzZDQ5NzRhMTY5MDI2YTk3NWJhMTJmYjIzZDQ4MTU0YjEKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJTW9uIE5vdiAyNCAxNToxMToxMCAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBSZW1vdmUgdW51c2VkIGZlYXR1cmVzCgogICAgVGhpcyBwYXRjaCBkaXNhYmxlcyBzb21lIHVudXNlZCBmZWF0dXJlcyBmcm9tIHRoZSBQQ0k0MDUgY29uZmlndXJhdGlvbgogICAgdG8ga2VlcCBVLUJvb3QgaW1hZ2Ugc2l6ZSBiZWxvdyAxOTJrLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDBjMjM4NWMzYmI1MWY1ZDM5MTFmY2UxZWM0NzIwZGI4NmI1MzRjMmIKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJTW9uIE5vdiAyNCAxNToxMTowOSAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBVc2UgY29ycmVjdCBpbyBhY2Nlc3NvcnMgZm9yIFBDSTQwNQoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDM0OGM4NDlkODZhNmYwNzg1NzUyYjliYzQ5N2EzNDY1ODcxM2QxZDEKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJTW9uIE5vdiAyNCAxNToxMTowOCAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBSZW1vdmUgdW51c2VkIGNvZGUgZnJvbSBQQ0k0MDUgY29kZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDYzMzYzOTU4N2UzNTk2ZjBkYmY1ZTYyNDdkZDNmYWY4MGIxZDkwNjMKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVGh1IE5vdiAyMCAwOTo1OTowOSAyMDA4ICswMTAwCgogICAgcG93ZXJwYywga2V5bWlsZSBib2FyZHM6IGV4dHJhY3QgaWRlbnRpY2FsIGNvbmZpZyBvcHRpb25zCgogICAgVGhpcyBwYXRjaCBleHRyYWN0cyB0aGUgaWRlbnRpY2FsIGNvbmZpZyBvcHRpb25zIGZvciB0aGUKICAgIGtleW1pbGUgYm9hcmRzIG1nY29nZSwgbWdzdXZkIGFuZCBrbWV0ZXIxIGluIGEgbmV3CiAgICBjb21tb24gY29uZmlnIGZpbGUga2V5bWlsZS1jb21tb24uaC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTQ4MmE4ZTNkNmFjNzY2ZDkwZTUwNTlkY2U3NzdiMWU0Yzg2OGEzMApBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglGcmkgTm92IDIxIDA4OjI5OjQwIDIwMDggKzAxMDAKCiAgICBwb3dlcnBjOiBrZXltaWxlOiBBZGQgYSBjaGVjayBmb3IgdGhlIFBJR0dZIGRlYnVnIGJvYXJkCgogICAgQ2hlY2sgdGhlIHByZXNlbmNlIG9mIHRoZSBQSUdHWSBvbiB0aGUga2V5bWlsZSBib2FyZHMgbWdjb2dlLAogICAgbWdzdXZkIGFuZCBrbWV0ZXIxLiBJZiB0aGUgUElHR1kgaXMgbm90IHByZXNlbnQsIGRvbnQgcmVnaXN0ZXIKICAgIHRoaXMgRXRoZXJuZXQgZGV2aWNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1OGM2OTZlZWQ4MzlhZjg5NGUwMjY1MDY0NjY5YzQwMmRjMjhiMzcxCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAeHBlcnQuZGVueC5kZT4KRGF0ZToJTW9uIE5vdiAyNCAyMTo1MDo1OSAyMDA4ICswMTAwCgogICAgQVQ5MVJNOTIwMERLOiBmaXggYnJva2VuIGJvb3QgZnJvbSBOT1IgZmxhc2gKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDgwNTIzNTJmMjBiMzNiZWY4Zjk4NzJmYzk4M2VhYzczZDQ2OTNjMzgKQXV0aG9yOiBKZW5zIFNjaGFyc2lnIDxlc3dAYnVzLWVsZWt0cm9uaWsuZGU+CkRhdGU6CVR1ZSBOb3YgMTggMTA6NDg6NDYgMjAwOCArMDEwMAoKICAgIGF0OTFybTkyMDA6IGZpeCBicm9rZW4gYm9vdCBmcm9tIG5vciBmbGFzaAoKICAgIFRoaXMgcGF0Y2ggZml4IHRoZSBicm9rZW4gYm9vdCBmcm9tIE5PUiBGbGFzaCBvbiBBVDkxUk05MjAwIGJvYXJkcywgaWYKICAgIENPTkZJR19BVDkxUk05MjAwIGlzIGRlZmluZWQgYW5kIG5vciBwcmVsb2FkZXIgaXMgdXNlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZW5zIFNjaGFyc2lnIDxlc3dAYnVzLWVsZWt0cm9uaWsuZGU+Cgpjb21taXQgMjVlYTY1MmU5MDc1MTZhMjgzYjM4MjM3ZTgzNzEyYTkxOGYxMjVkNwpBdXRob3I6IFBpb3RyIFppZWNpayA8a29zbW9Ac2VtaWhhbGYuY29tPgpEYXRlOglNb24gTm92IDE3IDE1OjU4OjAwIDIwMDggKzAxMDAKCiAgICBVQkk6IEFkZCBwcm9vZi1vZi1jb25jZXB0IENGSSBmbGFzaCBzdXBwb3J0CgogICAgV2l0aCB0aGlzIHBhdGNoIFVCSSBjYW4gYmUgdXNlZCBvbiBDRkkgZmxhc2ggY2hpcHMuCgogICAgU2lnbmVkLW9mZi1ieTogUGlvdHIgWmllY2lrIDxrb3Ntb0BzZW1paGFsZi5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZTZhN2VkYmMxNzc4ZDI3NDMxYWM2NjNiNDBhNzFkYWZhNWQyMDU3OApBdXRob3I6IFBpb3RyIFppZWNpayA8a29zbW9Ac2VtaWhhbGYuY29tPgpEYXRlOglNb24gTm92IDE3IDE1OjU3OjU5IDIwMDggKzAxMDAKCiAgICBtdGQ6IFJlbW92ZSBhIHByaW50ZigpIGZyb20gYWRkX210ZF9kZXZpY2UoKS4KCiAgICBSZW1vdmUgYSBwcmludGYoKSBmcm9tIGFkZF9tdGRfZGV2aWNlKCksIHdoaWNoIHByb2R1Y2VzIHNwdXJpb3VzIG91dHB1dC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQaW90ciBaaWVjaWsgPGtvc21vQHNlbWloYWxmLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5MTgwOWVkNTFkODMyN2E4ZGJiZjI5YWE5OGEwOTExNTRjMjgyMTcxCkF1dGhvcjogUGlvdHIgWmllY2lrIDxrb3Ntb0BzZW1paGFsZi5jb20+CkRhdGU6CU1vbiBOb3YgMTcgMTU6NTc6NTggMjAwOCArMDEwMAoKICAgIGNmaS1tdGQ6IEFkZCBjZmktbXRkIGRyaXZlci4KCiAgICBBZGQgY2ZpLW10ZCBkcml2ZXIsIHdoaWNoIGV4cG9ydHMgQ0ZJIGZsYXNoIHRvIE1URCBsYXllci4KICAgIFRoaXMgYWxsb3dzIENGSSBmbGFzaCBkZXZpY2VzIHRvIGJlIHVzZWQgZnJvbSBNVEQgbGF5ZXIuCgogICAgQnVpbGRpbmcgb2YgdGhlIG5ldyBkcml2ZXIgaXMgY29udHJvbGxlZCBieSBDT05GSUdfRkxBU0hfQ0ZJX01URAogICAgb3B0aW9uLiBJbml0aWFsaXphdGlvbiBpcyBkb25lIGJ5IGNhbGxpbmcgY2ZpX210ZF9pbml0KCkgZnJvbQogICAgZmxhc2hfaW5pdCgpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBpb3RyIFppZWNpayA8a29zbW9Ac2VtaWhhbGYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDZlYTgwOGVmZGY5YWE1ZDkwNjdmYmZhYzMyYWNkZTg1MzkxMjllZDIKQXV0aG9yOiBQaW90ciBaaWVjaWsgPGtvc21vQHNlbWloYWxmLmNvbT4KRGF0ZToJTW9uIE5vdiAxNyAxNTo0OTozMiAyMDA4ICswMTAwCgogICAgY2ZpX2ZsYXNoOiBBZGQgaW50ZXJmYWNlIGZvciBmbGFzaCB2ZXJib3NpdHkgY29udHJvbAoKICAgIEFkZCBpbnRlcmZhY2UgZm9yIGZsYXNoIHZlcmJvc2l0eSBjb250cm9sLiBJdCBhbGxvd3MKICAgIHRvIGRpc2FibGUgb3V0cHV0IGZyb20gbG93LWxldmVsIGZsYXNoIEFQSS4gSXQgaXMgdXNlZnVsCiAgICB3aGVuIGNhbGxpbmcgdGhlc2UgbG93LWxldmVsIGZ1bmN0aW9ucyBmcm9tIGNvbnRleHQgb3RoZXIKICAgIHRoYW4gZmxhc2ggY29tbWFuZHMgKGZvciBleGFtcGxlIHRoZSBNVEQvQ0ZJIGludGVyZmFjZQogICAgaW1wbG1lbnRhdGlvbikuCgogICAgU2lnbmVkLW9mZi1ieTogUGlvdHIgWmllY2lrIDxrb3Ntb0BzZW1paGFsZi5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZWJjOTc4NGNlNjUyODM4NWJiOGQyNTU4ZTc4MzYyMmQ0YmJmMjBmOApBdXRob3I6IFBpb3RyIFppZWNpayA8a29zbW9Ac2VtaWhhbGYuY29tPgpEYXRlOglUaHUgTm92IDIwIDE1OjE3OjM4IDIwMDggKzAxMDAKCiAgICBjZmlfZmxhc2g6IEV4cG9ydCBmbGFzaF9zZWN0b3Jfc2l6ZSgpIGZ1bmN0aW9uLgoKICAgIEV4cG9ydCBmbGFzaF9zZWN0b3Jfc2l6ZSgpIGZ1bmN0aW9uIGZyb20gZHJpdmVycy9tdGQvY2ZpX2ZsYXNoLmMsCiAgICBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGluIHRoZSB1cGNvbWluZyBjZmktbXRkIGRyaXZlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQaW90ciBaaWVjaWsgPGtvc21vQHNlbWloYWxmLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0NWFhNWE3ZjRkNWJjYjc5OTI3ZGRmYzg5NmMxZDdjNDMyNmUyMzVkCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gTm92IDE3IDE0OjQ1OjIyIDIwMDggKzAxMDAKCiAgICBjZmlfZmxhc2g6IE1ha2UgYWxsIGZsYXNoIGFjY2VzcyBmdW5jdGlvbnMgd2VhawoKICAgIFRoaXMgcGF0Y2ggZGVmaW5lcyBhbGwgZmxhc2ggYWNjZXNzIGZ1bmN0aW9ucyBhcyB3ZWFrIHNvIHRoYXQKICAgIHRoZXkgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYm9hcmQgc3BlY2lmaWMgdmVyc2lvbnMuCgogICAgVGhpcyB3aWxsIGJlIHVzZWQgYnkgdGhlIHVwY29taW5nIFZDVEggYm9hcmQgc3VwcG9ydCB3aGVyZSB0aGUgTk9SCiAgICBGTEFTSCB1bmZvcnR1bmF0ZWx5IGNhbid0IGJlIGFjY2Vzc2VkIG1lbW9yeS1tYXBwZWQuIFNwZWNpYWwKICAgIGFjY2Vzc29yIGZ1bmN0aW9ucyBhcmUgbmVlZGVkIGhlcmUuCgogICAgVG8gZW5hYmxlIHRoaXMgd2VhayBmdW5jdGlvbnMgeW91IG5lZWQgdG8gZGVmaW5lCiAgICBDT05GSUdfQ0ZJX0ZMQVNIX1VTRV9XRUFLX0FDQ0VTU09SUyBpbiB5b3VyIGJvYXJkIGNvbmZpZyBoZWFkZXIuCiAgICBPdGhlcndpc2UgdGhlICJvbGQiIGRlZmF1bHQgZnVuY3Rpb25zIHdpbGwgYmUgdXNlZCByZXN1bHRpbmcKICAgIGluIHNtYWxsZXIgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBBY2tlZC1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGE1YzQwNjcwMTc2MzFkOTAzZTFhZmE2YWQ2MTVmMGNlMTlmZWE1MTcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBOb3YgMjQgMDg6MzE6MTYgMjAwOCArMDEwMAoKICAgIFVCSTogQ2hhbmdlIHBhcnNpbmcgb2Ygc2l6ZSBpbiBjb21tYW5kcyB0byBkZWZhdWx0IHRvIGhleAoKICAgIEN1cnJlbnRseSB0aGUgc2l6ZSBwYXJhbWV0ZXJzIG9mIHRoZSBVQkkgY29tbWFuZHMgKGUuZy4gInViaSB3cml0ZSIpIGFyZQogICAgZGVjb2RlZCBhcyBkZWNpbWFsIGluc3RlYWQgb2YgaGV4IGFzIGRlZmF1bHQuIFRoaXMgcGF0Y2ggbm93IGludGVycHJldHMKICAgIGFsbCB0aGVzZSB2YWx1ZXMgY29uc2lzdGFudGx5IGFzIGhleCwgYXMgYWxsIG90aGVyIHN0YW5kYXJkIFUtQm9vdCBjb21tYW5kcwogICAgZG8uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGRlMDFjNzZjM2NjYzRlNmM1OTg5MjI4ZWVkNThlOTU1YTNhMWE5NjgKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBOb3YgMjEgMTM6MDY6MDYgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogTUwyIHNob3VsZG4ndCBpbmNsdWRlIHRoZSA0eHggRU1BQyBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMWE2YTAwZGNjNWJkZmM2ZTliNGIwMGYzOWMxZjU4M2E3Zjk2ZmM3ZgpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KRGF0ZToJRnJpIE5vdiAxNCAxNjoxOToxOSAyMDA4ICswMzAwCgogICAgcHBjNHh4OiBrYXRtYWk6IENoYW5nZSBkZWZhdWx0IGNvbmZpZwoKICAgICBUaGlzIHBhdGNoIGVuYWJsZXMgc3VwcG9ydCBmb3IgRVhUMiwgYW5kIGluY3JlYXNlcyB0aGUKICAgIENPTkZJR19TWVNfQk9PVE1BUFNaIHNpemUgZm9yIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24KICAgIG9mIHRoZSBrYXRtYWkgYm9hcmRzIHRvIHVzZSB0aGVtIGFzIHRoZSBSQUlELXJlZmVyZW5jZQogICAgQU1DQyBzZXR1cHMuCgogICAgIEVYVDIgZW5hYmxpbmcgYWxsb3dzIG9uZSB0byBib290IGtlcm5lbHMgZnJvbSB0aGUgRVhUMgogICAgZm9ybWF0dGVkIENvbXBhY3QgRmxhc2ggY2FyZHMuCgogICAgIENPTkZJR19TWVNfQk9PVE1BUFNaIGluY3JlYXNpbmcgYWxsb3dzIG9uZSB0byBib290IHRoZQogICAgTGludXgga2VybmVscywgd2hpY2ggdXNlIFBBR0VfU0laRSBvZiAyNTZLQi4gT3RoZXJ3aXNlLAogICAgdGhlIG1lbW9yeSBhcmVhIHdpdGggRFRCIGZpbGUgKHdoaWNoIGlzIHBsYWNlZCBhdCB0aGUKICAgIGVuZCBvZiB0aGUgYm9vdG1hcCBhcmVhKSB3aWxsIHR1cm4gb3V0IHRvIGJlIG92ZXJsYXBwZWQKICAgIHdpdGggdGhlIEJTUyBzZWdtZW50IG9mIHRoZSAyNTZLQiBrZXJuZWwsIGFuZCB6ZXJvZWQKICAgIGluIGVhcmx5X2luaXQoKSBvZiBMaW51eC4KCiAgICAgQWN0dWFsbHksIGluY3JlYXNpbmcgb2YgdGhlIGJvb3RtYXAgc2l6ZSBjb3VsZCBiZSBkb25lCiAgICB2aWEgc2V0dGluZyBvZiB0aGUgYm9vdG1fc2l6ZSBVLUJvb3QgdmFyaWFibGUsIGJ1dCBpdCBsb29rcwogICAgbGlrZSB0aGUgY3VycmVudCBVLUJvb3QgaW1wbGVtZW50YXRpb24gaGF2ZSBzb21lIGJvb3RtX3NpemUtCiAgICByZWxhdGVkIGZ1bmN0aW9uYWxpdHkgbG9zdC4gSW4gbWFueSBwbGFjZXMgdGhyb3VnaCB0aGUgVS1Cb290CiAgICBjb2RlIHRoZSBDT05GSUdfU1lTX0JPT1RNQVBTWiBkZWZpbml0aW9uIGlzIHVzZWQgZGlyZWN0bHkKICAgIChpbnN0ZWFkIG9mIHRyeWluZyB0byByZWFkIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGZyb20gdGhlCiAgICBlbnZpcm9ubWVudCkuIFRoZSBzYW1lIGlzIHRydXRoIGZvciB0aGUgYm9vdF9qdW1wX2xpbnV4KCkKICAgIGZ1bmN0aW9uIGluIGxpYl9wcGMvYm9vdG0uYywgd2hlcmUgVS1Cb290IHRyYW5zZmVycyBjb250cm9sCiAgICB0byBMaW51eCBwYXNzaW5nIHRoZSBDT05GSUdfU1lTX0JPT1RNQVBTWiAobm90IGJvb3RtX3NpemUpCiAgICB2YWx1ZSB0byB0aGUgYm9vdGluZyBrZXJuZWwuCgogICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZGRmNDVjYzc1OGQzOTQ1OTFmYjliY2RjYmU5NjUzMGY3MzNmMmJjZQpBdXRob3I6IERhdmUgTWl0Y2hlbGwgPGRtaXRjaDcxQGdtYWlsLmNvbT4KRGF0ZToJVGh1IE5vdiAyMCAxNDowOTo1MCAyMDA4IC0wNjAwCgogICAgcHBjNHh4OiBDaGFuZ2VkIDQ2MEVYL0dUIE9DTSBUTEIgYW5kIGludGVybmFsIFNSQU0gaW5pdGlhbGl6YXRpb24KCiAgICBFeHBhbmRlZCBPQ00gVExCIHRvIGFsbG93IGFjY2VzcyB0byA2NEsgT0NNIGFzIHdlbGwgYXMgMjU2SyBvZgogICAgaW50ZXJuYWwgU1JBTS4KCiAgICBBZGp1c3RlZCBpbnRlcm5hbCBTUkFNIGluaXRpYWxpemF0aW9uIHRvIG1hdGNoIHVwZGF0ZWQgdXNlcgogICAgbWFudWFsIHJlY29tbWVuZGF0aW9uLgoKICAgIE9DTSAmIElTUkFNIGFyZSBub3cgbWFwcGVkIGFzIGZvbGxvd3M6CgkgICAgcGh5c2ljYWwJICAgIHZpcnR1YWwJICAgIHNpemUKICAgIElTUkFNICAgMHg0XzAwMDBfMDAwMCAgIDB4RTMwMF8wMDAwICAgICAyNTZrCiAgICBPQ00gICAgIDB4NF8wMDA0XzAwMDAgICAweEUzMDRfMDAwMCAgICAgNjRrCgogICAgQSBzaW5nbGUgVExCIHdhcyB1c2VkIGZvciB0aGlzIG1hcHBpbmcuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBNaXRjaGVsbCA8ZG1pdGNoNzFAZ21haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGIxNGNhNGI2MWE2ODFmNzVmMzEyNTY3NmUwOWQ3Y2U2YWY2NmU5MjcKQXV0aG9yOiBEYXZlIE1pdGNoZWxsIDxkbWl0Y2g3MUBnbWFpbC5jb20+CkRhdGU6CVRodSBOb3YgMjAgMTQ6MDA6NDkgMjAwOCAtMDYwMAoKICAgIHBwYzR4eDogQWRkZWQgcHBjNHh4LWlzcmFtLmggZm9yIGludGVybmFsIFNSQU0gYW5kIEwyIGNhY2hlIERDUnMKCiAgICBBZGRlZCBpbmNsdWRlL2FzbS1wcGMvcHBjNHh4LWlzcmFtLmggYW5kIG1vdmVkIGludGVybmFsIFNSQU0gYW5kCiAgICBMMiBjYWNoZSBEQ1JzIGZyb20gcHBjNDQwLmggdG8gdGhpcyBuZXcgaGVhZGVyLgoKICAgIEFsc28gY29udmVydGVkIHRoZXNlIERDUiBkZWZpbmVzIGZyb20gbG93ZXJjYXNlIHRvIHVwcGVyY2FzZSBhbmQKICAgIG1vZGlmaWVkIHJlZmVyZW5jaW5nIG1vZHVsZXMgdG8gdXNlIHRoZW0uCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBNaXRjaGVsbCA8ZG1pdGNoNzFAZ21haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDcxMWUyYjJhZjgyMGQyMWQ5OTMxZDRjZjgwNTdkMzg5NDYwMGZkNTQKQXV0aG9yOiBTdGV2ZW4gQS4gRmFsY28gPHNmYWxjb0BoYXJyaXMuY29tPgpEYXRlOglUaHUgTm92IDIwIDE0OjM3OjU3IDIwMDggLTA1MDAKCiAgICBwcGM0eHg6IERlbGV0ZSB1bnVzZWQgZGVmaW5pdGlvbnMgZm9yIFNEUjBfRERSQ0ZHIGZyb20gcHBjNHh4LmgKCiAgICBUaGUgZGVmaW5pdGlvbnMgb2YgYml0cyBpbiBTRFJfQ0ZHIGFyZSBpbmNvcnJlY3QsIGFuZCBub3QgdXNlZCB3aXRoaW4KICAgIFUtQm9vdC4gIFRoZXJlZm9yZSwgdGhleSBjYW4gYmUgcmVtb3ZlZC4KCiAgICBUaGUgbmFtaW5nIG9mIHRoZSBzZHJfZGRyZGwvc2RyX2NmZyByZWdpc3RlcnMgZG8gbm90IGZvbGxvdyBjb252ZW50aW9ucywKICAgIGFuZCBhcmUgdW51c2VkLCBzbyB0aGV5IGNhbiBiZSByZW1vdmVkIHRvby4KCiAgICBBIGRlZmluaXRpb24gZm9yIFNEUjBfRERSQ0ZHIGlzIGFkZGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZXZlbiBBLiBGYWxjbyA8c2ZhbGNvQGhhcnJpcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZTIzYzdjOTVhOTZlYjBmMDY4ZWZlNWM1MzIyMTVhMTBhMTUxMmE5NQpBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ21haWwuY29tPgpEYXRlOglNb24gTm92IDEwIDIwOjE1OjI1IDIwMDggKzAxMDAKCiAgICBBUk06IE9NQVA6IENvbnZlcnQgSU8gbWFjcm9zCgogICAgQ29udmVydCBJTyBtYWNyb3MgdG8gcmVhZHgvd3JpdGV4LgoKICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ21haWwuY29tPgoKY29tbWl0IDI2M2I3NDllMmUyNTQ3M2E0ODc3NmQzMTdiZDJhN2UyZGRjZGQyMTIKQXV0aG9yOiBJbGtvIElsaWV2IDxpbGlldkByb25ldGl4LmF0PgpEYXRlOglTdW4gTm92IDkgMTU6NTM6MTQgMjAwOCArMDEwMAoKICAgIGxpYl9hcm06IGRvX2Jvb3RtX2xpbnV4KCkgLSBjb3JyZWN0IGEgc21hbGwgbWlzdGFrZQoKICAgIFRoaXMgcGF0Y2ggY29ycmVjdHMgYSBzbWFsbCBidWcgaW4gdGhlICJpZiIgY29uZGl0aW9uOgogICAgdGhlIHBhcmFtZXRlciAiZmxhZyIgaXMgMCBhbmQgdGhlICJpZiIgY29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlLgogICAgVGhlIHJlc3VsdCBpcyAtIHRoZSBib29tIGNvbW1hbmQgZG9lc24ndCBzdGFydCB0aGUga2VybmVsLgogICAgQWZmZWN0ZWQgdGFyZ2V0czogYWxsIGFybSBiYXNlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBJbGtvIElsaWV2IDxpbGlldkByb25ldGl4LmF0PgoKY29tbWl0IDNlMGNkYTA3MWE2N2NiNTcwOWUzZmE0ZmFmNmIzMWE3MzE4NTlhY2MKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglTdW4gTm92IDkgMDA6MTQ6NDYgMjAwOCArMDEwMAoKICAgIEFUOTE6IEVuYWJsZSBQTExCIGZvciBVU0IKCiAgICBBdCBsZWFzdCBzb21lIChvbGQgPykgdmVyc2lvbnMgb2YgdGhlIEFUOTFCb290c3RyYXAgZG8gbm90IHNldCB1cCB0aGUKICAgIFBMTEIgY29ycmVjdGx5IHRvIDQ4IE1IeiBpbiBvcmRlciB0byBtYWtlIFVTQiBob3N0IGZ1bmN0aW9uIGNvcnJlY3RseS4KCiAgICBUaGlzIHBhdGNoIHNldHMgdXAgdGhlIFBMTEIgdG8gdGhlIHNhbWUgdmFsdWVzIExpbnV4IHVzZXMsIGFuZCBtYWtlcyBVU0IKICAgIHdvcmsgb2sgb24gdGhlIGZvbGxvd2luZyBDUFVzOgoJLSBBVDkxQ0FQOQoJLSBBVDkxU0FNOTI2MAoJLSBBVDkxU0FNOTI2MwoKICAgIFRoaXMgcGF0Y2ggYWxzbyBkZWZpbmVzIENPTkZJR19VU0JfU1RPUkFHRSBhbmQgQ09ORklHX0NNRF9GQVQgZm9yIGFsbAogICAgdGhlIHJlbGV2YW50IEFUOTFDQVA5L0FUOTFTQU05IGF0bWVsIGJvYXJkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBhZDIyOWE0NGUxNjJhZjBmNjVlNTdlNGUzZGMxMzNkNWYwMzY0ZWNiCkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJRnJpIE5vdiA3IDEzOjU1OjE0IDIwMDggKzAxMDAKCiAgICBBVDkxOiBVc2UgQVQ5MV9DUFVfQ0xPQ0sgaW4gZGlzcGxheXMKCiAgICBJbnRyb2R1Y2UgQVQ5MV9DUFVfQ0xPQ0sgYW5kIHVzZSBpdCBmb3IgZGlzcGxheWluZyB0aGUgQ1BVCiAgICBzcGVlZCBpbiB0aGUgTENEIGRyaXZlci4KCiAgICBBbHNvIG1ha2UgQVQ5MV9NQUlOX0NMT0NLIGFuZCBBVDkxX01BU1RFUl9DTE9DSyByZWZsZWN0IHRoZQogICAgY29ycmVzcG9uZGluZyBib2FyZCBjbG9ja3MuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KCmNvbW1pdCBmZWQzNmFjNWFlNjEzNzczYjZjZDkwZTYxZTI5MmM0NTQ0MGUxMGM4CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVRodSBOb3YgMjAgMDk6NTc6NDcgMjAwOCArMDEwMAoKICAgIHBvd2VycGM6IDgzeHg6IGFkZCBzdXBwb3J0IGZvciB0aGUga21ldGVyMSBib2FyZAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUga21ldGVyMSBib2FyZCBmcm9tIEtleW1pbGUsCiAgICBiYXNlZCBvbiBhIEZyZWVzY2FsZSBNUEM4MzYwIENQVS4KCiAgICAtIHNlcmlhbCBjb25zb2xlIG9uIFVBUlQgMQogICAgLSAyNTYgTUIgRERSMiBSQU0KICAgIC0gNjQgTUIgTk9SIEZsYXNoCiAgICAtIEV0aGVybmV0IFJNSUkgTW9kZSBvdmVyIFVDQzQKICAgIC0gUEhZIFNNU0MgTEFOODcwMAoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyNWZiNGVhYWVhYjNmODg2NjAyMDgxOGY0NzI5ZDk5MGRjYzkxY2YwCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgTm92IDIwIDExOjQ2OjIwIDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IENsZWFyIGFsbCBwb3RlbnRpYWxseSBwZW5kaW5nIGV4Y2VwdGlvbnMgaW4gTUNTUgoKICAgIFRoaXMgaXMgbmVlZGVkIG9uIENhbnlvbmxhbmRzIHdoaWNoIHN0aWxsIGhhcyBhbiBleGNlcHRpb24gcGVuZGluZwogICAgd2hpbGUgcnVubmluZyByZWxvY2F0ZV9jb2RlKCkuIFRoaXMgbGVhZHMgdG8gYSBmYWlsdXJlIGFmdGVyIHRyYXBfaW5pdCgpCiAgICBpcyBtb3ZlZCB0byB0aGUgdG9wIG9mIGJvYXJkX2luaXRfcigpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmYWNkYWQ1ZjI2MDJlODk5YTAxNzQ2OTE2YmVkZGJmOWU4NTZiNWVlCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVdlZCBOb3YgMTkgMTA6MTA6MzAgMjAwOCArMDEwMAoKICAgIHBvd2VycGM6IDgzeHg6IGFkZCBtaXNzaW5nIFRJTUlOR19DRkcxX0NBU0xBVF8qIGRlZmluZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMmYyYTVjMzcxNGQxN2Y0ZWFkMThiNzEzMTI4YjcyMjZlMGU4MjJmNApBdXRob3I6IEhvd2FyZCBHcmVnb3J5IDxHcmVnLkhvd2FyZEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgTm92IDQgMTQ6NTU6MzMgMjAwOCArMDgwMAoKICAgIG1wYzgzeHg6IEltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIEREUiBtZW1vcnkKCiAgICBtb2RpZnkgdGhlIENBUyB0aW1pbmdzLiBteSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhlc2UKICAgIHNldHRpbmdzIGRlY3JlYXNlIHZhcmlvdXMgd2FpdCB0aW1lcyBpbiB0aGUgRERSIGludGVyZmFjZS4KICAgIEJlY2F1c2UgdGhlc2Ugd2FpdCB0aW1lcyBhcmUgaW4gY2xvY2sgY3ljbGVzLCBhbmQgdGhlIEREUgogICAgY2xvY2sgb24gdGhlIDgzMTUgUkRCIHJ1bnMgc2xvd2VyIHRoYW4gb24gc29tZSBvdGhlciA4M3h4CiAgICBwbGF0Zm9ybXMsIHdlIGNhbiBkaWFsIGRvd24gdGhlc2UgdmFsdWVzIHdpdGhvdXQgYSBwcm9ibGVtLAogICAgdGhlcmVieSBkZWNyZWFzaW5nIHRoZSBsYXRlbmN5IG9mIG1lbW9yeSBhIGxpdHRsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIb3dhcmQgR3JlZ29yeSA8R3JlZy5Ib3dhcmRAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDgwMDBiMDg2YjMzYTVhODFmM2YzOTBmMzdlMTc4ZGI3OTU2ZGMwOGIKQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgpEYXRlOglGcmkgT2N0IDI0IDE0OjU1OjMzIDIwMDggKzAyMDAKCiAgICBBUk06IEFkZCBBcG9sbG9uIFVCSSBzdXBwb3J0CgogICAgVG8gZW5hYmxlIFVCSSBvbiBBcG9sbG9uIHlvdSBuZWVkIHRvIHVuY29tbWVudCB0aGUgQ09ORklHX1NZU19VU0VfVUJJCiAgICBtYWNyby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDY5NGEwYjNmMWMwYWNjZDBkZTk0Yjg5NTU1MTU1ZDY5ZjgwMjI4MjQKQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgpEYXRlOglXZWQgTm92IDE5IDExOjQ3OjA1IDIwMDggKzAxMDAKCiAgICBVQkk6IEFkZCBVQkkgY29tbWFuZCBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBhZGRzIHRoZXNlIFVCSSBjb21tYW5kczoKCiAgICB1YmkgcGFydCBbbmFuZHxvbmVuYW5kXSBbcGFydF0gLSBTaG93IG9yIHNldCBjdXJyZW50IHBhcnRpdGlvbgogICAgdWJpIGluZm8gW2xbYXlvdXRdXSAtRGlzcGxheSB2b2x1bWUgYW5kIFVCSSBsYXlvdXQgaW5mb3JtYXRpb24KICAgIHViaSBjcmVhdGVbdm9sXSB2b2x1bWUgW3NpemVdIFt0eXBlXSAtIENyZWF0ZSB2b2x1bWUgbmFtZSB3aXRoIHNpemUKICAgIHViaSB3cml0ZVt2b2xdIGFkZHJlc3Mgdm9sdW1lIHNpemUgLSBXcml0ZSB2b2x1bWUgZnJvbSBhZGRyZXNzIHdpdGggc2l6ZQogICAgdWJpIHJlYWRbdm9sXSBhZGRyZXNzIHZvbHVtZSBbc2l6ZV0gLSBSZWFkIHZvbHVtZSB0byBhZGRyZXNzIHdpdGggc2l6ZQogICAgdWJpIHJlbW92ZVt2b2xdIHZvbHVtZSAtIFJlbW92ZSB2b2x1bWUKCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDU4YmUzYTEwNTZkODhjNmQwNWYzZTkxNDM4OTI4MjgwN2U2OTkyM2EKQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgpEYXRlOglXZWQgTm92IDE5IDE2OjM4OjI0IDIwMDggKzAxMDAKCiAgICBVQkk6IEFkZCBiYXNpYyBVQkkgc3VwcG9ydCB0byBVLUJvb3QgKFBhcnQgOC84KQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBiYXNpYyBVQkkgKFVuc29ydGVkIEJsb2NrIEltYWdlKSBzdXBwb3J0IHRvIFUtQm9vdC4KICAgIEl0J3MgYmFzZWQgb24gdGhlIExpbnV4IFVCSSB2ZXJzaW9uIGFuZCBiYXNpY2FsbHkgaGFzIGEgIk9TIgogICAgdHJhbnNsYXRpb24gd3JhcHBlciB0aGF0IGRlZmluZXMgbW9zdCBMaW51eCBzcGVjaWZpYyBjYWxscwogICAgKHNwaW5fbG9jaygpIGV0Yy4pIGludG8gbm8tb3BzLiBTb21lIHNvdXJjZSBjb2RlIHBhcnRzIGhhdmUgYmVlbgogICAgdW5jb21tZW50ZWQgYnkgIiNpZmRlZiBVQklfTElOVVgiLiBUaGlzIG1ha2VzIGl0IGVhc2llciB0byBjb21wYXJlCiAgICB0aGlzIHZlcnNpb24gd2l0aCB0aGUgTGludXggdmVyc2lvbiBhbmQgc2ltcGxpZmllcyBmdXR1cmUgVUJJCiAgICBwb3J0cy9idWctZml4ZXMgZnJvbSB0aGUgTGludXggdmVyc2lvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDQ3YWU2NjkzZjU0ZjgwNDU1YWUzMmMyZTBkOTk1ZTBlNGJkYzE1YjkKQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgpEYXRlOglXZWQgTm92IDE5IDE2OjM2OjM2IDIwMDggKzAxMDAKCiAgICBVQkk6IEFkZCBiYXNpYyBVQkkgc3VwcG9ydCB0byBVLUJvb3QgKFBhcnQgNy84KQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBiYXNpYyBVQkkgKFVuc29ydGVkIEJsb2NrIEltYWdlKSBzdXBwb3J0IHRvIFUtQm9vdC4KICAgIEl0J3MgYmFzZWQgb24gdGhlIExpbnV4IFVCSSB2ZXJzaW9uIGFuZCBiYXNpY2FsbHkgaGFzIGEgIk9TIgogICAgdHJhbnNsYXRpb24gd3JhcHBlciB0aGF0IGRlZmluZXMgbW9zdCBMaW51eCBzcGVjaWZpYyBjYWxscwogICAgKHNwaW5fbG9jaygpIGV0Yy4pIGludG8gbm8tb3BzLiBTb21lIHNvdXJjZSBjb2RlIHBhcnRzIGhhdmUgYmVlbgogICAgdW5jb21tZW50ZWQgYnkgIiNpZmRlZiBVQklfTElOVVgiLiBUaGlzIG1ha2VzIGl0IGVhc2llciB0byBjb21wYXJlCiAgICB0aGlzIHZlcnNpb24gd2l0aCB0aGUgTGludXggdmVyc2lvbiBhbmQgc2ltcGxpZmllcyBmdXR1cmUgVUJJCiAgICBwb3J0cy9idWctZml4ZXMgZnJvbSB0aGUgTGludXggdmVyc2lvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDdlNmVlN2FkMjdkZTUyMTZkYjFiYWVmNzZmMzhjMzQyOWM4ZjRhMmEKQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgpEYXRlOglXZWQgTm92IDE5IDE2OjMyOjM2IDIwMDggKzAxMDAKCiAgICBVQkk6IEFkZCBiYXNpYyBVQkkgc3VwcG9ydCB0byBVLUJvb3QgKFBhcnQgNi84KQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBiYXNpYyBVQkkgKFVuc29ydGVkIEJsb2NrIEltYWdlKSBzdXBwb3J0IHRvIFUtQm9vdC4KICAgIEl0J3MgYmFzZWQgb24gdGhlIExpbnV4IFVCSSB2ZXJzaW9uIGFuZCBiYXNpY2FsbHkgaGFzIGEgIk9TIgogICAgdHJhbnNsYXRpb24gd3JhcHBlciB0aGF0IGRlZmluZXMgbW9zdCBMaW51eCBzcGVjaWZpYyBjYWxscwogICAgKHNwaW5fbG9jaygpIGV0Yy4pIGludG8gbm8tb3BzLiBTb21lIHNvdXJjZSBjb2RlIHBhcnRzIGhhdmUgYmVlbgogICAgdW5jb21tZW50ZWQgYnkgIiNpZmRlZiBVQklfTElOVVgiLiBUaGlzIG1ha2VzIGl0IGVhc2llciB0byBjb21wYXJlCiAgICB0aGlzIHZlcnNpb24gd2l0aCB0aGUgTGludXggdmVyc2lvbiBhbmQgc2ltcGxpZmllcyBmdXR1cmUgVUJJCiAgICBwb3J0cy9idWctZml4ZXMgZnJvbSB0aGUgTGludXggdmVyc2lvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGM5MWE3MTlkYWEzMzFiNTg1NjEwOTMxMzM3MWU0ZWNlNWVjMDZkOTYKQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgpEYXRlOglXZWQgTm92IDE5IDE2OjI4OjA2IDIwMDggKzAxMDAKCiAgICBVQkk6IEFkZCBiYXNpYyBVQkkgc3VwcG9ydCB0byBVLUJvb3QgKFBhcnQgNS84KQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBiYXNpYyBVQkkgKFVuc29ydGVkIEJsb2NrIEltYWdlKSBzdXBwb3J0IHRvIFUtQm9vdC4KICAgIEl0J3MgYmFzZWQgb24gdGhlIExpbnV4IFVCSSB2ZXJzaW9uIGFuZCBiYXNpY2FsbHkgaGFzIGEgIk9TIgogICAgdHJhbnNsYXRpb24gd3JhcHBlciB0aGF0IGRlZmluZXMgbW9zdCBMaW51eCBzcGVjaWZpYyBjYWxscwogICAgKHNwaW5fbG9jaygpIGV0Yy4pIGludG8gbm8tb3BzLiBTb21lIHNvdXJjZSBjb2RlIHBhcnRzIGhhdmUgYmVlbgogICAgdW5jb21tZW50ZWQgYnkgIiNpZmRlZiBVQklfTElOVVgiLiBUaGlzIG1ha2VzIGl0IGVhc2llciB0byBjb21wYXJlCiAgICB0aGlzIHZlcnNpb24gd2l0aCB0aGUgTGludXggdmVyc2lvbiBhbmQgc2ltcGxpZmllcyBmdXR1cmUgVUJJCiAgICBwb3J0cy9idWctZml4ZXMgZnJvbSB0aGUgTGludXggdmVyc2lvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGY0MTJmZWZhMDc5YzZhYTlhOTc2M2Y2ODY5YmY3ODdlYTZiZjZlMWIKQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgpEYXRlOglXZWQgTm92IDE5IDE2OjI3OjIzIDIwMDggKzAxMDAKCiAgICBVQkk6IEFkZCBiYXNpYyBVQkkgc3VwcG9ydCB0byBVLUJvb3QgKFBhcnQgNC84KQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBiYXNpYyBVQkkgKFVuc29ydGVkIEJsb2NrIEltYWdlKSBzdXBwb3J0IHRvIFUtQm9vdC4KICAgIEl0J3MgYmFzZWQgb24gdGhlIExpbnV4IFVCSSB2ZXJzaW9uIGFuZCBiYXNpY2FsbHkgaGFzIGEgIk9TIgogICAgdHJhbnNsYXRpb24gd3JhcHBlciB0aGF0IGRlZmluZXMgbW9zdCBMaW51eCBzcGVjaWZpYyBjYWxscwogICAgKHNwaW5fbG9jaygpIGV0Yy4pIGludG8gbm8tb3BzLiBTb21lIHNvdXJjZSBjb2RlIHBhcnRzIGhhdmUgYmVlbgogICAgdW5jb21tZW50ZWQgYnkgIiNpZmRlZiBVQklfTElOVVgiLiBUaGlzIG1ha2VzIGl0IGVhc2llciB0byBjb21wYXJlCiAgICB0aGlzIHZlcnNpb24gd2l0aCB0aGUgTGludXggdmVyc2lvbiBhbmQgc2ltcGxpZmllcyBmdXR1cmUgVUJJCiAgICBwb3J0cy9idWctZml4ZXMgZnJvbSB0aGUgTGludXggdmVyc2lvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDJkMjYyYzQ4NTNjYjViNmRkY2UxYTI4YTk2NDFmMmRlMzY4OGQ3ZWEKQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgpEYXRlOglXZWQgTm92IDE5IDE2OjI2OjU0IDIwMDggKzAxMDAKCiAgICBVQkk6IEFkZCBiYXNpYyBVQkkgc3VwcG9ydCB0byBVLUJvb3QgKFBhcnQgMy84KQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBiYXNpYyBVQkkgKFVuc29ydGVkIEJsb2NrIEltYWdlKSBzdXBwb3J0IHRvIFUtQm9vdC4KICAgIEl0J3MgYmFzZWQgb24gdGhlIExpbnV4IFVCSSB2ZXJzaW9uIGFuZCBiYXNpY2FsbHkgaGFzIGEgIk9TIgogICAgdHJhbnNsYXRpb24gd3JhcHBlciB0aGF0IGRlZmluZXMgbW9zdCBMaW51eCBzcGVjaWZpYyBjYWxscwogICAgKHNwaW5fbG9jaygpIGV0Yy4pIGludG8gbm8tb3BzLiBTb21lIHNvdXJjZSBjb2RlIHBhcnRzIGhhdmUgYmVlbgogICAgdW5jb21tZW50ZWQgYnkgIiNpZmRlZiBVQklfTElOVVgiLiBUaGlzIG1ha2VzIGl0IGVhc2llciB0byBjb21wYXJlCiAgICB0aGlzIHZlcnNpb24gd2l0aCB0aGUgTGludXggdmVyc2lvbiBhbmQgc2ltcGxpZmllcyBmdXR1cmUgVUJJCiAgICBwb3J0cy9idWctZml4ZXMgZnJvbSB0aGUgTGludXggdmVyc2lvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDk2MWRmODMzNjFhZmY5YTE0ZjIyNjIxNDIyNGViOGEwNmUwNWJhMjQKQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgpEYXRlOglXZWQgTm92IDE5IDE2OjI1OjQ0IDIwMDggKzAxMDAKCiAgICBVQkk6IEFkZCBiYXNpYyBVQkkgc3VwcG9ydCB0byBVLUJvb3QgKFBhcnQgMi84KQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBiYXNpYyBVQkkgKFVuc29ydGVkIEJsb2NrIEltYWdlKSBzdXBwb3J0IHRvIFUtQm9vdC4KICAgIEl0J3MgYmFzZWQgb24gdGhlIExpbnV4IFVCSSB2ZXJzaW9uIGFuZCBiYXNpY2FsbHkgaGFzIGEgIk9TIgogICAgdHJhbnNsYXRpb24gd3JhcHBlciB0aGF0IGRlZmluZXMgbW9zdCBMaW51eCBzcGVjaWZpYyBjYWxscwogICAgKHNwaW5fbG9jaygpIGV0Yy4pIGludG8gbm8tb3BzLiBTb21lIHNvdXJjZSBjb2RlIHBhcnRzIGhhdmUgYmVlbgogICAgdW5jb21tZW50ZWQgYnkgIiNpZmRlZiBVQklfTElOVVgiLiBUaGlzIG1ha2VzIGl0IGVhc2llciB0byBjb21wYXJlCiAgICB0aGlzIHZlcnNpb24gd2l0aCB0aGUgTGludXggdmVyc2lvbiBhbmQgc2ltcGxpZmllcyBmdXR1cmUgVUJJCiAgICBwb3J0cy9idWctZml4ZXMgZnJvbSB0aGUgTGludXggdmVyc2lvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGYzOTlkNGEyODE3MTNkNWVmMmQ3NjRmMDVkNTQ1ZmU2MWUzYmQ1NjkKQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgpEYXRlOglXZWQgTm92IDE5IDE2OjIzOjA2IDIwMDggKzAxMDAKCiAgICBVQkk6IEFkZCBiYXNpYyBVQkkgc3VwcG9ydCB0byBVLUJvb3QgKFBhcnQgMS84KQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBiYXNpYyBVQkkgKFVuc29ydGVkIEJsb2NrIEltYWdlKSBzdXBwb3J0IHRvIFUtQm9vdC4KICAgIEl0J3MgYmFzZWQgb24gdGhlIExpbnV4IFVCSSB2ZXJzaW9uIGFuZCBiYXNpY2FsbHkgaGFzIGEgIk9TIgogICAgdHJhbnNsYXRpb24gd3JhcHBlciB0aGF0IGRlZmluZXMgbW9zdCBMaW51eCBzcGVjaWZpYyBjYWxscwogICAgKHNwaW5fbG9jaygpIGV0Yy4pIGludG8gbm8tb3BzLiBTb21lIHNvdXJjZSBjb2RlIHBhcnRzIGhhdmUgYmVlbgogICAgdW5jb21tZW50ZWQgYnkgIiNpZmRlZiBVQklfTElOVVgiLiBUaGlzIG1ha2VzIGl0IGVhc2llciB0byBjb21wYXJlCiAgICB0aGlzIHZlcnNpb24gd2l0aCB0aGUgTGludXggdmVyc2lvbiBhbmQgc2ltcGxpZmllcyBmdXR1cmUgVUJJCiAgICBwb3J0cy9idWctZml4ZXMgZnJvbSB0aGUgTGludXggdmVyc2lvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGUyOWMyMmY1YWJlNmUwZjRiYWE2MjUxZWZlZDYwNzRjZGZjM2RiNzkKQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgpEYXRlOglXZWQgTm92IDE5IDE2OjIwOjM2IDIwMDggKzAxMDAKCiAgICBNVEQ6IEFkZCBNVEQgcGFyaXRpb25pbmcgaW5mcmFzdHJ1Y3R1cmUKCiAgICBUaGlzIE1URCBwYXJ0IGluZnJhc3RydWN0dXJlIHdpbGwgYmUgdXNlZCBieSB0aGUgdXBjb21pbmcKICAgIFVCSSBzdXBwb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOWI4MjdjZjE3MjBhY2RhMjQ3M2FmYTUxNjk1NmVhYjZmN2NjYTlhMQpBdXRob3I6IFNlbHZhbXV0aHVrdW1hciA8c2VsdmEubXV0aHVrdW1hckBlLWNvbmluZm90ZWNoLmNvbT4KRGF0ZToJVGh1IE9jdCAxNiAyMjo1NDowMyAyMDA4ICswNTMwCgogICAgQWxpZ24gZW5kIG9mIGJzcyBieSA0IGJ5dGVzCgogICAgTW9zdCBvZiB0aGUgYnNzIGluaXRpYWxpemF0aW9uIGxvb3AgaW5jcmVtZW50cyA0IGJ5dGVzCiAgICBhdCBhIHRpbWUuIEFuZCB0aGUgbG9vcCBlbmQgaXMgY2hlY2tlZCBmb3IgYW4gJ2VxdWFsJwogICAgY29uZGl0aW9uLiBNYWtlIHRoZSBic3MgZW5kIGFkZHJlc3MgYWxpZ25lZCBieSA0LCBzbwogICAgdGhhdCB0aGUgbG9vcCB3aWxsIGVuZCBhcyBleHBlY3RlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTZWx2YW11dGh1a3VtYXIgPHNlbHZhLm11dGh1a3VtYXJAZS1jb25pbmZvdGVjaC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDNmNTEwZGI1MjJkMTYwMTc5ZGZmM2RkY2NlOWIxOGY2MjQxYzJjMjQKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIE5vdiAxMCAxOTo0NTozNSAyMDA4IC0wNjAwCgogICAgbXBjODY0MTogZml4IGFkZHJlc3MtY2VsbHMgZGVmYXVsdCBpbiBvbGQgLmR0cyBkZXRlY3Rpb24KCiAgICBhZGRyZXNzLWNlbGxzIGRlZmF1bHRzIHRvIDIsIG5vdCAxOyBzbyBpbiB0aGUgdW5saWtlbHkKICAgIGV2ZW50IHRoYXQgaXQgaXNuJ3Qgc3BlY2lmaWVkLCB0aGlzIHBhdGNoIGlzIHJlcXVpcmVkCiAgICBmb3IgY29ycmVjdCBvcGVyYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDAyNWFhNGIyMGEwNjE4YTJiYWRhMDEzMmE5YTBhNGFmYjcxN2YxYQpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgT2N0IDMxIDE3OjE0OjM5IDIwMDggLTA1MDAKCiAgICBsaWJfcHBjOiBNb3ZlIHRyYXBfaW5pdCB0byBvY2N1ciBlYXJsaWVyCgogICAgRG9pbmcgdHJhcF9pbml0IGltbWVkaWF0ZWx5IG9uY2Ugd2UncmUgcnVubmluZyBmcm9tIFJBTQogICAgbWVhbnMgd2UncmUgbm8gbG9uZ2VyIGRlcGVuZGVudCBvbiB0aGUgcGh5c2ljYWwgbG9jYXRpb24gb2YKICAgIHRoZSBmbGFzaCBvbiBub24tQm9va0UgcGxhdGZvcm1zLiBCZWZvcmUgdHJhcF9pbml0LCB0aG9zZQogICAgcGxhdGZvcm1zIHN3aXRjaCB0byByZWFsIG1vZGUgYW5kIGdvIHRvIDB4ZmZmMDAxMDAgb24gZXhjZXB0aW9uLgogICAgQWZ0ZXIgdGhlIHN3aXRjaCwgdGhleSBnbyB0byAweDAwMDAwMTAwICBUaGlzIG1ha2VzIGl0IGVhc2llciB0bwogICAgbW92ZSB0aGUgZmxhc2ggbG9jYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDUyMDgyYjEyYzZlNTQ1NzA1YTE5NDMzYTJmNDE0MjUyNjUzNjE4OQpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgTm92IDcgMTM6NDY6MTkgMjAwOCAtMDYwMAoKICAgIG1wYzg2NDE6IFRyeSB0byBkZXRlY3Qgb2xkIC5kdHMgZmlsZXMKCiAgICBTaW5jZSB3ZSd2ZSBjaGFuZ2VkIHRoZSBtZW1vcnkgbWFwIG9mIHRoZSBib2FyZCwgYmUgbmljZSBhbmQKICAgIGFkZCBzb21lIGNoZWNraW5nIHRvIHRyeSB0byBjYXRjaCBvdXQtb2YtZGF0ZSAuZHRzIGZpbGVzLiAgV2UgZG8KICAgIHRoaXMgYnkgY2hlY2tpbmcgdGhlIENDU1JCQVIgbG9jYXRpb24gaW4gdGhlIC5kdHMgYW5kIGNvbXBhcmluZwogICAgaXQgdG8gdGhlIENDU1JCQVIgbG9jYXRpb24gaW4gdS1ib290LiAgSWYgdGhleSBkb24ndCBtYXRjaCwgYQogICAgd2FybmluZyBtc2cgaXMgcHJpbnRlZC4gIFRoaXMgaXNuJ3QgZm9vbHByb29mLCBidXQgaXQncyBzaW1wbGUgYW5kCiAgICB3aWxsIGNhdGNoIG1vc3Qgb2YgdGhlIGNhc2VzIHdoZXJlIGFuIG91dC1vZi1kYXRlIC5kdHMgaXMgcHJlc2VudCwKICAgIGluY2x1ZGluZyBhbGwgb2YgdGhlIGNhc2VzIHdoZXJlIGEgbmV3IHUtYm9vdCBpcyB1c2VkIHdpdGggYW4gb2xkCiAgICBzdGFuZGFyZCBNUEM4NjQxIC5kdHMgZmlsZSBhcyBzdXBwbGllZCB3aXRoIExpbnV4LgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDhkYjA0MDBhMjc4MzlmOTFjMDQ3ZGNiODNmNGEwZjA5ZTA1NGExODAKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE5vdiA2IDEzOjA0OjA5IDIwMDggLTA2MDAKCiAgICB0b3BsZXZlbCBNYWtlZmlsZTogQWRkIE1QQzg2NDFIUENOXzM2QklUIHRhcmdldAoKICAgIFRoaXMgd2lsbCBlbmFibGUgQ09ORklHX1BIWVNfMzZCSVQgZm9yIE1QQzg2NDFIUENOLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDMxMTFkMzJjNDk0ZTgyNTFiOTA5MTc0NDc3OTZhNzIwNmI3NTdlMWUKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE5vdiA2IDE3OjM3OjM1IDIwMDggLTA2MDAKCiAgICBtcGM4NjQxOiBTdXBwb3J0IDM2LWJpdCBwaHlzaWNhbCBhZGRyZXNzaW5nCgogICAgVGhpcyBwYXRjaCBjcmVhdGVzIGEgbWVtb3J5IG1hcCB3aXRoIGFsbCB0aGUgZGV2aWNlcwogICAgaW4gMzYtYml0IHBoeXNpY2FsIHNwYWNlLCBpbiBhZGRpdGlvbiB0byB0aGUgMzItYml0IG1hcC4KICAgIFRoZSBDQ1NSIHJlbG9jYXRpb24gaXMgbW92ZWQgKGFnYWluLCBzb3JyeSkgdG8KICAgIGFsbG93IGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyB0byBiZSAzNiBiaXRzIC0gdGhpcwogICAgcmVxdWlyZXMgdHJhbnNsYXRpb24gdG8gYmUgZW5hYmxlZC4gIFdpdGggMzYtYml0IHBoeXNpY2FsCiAgICBhZGRyZXNzaW5nIGVuYWJsZWQsIHdlIGFyZSBubyBsb25nZXIgcnVubmluZyB3aXRoIFZBPVBBCiAgICB0cmFuc2xhdGlvbnMuICBUaGlzIG1lYW5zIHdlIGhhdmUgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbgogICAgdGhlIHR3byBpbiB0aGUgY29uZmlnIGZpbGUuICBUaGUgZXhpc3RpbmcgcmVnaW9uIG5hbWUgaXMKICAgIHVzZWQgdG8gaW5kaWNhdGUgdGhlIHZpcnR1YWwgYWRkcmVzcywgYW5kIGEgX1BIWVMgdmFyaWV0eQogICAgaXMgY3JlYXRlZCB0byByZXByZXNlbnQgdGhlIHBoeXNpY2FsIGFkZHJlc3MuCgogICAgTGFyZ2UgcGh5c2ljYWwgYWRkcmVzc2luZyBpcyBub3QgZW5hYmxlZCBieSBkZWZhdWx0LgogICAgU2V0IENPTkZJR19QSFlTXzY0QklUIGluIHRoZSBjb25maWcgZmlsZSB0byB0dXJuIHRoaXMgb24uCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYzc1OWEwMWEwMDIyZGU5Mzc4YTNhNzYxZjQ5Nzg2Zjg3Njg0YzkxNgpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTm92IDYgMTc6MzY6MDQgMjAwOCAtMDYwMAoKICAgIG1wYzg2NDE6IENoYW5nZSAzMi1iaXQgbWVtb3J5IG1hcAoKICAgIFRoZSBtZW1vcnkgbWFwIG9uIHRoZSA4NjQxaHBjbiBpcyBtb2RpZmllZCB0byBsb29rIG1vcmUgbGlrZQogICAgdGhlIDg1eHggYm9hcmRzOyB0aGlzIGlzIGEgc3RlcCB0b3dhcmRzIGEgbW9yZSBzdGFuZGFyZGl6ZWQKICAgIGxheW91dCBnb2luZyBmb3J3YXJkLiBBcyBwYXJ0IG9mIHRoaXMgY2hhbmdlLCB3ZSBub3cgcmVsb2NhdGUKICAgIHRoZSBmbGFzaC4KCiAgICBUaGUgcmVnaW9ucyBmb3Igc29tZSBvZiB0aGUgbWFwcGluZ3Mgd2VyZSBmYXIgbGFyZ2VyIHRoYW4gdGhleQogICAgbmVlZGVkIHRvIGJlLiAgSSBoYXZlIHJlZHVjZWQgdGhlIG1hcHBpbmdzIHRvIG1hdGNoIHRoZQogICAgYWN0dWFsIHNpemVzIHN1cHBvcnRlZCBieSB0aGUgaGFyZHdhcmUuCgogICAgSW4gYWRkaXRpb24gSSBoYXZlIHJlbW92ZWQgdGhlIGNvbW1lbnRzIGF0IHRoZSBoZWFkCiAgICBvZiB0aGUgQkFUIGJsb2NrcyBpbiB0aGUgY29uZmlnIGZpbGUsIHJhdGhlciB0aGFuIHVwZGF0aW5nCiAgICB0aGVtLiAgVGhlc2UgZ2V0IGhvcnJpYmx5IG91dCBvZiBkYXRlLCBhbmQgaXQncyBhIHNpbXBsZQogICAgbWF0dGVyIHRvIGxvb2sgYXQgdGhlIGRlZmluZXMgdG8gc2VlIHdoYXQgdGhleSBhcmUgc2V0IHRvCiAgICBzaW5jZSBldmVyeXRoaW5nIGlzIHJpZ2h0IGhlcmUgaW4gdGhlIHNhbWUgZmlsZS4KCiAgICBEb2N1bWVudGF0aW9uIGhhcyBiZWVuIGNoYW5nZWQgdG8gcmVmbGVjdCB0aGUgbmV3IG1hcCwgYXMgdGhpcwogICAgY2hhbmdlIGlzIHVzZXIgdmlzaWJsZSwgYW5kIGFmZmVjdHMgdGhlIE9TIHdoaWNoIHJ1bnMgcG9zdC11Ym9vdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiZjlhOGMzNDMwOWVkOTI3NjI1ODI5NWRiOWU5MjEyYWFiYjI1MzFhCkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBOb3YgNSAxNDo1NTozNSAyMDA4IC0wNjAwCgogICAgbXBjODZ4eDogQ2hhbmdlIGVhcmx5IEZMQVNIIG1hcHBpbmcgdG8gMU0gYXQgQ09ORklHX01PTklUT1JfQkFTRV9FQVJMWQoKICAgIFdlIGRlZmluZSBDT05GSUdfTU9OSVRPUl9CQVNFX0VBUkxZIHRvIGRlZmluZSB0aGUgaW5pdGlhbCBsb2NhdGlvbgogICAgb2YgdGhlIGJvb3RwYWdlIGluIGZsYXNoLglVc2UgdGhpcyB0byBjcmVhdGUgYW4gZWFybHkgbWFwcGluZwogICAgZGVmaW5pdGlvbiBmb3IgdGhlIEZMQVNILCBhbmQgY2hhbmdlIHRoZSBlYXJseV9iYXRzIGNvZGUgdG8gdXNlIHRoaXMuCgogICAgVGhpcyAgY2hhbmdlIGZhY2lsaXRhdGVzIHRoZSByZWxvY2F0aW9uIG9mIHRoZSBmbGFzaCBzaW5jZSB0aGUgZWFybHkKICAgIG1hcHBpbmdzIGFyZSBubyBsb25nZXIgdGllZCB0byB0aGUgZmluYWwgbG9jYXRpb24gb2YgdGhlIGZsYXNoLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGMxZTFjZjY5NTQ3YjEzODE3M2Y4N2E3ZjgxYzQyYTVkOGRiZmRlM2QKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE5vdiA1IDE0OjU1OjM0IDIwMDggLTA2MDAKCiAgICBtcGM4Nnh4OiBVc2UgU1JSMC8xL3JmaSB0byBlbmFibGUgYWRkcmVzcyB0cmFuc2xhdGlvbiwgbm90IGJscgoKICAgIFVzaW5nIGEgbXRtc3IvYmxyIG1lYW5zIHRoYXQgeW91IGhhdmUgdG8gYmUgZXhlY3V0aW5nIGF0IHRoZQogICAgc2FtZSB2aXJ0dWFsIGFkZHJlc3Mgb25jZSB5b3UgZW5hYmxlIHRyYW5zbGF0aW9uLiAgVGhpcyBpcwogICAgdW5uZWNlc3NhcmlseSByZXN0cmljdGl2ZSwgYW5kIGlzIG5vdCByZWFsbHkgaG93IHRoaXMgaXMKICAgIHVzdWFsbHkgZG9uZS4gIENoYW5nZSBpdCB0byB1c2UgdGhlIG1vcmUgY29tbW9uIG10c3ByIFNSUjAvU1JSMQogICAgYW5kIHJmaSBtZXRob2QuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNmJmOThiMTM2MmYwY2IyMzc2MjAzNTVlZDNlNjc2MmZmZjgyMzg4ZApBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTm92IDUgMTQ6NTU6MzMgMjAwOCAtMDYwMAoKICAgIG1wYzg2NDE6IG1ha2UgRElBR19BRERSID09IEZMQVNIX0JBU0UKCiAgICBDdXJyZW50bHksIHRoYXQncyB3aGF0IGl0IGlzLCBidXQgaXQncyBoYXJkY29kZWQuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTcwZGVhY2IxZGRjMzkxNjRiZGI2OGYzOTYzZTBjMDQ1NmE1MzY5YgpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTm92IDUgMTQ6NTU6MzIgMjAwOCAtMDYwMAoKICAgIG1wYzg2NDE6IERyb3AgaW1hZ2luYXJ5IHNlY29uZCBmbGFzaCBiYW5rLCBtYXAgOE1CCgogICAgVGhlcmUncyBhIGxvdCBvZiBzZXR1cCBhbmQgZm9vIGZvciB0aGUgc2Vjb25kIGZsYXNoCiAgICBiYW5rLiAgVGhlIHByb2JsZW0gaXMsIHRoaXMgYm9hcmQgZG9lc24ndCBhY3R1YWxseSBoYXZlIG9uZS4KICAgIENsZWFuIHRoaXMgdXAuICBBbHNvLCB0aGUgZmxhc2ggaXMgOE0gaW4gc2l6ZS4gIEdldCByaWQKICAgIG9mIHRoZSBjb25mdXNpbmcgYWxpYXNlZCBvdmVybWFwcGluZywgYW5kIGp1c3QgbWFwIDhNLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDBmMmQ2NjAyN2JmYzYwZGM3ZWVhMmYwOTZhZjg4OTE5ODhjNWFiZTQKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE5vdiA1IDE0OjU1OjMxIDIwMDggLTA2MDAKCiAgICBtcGM4NjQxOiBvbmx5IGRlZmluZSBDT05GSUdfRU5WX1NJWkUgb25jZQoKICAgIEl0J3MgY3VycmVudGx5IGRlZmluZWQgdHdpY2UgaW5zaWRlIGluIGFuIGlmL2Vsc2UgYmxvY2ssIGJ1dAogICAgYm90aCBoYWx2ZXMgc2V0IHRoZSBzYW1lIHZhbHVlLiAgTW92ZSB0aGUgZGVmaW5lIG91dHNpZGUKICAgIHRoZSBpZi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyNGJmYjQ4YzM1ZmVkNmFkMWYwNDdlM2U0YTI3ZGYzMDI0ODJjZDkzCkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBOb3YgNSAxNDo1NTozMCAyMDA4IC0wNjAwCgogICAgbXBjODZ4eDogTW92ZSBzZXR1cF9iYXRzIGludG8gY3B1X2luaXRfZgoKICAgIEluIG9yZGVyIHRvIGxhdGVyIGFsbG93IGZvciBhIHBoeXNpY2FsIHJlbG9jYXRpb24gb2YgdGhlCiAgICBmbGFzaCwgc2V0dXBfYmF0cywgd2hpY2ggc2V0cyB1cCB0aGUgZmluYWwgQkFUIG1hcHBpbmcKICAgIGZvciB0aGUgYm9hcmQsIG5lZWRzIHRvIGhhcHBlbiAqYWZ0ZXIqIGluaXRfbGF3cygpLgogICAgT3RoZXJ3aXNlLCB0aGVyZSB3aWxsIGJlIG5vIHdpbmRvdyBwcm9ncmFtbWVkIGZvciB0aGUgZmxhc2gKICAgIGF0IHRoZSBuZXcgcGh5c2ljYWwgbG9jYXRpb24gYXQgdGhlIHBvaW50IHdoZW4gd2UgY2hhbmdlCiAgICB0aGUgbW11IHRyYW5zbGF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDA1ZGYzZTVhNjM4YmU4YzViMDg5OWVhZTE3NjZiYmU4ZTRiOTJjMTcKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE5vdiA1IDE0OjU1OjI5IDIwMDggLTA2MDAKCiAgICBtcGM4NjQxOiBSZW1vdmUgZXh0cmEgIjAiIGZyb20gQlIyIGRlZmluZQoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGVkZjNmZTdkMzlhMWVlMDczNTMxMjhhZjUyMjE0MjJjZTljY2ZhZDYKQXV0aG9yOiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgpEYXRlOglUaHUgT2N0IDIzIDA5OjA4OjE4IDIwMDggLTA0MDAKCiAgICBkcml2ZXJzL3FlL3VlY19waHkuYzogQWRkZWQgUEhZLWxlc3MgKGZpeGVkIFBIWSkgZHJpdmVyLgoKICAgIENvcGllZCBvdmVyIHRoZSBmaXhlZCBQSFkgZHJpdmVyIGFzIHVzZWQgaW4gcHA0eHgvNHh4X2VuZXQuYy4KICAgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBQSFktbGVzcyBNQUMgY29ubmVjdGlvbnMgdG8gdGhlIFVFQy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA1NGJkY2M5ZmI2NjcwYWZkZTljMjZkY2YzNjRmNTgyODc5YmYyMWQ2CkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE9jdCAyMyAxNjoyNzoyNCAyMDA4ICswMDAwCgogICAgQ29sZEZpcmU6IEFkZCBtaWkgZHJpdmVyIGluIGRyaXZlcnMvbmV0CgogICAgQWxsIENGIHBsYXRmb3JtcycgbWlpLmMgYXJlIGNvbnNvbGlkYXRlZCBpbnRvIG9uZQoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDI1YTg1OTA2NmIzYWYxMDcwZWI2OWYxMjAyMjExM2MwYTkxYmQ4MTMKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglNb24gT2N0IDI3IDIzOjUzOjE3IDIwMDggLTA3MDAKCiAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBQUEM0eHggRU1BQyB0byBjcHVfZXRoX2luaXQoKQoKICAgIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDRkMDNhNGUyMGU1ODU1MmNiOTZkNjFhMGU4YjU2Y2RiNmNjNjAxMjYKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglTdW4gTm92IDkgMjE6Mjk6MjMgMjAwOCAtMDgwMAoKICAgIE1vdmVkIFBQQzR4eCBFTUFDIGRyaXZlciB0byBkcml2ZXJzL25ldAoKICAgIEFsc28gY2hhbmdlZCBwYXRoIGluIGFsbCBsaW5rZXIgc2NyaXB0cyB0aGF0IHJlZmVyZW5jZSB0aGlzIGRyaXZlcgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDk2ZTIxZjg2ZTgyNjZlZDQwNzU5ZTU0OTVlZTQ2MTI2NWQ3ZjZkMjgKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglNb24gT2N0IDI3IDIzOjUwOjE1IDIwMDggLTA3MDAKCiAgICBDaGFuZ2VkIFBQQzR4eCBFTUFDIGRyaXZlciB0byByZXF1aXJlIENPTkZJR19QUEM0eHhfRU1BQwoKICAgIEFsbCBpbi10cmVlIElCTS9BTUNDIFBQQzR4eCBib2FyZHMgdXNpbmcgdGhlIEVNQUMgZ2V0IHRoaXMgbmV3IENPTkZJRwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDllYjc5YmQ4ODU2YmNhYjg5NmVkNWUxZjFiY2ExNTk4MDdhMTI0ZGQKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglUaHUgT2N0IDIzIDIyOjAyOjQ5IDIwMDggLTA3MDAKCiAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBNUEM4WFggU0NDIHRvIGNwdV9ldGhfaW5pdCgpCgogICAgUmVtb3ZlZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgZHJpdmVyIGZyb20gbmV0L2V0aC5jCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBhOWJlYzk2ZDYzNTlhYzlmOTBhODUyOTYyYmYzMDQwY2FkOWUwMjU2CkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJV2VkIE9jdCAyMiAyMzo0Nzo1MSAyMDA4IC0wNzAwCgogICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgTVBDODIyMCBGRUMgdG8gY3B1X2V0aF9pbml0KCkKCiAgICBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIHRoZSBkcml2ZXIgZnJvbSBuZXQvZXRoLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDBlODQ1NGU5OTAzODVhNThmNzA4YzJmYzI2ZDMxYWMwNDFjN2E2YzUKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglXZWQgT2N0IDIyIDIzOjMyOjQ4IDIwMDggLTA3MDAKCiAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBRRSBFdGhlcm5ldCBjb250cm9sbGVyIHRvIGNwdV9ldGhfaW5pdCgpCgogICAgUmVtb3ZlZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgZHJpdmVyIGZyb20gbmV0L2V0aC5jCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAzNDU2YTE0ODI3NmQ1NDk0YjUzZWU0MDI0MmVmYjY0NjJkMTYzNTA0CkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJV2VkIE9jdCAyMiAyMzoyMDoyOSAyMDA4IC0wNzAwCgogICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgRkNDIEV0aGVybmV0IGNvbnRyb2xsZXIgdG8gY3B1X2V0aF9pbml0CgogICAgQWZmZWN0ZWQgYm9hcmRzOgoJU2V2ZXJhbCBNUEM4eHggYm9hcmRzCglTZXZlcmFsIE1QQzgyNjAvTVBDODI3MiBib2FyZHMKCVNldmVyYWwgTVBDODV4eCBib2FyZHMKCiAgICBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIHRoZSBkcml2ZXIgZnJvbSBuZXQvZXRoLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDYyZTE1YjQ5N2Y1YzYzMzRjMDU5NTEyNjc4YzhkYjc5NDBhZTRjNjEKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglUaHUgT2N0IDMwIDIyOjE1OjM1IDIwMDggLTA3MDAKCiAgICBGaXggdHlwbyBpbiBjcHUvbXBjODV4eC9jcHUuYwoKICAgIENPTkZJR19NUEM4NXh4X0ZFQyAtPiBDT05GSUdfTVBDODVYWF9GRUMKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDVkZmIzZWUzZjU0ZTIzODJhMDhkNzI5MDZmMGU3OWVjZjk0NGY2ZTMKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglTdW4gT2N0IDE5IDEyOjA4OjUwIDIwMDggKzA5MDAKCiAgICBuZXQ6IE1vdmUgaW5pdGlhbGl6YXRpb24gb2YgQXUxeDAwIFNvQyBldGhlcm5ldCBNQUMgdG8gY3B1X2V0aF9pbml0CgogICAgVGhpcyBwYXRjaCB3aWxsIG1vdmUgYXUxeDAwX2V0aF9pbml0aWFsaXplIGZyb20gbmV0L2V0aC5jIHRvIGNwdV9ldGhfaW5pdAogICAgYXMgYSBwYXJ0IG9mIG9uZ29pbmcgZXRoX2luaXRpYWxpemUgY2xlYW51cCB3b3JrLiAgVGhlIGZ1bmN0aW9uIHJldCB2YWx1ZQogICAgaXMgYWxzbyBmaXhlZCBhcyBpdCBzaG91bGQgYmUgbmVnYXRpdmUgb24gZmFpbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBjYzk0MDc0ZWNhYzE4ODVkMThkZGI2ODNlYjkzNGIzYzAyNjhhYTViCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJRnJpIFNlcCA1IDAxOjU1OjIyIDIwMDggLTA0MDAKCiAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBJWFA0WFhfTlBFIEV0aGVybmV0IGNvbnRyb2xsZXIgdG8gY3B1X2V0aF9pbml0KCkKCiAgICBBbHNvLCByZW1vdmVkIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gZnJvbSBuZXQvZXRoLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGYyYTc4MDZmYzIzZTgyZDMwYzg1NDg5MTEzNjllMGM1MzA2MDczNTQKQXV0aG9yOiBDbGl2ZSBTdHViYmluZ3MgPHVib290QHhlbnRlY2guY28udWs+CkRhdGU6CU1vbiBPY3QgMjcgMTU6MDU6MDAgMjAwOCArMDAwMAoKICAgIHhpbGlueF9lbWFjbGl0ZSBidWZmZXIgb3ZlcnJ1bgoKICAgIFBhdGNoIHRvIGZpeCBidWZmZXIgYWxsb2NhdGlvbiBzaXplIGFuZCBhbGlnbm1lbnQuIEJ1ZmZlciBuZWVkcyB0byBiZSB1MzIgYWxpZ25lZCBhbmQKICAgIFBLVFNJWkVfQUxJR04gYnl0ZXMgbG9uZy4KCiAgICBBY2tlZC1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMDExNWIxOTUzNzE4YTI5NjlmNjQ2OWQzZDVkYTUxYmExMWUxMmQ0MgpBdXRob3I6IHJpY2hhcmRyZXRhbnVidW4gPHJpY2hhcmRyZXRhbnVidW5AcnVnZ2VkY29tLmNvbT4KRGF0ZToJRnJpIFNlcCAyNiAwODo1OToxMiAyMDA4IC0wNDAwCgogICAgTkVUOiBRRTogVUVDOiBNYWtlIHVlY19taWlwaHlfcmVhZCgpIGFuZCB1ZWNfbWlpcGh5X3dyaXRlKCkgdXNlIHRoZSBkZXZuYW1lIGFyZy4KCiAgICBUaGUgY3VycmVudCB1ZWNfbWlpcGh5X3JlYWQgYW5kIHVlY19taWlwaHlfd3JpdGUgaGFyZGNvZGUgYWNjZXNzIGRldmxpc3RbMF0KICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlc2UgZnVuY3Rpb24gdXNlIHRoZSBkZXZuYW1lIGFyZ3VtZW50IHRoYXQgaXMgcGFzc2VkIGluIHRvCiAgICBhbGxvdyBhY2Nlc3MgdG8gdGhlIHBoeSByZWdpc3RlcnMgb2Ygb3RoZXIgZGV2aWNlcyBpbiBkZXZsaXN0W10uCgogICAgU2lnbmVkLW9mLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZ2VkQ29tLmNvbT4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDQ0ZGNiNzMzMjAzM2RiOGRlMjgxMGYyZmZmY2FlMzA4NGYxNWM4ZDQKQXV0aG9yOiByaWNoYXJkcmV0YW51YnVuIDxyaWNoYXJkcmV0YW51YnVuQHJ1Z2dlZGNvbS5jb20+CkRhdGU6CU1vbiBPY3QgNiAxNTozMTo0MyAyMDA4IC0wNDAwCgogICAgQWRkcyB0d28gbW9yZSBldGhlcm5ldCBpbnRlcmZhY2UgdG8gODN4eAoKICAgIEZpeGVkIGNvbXBpbGVyIHdhcm5pbmcgImRlY2xhcmVkIGJ1dCB1bnVzZWQiIGV0aDVfdWVjX2luZm8gYW5kIGV0aDZfdWVjX2luZm8uCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZ2VkQ29tLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZDgwMDNmYTAzNzMzOTAxYjczZDZjNDY2N2I0ZDgwZmM4ZWIxZGRkMwpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CUZyaSBOb3YgNyAxMzo1NDozMSAyMDA4ICswMTAwCgogICAgQVQ5MTogUmVwbGFjZSBBVDkxX0JBU0VfRU1BQyBieSB0aGUgYm9hcmQgc3BlY2lmaWMgdmFsdWVzLgoKICAgIEFUOTFfQkFTRV9FTUFDIGlzIG5ldmVyIHVzZWQgb3V0c2lkZSB0aGUgYm9hcmQgc3BlY2lmaWMgZmlsZXMsCiAgICBzbyByZXBsYWNlIGl0cyB1c2FnZSBieSB0aGUgYm9hcmQgc3BlY2lmaWMgQVQ5MXh4eF9CQVNFX0VNQUMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYzkxZTE3YWZmYTE3NWNlMDZhZmE4OWIwNDc1MjMwMWViNGE2MTY2NgpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CUZyaSBOb3YgNyAxMjowOToyMSAyMDA4ICswMTAwCgogICAgQVQ5MTogUmVwbGFjZSAodW5kZWZpbmVkKSBBVDkxX0lEX1VTKiBieSB0aGUgYm9hcmQgc3BlY2lmaWMgdmFsdWVzLgoKICAgIEFUOTFfSURfVVMwIC8gQVQ5MV9JRF9VUzEgLyBBVDkxX0lEX1VTMiB3ZXJlIHVzZWQgYnV0IG5ldmVyIGRlZmluZWQuCiAgICBTaW5jZSB0aGV5IGFyZSBuZXZlciB1c2VkIG91dHNpZGUgdGhlIGJvYXJkIHNwZWNpZmljIGZpbGVzLCB0aGV5IGNhbgogICAgYmUgcmVwbGFjZWQgYnkgdGhlIGJvYXJkIHNwZWNpZmljIEFUOTF4eHhfSURfVVMwIC8gQVQ5MXh4eF9JRF9VUzEgLwogICAgQVQ5MXh4eF9JRF9VUzIuCgogICAgQnVnIHNwb3R0ZWQgYnkgSmVzdXMgQWx2YXJleiA8amFsdmFyZXpAbWljcm9taW50LmNvbT4uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMjg5NjJmNWEyZGU4MWJjMGVlZDFjMGIwOGM2YmZhYTFjYzEzNGVhMgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBOb3YgMSAxMDo0Nzo1OSAyMDA4ICswMTAwCgogICAgTWFrZWZpbGUvYXQ5MXNhbTk6IG1vdmUgc29tZSBhdDkxc2FtOSB0byB0aGUgY29ycmVjdCBzdWJzZWN0aW9uIGZvciBhcm05MjZlanMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDEwNzk0MzJlMDRjY2Y3MWFhMzY4NDE4MTE4NjE4MmNkNjM1MTJmMTkKQXV0aG9yOiBTZXJnZXkgTGFwaW4gPHNsYXBpbkBvc3NmYW5zLm9yZz4KRGF0ZToJRnJpIE9jdCAzMSAxMjoyODo0MyAyMDA4ICswMTAwCgogICAgQ3VzdG9tIEFGRUI5MjYwIGJvYXJkIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIHByb3ZpZGVzIHN1cHBvcnQgZm9yIEFGRUI5MjYwIGJvYXJkLCBhIHByb2R1Y3Qgb2YKICAgIE9wZW5Tb3VyY2UgaGFyZHdhcmUgYW5kIHNvZnR3YXJlLiBTb21lIGNvbW1lcnRpYWwgcHJvamVjdHMKICAgIGFyZSBtYWRlIHdpdGggdGhpcyBkZXNpZ24uIEEgYm9hcmQgaXMgYmFzaWNhbGx5IEFUOTFTQU05MjYwLUVLCiAgICB3aXRoIHNvbWUgbW9kaWZpY2F0aW9ucyBhbmQgZGlmZmVyZW50IHBlcmlwaGVyYWxzIGFuZCBkaWZmZXJlbnQKICAgIHBhcnRzIHVzZWQuIE1haW4gcHVycG9zZSBvZiB0aGlzIHByb2plY3QgaXMgdG8gZ2FpbiBleHBlcmllbmNlIGluCiAgICBoYXJkd2FyZSBkZXNpZ24uCiAgICBNb3JlIGluZm86IGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9hcm05ZnBnYS1ldm9sdXRpb24tYm9hcmQKICAgIChJbiBSdXNzaWFuIG9ubHksIHNvcnJ5KS4KICAgIFN1YnZlcnNpb24gcmVwb3NpdG9yeTogc3ZuOi8vMTk0Ljg1LjIzOC4yMi9ob21lL3VzZXJzL2dlb3JnZS9zdm4vYXJtOWViCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2V5IExhcGluIDxzbGFwaW5Ab3NzZmFucy5vcmc+Cgpjb21taXQgMjZlZWNkMjRmOTcxMzBlNTZlOWMyYzJhZjBlNzE0ZTA1YmNlNmUwMApBdXRob3I6IFRvbW9oaXJvIE1hc3VidWNoaSA8dG9tb2hpcm9fbWFzdWJ1Y2hpYXR0cmlwZWFrcy5jby5qcD4KRGF0ZToJVHVlIE9jdCAyMSAxMzoxNzoxNiAyMDA4ICswOTAwCgogICAgQ2hhbmdlIHRvIHVzZSAiZG9fZGl2IiBtYWNybwoKICAgIFNpZ25lZC1vZmYtYnk6IFRvbW9oaXJvIE1hc3VidWNoaSA8dG9tb2hpcm9fbWFzdWJ1Y2hpQHRyaXBlYWtzLmNvLmpwPgoKY29tbWl0IGUzNTI0OTUzMThkODA1NmEwMGZhYTIxYjYzM2IzZTQzNzRiZmJmNTIKQXV0aG9yOiBSb21hbiBNYXNoYWsgPHJvbWV6Nzc3QGdtYWlsLmNvbT4KRGF0ZToJV2VkIE9jdCAyMiAxNjowMDoyNiAyMDA4IC0wNDAwCgogICAgQVJNOTI2RUotUzogcmVsb2NhdGUgT01BUCBzcGVjaWZpYyAnY3B1aW5mby5jJyBpbnRvIE9NQVAgZGlyZWN0b3J5CgogICAgT01BUCBpZGVudGlmaWNhdGlvbiBpcyBpbXBsZW1lbnRlZCBpbiAnY3B1aW5mby5jJyBhbmQgbG9jYXRlZCBpbiBBUk05MjZFSi1TIGRpcmVjdG9yeS4KICAgIEl0IG1ha2VzIHNlbnNlIHRvIHBsYWNlIHRoaXMgZmlsZSBpbiBPTUFQIHNwZWNpZmljIHN1YmRpcmVjdG9yeSwgaS5lLiBjcHUvYXJtOTI2ZWpzL29tYXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBSb21hbiBNYXNoYWsgPHJvbWV6Nzc3QGdtYWlsLmNvbT4KCmNvbW1pdCAyNDhiMmMzNjcyMTBjMDZkYmQ1ZmJkZWNmMjdlOTdmYmU5ZDA1ZmRiCkF1dGhvcjogUm9tYW4gTWFzaGFrIDxyb21lejc3N0BnbWFpbC5jb20+CkRhdGU6CVR1ZSBPY3QgMjEgMDM6MDE6NDEgMjAwOCAtMDcwMAoKICAgIEFSTS9WZXJzYXRpbGUgcG9ydDogUmVtb3ZlZCB1bnVzZWQgZnVuY3Rpb25zCgogICAgUmVtb3ZhbCBvZiBuZXZlciB1c2VkIGZ1bmN0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSb21hbiBNYXNoYWsgPHJvbWV6Nzc3QGdtYWlsLmNvbT4KCmNvbW1pdCAxMjY2ZGY4ODc3ODFjNzc5ZGVhZjZkMDVlZWEyZWY5MGE0NzBjYjM0CkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBOb3YgMyAxNTo0NDowMSAyMDA4IC0wNjAwCgogICAgcG93ZXJwYzogY2hhbmdlIDg2eHggU01QIGJvb3QgbWV0aG9kCgogICAgV2UgcHV0IHRoZSBib290cGcgZm9yIHRoZSBzZWNvbmRhcnkgY3B1cyBpbnRvIG1lbW9yeSBhbmQgdXNlCiAgICBCUFRSIHRvIGdldCB0byBpdC4JVGhpcyBpcyBhIHN0ZXAgdG93YXJkcyBjb252ZXJ0aW5nIHRvIHRoZQogICAgZVBBUFIgYm9vdCBtZXRob2RvbG9neS4gIEFsc28sIHRoZSBjb2RlIGlzIHdyaXR0ZW4gdG8KICAgIGRlYWwgcHJvcGVybHkgd2l0aCBtb3JlIHRoYW4gNEdCIG9mIFJBTS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiNTQzMTU2MDY4MmQ4ZjMxOGZiYzQ5ZGI4N2NmZTEzYWI0MWQyZWU0CkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBPY3QgMzEgMTc6MTM6NDkgMjAwOCAtMDUwMAoKICAgIDg2NDFIUENOOiBDb25maWcgZmlsZSBjbGVhbnVwCgogICAgVGhlcmUgYXJlIHNldmVyYWwgaXRlbXMgaW4gdGhlIGNvbmZpZyBmaWxlIHRoYXQgd2VyZSBoYXJkY29kZWQKICAgIGJ1dCB0aGF0IHNob3VsZCByZWFsbHkgYmUgYmFzZWQgb24gb3RoZXIgY29uZmlnIG9wdGlvbnMsIHNpbmNlCiAgICB0aGUgcmVnaW9ucyBhcmUgY29udGlndW91cyBhbmQgZGVwZW5kIG9uIGJlaW5nIHNvLglUaGlzIGNsZWFucwogICAgdGhhdCB1cCBhIGJpdC4gIEFsc28sIGFkZCBCUl9QSFlTX0FERFIoKSBtYWNybyB0byBjb252ZXJ0CiAgICBhZGRyZXNzZXMgaW50byB0aGUgcHJvcGVyIGZvcm1hdCBmb3IgQlIgcmVnaXN0ZXJzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRjNzdkZTNmMTQ0Y2EwODhjMzg2N2JkNjI0MDcxOGMxMGY1YTlkNjkKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE9jdCAzMSAxNzoxMzozMiAyMDA4IC0wNTAwCgogICAgODZ4eDogTWFrZSBkcmFtX3NpemUgYSBwaHlzX3NpemVfdAoKICAgIEl0J3MgY3VycmVudGx5IGEgbG9uZyBhbmQgc2hvdWxkIGJlIHBoeXNfc2l6ZV90LgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDEwNDk5MmZjNTQxMzAyYTZiYWM3NDQ0OGUwMWU3ZmRhZDIwYWJjYTAKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIE5vdiAyIDE4OjE5OjMyIDIwMDggLTA2MDAKCiAgICBwb3dlcnBjIDg2eHg6IEhhbmRsZSBDQ1NSIHJlbG9jYXRpb24gZWFybGllcgoKICAgIEN1cnJlbnRseSwgdGhlIENDU1IgZ2V0cyByZWxvY2F0ZWQgd2hpbGUgdHJhbnNsYXRpb24gaXMKICAgIGVuYWJsZWQsIG1lYW5pbmcgd2UgbmVlZCAyIEJBVCB0cmFuc2xhdGlvbnMgdG8gZ2V0IHRvIGJvdGggdGhlCiAgICBvbGQgbG9jYXRpb24gYW5kIHRoZSBuZXcgbG9jYXRpb24uCUFsc28sIHRoZSBERUZBVUxUCiAgICBDQ1NSIGxvY2F0aW9uIGhhcyBhIGRlcGVuZGVuY3kgb24gdGhlIEJBVCB0aGF0IG1hcHMgdGhlCiAgICBGTEFTSCByZWdpb24uICBNb3ZpbmcgdGhlIHJlbG9jYXRpb24gcmVtb3ZlcyB0aGlzIHVubmVjZXNzYXJ5CiAgICBkZXBlbmRlbmN5LiBUaGlzIG1ha2VzIGl0IGVhc2llciBhbmQgbW9yZSBpbnR1dGl2ZSB0bwogICAgbW9kaWZ5IHRoZSBib2FyZCdzIG1lbW9yeSBtYXAuCgogICAgU3dhcCBCQVRzIDMgYW5kIDQgb24gODYxMCBzbyB0aGF0IGFsbCA4Nnh4IGJvYXJkcyB1c2UgdGhlIHNhbWUKICAgIEJBVCBmb3IgQ0NTUiBzcGFjZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhZjVkMTAwZThkNWNkNDlkNjlkNTJkMjBmMTE4MWViMDZkZGI0ZGRmCkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBPY3QgMzEgMTc6MTQ6MTQgMjAwOCAtMDUwMAoKICAgIG1wYzg2NDE6IE1ha2UgUENJIGFuZCBSSU8gbXV0dWFsbHkgZXhjbHVzaXZlLCBmaXggbm9uLVBDSSBidWlsZAoKICAgIFlvdSBjYW4ndCBhY3R1YWxseSBoYXZlIGJvdGgsIGFuZCB3aXRoIHNvbWUgY29taW5nIGNoYW5nZXMgdG8KICAgIGNoYW5nZSB0aGUgbWVtb3J5IG1hcCBmb3IgdGhlIGJvYXJkIGFuZCBzdXBwb3J0IDM2LWJpdCBwaHlzaWNhbCwKICAgIHdlIG5lZWQgdGhlIGV4dHJhIEJBVCB0aGF0IGlzIGJlaW5nIGNvbnN1bWVkIGJ5IGhhdmluZyBib3RoLgoKICAgIEkgYWxzbyBtYWtlIG5vbi1QQ0kgY29uZmlncyBidWlsZCBjbGVhbmx5LCBmb3IgdGhlIHNha2Ugb2Ygc2FuaXR5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk4NjkzYjg1ZDQyZmY0MzgzNzVkYzZkNmRjYWRjNzBlYjdiMDUwYmIKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE9jdCAzMSAxNzoxNDowMCAyMDA4IC0wNTAwCgogICAgbXBjODY0MTogU3RvcCBzdXBwb3J0aW5nIG5vbi1QQ0lfUE5QIGNvbmZpZ3MKCiAgICBXZSBkb24ndCBhY3R1YWxseSBldmVyIGRvIHRoaXMsIHJlbW92ZSB0aGUgY29kZSBzbyB3ZQogICAgY2FuIHN0b3AgbWFpbnRhaW5pbmcgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZTRmNjlkMWJkMjFhMTIwNDk3NDQ5ODlkMmRkNmI1MTk5YzliOGYyMwpBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBPY3QgMjQgMTI6NTk6MTIgMjAwOCArMDAwMAoKICAgIENvbGRGaXJlOiBGaXggTTUzMjlFVkIgYW5kIE01MzczRVZCIG5hbmQgaXNzdWUKCiAgICBGaXggY29tcGlsYXRpb24gaXNzdWUgY2F1c2VkIGJ5IGEgZmV3IG1pc21hdGNoZXMuCiAgICBQcm92aWRlIHByb3BlciBuYW5kIGNoaXAgc2VsZWN0IGVuYWJsZS9kaXNhYmxlIGluCiAgICBuYW5kX2h3Y29udHJvbCgpIHJhdGhlciB0aGFuIGluIGJvYXJkX25hbmRfaW5pdCgpCiAgICBqdXN0IGVuYWJsZSBvbmNlLiBSZW1vdmUgcmVkdW5kYW50IGxvY2FsIG5hbmQgZHJpdmVyCiAgICBmdW5jdGlvbnMgLSBuYW5kX3JlYWRfYnl0ZSgpLCBuYW5kX3dyaXRlX2J5dGUoKSBhbmQKICAgIG5hbmRfZGV2X3JlYWR5KCkgdG8gdXNlIGNvbW1vbiBuYW5kIGRyaXZlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFiMjcwODQ0MjIyNGE1NTFhMGI4NjViNTI3MTAzMDYzMzM4ODg5MzIKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgT2N0IDIyIDExOjU1OjMwIDIwMDggKzAwMDAKCiAgICBDb2xkRmlyZTogRml4IGNvbXBpbGF0aW9uIGVycm9yCgogICAgVGhlIGVycm9yIHdhcyBjYXVzZWQgYnkgdGhlIGNoYW5nZSBmb3Igc3RybWh6KCkgaW4gY3B1LmMuCiAgICBBIGZldyBvZiB0aGVtIHdlcmUgb25lIGV4dHJhIGNsb3NlIHBhcmVudGhlc2lzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNTM2ZTdkYWMxNjc2OTk1NDkxNWE0ODRlNjgyYTJlZmIyODY5OTEzMwpBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBPY3QgMjIgMTE6Mzg6MjEgMjAwOCArMDAwMAoKICAgIENvbGRGaXJlOiBBZGQgTUNGNTMwMXggQ1BVIGFuZCBNNTMwMTdFVkIgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYTIxZDBjMmNjOWFkZDg4OTRkOTcxYWI3OTFmNDAzMmYwNzdkYjgxNwpBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBPY3QgMjEgMTU6Mzc6MDIgMjAwOCArMDAwMAoKICAgIENvbGRGaXJlOiBBZGQgU0JGIHN1cHBvcnQgZm9yIE01MjI3N0VWQgoKICAgIEFkZCBzZXJpYWwgYm9vdCBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiMjAyODE2YzYxMDQyYzE4M2ZlNjdkMDk3YTU4OTNiMGYyZGFmYmEwCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE9jdCAyMSAxNDoxOToyNiAyMDA4ICswMDAwCgogICAgQ29sZEZpcmU6IFVzZSBDRkkgZHJpdmVyIGZvciBNNTI3MkMzCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmMzk2MmQzZjU3NGU1YTFjZmZhY2Q0ZTliYzQ4NzEzMDYwYTJhMzE0CkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE9jdCAyMSAxMzo0Nzo1NCAyMDA4ICswMDAwCgogICAgQ29sZEZpcmU6IFJlbG9jYXRlIEZFQydzIEdQSU8gYW5kIG1paSBmdW5jdGlvbnMgcHJvdG9jb2xzCgogICAgUGxhY2UgRkVDIHBpbiBhc3NpZ25tZW50cyBpbiBjcHVfaW5pdC5jIGZyb20gcGxhdGZvcm0ncwogICAgbWlpLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDZlODBmNWFhMDlmOGQ0MWJhYzUwYjM4ZGM3NDg4ZWNkMjIxMDc4MDIKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgT2N0IDIxIDEyOjE1OjQ0IDIwMDggKzAwMDAKCiAgICBDb2xkRmlyZTogUmVtb3ZlIHBsYXRmb3JtcyBtaWkuYyBmaWxlCgogICAgV2lsbCB1c2UgbWNmbWlpLmMgZHJpdmVyIGluIGRyaXZlcnMvbmV0IHJhdGhlciB0aGFuCiAgICBrZWVwIGNyZWF0aW5nIG5ldyBtaWkuYyBmb3IgZWFjaCBmdXR1cmUgcGxhdGZvcm0uCiAgICBSZW1vdmUgRUIrTUNGLUVWMTIzLCBjb2JyYTUyNzIsIGlkbXIsIE01MjM1RVZCLAogICAgTTUyNzFFVkIsIE01MjcyQzMsIE01Mjc1RVZCLCBNNTI4MkVWQiwgTTUzMjlFVkIsCiAgICBNNTM3M0VWQiwgTTU0NDUxRVZCLCBNNTQ0NTVFVkIsIE01NDd4RVZCLCBhbmQgTTU0OHhFVkIncwogICAgbWlpLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDAxMjUyMmZlZjNiMzgyNDY5MTI1YmViNDZhMzE1YWI0ZGVlMDJmYjAKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgT2N0IDIxIDEwOjAzOjA3IDIwMDggKzAwMDAKCiAgICBDb2xkRmlyZTogTW9kdWxlcyBoZWFkZXIgZmlsZXMgY2xlYW51cAoKICAgIENvbnNvbGlkYXRlIEFUQSwgZVBPUlQsIFFTUEksIEZsZXhDYW4sIFBXTSwgUk5HLAogICAgTURIQSwgU0tIQSwgSU5UQywgYW5kIEZsZXhCdXMgc3RydWN0dXJlcyBhbmQKICAgIGRlZmluaXRpb25zIGluIGltbWFwXzV4eHguaCB0byBtb3JlIHVuaWZ5IG1vZHVsZXMKICAgIGhlYWRlciBmaWxlcy4gQXBwZW5kIERTUEkgc3VwcG9ydCBmb3IgbTU0N3hfOHguCiAgICBTU0kgY2xlYW51cC4gUmVtb3ZlIFVTQiBIb3N0IHN0cnVjdHVyZSBmcm9tIGltbWFwXzUzOS5oLgogICAgQXBwbHkgY2hhbmdlcyB0byB1c2UgRmxleEJ1cyBzdHJ1Y3R1cmVzIGluIG1jZjUyeDIncwogICAgY3B1X2luaXQuYyBhbmQgcGxhdGZvcm0gY29uZmlndXJhdGlvbiBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGFjMjMzMWFlZTk5YWQzNmJlMGZjZmVkOGM0OTkyMmUzYzYxYjU3NmQKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgT2N0IDIxIDA4OjUyOjM2IDIwMDggKzAwMDAKCiAgICBDb2xkRmlyZTogUmVtb3ZlIGxpbmtlciBmaWxlCgogICAgRWFjaCBkaWZmZXJlbnQgYnVpbGQgZm9yIE01NDQ1NUVWQiBhbmQgTTUyMzVFVkIgd2lsbAogICAgY3JlYXRlIGEgdS1ib290LmxkcyBsaW5rZXIgZmlsZS4gSXQgaXMgcmVkdW5kYW50IHRvCiAgICBrZWVwIHRoZSB1LWJvb3QubGRzCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwODI5MzIzMDczYzUwNTU1NmVkNWY1MDczZjkxYWRiNTA0NTg0ZDQ1CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJRnJpIE9jdCAzMSAxMToyNjo0NCAyMDA4IC0wNTAwCgogICAgcHBjOiBGaXggY29tcGlsZSB3YXJuaW5ncyB3aGVuICFDT05GSUdfT0ZfTElCRkRUCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCBhODBiMjFkNTEyNzU4MzE3MWQ2ZTliYzdmNzIyOTQ3NjQxODk4MDEyCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIE9jdCAzMSAxMjoxMjoxMiAyMDA4ICswMTAwCgogICAgY29tbW9uL01ha2VmaWxlOiBjcmVhdGUgb3RoZXJzIGdyb3VwIGZvciBub24gY29yZSwgZW52aXJvbm1lbnQgYW5kIGNvbW1hbmQgZmlsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDYwYzY4ZDljMWM2ZDE4Y2UwMmM4NjJhMDU3MThmZDk0Zjk3YzEzZDAKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgT2N0IDMxIDAxOjEzOjM3IDIwMDggKzAxMDAKCiAgICBUUU04MjYwOiB1c2UgQ0ZJIGZsYXNoIGRyaXZlciBpbnN0ZWFkIG9mIGN1c3RvbSBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAyMGQwNDc3NGY0ZWYzZjZlMzg5NzQ2MzZlMGUzNmFlMGYwYjU1MDFmCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgT2N0IDMwIDE3OjM1OjMwIDIwMDggLTA1MDAKCiAgICBDb25zb2xpZGF0ZSBNQVgvTUlOIGRlZmluaXRpb25zCgogICAgVGhlcmUgd2VyZSBzZXZlcmFsLCBub3cgdGhlcmUgaXMgb25lICh0d28gaWYgeW91IGNvdW50IHRoZSBsb3dlci1jYXNlCiAgICB2ZXJzaW9ucykuCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDI5OGU0NzZjNjZmZDg4ZDBiYzRmMDM3MTExODY1MmQyYjVkZTRlOGEKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVGh1IE9jdCAzMCAwOToyMzowOSAyMDA4ICswMTAwCgogICAgbWdzdXZkOiByZW1vdmUgdW51c2VkIGRlZmluZXMgaW4gY29uZmlnIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgM2NiZDgyMzExNmVhOGI3YzY1NGUyNzVhOGMyZmNhODdjZDFmNWRjNQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBOb3YgMiAxNjoxNDoyMiAyMDA4ICswMTAwCgogICAgQ29kaW5nIFN0eWxlIGNsZWFudXAsIHVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGE0N2Y5NTdhYjUyMzAxOTk5MmZkZWY4NTdhZjAxYmQ3MWM1OGE0ZGEKQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pLWxpc3RAZ251ZGQuY29tPgpEYXRlOglGcmkgT2N0IDMxIDIyOjMzOjIxIDIwMDggKzAxMDAKCiAgICBOQU5EOiBBbGxvdyBOQU5EIGFuZCBPbmVOQU5EIHRvIGNvZXhpc3QKCiAgICBUaGlzIHJlbW92ZXMgaW4gbmFuZC5oIGNvZGUgdGhhdCBpcyB2ZXJiYXRpbSBkdXBsaWNhdGVkIGZyb20gYmJtLmgsCiAgICBpbmNsdWRpbmcgZGlyZWN0bHkgYmJtLmggaW4gbmFuZC5oLiBUaGUgcHJldmlvdXMgc3RhdGUgb2YgYWZmYWlycwogICAgcHJldmVudGVkIGNvbXBpbGluZyBjb2RlIGZvciBhIGJvYXJkIGhvc3RpbmcgYm90aCBOQU5EIGFuZCBPbmVOQU5EIGNoaXBzLgoKICAgIFJlcG9ydGVkLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyZjc3YzdmNDViOWEzN2VmMjY1YThkYmUzYzE4ZWZhNzA2ZmVkMjE0CkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBPY3QgMzEgMTM6NTE6MTIgMjAwOCAtMDUwMAoKICAgIEpGRlMyOiBFbGltaW5hdGUgY29tcGlsZXIgZXJyb3Igd2hlbiBib3RoIE5BTkQgYW5kIE9uZU5BTkQgYXJlIGVuYWJsZWQuCgogICAgUmVwb3J0ZWQtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmktbGlzdEBnbnVkZC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjNTdmYzI4OTQ3ZTI0OGZiMDNjNDlhMjhiNDY3Njg2Mjk5ODk1MDU1CkF1dGhvcjogSmFzb24gSmluIDxKYXNvbi5KaW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE9jdCAzMSAwNTowNzowNCAyMDA4IC0wNTAwCgogICAgTkFORDogQWRkIE5BTkQgc3VwcG9ydCBmb3IgTVBDODUzNkRTIGJvYXJkCgogICAgVGhpcyBwYXRjaCBkZWZpbmVzIDFNIFRMQiZMQVcgc2l6ZSBmb3IgTkFORCBvbiBNUEM4NTM2RFMsIGFzc2lnbnMgMHhmZmEwMDAwMAogICAgZm9yIENPTkZJR19TWVNfTkFORF9CQVNFIGFuZCBhZGRzIG90aGVyIE5BTkQgc3VwcG9ydHMgaW4gY29uZmlnIGZpbGUuCiAgICBJdCBhbHNvIG1vdmVzIGVudmlyb25tZW50KENPTkZJR19FTlZfQUREUikgb3V0c2lkZSBvZiB1LWJvb3QgaW1hZ2UuCgogICAgU2luZ2VkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5KaW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDZmYzExMGJkOGE4ZDY0MmI4ZjdiMDY1M2JkOWEwOGEwYjdjM2Q1MGIKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgT2N0IDMxIDA1OjA2OjE0IDIwMDggLTA1MDAKCiAgICBOQU5EOiBGaXggQ09ORklHX0VOVl9BRERSIGZvciBNUEM4NTcyRFMKCiAgICBDT05GSUdfRU5WX0FERFIgc2hvdWxkIGJlIChDT05GSUdfU1lTX01PTklUT1JfQkFTRSAtIENPTkZJR19FTlZfU0VDVF9TSVpFKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA1MWI1NzJhODAxYmU1Nzc5MGZlMjZhZGFhNTMwMjEwZTdmYmE1OWNjCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglGcmkgT2N0IDI0IDEwOjQ5OjQ4IDIwMDggKzA5MDAKCiAgICBzaDogcnNrNzIwMzogTW92ZWQgcnNrNzIwMyBib2FyZCB0byBib2FyZC9yZW5lc2FzCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDU4NDUzYjAwYjNlYmIyNmFhYTkwMTIxMDAyM2Y5OTUwNGE5MGJiMDAKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CUZyaSBPY3QgMjQgMTA6NDg6MzEgMjAwOCArMDkwMAoKICAgIHNoOiBNaWdvUjogTW92ZWQgTWlnb1IgYm9hcmQgdG8gYm9hcmQvcmVuZXNhcwoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBjMWRhMmEyMjgxN2JhODViNDM3YWZhMmY0ZTcxNWU2NThiMjE5ZmQxCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglGcmkgT2N0IDI0IDEwOjM5OjQ0IDIwMDggKzA5MDAKCiAgICBzaDogcjJkcGx1czogTW92ZWQgcjJkcGx1cyBib2FyZCB0byBib2FyZC9yZW5lc2FzCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDc4Mzg1YmYyMzU5ZDgyODE4NGQwYjM2NDlmN2FlNmI5MzM0MjAwMDAKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CUZyaSBPY3QgMjQgMTA6MzY6MTMgMjAwOCArMDkwMAoKICAgIHNoOiBzaDc3NjNyZHA6IE1vdmVkIHNoNzc2M3JkcCBib2FyZCB0byBib2FyZC9yZW5lc2FzCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGM2NTI1ZDQ1OWMzNTBiZmMyNDZlYTc4MjY0NTZhZjc3ZTFlMzE0ZWIKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CUZyaSBPY3QgMjQgMTA6MzU6MTkgMjAwOCArMDkwMAoKICAgIHNoOiBzaDc3ODVsY3I6IE1vdmVkIHNoNzc4NWxjciBib2FyZCB0byBib2FyZC9yZW5lc2FzCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGFjZDNlMzBkMDlhNzNmODc2MjIyZjBkNDk2YzRmNTJlZTlkMDc3MWQKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CUZyaSBPY3QgMjQgMTA6MzQ6MjEgMjAwOCArMDkwMAoKICAgIHNoOiByNzc4MG1wOiBNb3ZlZCByNzc4MG1wIGJvYXJkIHRvIGJvYXJkL3JlbmVzYXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgZjg0ZTZlYTI3NTM1M2I4ZmVhNzcyZWM3NTUzZmY3ZTRiMWY2NDJlMApBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJRnJpIE9jdCAyNCAxMDozMjoxNCAyMDA4ICswOTAwCgogICAgc2g6IGFwMzI1cnhhOiBNb3ZlZCBhcDMyNXJ4YSBib2FyZCB0byBib2FyZC9yZW5lc2FzCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDlhYmRhNmJhNzM1ZWZiMDU5ZjYzZGNiMjVkNzhiMTc0YmZjYWQxYWQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEB4cGVydC5kZW54LmRlPgpEYXRlOglGcmkgT2N0IDMxIDAxOjEyOjI4IDIwMDggKzAxMDAKCiAgICBDRkkgRHJpdmVyOiBGaXggImZsYXNoIG5vdCByZWFkeSIgcHJvYmxlbQoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBwcm9ibGVtIG9uIHN5c3RlbXMgd2hlcmUgdGhlIE5PUiBmbGFzaCBpcyBhdHRhY2hlZAogICAgdG8gYSA2NCBiaXQgYnVzLiAgVGhlIHRvZ2dsZSBiaXQgZGV0ZWN0aW9uIGluIGZsYXNoX3RvZ2dsZSgpIGlzIGJhc2VkCiAgICBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZSBzYW1lIGZsYXNoIGFkZHJlc3MgaXMgcmVhZCB0d2ljZSB3aXRob3V0CiAgICBhbnkgb3RoZXIgaW50ZXJqYWNlbnQgZmxhc2ggYWNjZXNzZXMuICBIb3dldmVyLCBvbiAzMiBiaXQgc3lzdGVtcyB0aGUKICAgIGZ1bmN0aW9uIGZsYXNoX3JlYWQ2NCgpIFthcyBjdXJyZW50bHkgaW1wbGVtZW50ZWRdIGRvZXMgbm90IHBlcmZvcm0KICAgIGFuIGF0b21pYyA2NCBiaXQgcmVhZCAtIGluc3RlYWQsIHRoaXMgaXMgYnJva2VuIGRvd24gaW50byB0d28gMzIgYml0CiAgICByZWFkIGFjY2Vzc2VzIG9uIGFkZHJlc3NlcyAiYWRkciIgYW5kICJhZGRyICsgNCIuICBTbyBpbnN0ZWFkIG9mCiAgICByZWFkaW5nIGEgNjQgYml0IHZhbHVlIHR3aWNlIGZyb20gImFkZHIiLCB3ZSBzZWUgYSBzZXF1ZW5jZSBvZiA0IDMyCiAgICBiaXQgcmVhZHMgZnJvbSAiYWRkciIsICJhZGRyICsgNCIsICJhZGRyIiwgYW5kICJhZGRyICsgNCIuCVRoZQogICAgY29uc2VxdWVuY2UgaXMgdGhhdCBmbGFzaF90b2dnbGUoKSBmYWlscyB0byB3b3JrLgoKICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBhIHNpbXBsZSwgYnV0IHNvbWV3aGF0IHVnbHkgc29sdXRpb24sIGFzIGl0CiAgICBhdm9pZHMgdGhlIHVzZSBvZiBmbGFzaF9yZWFkNjQoKSBpbiB0aGlzIGNyaXRpY2FsIHBsYWNlIChieSBicmVha2luZwogICAgaXQgZG93biBtYW51YWxseSBpbnRvIDMyIGJpdCByZWFkIG9wZXJhdGlvbnMpIGluc3RlYWQgb2YgcmV3cml0aW5nCiAgICBmbGFzaF9yZWFkNjQoKSBzdWNoIHRvIHBlcmZvcm0gYXRvbWljIDY0IGJpdCByZWFkcyBhcyBvbmUgY291bGQKICAgIGV4cGVjdC4gIEhvd2V2ZXIsIHN1Y2ggYSByZXdyaXRlIHdvdWxkIHJlcXVpcmUgdGhlIHVzZSBvZiBmbG9hdGluZwogICAgcG9pbnQgbG9hZCBvcGVyYXRpb25zLCB3aGljaCBiZWNvbWVzIHByZXR0eSBjb21wbGV4OgoKCXNhdmUgTVNSOwoJc2V0IEZsb2F0aW5nIFBvaW50IEVuYWJsZSBiaXQgaW4gTVNSOwoJdXNlICJsZmQiIGluc3RydWN0aW9uIHRvIHBlcmZvcm0gYXRvbWljIDY0IGJpdCByZWFkOwoJdXNlICJzdGZkIiB0byBzdG9yZSB2YWx1ZSB0byB0ZW1wb3JhcnkgdmFyaWFibGUgb24gc3RhY2s7Cglsb2FkIHU2NCB2YWx1ZSBmcm9tIHRlbXBvcmFyeSB2YXJpYWJsZTsKCXJlc3RvcmUgc2F2ZWQgTVNSOwoJcmV0dXJuIHU2NCB2YWx1ZTsKCiAgICBUaGUgYmVuZWZpdC1jb3N0IHJhdGlvIG9mIHN1Y2ggYW4gaW1wbGVtZW50YXRpb24gd2FzIGNvbnNpZGVyZWQgdG9vCiAgICBiYWQgdG8gYWN0dWFsbHkgYXR0ZW1wdCB0aGlzLCBlc3BlY2lhbGx5IGFzIHdlIGNhbiBleHBlY3QgdGhhdCBzdWNoCiAgICBhbiBpbXBsZW1lbnRhdGlvbiB3b3VsZCBub3Qgb25seSBoYXZlIGEgYmlnZ2VyIG1lbW9yeSBmb290cHJpbnQgYnV0CiAgICBhbHNvIGNhdXNlIGEgcGVyZm9ybWFuY2UgZGVncmFkYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjZGQ0ZmU2M2IwOTRkNGI3NjdmMTJmZjI0MWQ3MjU2NmI0NjFlZTYxCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgT2N0IDMxIDEwOjQ4OjA4IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IEZpeCBzcGVsbGluZyBlcnJvciBpbiBNQUlOVEFJTkVSUyBmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGJlMjcwNzk4OTAwYjc1YWQ5YzQ3YzdiNzljNzJmNzA0NDExOTZjNTYKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVHVlIE9jdCAyOCAxMzozNzowMCAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBVcGRhdGUgUE1DNDQwIGJvYXJkIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGJyaW5ncyBQTUM0NDAgYm9hcmQgc3VwcG9ydCB1cCB0byBkYXRlOgoKICAgIC0gZml4IEdQSU8gY29uZmlndXJhdGlvbgogICAgLSBhZGQgbWlzY19pbml0X2YoKQogICAgLSB1c2UgYmV0dGVyIHZhbHVlcyBmb3IgdXNiYWN0IHZhcmlhYmxlCiAgICAtIGZpeCBVU0IgMi4wIHBoeSByZXNldCBzZXF1ZW5jZQogICAgLSBzaHJpbmsgQkFSMiB0byBzYXZlIFBDSSBhZGRyZXNzIHNwYWNlCiAgICAtIGFkZCBGRFQgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDc1MTgzYjFhN2ZjMDQyMDZkOTc3OWQxM2YxNmUwMzg1M2Q3ZTk2NWQKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVHVlIE9jdCAyOCAxMzozNjo1OSAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBGaXggUE1DNDQwIEJTUCBjb21tYW5kcwoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIFBNQzQ0MCBCU1AgY29tbWFuZHMgcGFpbml0IGFuZCBzZWxmcmVzZXQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3NmI1NjViNjlmODg2ZDVhZTc0OGRiNjVlNDRmNDY0YjBlNzBkNDFhCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVR1ZSBPY3QgMjggMTM6MzY6NTggMjAwOCArMDEwMAoKICAgIHBwYzR4eDogVXBkYXRlIFBNQzQ0MCBib2FyZCBjb25maWd1cmF0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgY2EwYzJkNDJiOTMxMTZhOGUxYjhlZjhhZDQ0OTNjN2RjOWI1ZjJlNApBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUdWUgT2N0IDI4IDEzOjM2OjU3IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IEZpeCBlc2QgbG9hZHBjaSBjb21tYW5kCgogICAgVGhpcyBwYXRjaCBmaXhlcyBlc2QncyBsb2FkcGNpIGNvbW1hbmQgd2hlbiBub3QgYWxsCiAgICBtZW1vcnkgb24gYWRhcHRlciBib2FyZHMgaXMgYWNjZXNzYWJsZSB2aWEgUENJLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDQ5MmFhOWVhMTM3OTFjYTQ1OTFiNWJkZTg5NWE0MjVlMjdhZTJkMTAKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVHVlIE9jdCAyOCAxMzozNjo1NiAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBDbGVhbiB1cCBQTUM0NDAgaGVhZGVyCgogICAgLUNvZGluZ3N0eWxlIGNsZWFudXAKICAgIC1SZW1vdmUgdW51c2VkIEdQSU8gZGVmaW5lCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMjk1MTMzMjU4YTQ0Zjk3YTU3ZmIyZWMzMzlhZWNmZGExMWY0ZGI5NQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUdWUgT2N0IDI4IDEzOjM2OjU1IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IEhhbmRsZSBvdGhlciBib2FyZCB2YXJpYW50IGluIFBNQzQ0MCBGUEdBIGNvZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjYzJkYzliMDhjZjdjMDlmOWYyMzdmOGNiOTMwM2YxMTYwM2Q0ZmIwCkF1dGhvcjogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+CkRhdGU6CU1vbiBPY3QgMjcgMTI6MzU6NTkgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogTWVyZ2UgeGlsaW54LXBwYzQ0MCBhbmQgeGlsaW54LXBwYzQwNSBjZmcKCiAgICBYaWxpbnggcHBjNDQwIGFuZCBwcGM0MDUgaGF2ZSBtYW55IHNpbWlsYXJpdGllcy4gVGhpcyBwYXRjaCBtZXJnZSB0aGUKICAgIGNvbmZpZyBmaWxlcyBvZiBib3RoIGluZnJhc3R1Y3R1cmVzCgogICAgU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgM2JlZmQ4NTYzM2QzM2M0ZGNjYTFmMzU5YzNmNDg0OGM1YWI4ZTRkMgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IE9jdCAyNSAwNjo0NTozMSAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBDb3JyZWN0bHkgY29uZmlndXJlIHRoZSBHUElPIHBpbiBtdXhpbmcgb24gQXJjaGVzCgogICAgQXJjaGVzIGRvZXNuJ3QgdXNlIFBlckNTMyBidXQgR1BJTzQzLCBzbyBsZXQncyBjb25maWd1cmUgdGhlIEdQSU8KICAgIHBpbiBtdWx0aXBsZXhpbmcgY29ycmVjdGx5CgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDdjODRmZTZhMDZkYWQ5Zjc5M2VkODViMzliMWU2YzExYTc4ODJmNWMKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgT2N0IDMwIDIzOjIyOjA0IDIwMDggKzAxMDAKCiAgICBGaXggdG8gdGhlIGF1dG8tdXBkYXRlIGZlYXR1cmUgZG9jdW1lbnRhdGlvbiAoQ09ORklHX1VQREFURV9URlRQX01TRUNfTUFYKQoKICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgNGJjN2RlZWU5MDk1ZjIxZTI0M2I3MjRjYTNkNjM0MjUxYzFkNTQzMgpBdXRob3I6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgpEYXRlOglXZWQgT2N0IDI5IDIzOjI3OjQ1IDIwMDggLTA1MDAKCiAgICBsaWJmZHQ6IEZpeCBidWcgaW4gZmR0X3N1Ym5vZGVfb2Zmc2V0X25hbWVsZW4oKQoKICAgIFRoZXJlJ3MgY3VycmVudGx5IGFuIG9mZi1ieS1vbmUgYnVnIGluIGZkdF9zdWJub2RlX29mZnNldF9uYW1lbGVuKCkKICAgIHdoaWNoIGNhdXNlcyBpdCB0byBrZWVwIHNlYXJjaGluZyBhZnRlciBpdCdzIGZpbmlzaGVkIHRoZSBzdWJub2RlcyBvZgogICAgdGhlIGdpdmVuIHBhcmVudCwgYW5kIGludG8gdGhlIHN1Ym5vZGVzIG9mIHNpYmxpbmdzIG9mIHRoZSBvcmlnaW5hbAogICAgbm9kZSB3aGljaCBjb21lIGFmdGVyIGl0IGluIHRoZSB0cmVlLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmMjQyYTA4ODcxODM5ZWFjMDgxYmE1YjU5OWFmOTc5ZjNhMTQ4YTBkCkF1dGhvcjogUGV0ZXIgS29yc2dhYXJkIDxqYWNtZXRAc3Vuc2l0ZS5kaz4KRGF0ZToJVHVlIE9jdCAyOCAwODoyNjo1MiAyMDA4ICswMTAwCgogICAgZmR0X3Jlc2l6ZSgpOiBlbnN1cmUgbWluaW11bSBwYWRkaW5nCgogICAgZmR0X2FkZF9tZW1fcnN2KCkgcmVxdWlyZXMgc3BhY2UgZm9yIGEgc3RydWN0IGZkdF9yZXNlcnZlX2VudHJ5CiAgICAoMTYgYnl0ZXMpLCBzbyBtYWtlIHN1cmUgdGhhdCBmZHRfcmVzaXplIGF0IGxlYXN0IGFkZHMgdGhhdCBtdWNoCiAgICBwYWRkaW5nLCBubyBtYXR0ZXIgd2hhdCB0aGUgbG9jYXRpb24gb3Igc2l6ZSBvZiB0aGUgZmR0IGlzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIEtvcnNnYWFyZCA8amFjbWV0QHN1bnNpdGUuZGs+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGQ2ODViNzRjNjRhMzg4NDlmMWExMjliM2FiODQ2ZmJmNjdkZDkzN2UKQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgT2N0IDIzIDIxOjU5OjM1IDIwMDggKzA4MDAKCiAgICA3NHh4OiB1c2UgcjQgaW5zdGVhZCBvZiByMiBpbiBsb2NrX3JhbV9pbl9jYWNoZSBhbmQgdW5sb2NrX3JhbV9pbl9jYWNoZQoKICAgIFRoZSBwYXRjaCBpcyBmb2xsb3dpbmcgdGhlIGNvbW1pdCAzOTI0Mzg0MDYwNDE0MTVmZTY0YWI4NzQ4ZWM1YWI1YWQwMWQxY2Y3CgogICAgbXBjODZ4eDogdXNlIHI0IGluc3RlYWQgb2YgcjIgaW4gbG9ja19yYW1faW5fY2FjaGUgYW5kIHVubG9ja19yYW1faW5fY2FjaGUKCiAgICBUaGlzIGlzIG5lZWRlZCBpbiB1bmxvY2tfcmFtX2luX2NhY2hlKCkgYmVjYXVzZSBpdCBpcyBjYWxsZWQgZnJvbSBDIGFuZAogICAgd2lsbCBjb3JydXB0IHRoZSBzbWFsbCBkYXRhIGFyZWEgYW5jaG9yIHRoYXQgaXMga2VwdCBpbiBSMi4KCiAgICBsb2NrX3JhbV9pbl9jYWNoZSgpIGlzIG1vZGlmaWVkIHNpbWlsYXJseSBhcyBnb29kIGNvZGluZyBwcmFjdGljZSwgYnV0CiAgICBpcyBub3QgY2FsbGVkIGZyb20gQy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KCiAgICBhbHNvLCB0aGUgcjIgaXMgdXNlZCBhcyBnbG9iYWwgZGF0YSBwb2ludGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZTA1M2FiMTkwM2NjYWU2MDQ4ZWY3NTkwMjViOWY2NzViYmE5MTQ1MApBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgT2N0IDI4IDExOjQ1OjA0IDIwMDggLTA1MDAKCiAgICBtcGM4M3h4IHBjaTogUm91bmQgdXAgbWVtb3J5IHNpemUgaW4gaW5ib3VuZCB3aW5kb3cuCgogICAgVGhlIGN1cnJlbnQgY2FsY3VsYXRpb24gd2lsbCBmYWlsIHRvIGNvdmVyIGFsbCBtZW1vcnkgaWYKICAgIGl0cyBzaXplIGlzIG5vdCBhIHBvd2VyIG9mIHR3by4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMWM2NzE5NzdkYzgxMzU5NjI4YmUyN2FjOTljMTc0ZTc2ZTgwNjliYQpBdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBPY3QgMjMgMjE6MTk6MTMgMjAwOCArMDgwMAoKICAgIDg2eHg6IHJlbW92ZSB0aGUgdW51c2VkIGRlZmluaXRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGVhYTQ0YzVkYzgzNzU2YzMwNjdiOWU2YzlkYjYyNmZhY2QwYjA2NjAKQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgT2N0IDI4IDE3OjQ3OjQ5IDIwMDggKzA4MDAKCiAgICA4Nnh4OiByZW1vdmUgdGhlIHJlZHVuZGFudCByMiBnbG9iYWwgZGF0YSBwb2ludGVyIHNhdmUKCiAgICBUaGUgY29tbWl0IDY3MjU2Njc4ZjAwYzA5YjBhN2YxOWU4NjJlNWMxODQ3NTUzZDMxYmMgYWRkCiAgICB0aGUgYW5vdGhlciBnbG9iYWwgZGF0YSBwb2ludGVyIHNhdmUsIGJ1dCBpbiBmYWN0IHRoZQogICAgZ2xvYmFsIGRhdGEgcG9pbnRlciB3aWxsIGJlIGluaXRpYWxpemVkIGluIHRoZSBib2FyZF9pbml0X3IsCiAgICBzbyByZW1vdmUgaXQgc3VjaCBhcyB0aGUgODV4eC84M3h4IGZhbWlseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEt1bWFyIEdhbGEgPGt1bWFyLmdhbGFAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiZDg4OGU5NTQ0NDE5NjY1MzM0YTZmNDdmODFmMzQwMTFjZWEzOGYzCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE9jdCAyOCAxNzo0Nzo0MSAyMDA4ICswODAwCgogICAgODZ4eDogcmVtb3ZlIHRoZSB1bnVzZWQgY29kZSBmb3IgODZ4eCBmYW1pbHkKCiAgICBJIGJlbGlldmUgdGhlc2UgY29kZSB3YXMgY29waWVkIGZyb20gNzR4eCBmYW1pbHksIGJ1dCBmb3IKICAgIDg2eHgsIGl0IGlzIHVudXNlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEt1bWFyIEdhbGEgPGt1bWFyLmdhbGFAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1YmExZWY1MDc0MDJiYzVlMzQ0ZGMzNzQyMDM3OTJhNDBmMjIyZThhCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE9jdCAyOCAxNzo0NjozNSAyMDA4ICswODAwCgogICAgODZ4eDogcmVtb3ZlIHRoZSBzZWNvbmQgRERSIExBVyBzZXR0aW5nIGZvciBtcGM4NjQxaHBjbgoKICAgIFRoZSBERFIxIExBVyB3aWxsIHByZWNlZGVuY2UgdGhlIEREUjIgTEFXLCBzbyByZW1vdmUKICAgIHRoZSBzZWNvbmQgRERSIExBVy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDEzN2EyZGZkMTFhYzUxYWUzMTU0ZjEzZjMyMzYwOWIzM2E0YTA3MmUKQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgT2N0IDI4IDE3OjQ2OjIzIDIwMDggKzA4MDAKCiAgICA4Nnh4OiByZW1vdmUgdGhlIHVudXNlZCBkZHJfZW5hYmxlX2VjYyBpbiB0aGUgYm9hcmQgZmlsZQoKICAgIFRoZSBERFIgY29udHJvbGxlciBvZiA4Nnh4IHByb2Nlc3NvcnMgaGF2ZSB0aGUgRUNDIGRhdGEgaW5pdAogICAgZmVhdHVyZSwgYW5kIHRoZSBuZXcgRERSIGNvZGUgaXMgdXNpbmcgdGhlIGZlYXR1cmUsIHdlIGRvbid0CiAgICBuZWVkIHRoZSB3YXkgd2l0aCBETUEgdG8gaW5pdCBtZW1vcnkgYWdhaW4uCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBLdW1hciBHYWxhIDxrdW1hci5nYWxhQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZGMyYWRhZDg1YmY1ODBkNjU5MTZjOTQwNjgzZjZlOTY3MWU4YTVkZApBdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBPY3QgMjggMTc6NDY6MTIgMjAwOCArMDgwMAoKICAgIDg2eHg6IE1vdmUgdGhlIGNsZWFyX3RsYnMgYmVmb3JlIE1NVSB0dXJuIG9uCgogICAgV2UgbXVzdCBpbnZhbGlkYXRlIFRMQnMgYmVmb3JlIE1NVSB0dXJuIG9uLCBidXQKICAgIGN1cnJlbnRseSB0aGUgY29kZSBpcyBub3QsIGlmIHRoZXJlIGFyZSBzb21lIHN0YWxlCiAgICBUTEIgZW50cnkgdmFsaWQgaW4gdGhlIFRMQnMsIGl0IHdpbGwgY2F1c2Ugc3RyYW5nZQogICAgaXNzdWUuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1Y2RhZGUwN2IxMThkMDcxNTRjYjg4MjY1MGY5Nzc4Y2VjYzhhODdjCkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBPY3QgMjcgMTU6NTc6MDggMjAwOCAtMDUwMAoKICAgIG1wYzgzMTNlcmRiOiBEb2N1bWVudCBOQU5EIGJvb3QuCgogICAgUHJldmlvdXNseSwgdGhlIGRvY3VtZW50YXRpb24gY2xhaW1lZCB0aGF0IE5BTkQgYm9vdCBpcyBub3Qgc3VwcG9ydGVkLgogICAgVGhpcyBpcyBubyBsb25nZXIgdHJ1ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiZDc4YmM2YjJhZWJmNTU2NmFhYzQ2NGY5MzZiODhkZmQ5N2FiMGJkCkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBPY3QgMjkgMTQ6MjA6MjYgMjAwOCAtMDUwMAoKICAgIE5BTkQ6IFByb3Blcmx5IGNyZWF0ZSBKRkZTMiBjbGVhbm1hcmtlcnMuCgogICAgQXMgcmVwb3J0ZWQgYnkgSWxrbyBJbGlldiA8aWxpZXZAcm9uZXRpeC5hdD4sIHRoZSAibmFuZCBlcmFzZSBjbGVhbiIKICAgIGNvbW1hbmQgaXMgY3VycmVudGx5IGJyb2tlbiwgYW5kIGFtb25nIG90aGVyIHRoaW5ncyBjYXVzZXMgYWxsIGJsb2NrcwogICAgdG8gYmUgbWFya2VkIGJhZC4KCiAgICBUaGlzIGltcGxlbWVudHMgaXQgcHJvcGVybHkgdXNpbmcgTVREX09PQl9BVVRPLCBhbG9uZyB3aXRoIHNvbWUKICAgIGluZGVudGF0aW9uIGZpeGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGY3ZmU1N2MwOTg2NmI0NDY5MmQxOGM4Y2YyMjgyOGJkMTM3ZWM1OGQKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE9jdCAyOSAxMzo0Mjo0MSAyMDA4IC0wNTAwCgogICAgTkFORCBmc2wgZWxiYzogU2V0IEZNUltFQ0NNXSBiYXNlZCBvbiBwYWdlIHNpemUuCgogICAgSGFyZHdhcmUgZXhwZWN0cyBFQ0NNIDAgZm9yIHNtYWxsIHBhZ2UgYW5kIEVDQ00gMSBmb3IgbGFyZ2UgcGFnZQogICAgd2hlbiBib290aW5nIGZyb20gTkFORCwgc28gdXNlIHRob3NlIGRlZmF1bHRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGMwMTNiNzQ5NzVkYWIwODA1ZWY2ZDM2OWIwMTMyMzBjNGU4YTY2MGQKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgT2N0IDI5IDEzOjMyOjU5IDIwMDggLTA0MDAKCiAgICBOQU5EOiBBZGQgc3VwcG9ydCBmb3IgTVBDODU3MkRTIGJvYXJkCgogICAgVGhpcyBwYXRjaCBkZWZpbmVzIDFNIFRMQiZMQVcgc2l6ZSBmb3IgTkFORCBvbiBNUEM4NTcyRFMsIGFzc2lnbnMKICAgIDB4ZmZhMDAwMDAgZm9yIENPTkZJR19TWVNfTkFORF9CQVNFIGFuZCBhZGRzIG90aGVyIE5BTkQgc3VwcG9ydHMgaW4KICAgIGNvbmZpZyBmaWxlLgoKICAgIEl0IGFsc28gbW92ZXMgZW52aXJvbm1lbnQoQ09ORklHX0VOVl9BRERSKSBvdXRzaWRlIG9mIHUtYm9vdCBpbWFnZSwgdG8KICAgIG1ha2Ugcm9vbSBmb3IgdGhlIGluY3JlYXNlZCBjb2RlIHNpemUgd2l0aCBOQU5EIGVuYWJsZWQuCgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5KaW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0ZTE5MGIwM2FhZjIzMDliZDJlMDI1ZDExODdhMmNhODgwZmVkYzk1CkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE9jdCAyOSAxMTowNTo1NSAyMDA4IC0wNDAwCgogICAgTWFrZSBGcmVlc2NhbGUgbG9jYWwgYnVzIHJlZ2lzdGVycyBhdmFpbGFibGUgZm9yIGJvdGggODN4eCBhbmQgODV4eC4KCiAgICAtIFJlbmFtZSBsYnVzODN4eF90IHRvIGZzbF9sYnVzX3QgYW5kIG1vdmUgaXQgdG8gYXNtL2ZzbF9sYmMuaCBzbyB0aGF0IGl0CiAgICAgIGNhbiBiZSBzaGFyZWQgYnkgYm90aCA4M3h4IGFuZCA4NXh4CiAgICAtIFJlbW92ZSBsYnVzODN4eF90IGFuZCByZXBsYWNlIGl0IHdpdGggZnNsX2xidXNfdCBpbiBhbGwgODN4eCBib2FyZHMKICAgICAgZmlsZXMgd2hpY2ggdXNlIGxidXM4M3h4X3QuCiAgICAtIE1vdmUgRk1SLCBGSVIsIEZDUiwgRlBBUiwgTFRFU1IgZnJvbSBtcGM4M3h4LmggdG8gYXNtL2ZzbF9sYmMuaCBzbyB0aGF0CiAgICAgIDg1eHggY2FuIHNoYXJlIHRoZW0uCgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5KaW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2OTVjMTMwZTRiZjc1YjQ0NDcyMGRkZmQ4M2FjYTg4ZjQxYzA0NmNmCkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBPY3QgMjcgMTU6Mzg6MzAgMjAwOCAtMDUwMAoKICAgIE5BTkQ6IEFsaWduIHJpZ2h0IGNvbHVtbiBvZiB0aGUgc2hvcnRoZWxwIHdpdGggb3RoZXIgY29tbWFuZHMuCgogICAgSSBhY2NpZGVudGFsbHkgYnJva2UgdGhpcyBpbiB3aGVuIG1ha2luZyBjb25zaXN0ZW50IHRoZSBwYXJ0aWFsCiAgICBhbGlnbm1lbnQgb2YgdGhlIGxvbmdoZWxwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDMzZWZkZTVlY2FjOTFhYjExOGZmMDBiOTVhMTgxZmQ2ZDc1Zjg2NDUKQXV0aG9yOiBLYXJsIEJlbGRhbiA8a2FybC5iZWxkYW5AZ21haWwuY29tPgpEYXRlOglNb24gU2VwIDE1IDE2OjA4OjAzIDIwMDggKzAyMDAKCiAgICBOQU5EOiBSZXNldCBjaGlwIG9uIHBvd2VyLXVwCgogICAgU29tZSBjaGlwcyByZXF1aXJlIGEgUkVTRVQgYWZ0ZXIgcG93ZXItdXAgKGUuZy4gTWljcm9uIE1UMjlGeEd4eHh4eCkuCiAgICBUaGUgZmlyc3QgY29tbWFuZCBzZW50IGlzIE5BTkRfQ01EX1JFQURJRC4KICAgIElzc3VlIGEgTkFORF9DTURfUkVTRVQgaW4gbmFuZF9zY2FuX2lkZW50IGJlZm9yZSByZWFkaW5nIHRoZSBkZXZpY2UgaWQuCiAgICBUZXN0ZWQgd2l0aCBhbiBNVDI5RjRHMDhBQUMuCgogICAgU2lnbmVkLW9mZi1ieTogS2FybCBCZWxkYW4gPGthcmwuYmVsZGFuQGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGM0NTkxMmQ4YWJjNTJkZTc5NmI5MDU5YTU4ZmFmN2M0MTY2ZWFiNTgKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE9jdCAyNCAxNjoyMDo0MyAyMDA4IC0wNTAwCgogICAgTkFORDogc3luYyB3aXRoIDIuNi4yNwoKICAgIFRoaXMgYnJpbmdzIHRoZSBjb3JlIE5BTkQgY29kZSB1cCB0byBkYXRlIHdpdGggdGhlIExpbnV4IGtlcm5lbC4KCiAgICBTaW5jZSB0aGVyZSB3ZXJlIHNldmVyYWwgZHJpdmVycyBpbiBMaW51eCBhcyBvZiB0aGUgbGFzdCB1cGRhdGUgdGhhdCBhcmUKICAgIG5vdCBpbiB1LWJvb3QsIEknbSBub3QgYnJpbmdpbmcgb3ZlciBuZXcgZHJpdmVycyB0aGF0IGhhdmUgYmVlbiBhZGRlZAogICAgc2luY2UgaW4gdGhlIGFic2VuY2Ugb2YgYW4gaW50ZXJlc3RlZCBwYXJ0eS4KCiAgICBJIGRpZCBub3QgdXBkYXRlIE9uZU5BTkQgc2luY2UgaXQgd2FzIHJlY2VudGx5IHN5bmNlZCBieSBLeXVuZ21pbiBQYXJrLAogICAgYW5kIEknbSBub3Qgc3VyZSBleGFjdGx5IHdoYXQgdGhlIGNvbW1vbiBhbmNlc3RvciBpcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiMWQwZGIxODA1YzMzOTUxNDk3NzdlNTA3YjZkYTUzNDEwYWJhYzRlCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIE9jdCAyMSAxNzoyNTo0NyAyMDA4IC0wNTAwCgogICAgYm9vdG06IEFkZGVkIENPTkZJR19CT09UTV97TElOVVgsIE5FVEJTRCwgUlRFTVN9CgogICAgQWRkZWQgdGhlIGFiaWxpdHkgdG8gY29uZmlnIG91dCBib290bSBzdXBwb3J0IGZvciBMaW51eCwgTmV0QlNELCBSVEVNUwoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNWE5ODEyN2Q4MWE2ZWVmYzVhNzhhNzA0ZGY2MTliZmUzNjJlZWI4NwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBPY3QgMjEgMTc6MjU6NDYgMjAwOCAtMDUwMAoKICAgIGJvb3RtOiBzdXBwb3J0IHN1YmNvbW1hbmRzIGluIGxpbnV4IHBwYyBib290bQoKICAgIEFkZCBzdXBwb3J0IGZvciAnYmR0JywgJ2NtZGxpbmUnLCAncHJlcCcgdG8gdGhlIGxpbnV4IFBQQyBib290bS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDQ5YzNhODYxZDExNzM1ODM4ZjFmMWIxMTk5OWNlNDMzMDA2ZGM5MTkKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgT2N0IDIxIDE3OjI1OjQ1IDIwMDggLTA1MDAKCiAgICBib290bTogQWRkIHN1YmNvbW1hbmRzCgogICAgQWRkIHRoZSBhYmlsaXR5IHRvIGJyZWFrIHRoZSBzdGVwcyBvZiB0aGUgYm9vdG0gY29tbWFuZCBpbnRvIHNldmVyYWwKICAgIHN1YmNvbW1hbmRzOiBzdGFydCwgbG9hZG9zLCByYW1kaXNrLCBmZHQsIGJkdCwgY21kbGluZSwgcHJlcCwgZ28uCgogICAgVGhpcyBhbGxvd3MgdXMgdG8gZG8gdGhpbmdzIGxpa2UgbWFuaXB1bGF0ZSBkZXZpY2UgdHJlZXMgYmVmb3JlCiAgICB0aGV5IGFyZSBwYXNzZWQgdG8gYSBib290aW5nIGtlcm5lbCBvciBzZXR1cCBtZW1vcnkgZm9yIGEgc2Vjb25kYXJ5CiAgICBjb3JlIGluIG11bHRpY29yZSBzaXR1YXRpb25zLgoKICAgIE5vdCBhbGwgT1MgdHlwZXMgc3VwcG9ydCBhbGwgc3ViY29tbWFuZHMgKGN1cnJlbnRseSBvbmx5IHN0YXJ0LCBsb2Fkb3MsCiAgICByYW1kaXNrLCBmZHQsIGFuZCBnbyBhcmUgc3VwcG9ydGVkKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGJlMDgzMTU5MzM1MzdmMDYxYmMxY2U2MWYzM2EyOWM1NjQ1OGJiYWQKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgT2N0IDIxIDE3OjI1OjQ0IDIwMDggLTA1MDAKCiAgICBib290bTogTW92ZSB0byB1c2luZyBhIGZ1bmN0aW9uIHBvaW50ZXIgdGFibGUgZm9yIHRoZSBib290IG9zIGZ1bmN0aW9uCgogICAgVGhpcyByZW1vdmVzIGEgYml0IG9mIGNvZGUgYW5kIG1ha2VzIGl0IGVhc2llciBmb3IgdGhlIHVwY29taW5nIHN1YiBib290bQogICAgY29tbWFuZCBzdXBwb3J0IHRvIGNhbGwgaW50byB0aGUgcHJvcGVyIE9TIHNwZWNpZmljIGhhbmRsZXIuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYTM2OWY0YTQ5MmZhMjgwNWQ4Nzc3NWQyNzM4MGYwZWVhY2EzNWFhNgpBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CU1vbiBTZXAgMjkgMjM6MDM6MTQgMjAwOCArMTAwMAoKICAgIGkzODY6IFJlbmFtZWQgc2hvd19ib290X3Byb2dyZXNzIGluIGFzc2VtYmxlciBjb2RlCgogICAgUmVuYW1lZCBzaG93X2Jvb3RfcHJvZ3Jlc3MgaW4gYXNzZW1ibGVyIGluaXQgcGhhc2UgdG8KICAgIHNob3dfYm9vdF9wcm9ncmVzc19hc20gdG8gYXZvaWQgbGluayBjb25mbGljdHMgd2l0aCBDIHZlcnNpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgoKY29tbWl0IDQ0NDJmNDViMGUxY2JhZDM1YWEyMmQ0Y2FkMjJiOTBhNTdlM2YzMmQKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglNb24gT2N0IDI3IDE2OjQyOjAwIDIwMDggLTA1MDAKCiAgICA4NXh4OiBVcGRhdGUgTVBDODV4eF9QT1JERVZTUl9JT19TRUwgbWFzawoKICAgIFRoZSBNUEM4NTcyIGhhcyBhIDQtYml0IHdpZGUgUE9SREVWU1IgSU9fU0VMIGZpZWxkLiBPdGhlciBNUEM4NXh4CiAgICBwcm9jZXNzb3JzIGhhdmUgYSAzLWJpdCB3aWRlIElPX1NFTCBmaWVsZCBidXQgaGF2ZSB0aGUgbW9zdAogICAgc2lnbmlmaWNhbnQgYml0IGlzIHdpcmVkIHRvIDAgc28gdGhpcyBjaGFuZ2Ugc2hvdWxkIG5vdCBhZmZlY3QKICAgIHRoZW0uCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCBjZDQyNTE2MjQyMDVjYjk3MTA0ZjZlMzI2NzlkYzc3NTQ5MzRmNzExCkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBPY3QgMjcgMTY6MDk6NDIgMjAwOCAtMDUwMAoKICAgIHBvd2VycGM6IGZpeCBwY2kgd2luZG93IGluaXRpYWxpemF0aW9uIHRvIHdvcmsgd2l0aCA+IDRHQiBEUkFNCgogICAgVGhlIGV4aXN0aW5nIGNvZGUgaGFzIGEgZmV3IGVycm9ycyB0aGF0IG5lZWQgdG8gYmUgZml4ZWQgaW4KICAgIG9yZGVyIHRvIHN1cHBvcnQgbGFyZ2UgUkFNIHNpemVzLiAgRml4IHRob3NlLCBhbmQgYWRkIGEKICAgIGNvbW1lbnQgdG8gbWFrZSBpdCBjbGVhcmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMjE5NTQyYTFhNjZjYTAxN2IxMjg2MDkyMDcxNGE5ODU5YjE4YTVkNwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBPY3QgMjcgMTM6MTY6MjAgMjAwOCAtMDUwMAoKICAgIHBjaS9mc2xfcGNpX2luaXQ6IFJlbW92ZWQgYSBidW5jaCBwb2ludGxlc3MgdHJhaWxpbmcgYmFja3NsYXNoZXMuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA2YjU5ZTAzZTAyMzdhNDBhMjMwNWVhMzg1ZGVmZGZkOTIwMDA5NzhiCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglNb24gU2VwIDEgMTY6MjE6MjIgMjAwOCArMDIwMAoKICAgIGxjZDogTGV0IHRoZSBib2FyZCBjb2RlIHNob3cgYm9hcmQtc3BlY2lmaWMgaW5mbwoKICAgIFRoZSBpbmZvcm1hdGlvbiBkaXNwbGF5ZWQgd2hlbiBDT05GSUdfTENEX0lORk8gaXMgc2V0IGlzIGluaGVyZW50bHkKICAgIGJvYXJkLXNwZWNpZmljLCBzbyBpdCBzaG91bGQgYmUgZG9uZSBieSB0aGUgYm9hcmQgY29kZS4gVGhlIGN1cnJlbnQgY29kZQogICAgZGVhbGluZyB3aXRoIHRoaXMgb25seSBoYW5kbGVzIHR3byBjYXNlcywgYW5kIGlzIGFscmVhZHkgYSBob3JyaWJsZSBtZXNzCiAgICBvZiAjaWZkZWZmZXJ5LgoKICAgIFllcywgdGhpcyBkdXBsaWNhdGVzIHNvbWUgY29kZSwgYnV0IGl0IGFsc28gYWxsb3dzIGJvYXJkcyB0byBwcmludCBtb3JlCiAgICBib2FyZC1zcGVjaWZpYyBpbmZvcm1hdGlvbjsgdGhpcyB1c2VkIHRvIGJlIHZlcnkgZGlmZmljdWx0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCA2ZjkzZDJiOGZjYTUwNDIwMGE1NzU4ZjdjNmRkMmQ2ODUyOTAwNzY1CkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglNb24gU2VwIDEgMTY6MjE6MjEgMjAwOCArMDIwMAoKICAgIGxjZDogU2V0IGxjZF9pc19lbmFibGVkIGJlZm9yZSBjbGVhcmluZyB0aGUgc2NyZWVuCgogICAgVGhpcyBhbGxvd3MgdGhlIGxvZ28vaW5mbyByZW5kZXJpbmcgcm91dGluZXMgdG8gdXNlIHRoZSByZWd1bGFyCiAgICBsY2RfcHV0Yy9sY2RfcHV0cy9sY2RfcHJpbnRmIGNhbGxzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCAxNWIxN2FiNTJiN2MxNWQ0NmQ5ZmM2MzFjYzA2MDkyZTFlNzY0ZGUyCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglNb24gU2VwIDEgMTY6MjE6MjAgMjAwOCArMDIwMAoKICAgIGxjZDogSW1wbGVtZW50IGxjZF9wcmludGYoKQoKICAgIGxjZF9wcmludGYoKSBoYXMgYSBwcm90b3R5cGUgaW4gaW5jbHVkZS9sY2QuaCBidXQgbm8gaW1wbGVtZW50YXRpb24uIEZpeAogICAgdGhpcyBieSBib3Jyb3dpbmcgdGhlIGxjZF9wcmludGYoKSBpbXBsZW1lbnRhdGlvbiBmcm9tIHRoZSBjb2dlbnQgYm9hcmQKICAgIGNvZGUgKHdoaWNoIGFwcGVhcnMgdG8gdXNlIGl0cyBvd24gTENEIGZyYW1ld29yay4pCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IDcwZGJjNTRjMGE1Yzc5OGJjZjgyYWUyYTFlMjI3NDA0ZjQxMmU4OTIKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CU1vbiBTZXAgMSAxNjoyMToxOSAyMDA4ICswMjAwCgogICAgYXRtZWxfbGNkZmI6IFN0cmFpZ2h0ZW4gb3V0IGZ1bmt5IHZsX3N5bmMgbG9naWMKCiAgICBJZiB0aGUgYm9hcmQgX2RpZG4ndF8gcmVxdWVzdCBJTlZMSU5FX0lOVkVSVEVELCB3ZSBzZXQgSU5WTElORV9JTlZFUlRFRCwKICAgIG90aGVyd2lzZSB3ZSBkb24ndC4gV1RGPwoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCAyM2JiMjhmMGY3NmI0NmM0YjU3MzM3NGIwYmIzYjNmMjNkODVlZjU1CkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglNb24gU2VwIDEgMTY6MjE6MTggMjAwOCArMDIwMAoKICAgIGF0bWVsX2xjZGZiOiBFbGltaW5hdGUgdW5uZWVkZWQgI2luY2x1ZGUgPGFzbS9hcmNoL2hhcmR3YXJlLmg+CgogICAgYXRtZWxfbGNkZmIgZG9lc24ndCBhY3R1YWxseSBuZWVkIGFueXRoaW5nIGZyb20gYXNtL2FyY2gvaGFyZHdhcmUuaC4gSXQKICAgIGluY2x1ZGVzIGEgZmlsZSB0aGF0IGRvZXMsIGFzbS9hcmNoL2dwaW8uaCwgYnV0IHRoaXMgZmlsZSBkb2Vzbid0CiAgICBpbmNsdWRlIDxhc20vYXJjaC9oYXJkd2FyZS5oPiBsaWtlIGl0J3Mgc3VwcG9zZWQgdG8uCgogICAgQWRkIHRoZSBtaXNzaW5nIGluY2x1ZGUgdG8gYXNtL2FyY2gvZ3Bpby5oIGFuZCByZW1vdmUgdGhlIHdvcmthcm91bmQKICAgIGZyb20gdGhlIGF0bWVsX2xjZGZiIGRyaXZlci4gVGhpcyBtYWtlcyB0aGUgZHJpdmVyIGNvbXBpbGUgb24gYXZyMzIuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IGMyMDgzZTBlMTFhMDNlZjhiZTJlOWYwZWQ4NzIwZmRjMjA4MzJmM2UKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgT2N0IDIyIDE0OjM4OjU1IDIwMDggLTA1MDAKCiAgICA4Nnh4OiBDb252ZXJ0IGFsbCBmc2xfcGNpX2luaXQgdXNlcnMgdG8gbmV3IEFQSXMKCiAgICBDb252ZXJ0ZWQgTVBDODYxMEhDUEQsIE1QQzg2NDFIUENOLCBhbmQgU0JDODY0MUQgdG8gdXNlCiAgICBmc2xfcGNpX3NldHVwX2luYm91bmRfd2luZG93cygpIGFuZCBmdF9mc2xfcGNpX3NldHVwKCkuCgogICAgV2l0aCB0aGVzZSBjaGFuZ2VzIHRoZSBib2FyZCBjb2RlIGlzIGEgYml0IHNtYWxsZXIgYW5kIHdlIGdldCBkbWEtcmFuZ2VzCiAgICBzZXQgaW4gdGhlIGRldmljZSB0cmVlIGZvciB0aGVzZSBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBGbGVtaW5nLUFGTEVNSU5HIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMmRiYTBkZWE5OGMwZGVlMTc5OWZmZDZmZDZlYjU0MTY0NWRiYmQ5OApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBPY3QgMjEgMDg6Mjg6MzMgMjAwOCAtMDUwMAoKICAgIDg1eHg6IENvbnZlcnQgYWxsIGZzbF9wY2lfaW5pdCB1c2VycyB0byBuZXcgQVBJcwoKICAgIENvbnZlcnRlZCBBVFVNODU0OCwgTVBDODUzNkRTLCBNUEM4NTQ0RFMsIE1QQzg1NDhDRFMsIE1QQzg1NjhNRFMsCiAgICBNUEM4NTcyRFMsIFRRTTg1eHgsIGFuZCBTQkM4NTQ4IHRvIHVzZSBmc2xfcGNpX3NldHVwX2luYm91bmRfd2luZG93cygpCiAgICBhbmQgZnRfZnNsX3BjaV9zZXR1cCgpLgoKICAgIFdpdGggdGhlc2UgY2hhbmdlcyB0aGUgYm9hcmQgY29kZSBpcyBhIGJpdCBzbWFsbGVyIGFuZCB3ZSBnZXQgZG1hLXJhbmdlcwogICAgc2V0IGluIHRoZSBkZXZpY2UgdHJlZSBmb3IgdGhlc2UgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgRmxlbWluZy1BRkxFTUlORyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhMmFhYjQ2MDcyN2U1ZjY3NDM1M2E4M2E4MTAwMGVmNzk0YmZmY2FlCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IE9jdCAyMyAwMDowMTowNiAyMDA4IC0wNTAwCgogICAgcGNpL2ZzbF9wY2lfaW5pdDogQWRkZWQgZmR0IGhlbHBlciBmb3Igc2V0dGluZyB1cCBidXMtcmFuZ2VzICYgZG1hLXJhbmdlcwoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgRmxlbWluZy1BRkxFTUlORyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiOWExZmE5Nzg3YTNhNzk1NzNmNWY5MzJhNGY4YWEyMTZiY2IxNzg1CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIE9jdCAyMiAxNDowNjoyNCAyMDA4IC0wNTAwCgogICAgcGNpL2ZzbF9wY2lfaW5pdDogQWRkIGEgY29tbW9uIFBDSSBpbmJvdW5kIHNldHVwIGZ1bmN0aW9uCgogICAgQWRkIGEgY29tbW9uIHNldHVwIGZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyB0aGUgcGNpX3JlZ2lvbihzKSBiYXNlZAogICAgb24gaG93IG11Y2ggbWVtb3J5IHdlIGhhdmUgaW4gdGhlIHN5c3RlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IEZsZW1pbmctQUZMRU1JTkcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjEyZWEwMTAxOGE0NTkyMzRkNTRlZDU3ZWM2YTVhMjQ0Y2U3NTY3OApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBPY3QgMjEgMTA6MTM6MTQgMjAwOCAtMDUwMAoKICAgIHBjaS9mc2xfcGNpX2luaXQ6IEVuYWJsZSBsYXJnZXIgYWRkcmVzcyBhbmQgc2V0dGluZyBpbmJvdW5kIHdpbmRvd3MgcHJvcGVybHkKCiAgICAqIFBDSSBJbmJvdW5kIHdpbmRvdyB3YXMgc2V0dXAgaW5jb3JyZWN0bHkuICBUaGUgUENJIGFkZHJlc3MgYW5kIHN5c3RlbQogICAgICBhZGRyZXNzIHdlcmUgc3dhcHBlZC4gIFRoZSBQQ0kgYWRkcmVzcyBzaG91bGQgYmUgc2V0dGluZyBwaXdhci9waXdiZWFyCiAgICAgIGFuZCB0aGUgc3lzdGVtIGFkZHJlc3Mgc2hvdWxkIGJlIHNldHRpbmcgcGl0YXIuCgogICAgKiBSZW1vdmVkIG1hc2tpbmcgb2YgYWRkcmVzc2VzIHRvIGFsbG93IGZvciBzeXN0ZW0gYWRkcmVzcyB0byBzdXBwb3J0CiAgICAgIHN5c3RlbSBhZGRyZXNzICYgUENJIGFkZHJlc3MgPjMyLWJpdHMKCiAgICAqIFNldCBQSVdCRUFSICYgUE9URUFSIHRvIGFsbG93IGZvciBmdWxsIDY0LWJpdCBQQ0kgYWRkcmVzc2VzCgogICAgKiBSZXNwZWN0IHRoZSBQQ0lfUkVHSU9OX1BSRUZFVENIIGZvciBpbmJvdW5kIHdpbmRvd3MKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IEZsZW1pbmctQUZMRU1JTkcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOGFiNDUxYzQ2Yjg0NmYyYmJkNzEyMmIyOWZmZGQ5YTRhMDRkYTIyOApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBPY3QgMjIgMjM6MzM6NTYgMjAwOCAtMDUwMAoKICAgIGZkdDogQWRkZWQgaGVscGVyIHRvIHNldCBQQ0kgZG1hLXJhbmdlcyBwcm9wZXJ0eQoKICAgIEFkZGVkIGZkdF9wY2lfZG1hX3JhbmdlcygpIHRoYXQgcGFyc2VzIHRoZSBwY2lfcmVnaW9uIGluZm8gZnJvbSB0aGUKICAgIHN0cnVjdCBwY2lfY29udHJvbGxlciBhbmQgcG9wdWxhdGVzIHRoZSBkbWEtcmFuZ2VzIGJhc2VkIG9uIGl0LgoKICAgIFRoZSBtYXggIyBvZiB3aW5kd3MvZG1hLXJhbmdlcyB3ZSBzdXBwb3J0IGlzIDMgc2luY2Ugb24gZW1iZWRkZWQKICAgIFBvd2VyUEMgYmFzZWQgc3lzdGVtcyB0aGlzIGlzIHRoZSBtYXggbnVtYmVyIG9mIHdpbmRvd3MuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBGbGVtaW5nLUFGTEVNSU5HIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDNiZWQyYWFmMmQ1MGZkMTMyNzNjMTRkMTdkNGZkNDBlZjQyZTBkMGYKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgT2N0IDIzIDAwOjA1OjQ3IDIwMDggLTA1MDAKCiAgICBmZHQ6IEFkZCBmZHRfZ2V0cHJvcF91MzJfZGVmYXVsdCBoZWxwZXJzCgogICAgQWRkIGhlbHBlciBmdW5jdGlvbnMgdG8gcmV0dXJuIGZpbmQgYSBub2RlIGFuZCByZXR1cm4gaXQncyBwcm9wZXJ0eQogICAgb3IgYSBkZWZhdWx0IHZhbHVlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgRmxlbWluZy1BRkxFTUlORyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IDhiYTkzZjY4YTFiYWU4OWUwMzM1MjdjZTY3YjQxYjRhODdhYTViN2YKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgT2N0IDIxIDE4OjA2OjE1IDIwMDggLTA1MDAKCiAgICA4Nnh4OiBFbmFibGUgNjQtYml0IFBDSSByZXNvdXJjZXMgb24gYWxsIEZyZWVzY2FsZSBib2FyZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IEZsZW1pbmctQUZMRU1JTkcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMDE1MWNiYWNjZjQ1MDQ4MjFlY2ZkZTAyMTcyOTliZDc0MDA4NmJiNgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBPY3QgMjEgMTE6MzM6NTggMjAwOCAtMDUwMAoKICAgIDg1eHg6IEVuYWJsZSA2NC1iaXQgUENJIHJlc291cmNlcyBvbiBhbGwgRnJlZXNjYWxlIGJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgRmxlbWluZy1BRkxFTUlORyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzMGU3NmQ1ZTNiYzRjNTIwOGVlNjM1ODVmZTEyYjQwOWQ5MzA4Y2Q4CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIE9jdCAyMSAwODozNjowOCAyMDA4IC0wNTAwCgogICAgcGNpOiBBbGxvdyBmb3IgUENJIGFkZHJlc3NlcyB0byBiZSA2NC1iaXQKCiAgICBQQ0kgYnVzIGlzIGluaGVyZW50bHkgNjQtYml0LiAgV2hpbGUgbm90IGFsbCBzeXN0ZW0gcmVxdWlyZSBhY2Nlc3MgdG8KICAgIHRoZSBmdWxsIDY0LWJpdCBQQ0kgYWRkcmVzcyByYW5nZSBzb21lIGRvLglUaGlzIGFsbG93cyB0aG9zZSBzeXN0ZW1zCiAgICB0byBlbmFibGUgdGhlIGZ1bGwgUENJIGFkZHJlc3Mgd2lkdGggdmlhIENPTkZJR19TWVNfUENJXzY0QklULgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgRmxlbWluZy1BRkxFTUlORyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGFlNWY5NDNiYThlZGU0NDhhNGIxYTE0NWZkODkxMTg1NjcwMWVjYzUKQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgT2N0IDIzIDIxOjE4OjUzIDIwMDggKzA4MDAKCiAgICA4NXh4OiBGaXggdGhlIGluY29ycmVjdCByZWdpc3RlciB1c2VkIGZvciBERFIgZXJyYXR1bTEKCiAgICBUaGUgODU3MiBERFIgZXJyYXR1bTE6CiAgICBERFIgY29udHJvbGxlciBtYXkgZW50ZXIgYW4gaWxsZWdhbCBzdGF0ZSB3aGVuIG9wZXJhdGluZwogICAgaW4gMzItYml0IGJ1cyBtb2RlIHdpdGggNC1iZWF0IGJ1cnN0cy4KCiAgICBEZXNjcmlwdGlvbjoKICAgIFdoZW4gb3BlcmF0aW5nIHdpdGggYSAzMi1iaXQgYnVzLCBpdCBpcyByZWNvbW1lbmRlZCB0aGF0CiAgICBERFJfU0RSQU1fQ0ZHWzhfQkVdIGlzIGNsZWFyZWQgd2hlbiBERFIyIG1lbW9yaWVzIGFyZSB1c2VkLgogICAgVGhpcyBmb3JjZXMgdGhlIEREUiBjb250cm9sbGVyIHRvIHVzZSA0LWJlYXQgYnVyc3RzIHdoZW4KICAgIGNvbW11bmljYXRpbmcgdG8gdGhlIERSQU1zLiBIb3dldmVyLCBhbiBpc3N1ZSBleGlzdHMgdGhhdAogICAgY291bGQgbGVhZCB0byBkYXRhIGNvcnJ1cHRpb24gd2hlbiB0aGUgRERSIGNvbnRyb2xsZXIgaXMKICAgIGluIDMyLWJpdCBidXMgbW9kZSB3aGlsZSB1c2luZyA0LWJlYXQgYnVyc3RzLgoKICAgIFByb2plY3RlZCBJbXBhY3Q6CiAgICBJZiB0aGUgRERSIGNvbnRyb2xsZXIgaXMgb3BlcmF0aW5nIGluIDMyLWJpdCBidXMgbW9kZSB3aXRoCiAgICA0LWJlYXQgYnVyc3RzLCB0aGVuIHRoZSBjb250cm9sbGVyIG1heSBlbnRlciBpbnRvIGEgYmFkIHN0YXRlLgogICAgQWxsIHN1YnNlcXVlbnQgcmVhZHMgZnJvbSBtZW1vcnkgaXMgY29ycnVwdGVkLgogICAgRm91ci1iZWF0IGJ1cnN0cyB3aXRoIGEgMzItYml0IGJ1cyBvbmx5IGlzIHVzZWQgd2l0aCBERFIyIG1lbW9yaWVzLgogICAgVGhlcmVmb3JlLCB0aGlzIGVycmF0dW0gZG9lcyBub3QgYWZmZWN0IEREUjMgbW9kZS4KCiAgICBXb3JrIEFyb3VuZHM6CiAgICBUbyB3b3JrIGFyb3VuZCB0aGlzIGlzc3VlLCBzb2Z0d2FyZSBtdXN0IHNldCBERUJVR18xWzMxXSBpbgogICAgRERSIG1lbW9yeSBtYXBwZWQgc3BhY2UgKENDU1JCQVIgb2Zmc2V0ICsgMHgyZjAwIGZvciBERFJfMQogICAgYW5kIENDU1JCQVIgb2Zmc2V0ICsgMHg2ZjAwIGZvciBERFJfMikuCgogICAgQ3VycmVubHR5LCB0aGUgY29kZSBpcyB1c2luZyBpbmNvcnJlY3QgcmVnaXN0ZXIgRERSX1NEUkFNX0NGR18yCiAgICBhcyBjb25kaXRpb24sIGJ1dCBpdCBzaG91bGQgYmUgRERSX1NEUkFNX0NGRyByZWdpc3Rlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGQ1YjY5MzA5MGVkMDhkMjRjMTg0OTFkZjlkOGZjNzM4N2IyOTA2ZjMKQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgT2N0IDIzIDIxOjE3OjE5IDIwMDggKzA4MDAKCiAgICA4NXh4OiByZW1vdmUgdW51c2VkIGNvbmZpZyBkZWZpbml0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwZjA2MGMzYmY4MjgzMjMzMWE1MDlmMmU1ZDI0NDI1MzllN2FhZDA5CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IE9jdCAyMyAwMTo0NzozOCAyMDA4IC0wNTAwCgogICAgODV4eDogQWRkIGJhc2ljIGU1MDBtYyBjb3JlIHN1cHBvcnQKCiAgICBJbnRyb2R1Y2UgQ09ORklHX0U1MDBNQyB0byBkZWFsIHdpdGggdGhlIG1pbm9yIGRpZmZlcmVuY2VzIGJldHdlZW4KICAgIGU1MDB2MiBhbmQgZTUwMG1jLgoKICAgICogQ2VydGFpbiBmaWVsZHMgb2YgSElEMC8xIGRvbid0IGV4aXN0IGFueW1vcmUgb24gZTUwMG1jCiAgICAqIENhY2hlIGxpbmUgc2l6ZSBpcyA2NC1ieXRlcyBvbiBlNTAwbWMKICAgICogcmVzZXQgdmFsdWUgb2YgUElSIGlzIGRpZmZlcmVudAoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYTM4YTViNmVkZDMwZjI5ZmQ1ZmRiMWQ3ZjY3NDUyMTkwNmMwZTY3NwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBPY3QgMjMgMDE6NDc6MzcgMjAwOCAtMDUwMAoKICAgIDg1eHg6IFVzZSBDT05GSUdfU1lTX0NBQ0hFTElORV9TSVpFIGluc3RlYWQgb2YgbWFnaWMgbnVtYmVyCgogICAgVXNpbmcgQ09ORklHX1NZU19DQUNIRUxJTkVfU0laRSBpbnN0ZWFkIG9mIDMxIG1lYW5zIHdlIGNhbiBoYW5kbGUKICAgIGU1MDBtYydzIDY0LWJ5dGUgY2FjaGVsaW5lIHByb3Blcmx5IHdoZW4gaXQgZ2V0cyBhZGRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDVkZWI4MDIyYzM3NDlmYWFjMzBlOWFkOTY5NDY5MWUyNDQyYjVjOTMKQXV0aG9yOiBHZW9yZyBTY2hhcmR0IDxzY2hhcmR0QHRlYW0tY3RlY2guZGU+CkRhdGU6CUZyaSBPY3QgMjQgMTM6NTE6NTIgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogTmV3IGJvYXJkIGF2bmV0IGZ4MTIgbWluaW1vZHVsCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBhdm5ldCBmeDEyIG1pbmltb2R1bC4KICAgIEl0IG5lZWRzIHRoZSAicHBjNHh4OiBHZW5lcmljIGFyY2hpdGVjdHVyZSBmb3IgeGlsaW54IHBwYzQwNSIKICAgIHBhdGNoIGZyb20gUmljYXJkby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZW9yZyBTY2hhcmR0IDxzY2hhcmR0QHRlYW0tY3RlY2guZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxZjRkNTMyNjBlYzZmOGYxMjJhZWQ3NWNjZTdjNzU3ZDk3YTU1MWUwCkF1dGhvcjogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+CkRhdGU6CVR1ZSBPY3QgMjEgMTg6Mjk6NDYgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogR2VuZXJpYyBhcmNoaXRlY3R1cmUgZm9yIHhpbGlueCBwcGM0MDUodjMpCgogICAgQXMgInBwYzQ0eDogVW5pZmljYXRpb24gb2YgdmlydGV4NSBwcDQ0MCBib2FyZHMiIGRpZCBmb3IgdGhlIHhpbGlueAogICAgcHBjNDQwIGJvYXJkcywgdGhpcyBwYXRjaCBwcmVzZW50cyBhIGNvbW1vbiBhcmNoaXRlY3R1cmUgZm9yIGFsbCB0aGUKICAgIHhpbGlueCBwcGM0MDUgYm9hcmRzLgoKICAgIEFueSBjdXN0b20geGlsaW54IHBwYzQwNSBib2FyZCBjYW4gYmUgYWRkZWQgdmVyeSBlYXNpbHkgd2l0aCBubyBjb2RlCiAgICBkdXBsaWNpdHkuCgogICAgVGhpcyBwYXRjaCBhbHNvIGFkZHMgYSBzaW1wbGUgZ2VuZXJpYyBib2FyZCwgdGhhdCBjYW4gYmUgdXNlZCBvbiBhbG1vc3QKICAgIGFueSBkZXNpZ24gd2l0aCB4aWxpbnggcHBjNDA1IHJlcGxhY2luZyB0aGUgZmlsZSBwcGM0MDUtZ2VuZXJpYy94cGFyYW1ldGVycy5oCgogICAgVGhpcyBwYXRjaCBpcyBwcmVwYXJlZCB0byB3b3JrIHdpdGggdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIEVESyAoMTAuMSkKCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0ODVjMDBhNTdmYWI4NmY3MmEzNzY5NDgwYzY2YmYxY2EyMmUxNDU5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgT2N0IDI0IDA4OjU2OjA5IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IERpc2FibGUgRERSMiBhdXRvY2FsaWJyYXRpb24gb24gS2lsYXVlYSBmb3Igbm93CgogICAgU2luY2UgdGhlIG5ldyBhdXRvY2FsaWJyYXRpb24gc3RpbGwgaGFzIHNvbWUgcHJvYmxlbXMgb24gc29tZSBLaWxhdWVhCiAgICBib2FyZHMgd2l0aCAyMDBNSHogRERSMiBmcmVxdWVuY3kgd2UgZGlzYWJsZSB0aGUgYXV0b2NhbGlicmF0aW9uIGFuZAogICAgdXNlIHRoZSBoYXJkY29kZWQgdmFsdWVzIGFzIGRvbmUgYmVmb3JlLiBUaGlzIHNlZW1zIHRvIHdvcmsgcmVsaWFibHkKICAgIG9uIGFsbCBrbm93biBERFIyIGZyZXF1ZW5jaWVzLgoKICAgIEFmdGVyIHRoZSBhdXRvY2FsaWJyYXRpb24gaXNzdWUgaXMgZml4ZWQgd2Ugd2lsbCBlbmFibGUgaXQgYWdhaW4uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGYxNzdmNDI1MGM3Mjk3MjdiMTYyOWZhOGQ4ZDY1NTZjOTk5ZTliOGMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBBcHIgOSAwMjowMjowNyAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGZpeCB1cCBVQVJUIHN0YXR1cyBiaXQgaGFuZGxpbmcKCiAgICBTb21lIEJsYWNrZmluIFVBUlRzIGFyZSByZWFkLXRvLWNsZWFyIHdoaWxlIG90aGVycyBhcmUgd3JpdGUtdG8tY2xlYXIuCiAgICBUaGlzIGNhbiBjYXVzZSBwcm9ibGVtcyB3aGVuIHdlIHBvbGwgdGhlIExTUiBhbmQgdGhlbiBsYXRlciB0cnkgYW5kIGhhbmRsZQogICAgYW55IGVycm9ycyBkZXRlY3RlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYWUwOTEwMjk4ZjMxZjViYjNkMzNhNjRiODQ2N2M2MGVhM2M1ZDZkMApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IE9jdCAxMSAyMDo0MjoxNyAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGJmNTYxLWV6a2l0OiBkcm9wIHJlZHVuZGFudCBjb2RlCgogICAgQ29tbW9uIEJsYWNrZmluIGNvZGUgYWxyZWFkeSBhbm5vdW5jZXMgQ1BVIGluZm9ybWF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBlMmVlYTk4YmZmMTM2OWY3N2E5ZjU5YTVmZDBiZDQ5MjhiYzMzMzJlCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgT2N0IDExIDIwOjQzOjEwIDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogYmY1NjEtZXpraXQ6IGRyb3AgcG9pbnRsZXNzIFVTQiBjb2RlCgogICAgVGhlIFVTQi9MQU4gcmVnaXN0ZXIgc2V0dGluZ3MgYXJlIG5vdCBhY3R1YWxseSB1c2VkL25lZWRlZCBpbiBvcmRlciB0bwogICAgZHJpdmUgdGhpbmdzIGZyb20gVS1Cb290LCBzbyBkcm9wIHRoZSBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBjMjNiZmY2M2ZiMDNjYjlkYmNkMjY1MjI4NDFlNTNmOWIzNGZhMWFiCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgT2N0IDExIDIwOjQ3OjU4IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogbGlua2VyIHNjcmlwdHM6IGZvcmNlIHN0YXJ0Lm8gYW5kIHNldCBpbml0Y29kZSBib3VuZGFyaWVzCgogICAgTWFrZSBzdXJlIHRoYXQgdGhlIHN0YXJ0Lm8gb2JqZWN0IGlzIGFsd2F5cyB0aGUgZmlyc3Qgb2JqZWN0IGluIG91ciBsaW5rZXIKICAgIHNjcmlwdCByZWdhcmRsZXNzIG9mIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MsIGFuZCBhZGQgc29tZSBsaW5rZXIgc3ltYm9scwogICAgc28gdGhlIGxkciB1dGlsaXR5IGNhbiBwcm9wZXJseSBsb2NhdGUgdGhlIGluaXRjb2RlIHdoZW4gZ2VuZXJhdGluZyBhIExEUi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYmQzM2U1YzYxM2NmNzBlM2NiNTFhNzNmZGQ2NTNmZTgzYjk0MmJiMApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IE9jdCAxMSAyMToxOTozOSAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IHNtYWxsIGNwdSBpbml0IG9wdGltaXphdGlvbiB3aGlsZSBzZXR0aW5nIGludGVycnVwdCBtYXNrCgogICAgVXNlIHRoZSBzdGkgaW5zdHJ1Y3Rpb24gdG8gc2V0IHRoZSBpbml0aWFsIGludGVycnVwdCBtYXNrIHJhdGhlciB0aGFuCiAgICBiYW5naW5nIG9uIHRoZSBjb3JlIElNQVNLIE1NUiB0byBzYXZlIGJvdGggc3BhY2UgYW5kIHRpbWUuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDk2MDkyMjI5MWM5NTk0YWNiNTc1Y2VjN2U0N2Q3YmVkOWI1ODE4MmMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBPY3QgMTEgMjE6MTg6MTAgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBzZXQgaW5pdGlhbCBzdGFjayBjb3JyZWN0bHkgYWNjb3JkaW5nIHRvIEJsYWNrZmluIEFCSQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAyNWNkMzNkODJlYTUyMWI3YmQ5MGNhODU4Zjg5MTlmYWUxZTk3MzJiCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gQXByIDIwIDAzOjExOjUzIDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogbWFrZSBiYXVkIGNhbGN1bGF0aW9uIG1vcmUgYWNjdXJhdGUKCiAgICBXZSBzaG91bGQgdXNlIHRoZSBhbGdvcml0aG0gaW4gdGhlIExpbnV4IGtlcm5lbCBzbyB0aGF0IHRoZSBVQVJUIGRpdmlzb3IKICAgIGNhbGN1bGF0aW9uIGlzIG1vcmUgYWNjdXJhdGUuICBJdCBhbHNvIGZpeGVzIHByb2JsZW1zIG9uIHNvbWUgcGlja3kgVUFSVHMKICAgIHRoYXQgaGF2ZSBzYW1wbGluZyBhbm9tYWxpZXMuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDBiYTFkYTExNmU1ZWRjYjBjNWFlNGE3NTg1ZDczZjY1NDg0MDBhMDYKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBPY3QgNiAwNDoyMTo0MSAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGRlY29kZSBod2VycmNhdXNlL2V4Y2F1c2Ugd2hlbiBjcmFzaGluZwoKICAgIEhhdmluZyB0byBkZWNvZGUgaHdlcnJjYXVzZS9leGNhdXNlIHZhbHVlcyBpcyBhIHBhaW4sIHNvIGF1dG9tYXRlIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAyZGU5NWJiMjBjNDg4ZjIwMjk4ZGY2ODgxYjcwMGE1YTc1N2VlNzgwCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gT2N0IDYgMDQ6MjA6NTQgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBmaXggcmVnaXN0ZXIgZHVtcCBtZXNzYWdlcwoKICAgIE1ha2Ugc3VyZSB3ZSByZXBvcnQgUkVUSS9JUEVORCBjb3JyZWN0bHkuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDcxMzM5OTllNmY2MmE5YTAxZjZhOGZmZTIzNGI4NTMyYjNhZDFlNGIKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBPY3QgNiAwNDoxOTozNCAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGRvbid0IGJvdGhlciBkaXNwbGF5aW5nIHJlYm9vdCBtc2cgd2hlbiBjcmFzaGluZwoKICAgIFRoZSBoYW5nIGZ1bmN0aW9uIGFscmVhZHkgdGVsbHMgeW91IHRvIHJlYm9vdCwgc28gbm8gcG9pbnQgaW4gc2hvd2luZyBpdAogICAgdHdpY2UuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDcwYzRjMDMyZWExMTJjYzQyYWExY2U5NTljMzNmYzQ4MjVlYWVmOTUKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVN1biBKdW4gMSAwMToyMzo0OCAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGVuYWJsZSBzdXBwb3J0IGZvciBuZXN0ZWQgaW50ZXJydXB0cwoKICAgIER1cmluZyBjcHUgaW5pdCwgbWFrZSBzdXJlIHdlIGluaXRpYWxpemUgdGhlIENFQyBwcm9wZXJseSBzbyB0aGF0CiAgICBpbnRlcnJ1cHRzIGNhbiBmaXJlIGFuZCBiZSBoYW5kbGVkIHdoaWxlIFUtQm9vdCBpcyBydW5uaW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAzOTc4MjcyN2UxODU4NjBmYWE0ODg0YzJiMDRlODRjYjMzZDFjNmNmCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gT2N0IDYgMDM6NTU6MjUgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBpbml0IE5BTkQgYmVmb3JlIHJlbG9jYXRpbmcgZW52CgogICAgSWYgYm9vdGluZyBvdXQgb2YgTkFORCwgd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgaW5pdGlhbGl6ZSBpdCBwcm9wZXJseQogICAgYmVmb3JlIGF0dGVtcHRpbmcgdG8gcmVsb2NhdGUgdGhlIGVudmlyb25tZW50LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAwZjlhODgxOTQxNmJhNDBhNTNkZTUwYWYxNDg4NDdhMGU1MDhmODRkCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgQXVnIDcgMTg6NDA6MTMgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBjaGVjayBjYWNoZSBiaXRzLCBub3QgY3BsYiBiaXRzCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDJjMWVhOWUzNzBjYjcyZGQ2YTVhYTMyMzM4ZTg3YThhMWY3N2JkNzYKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBBdWcgNyAxNzo1Mjo1OSAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGRyb3AgdW51c2VkIGNhY2hlIGZsdXNoIGNvZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNTBmMGQyMTE5MTJhNjQ4ZTMxYWE5MTIzYjQ2NjVhMDQ0NGJiOGNhOQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEF1ZyA3IDE1OjIxOjQ3IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogdW5pZnkgY2FjaGUgaGFuZGxpbmcgY29kZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAzYzg3OTg5ODM0MDNjYjY4YTgyN2Q3YTBkMDliMTEzNDUyNGExYjdkCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gT2N0IDYgMDM6Mzk6MDcgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBvbmx5IGluaXRpYWxpemUgdGhlIFJUQyB3aGVuIGFjdHVhbGx5IHVzZWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNjIxZTU3OWI4MTJkZDFhMmU2Nzc3ZjdjYmY2ZTU1ZTczNjUwNTgyMwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIE9jdCA2IDAzOjQ0OjMzIDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogZml4IFNXUlNUIHJlZ2lzdGVyIGRlZmluaXRpb24KCiAgICBUaGUgU1dSU1QgcmVnaXN0ZXIgaXMgYSAxNmJpdCwgbm90IDMyYml0LCByZWdpc3Rlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMDYxMjFjNGUyZDE4Mzg4N2RjZDdhNGNhMmRjZDM5NWIyMTNlYTE1YgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEF1ZyA3IDE4OjU0OjU3IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogYnVpbGQgd2l0aCAtZm9taXQtZnJhbWUtcG9pbnRlcgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBhZGJmZWViN2IzMmY3MzdhOTczOGRhYTU4MzM1MGQyYmI5ZWQwMTdhCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgQXVnIDcgMTc6NTA6MjYgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBkb2N1bWVudCBzb21lIG9mIHRoZSBibGFja2ZpbiBkaXJlY3RvcmllcwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBlNDMzNzk2OGU0MzY5OGE2OGJhNjA4MzY5ZjQ2ZDRhNDExNDExMWNhCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgQXVnIDcgMTU6MTY6NTYgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBvbmx5IGVuYWJsZSBoYXJkd2FyZSBlcnJvciBpcnEgYnkgZGVmYXVsdAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAyYjY2ZjA4ZjI1N2VmNmEwNjc4NWYyN2IzYzZkYzJhNGNmYzljYWM0CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgQXVnIDcgMTM6MzY6NDMgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBwdW50IG9sZCB1bnVzZWQgbWVtX2luaXQuaCBoZWFkZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYmNjMTIxYTAxNjA4MDQyMDY2YTE5YWI1YmZmNWJjZmI4MDViZjQwNgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEF1ZyA3IDEzOjE4OjU1IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogZGVsZXRlIHVudXNlZCBwYWdlX2Rlc2NyaXB0b3JfdGFibGVfc2l6ZSBkZWZpbmUKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMzBmYjlkMjRhZTE2ZTViMGVkMzllNWI3Y2M4NTk4MTE2NWNhOThiYwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEF1ZyA3IDEzOjE3OjAzIDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogZml4IHR5cG8gaW4gYm9vdCBtb2RlIGNvbW1lbnQgYW5kIGFkZCBOQU5EIGRlZmluZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAyZTVjYmU1NDYxYzVjNGM2NjY1ZTMxOGNmZTk1MGE1YTE1MGQ5OTljCkF1dGhvcjogQmVuIE1hYW4gPG1vb0Bjb3c+CkRhdGU6CVRodSBBdWcgNyAxMzoxNDoyMSAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGZpeCBwb3J0IG11eCBkZWZpbmVzIGZvciBCRjU0eAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAwNjU2ZWYyYmEyNzQ5MTBkMzEzNjRmZTAyMmY2YzdkYjAwNTE2NjBkCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgQXVnIDcgMTM6MDk6NTAgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiB1cGRhdGUgYW5vbWFseSBsaXN0cwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA1MGNhOTU0MDI4NzZjZjdiYWM0ZTJkNGY3ODU1ZjYxNmEwMzg3NjNmCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgQXVnIDcgMTM6MDg6NTQgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiB1bmlmeSBEU1BJRC9EQkdTVEFUIE1NUiBkZWZpbml0aW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBkOWQ4YzdjNjk2ZGVjMzcwY2E3MTRjMDNiZWI2ZTc5ZDRjOTBiZDVlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIE9jdCAyMSAxNTo1Mzo1MSAyMDA4ICswMjAwCgogICAgRml4IHN0cm1oeigpOiBhdm9pZCBwcmludGluZyBuZWdhdGl2ZSBmcmFjdGlvbnMKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDRhN2Y2Yjc1MGQ4ZGU1NDNmZGY4ZTU4YWNkODY3NDUwMTAwNTQ1NzEKQXV0aG9yOiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBydWdnZWRjb20uY29tPgpEYXRlOglGcmkgT2N0IDE3IDA4OjU1OjUxIDIwMDggLTA0MDAKCiAgICBtcGM4M3h4OiBSZW1vdmVkICNpZmRlZiBDT05GSUdfTVBDODM0WCBkZXBlbmRlbmN5IG9uIHVwbWNvbmZpZyBmdW5jdGlvbgoKICAgIFRoaXMgaXMgZG9uZSB0byBhbGxvdyBvdGhlciA4M1hYIGJhc2VkIHBsYXRmb3JtcyB3aGljaCBhbHNvIGhhdmUgVVBNCiAgICAoZS5nLiA4MzYwKSB0byBjb25maWd1cmUgYW5kIHVzZSB0aGVpciBVUE0gaW4gdS1ib290LgoKICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDNiZjFiZTNjMGNmYjExMjliNjhjYzE0NzQxMTllNWYzMjM1MzY0ODgKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJVHVlIE9jdCAxNCAyMjo1ODo1MyAyMDA4ICswNDAwCgogICAgbXBjODN4eDogYWRkIHN1cHBvcnQgZm9yIHN3aXRjaGluZyBiZXR3ZWVuIFVTQiBIb3N0L0Z1bmN0aW9uIGZvciBNUEM4MzdYRU1EUwoKICAgIFdpdGggdGhpcyBwYXRjaCB1LWJvb3QgY2FuIGZpeHVwIHRoZSBkcl9tb2RlIGFuZCBwaHlfdHlwZSBwcm9wZXJ0aWVzCiAgICBmb3IgdGhlIER1YWwtUm9sZSBVU0IgY29udHJvbGxlci4KCiAgICBXaGlsZSBhdCBpdCwgYWxzbyByZW1vdmUgI2lmZGVmcyBhcm91bmQgaW5jbHVkZXMsIHRoZXkgYXJlIG5vdCBuZWVkZWQuCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGIzMzc5ZjNmZDEzOTY5OTM0YzAwMDk3YzA1NzU0ZTdhODk5MGZkMzkKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJV2VkIE9jdCA4IDIwOjUyOjU0IDIwMDggKzA0MDAKCiAgICBtcGM4M3h4OiBhZGQgRUxCQyBOQU5EIHN1cHBvcnQgZm9yIHRoZSBNUEM4MzdYRU1EUyBib2FyZHMKCiAgICBUaG91Z2ggTkFORCBjaGlwIGlzIHJlcGxhY2VhYmxlIG9uIHRoZSBNUEM4MzdYRS1NRFMgYm9hcmRzLCB0aGUKICAgIGN1cnJlbnQgc2V0dGluZ3MgZG9uJ3Qgd29yayB3aXRoIHRoZSBkZWZhdWx0IGNoaXAgb24gdGhlIGJvYXJkLgogICAgTmV2ZXJ0aGVsZXNzIEZyZWVzY2FsZSdzIFUtQm9vdCBzZXRzIHRoZSBvcHRpb24gcmVnaXN0ZXIgY29ycmVjdGx5LAogICAgc28gSSBqdXN0IGR1bXBlZCB0aGUgcmVnaXN0ZXIgZnJvbSB0aGUgd29ya2luZyB1LWJvb3QuIE15IGd1ZXNzIGlzCiAgICB0aGF0IHRoZSBvbGQgc2V0dGluZ3Mgd2VyZSBhcHBsaWNhYmxlIGZvciBzb21lIHBpbG90IGJvYXJkcywgbm90CiAgICBmb3VuZCBpbiB0aGUgcHJvZHVjdGlvbi4KCiAgICBUaGlzIHBhdGNoIGFsc28gZW5hYmxlcyBGU0wgRUxCQyBkcml2ZXIgc28gdGhhdCB3ZSBjb3VsZCBhY2Nlc3MKICAgIHRoZSBOQU5EIHN0b3JhZ2UgaW4gdGhlIHUtYm9vdC4KCiAgICBUaGUgTkFORCBzdXBwb3J0IGNvc3RzIGFib3V0IDQ1S0IsIHNvIHRoZSB1LWJvb3Qgbm8gbG9uZ2VyIGZpdHMKICAgIGludG8gdHdvIDEyOEtCIE5PUiBmbGFzaCBzZWN0b3JzLCB0aHVzIHdlIGFsc28gaGF2ZSB0byBhZGp1c3QKICAgIGVudmlyb25tZW50IGxvY2F0aW9uOiBhZGQgYW5vdGhlciAxMjhLQiB0byB0aGUgbW9uaXRvciBsZW5ndGguCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CgogICAgSXQgaXMgZHVlIHRvIGhhcmR3YXJlIGRlc2lnbiBhbmQgbG9naWMgZGVmZWN0LCB0aGF0IGlzIHRoZQogICAgSS9PWzA6N10gb2YgTkFORCBjaGlwIGlzIGNvbm5lY3RlZCB0byBMQURbNzowXSwgc28gd2hlbgogICAgdGhlIE5BTkQgY2hpcCBjb25uZWN0ZWQgdG8gbkxDUzMsICB5b3UgaGF2ZSB0byBzZXQgdXAgdGhlCiAgICBPUjNbQkNUTERdID0gJzEnIGZvciBub3JtYWwgb3BlcmF0aW9uLCBvdGhlcndpc2UgaXQgd2lsbCBoYXZlCiAgICBidXMgY29udGVudGlvbiBkdWUgdG8gdGhlIHBpbiA0OC8yNSBvZiBVNjAgaXMgZW5hYmxlZC4KCiAgICBTZXR1cCB0aGUgT1IzW0JDVExEXSA9ICcxJyAsIHRoYXQgbWVhbmluZyB0aGUgTEJDVEwgaXMgbm90CiAgICBhc3NlcnRlZCB1cG9uIGFjY2VzcyB0byB0aGUgTkFORCBjaGlwLCBrZWVwIHRoZSBkZWZhdWx0IHN0YXRlLgoKICAgIEFja2VkLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwMGY3YmJhZTkyZTNiMTNmMmIzN2FlYjFkZWY5YmIxMjQ0NTUyMWI3CkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CVRodSBPY3QgMiAxOToxNzozMyAyMDA4ICswNDAwCgogICAgbXBjODN4eDogZml4IFBDSSBzY2FuIGhhbmcgb24gdGhlIHN0YW5kYWxvbmUgTVBDODM3eEUtTURTIGJvYXJkcwoKICAgIFRoZSBNUEM4Mzd4RS1NRFMgYm9hcmQncyBDUExEIGNhbiBhdXRvLWRldGVjdCBpZiB0aGUgYm9hcmQgaXMgb24gdGhlIFBJQiwKICAgIHN0YW5kYWxvbmUgb3IgYWN0aW5nIGFzIGEgUENJIGFnZW50LiBVc2VyJ3MgR3VpZGUgc2F5czoKCiAgICAtIFdoZW4gdGhlIENQTEQgcmVjb2duaXplcyBpdHMgbG9jYXRpb24gb24gdGhlIFBJQiBpdCBhdXRvbWF0aWNhbGx5CiAgICAgIGNvbmZpZ3VyZXMgUkNXIHRvIHRoZSBQQ0kgSG9zdC4KICAgIC0gSWYgdGhlIENQTEQgZmFpbHMgdG8gcmVjb2duaXplIGl0cyBsb2NhdGlvbiB0aGVuIGl0IGlzIGF1dG9tYXRpY2FsbHkKICAgICAgY29uZmlndXJlZCBhcyBhbiBBZ2VudCBhbmQgdGhlIFBDSSBpcyBjb25maWd1cmVkIHRvIGFuIGV4dGVybmFsIGFyYml0ZXIuCgogICAgVGhpcyBzb3VuZHMgZ29vZC4gVGhvdWdoIGluIHRoZSBzdGFuZGFsb25lIHNldHVwIHRoZSBDUExEIHNldHMgUENJX0hPU1QKICAgIGZsYWcgKGl0J3Mgb2ssIHdlIGNhbid0IGFjdCBhcyBQQ0kgYWdlbnRzIHNpbmNlIHdlIHJlY2VpdmUgQ0xLSU4sIG5vdAogICAgUENJQ0xLKSwgYnV0IHRoZSBDUExEIGRvZXNuJ3Qgc2V0IHRoZSBBUkJJVEVSX0VOQUJMRSBmbGFnLCBhbmQgd2l0aG91dAogICAgYW55IGFyYml0ZXIgYmFkIHRoaW5ncyB3aWxsIGhhcHBlbiAoaGVyZSB0aGUgYm9hcmQgaGFuZ3MgZHVyaW5nIGFueSBjb25maWcKICAgIHNwYWNlIHJlYWRzKS4KCiAgICBJbiB0aGlzIHNpdHVhdGlvbiB3ZSBtdXN0IGRpc2FibGUgdGhlIFBDSS4gQW5kIGluIGNhc2Ugb2YgYW55Ym9keSByZWFsbHkKICAgIHdhbnQgdG8gdXNlIGFuIGV4dGVybmFsIGFyYml0ZXIsIHdlIHByb3ZpZGUgInBjaV9leHRlcm5hbF9hcmlidGVyIgogICAgZW52aXJvbm1lbnQgdmFyaWFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFkYTgzYTYzZDhlMWI0YmRkZWI4MjU4MWIxNzQ1YTA5YWFjM2UyZDMKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJVGh1IE9jdCAyIDE4OjMyOjI1IDIwMDggKzA0MDAKCiAgICBtcGM4M3h4OiBhZGQgU0dNSUkgcmlzZXIgbW9kdWxlIHN1cHBvcnQgZm9yIHRoZSBNUEM4Mzc4RS1NRFMgYm9hcmRzCgogICAgVGhpcyBpbnZvbHZlcyBjb25maWd1cmluZyB0aGUgU2VyRGVzIGFuZCBmaXhpbmcgdXAgdGhlIGZsYWdzIGFuZAogICAgUEhZIGFkZHJlc3NlcyBmb3IgdGhlIFRTRUNzLgoKICAgIEZvciBMaW51eCB3ZSBhbHNvIGZpeCB1cCB0aGUgZGV2aWNlIHRyZWUuCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGU2ZDljODkxNmRlOWMyNGYyYzUyZDBiMDFjZjAwZDJlNzRhMDRjZDgKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJVGh1IE9jdCAyIDE4OjMxOjU5IDIwMDggKzA0MDAKCiAgICBtcGM4M3h4OiBhZGQgVFNFQ3MnIEhSQ1dIIG1hc2tzIGZvciBNUEM4Mzd4IHByb2Nlc3NvcnMKCiAgICBXZSdsbCB1c2UgdGhlc2UgbWFza3MgdG8gcGFyc2UgVFNFQyBtb2RlcyBvdXQgb2YgSFJDV0guCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDZmOWNjNjYwOGI0ZTFjZWZkZTU2YzBmYjk5YWUxYzk1YzQyNTc1ZmYKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJVGh1IE9jdCAyIDE4OjMxOjU2IDIwMDggKzA0MDAKCiAgICBtcGM4M3h4OiBzZXJkZXM6IGFkZCBmb3Jnb3R0ZW4gc2hpZnRzIGZvciByZmNrcwoKICAgIFRoZSByZmNrcyBzaG91bGQgYmUgc2hpZnRlZCBieSAyOCBiaXRzIGxlZnQuIFdlIGRpZG4ndCBub3RpY2UgdGhlIGJ1ZwogICAgYmVjYXVzZSB3ZSB3ZXJlIHVzaW5nIG9ubHkgMTAwTUh6IGNsb2NrcyAoZm9yIHdoaWNoIHJmY2tzID09IDApLgoKICAgIFRob3VnaCwgZm9yIFNHTUlJIHdlJ2xsIG5lZWQgMTI1TUh6IGNsb2Nrcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNTVjNTMxOTg0ZGNmOTMzZTRjZDEzYTE4N2E3ZTA4ZTg3M2I3Y2VkMQpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglUaHUgT2N0IDIgMTg6MzE6NTMgMjAwOCArMDQwMAoKICAgIG1wYzgzeHg6IGZpeCBzZXJkZXMgc2V0dXAgZm9yIHRoZSBNUEM4Mzc4RSBib2FyZHMKCiAgICBNUEM4Mzd4RSBzcGVjcyBzYXlzIHRoYXQgU2VyRGVzMSBoYXM6CgogICAg4oCUIFR3byBsYW5lcyBydW5uaW5nIHgxIFNHTUlJIGF0IDEuMjUgR2JwczsKICAgIOKAlCBUd28gbGFuZXMgcnVubmluZyB4MSBTQVRBIGF0IDEuNSBvciAzLjAgR2Jwcy4KCiAgICBBbmQgZm9yIFNlckRlczI6CgogICAg4oCUIFR3byBsYW5lcyBydW5uaW5nIHgxIFBDSSBFeHByZXNzIGF0IDIuNSBHYnBzOwogICAg4oCUIE9uZSBsYW5lIHJ1bm5pbmcgeDIgUENJIEV4cHJlc3MgYXQgMi41IEdicHM7CiAgICDigJQgVHdvIGxhbmVzIHJ1bm5pbmcgeDEgU0FUQSBhdCAxLjUgb3IgMy4wIEdicHMuCgogICAgVGhlIHNwZWMgYWxzbyBleHBsaWNpdGx5IHN0YXRlcyB0aGF0IFBFWCBvcHRpb25zIGFyZSBub3QgdmFsaWQgZm9yCiAgICB0aGUgU0QxLgoKICAgIE5ldmVydGhlbGVzcyBNUEM4Mzc4IFJEQiBhbmQgTURTIGJvYXJkcyBjb25maWd1cmUgdGhlIFNEMSBmb3IgUEVYLAogICAgd2hpY2ggaXMgd3JvbmcgdG8gZG8uCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDVjMmZmMzIzYTk0ZTI3ZTQ4MWY3MGM0NDgzOGQ0M2ZjZDg0NGRkNDYKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJV2VkIFNlcCAxMCAxODoxMjozNyAyMDA4ICswNDAwCgogICAgbXBjODN4eDogbXBjODM2MGVtZHM6IHJld29yayBMQkMgU0RSQU0gc2V0dXAKCiAgICBDdXJyZW50bHkgNjRNIG9mIExCQyBTRFJBTSBhcmUgbWFwcGVkIGF0IDB4RjAwMDAwMDAgd2hpY2ggbWFrZXMKICAgIGl0IGRpZmZpY3VsdCB0byB1c2UgKGIvYyB0aGVuIHRoZSBtZW1vcnkgaXMgZGlzY29udGludW91cyBhbmQKICAgIHRoZXJlIGlzIHF1aXRlIGJpZyBtZW1vcnkgaG9sZSBiZXR3ZWVuIHRoZSBERFIvU0RSQU0gcmVnaW9ucykuCgogICAgVGhpcyBwYXRjaCByZXdvcmtzIExCQyBTRFJBTSBzZXR1cCBzbyB0aGF0IG5vdyB3ZSBkeW5hbWljYWxseQogICAgcGxhY2UgdGhlIExCQyBTRFJBTSBuZWFyIHRoZSBERFIgKG9yIGF0IDB4MCBpZiB0aGVyZSBpc24ndCBhbnkKICAgIEREUiBtZW1vcnkpLgoKICAgIFdpdGggdGhpcyBwYXRjaCB3ZSdyZSBhYmxlIHRvOgoKICAgIC0gQm9vdCB3aXRob3V0IGV4dGVybmFsIEREUiBtZW1vcnk7CiAgICAtIFVzZSBtb3N0ICJERFIgKyBTRFJBTSIgc2V0dXBzIHdpdGhvdXQgbmVlZCB0byBzdXBwb3J0IGZvcgogICAgICBzcGFyc2UvZGlzY29udGludW91cyBtZW1vcnkgbW9kZWwgaW4gdGhlIHNvZnR3YXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkZWYwODE5ZTkyMGIwNWIzNGI1NmQ4YjQyZTFlNDNkOWI4OWE1MmQ2CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAeHBlcnQuZGVueC5kZT4KRGF0ZToJVHVlIE9jdCAyMSAxMToyMzo1NiAyMDA4ICswMjAwCgogICAgRkRUOiBkb24ndCB1c2UgcHJpdmF0ZSBrZXJuZWwgaGVhZGVyIGZpbGVzCgogICAgT24gc29tZSBzeXN0ZW1zIChmb3IgZXhhbXBsZSBGZWRvcmEgQ29yZSA0KSBVLUJvb3QgYnVpbGRzIHdpdGggdGhlCiAgICBmb2xsb3dpbmcgd2FucmluZ3Mgb25seToKCiAgICAuLi4KICAgIEluIGZpbGUgaW5jbHVkZWQgZnJvbSAvaG9tZS93ZC9naXQvdS1ib290L2luY2x1ZGUvbGliZmR0X2Vudi5oOjMzLAoJCSAgICAgZnJvbSBmZHQuYzo1MToKCQkgL3Vzci9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaDo2OjI6IHdhcm5pbmc6ICN3YXJuaW5nIHVzaW5nIHByaXZhdGUga2VybmVsIGhlYWRlcjsgaW5jbHVkZSA8ZW5kaWFuLmg+IGluc3RlYWQhCgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGlzIHByb2JsZW0uCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBmNGQxNGM1NTUwNGNlNDAyODczMjFiZDYzZWUyNjllMzIzM2VlNGFlCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gT2N0IDEzIDE1OjE1OjMxIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEFkZCAxLjAgJiAxLjA2NiBHSHogdG8gY2FueW9ubGFuZHMgYm9vdHN0cmFwIGNvbW1hbmQgZm9yIFBMTCBzZXR1cAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0M2NiY2U2OWQ0OGQwNTI1NzRkNzFmNTA3MjRiZTU0NmQ5MGE0NmE0CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gT2N0IDEzIDEwOjQ1OjE0IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IENvcnJlY3RseSBzZXR1cCByYW5nZXMgcHJvcGVydHkgaW4gZWJjIG5vZGUKCiAgICBQcmV2aW91c2x5IG9ubHkgdGhlIE5PUiBmbGFzaCBtYXBwaW5nIHdhcyB3cml0dGVuIGludG8gdGhlIHJhbmdlcwogICAgcHJvcGVydHkgb2YgdGhlIGViYyBub2RlLiBUaGlzIHBhdGNoIG5vdyB3cml0ZXMgYWxsIGVuYWJsZWQgY2hpcAogICAgc2VsZWN0IGFyZWFzIGludG8gdGhlIHJhbmdlcyBwcm9wZXJ0eS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZDdiMjZkNTgzMjhmMTM3NDcxZWE5N2RlMzgyYmZhNjNmNzIzOTkzMQpBdXRob3I6IERpcmsgRWliYWNoIDxlaWJhY2hAZ2RzeXMuZGU+CkRhdGU6CVdlZCBPY3QgOCAxNTozNzo1MCAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBBZGQgR0RTeXMgbmVvIDQwNUVQIGJvYXJkIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGMxMWRhMTk0NTQ1ZDJmNGJiYjU0YmUxYmI1ZTUwNGUyMGNlOGMxNmMKQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgpEYXRlOglXZWQgT2N0IDEgMTQ6NDY6MTMgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogVXBkYXRlIGNvbmZpZ3MgZm9yIE5ldHN0YWwgYm9hcmRzCgogICAgSSByZW9yZ2FuaXplZCBteSBjb25maWcgZmlsZXMsIHB1dHRpbmcgdGhlIGNvbW1vbiBzdHVmZiBpbnRvIG5ldHN0YWwtY29tbW9uLmgKICAgIChnb3QgdGhlIGlkZWEgYnkgbG9va2luZyBhIGFtY2MtY29tbW9uLmggZnJvbSBTdGVmYW4pLgoKICAgIEFkZGVkIHN0dWZmIHRvIGJvb3QgdGhlIG5ldyBwb3dlcnBjIGxpbnV4IHZpYSBORlMgKG9ubHkgdGVzdGVkIHdpdGggSENVNCkuCgogICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjOWMxMWQ3NTFlNDI0MmNmMjljM2MzYzI5MGQ5NzFmNmQwY2IxZDE1CkF1dGhvcjogQWRhbSBHcmFoYW0gPGFncmFoYW1AYW1jYy5jb20+CkRhdGU6CVdlZCBPY3QgOCAxMDoxMzoxOSAyMDA4IC0wNzAwCgogICAgcHBjNHh4OiBBZGQgcm91dGluZSB0byByZXRyaWV2ZSBDUFUgbnVtYmVyCgogICAgUHJvdmlkZSBhIHdlYWsgZGVmaW5lZCByb3V0aW5lIHRvIHJldHJpZXZlIHRoZSBDUFUgbnVtYmVyIGZvcgogICAgcmVmZXJlbmNlIGJvYXJkcyB0aGF0IGhhdmUgbXVsdGlwbGUgQ1BVJ3MuCURlZmF1bHQgYmVoYXZpb3IKICAgIGlzIHRoZSBleGlzdGluZyBzaW5nbGUgQ1BVIHByaW50IG91dHB1dC4gIFJlZmVyZW5jZSBib2FyZHMgd2l0aAogICAgbXVsdGlwbGUgQ1BVJ3MgbmVlZCB0byBwcm92aWRlIGEgYm9hcmQgc3BlY2lmaWMgcm91dGluZS4KICAgIFNlZSBib2FyZC9hbWNjL2FyY2hlcy9hcmNoZXMuYyBmb3IgYW4gZXhhbXBsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBZGFtIEdyYWhhbSA8YWdyYWhhbUBhbWNjLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFZpY3RvciBHYWxsYXJkbyA8dmdhbGxhcmRvQGFtY2MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDU5MjE3YmFlNDBlOTA5ODJhYjU0MDBkODQ5YzA4YWY2ODNhY2UwMzYKQXV0aG9yOiBBZGFtIEdyYWhhbSA8YWdyYWhhbUBhbWNjLmNvbT4KRGF0ZToJV2VkIE9jdCA4IDEwOjEzOjE0IDIwMDggLTA3MDAKCiAgICBwcGM0eHg6IEFkZCBzdGF0aWMgc3VwcG9ydCBmb3IgNDR4IElCTSBTRFJBTSBDb250cm9sbGVyCgogICAgVGhpcyBwYXRjaCBhZGQgdGhlIGNhcGFiaWxpdHkgdG8gY29uZmlndXJlIGEgUFBDNDQwIGJhc2VkIElCTSBTRFJBTQogICAgQ29udHJvbGxlciB3aXRoIHN0YXRpYywgY29tcGlsZWQtaW4sIHZhbHVlcy4gUFBDNDQwIG1lbW9yeSBzdWJzeXN0ZW0KICAgIGluY2x1ZGVzIGEgTWVtb3J5IFF1ZXVlIGNvcmUuCgogICAgU2lnbmVkLW9mZi1ieTogQWRhbSBHcmFoYW0gPGFncmFoYW1AYW1jYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBWaWN0b3IgR2FsbGFyZG8gPHZnYWxsYXJkb0BhbWNjLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmMDlmMDlkMzg5OTAxN2FhYWEyYjAzMWJiYTYzYzI3MWU5YzQ4ZTRkCkF1dGhvcjogQWRhbSBHcmFoYW0gPGFncmFoYW1AYW1jYy5jb20+CkRhdGU6CVdlZCBPY3QgOCAxMDoxMjo1MyAyMDA4IC0wNzAwCgogICAgcHBjNHh4OiBBZGQgQU1DQyBBcmNoZXMgYm9hcmQgc3VwcG9ydCAoZHVhbCA0NjBHVCkKCiAgICBUaGUgQXJjaGVzIEV2YWx1YXRpb24gYm9hcmQgaXMgYmFzZWQgb24gdGhlIEFNQ0MgNDYwR1QgU29DIGNoaXAuCiAgICBUaGlzIGJvYXJkIGlzIGEgZHVhbCBwcm9jZXNzb3IgYm9hcmQgd2l0aCBlYWNoIHByb2Nlc3NvciBwcm92aWRpbmcKICAgIGluZGVwZW5kZW50IHJlc291cmNlcyBmb3IgUmFwaWQgSU8sIEdpZ2FiaXQgRXRoZXJuZXQsIGFuZCBzZXJpYWwKICAgIGNvbW11bmljYXRpb25zLiBFYWNoIDQ2MEdUIGhhcyBpdCdzIG93biA1MTJNQiBERFIyIG1lbW9yeSwgMzJNQiBOT1IKICAgIEZMQVNILCBVQVJULCBFRVBST00gYW5kIHRlbXBlcmF0dXJlIHNlbnNvciwgYWxvbmcgd2l0aCBhIHNoYXJlZCBkZWJ1ZwogICAgcG9ydC4gVGhlIHR3byA0NjBHVCdzIHdpbGwgY29tbXVuaWNhdGUgd2l0aCBlYWNoIG90aGVyIHZpYSBzaGFyZWQKICAgIG1lbW9yeSwgR2lnYWJpdCBFdGhlcm5ldCBhbmQgeDEgUENJLUV4cHJlc3MuCgogICAgU2lnbmVkLW9mZi1ieTogQWRhbSBHcmFoYW0gPGFncmFoYW1AYW1jYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBWaWN0b3IgR2FsbGFyZG8gPHZnYWxsYXJkb0BhbWNjLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwNTViMTJmMmZmZDdjMzRlZWE3ZTk4M2EwNTg4YjI0ZjJlNjllMGUzCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAeHBlcnQuZGVueC5kZT4KRGF0ZToJU3VuIE9jdCAxOSAyMTo1NDozMCAyMDA4ICswMjAwCgogICAgVFFNODI2MDogZW52aXJvbm1lbnQgaW4gZmxhc2ggaW5zdGVhZCBFRVBST00sIGJhdWRyYXRlIDExNWsKCiAgICBTZXZlcmFsIGN1c3RvbWVycyBoYXZlIHJlcG9ydGVkIHByb2JsZW1zIHdpdGggdGhlIGVudmlyb25tZW50IGluCiAgICBFRVBST00sIGluY2x1ZGluZyBjb3JydXB0ZWQgY29udGVudCBhZnRlciBib2FyZCByZXNldC4gUHJvYmFibHkgdGhlCiAgICBjb2RlIHRvIHByZXZlbnQgSTJDIEVuZ2UgQ29uZGl0aW9ucyBpcyBub3Qgd29ya2luZyBzdWZmaWNpZW50bHkuCgogICAgV2UgbW92ZSB0aGUgZW52aXJvbm1lbnQgdG8gZmxhc2ggbm93LCB3aGljaCBhbGxvd3MgdG8gaGF2ZSBhIGJhY2t1cAogICAgY29weSBwbHVzIGdpdmVzIG11Y2ggZmFzdGVyIGJvb3QgdGltZXMuCgogICAgQWxzbywgY2hhbmdlIHRoZSBkZWZhdWx0IGNvbnNvbGUgaW5pdGlhbGl6YXRpb24gdG8gMTE1MjAwIGJwcyBhcyB1c2VkCiAgICBvbiBtb3N0IG90aGVyIGJvYXJkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDE4MzY4ODExOTBiM2Q4YTY5MThiMGQ2NGIzOWZlMzJiYmJkZjg1ZDgKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglTdW4gT2N0IDE5IDEyOjQ5OjE5IDIwMDggLTA1MDAKCiAgICA4NXh4OiBGaXggY29tcGlsZSB3YXJuaW5nIGluIG1wYzg1MzZkcy5jCgogICAgbXBjODUzNmRzLmM6IEluIGZ1bmN0aW9uICdpc19zYXRhX3N1cHBvcnRlZCc6CiAgICBtcGM4NTM2ZHMuYzo2MTU6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAnZGV2ZGlzcicKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDhlZDQ0ZDkxYzgxMjJkMDAzNjg1MjNiMGI3NDY2OTFjODk1ZDNiM2MKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gT2N0IDE5IDAyOjM1OjUwIDIwMDggKzAyMDAKCiAgICBDbGVhbnVwOiBmaXggIk1IeiIgc3BlbGxpbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDA4ZWY4OWVjZDE3NDk2OWIzNTQ0ZjNmMGM3Y2QxZGUzYzU3ZjczN2IKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gT2N0IDE5IDAyOjM1OjQ5IDIwMDggKzAyMDAKCiAgICBVc2Ugc3RybWh6KCkgdG8gZm9ybWF0IGNsb2NrIGZyZXF1ZW5jaWVzCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBkNTBjN2Q0YmUxNTBiMjI1MmMwZDJlMTZjZmNmNjk2NDNiZGQ2ZGM5CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIE9jdCAxOSAwMjozNTo0OCAyMDA4ICswMjAwCgogICAgc3RybWh6KCk6IFJvdW5kIG51bWJlcnMgd2hlbiBwcmludGluZyBjbG9jayBmcmVxdWVuY2llcwoKICAgIFJvdW5kIGNsb2NrIGZyZXF1ZW5jaWVzIGZvciBwcmludGluZy4KCiAgICBNYW55IGJvYXJkcyBwcmludGVkIG9mZiBjbG9jayBmcmVxdWVuY2llcyBsaWtlIDM5OSBNSHogaW5zdGVhZCBvZiB0aGUKICAgIGV4YWN0IDQwMCBNSHogYmVjYXVzZSBudW1iZXJlcyB3ZXJlIG5vdCByb3VuZGVkLiBUaGlzIGlzIGZpeGVkIG5vdy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDY4MWMwMmQwNWIyOWM2ZDQ2MDkzNTI1MDUyYzc0YjljNGRkYzhiMDgKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gT2N0IDIwIDE1OjE2OjQ3IDIwMDggLTA1MDAKCiAgICA4NXh4OiBwcm9wZXJseSBkb2N1bWVudCBNUEM4NXh4X1BPUkRFVlNSMl9TRUNfQ0ZHCgogICAgQ29tbWl0IGY3ZDE5MGIxIGNvcnJlY3RlZCB0aGUgdmFsdWUgb2YgTVBDODV4eF9QT1JERVZTUjJfU0VDX0NGRywgYnV0IGZvcmdvdAogICAgdG8gYWRkIGEgY29tbWVudCB0aGF0IHRoZSBjb3JyZWN0IHZhbHVlIGRpc2FncmVlcyB3aXRoIHRoZSA4NTQ0IHJlZmVyZW5jZQogICAgbWFudWFsLiAgVGhlIGNoYW5nZWxvZyBmb3IgdGhhdCBjb21taXQgaXMgYWxzbyB3cm9uZywgYXMgaXQgc2F5cyAiYml0IDI4IgogICAgd2hlbiBpdCBzaG91bGQgYmUgImJpdCAyNCIuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzNjBmZTcxZTgyYjgzZTI2NGM5NjRjOTQ0N2M1MzdlOWExZjY0M2M4CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CUZyaSBPY3QgMTcgMTg6MjQ6MDYgMjAwOCArMDIwMAoKICAgIG1nY29nZTogYWRkIHJlZHVuZGFudCBlbnZpcm9ubWVudCBzZWN0b3IKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCA1M2ViZjBjNDcwYzg3ZDVmOWZhNzY0NjJlNWY0MDY0ZDI2YTliMTZhCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CUZyaSBPY3QgMTcgMTg6MjM6MjcgMjAwOCArMDIwMAoKICAgIG1nc3V2ZDogdXBkYXRlIHNpemUgb2YgZW52aXJvbm1lbnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAyZTI2ZDgzN2YxMTQ2MGMwZTZkZWRlN2Q2NTQyNGEzMWUwMTgzZDA5CkF1dGhvcjogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE9jdCAxMCAxMTo0MTowMCAyMDA4ICswODAwCgogICAgRW5hYmxlZCB0aGUgRnJlZXNjYWxlIFNHTUlJIHJpc2VyIGNhcmQgb24gODUzNkRTCgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3ZTE4M2NhZDBjNWFiNjQxNWRjYTk1ZDZhYzI5MGVhOTE4YjI4YzU1CkF1dGhvcjogTGl1IFl1IDx5dS5saXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE9jdCAxMCAxMTo0MDo1OSAyMDA4ICswODAwCgogICAgRW5hYmxlZCB0aGUgRnJlZXNjYWxlIFNHTUlJIHJpc2VyIGNhcmQgb24gODU3MkRTCgogICAgVGhpcyBwYXRjaCBiYXNlZCBvbiBBbmR5J3Mgd29yay4KICAgIEluY2x1ZGluZyBjb21tYW5kICdwaXhpc19zZXRfc2dtaWknIHN1cHBvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogTGl1IFl1IDx5dS5saXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiZmYxODhiYWY5NDI3YzM1NzQ1MzU2NDM5NDM1YWNmMzg2NGQ0YzY1CkF1dGhvcjogTGl1IFl1IDx5dS5saXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE9jdCAxMCAxMTo0MDo1OCAyMDA4ICswODAwCgogICAgTWFrZSBwaXhpc19zZXRfc2dtaWkgbW9yZSBnZW5lcmFsIHRvIHN1cHBvcnQgTVBDODV4eCBib2FyZHMuCgogICAgVGhlIHBpeGlzIHNnbWlpIGNvbW1hbmQgZGVwZW5kIG9uIHRoZSBGUEdBIHN1cHBvcnQgb24gdGhlIGJvYXJkLCBzb21lIDg1eHgKICAgIGJvYXJkcyBzdXBwb3J0IFNHTUlJIHJpc2VyIGNhcmQgYnV0IGRpZCBub3Qgc3VwcG9ydCB0aGlzIGNvbW1hbmQsIGRlZmluZQogICAgQ09ORklHX1BJWElTX1NHTUlJX0NNRCBmb3IgdGhvc2UgYm9hcmRzIHdoaWNoIHN1cHBvcnQgdGhlIHNnbWlpIGNvbW1hbmQuCgogICAgTm90IGxpa2UgODU0NCwgODU3MiBoYXMgNCBlVHNlYyBzbyB0aGF0IHRoZSBvdGhlciB0d28ncyBwaXhpcyBiaXRzCiAgICBhcmUgbm90IHN1cHBvcnRlZCBieSA4NTQ0LiBUaGVyZWZvciwgZGVmaW5lIFBJWElTX1ZTUEVFRDJfTUFTSyBhbmQKICAgIFBJWElTX1ZDRkdFTjFfTUFTSyBpbiBoZWFkZXIgZmlsZSBmb3IgYm90aCBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogTGl1IFl1IDx5dS5saXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1ZTk4MWQ2ODNkMjM2MzIwNGM3Njc3Mzk0MWMyZTljMjA0NGM4MDhmCkF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE9jdCA4IDIzOjM4OjAyIDIwMDggLTA1MDAKCiAgICBBZGQgY3B1Lzh4eHggdG8gVEFHU19TVUJESVJTCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlMWY3ZDIyYjhiNTJmYzA4YzRkMTdhNmE3ZGIxZTY2NDI4MWFlZDYzCkF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE9jdCA5IDAxOjI1OjU1IDIwMDggLTA1MDAKCiAgICBmc2xfbGF3IGNsZWFyIGVuYWJsZSBiZWZvcmUgY2hhbmdpbmcuCgogICAgRGVidWcgc2Vzc2lvbnMgbWF5IGhhdmUgbGVmdCBlbmFibGVkIGxhd3MuCiAgICBDaGFuZ2luZyBsYXdiYXIgd2l0aCBhbiB1bmtvd24gZW5hYmxlZCB0Z3RpZCBjb3VsZCBjYXVzZSBwcm9ibGVtcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDg2YmU1MTBmN2I1NDQzZTdlOTM3ZjY5NmJmYmUwMzdmZGM3NDBiMTUKQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgT2N0IDkgMDA6Mjk6MjcgMjAwOCAtMDUwMAoKICAgIG1wYzg1NzIgYWRkaXRpb25hbCBlbmQtcG9pbnQgbW9kZQoKICAgIG1wYzg1NzIgc3VwcG9ydHMgYWxsIHBjaWUgY29udHJvbGxlcnMgYXMgZW5kLXBvaW50cyB3aXRoIGNmZ19ob3N0X2FnZW50PTAuCiAgICBJbmNsdWRlIGhvc3RfYWdlbnQgPT0gMCBkZWNvZGUgZm9yIGVuZC1wb2ludCBkZXRlcm1pbmF0aW9uLgoKICAgIFRoaXMgaXMgbm90IG5lZWRlZCBmb3IgdGhlIGRzIHJlZmVyZW5jZSBib2FyZCBzaW5jZSBwY2llMyB3aWxsIGJlIGEgaG9zdAogICAgaW4gb3JkZXIgdG8gY29ubmVjdCB0byB0aGUgdWxpIGNoaXAuICBJbmNsdWRlIGl0IGhlcmUgYXMgYSByZWZlcmVuY2UgZm9yCiAgICBvdGhlciBtcGM4NTcyIGJvYXJkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDY4NTZiM2QwMjIxYTgzODU4MGU2YmIwNmY2MTQyNWZkNzUyOWJhOTMKQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgT2N0IDggMjM6Mzc6NTkgMjAwOCAtMDUwMAoKICAgIDg1eHggaWYgTlVNX0NQVVM+MSwgcHJpbnQgY3B1IG51bWJlcgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjdmZWNjM2UyNTA1MGEwMzZjOWY1MGYwZDJiODViYzMxOTlhOTZlMApBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBPY3QgOCAyMzozODowMSAyMDA4IC0wNTAwCgogICAgcGl4aXMgZG8gbm90IHByaW50IGxvbmcgaGVscCBpZiBub3QgY29uZmlndXJlZAoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMGUxN2YwMmE4YTc4ZDg1MjI1YTRkODA1ZjZhMWVhOTVhMGE0NjBiNQpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE9jdCA3IDA4OjA5OjUwIDIwMDggLTA1MDAKCiAgICBIYXZlIHUtYm9vdCBwYXNzIHN0YXNoaW5nIHBhcmFtZXRlcnMgaW50byBkZXZpY2UgdHJlZQoKICAgIFNvbWUgY29yZXMgZG9uJ3Qgc3VwcG9ydCBldGhlcm5ldCBzdGFzaGluZyBhdCBhbGwsIGFuZCBzb21lCiAgICBpbnN0YW5jZXMgaGF2ZSBlcnJhdGEuICBBZGRzIDMgcHJvcGVydGllcyB0byBnaWFuZmFyIG5vZGVzCiAgICB3aGljaCBzdXBwb3J0IHN0YXNoaW5nLiAgRm9yIG5vdywganVzdCBhZGQgdGhpcyBzdXBwb3J0IHRvCiAgICA4NXh4IFNvQ3MuCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGMyMTYxN2ZkMjY1YjdjMTI2YzZlMmYyZDhhMjNjZGIwMGQ0ZmFkZTcKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgT2N0IDMgMTI6Mzc6NTcgMjAwOCAtMDQwMAoKICAgIEFkZCBERFIgb3B0aW9ucyBzZXR0aW5nIG9uIE1QQzg2NDFIUENOIGJvYXJkCgogICAgKiBBZGQgYm9hcmQgc3BlY2lmaWMgcGFyYW1ldGVyIHRhYmxlIHRvIGNob29zZSBjb3JyZWN0IGNwbywgY2xrX2FkanVzdCwKICAgIHdyaXRlX2RhdGFfZGVsYXkgYmFzZWQgb24gYm9hcmQgZGRyIGZyZXF1ZW5jeSBhbmQgbl9yYW5rcy4KCiAgICAqIFNldCBvZHRfcmRfY2ZnIGFuZCBvZHRfd3JfY2ZnIGJhc2VkIG9uIHRoZSBkaW1tIyBhbmQgQ1MjLgoKICAgIFNpZ25lZC1vZmYtYnk6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNGNhMDY2MDdkNjBkMGE2Mzc4ODEyZWY1OGZkMWVhYjJhN2Y3NzExMQpBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBPY3QgMyAxMjozNzo0MSAyMDA4IC0wNDAwCgogICAgQWRkIGRkciBpbnRlcmxlYXZpbmcgc3VwcHBvcnQgZm9yIE1QQzg1NzJEUyBib2FyZAoKICAgICogQWRkIGJvYXJkIHNwZWNpZmljIHBhcmFtZXRlciB0YWJsZSB0byBjaG9vc2UgY29ycmVjdCBjcG8sIGNsa19hZGp1c3QsCiAgICB3cml0ZV9kYXRhX2RlbGF5LCAyVCBiYXNlZCBvbiBib2FyZCBkZHIgZnJlcXVlbmN5IGFuZCBuX3JhbmtzLgoKICAgICogU2V0IG9kdF9yZF9jZmcgYW5kIG9kdF93cl9jZmcgYmFzZWQgb24gdGhlIGRpbW0jIGFuZCBDUyMuCgogICAgKiBTZXQgbWVtb3J5IGNvbnRyb2xsZXIgaW50ZXJsZWF2aW5nIG1vZGUgdG8gYmFuayBpbnRlcmxlYXZpbmcsIGFuZCBkaXNhYmxlCiAgICBiYW5rKGNoaXAgc2VsZWN0KSBpbnRlcmxlYXZpbmcgbW9kZSBieSBkZWZhdWx0LCBiZWNhdXNlIHRoZSBkZWZhdWx0IG9uLWJvYXJkCiAgICBERFIgRElNTXMgYXJlIDJ4NTEyTUIgc2luZ2xlLXJhbmsuCgogICAgKiBDaGFuZ2UgQ09ORklHX0lDUzMwN19SRUZDTEtfSFogZnJvbSAzMzMzMzMzMyB0byAzMzMzMzAwMC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYW1lcyBZYW5nIDxKYW1lcy5ZYW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFmMjkzYjQxN2FjNmFiOGUzMTdjYTJiNzcwMzc3Y2E5M2VkZjIzNzAKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgT2N0IDMgMTI6Mzc6MjYgMjAwOCAtMDQwMAoKICAgIEFkZCBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IgRERSIGNvbnRyb2xsZXIgcmVnaXN0ZXJzCgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjOWZmZDgzOWIxYWRhNTAyYzg2Zjg4ZWRhZjE1MzQ0MjZiNjY4OGNlCkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE9jdCAzIDEyOjM3OjEwIDIwMDggLTA0MDAKCiAgICBDaGVjayBERFIgaW50ZXJsZWF2aW5nIG1vZGUKCiAgICAqIENoZWNrIEREUiBpbnRlcmxlYXZpbmcgbW9kZSBmcm9tIGVudmlyb25tZW50IGJ5IHJlYWRpbmcgbWVtY3RsX2ludGx2X2N0bCBhbmQKICAgIGJhX2ludGx2X2N0bC4KICAgICogUHJpbnQgRERSIGludGVybGVhdmluZyBtb2RlIGluZm9ybWF0aW9uCiAgICAqIEFkZCBkb2MvUkVBRE1FLmZzbC1kZHIgdG8gZGVzY3JpYmUgdGhlIGludGVybGVhdmluZyBzZXR0aW5nCgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkZmI0OTEwOGU0Zjg2YzIyMjRlMWYzMDEyNDMyOGIwZGU2NmVmNzJlCkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE9jdCAzIDEyOjM2OjU1IDIwMDggLTA0MDAKCiAgICBQYXNzIGRpbW0gcGFyYW1ldGVycyB0byBwb3B1bGF0ZSBwb3B1bGF0ZSBjb250cm9sbGVyIG9wdGlvbnMKCiAgICBCZWNhdXNlIHNvbWUgZGltbSBwYXJhbWV0ZXJzIGxpa2Ugbl9yYW5rcyBuZWVkcyB0byBiZSB1c2VkIHdpdGggdGhlIGJvYXJkCiAgICBmcmVxdWVuY3kgdG8gY2hvb3NlIHRoZSBib2FyZCBwYXJhbWV0ZXJzIGxpa2UgY2xrX2FkanVzdCBldGMuIGluIHRoZQogICAgYm9hcmRfc3BlY2lmaWNfcGFyYW1lc3RlcnMgdGFibGUgb2YgdGhlIGJvYXJkIGRkciBmaWxlLCB3ZSBuZWVkIHRvIHBhc3MKICAgIHRoZSBkaW1tIHBhcmFtZXRlcnMgdG8gdGhlIGJvYXJkIGZpbGUuCgogICAgKiBtb3ZlIGRkciBkaW1tIHBhcmFtZXRlcnMgaGVhZGVyIGZpbGUgZnJvbSAvY3B1IHRvIC9pbmNsdWRlIGRpcmVjdG9yeS4KICAgICogYWRkIGRkciBkaW1tIHBhcmFtZXRlcnMgdG8gcG9wdWxhdGUgYm9hcmQgc3BlY2lmaWMgb3B0aW9ucy4KICAgICogRml4IGZzbF9kZHJfYm9hcmRfb3B0aW9ucygpIGZvciBhbGwgdGhlIDh4eHggYm9hcmRzIHdoaWNoIGNhbGwgdGhpcyBmdW5jdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGRiYmJiM2FiZWZmMzI1ODU1Y2FlNzZlMzNkNjlkNTY2NTYzMTQ0M2YKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgT2N0IDMgMTI6MzY6MzkgMjAwOCAtMDQwMAoKICAgIE1ha2UgRERSIGludGVybGVhdmluZyBtb2RlIHdvcmsgY29ycmVjdGx5CgogICAgRml4IHNvbWUgYnVnczoKICAgICAgMS4gQ29ycmVjdGx5IHNldCBpbnRsdl9jdGwgaW4gY3NfY29uZmlnLgogICAgICAyLiBDb3JyZWN0bHkgc2V0IHNhLCBlYSBpbiBjc19ibmRzIHdoZW4gYmFuayBpbnRlcmxlYXZpbmcgbW9kZSBpcyBlbmFibGVkLgogICAgICAzLiBTZXQgYmFzZV9hZGRyZXNzIGFuZCB0b3RhbCBtZW1vcnkgZm9yIGVhY2ggZGRyIGNvbnRyb2xsZXIgaW4gbWVtb3J5CgkgY29udHJvbGxlciBpbnRlcmxlYXZpbmcgbW9kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFjOWFhNzZiZjkwMTMwNjllMjQyNThmNDZmNDY4N2M5Zjk4YTAyZDYKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gU2VwIDIyIDIzOjQwOjQyIDIwMDggLTA1MDAKCiAgICA4NXh4OiBFbmFibGUgaW50ZXJydXB0IGFuZCBzZXRleHByIGNvbW1hbmRzIG9uIEZyZWVzY2FsZSA4NXh4IGJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgN2MwZDRhNzUwOGQyNTJkMmQ3YzEzN2VlYjM3NjgxNDEzMmRkYTMwZgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBTZXAgMjIgMTQ6MTE6MTEgMjAwOCAtMDUwMAoKICAgIDg1eHg6IEltcHJvdmUgZmxhc2ggcmVtYXBwaW5nIG9uIE1QQzg1NzJEUyAmIE1QQzg1MzZEUwoKICAgIENoYW5naW5nIHRoZSBmbGFzaCBmcm9tIGNhY2hlYWJsZSB0byBjYWNoZS1pbmhpYml0ZWQgd2FzIHRha2luZyBhIHNpZ25pZmljYW50CiAgICBhbW91bnQgb2YgdGltZSBkdWUgdG8gdGhlIGZhY3QgdGhhdCB3ZSB3ZXJlIGl0ZXJhdGluZyBvdmVyIHRoZSBmdWxsIDI1Nk0gb2YKICAgIGZsYXNoLiAgSW5zdGVhZCB3ZSBjYW4ganVzdCBmbHVzaCB0aGUgTDEgZC1jYWNoZSBhbmQgaW52YWxpZGF0ZSB0aGUgaS1jYWNoZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDU0ZTA5MWQzYjYwM2EzMzMyYzYxOTE5OWNhODNhMDdlOTU5NjBkYTQKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gU2VwIDIyIDE0OjExOjEwIDIwMDggLTA1MDAKCiAgICA4NXh4OiBFeHBvcnQgaW52YWxpZGF0ZV97aSxkfWNhY2hlIGFuZCBhZGQgZmx1c2hfZGNhY2hlCgogICAgQWRkZWQgdGhlIGFiaWxpdHkgZm9yIEMgY29kZSB0byBpbnZhbGlkYXRlIHRoZSBpL2QtY2FjaGUncyBhbmQKICAgIHRvIGZsdXNoIHRoZSBkLWNhY2hlLiAgVGhpcyBhbGxvd3MgdXMgdG8gbW9yZSBlZmZpY2llbnQgY2hhbmdlIG1hcHBpbmdzCiAgICBmcm9tIGNhY2hlLWFibGUgdG8gY2FjaGUtaW5oaWJpdGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNjI1MGYwZjYyOTdjNWJhOWFlY2RlYTYyOTA3OTlhOTVjNWQ0YjFkYQpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglGcmkgT2N0IDE3IDE2OjExOjUyIDIwMDggKzAyMDAKCiAgICBtZ2NvZ2UsIG1nc3V2ZDogZXh0cmFjdCBtb3JlIGNvbW1vbiBjb2RlCgogICAgaW4gZnRfYmxvYl91cGRhdGUgKCkgZm9yIGJvdGggYm9hcmRzIHdhcyBhbiB1bm5lY2Nlc3NhcnkKICAgIHJlcGV0aXRpb24gb2YgY29kZSwgd2hpY2ggdGhpcyBwYXRjaCBtb3ZlcyBpbiBhIGNvbW1vbgogICAgZnVuY3Rpb24gZm9yIHRoaXMgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDllMjk5MTkyY2E5ODUwY2Y3MjU0NTYzODgwNDJhNWFhNWE2ZjNlYzcKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJRnJpIE9jdCAxNyAxMjoxNTo1NSAyMDA4ICswMjAwCgogICAgbWdjb2dlLCBtZ3N1dmQ6IHVzZSBpbl8qL291dF8qIGFjY2Vzb3JzCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgYTIxY2E5NWY4YjlkY2EyMjcxNDk1MmIzNDhlNDkwNWFjMTU3YjVjZApBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglGcmkgT2N0IDE3IDEzOjUyOjUxIDIwMDggKzAyMDAKCiAgICBtZ3N1dmQ6IGZpeCBjb21waWxlciB3YXJuaW5nIHdoZW4gdXNpbmcgc29mdF9pMmMgZHJpdmVyCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgY2FjOWNmNzg3NWMyYTAxZDYzNDIyODIwZWQ0NzMyYTliZGY1YWI3YgpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglGcmkgT2N0IDE3IDEyOjE1OjA1IDIwMDggKzAyMDAKCiAgICBtZ3N1dmQ6IGZpeCBjb2Rpbmcgc3R5bGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCA1ZjRjMzEzN2Y0ZjA1MTc4NzcwN2M1NDgxMzM4MjNmMTY1NmViNTA4CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CUZyaSBPY3QgMTcgMTI6MTM6MzAgMjAwOCArMDIwMAoKICAgIG1nY29nZTogU2Vjb25kIEZsYXNoIG9uIENTNSBub3Qgb24gQ1MxCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgNzZkYTE5ZGY1YjhlMTg2ZDI2OWYyOTE5MDY5NmJkMzFmYjZjODM2YgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBPY3QgMTYgMjE6NTI6MDggMjAwOCAtMDUwMAoKICAgIEFkZGVkIGFyY2hfbG1iX3Jlc2VydmUgdG8gYWxsb3cgYXJjaCBzcGVjaWZpYyBtZW1vcnkgcmVnaW9ucyBwcm90ZWN0aW9uCgogICAgRWFjaCBhcmNoaXRlY3R1cmUgaGFzIGRpZmZlcmVudCB3YXlzIG9mIGRldGVybWluZSB3aGF0IHJlZ2lvbnMgb2YgbWVtb3J5CiAgICBtaWdodCBub3QgYmUgdmFsaWQgdG8gZ2V0IG92ZXJ3cml0dGVuIHdoZW4gd2UgYm9vdC4gIFRoaXMgcHJvdmlkZXMgYQogICAgaG9vayB0byBhbGxvdyB0aGVtIHRvIHJlc2VydmUgYW55IHJlZ2lvbnMgdGhleSBjYXJlIGFib3V0LglDdXJyZW50bHkKICAgIG9ubHkgcHBjLCBtNjhrIGFuZCBzcGFyYyBuZWVkL3VzZSB0aGlzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZTAyZDRhOTkwNGM4ZjM2Mzk1OTk0YzBjODE0NjlkNTUyYjgyZjVlYQpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglUaHUgT2N0IDE2IDE2OjMyOjM1IDIwMDggKzAyMDAKCiAgICBtZ2NvZ2U6IGFkZGVkIENPTkZJR19GSVQgdG8gc3VwcG9ydCB0aGUgbmV3IHUtYm9vdCBpbWFnZSBmb3JtYXQKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCA2ZDBmNmJjZjMzN2M1MjYxYzA4ZmFiZTEyOTgyMTc4YzJjNDg5ZDc2CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVGh1IE9jdCAxNiAxNTowMToxNSAyMDA4ICswMjAwCgogICAgcmVuYW1lIENGR18gbWFjcm9zIHRvIENPTkZJR19TWVMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDcxZWRjMjcxODE2ZWM4MmNmMDU1MGRkNjk4MGJlMmRhM2NjMmFkOWUKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gT2N0IDEzIDE0OjEyOjU1IDIwMDggLTA1MDAKCiAgICA3NHh4Lzd4eC84Nnh4OiBSZW5hbWUgZmx1c2hfZGF0YV9jYWNoZSB0byBmbHVzaF9kY2FjaGUgdG8gbWF0Y2ggODV4eCB2ZXJzaW9uCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBiNzk5Y2I0YzBlZWJiMDc2MmU5MWU5NjUzZDhiOWNjOWE5ODQ0MGUzCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIFNlcCAyMyAxMDowNTowMiAyMDA4IC0wNTAwCgogICAgRXhwb3NlIGNvbW1hbmQgdGFibGUgc2VhcmNoIGZvciBzdWItY29tbWFuZHMKCiAgICBTdWItY29tbWFuZCBjYW4gYmVuZWZpdCBmcm9tIHVzaW5nIHRoZSBzYW1lIHRhYmxlIGFuZCBzZWFyY2ggZnVuY3Rpb25zCiAgICB0aGF0IHRvcCBsZXZlbCBjb21tYW5kcyBoYXZlLiAgRXhwb3NlIHRoaXMgZnVuY3Rpb25hbGl0eSBieSByZWZhY3RvcmluZwogICAgZmluZF9jbWQoKSBhbmQgaW50cm9kdWNpbmcgZmluZF9jbWRfdGJsKCkgdGhhdCBzdWItY29tbWFuZCBwcm9jZXNzaW5nCiAgICBjYW4gY2FsbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGY3ZTUxYjI3NTA4NDQ2ZjhjYWUzOTI3OTc1ODE3MTM3OTc5YWQ1ZTgKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJV2VkIE9jdCAxNSAwOTo0MTozMyAyMDA4ICswMjAwCgogICAgbWdzdXZkLCBtZ2NvZ2U6IGFkZGVkIEJPT1RDT1VOVCBmZWF0dXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDhmNjRkYTdmODNiNTUzODg5YmMwODQwMGM5NzA0Nzk5ODM4MmU5ZDIKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJV2VkIE9jdCAxNSAwOTo0MTowMCAyMDA4ICswMjAwCgogICAgbWdjb2dlLCBtZ3N1dmQ6IGFkZGVkIHN1cHBvcnQgZm9yIHRoZSBJVk0gRUVwcm9tLgoKICAgIFRoZSBFRXByb20gY29udGFpbnMgc29tZSBNYW51ZmFjdHVyZXJpbmZvcm1hdGlvbiwKICAgIHdoaWNoIGFyZSByZWFkIGZyb20gdS1ib290IGF0IGJvb3QgdGltZSwgYW5kIHNhdmVkCiAgICBpbiBzYW1lIGh1c2ggc2hlbGwgdmFyaWFibGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDgxNDczZjY3ODEwYzRjOWI3ZWZhZWQ4ZGVlMjU4ZWQ2YmM0Yzc5ODMKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJV2VkIE9jdCAxNSAwOTo0MDoyOCAyMDA4ICswMjAwCgogICAgaHVzaDogYWRkIHNob3d2YXIgY29tbWFuZCBmb3IgaHVzaCBzaGVsbC4KCiAgICBUaGlzIG5ldyBjb21tYW5kIHNob3dzIHRoZSBsb2NhbCB2YXJpYWJsZXMgZGVmaW5lZCBpbgogICAgdGhlIGh1c2ggc2hlbGw6CgogICAgPT4gaGVscCBzaG93dmFyCiAgICBzaG93dmFyCgktIHByaW50IHZhbHVlcyBvZiBhbGwgaHVzaHNoZWxsIHZhcmlhYmxlcwogICAgc2hvd3ZhciBuYW1lIC4uLgoJLSBwcmludCB2YWx1ZSBvZiBodXNoc2hlbGwgdmFyaWFibGUgJ25hbWUnCgogICAgQWxzbyBtYWtlIHRoZSBzZXRfbG9jYWxfdmFyKCkgYW5kIHVuc2V0X2xvY2FsX3ZhciAoKQogICAgbm8gbG9uZ2VyIHN0YXRpYywgc28gaXQgaXMgcG9zc2libGUgdG8gZGVmaW5lIGxvY2FsCiAgICBodXNoIHNoZWxsIHZhcmlhYmxlcyBhdCBib290IHRpbWUuIElmIENPTkZJR19IVVNIX0lOSVRfVkFSCiAgICBpcyBkZWZpbmVkLCB1LWJvb3QgY2FsbHMgaHVzaF9pbml0X3ZhciAoKSwgd2hlcmUKICAgIGJvYXJkc3BlY2lmaWMgY29kZSBjYW4gZGVmaW5lIGxvY2FsIGh1c2ggc2hlbGwKICAgIHZhcmlhYmxlcyBhdCBib290dGltZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCA2N2IyM2EzMjI4NDhkODI4YTVlNDVjMDU2N2I3Mjc2MmJmZGU3YWJmCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMTUgMDk6Mzk6NDcgMjAwOCArMDIwMAoKICAgIEkyQzogYWRkaW5nIG5ldyAiaTJjIGJ1cyIgQ29tbWFuZCB0byB0aGUgSTJDIFN1YnN5c3RlbS4KCiAgICBXaXRoIHRoaXMgQ29tbWFuZCBpdCBpcyBwb3NzaWJsZSB0byBhZGQgbmV3IEkyQyBCdXNzZXMsCiAgICB3aGljaCBhcmUgYmVoaW5kIDEgLi4gbiBJMkMgTXV4ZXMuIERldGFpbHMgc2VlIFJFQURNRS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBjMjQ4NTM2NDRkZGQyZGQyZTQyNDZiNTg1NGE5M2U2MjU0YTE0MDkyCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMTUgMDk6Mzk6MDggMjAwOCArMDIwMAoKICAgIG1nY29nZSwgbWdzdXZkOiBhZGQgYm9hcmQgc3BlY2lmaWMgSTJDIGRlYmxvY2tpbmcgbWVjaGFuaXNtLgoKICAgIEFzIGRvY3VtZW50ZWQgaW4gZG9jL0kyQ19FZGdlX0NvbmRpdGlvbnMsIGFkZGluZyBhCiAgICBib2FyZCBzcGVjaWZpYyBkZWJsb2NraW5nIG1lY2hhbmlzbSB2aWEgQ0ZHX0kyQ19JTklUX0JPQVJECiAgICBmb3IgdGhlIG1nY29nZSBhbmQgbWdzdXZkIGJvYXJkLgoKICAgIFRoaXMgY29kZSB3YXMgb3JpZ2luYWxseSB3cml0dGVuIGJ5IEtleW1pbGUgaW4gYXNzb2NpYXRpb24KICAgIHdpdGggQW5hdGVjaCBhbmQgQXRtZWwgaW4gMTk5OC4gVGhlIENvZGUgdG9nZ2VscyB0aGUgU0NMCiAgICB1bnRpbCB0aGUgU0NBIGxpbmUgZ29lcyB0byBISUdIIChtYXguIDE2IHRpbWVzKS4KICAgIEFuZCBhZnRlciB0aGlzLCBhIHN0YXJ0IGNvbmRpdGlvbiBpcyBzZW50LgoKICAgIFRoaXMgaXMgYW5vdGhlciBhcHByb2FjaCB0byBkZWJsb2NrIHRoZSBJMkMgQnVzLiBUaGUKICAgIHNvZnQgSTJDIGRyaXZlciBhY3R1YWxseSBzZW5kcyA5IGNsb2NrcyB3aXRoIFNEQSBIaWdoLAogICAgYW5kIHRoZW4gYSBzdG9wIGF0IHRoZSBlbmQsIHRvIGRlYmxvY2sgdGhlIEkyQyBCdXMuCgogICAgTWF5YmUgd2Ugc2hvdWxkIHVzZSB0aGUgYXBwcm9hY2ggZnJvbSBLZXltaWxlIGFzCiAgICB0aGUgbmV3IHN0YW5kYXJkPwoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDRjYTEwN2VmZmViZmJhYmFjMTA1N2MzOTYzMjEwNWRhY2VmOTU5NTcKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJV2VkIE9jdCAxNSAwOTozODozOCAyMDA4ICswMjAwCgogICAgc29mdF9pMmM6IEFkZCBDRkdfSTJDX0lOSVRfQk9BUkQgb3B0aW9uCgogICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBvcHRpb24gZm9yIGEgYm9hcmRzcGVjaWZpYwogICAgSTJDIGRlYmxvY2tpbmcgbWVjaGFuaXNtIGZvciB0aGUgc29mdCBpMmMgZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IGU1ZTRlZGQ5ZjFmNzYyMTBhMDljMzRlZTgzNWY2Y2ZmNjBmZGJiZDEKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJV2VkIE9jdCAxNSAwOTozODowNyAyMDA4ICswMjAwCgogICAgbWdjb2dlLCBtZ3N1dmQ6IGFkZCBEVFQgKExNNzUpIHN1cHBvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgOGU0NDJkZjQzOGFiNjc3MDU3NTcxZTNhYzAxODQ2YmZmNzcxOWJjZQpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglXZWQgT2N0IDE1IDA5OjM3OjM0IDIwMDggKzAyMDAKCiAgICBsbTc1OiBNYWtlIHRoZSBMTTc1IE1VTFRJX0JVUyBjb21wYXRpYmxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDEyZjE2NzgxMjdjMWRmMmIyODc4YmE5M2M4ODk0OGJlZGMwNjA3NzUKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJV2VkIE9jdCAxNSAwOTozNzowNCAyMDA4ICswMjAwCgogICAgbG03NTogZml4IENvZGluZ3N0eWxlIGlzc3Vlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBmMjIwMjQ1MGM3NWJhNjkzNGIzNTYwMjQxMDE1MDBkZGNkZTZlMmE2CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMTUgMDk6MzY6MzMgMjAwOCArMDIwMAoKICAgIG1nY29nZSwgbWdzdXZkOiBhZGRlZCBFRXByb20gc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCA5NjYxYmY5ZDEyMGY3NjAyMzhiMmEwNzNiODRmMmJhZjA1MDEwMDU3CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMTUgMDk6MzY6MDMgMjAwOCArMDIwMAoKICAgIG1nY29nZSwgbWdzdXZkOiBhZGQgSTJDIHN1cHBvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgOThhZWQzNzk1ODZhMTU1MjkyZWZiZjMyMDkzNTY4MzY1ODRiNjAxYwpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglXZWQgT2N0IDE1IDA5OjM1OjI2IDIwMDggKzAyMDAKCiAgICBzb2Z0X2kyYzogcHJldmVudCBjb21waWxlciB3YXJuaW5ncyBpZiBkcml2ZXIgZG9lcyBub3QgdXNlIENQVSBQaW5zLgoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIGZvbGxvd2luZyB3YXJuaW5ncywgd2hlbiB1c2luZwogICAgdGhlIHNvZnRfaTJjIGRyaXZlciB1c2luZyBubyBDUFUgcGlucyBvbiBNUEM4Mnh4IG9yIE1QQzh4eAogICAgc3lzdGVtczoKCiAgICBzb2Z0X2kyYy5jOiBJbiBmdW5jdGlvbiAnc2VuZF9yZXNldCc6CiAgICBzb2Z0X2kyYy5jOjkzOiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ2ltbXInCiAgICBzb2Z0X2kyYy5jOiBJbiBmdW5jdGlvbiAnc2VuZF9zdGFydCc6CiAgICBzb2Z0X2kyYy5jOjEyNDogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdpbW1yJwogICAgc29mdF9pMmMuYzogSW4gZnVuY3Rpb24gJ3NlbmRfc3RvcCc6CiAgICBzb2Z0X2kyYy5jOjE0Njogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdpbW1yJwogICAgc29mdF9pMmMuYzogSW4gZnVuY3Rpb24gJ3NlbmRfYWNrJzoKICAgIHNvZnRfaTJjLmM6MTcxOiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ2ltbXInCiAgICBzb2Z0X2kyYy5jOiBJbiBmdW5jdGlvbiAnd3JpdGVfYnl0ZSc6CiAgICBzb2Z0X2kyYy5jOjE5Njogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdpbW1yJwogICAgc29mdF9pMmMuYzogSW4gZnVuY3Rpb24gJ3JlYWRfYnl0ZSc6CiAgICBzb2Z0X2kyYy5jOjI0NDogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdpbW1yJwoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDc5OWI3ODRhYTAwY2IwM2EzNTI4NDdhYjlmOWFjZGRlNzliNzJkMjEKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJV2VkIE9jdCAxNSAwOTozNDo0NSAyMDA4ICswMjAwCgogICAgaTJjOiBhZGQgQ09ORklHX0kyQ19NVUxUSV9CVVMgZm9yIHNvZnRfaTJjIGFuZCBtcGM4MjYwIGkyYyBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgMDgwOWVhMmY0MzQwYWIyMDQ3NDAwYzdkM2QzMDQ3Zjk3OTg3ZDBmZApBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglXZWQgT2N0IDE1IDA5OjM0OjA1IDIwMDggKzAyMDAKCiAgICBtZ2NvZ2U6IGZpeCBDb2RpbmcgU3R5bGUgaXNzdWVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IGU0M2EyN2M0OTcxMjIwM2ZlODg0OGExNzcxNDMzMDYyM2VkZmIyZWIKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJV2VkIE9jdCAxNSAwOTozMzozMCAyMDA4ICswMjAwCgogICAgSTJDOiBhZGQgbmV3IGNvbW1hbmQgaTJjIHJlc2V0LgoKICAgIElmIEkyQyBCdXMgaXMgYmxvY2tlZCAoc2VlIGRvYy9JMkNfRWRnZV9Db25kaXRpb25zKSwKICAgIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBnZXQgb3V0IG9mIHRoaXMsIHVudGlsIHRoZQogICAgY29tcGxldGUgSGFyZHdhcmUgZ2V0cyBhIHJlc2V0LiBUaGlzIG5ldyBjb21tYW5kbwogICAgY2FsbHMgYWdhaW4gaTJjX2luaXQgKGFuZCB0aGF0IGNhbGxzIGkyY19pbml0X2JvYXJkCiAgICBpZiBkZWZpbmVkKSwgd2hpY2ggd2lsbCBkZWJsb2NrIHRoZSBJMkMgQnVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA4NmU5Y2RmOGM0MTVjMWE5NzI1ZTlkYWU1MjM3YmExZTdiZDlmNjg2CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMTUgMDk6MzI6MjUgMjAwOCArMDIwMAoKICAgIG1nc3V2ZCwgbWdjb2dlOiBtb3ZlIHRoaXMgMiBib2FyZHMgaW4gb25lIGRpci4KCiAgICBUaGVyZSBhcmUgc29tZSBtb3JlIGV4dGVuc2lvbnMsIHdoaWNoIGFyZSBmb3IgYm90aCBib2FyZHMKICAgIGFuZCBzb21lIG1vcmUgYm9hcmRzIGZyb20gdGhpcyBtYW51ZmFjdHVyZXIgd2lsbCBmb2xsb3cgc29vbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMWM2ZmU2ZWFjNzVkNjk1ZmRlNjc3YWY4MzMwYzBkYmU3NWZiNmEyYgpBdXRob3I6IERpcmsgRWliYWNoIDxlaWJhY2hAZ2RzeXMuZGU+CkRhdGU6CVdlZCBPY3QgOCAxMzo0NDoyNyAyMDA4ICswMjAwCgogICAgaHdtb246IEFkZCBMTTYzIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIE5hdGlvbmFsIExNNjMgdGVtcGVyYXR1cmUKICAgIHNlbnNvciB3aXRoIGludGVncmF0ZWQgZmFuIGNvbnRyb2wuIEl0J3MgdXNlZCBvbiB0aGUgR0RTeXMKICAgIE5lbyBib2FyZCAoNDA1RVApIHdoaWNoIHdpbGwgYmUgc3VibWl0dGVkIGxhdGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgRWliYWNoIDxlaWJhY2hAZ2RzeXMuZGU+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDdiYTg5MGJmMmYyYjkyODMxNDIwMjQzYzA1ODk1MWFhODMxMTE5ZmQKQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxrbXBhcmtAaW5mcmFkZWFkLm9yZz4KRGF0ZToJV2VkIE9jdCA4IDExOjAxOjE3IDIwMDggKzA5MDAKCiAgICBBZGQgUmVkIEJsYWNrIFRyZWUgc3VwcG9ydAoKICAgIE5vdyBpdCdzIHVzZWQgYXQgVUJJIG1vZHVsZS4gT2YgY291cnNlIG90aGVyIG1vZHVsZXMgY2FuIHVzZSBpdC4KICAgIElmIHlvdSB3YW50IHRvIHVzZSBpdCwgcGxlYXNlIGRlZmluZSBDT05GSUdfUkJUUkVFCgogICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KCmNvbW1pdCBmYmQ4NWFkNjVkZDljOThmMzZlZDNmYjEyZmU0MWYzODFiN2Q0Nzk0CkF1dGhvcjogcmljaGFyZHJldGFudWJ1biA8cmljaGFyZHJldGFudWJ1bkBydWdnZWRjb20uY29tPgpEYXRlOglNb24gT2N0IDYgMTY6MTA6NTMgMjAwOCAtMDQwMAoKICAgIENPTkZJR19FRklfUEFSVElUSU9OOiBBZGRlZCBzdXBwb3J0IGZvciBFRkkgcGFydGl0aW9uIGluIGNtZF9leHQyZnMuYwoKICAgIEFkZGVkIHN1cHBvcnQgZm9yIENPTkZJR19FRklfUEFSVElUSU9OIHRvIGV4dDIgY29tbWFuZHMuCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZ2VkQ29tLmNvbT4KCmNvbW1pdCAwN2YzZDc4OWI5YmViN2NlMzI3OGM5NzRmNGQ1YzhmNTFiNmFiNTY3CkF1dGhvcjogcmljaGFyZHJldGFudWJ1biA8cmljaGFyZHJldGFudWJ1bkBydWdnZWRjb20uY29tPgpEYXRlOglGcmkgU2VwIDI2IDExOjEzOjIyIDIwMDggLTA0MDAKCiAgICBBZGQgc3VwcG9ydCBmb3IgQ09ORklHX0VGSV9QQVJUSVRJT04gKEdVSUQgUGFydGl0aW9uIFRhYmxlKQoKICAgIFRoZSBHVUlEIChHbG9iYWxseSBVbmlxdWUgSWRlbnRpZmllcikgUGFydGl0aW9uIFRhYmxlIChHUFQpIGlzIGEgcGFydAogICAgb2YgRUZJLiBTZWUgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HVUlEX1BhcnRpdGlvbl9UYWJsZQoKICAgIEJhc2VkIG9uIGxpbnV4L2ZzL3BhcnRpdGlvbnMvZWZpLltjaF0KCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZ2VkQ29tLmNvbT4KCmNvbW1pdCBmYmM4N2RjMDU0NmRmZjcwOWIzOGYzNThlMmM1ZDVlMzljNGNhMzc0CkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIE9jdCAxIDE1OjI2OjMyIDIwMDggKzAyMDAKCiAgICBGSVQ6IG91dHB1dCBpbWFnZSBsb2FkIGFkZHJlc3MgZm9yIHR5cGUgJ2Zpcm13YXJlJywgZml4IG1lc3NhZ2Ugd2hpbGUgdGhlcmUKCiAgICBOb3cgdGhhdCB0aGUgYXV0by11cGRhdGUgZmVhdHVyZSB1c2VzIHRoZSAnZmlybXdhcmUnIHR5cGUgZm9yIHVwZGF0ZXMsIGl0IGlzCiAgICB1c2VmdWwgdG8gaW5zcGVjdCB0aGUgbG9hZCBhZGRyZXNzIG9mIHN1Y2ggaW1hZ2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgNGJhZTkwOTA0YjY5Y2UzZGViOWY3YzMzNGVmMTJlZDc0ZTE4YTI3NQpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBPY3QgMSAxNToyNjozMSAyMDA4ICswMjAwCgogICAgQXV0b21hdGljIHNvZnR3YXJlIHVwZGF0ZSBmcm9tIFRGVFAgc2VydmVyCgogICAgVGhlIGF1dG8tdXBkYXRlIGZlYXR1cmUgYWxsb3dzIHRvIGF1dG9tYXRpY2FsbHkgZG93bmxvYWQgc29mdHdhcmUgdXBkYXRlcwogICAgZnJvbSBhIFRGVFAgc2VydmVyIGFuZCBzdG9yZSB0aGVtIGluIEZsYXNoIG1lbW9yeSBkdXJpbmcgYm9vdC4gVXBkYXRlcyBhcmUKICAgIGNvbnRhaW5lZCBpbiBhIEZJVCBmaWxlIGFuZCBwcm90ZWN0ZWQgd2l0aCBTSEEtMSBjaGVja3N1bS4KCiAgICBNb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uIGNhbiBiZSBmb3VuZCBpbiBkb2MvUkVBRE1FLnVwZGF0ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBDenViYWsgPHJjekBzZW1paGFsZi5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDNmMGNmNTFkYWJhY2MyNzI0NzMxYzUwNzlhNjBlYTk4OTEwM2JiOGYKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgT2N0IDEgMTU6MjY6MjcgMjAwOCArMDIwMAoKICAgIGZsYXNoOiBmYWN0b3Igb3V0IGFkanVzdGluZyBvZiBGbGFzaCBhZGRyZXNzIHRvIHRoZSBlbmQgb2Ygc2VjdG9yCgogICAgVGhlIHVwY29taW5nIGF1dG9tYXRpYyB1cGRhdGUgZmVhdHVyZSBuZWVkcyB0aGUgYWJpbGl0eSB0byBhZGp1c3QgYW4KICAgIGFkZHJlc3Mgd2l0aGluIEZsYXNoIHRvIHRoZSBlbmQgb2YgaXRzIHJlc3BlY3RpdmUgc2VjdG9yLiBGYWN0b3Igb3V0CiAgICB0aGlzIGZ1bmN0aW9uYWxpdHkgdG8gYSBuZXcgZnVuY3Rpb24gZmxhc2hfc2VjdF9yb3VuZGIoKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBDenViYWsgPHJjekBzZW1paGFsZi5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGU4M2NjMDYzNzVhYzJiZWEwODMwYzZlZDBmOWQ4ZmRjM2MxYjI3ZDUKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgT2N0IDEgMTU6MjY6MjkgMjAwOCArMDIwMAoKICAgIG5ldDogTWFrZSBURlRQIHNlcnZlciB0aW1lb3V0IGNvbmZpZ3VyYWJsZQoKICAgIFRoZXJlIGFyZSB0d28gYXNwZWN0cyBvZiBhIFRGVFAgdHJhbnNmZXIgaW52b2x2aW5nIHRpbWVvdXRzOgogICAgMS4gdGltZW91dCB3YWl0aW5nIGZvciBpbml0aWFsIHNlcnZlciByZXBseSBhZnRlciBzZW5kaW5nIFJSUQogICAgMi4gdGltZW91dHMgd2hpbGUgdHJhbnNmZXJyaW5nIGFjdHVhbCBkYXRhIGZyb20gdGhlIHNlcnZlcgoKICAgIFNpbmNlIHRoZSB1cGNvbWluZyBhdXRvLXVwZGF0ZSBmZWF0dXJlIGF0dGVtcHRzIGEgVEZUUCBkb3dubG9hZCBkdXJpbmcgZWFjaAogICAgYm9vdCwgaXQgaXMgdW5kZXNpcmFibGUgdG8gaGF2ZSBhIGxvbmcgZGVsYXkgd2hlbiB0aGUgVEZUUCBzZXJ2ZXIgaXMgbm90CiAgICBhdmFpbGFibGUuIFRodXMsIHRoaXMgY29tbWl0IG1ha2VzIHRoZSBzZXJ2ZXIgdGltZW91dCAoMS4pIGNvbmZpZ3VyYWJsZSBieSB0d28KICAgIGdsb2JhbCB2YXJpYWJsZXM6CgogICAgVGZ0cFJSUVRpbWVvdXRNU2VjcwogICAgVGZ0cFJSUVRpbWVvdXRDb3VudE1heAoKICAgIFRmdHBSUlFUaW1lb3V0TVNlY3Mgb3ZlcnJpZGVzIGRlZmF1bHQgdGltZW91dCB3aGVuIHRyeWluZyB0byBjb25uZWN0IHRvIGEgVEZUUAogICAgc2VydmVyLCBUZnRwUlJRVGltZW91dENvdW50TWF4IG92ZXJyaWRlcyBkZWZhdWx0IG51bWJlciBvZiBjb25uZWN0aW9uIHJldHJpZXMuCiAgICBUaGUgdG90YWwgZGVsYXkgd2hlbiB0cnlpbmcgdG8gZG93bmxvYWQgYSBmaWxlIGZyb20gYSBub24tZXhpc3RpbmcgVEZUUCBzZXJ2ZXIKICAgIGlzIFRmdHBSUlFUaW1lb3V0TVNlY3MgeCBUZnRwUlJRVGltZW91dENvdW50TWF4IG1pbGxpc2Vjb25kcy4KCiAgICBUaW1lb3V0cyBkdXJpbmcgZmlsZSB0cmFuc2ZlcnMgKDIuKSBhcmUgdW5hZmZlY3RlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBDenViYWsgPHJjekBzZW1paGFsZi5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA0OWYzYmRiYmE4MDcxZjU2ZDk1MGE5NDk4YjZjZGI5OThiMzUzNDBhCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIE9jdCAxIDE1OjI2OjI4IDIwMDggKzAyMDAKCiAgICBuZXQ6IGV4cHJlc3MgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIE5ldFNldFRpbWVvdXQoKSBpbiBtaWxsaXNlY29uZHMKCiAgICBFbmZvcmNlIG1pbGxpc2Vjb25kIHNlbWFudGljcyBvZiB0aGUgZmlyc3QgYXJndW1lbnQgdG8gTmV0U2V0VGltZW91dCgpIC0tCiAgICB0aGUgY2hhbmdlIGlzIHRyYW5zcGFyZW50IGZvciB3ZWxsLWJlaGF2aW5nIGJvYXJkcyAoQ0ZHX0haID09IDEwMDAgYW5kCiAgICBnZXRfdGltZXIoKSBjb3VudGlpbmcgaW4gbWlsbGlzZWNvbmRzKS4KCiAgICBSYXRpb25hbGUgZm9yIHRoaXMgcGF0Y2ggaXMgdG8gZW5hYmxlIG1pbGxpc2Vjb25kIGdyYW51bGFyaXR5IGZvcgogICAgbmV0d29yay1yZWxhdGVkIHRpbWVvdXRzLCB3aGljaCBpcyBuZWVkZWQgZm9yIHRoZSB1cGNvbWluZyBhdXRvbWF0aWMKICAgIHNvZnR3YXJlIHVwZGF0ZSBmZWF0dXJlLgoKICAgIFN1bW1hcnkgb2YgY2hhbmdlczoKICAgIC0gZG8gbm90IHNjYWxlIHRoZSBmaXJzdCBhcmd1bWVudCB0byBOZXRTZXRUaW1lb3V0KCkgYnkgQ0ZHX0haCiAgICAtIGNoYW5nZSB0aW1lb3V0IHZhbHVlcyB1c2VkIGluIHRoZSBuZXR3b3JraW5nIGNvZGUgdG8gbWlsbGlzZWNvbmRzCgogICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgQ3p1YmFrIDxyY3pAc2VtaWhhbGYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYzY4YTA1ZmVlYjg4ZGU5ZmNmMTU4ZTY3ZmY2NDIzYzRjYzk4OGY4OApBdXRob3I6IHJpY2hhcmRyZXRhbnVidW4gPHJpY2hhcmRyZXRhbnVidW5AcnVnZ2VkY29tLmNvbT4KRGF0ZToJTW9uIFNlcCAyOSAxODoyODoyMyAyMDA4IC0wNDAwCgogICAgQWRkcyB0d28gbW9yZSBldGhlcm5ldCBpbnRlcmZhY2UgdG8gODN4eAoKICAgIEFkZGVkIGFzIGEgY29udmVuaWVuY2UgZm9yIG90aGVyIHBsYXRmb3JtcyB0aGF0IHVzZXMgTVBDODM2MCAoaGFzIDggVUNDKS4KICAgIFNpeCBldGggaW50ZXJmYWNlIGlzIGNob3NlbiBiZWNhdXNlIHRoZSBwbGF0Zm9ybSBJIGFtIHVzaW5nIGNvbWJpbmVzCiAgICBVQ0MxJjIgYW5kIFVDQzMmNCBhcyAxMDAwIEV0aCBhbmQgdGhlIG90aGVyIGZvdXIgVUNDcyBhcyAxMC8xMDAgRXRoLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dnZWRDb20uY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA0MTQxMGVlZTQ3MmIwZjQyZTAzYTc3Zjk2MWJiYzU1ZWY1OGYzYzAxCkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIFNlcCAyNCAxMTo0MjoxMiAyMDA4IC0wNTAwCgogICAgQ2hhbmdlIFVFQyBQSFkgaW50ZXJmYWNlIHRvIFJHTUlJIG9uIE1QQzg1NjhNRFMKCiAgICBDaGFuZ2UgVUVDIHBoeSBpbnRlcmZhY2UgZnJvbSBHTUlJIHRvIFJHTUlJIG9uIE1QQzg1NjhNRFMgYm9hcmQKCiAgICBCZWNhdXNlIG9uIE1QQzg1NjhNRFMsIEdNSUkgaW50ZXJmYWNlIGlzIG9ubHkgcmVjb21tZW5kZWQgZm9yIDEwMDBNYnBzIHNwZWVkLAogICAgYnV0IFJHTUlJIGludGVyZmFjZSBjYW4gd29yayBhdCAxMC8xMDAvMTAwME1icHMsIGFuZCBSR01JSSBpbnRlcmZhY2Ugd29ya3MgbW9yZSBzdGFibGUuCgogICAgTm93IGJvdGggVUVDMSBhbmQgVUVDMiBjYW4gd29yayBwcm9wZXJseSB1bmRlciB1LWJvb3QuCgogICAgSXQgaXMgYWxzbyBpbiBjb25zaXN0ZW50IHdpdGggdGhlIGtlcm5lbCBzZXR0aW5nIGZvciA4NTY4IFVFQyBwaHkgaW50ZXJmYWNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGI1OWIxNmNhMjRiYzdlNzdlYzExMzAyMWE2ZDc3YjliMzJmY2YxOTIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgT2N0IDE4IDIxOjMwOjMxIDIwMDggKzAyMDAKCiAgICBQcmVwYXJlIHYyMDA4LjEwIHJlbGVhc2U6IHVwZGF0ZSBDSEFOR0VMT0cgJiBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZjdhMzVhNjBjZjQ1NDkxODcxYTVjMjhlOWFkMjRkYjAwNTQ4Nzg1NwpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglGcmkgT2N0IDE3IDE4OjI0OjA2IDIwMDggKzAyMDAKCiAgICBtZ2NvZ2U6IGFkZCByZWR1bmRhbnQgZW52aXJvbm1lbnQgc2VjdG9yCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGMyNTM3ZWU4NTk1NGFmOWQwMzZiMThiNjQ0ZjNlMThkODM3YmY0YTUKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJRnJpIE9jdCAxNyAxODoyMzoyNyAyMDA4ICswMjAwCgogICAgbWdzdXZkOiB1cGRhdGUgc2l6ZSBvZiBlbnZpcm9ubWVudAoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IGZhN2IxYzA3ZTkzNzFhZWE4Zjg3ZWU2ZDNjMmVhNTU2NGJkOGNjOGQKQXV0aG9yOiBMZXBjaGEgU3VjaGl0IDxTdWNoaXQuTGVwY2hhQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBPY3QgMTYgMTM6Mzg6MDAgMjAwOCAtMDUwMAoKICAgIDgzeHggTkFORCBib290OiB3YWl0IGZvciBMVEVTUltDQ10KCiAgICBBdCBsZWFzdCBzb21lIHJldmlzaW9ucyBvZiB0aGUgODMxMywgYW5kIHBvc3NpYmx5IG90aGVyIGNoaXBzLCBkbyBub3QKICAgIHdhaXQgZm9yIGFsbCBwYWdlcyBvZiB0aGUgaW5pdGlhbCA0SyBOQU5EIHJlZ2lvbiB0byBiZSBsb2FkZWQgYmVmb3JlCiAgICBiZWdpbm5pbmcgZXhlY3V0aW9uOyB0aHVzLCB3ZSB3YWl0IGZvciBpdCBiZWZvcmUgYnJhbmNoaW5nIG91dCBvZiB0aGUKICAgIGZpcnN0IE5BTkQgcGFnZS4KCiAgICBUaGlzIGZpeGVzIHdhcm0gcmVzZXQgcHJvYmxlbXMgd2hlbiBib290aW5nIGZyb20gTkFORCBvbiA4MzEzZXJkYi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGJmMjllMGVhMGFmMDNkNTkzYzY0NjE0MTM2YWNjNzIzYTdhMDIyYTIKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CkRhdGU6CUZyaSBPY3QgMTcgMTI6NTQ6MTggMjAwOCArMDIwMAoKICAgIHBwYzR4eDogUFBDNDR4IE1RIGluaXRpYWxpemF0aW9uCgogICAgU2V0IHRoZSBNUSBSZWFkIFBhc3NpbmcgJiBNQ0lGIEN5Y2xlIGxpbWl0cyB0byB0aGUgcmVjb21tZW5kZWQgYnkgQU1DQwogICAgdmFsdWVzLiBUaGlzIGZpeGVzIHRoZSBvY2Nhc2lvbmFsIDQ0MFNQZSBoYXJkIGxvY2tpbmcgaXNzdWVzIHdoZW4gdGhlIDQ0MFNQZSdzCiAgICBkZWRpY2F0ZWQgRE1BIGVuZ2luZXMgYXJlIHVzZWQgKGUuZy4gYnkgdGhlIGgvdyBhY2NlbGVyYXRlZCBSQUlEIGRyaXZlcikuCgogICAgUHJldmlvdXNseSB0aGUgYXBwcm9wcmlhdGUgaW5pdGlhbGl6YXRpb24gaGFkIGJlZW4gbWFkZSBpbiBMaW51eCwgYnkgdGhlCiAgICBwcGM0NDBzcGUgQURNQSBkcml2ZXIsIHdoaWNoIGlzIHdyb25nIGJlY2F1c2UgbW9kaWZ5aW5nIHRoZSBNUSBjb25maWd1cmF0aW9uCiAgICByZWdpc3RlcnMgYWZ0ZXIgbm9ybWFsIG9wZXJhdGlvbiBoYXMgYmVndW4gaXMgbm90IHN1cHBvcnRlZCBhbmQgY291bGQKICAgIGhhdmUgdW5wcmVkaWN0YWJsZSByZXN1bHRzLgoKICAgIENvbW1lbnQgZnJvbSBTdGVmYW46IFRoaXMgcGF0Y2ggZG9lc24ndCBjaGFuZ2UgdGhlIHJlc3VsdGluZyB2YWx1ZSBvZiB0aGUKICAgIE1RIHJlZ2lzdGVycy4gSXQgZXhwbGljaXRseSBzZXRzL2NsZWFycyBhbGwgYml0cyB0byB0aGUgZGVzaXJlZCBzdGF0ZSB3aGljaAogICAgYmV0dGVyIGRvY3VtZW50cyB0aGUgcmVzdWx0aW5nIHJlZ2lzdGVyIHZhbHVlIGluc3RlYWQgb2YgcmVseWluZyBvbiBwcmUtc2V0CiAgICBkZWZhdWx0IHZhbHVlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZWMwODFjMmMxOTAxNDhiMzc0ZTg2YTc5NWZiNmIxYzQ5Y2FlYjU0OQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIE9jdCAxNyAxMjo1MTo0NiAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBQUEM0NHggTVEgaW5pdGlhbGl6YXRpb24KCiAgICBTZXQgdGhlIE1RIFJlYWQgUGFzc2luZyAmIE1DSUYgQ3ljbGUgbGltaXRzIHRvIHRoZSByZWNvbW1lbmRlZCBieSBBTUNDCiAgICB2YWx1ZXMuIFRoaXMgZml4ZXMgdGhlIG9jY2FzaW9uYWwgNDQwU1BlIGhhcmQgbG9ja2luZyBpc3N1ZXMgd2hlbiB0aGUgNDQwU1BlJ3MKICAgIGRlZGljYXRlZCBETUEgZW5naW5lcyBhcmUgdXNlZCAoZS5nLiBieSB0aGUgaC93IGFjY2VsZXJhdGVkIFJBSUQgZHJpdmVyKS4KCiAgICBQcmV2aW91c2x5IHRoZSBhcHByb3ByaWF0ZSBpbml0aWFsaXphdGlvbiBoYWQgYmVlbiBtYWRlIGluIExpbnV4LCBieSB0aGUKICAgIHBwYzQ0MHNwZSBBRE1BIGRyaXZlciwgd2hpY2ggaXMgd3JvbmcgYmVjYXVzZSBtb2RpZnlpbmcgdGhlIE1RIGNvbmZpZ3VyYXRpb24KICAgIHJlZ2lzdGVycyBhZnRlciBub3JtYWwgb3BlcmF0aW9uIGhhcyBiZWd1biBpcyBub3Qgc3VwcG9ydGVkIGFuZCBjb3VsZAogICAgaGF2ZSB1bnByZWRpY3RhYmxlIHJlc3VsdHMuCgogICAgQ29tbWVudCBmcm9tIFN0ZWZhbjogVGhpcyBwYXRjaCBkb2Vzbid0IGNoYW5nZSB0aGUgcmVzdWx0aW5nIHZhbHVlIG9mIHRoZQogICAgTVEgcmVnaXN0ZXJzLiBJdCBleHBsaWNpdGx5IHNldHMvY2xlYXJzIGFsbCBiaXRzIHRvIHRoZSBkZXNpcmVkIHN0YXRlIHdoaWNoCiAgICBiZXR0ZXIgZG9jdW1lbnRzIHRoZSByZXN1bHRpbmcgcmVnaXN0ZXIgdmFsdWUgaW5zdGVhZCBvZiByZWx5aW5nIG9uIHByZS1zZXQKICAgIGRlZmF1bHQgdmFsdWVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmN2QxOTBiMWMwYjNhYjdmYzUzMDc0YWQyODYyZjdkZTk5ZGUzN2ZmCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IE9jdCAxNiAyMTo1ODo1MCAyMDA4IC0wNTAwCgogICAgODV4eDogVXNpbmcgcHJvcGVyIEkyQyBzb3VyY2UgY2xvY2sgZGl2aWRlciBmb3IgTVBDODU0NAoKICAgIFRoZSBNUEM4NTQ0IFJNIGluY29ycmVjdCBzaG93cyB0aGUgU0VDX0NGRyBiaXQgaW4gUE9SREVWU1IyIGFzIGJlaW5nCiAgICBiaXQgMjYsIGluc3RlYWQgaXQgc2hvdWxkIGJlIGJpdCAyOC4gIFRoaXMgY2F1c2VkIGluIGluY29ycmVjdAogICAgaW50ZXJwcmV0YXRpb24gb2YgdGhlIGkyY19jbGsgd2hpY2ggaXMgdGhlIHNhbWUgYXMgdGhlIFNFQyBjbGsgb24KICAgIE1QQzg1NDQuICBUaGUgU0VDIGNsayBpcyBjb250cm9sbGVkIGJ5IGNmZ19zZWNfZnJlcSB0aGF0IGlzIHJlcG9ydGVkCiAgICBpbiBQT1JERVZTUjIuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA0MjY1M2I4MjZhZGIzMTlhMWRmMDZlMjRlZjI2MDk2YjJhNWQ5ZDJhCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IE9jdCAxNiAyMTo1ODo0OSAyMDA4IC0wNTAwCgogICAgUmV2ZXJ0ICI4NXh4OiBVc2luZyBwcm9wZXIgSTJDIHNvdXJjZSBjbG9jayBkaXZpZGVyIGZvciBNUEM4NTQ0IgoKICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgZGZmZDI0NDZmYjA0MWYzOGVmMDM0YjBmY2Y0MWU1MWU1ZTQ4OTE1OS4KCiAgICBUaGUgZml4IGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCBpcyBub3QgY29ycmVjdC4gIFRoZSBwcm9ibGVtIGlzCiAgICB0aGF0IHRoZSBkb2N1bWVudGF0aW9uIGlzIG5vdCBjb3JyZWN0IGZvciB0aGUgTVBDODU0NCB3aXRoIHJlZ2FyZHMKICAgIHRvIHdoaWNoIGJpdCBpbiBQT1JERVZTUjIgaXMgZm9yIHRoZSBTRUNfQ0ZHLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMjE3OWM0NzY2YmZmZWVjZTk4ZTVlOTIwNDA2MjlhOTZjOTdlMjMwYwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBPY3QgMTUgMTA6MTk6NDEgMjAwOCAtMDUwMAoKICAgIDg1eHg6IEZpeCBjb21waWxlIHdhcm5pbmcKCiAgICBtcGM4NTM2ZHMuYzogSW4gZnVuY3Rpb24gJ2lzX3NhdGFfc3VwcG9ydGVkJzoKICAgIG1wYzg1MzZkcy5jOjYxNDogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdkZXZkaXNyJwoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgOTAyOWI2OGYzZjgxYjMwMTMwNDRmMTY3ZWEwMjVlODM2ZTZjOGMwZQpBdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBPY3QgMTUgMTA6NDA6MjQgMjAwOCArMDgwMAoKICAgIEZpeCB0aGUgZnVuY3Rpb24gY29uZmxpY3QgaW4geDg2ZW11IHdoZW4gREVCVUcgaXMgb24KCiAgICBUaGUgZnVuY3Rpb24gcGFyc2VfbGluZSgpIGluIGNvbW1vbi9tYWluLmMgd2FzIGV4cG9zZWQgZ2xvYmFsbHkgYnkgY29tbWl0CiAgICA2NjM2YjYyYTZlZmM3ZjE0ZTZlNzg4Nzg4NjMxYWU3YTdmY2E0NTM3LCBSZXN1bHQgaW4gY29uZmxpY3Qgd2l0aCB0aGUgc2FtZQogICAgbmFtZSBmdW5jaXRvbiBpbiBkcml2ZXJzL2Jpb3NfZW11bGF0b3IveDg2ZW11L2RlYnVnLmMgd2hlbiBkZWZpbmUgdGhlIERFQlVHLgogICAgVGhpcyBwYXRjaCBmaXggdGhpcyBieSByZW5hbWluZyB0aGUgZnVuY3Rpb24gaW4gdGhlIGRlYnVnLmMgZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGI0ZGJhY2Y2OWE2NjlhMTc0ODcwNTQ1NTJmYzI3NjExNDlkZDY3NjcKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgT2N0IDE1IDE1OjUwOjQ1IDIwMDggKzAyMDAKCiAgICBDb2RpbmcgU3R5bGUgY2xlYW51cCwgdXBkYXRlIENIQU5HRUxPRywgcHJlcGFyZSAyMDA4LjEwLXJjMwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMzc0YjkwMzgyOTNkMDFkODc0NGE0NmFmOWI3ODU0YTZmZDk5YjIyOApBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglXZWQgT2N0IDE1IDA5OjUxOjE5IDIwMDggKzAyMDAKCiAgICBGaXggY29tcGlsZXIgd2FybmluZyBpbiBsaWJfcHBjL2JvYXJkLmMKCiAgICBGaXggY29tcGlsZXIgd2FybmluZyBpbnRyb2R1Y2VkIGJ5IGNvbW1pdCAwZjhjYmMxOAoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA5NzI0NTU1NzU1YTZmMTA2NjYzNjQ4MWI0MWY3MDk0ZTBjZTkzYTY5CkF1dGhvcjogU2VsdmFtdXRodWt1bWFyIDxzZWx2YS5tdXRodWt1bWFyQGUtY29uaW5mb3RlY2guY29tPgpEYXRlOglUaHUgT2N0IDkgMTA6Mjk6MTQgMjAwOCArMDUzMAoKICAgIG1wYzgzeHg6IHdhaXQgdGlsbCBVUE0gY29tcGxldGVzIHRoZSB3cml0ZSB0byBhcnJheQoKICAgIFJlZmVyZW5jZSBtYW51YWwgc3RhdGVzIHRoYXQgTXhNUltNQURdIGluY3JlbWVudCBpcyB0aGUgaW5kaWNhdGlvbgogICAgb2Ygd3JpdGUgdG8gVVBNIGFycmF5IGlzIGNvbXBsZXRlLiBIb25vdXIgdGhhdC4gQWxzbywgbWFrZSB0aGUgZHVtbXkKICAgIHdyaXRlIGV4cGxpY2l0LgoKICAgIGFsc28gZml4IHRoZSBjb21tZW50LgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlbHZhbXV0aHVrdW1hciA8c2VsdmEubXV0aHVrdW1hckBlLWNvbmluZm90ZWNoLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMDNlMmRiYjE4ZTg1OGUyZjdhNmFhYTQzN2YyOTBmMzY5MGQwMmQ1MQpBdXRob3I6IFNlbHZhbXV0aHVrdW1hciA8c2VsdmEubXV0aHVrdW1hckBlLWNvbmluZm90ZWNoLmNvbT4KRGF0ZToJV2VkIE9jdCA4IDE4OjEyOjIwIDIwMDggLTA1MDAKCiAgICBSZW1vdmUgdW53YW50ZWQgJzsnIGF0IGVuZCBvZiBkZWZpbmUuCgogICAgQ3VycmVudGx5IHRoaXMgaXMgbm90IGNyZWF0aW5nIGFueSBwcm9ibGVtLiBCdXQgaXQgd2lsbCByZXN1bHQKICAgIGluIGNvbXBpbGF0aW9uIGVycm9yIHdoZW4gdXNlZCBhcyBiZWxvdy4KCiAgICBwcmludGYoIkNGR19TRFJBTV9DRkcyIC0gJTA4eFxuIiwgQ0ZHX1NEUkFNX0NGRzIpOwoKICAgIFNpZ25lZC1vZmYtYnk6IFNlbHZhbXV0aHVrdW1hciA8c2VsdmEubXV0aHVrdW1hckBlLWNvbmluZm90ZWNoLmNvbT4KCiAgICBjb250aW51YXRpb24gb2YgdGhlIHRoZW1lIGJhc2VkIG9uIGdpdCBncmVwICJeI2RlZmluZSBDRkdfLio7JCIgaW5jbHVkZS8KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGIyOTM0YTU2NjUwZTlhNmM1NDQzMmY5Y2U2ZGMzNjc1Nzk2NzM4NWUKQXV0aG9yOiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KRGF0ZToJTW9uIE9jdCA2IDEwOjUzOjU5IDIwMDggLTA0MDAKCiAgICBBUk0gRGFWaW5jaTogQWRkIG1haW50YWluZXIgaW5mb3JtYXRpb24gZm9yIFNGRlNEUiBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KCmNvbW1pdCAxMmM2NjcwZjg3M2VkNjMyYzI2NGE2ZjNlOGJmMTI5N2Q1YzNkZGJjCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVNhdCBPY3QgNCAxOToyNjoxNiAyMDA4ICswMjAwCgogICAgYXBpOiBmaXggdHlwZSBtaXNtYXRjaAoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSB0eXBlIG1pc21hdGNoIGFuZCB0aHVzIHJlbW92ZXMgYSBjb21waWxlcgogICAgd2FybmluZyB3aGVuIGNvbXBpbGluZyB3aXRoIENPTkZJR19BUEkgb24gcG93ZXJwYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCA5YmMyZTRlZWUzYmNiOGU2Mzg0N2Q3YTczM2UwYzYwNzgwN2Q2MTQxCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJV2VkIE9jdCAxIDEyOjI1OjA0IDIwMDggLTA1MDAKCiAgICBjbWRfaTJjOiBGaXggaGVscCBmb3IgQ09ORklHX0kyQ19DTURfVFJFRSAmJiAhQ09ORklHX0kyQ19NVUxUSV9CVVMKCiAgICBPcmlnaW5hbCBjb2RlIGRpc3BsYXllZDoKICAgICA9PiBoZWxwIGkyYwogICAgIGkyYyBpMmMgc3BlZWQgW3NwZWVkXSAtIHNob3cgb3Igc2V0IEkyQyBidXMgc3BlZWQKICAgICBpMmMgbWQgY2hpcCBhZGRyZXNzWy4wLCAuMSwgLjJdIFsjIG9mIG9iamVjdHNdIC0gcmVhZCBmcm9tIEkyQyBkZXZpY2UKICAgICAuLi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IGEwYjFiNjEwZTk4MGUyNTNkNGMyNTE5ZWUxNWJkMDkzN2MzZjhiZTEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgT2N0IDE0IDIyOjEzOjQxIDIwMDggKzAyMDAKCiAgICBVcGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAwZjhjYmMxODI5ZDljN2Q5NjE2ZmQyOWIzNjZhOTlkMDM3ZmFjZGNkCkF1dGhvcjogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE9jdCAxMCAxMTo0MTowMSAyMDA4ICswODAwCgogICAgRG8gbm90IGluaXQgU0FUQSB3aGVuIGRpc2FibGVkIG9uIDg1MzZEUy4KCiAgICBTR01JSSBhbmQgU0FUQSBzaGFyZSB0aGUgc2VyZGVzIG9uIE1QQzg1MzYgQ1BVLCBXaGVuIFNBVEEgZGlzYWJsZWQgYW5kIHRoZQogICAgZHJpdmVyIHN0aWxsIHRyeSB0byBhY2Nlc3MgdGhlIFNBVEEgcmVnaXN0ZXJzLCB0aGUgY3B1IHdpbGwgaGFuZ3VwLgogICAgVGhpcyBwYXRjaCB0cnkgdG8gZml4IHRoaXMgYnkgcmVhZGluZyB0aGUgc2VyZGVzIHN0YXR1cyBiZWZvcmUgdGhlIFNBVEEKICAgIGluaXRpYWxpemUuCgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOWRiYzM2Njc0NDk2MDAxMzk2NWZjZTg4NTEwMzViNjE0MWYzYjNhZQpBdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgpEYXRlOglGcmkgT2N0IDEwIDEwOjIzOjIyIDIwMDggKzAyMDAKCiAgICBUaGUgUElQRV9JTlRFUlJVUFQgZmxhZyBpcyB1c2VkIHdyb25nCgogICAgQXQgYSBsb3Qgb2YgcGxhY2VzIGluIHRoZSBjb2RlIHRoZSBQSVBFX0lOVEVSUlVQVCBmbGFncyBhbmQgZnJpZW5kcwogICAgYXJlIHVzZWQgd3JvbmcuIFRoZSB3cm9uZyBiaXRzIGFyZSBjb21wYXJlZCB0byB0aGlzIGZsYWcgcmVzdWx0aW5nCiAgICBpbiB3cm9uZyBjb25kaXRpb25zLiBBbHNvIHRoZXJlIGFyZSBtYWNyb3MgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IKICAgIFBJUEVfKiBmbGFncy4KICAgIFRoaXMgcGF0Y2ggdHJpZXMgdG8gZml4IHRoZW0gYWxsLCBob3dldmVyLCBJIHdhcyBub3QgYWJsZSB0byB0ZXN0IHRoZQogICAgY2hhbmdlcywgYmVjYXVzZSBJIGRvIG5vdCBoYXZlIGFueSBvZiB0aGVzZSBib2FyZHMuCgogICAgUmV2aWV3IHJlcXVpcmVkIQoKICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgogICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KCmNvbW1pdCA0ODg2NzIwODQ0NGNiMmE4MmUyYWY5YzMyNDllOTBiN2VkNGExNzUxCkF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CkRhdGU6CUZyaSBPY3QgMTAgMTA6MjM6MjEgMjAwOCArMDIwMAoKICAgIGZpeCBVU0IgaW5pdGlhbGlzYXRpb24gcHJvY2VkdXJlCgogICAgVGhlIG1heCBwYWNrZXQgc2l6ZSBpcyBlbmNvZGVkIGFzIDAsMSwyLDMgZm9yIDgsMTYsMzIsNjQgYnl0ZXMuCiAgICBBdCBzb21lIHBsYWNlcyBkaXJlY3RseSA4LDE2LDMyLDY0IHdhcyB1c2VkIGluc3RlYWQgb2YgdGhlIGVuY29kZWQKICAgIHZhbHVlLiBNYWRlIGEgZW51bSBmb3IgdGhlIG9wdGlvbnMgdG8gbWFrZSB0aGlzIG1vcmUgY2xlYXIgYW5kIHRvIGhlbHAKICAgIHByZXZlbnRpbmcgc2ltaWxhciBlcnJvcnMgaW4gdGhlIGZ1dHVyZS4KCiAgICBBZnRlciBmaXhpbmcgdGhpcyBidWcgaXQgYmVjYW1lIGNsZWFyIHRoYXQgYW5vdGhlciBidWcgZXhpc3RlZCB3aGVyZQogICAgdGhlICdwaXBlJyBpcyBhbmQtZWQgd2l0aCBQSVBFXyogZmxhZ3MsIHdoZXJlIGl0IHNob3VsZCBoYXZlIGJlZW4KICAgICd1c2JfcGlwZXR5cGUocGlwZSknLCBvciBldmVuIGJldHRlciB1c2JfcGlwZWludChwaXBlKS4KCiAgICBBbHNvIHJlbW92ZWQgdGhlIHRyaXBsZSAnZ2V0X2RldmljZV9kZXNjcmlwdG9yJyBzZXF1ZW5jZSwgaXQgaGFzIG5vIHVzZSwKICAgIGFuZCBXaW5kb3dzIG5vciBMaW51eCBiZWhhdmVzIHRoYXQgd2F5LgogICAgVGhlcmUgaXMgYWxzbyBhIHBvbGwgZ29pbmcgb24gd2l0aCBhIHRpbWVvdXQgd2hlbiB1c2JfY29udHJvbF9tc2coKSBmYWlscy4KICAgIEhvd2V2ZXIsIHRoZSBwb2xsIGlzIHVzZWxlc3MsIGJlY2F1c2UgdGhlIGZsYWcgd2lsbCBuZXZlciBiZSBzZXQgb24gYSBlcnJvciwKICAgIGJlY2F1c2UgdGhlcmUgaXMgbm8gY29kZSB0aGF0IHJ1bnMgaW4gYSBwYXJhbGxlbCB0aGF0IGNhbiBzZXQgdGhpcyBmbGFnLgogICAgQ2hhbmdlZCB0aGlzIHRvIHNvbWV0aGluZyBtb3JlIGxvZ2ljYWwuCgogICAgVGVzdGVkIG9uIEFUOTFTQU05MjYxZWsgYW5kIGNvbXBhcmVkIHRoZSBmbG93IG9uIHRoZSBVU0IgYnVzIHRvIHdoYXQKICAgIExpbnV4IGlzIGRvaW5nLiBUaGVyZSBpcyBubyBkaWZmZXJlbmNlIGFueW1vcmUgaW4gdGhlIGVhcmx5IGluaXRpYWxpc2F0aW9uCiAgICBzZXF1ZW5jZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgZWM0ZDhjMWMxZDk0YTc5MGMxNDczYWU4YWFjZTI4MmI4MTdjMzEyMwpBdXRob3I6IE5pa2l0YSBWLiBZb3VzaGNoZW5rbyA8eW91c2hAY3MubXN1LnN1PgpEYXRlOglGcmkgT2N0IDMgMDA6MDM6NTUgMjAwOCArMDQwMAoKICAgIGZzbF9kaXU6IGZpeCBhbGlnbm1lbnQgZXJyb3IgdGhhdCBjYXVzZWQgbWFsbG9jIGNvcnJ1cHRpb24KCiAgICBXaGVuIGFsaWduaW5nIG1hbGxvYygpZWQgc2NyZWVuX2Jhc2UsIGludmFsaWQgb2Zmc2V0IHdhcyBhZGRlZC4KICAgIFRoaXMgbm90IG9ubHkgY2F1c2VkIG1pc2FsaWduZWQgcmVzdWx0ICh3aGljaCBkaWQgbm90IGNhdXNlIGhhcmR3YXJlCiAgICBtaXNiZWhhdmlvdXIpLCBidXQgLSB3b3JzZSAtIGNhdXNlZCBzY3JlZW5fYmFzZSArIHNtZW1fbGVuIHRvCiAgICBiZSBvdXQgb2YgbWFsbG9jKCllZCBzcGFjZSwgd2hpY2ggaW4gdHVybiBjYXVzZWQgYnJlYWthZ2Ugb2YKICAgIGZ1dGhlciBtYWxsb2MoKS9mcmVlKCkgb3BlcmF0aW9uLgoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgc2NyZWVuX2Jhc2UgYWxpZ25tZW50LgoKICAgIEFsc28gdGhpcyBwYXRjaCBtYWtlcyBtZW1zZXQoKSB0aGF0IGNsZWFucyBmcmFtZWJ1ZmZlciB0byBiZSBleGVjdXRlZAogICAgb24gZmlyc3QgaW5pdGlhbGl6YXRpb24gb2YgZGl1LCBub3Qgb25seSBvbiByZS1pbml0aWFsaXphdGlvbi4gSXQgbG9va3MKICAgIGNvcnJlY3QgdG8gY2xlYW4gdGhlIGZyYW1lYnVmZmVyIGluc3RlYWQgb2YgZGlzcGxheWluZyByYW5kb20gZ2FyYmFnZTsKICAgIEkgYmVsaWV2ZSB0aGF0IHdhcyBkaXNhYmxlZCBvbmx5IGJlY2F1c2UgdGhhdCBtZW1zZXQgY2F1c2VkIGJyZWFrYWdlCiAgICBvZiBtYWxsb2MvZnJlZSBkZXNjcmliZWQgYWJvdmUgLSB3aGljaCBubyBsb25nZXIgaGFwcGVucyB3aXRoIHRoZSBmaXgKICAgIGRlc2NyaWJlZCBhYm92ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWtpdGEgVi4gWW91c2hjaGVua28gPHlvdXNoQGRlYmlhbi5vcmc+Cgpjb21taXQgM2QwZWEzMTEwZjM0MzFiNmMyYWVlODgyNzg0ZjM5Zjk3YjIwYmNlOQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglXZWQgU2VwIDI0IDEwOjI5OjM3IDIwMDggKzAyMDAKCiAgICBhcGk6IEZpeCBidWlsZGluZyB3aXRoIENPTkZJR19BUEkKCiAgICBUaGlzIHBhdGNoIGZpeGVzIGJ1aWxkaW5nIHdpdGggQ09ORklHX0FQSSBhbmQgQ09ORklHX1VTQl9TVE9SQUdFLgoKICAgIFVTQl9NQVhfU1RPUl9ERVYgaXMgZGVmaW5lZCBpbiBpbmNsdWRlL3VzYi5oLCBidXQKICAgIG5lZWRlZCBpbiBhcGkvYXBpX3N0b3JhZ2UuYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCBhYmJiOTA2NjZkNWVmMmY1MDBlYmJlZGJiODBmZjYwYWRjNTZiMDQzCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJVHVlIFNlcCAyMyAxMjozOTo0MCAyMDA4IC0wNTAwCgogICAgUmVtb3ZlIHVudXNlZCBDRkdfRUVQUk9NX1BBR0VfV1JJVEVfRU5BQkxFIHJlZmVyZW5jZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDgxZTYxMjAxNGM0MGM5MjJlYzM1NDg4ZDE3YzUwNGQ0ZTkyODZmMDYKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglUdWUgU2VwIDIzIDEyOjM4OjQyIDIwMDggLTA1MDAKCiAgICBSZW1vdmUgQ0ZHX0VFUFJPTV9QQUdFKiBkZXBlbmRlbmNpZXMgZm9yIHRlbXBlcmF0dXJlIHNlbnNvcnMKCiAgICBUaGUgY2hlY2tzIGZvciBDRkdfRUVQUk9NX1BBR0VfV1JJVEVfRU5BQkxFIGFuZAogICAgQ0ZHX0VFUFJPTV9QQUdFX1dSSVRFX0JJVFMgaW4gdmFyaW91cyB0ZW1wZXJhdHVyZQogICAgc2Vuc29yIGRyaXZlcnMgYXJlIG5vdCBuZWNlc3NhcnkKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IGM0Njk4MGY2ZDIxMzVhZGUzNDVkYWRjMWZiMWYxZjRjOGJiZjI1NWEKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVR1ZSBPY3QgMTQgMDc6MDQ6MzggMjAwOCAtMDQwMAoKICAgIGNtZF9zcGk6IHJlbW92ZSBicm9rZW4gc2lnbmVkIGNhc3RpbmcgZm9yIGRpc3BsYXkKCiAgICBTaW5jZSB3ZSdyZSB3b3JraW5nIHdpdGggdW5zaWduZWQgZGF0YSwgeW91IGNhbid0IGFwcGx5IGEgc2lnbmVkIHBvaW50ZXIKICAgIGNhc3QgYW5kIHRoZW4gYXR0ZW1wdCB0byBwcmludCB0aGUgcmVzdWx0LglPdGhlcndpc2UgeW91IGdldCB3cm9uZyBvdXRwdXQKICAgIHdoZW4gdGhlIHNpZ24gYml0IGlzIHNldCBsaWtlICIweEZGIiBpbmNvcnJlY3RseSBleHRlbmRlZCB0byAiMHhGRkZGRkZGRiIuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGQ1ZmQwYjQ5MjEwYzk0MWRlOGExZmNlMzk0N2FjZTkyMjQzYWI1Y2EKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVR1ZSBPY3QgMTQgMDc6MDU6MjQgMjAwOCAtMDQwMAoKICAgIHN0cmluZ3MgY21kOiBkcm9wIG9sZCBDT05GSUdfQ0ZHX1NUUklOR1MgZGVmaW5lCgogICAgV2UgZG9uJ3QgbmVlZCBDT05GSUdfQ0ZHX1NUUklOR1MgYW55bW9yZSBub3cgdGhhdCB3ZSBoYXZlIHRoZSBkZWZpbmUKICAgIENPTkZJR19DTURfU1RSSU5HUyBhbmQgTWFrZWZpbGUgY29udHJvbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZmVjYjVhZGUzYjM3ZjYyOTgxZjJiMDViNjIxMDA1ODUwMTczYWFhOQpBdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBTZXAgMTkgMTc6MzI6NDkgMjAwOCArMDgwMAoKICAgIEZpeCB0aGUgTkFORCBzaXplIG92ZXJmbG93IGlzc3VlLgoKICAgIFdoZW4gdGhlIHRvdGFsIHNpemUgb2YgYWxsIE5BTkQgZGV2aWNlcyBleGNlZWRzIDQgR2lCLCB0aGUgc2l6ZSAgd2lsbAogICAgb3ZlcmZsb3cuIFRoaXMgcGF0Y2ggdHJpZXMgdG8gZml4IHRoaXMuCgogICAgTm90ZSB0aGF0IHdlIHN0aWxsIGhhdmUgYSBwcm9ibGVtIHdoZW4gYSBzaW5nbGUgTkFORCBkZXZpY2UgaXMgYmlnZ2VyCiAgICB0aGFuIDQgR2lCOiB0aGVuIHRoZSBvdmVyZmxvdyB3b3VsZCBhY3R1YWxseSBoYXBwZW4gZWFybGllciwgaS4gZS4KICAgIHdoZW4gc3RvcmluZyB0aGUgc2l6ZSBpbiBuYW5kX2luZm9bXS5zaXplLCBhcyBuYW5kX2luZm9bXS5zaXplIGlzIGFuCiAgICAidV9pbnQzMl90Ii4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAzMGY1NzQ3MTcyNzcyMzhiOTAxNGI4MTM2YzkwZWVhNzcxOTY0OTBmCkF1dGhvcjogTG91aXMgU3UgPGxvdWlzQGFzaXguY29tLnR3PgpEYXRlOglXZWQgSnVsIDkgMTE6MDE6MzcgMjAwOCArMDgwMAoKICAgIEFYODgxODA6IG5ldyBnaWdhYml0IG5ldHdvcmsgZHJpdmVyCgogICAgU2lnbmVkLW9mZi1ieTogTG91aXMgU3UgPGxvdWlzQGFzaXguY29tLnR3PgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBjOWQ2YjY5MjUzNDQ3NDBjYTFkYjJmOGE2YmFiNzkyMWZmODIwZGUzCkF1dGhvcjogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgpEYXRlOglUdWUgQXVnIDE5IDE2OjA3OjAzIDIwMDggKzAyMDAKCiAgICBlbmFibGUgMTAvMTAwTSBhdCBWU0M4NjAxIGF0IHRzZWMgZHJpdmVyCgogICAgQ3VycmVudGx5IFZTQzg2MDEgZG9lc24ndCBsaW5rIHdpdGggMTAvMTAwTSBwYXJ0bmVycyBpZiB0aGUKICAgIEVFUFJPTS9TdHJhcHBpbmcgaXMgbm90IHNldCB1cC4KICAgIFNldHRpbmcgdGhlIGF1dG8tbmVnIHJlZ2lzdGVyIGZpeGVzIHRoaXMuCgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA3MDJjODViMGU4NzZkNTg3YzExYWNkYmI1NTczOGVlNTJhY2Q1NGY0CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgpEYXRlOglUdWUgU2VwIDMwIDE1OjAyOjUzIDIwMDggKzA5MDAKCiAgICBuZXQ6IG5lMjAwMDogRGl2aWRlZCBhIGZ1bmN0aW9uIG9mIE5FMjAwMCBkcml2ZXIKCiAgICBnZXRfcHJvbSBmdW5jdGlvbiB3YXMgdXNlZCBfX2F0dHJpdXRlX18gLCBidXQgaXQgaXMgbm90IGVuYWJsZS4KICAgIGF4ODg3OTYubyBkb2VzIG5vdCBkbyBsaW5rIGJlc2lkZXMgbmUyMDAwLm8uIFdoZW4gbGQgaXMgY2FycmllZAogICAgb3V0LCBnZXRfcHJvbSBmdW5jdGlvbiBvZiBheDg4Nzk2LmMgaXMgaWdub3JlZC4KICAgIFRoaXMgcHJvYmxlbSBpcyBhIHRoaW5nIGJ5IHNwZWNpZmljYXRpb25zIG9mIGxkLgogICAgSSBjaGVja2VkIGFuZCB0ZXN0IHRoaXMgcGF0Y2ggb24gU3VwZXJIIGFuZCBNSVBTLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMDVjN2U5MDcwZmU0ZDc1MWUwMjlmZDk1MjRiZmJiYzkzY2JiMTM5MwpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJVHVlIE9jdCAxNCAxMToxMDo1OSAyMDA4ICswOTAwCgogICAgc2g6IHJzazcyMDM6IEFkZCBzbWM5MTF4IGRyaXZlciBzdXBwb3J0IHRvIGJvYXJkIGNvbmZpZyBmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGNhZTZmOTA5YmFmODYzNTdiM2MwYmQwMWFjZmM0MTQzNDhjNGQxNzUKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVRodSBPY3QgOSAxMzo1NDozMyAyMDA4ICswOTAwCgogICAgc2g6IEZpeCBjYW5ub3QgZXhlY3V0ZSBhIHN0YW5kLWFsb25lIGFwcGxpY2F0aW9uCgogICAgQWRkcmVzcyBjYWxjdWxhdGVkIGluIEVYUE9SVF9GVU5DIGluIFN1cGVySCB3YXMgd3JvbmcsIEkgcmV2aXNlZCBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgNmRmMGVmZDVjODZjYTE2ODlkZWViMjczOGI0NmI3ZDgzY2UyMjhlZgpBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBPY3QgOCAyMzozODowMCAyMDA4IC0wNTAwCgogICAgZnNsX3BjaV9pbml0IGRvIG5vdCBzY2FuIGJ1cyB3aGVuIGNvbmZpZ3VyZWQgYXMgYW4gZW5kLXBvaW50CgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNmYwOTliYmFjMWJhNWRmYjQ2ZWU3YWQyOWRjNTM3MTNmMDUwMWJhNQpBdXRob3I6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgpEYXRlOglUdWUgU2VwIDE2IDE3OjA3OjUzIDIwMDggLTA0MDAKCiAgICBBUk0gRGFWaW5jaTogUmVtb3ZlIHJlZHVuZGFudCBzZXR0aW5nIG9mIEdEX0ZMR19SRUxPQyBmb3Igc2Zmc2RyIGJvYXJkLgoKICAgIFRoaXMgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBub3cgdGhhdCB0aGUgR0RfRkxHX1JFTE9DIGZsYWcgaXMgc2V0IGZvcgogICAgYWxsIEFSTSBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Cgpjb21taXQgZDk3N2E1NzM1NjY1N2JhMjQxMjU2MjMxZWZjYTMyODI4YTU4MjJmOQpBdXRob3I6IEx1aWdpICdDb21pbycgTWFudGVsbGluaSA8bHVpZ2kubWFudGVsbGluaUBpZGYtaGl0LmNvbT4KRGF0ZToJU2F0IFNlcCAxMyAxMDowNDozMiAyMDA4ICswMjAwCgogICAgRml4IGx6bWEgdW5jb21wcmVzcyBjYWxsIChpbWFnZV9zdGFydCB3cm9uZ2x5IHVzZWQgaW5zdGVhZCBpbWFnZV9sZW4pCgogICAgU2lnbmVkLW9mZi1ieTogTHVpZ2kgJ0NvbWlvJyBNYW50ZWxsaW5pIDxsdWlnaS5tYW50ZWxsaW5pQGlkZi1oaXQuY29tPgoKY29tbWl0IDM5MjQzODQwNjA0MTQxNWZlNjRhYjg3NDhlYzVhYjVhZDAxZDFjZjcKQXV0aG9yOiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEF1ZyAyOCAxNDowOToxNSAyMDA4IC0wNzAwCgogICAgbXBjODZ4eDogdXNlIHI0IGluc3RlYWQgb2YgcjIgaW4gbG9ja19yYW1faW5fY2FjaGUgYW5kIHVubG9ja19yYW1faW5fY2FjaGUKCiAgICBUaGlzIGlzIG5lZWRlZCBpbiB1bmxvY2tfcmFtX2luX2NhY2hlKCkgYmVjYXVzZSBpdCBpcyBjYWxsZWQgZnJvbSBDIGFuZAogICAgd2lsbCBjb3JydXB0IHRoZSBzbWFsbCBkYXRhIGFyZWEgYW5jaG9yIHRoYXQgaXMga2VwdCBpbiBSMi4KCiAgICBsb2NrX3JhbV9pbl9jYWNoZSgpIGlzIG1vZGlmaWVkIHNpbWlsYXJseSBhcyBnb29kIGNvZGluZyBwcmFjdGljZSwgYnV0CiAgICBpcyBub3QgY2FsbGVkIGZyb20gQy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1YzdjYmNkMzRkMGVlNTY2ODc1YTRmZDBmMmEzZTVhNjJiYmE5MjFjCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIEF1ZyAxOSAxNTowNTozNCAyMDA4IC0wNTAwCgogICAgODZ4eDogcmVtb3ZlIHJlZHVkYW50IGNvZGUgd2l0aCBsaWJfcHBjL2ludGVycnVwdHMuYwoKICAgIEZvciBzb21lIHJlYXNvbiB3ZSBkdXBsaWNhdGVkIHRoZSBtYWpvcml0eSBvZiBjb2RlIGluIGxpYl9wcGMvaW50ZXJydXB0cy5jCiAgICBOb3Qga25vdyBob3cgdGhhdCBoYXBwZW5lZCwgYnV0IHRoZXJlIGlzIG5vIGdvb2QgcmVhc29uIGZvciBpdC4KCiAgICBVc2UgdGhlIGludGVycnVwdF9pbml0X2NwdSgpIGFuZCB0aW1lcl9pbnRlcnJ1cHRfY3B1KCkgc2luY2UgaXRzIHdoeQogICAgdGhleSBleGlzdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDBkMDFmNjZkMjM1MTE4NTE1YjUwODZiODhmODI0OThiYzA2OTVkNmEKQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgT2N0IDkgMDE6MjY6MzYgMjAwOCAtMDUwMAoKICAgIENGSTogY2ZpX2ZsYXNoIHdyaXRlIGZpeCBmb3IgQU1EIGxlZ2FjeQoKICAgIFRoZSBmbGFzaF91bmxvY2tfc2VxIHJlcXVpcmVzIGEgc2VjdG9yIGZvciBBTURfTEVHQUNZLgogICAgRml4IGEgcmV0Y29kZSBjaGVjayB0eXBlby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDU0MmIzODVhNjIwYTE3ODM0NTRhMDA0MjQ5MzBlNTE4OTVmNDUwNzMKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVHVlIE9jdCA3IDEzOjEzOjEwIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBVU0IgMi4wIHBoeSByZXNldCBzZXF1ZW5jZQoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgVVNCIDIuMCBjb21tdW5pY2F0aW9uIGlzc3VlcyBvbiBzb21lIERVNDQwIGJvYXJkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkZjhjMWNlMTExMTRjMjI2MGRlZGI1NTQ3MjgxOTQ1ZjdkYjhmYTVjCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVR1ZSBPY3QgNyAxMzoxMzowOSAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBBZGQgc3RyYXBwaW5nIG1vZGUgZm9yIDY2N01IeiBDUFUgZnJlcXVlbmN5IG9uIERVNDQwIGJvYXJkCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNmExMzNkNmEwMGIxZmM3YjkyNTdjZDU5MjVkOGNiNjdmNzVlY2RhMgpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUdWUgT2N0IDcgMTM6MTM6MDggMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRml4IERVNDQwIEdQSU8gY29uZmlndXJhdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDM1ZGQwMjVjNzBmY2M0Mzg5MzE3ZGIyZjJhOWQxNDc5NTE3MjEzN2QKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVHVlIE9jdCA3IDEzOjEzOjA3IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBEVTQ0MCBjb25maWcKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmM2JmOTI3MzkzOWZmZTFhNjBhMzJhMmVlZjkwOTA5N2YxNWRmNTZiCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIE9jdCA4IDE1OjM2OjM5IDIwMDggLTA1MDAKCiAgICBNUEM4NTcyRFM6IEZpeCBjb21waWxlIHdhcm5pbmdzCgogICAgQ29tbWl0IDQ0NWE3YjM4MzA4ZWIwNWI0MWRlNzQxNjViMjA4NTVkYjU4YzdlZTUgaW50cm9kdWNlZCB0aGUgZm9sbG93aW5nCiAgICBjb21waWxlIHdhcm5pbmdzOgoKICAgIGNtZF9pMmMuYzoxMTI6IHdhcm5pbmc6IG1pc3NpbmcgYnJhY2VzIGFyb3VuZCBpbml0aWFsaXplcgogICAgY21kX2kyYy5jOjExMjogd2FybmluZzogKG5lYXIgaW5pdGlhbGl6YXRpb24gZm9yICdpMmNfbm9fcHJvYmVzWzBdJykKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGRmZmQyNDQ2ZmIwNDFmMzhlZjAzNGIwZmNmNDFlNTFlNWU0ODkxNTkKQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KRGF0ZToJVHVlIFNlcCAzMCAxMDo1NTo1NyAyMDA4ICswMjAwCgogICAgODV4eDogVXNpbmcgcHJvcGVyIEkyQyBzb3VyY2UgY2xvY2sgZGl2aWRlciBmb3IgTVBDODU0NAoKICAgIE1lYXN1cmVtZW50cyB3aXRoIG91ciBNUEM4NTQ0IGJvYXJkIHNob3dlZCB0aGF0IHRoZSBJMkMgYnVzIGZyZXF1ZW5jeQogICAgaXMgd3JvbmcgYnkgYSBmYWN0b3Igb2YgMS41LiBPYnZpb3VzbHksIHRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUKICAgIE1QQzg1eHhfUE9SREVWU1IyX1NFQ19DRkcgYml0IG9mIHRoZSBjZmdfc2VjX2ZyZXEgcmVnaXN0ZXIgaXMgbm90CiAgICBjb3JyZWN0LiBUaGVyZSBzZWVtcyB0byBiZSBhbiBlcnJvciBpbiB0aGUgODU0NCBSTS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KCmNvbW1pdCBlNDZjN2JmYjhiYzNjMzA0Y2VkZDIwZjdhMzY1ZDZlNzhkN2VhZjE3CkF1dGhvcjogUmFmYWwgQ3p1YmFrIDxyY3pAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgT2N0IDggMTM6NDE6MzAgMjAwOCArMDIwMAoKICAgIEZTTDogRml4IGdldF9jcHVfYm9hcmRfcmV2aXNpb24oKSByZXR1cm4gdmFsdWUuCgogICAgZ2V0X2NwdV9ib2FyZF9yZXZpc2lvbigpIHJldHVybmVkIGJvYXJkIHJldmlzaW9uIGJhc2VkIG9uIGluZm9ybWF0aW9uIHN0b3JlZAogICAgaW4gZ2xvYmFsIHN0YXRpYyBzdHJ1Y3QgZWVwcm9tLiBJdCBzaG91bGQgaW5zdGVhZCB1c2Ugb25lIGZyb20gbG9jYWwgc3RydWN0CiAgICBib2FyZF9lZXByb20sIHRvIHdoaWNoIHRoZSBkYXRhIGlzIGFjdHVhbGx5IHJlYWQgZnJvbSBFRVBST00uIFRoZSBidWcgbGVkIHRvCiAgICBzeXN0ZW0gaGFuZyBhZnRlciBwcmludGluZyBMMSBjYWNoZSBpbmZvcm1hdGlvbiBvbiBVLUJvb3Qgc3RhcnR1cC4gVGhlIHByb2JsZW0KICAgIHdhcyBvYnNlcnZlZCBvbiBNUEM4NTU1Q0RTIHN5c3RlbSBhbmQgcG9zc2libHkgYWZmZWN0cyBvdGhlciBGcmVlc2NhbGUgTVBDODV4eAogICAgYm9hcmRzIHVzaW5nIENGR19JMkNfRUVQUk9NX0NDSUQuCgogICAgVGhlIGNoYW5nZSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgdGVzdGVkIG9uIE1QQzg1NTVDRFMgc3lzdGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJhZmFsIEN6dWJhayA8cmN6QHNlbWloYWxmLmNvbT4KCmNvbW1pdCA3NDdmMzE2Y2NhNDg0ZWQ2MjdhOTdkZDMzOTFmZWJhYmNlMzg0MTg2CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVHVlIFNlcCAzMCAyMDowODo0OSAyMDA4ICswMjAwCgogICAgdXBkYXRlIHVJbWFnZSBGSVQgbXVsdGkgZG9jdW1lbnRhdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNzdhMDM1NWY2MGI4MDFmMjMyY2UwYTViZmJlOTUzMzFmYTNiNmJjMApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVR1ZSBTZXAgMzAgMjA6MDg6MzYgMjAwOCArMDIwMAoKICAgIG1vdmUgUkVBRE1FLmlteDMxIHRvIGRvYy8gYW5kIG1lcmdlIHdpdGggUkVBRE1FLm14MzEKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDFlZDdhN2YwZjU3MWIxM2Q0NjUzMGY4ZjhiOWFmZjM5NTdmMTVhOTYKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CkRhdGU6CVRodSBTZXAgMjUgMjA6NTQ6MzcgMjAwOCArMDIwMAoKICAgIGkuTVgzMTogc3dpdGNoIHRvIENGR19IWj0xMDAwCgogICAgU3dpdGNoIHRvIHRoZSBzdGFuZGFyZCBDRkdfSFo9MTAwMCB2YWx1ZSwgd2hpbGUgYXQgaXQsIG1pbm9yIHdoaXRlLXNwYWNlCiAgICBjbGVhbnVwLCByZW1vdmUgQ0ZHX0NMS1NfSU5fSFogZnJvbSBjb25maWctaGVhZGVycy4gVGVzdGVkIG9uIG14MzFhZHMsCiAgICBwcm92aWRlcyAyJSBvciAwLjQlIHByZWNpc2lvbiBkZXBlbmRpbmcgb24gdGhlCiAgICBDT05GSUdfTVgzMV9USU1FUl9ISUdIX1BSRUNJU0lPTiBmbGFnLiBNZWFzdXJlZCB3aXRoIHN0b3Atd2F0Y2ggb24gMTAwcwogICAgYm9vdC1kZWxheS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgZjQxYjE0NGMxMTM0MWI1NzFlYWI3ZGNlZjZjNGI4ZTAzYzkyZDJiMgpBdXRob3I6IGdudXNlcmNuIDxnbnVzZXJjbkBnbWFpbC5jb20+CkRhdGU6CVdlZCBPY3QgOCAxODo1ODo1OCAyMDA4ICswMjAwCgogICAgRml4IGJ1ZzogaW4gYXJjaC1hcm0sIGVudl9nZXRfY2hhciBkb3NlIG5vdCB3b3JrIGZpbmUKCiAgICBkdWUgdG8gdGhlIGFybSBpbXBsZW1lbnRhdGlvbiB3aGljaCBzdXBwb3NlZCB0aGF0IFUtQm9vdCBpcyBpbiBSQU0KICAgIHdoZW4gd2UganVtcCB0byBzdGFydF9hcm1ib290CgogICAgU2lnbmVkLW9mZi1ieTogZ251c2VyY24gPGdudXNlcmNuQGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZjhhMDBkZWE4NDFkNWQ3NWRlMWY4ZTgxMDdlOTBlZTFiZWVkZGY1ZgpBdXRob3I6IEFkYW0gR3JhaGFtIDxhZ3JhaGFtQGFtY2MuY29tPgpEYXRlOglNb24gT2N0IDYgMTA6MTY6MTMgMjAwOCAtMDcwMAoKICAgIHBwYzR4eDogUmVzZXQgYW5kIHJlbG9jayBtZW1vcnkgRExMIGFmdGVyIFNEUkFNX0NMS1RSIGNoYW5nZQoKICAgIEFmdGVyIGNoYW5naW5nIFNEUkFNX0NMS1RSIHBoYXNlIHZhbHVlIHJlcnVuIHRoZSBtZW1vcnkgcHJlbG9hZAogICAgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgKElOSVRQTFIpIHRvIHJlc2V0IGFuZCByZWxvY2sgdGhlIG1lbW9yeQogICAgRExMLiBDaGFuZ2luZyB0aGUgU0RSQU1fQ0xLVFIgbWVtb3J5IGNsb2NrIHBoYXNlIGNvYXJzZSB0aW1pbmcKICAgIGFkanVzdG1lbnQgZWZmZWN0cyB0aGUgcGhhc2UgcmVsYXRpb25zaGlwIG9mIHRoZSBpbnRlcm5hbCwgdG8gdGhlCiAgICBQUEMgY2hpcCwgYW5kIGV4dGVybmFsLCB0byB0aGUgUFBDIGNoaXAsIHZlcnNpb25zIG9mIE1FTUNMS19PVVQuCgogICAgU2lnbmVkLW9mZi1ieTogQWRhbSBHcmFoYW0gPGFncmFoYW1AYW1jYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBWaWN0b3IgR2FsbGFyZG8gPHZnYWxsYXJkb0BhbWNjLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1Mjk3MjQ2YmJhYTk5NDNjMGRhMWVjMmU3MTdiNzJlNGFiNmI4MzBlCkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE9jdCAzIDExOjQ4OjAzIDIwMDggLTA0MDAKCiAgICBSZW1vdmUgcmVkdW5kYW50ICNkZWZpbmUgZm9yIE1QQzg1MzZEUwoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNDQ1YTdiMzgzMDhlYjA1YjQxZGU3NDE2NWIyMDg1NWRiNThjN2VlNQpBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBPY3QgMyAxMTo0NzozMCAyMDA4IC0wNDAwCgogICAgQWRkIElEIEVFUFJPTSBzdXBwb3J0IGZvciBNUEM4NTcyRFMKCiAgICBUaGUgSUQgRUVQUk9NIG9uIE1QQzg1NzJEUyBib2FyZCBsb2NhdGVzIG9uIEkyQyBidXMgMS4gSXRzIHRoZSBzdG9yYWdlIGZvcgogICAgc3lzdGVtIGluZm9ybWF0aW9uIGxpa2UgbWFjIGFkZHJlc3NlcyBldGMuIFRoaXMgcGF0Y2ggZW5hYmxlcyBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFmM2JhMzE3YTVjNWYzYTdhYWJmNTgwZmRkYzIxMWY0YmI1YTQ1NDAKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgT2N0IDMgMTE6NDY6NTkgMjAwOCAtMDQwMAoKICAgIE1pbm9yIGZpeGVzIGZvciBJMkMgYWRkcmVzcyBvbiBNUEM4NTcyRFMKCiAgICBNUEM4NTcyRFMgaGFzIHR3byBpMmMgYnVzZXMuIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIEREUiBTUERfRUVQUk9NIHRvIGkyYyBidXMgMQogICAgYWNjb3JkaW5nIHRvIHRoZSBib2FyZCBzcGVjLCBhbmQgYWRkcyB0aGUgMm5kIGkyYyBidXMgb2Zmc2V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYzAzOTExMTFjMzNjMjJmYWJlZGRmOGY0Y2E4MDFlYzc2NDViNGY1YwpBdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CkRhdGU6CVNhdCBTZXAgMjcgMTQ6NDA6NTcgMjAwOCArMDgwMAoKICAgIEZpeCB0aGUgaW5jb3JyZWN0IEREUiBjbGsgZnJlcSByZXBvcnRpbmcgb24gODUzNkRTCgogICAgT24gODUzNkRTIGJvYXJkLCBXaGVuIHRoZSBERFIgY2xrIGlzIHNldCBhc3luYyBtb2RlKFNXM1s2OjhdICE9IDExMSksCiAgICBUaGUgZGlzcGxheSBpcyBzdGlsbCBzeW5jIG1vZGUgRERSIGZyZXEuIFRoaXMgcGF0Y2ggdHJ5IHRvIGZpeAogICAgdGhpcy4gVGhlIGRpc3BsYXkgRERSIGZyZXEgaXMgbm93IHRoZSBhY3R1YWwgZnJlcSBpbiBib3RoCiAgICBzeW5jIGFuZCBhc3luYyBtb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYmFjNmExZDFmYTFjZDgwYWE1Nzg4MWZhOWMyMTUyYjg1M2NkMGVkNApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBPY3QgNyAxMDoyODo0NiAyMDA4IC0wNTAwCgogICAgODV4eDogUmVtb3ZlIHNldHRpbmcgb2YgKmNhY2hlLWxpbmUtc2l6ZSBpbiBkZXZpY2UgdHJlZXMKCiAgICBlUEFQUiBzYXlzIGlmIHRoZSAqY2FjaGUtYmxvY2stc2l6ZSBpcyB0aGUgc2FtZSBhcyAqY2FjaGUtbGluZS1zaXplCiAgICB0aGFuIHdlIGRvbid0IG5lZWQgdGhlICpjYWNoZS1saW5lLXNpemUgcHJvcGVydHkuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBhNjlhNDIzMzhkZDI1NDA4ZjlmZDUzOTBhODNiYzUwMTc0OWM3ZTFiCkF1dGhvcjogTWFyayBKYWNrc29uIDxtcGZqQG1pbWMuY28udWs+CkRhdGU6CUZyaSBPY3QgMyAxMTo0ODo1NyAyMDA4ICswMTAwCgogICAgTUlNQzIwMCBib2FyZCBub3cgdXNlcyBDT05GSUdfRElTQUJMRV9DT05TT0xFCgogICAgQ2hhbmdlZCBNSU1DMjAwIGJvYXJkIHNldHVwIGFuZCBjb25maWcgdG8gdXNlIENPTkZJR19ESVNBQkxFX0NPTlNPTEUuCiAgICBBbHNvIGZpeGVkIGRlZmF1bHQgdUltYWdlIGxvY2F0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmsgSmFja3NvbiA8bXBmakBtaW1jLmNvLnVrPgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGNkM2NiMGQ5MjY5ZDE1NTI3NmIwMDIwN2UzODE2YTkzNDdmZDFjOTIKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglTYXQgT2N0IDQgMDc6NTY6MDYgMjAwOCAtMDQwMAoKICAgIGxpYmZkdDogRml4IGVycm9yIGluIGRvY3VtZW50YXRpb24gZm9yIGZkdF9nZXRfYWxpYXNfbmFtZWxlbigpCgogICAgT29wcywgc2NyZXdlZCB1cCB0aGUgZnVuY3Rpb24gbmFtZSBpbiB0aGUgZG9jdW1lbnRpbmcgY29tbWVudCBmb3IgdGhpcwogICAgZnVuY3Rpb24uICBUcml2aWFsIGNvcnJlY3Rpb24gaW4gdGhpcyBwYXRjaC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KICAgIEFja2VkLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IDlhNmNmNzNhODhkZGFiMmUxYWMzOTA4OGYyODA2MTc3OTgyY2M2MmMKQXV0aG9yOiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KRGF0ZToJV2VkIEF1ZyAyMCAxNjo1NToxNCAyMDA4ICsxMDAwCgogICAgbGliZmR0OiBBZGQgZnVuY3Rpb24gdG8gZXhwbGljaXRseSBleHBhbmQgYWxpYXNlcwoKICAgIEt1bWFyIGhhcyBhbHJlYWR5IGFkZGVkIGFsaWFzIGV4cGFuc2lvbiB0byBmZHRfcGF0aF9vZmZzZXQoKS4KICAgIEhvd2V2ZXIsIGluIHNvbWUgY2lyY3Vtc3RhbmNlcyBpdCBtYXkgYmUgY29udmVuaWVudCBmb3IgdGhlIHVzZXIgb2YKICAgIGxpYmZkdCB0byBleHBsaWNpdGx5IGdldCB0aGUgc3RyaW5nIGV4cGFuc2lvbiBvZiBhbiBhbGlhcy4JVGhpcyBwYXRjaAogICAgYWRkcyBhIGZ1bmN0aW9uIHRvIGRvIHRoaXMsIGZkdF9nZXRfYWxpYXMoKSwgYW5kIHVzZXMgaXQgdG8gaW1wbGVtZW50CiAgICBmZHRfcGF0aF9vZmZzZXQoKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KCmNvbW1pdCAyMjE1OTg3ZTEwMGQyYTg0MWFlNmQ0OGE3Y2M5YmI4M2ZjZjIyNzM3CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgT2N0IDIgMDE6NTU6MzggMjAwOCAtMDQwMAoKICAgIGNmaV9mbGFzaDogZG8gbm90IHJlc2V0IGZsYXNoIHdoZW4gcHJvYmUgZmFpbHMKCiAgICBUaGUgQ0ZJIGZsYXNoIGRyaXZlciBzdGFydHMgYXQgZmxhc2hfaW5pdCgpIHdoaWNoIGNhbGxzIGRvd24gaW50bwogICAgZmxhc2hfZ2V0X3NpemUoKS4gIFRoaXMgc3RhcnRzIGJ5IGNhbGxpbmcgZmxhc2hfZGV0ZWN0X2NmaSgpLiAgSWYgc2FpZAogICAgZnVuY3Rpb24gZmFpbHMsIGZsYXNoX2dldF9zaXplKCkgZmluaXNoZXMgYnkgYXR0ZW1wdGluZyB0byByZXNldCB0aGUKICAgIGZsYXNoLiAgVW5mb3J0dW5hdGVseSwgaXQgZG9lcyB0aGlzIHdpdGggYW4gaW5mby0+cG9ydHdpZHRoIHNldCB0byAweDEwCiAgICB3aGljaCBmaWx0ZXJzIGRvd24gaW50byBmbGFzaF9tYWtlX2NtZCgpIGFuZCB0aGF0IGhhcHBpbHkgc21hc2hlcyB0aGUKICAgIHN0YWNrIGJ5IHN0aWNraW5nIGluZm8tPnBvcnR3aWR0aCBieXRlcyBpbnRvIGEgY2Zpd29yZF90IHZhcmlhYmxlIHRoYXQKICAgIGxpdmVzIG9uIHRoZSBzdGFjay4gIE9uIGEgNjRiaXQgc3lzdGVtIHlvdSBwcm9iYWJseSB3b24ndCBub3RpY2UsIGJ1dAogICAga2lsbGluZyB0aGUgbGFzdCA4IGJ5dGVzIG9uIGEgMzJiaXQgc3lzdGVtIHVzdWFsbHkgbGVhZHMgdG8gYSBjb3JydXB0CiAgICByZXR1cm4gYWRkcmVzcy4gIFdoaWNoIGlzIHdoYXQgaGFwcGVucyBvbiBhIEJsYWNrZmluIHN5c3RlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgM2UzODU3NzIwOGU0MjU2OTU2YmMzM2JiOGJjZDBhNmI2ZmFiNTVjMwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIFNlcCAyNiAxNzowMzoyNiAyMDA4ICswMjAwCgogICAgZmR0OiBPdmVyd3JpdGUgL2Nob3NlbiBub2RlIGluIGJvb3RtIGlmIGl0IGFscmVhZHkgZXhpc3RzIGluIHRoZSBkdGIKCiAgICBTZXQgZm9yY2UgcGFyYW1ldGVyIGluIGZkdF9jaG9zZW4oKSBjYWxsIGluIGRvX2Jvb3RtX2xpbnV4KCkgY2FsbC4KICAgIFdpdGhvdXQgdGhpcywgdGhlIGNob3NlbiBub2RlIGlzIG5vdCBvdmVyd3JpdHRlbiBpZiBpdCBhbHJlYWR5CiAgICBleGlzdHMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDc0MWE2ZDAxMGQwOWI1YmFmY2E4ZTRjZGZiNmIyZjhhMmMwNzk5NGQKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgU2VwIDI1IDExOjAyOjE3IDIwMDggLTA1MDAKCiAgICBGaXggYW4gb3ZlcmZsb3cgY2FzZSBpbiBmZHRfb2Zmc2V0X3B0cigpIGRldGVjdGVkIGJ5IEdDQyA0LjMuCgogICAgVXNpbmcgR2NjIDQuMyBkZXRlY3RlZCB0aGlzIHByb2JsZW06CgoJLi4vZHRjL2xpYmZkdC9mZHQuYzogSW4gZnVuY3Rpb24gJ2ZkdF9uZXh0X3RhZyc6CgkuLi9kdGMvbGliZmR0L2ZkdC5jOjgyOiBlcnJvcjogYXNzdW1pbmcgc2lnbmVkIG92ZXJmbG93IGRvZXMgbm90CglvY2N1ciB3aGVuIGFzc3VtaW5nIHRoYXQgKFggKyBjKSA8IFggaXMgYWx3YXlzIGZhbHNlCgogICAgVG8gZml4IHRoZSBwcm9ibGVtLCB0cmVhdCB0aGUgb2Zmc2V0IGFzIGFuIHVuc2lnbmVkIGludC4KCiAgICBUaGUgcHJvYmxlbSByZXBvcnQgYW5kIHByb3Bvc2VkIGZpeCB3ZXJlIHByb3ZpZGVkCiAgICBieSBTdGV2ZSBQYXBhY2hhcmFsYW1ib3VzIDxzdGV2ZXBAZnJlZXNjYWxlLmNvbT4uCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiYmRiYzdjYjNhYmVmZGE1YmQ5OThlZGJjZjA1MDhmZTYyNTYzMjdkCkF1dGhvcjogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+CkRhdGU6CUZyaSBBdWcgMjkgMTQ6MTk6MTMgMjAwOCArMTAwMAoKICAgIGxpYmZkdDogRml4IGJ1Z3MgaW4gZmR0X2dldF9wYXRoKCkKCiAgICBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBmZHRfZ2V0X3BhdGgoKSBoYXMgYSBjb3VwbGUgb2YgYnVncywKICAgIGZpeGVkIGJ5IHRoaXMgcGF0Y2guCgogICAgRmlyc3QsIGNvbnRyYXJ5IHRvIGl0cyBkb2N1bWVudGF0aW9uLCBvbiBzdWNjZXNzIGl0IHJldHVybnMgdGhlIGxlbmd0aAogICAgb2YgdGhlIG5vZGUncyBwYXRoLCByYXRoZXIgdGhhbiAwLglUaGUgdGVzdGNhc2UgaXMgY29ycmVzcG9uZGluZ2x5CiAgICB3cm9uZywgYW5kIHRoZSBwYXRjaCBmaXhlcyB0aGlzIGFzIHdlbGwuCgogICAgU2Vjb25kLCBpbiBzb21lIGNpcmN1bXN0YW5jZXMsIGl0IHdpbGwgcmV0dXJuIC1GRFRfRVJSX0JBRE9GRlNFVAogICAgaW5zdGVhZCBvZiAtRkRUX0VSUl9OT1NQQUNFIHdoZW4gZ2l2ZW4gaW5zdWZmaWNpZW50IGJ1ZmZlciBzcGFjZS4KICAgIFNwZWNpZmljYWxseSB0aGlzIGhhcHBlbnMgd2hlbiB0aGVyZSBpcyBpbnN1ZmZpY2llbnQgc3BhY2UgZXZlbiB0bwogICAgaG9sZCB0aGUgcGF0aCdzIHNlY29uZCBsYXN0IGNvbXBvbmVudC4gIFRoaXMgYmVoYXZpb3VyIGlzIGNvcnJlY3RlZCwKICAgIGFuZCB0aGUgdGVzdGNhc2UgdXBkYXRlZCB0byBjaGVjayBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KCmNvbW1pdCAzM2FmM2U2NjU2ZTg0NjYwZDM5N2I1ZGQ5NWFiYWIyZGNjYzM2ZjgzCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIE9jdCAxIDEyOjM0OjU4IDIwMDggKzAyMDAKCiAgICBUUU01MjAwOiBlbmFibGUgc3VwcG9ydCBmb3IgQVRBUEkgZGV2aWNlcwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZDEzZmYyMzU4ZmY4YzM4NGY1MmVhZjQ2ZjVkNjAyNThhY2Y5NmVhNgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CU1vbiBTZXAgMTUgMDU6NDg6MjUgMjAwOCArMDIwMAoKICAgIFJldmVydCAiQVJNOiBzZXQgR0RfRkxHX1JFTE9DIGZvciBib2FyZHMgc2tpcHBpbmcgcmVsb2NhdGlvbiB0byBSQU0iCgogICAgd2UgbmVlZCB0aGlzIGR1ZSB0byB0aGUgYXJtIGltcGxlbWVudGF0aW9uIHdoaWNoIHN1cHBvc2VkIHRoYXQgVS1Cb290CiAgICBpcyBpbiBSQU0gd2hlbiB3ZSBqdW1wIHRvIHN0YXJ0X2FybWJvb3QKCiAgICBUaGlzIHJldmVydHMgY29tbWl0IGY5NmI0NGNlZjg5N2JkMzcyYmViODZkZGUxYjMzNjM3YzExOWQ4NGQuCiAgICBpbiBvcmRlciB0byBkbyBpdCBmb3IgYWxsIGFybSBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgN2ZkMGJlYTJlNGE3OGVhYjdlNjY5MzE0MDk0MGY5ZjlhMDAwOWJjMgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBTZXAgMjQgMDg6NDY6MjUgMjAwOCAtMDUwMAoKICAgIG1wYzgzeHg6IGRvbid0IGRpc2FibGUgYXV0b2Jvb3QKCiAgICBib290ZGVsYXkgc2V0IHRvIC0xICdwZXJtYW5lbnRseScgZGlzYWJsZXMgYXV0b2Jvb3RpbmcsIGV2ZW4gaWYKICAgIGJvb3RjbWQgaXMgc3BlY2lmaWVkLiAgQ2hhbmdlIHRvIGEgcG9zaXRpdmUgdmFsdWUgdG8gYWxsb3cKICAgIGF1dG9ib290aW5nIHdoZW4gYSBib290Y21kIGlzIHNldC4KCiAgICBSZXBvcnRlZC1ieTogQ29yYXkgVGF0ZSA8Q29yYXkuVGF0ZUBmcmVlc2NhbGUuY29tPgogICAgQ2M6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyZmIyOWM1MjBjNDJiN2JmZWYzM2VhM2ZkMTUyN2ViYTY0MDk5MTY0CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgpEYXRlOglXZWQgU2VwIDI0IDEwOjQyOjE1IDIwMDggKzA5MDAKCiAgICBtcGM4M3h4OiBGaXggdHlwbyBpbiBpbmNsdWRlL21wYzgzeHguaAoKICAgIEZpeGVkIHR5cG8gZnJvbSBDT05JRkdfTVBDODM3WCB0byBDT05GSUdfTVBDODM3WAoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTYyYzQxYzAzMTc5NzI3YTFkMTQyNjJmNzAzYzlhOGJjNDAyMzFmYQpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBTZXAgMjMgMDk6Mzg6NDkgMjAwOCAtMDUwMAoKICAgIG1wYzgzeHg6IGFkZCBoL3cgZmxhc2ggcHJvdGVjdGlvbiB0byBib2FyZCBjb25maWdzCgogICAgdGhlIG9wZXJhdGluZyBzeXN0ZW0gbWF5IGxlYXZlIGZsYXNoIGluIGEgaC93IGxvY2tlZCBzdGF0ZSBhZnRlciB3cml0aW5nLgogICAgVGhpcyBhbGxvd3MgdS1ib290IHRvIGNvbnRpbnVlIHRvIHdyaXRlIGZsYXNoIGJ5IGVuYWJsaW5nIGgvdyB1bmxvY2tpbmcKICAgIGJ5IGRlZmF1bHQuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkMjYxNTRjOWE2OTI1ODZiNjZlYjZkMWY4ZTFiNjdjNzVlNDBlYTcwCkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CVRodSBTZXAgMTEgMjE6MzU6MzYgMjAwOCArMDQwMAoKICAgIG1wYzgzeHg6IHNwZF9zZHJhbTogZml4IGRkciBzZHJhbSBiYXNlIGFkZHJlc3MgYXNzaWdubWVudCBidWcKCiAgICBUaGUgc3BkX2RyYW0gY29kZSBzaGlmdHMgdGhlIGJhc2UgYWRkcmVzcywgdGhlbiBtYXNrcyAyMCBiaXRzLCBidXQKICAgIGZvcmdldHMgdG8gc2hpZnQgdGhlIGJhc2UgYWRkcmVzcyBiYWNrLiBGaXggdGhpcyBieSBqdXN0IG1hc2tpbmcgdGhlCiAgICBiYXNlIGFkZHJlc3MgY29ycmVjdGx5LgoKICAgIEZvdW5kIHRoaXMgYnVnIHdoaWxlIHRyeWluZyB0byByZWxvY2F0ZSBhIEREUiBtZW1vcnkgYXQgdGhlIGJhc2UgIT0gMC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOGZkNDE2NmM0NjdhNDY3NzNmODAyMDhiZGExZWMzYjQ3NTc3NDdiYwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIFNlcCAyMiAxNjoxMDo0MyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBDYW55b25sYW5kczogUmVtb3ZlIHVubmVjZXNzYXJ5IEZEVCB3YXJuaW5nIHVwb24gRFRCIGZpeHVwCgogICAgRGVwZW5kaW5nIG9uIHRoZSBjb25maWd1cmF0aW9uIGp1bXBlciAiU0FUQSBTRUxFQ1QiLCBVLUJvb3QgZGlzYWJsZWQKICAgIGVpdGhlciBvbmUgUENJZSBub2RlIG9yIHRoZSBTQVRBIG5vZGUgaW4gdGhlIGRldmljZSB0cmVlIGJsb2IuIFRoaXMKICAgIHBhdGNoIHJlbW92ZXMgdGhlIHVubmVjZXNzYXJ5IGFuZCBldmVuIGNvbmZ1c2luZyB3YXJuaW5nLCB3aGVuIHRoZSBub2RlCiAgICBpcyBub3QgZm91bmQgYXQgYWxsLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2ZTI0YTFlYjE0OTBhYTA0Mzc3MGJjZjAwNjFhYzFmYWQwODY0ZmQ5CkF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CkRhdGU6CUZyaSBTZXAgMTkgMTM6MzA6MDYgMjAwOCArMDIwMAoKICAgIEFkZCBtaXNzaW5nIGRldmljZSB0eXBlcyB0byBkZXZfcHJpbnQoKSBpbiBwYXJ0LmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCA1ZmRjMjE1ZjBiMzUxYjBjMzZjYzNmOGEwZmE1ODUwZjI0NDU0YmVkCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIFNlcCAyMiAyMjoyMzowNiAyMDA4ICswMjAwCgogICAgRml4IERQUkFNIG1lbW9yeSBsZWFrIHdoZW4gQ0ZHX0FMTE9DX0RQUkFNIGlzIGRlZmluZWQsIHdoaWNoCiAgICBldmVudHVhbGx5IGxlYWRzIHRvIGEgbWFjaGluZSBjaGVjay4gVGhpcyBjaGFuZ2UgYXNzdXJlcyB0aGF0IERQUkFNCiAgICBpcyBhbGxvY2F0ZWQgb25seSBvbmNlIGluIHRoYXQgY2FzZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHYXJ5IEplbm5lam9obiA8Z2FyeWpAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYTA3ZmFmN2I5YWQ1YTg2NzYzYTU3N2M3OTkyMmM0ZmY5YTcwZWYyMwpBdXRob3I6IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnRwQGNzZS1zZW1hcGhvcmUuY29tPgpEYXRlOglXZWQgU2VwIDE3IDE3OjU3OjM0IDIwMDggKzAyMDAKCiAgICBGaXggU3BhcnRhbi0zIGRlZmluaXRpb25zLgoKICAgIEEgZmV3IFNwYXJ0YW4tMyBkZWZpbml0aW9ucyBlcnJvbmVvdXNseSB1c2UgU3BhcnRhbi0zRSBzaXplCiAgICBjb25zdGFudHMuIFRoaXMgcGF0Y2ggZml4ZXMgdGhlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50cEBjc2Utc2VtYXBob3JlLmNvbT4KCmNvbW1pdCAyODExM2UxZjBkYTQxNDZiODIzZmZjZTM3NjgwZDMxZDU2ODVhNjBiCkF1dGhvcjogTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudHBAY3NlLXNlbWFwaG9yZS5jb20+CkRhdGU6CVdlZCBTZXAgMTcgMTc6NDE6NTggMjAwOCArMDIwMAoKICAgIFJlbW92ZSBkdXBsaWNhdGUgU3BhcnRhbi0zRSBkZWZpbml0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnRwQGNzZS1zZW1hcGhvcmUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1YzY1ZWNmN2NkOTRkZjI1MGIyOTU2MjFmM2IyNDEzNWNiY2ZlNTc5CkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglXZWQgU2VwIDE3IDEzOjQ2OjE3IDIwMDggKzAyMDAKCiAgICBzb2NyYXRlczogY2hhbmdlIGRlZmF1bHQgbXRlc3QgYWRkcmVzcyByYW5nZQoKICAgIFJ1bm5pbmcgbXRlc3QgY29tbWFuZCBvbiBzb2NyYXRlcyB3aXRob3V0IHNwZWNpZnlpbmcKICAgIGFuIGFkZHJlc3MgcmFuZ2UgY3Jhc2hlcyB0aGUgYm9hcmQuIFRoaXMgcGF0Y2ggY2hhbmdlcwogICAgZGVmYXVsdCBtdGVzdCBhZGRyZXNzIHJhbmdlIHRvIHByZXZlbnQgdGhpcyBiZWhhdmlvci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgZDY2NmIyZDU5Njc0YjVlMDAyYzA4MjFiN2FiODNlYzNmZjkwZDY3MApBdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KRGF0ZToJV2VkIFNlcCAxNyAxMjozNDo0NSAyMDA4ICswMjAwCgogICAgc29jcmF0ZXM6IGZpeCBjcmFzaCBhZnRlciByZWxvY2F0aW9uCgogICAgQ3VycmVudGx5IFUtQm9vdCBjcmFzaGVzIGFmdGVyIHJlbG9jYXRpb24gdG8gUkFNLgogICAgQ2hhbmdpbmcgdGhlIENQTyB2YWx1ZSBvZiB0aGUgRERSIFNEUkFNIFRJTUlOR19DRkdfMgogICAgcmVnaXN0ZXIgdG8gUkVBRF9MQVQgKyAxICh0byB0aGUgdmFsdWUgaXQgd2FzIGJlZm9yZQogICAgY29udmVyc2lvbiBvZiBzb2NyYXRlcyB0byBuZXcgRERSIGNvZGUpIGZpeGVzIHRoZQogICAgcHJvYmxlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgNTYyNzg4YjBhMzAzZjM1MjhiOTIwZDgxZjU0N2Y1Y2E3N2JhNTI4ZQpBdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KRGF0ZToJV2VkIFNlcCAxNyAxMTo0NTo1MSAyMDA4ICswMjAwCgogICAgc29jcmF0ZXM6IGZpeCBTUEQgRUVQUk9NIGFkZHJlc3MKCiAgICBDb21taXQgYmUwYmQ4MjM0Yjk3NzdlY2Q2M2M0YzY4NmY3MmFmMDcwZDg4NjUxNwogICAgY2hhbmdlZCBTUEQgRUVQUk9NIGFkZHJlc3MgdG8gMHg1MSBhbmQgRERSIFNEUkFNCiAgICBkZXRlY3Rpb24gc3RvcHBlZCB3b3JraW5nLiBDaGFuZ2UgdGhpcyBhZGRyZXNzCiAgICBiYWNrIHRvIDB4NTAuCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IDAyMzgyNDU0OWEzNzBiZDE4NWQ3MTI5ZDlhNmM4NmY5YmU3Yjg2YTgKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBTZXAgMjIgMTE6MDY6NTAgMjAwOCArMDIwMAoKICAgIFJldmVydCAicHBjNHh4OiBGaXggRERSMiBhdXRvIGNhbGlicmF0aW9uIG9uIEtpbGF1ZWEgNjAwTUh6ICgyMDBNSHogUExCKSIKCiAgICBUaGlzIHJldmVydHMgY29tbWl0IDNlZWMxNjBhM2E0MDViMjljZTljMDY5MjBmNjQyN2I5MDQ3ZGQ4YTguCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGU1OGM0MWUyNmNmM2M4YWNjZDYwMzExYmU1NzlmNDUyZTM2OGU5N2UKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVRodSBTZXAgMTggMjA6MTM6MDggMjAwOCArMDkwMAoKICAgIHVzYjogRml4IGNvbXBpbGUgd2FybmluZyBvZiByOGE2NjU5Ny1oY2QKCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgoKY29tbWl0IGI1ZDEwYTEzNTI1YzA3ZWM2Mzc0YWRmODQwZDdjODc1NTNiNWYxODkKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVRodSBTZXAgMTggMTk6MzQ6MzYgMjAwOCArMDkwMAoKICAgIHNoOiBGaXggY29tcGlsZSB3YXJuaW5nCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDRhMDY1YWJmOTI2ZjEyOGJlYjM2ZDkzNDQ5ZGVmYTBkNjkwZTdmZWYKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVRodSBTZXAgMTggMTk6MDQ6MjYgMjAwOCArMDkwMAoKICAgIHNoOiBBZGQgc3VwcG9ydCB3YXRjaGRvZyBmb3IgU0g0QSBjb3JlCgogICAgQWRkIHN1cHBvcnQgd2F0Y2hkb2cgZm9yIFNINEEgY29yZSAoU0g3NzYzLCBTSDc3ODAgYW5kIFNINzc4NSkuCiAgICBBbmQgZml4IHNvbWUgY29tcGlsZSB3YXJuaW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBhMDNjMDljNWZkYjg0MzBmZTJhZTZhMDNmODhhMGNmN2JjYzBhYTU3CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglXZWQgU2VwIDE3IDExOjQ1OjI2IDIwMDggKzA5MDAKCiAgICBzaDogRml4IHR5cG8gaW4gU0ggc2VyaWFsIGRyaXZlcgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCA2YjQ0YTQzOTIxNWJhN2M2M2Y2NjZmODA5OTIxM2VhNGYwNWYyYjA3CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglXZWQgU2VwIDE3IDExOjA4OjM2IDIwMDggKzA5MDAKCiAgICBzaDogQWRkIHN1cHBvcnQgYW55IHBhZ2Ugc2l6ZSBhbmQgZW1wdHlfemVyb19wYWdlIHRvIFNIIExpbnV4IHVJbWFnZQoKICAgIE9sZCBVLUJvb3Qgc3VwcG9ydGVkIDRLQiBwYWdlIHNpemUgb25seS4gSWYgdGhpcyB2ZXJzaW9uLCBMaW51eAogICAga2VybmVsIGNhbiBub3QgZ2V0IGNvbW1hbmQgbGluZSBmcm9tIFUtQm9vdC4KICAgIFNIIExpbnV4IGtlcm5lbCBjYW4gY2hhbmdlIHBhZ2Ugc2l6ZSBhbmQgZW1wdHlfemVyb19wYWdlLgogICAgVGhpcyBwYXRjaCBzdXBwb3J0IHRoaXMgZnVuY3Rpb24gYW5kIGZpeCBwcm9tbGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBjZTlmOTlkZGI1OTYyOGY0MWRjNTM0ZTg5MjM2OGE3ZDY2ZGZjNzc0CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgpEYXRlOglUaHUgQXVnIDI4IDEzOjQwOjUyIDIwMDggKzA5MDAKCiAgICBzaDogcnNrNzIwMzogQWRkIHN1cHBvcnQgcGt0X2RhdGFfcHVsbCBhbmQgcGt0X2RhdGFfcHVzaCBmdW5jdGlvbgoKICAgIEFkZCBmdW5jdGlvbiBvZiBzbWM5MTF4LCBwa3RfZGF0YV9wdWxsIGFuZCBwa3RfZGF0YV9wdXNoLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBkZDgyMGIwM2EyZjQ1ZTg2ZTc5NjBlMjY3MjlhM2I1OGUzZGRhNDRhCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IFNlcCAxOCAxMzo1NzozMiAyMDA4ICswMjAwCgogICAgQURTNTEyMTogZml4IHR5cG8gaW4gInJvb3RwYXRoIiBkZWZhdWx0IHNldHRpbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGM5ZTg0MzZiMTBjY2E1M2ZjYTQ5MDRlY2JhZGNkNjIzMWFkNzJjMzgKQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KRGF0ZToJVHVlIFNlcCAxNiAxNDo1NTo0NCAyMDA4ICswMjAwCgogICAgVVNCIGxheWVyIG9mIFUtQm9vdCBjYXVzZXMgVVNCIHByb3RvY29sIGVycm9ycyB3aGlsZSB1c2luZyBVU0IgbWVtb3J5IHN0aWNrcwoKICAgIFRoZXJlIGFyZSBzZXZlcmFsIGRpZmZlcmVuY2VzIGJldHdlZW4gTGludXgsIFdpbmRvd3MgYW5kIFUtYm9vdCBmb3IgaW5pdGlhbGlzaW5nIHRoZQogICAgVVNCIGRldmljZXMuIFdoaWxlIGFuYWx5c2luZyB0aGUgYmVoYXZpb3VyIG9mIFUtYm9vdCBpdCB0dXJuZWQgb3V0IHRoYXQgVS1ib290IGRvZXMKICAgIHRoaW5ncyByZWFsbHkgZGlmZmVyZW50LCBhbmQgc29tZSBhcmUgd3JvbmcgKGNvbXBhcmVkIHRvIHRoZSBVU0Igc3RhbmRhcmQpLgoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgc29tZSBlcnJvcnM6CiAgICAqIFRoZSBORVdfaW5pdCBwcm9jZWR1cmUgdGhhdCB3YXMgYWxyZWFkeSBpbiB0aGUgY29kZSBpcyBnb29kLCB3aGlsZSB0aGUgb2xkIHByb2NlZHVyZQogICAgICBpcyB3cm9uZy4gU2VlIGNvZGUgY29tbWVudHMgZm9yIG1vcmUgaW5mby4KICAgICogT24gYSBDb250cm9sIHJlcXVlc3QgdGhlIGRhdGEgcmV0dXJuZWQgYnkgdGhlIGRldmljZSBjYW4gYmUgbW9yZSB0aGFuIDggYnl0ZXMsIHdoaWxlCiAgICAgIHRoZSBob3N0IGxpbWl0cyBpdCB0byA4IGJ5dGVzLiBUaGlzIGNhdXNlZCB0aGUgaG9zdCB0byBnZW5lcmF0ZSBhIERhdGFPdmVycnVuIGVycm9yLgogICAgICBUaGlzIHJlc3VsdHMgaW4gYSBsb3Qgb2YgVVNCIHN0aWNrcyBub3QgYmVpbmcgcmVjb2duaXNlZCwgYW5kIHRoZSB0cmFuc21pc3Npb24gZW5kZWQKICAgICAgZnJlcXVlbnRseSB3aXRoIGEgQ1RMOlRJTUVPVVQgRXJyb3IuCiAgICAqIEFkZGVkIGEgZmxhZyBDT05GSUdfTEVHQUNZX1VTQl9JTklUX1NFUSB0byBhbGxvdyB1c2VycyB0byB1c2UgdGhlIG9sZCBpbml0IHByb2NlZHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgNmY1Nzk0YTZmNzhiMzEzMjMxMjU2OTU4ZmQ3MzY3M2M2YWFjYzExNgpBdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgpEYXRlOglUdWUgU2VwIDE2IDE0OjU1OjQzIDIwMDggKzAyMDAKCiAgICBSZWZhY3RvcmluZyBwYXJ0cyBvZiB0aGUgY29tbW9uIFVTQiBPSENJIGNvZGUKCiAgICBUaGlzIHBhdGNoIHJlZmFjdG9ycyBzb21lIGxhcmdlIHJvdXRpbmVzIG9mIHRoZSBVU0IgT0hDSSBjb2RlIGJ5CiAgICBtYWtpbmcgc29tZSByb3V0aW5lcyBzbWFsbGVyIGFuZCBtb3JlIHJlYWRhYmxlIHdoaWNoIGhlbHBzCiAgICBkZWJ1Z2dpbmcgYW5kIHVuZGVyc3RhbmRpbmcgdGhlIGNvZGUuIChNYWtlcyB0aGUgY29kZSBsb29rcwogICAgc29tZXdoYXQgbW9yZSBsaWtlIHRoZSBMaW51eCBpbXBsZW1lbnRhdGlvbi4pCgogICAgQWxzbyBtYWRlIGVudGlyZSBmaWxlIGNvbXBsaWFudCB0byBMaW51eCBDb2RpbmcgUnVsZXMgKGNoZWNrcGF0Y2gucGwgY29tcGxpYW50KQoKICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgogICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KCmNvbW1pdCBiZTE5ZDMyNGVkYzFhMWQ3ZjM5M2QyNGUxMGQxNjRjZDk0YzkxYTAwCkF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CkRhdGU6CVR1ZSBTZXAgMTYgMTQ6NTU6NDIgMjAwOCArMDIwMAoKICAgIEZpeCBmb3IgVVNCIHN0aWNrcyBub3Qgd29ya2luZyBvbiBBUk0gd2hpbGUgdXNpbmcgR0NDIDQueCBjb21waWxlcnMKCiAgICBUaGUgR0NDLWNvbXBpbGVyIG1ha2VzIGFuIG9wdGltaXNhdGlvbiBlcnJvciB3aGlsZSBvcHRpbWlzaW5nIHRoZSByb3V0aW5lCiAgICB1c2Jfc2V0X21heHBhY2tldCgpLiBUaGlzIHNob3VsZCBiZSBmaXhlZCBpbiB0aGUgY29tcGlsZXIgaW4gdGhlIGZpcnN0IHBsYWNlLAogICAgYnV0IHRoZXJlIGxvdHMgb2YgY29tcGlsZXJzIG91dCB0aGVyZSB0aGF0IG1ha2VzIHRoaXMgZXJyb3IsIHRoYXQgaXQgaXMKICAgIHByb2JhYmx5IHdpc2VyIHRvIHdvcmthcm91bmQgaXQgaW4gVS1ib290IGl0c2VsZi4KCiAgICBXaGF0IGhhcHBlbnMgaXMgdGhhdCB0aGUgcmVnaXN0ZXIgcjMgaXMgdXNlZCBhcyBsb29wLWNvdW50ZXIgJ2knLCBidXQgZ2V0cwogICAgb3ZlcndyaXR0ZW4gbGF0ZXIgb24uIEZyb20gdGhlcmUgaXQgc3RhcnRzIHVzaW5nIHJlZ2lzdGVyIHIzIGZvciBzZXZlcmFsIG90aGVyCiAgICB0aGluZ3MgYW5kIHRoZSBhc3NlbWJsZXIgY29kZSBpcyBiZWNvbWluZyBhIGJpZyBtZXNzLiBUaGlzIGlzIGNsZWFybHkgYSBjb21waWxlciBidWcuCgogICAgVGhpcyBlcnJvciBvY2N1cnMgb24gYXQgbGVhc3Qgc2V2ZXJhbCB2ZXJzaW9ucyBvZiBDb2RlIFNvdXJjZXJ5IExpdGUgY29tcGlsZXJzCiAgICBmb3IgQVJNLiBMaWtlIHRoZSBFZGl0aW9uIDIwMDhxMSwgYW5kIDIwMDhxMywgSXQgaGFzIGFsc28gYmVlbiBzZWVuIG9uIG90aGVyCiAgICBjb21waWxlcnMsIHdoaWxlIGNvbXBpbGluZyBmb3IgYXJtdjR0LCBvciBhcm12NXRlIHdpdGggT3MsIE8xIGFuZCBPMi4KCiAgICBXZSB3b3JrIGFyb3VuZCBpdCBieSBzcGxpdHRpbmcgdXAgdGhpcyByb3V0aW5lIGluIDIgcGFydHMsIGFuZCBtYWtpbmcgc3VyZSB0aGF0CiAgICB0aGUgc3BsaXQgb3V0IHBhcnQgaXMgTk9UIGlubGluZWQgYW55IGxvbmdlci4gVGhpcyB3aWxsIG1ha2UgR0NDIHNwaXQgb3V0IGFzc2VtYmxlcgogICAgdGhhdCBkbyBub3Qgc2hvdyB0aGlzIHByb2JsZW0uIEFub3RoZXIgcG9zc2liaWxpdHkgaXMgdG8gYWRhcHQgdGhlIE1ha2VmaWxlIHRvIHN0b3AKICAgIG9wdGltaXNhdGlvbiBmb3IgdGhlIGNvbXBsZXRlIGZpbGUuIEkgdGhpbmsgdGhpcyBzb2x1dGlvbiBpcyBuaWNlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgODdiNGVmNTYwY2YyZGE0Y2NjOWU1OTcxMWFkMWZmN2ZhZmU5NjY3MApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBTZXAgMTcgMTA6MTc6NTUgMjAwOCArMDIwMAoKICAgIENvZGluZyBzdHlsZSBjbGVhbnVwOyB1cGRhdGUgQ0hBTkVHTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAzZWVjMTYwYTNhNDA1YjI5Y2U5YzA2OTIwZjY0MjdiOTA0N2RkOGE4CkF1dGhvcjogVmljdG9yIEdhbGxhcmRvIDx2Z2FsbGFyZG9AYW1jYy5jb20+CkRhdGU6CVR1ZSBTZXAgMTYgMDY6NTk6MTMgMjAwOCAtMDcwMAoKICAgIHBwYzR4eDogRml4IEREUjIgYXV0byBjYWxpYnJhdGlvbiBvbiBLaWxhdWVhIDYwME1IeiAoMjAwTUh6IFBMQikKCiAgICBTaWduZWQtb2ZmLWJ5OiBWaWN0b3IgR2FsbGFyZG8gPHZnYWxsYXJkb0BhbWNjLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFkYW0gR3JhaGFtIDxhZ3JhaGFtQGFtY2MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGNlNDdlYjQwMmM1ZTI5YTAyNTM5OWRjMjgyMjQ2NDE0ZmM0OTI5NDAKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglUdWUgU2VwIDE2IDEwOjA0OjQ3IDIwMDggLTA1MDAKCiAgICBTdXBwb3J0IGZvciBtdWx0aXBsZSBTR01JSS9UQkkgaW50ZXJmYWNlcyBmb3IgVFNFQyBldGhlcm5ldAoKICAgIEZpeCBUQkkgUEhZIGFjY2Vzc2VzIHRvIHVzZSB0aGUgcHJvcGVyIG9mZnNldCBpbiBDUFUgcmVnaXN0ZXIgc3BhY2UuIFRoZQogICAgcHJldmlvdXMgY29kZSB3b3VsZCBpbmNvcnJlY3RseSBhY2Nlc3MgdGhlIFRCSSBQSFkgYnkgcmVhZGluZy93cml0aW5nIHRvIENQVQogICAgcmVnaXN0ZXIgc3BhY2UgYXQgdGhlIHNhbWUgbG9jYXRpb24gYXMgd291bGQgYmUgdXNlZCB0byBhY2Nlc3MgZXh0ZXJuYWwgUEhZcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3YzgwM2JlMmViM2NhZTI0NWRlZGRhNDM4Nzc2ZTA4ZmIxMjIyNTBmCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIFNlcCAxNiAxODowMjoxOSAyMDA4ICswMjAwCgogICAgVFFNOHh4OiBGaXggQ0ZJIGZsYXNoIGRyaXZlciBzdXBwb3J0IGZvciBhbGwgVFFNOHh4IGJhc2VkIGJvYXJkcwoKICAgIEFmdGVyIHN3aXRjaGluZyB0byB1c2luZyB0aGUgQ0ZJIGZsYXNoIGRyaXZlciwgdGhlIGNvcnJlY3QgcmVtYXBwaW5nCiAgICBvZiB0aGUgZmxhc2ggYmFua3Mgd2FzIGZvcmdvdHRlbi4KCiAgICBBbHNvLCBzb21lIGJvYXJkcyB3ZXJlIG5vdCBhZGFwdGVkLCBhbmQgdGhlIG9sZCBsZWdhY3kgZmxhc2ggZHJpdmVyCiAgICB3YXMgbm90IHJlbW92ZWQgeWV0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYzBkMmY4N2Q2YzQ1MDEyOGI4OGU3M2VlYTcxNWZhMzY1NGY2NWI2YwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBTZXAgMTQgMDA6NTk6MzUgMjAwOCArMDIwMAoKICAgIFByZXBhcmUgdjIwMDguMTAtcmMyCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBmMTJlNDU0OWI2ZmIwMWNkMjY1NDM0OGFmOTVhM2M3YTZhYzE2MWU3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IFNlcCAxMyAwMjoyMzowNSAyMDA4ICswMjAwCgogICAgQ29kaW5nIHN0eWxlIGNsZWFudXAsIHVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDBjMzI1NjVmNTM2NjA5ZDc4ZmVlZjM1Yzg4YmJjMzlkM2FjNTNhNzMKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglXZWQgU2VwIDEwIDA5OjE4OjM0IDIwMDggLTA1MDAKCiAgICBVcGRhdGUgbWFpbGluZyBsaXN0IGVtYWlsIGFuZCBhcmNoaXZlIGFkZHJlc3NlcwoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgZmI2NjFlYTQ0NGFlNjFkZTYwNTIwZjY2YWU4NGNkYjVkZDVhMzI0NgpBdXRob3I6IHUtYm9vdEBidWdzLmRlbnguZGUgPHUtYm9vdEBidWdzLmRlbnguZGU+CkRhdGU6CVRodSBTZXAgMTEgMTU6NDA6MDEgMjAwOCArMDIwMAoKICAgIDg1eHg6IHNvY3JhdGVzOiBhdXRvcHJvYmUgTGltZSBjaGlwCgogICAgVGhpcyBwYXRjaCBpcyBhbiBhdHRlbXB0IHRvIGltcGxlbWVudCBhdXRvcHJvYmluZyBmb3IgdGhlIExpbWUKICAgIHByZXNlbmNlIG9uIHRoZSBidXMuCiAgICBDb25maWd1cmUgR1BDTSBmb3IgTGltZSBDUzIgYW5kIHRyeSB0byBhY2Nlc3MgY2hpcCBJRCByZWdpc3RlcnMuCiAgICBTZWNvbmQgcmVhZCBhdGVtcHQgZGVsaXZlcnMgcmVnaXN0ZXIgdmFsdWVzIGlmIHRoZSBjaGlwIGlzIHByZXNlbnQuCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IGU5OWI2MDdhNWVjNTZjZTY2ZTBiY2NjYjc4NDgwZDVlMTZmYjdiYzUKQXV0aG9yOiB1LWJvb3RAYnVncy5kZW54LmRlIDx1LWJvb3RAYnVncy5kZW54LmRlPgpEYXRlOglUaHUgU2VwIDExIDE1OjQwOjAxIDIwMDggKzAyMDAKCiAgICA4NXh4OiBzb2NyYXRlczogQWRkIHN1cHBvcnQgZm9yIG5ldyBpbWFnZSBmb3JtYXQuCgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgM2MwOTRiNjUyZDQxMDdiMzQ2NDFmMzAwYThlOWZlMTZjYTE1ZTNkOApBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJVGh1IFNlcCAxMSAxNzoyODoxOCAyMDA4ICswOTAwCgogICAgc2g6IEZpeCBjb21waWxlIGVycm9yIGZvciByMmRwbHVzCgogICAgbmV0ZGV2Lmggd2FzIG5vdCBpbmNsdWRlIGJ5IHIyZHBsdXMuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgoKY29tbWl0IDU2ODQ0YTIyYjc2YzcxOWU2MDAwNDdlMjNiODA0NjVhNDRkNzZhYmQKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVGh1IFNlcCAxMSAwODoxMToyMyAyMDA4ICswMjAwCgogICAgcG93ZXJwYzogRml4IGJvb3RtIHRvIGJvb3QgdXAgYWdhaW4gd2l0aCBhIFJhbWRpc2sKCiAgICBDb21taXQgMmExYTJjYjYgZGlkbnQgcmVtb3ZlIHRoZSBkdW1teSBtZW0gcmVzZXJ2YXRpb24gaW4gZmR0X2Nob3NlbiwKICAgIGFuZCB0aGlzIHN0b3BwZWQgTGludXggZnJvbSBib290aW5nIHdpdGggYSBSYW1kaXNrLiBUaGlzIHBhdGNoIGZpeGVzCiAgICB0aGlzLCBieSBkZWxldGluZyB0aGUgdXNlbGVzcyBkdW1teSBtZW0gcmVzZXJ2YXRpb24uCgogICAgV2hlbiBib290aW5nIHdpdGggYSBSYW1kaXNrLCBhIGZpeCBvZmZzZXQgRkRUX1JBTURJU0tfT1ZFUkhFQUQgaXMgbm93CiAgICBhZGRlZCB0byBvZl9zaXplLCBzbyB3ZSBkb250IG5lZWQgYW55bW9yZSBhIGR1bW15IG1lbSByZXNlcnZhdGlvbi4KCiAgICBJIG1lYXN1cmVkIHRoZSB2YWx1ZSBvZiBGRFRfUkFNRElTS19PVkVSSEVBRCBvbiBhIE1QQzgyNzAgYmFzZWQKICAgIHN5c3RlbSAoPTB4NDQgYnl0ZXMpIGFuZCByb3VuZGVkIGl0IHVwIHRvIDB4ODApLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgogICAgQWNrZWQtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZmM5YzE3MjdiNWIzNDgzY2U0OWMzY2I2NjhlODMzMmZiMDAxYjhhNwpBdXRob3I6IEx1aWdpICdDb21pbycgTWFudGVsbGluaSA8bHVpZ2kubWFudGVsbGluaUBpZGYtaGl0LmNvbT4KRGF0ZToJTW9uIFNlcCA4IDAyOjQ2OjEzIDIwMDggKzAyMDAKCiAgICBBZGQgc3VwcG9ydCBmb3IgTFpNQSB1bmNvbXByZXNzaW9uIGFsZ29yaXRobS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMdWlnaSAnQ29taW8nIE1hbnRlbGxpbmkgPGx1aWdpLm1hbnRlbGxpbmlAaWRmLWhpdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDAwMDhiNmQ5NjgxNjBhYmUyYmZkOTM2NDkzZjNhNTE2YTdjOGRhMjAKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJRnJpIEp1biAyNyAyMzowNDoyMCAyMDA4ICswNDAwCgogICAgZnNsX2VsYmNfbmFuZDogZWNjbGF5b3V0IGNsZWFudXBzCgogICAgVGhpcyBwYXRjaCBkZWxldGVzIG9vYmF2YWlsIGFzc2lnbm1lbnRzLCB0aGV5J3JlIGNhbGN1bGF0ZWQgYnkgdGhlIG5hbmQKICAgIGNvcmUgY29kZSBpbiBuYW5kX3NjYW5fdGFpbCwgcGx1cyBjdXJyZW50IG9vYmF2YWlsIHZhbHVlcyBhcmUgd3JvbmcgZm9yCiAgICB0aGUgTFAgTkFORHMuCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBXb29kaG91c2UgPERhdmlkLldvb2Rob3VzZUBpbnRlbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4ZjQyYmYxYzM5M2Q1M2E3MGMyNTQ1ZTlmMzI5ZDExYzQ2ZDc0Nzk0CkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CUZyaSBKdW4gMjcgMjM6MDQ6MTMgMjAwOCArMDQwMAoKICAgIGZzbF9lbGJjX25hbmQ6IGltcGxlbWVudCBzdXBwb3J0IGZvciBmbGFzaC1iYXNlZCBCQlQKCiAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgZmxhc2gtYmFzZWQgQkJUIGZvciBjaGlwcyB3b3JraW5nCiAgICB0aHJvdWdoIEVMQkMgTkFORCBjb250cm9sbGVyLCBzbyB0aGF0IE5BTkQgY29yZSB3aWxsIG5vdCBoYXZlIHRvIHJlLXNjYW4KICAgIGZvciBiYWQgYmxvY2tzIG9uIGV2ZXJ5IGJvb3QuCgogICAgQmVjYXVzZSBFTEJDIGNvbnRyb2xsZXIgbWF5IHByb3ZpZGUgSFctZ2VuZXJhdGVkIEVDQ3Mgd2Ugc2hvdWxkIGFkanVzdAogICAgYmJ0IHBhdHRlcm4gYW5kIGJidCB2ZXJzaW9uIHBvc2l0aW9ucyBpbiB0aGUgT09CIGZyZWUgYXJlYS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIFdvb2Rob3VzZSA8RGF2aWQuV29vZGhvdXNlQGludGVsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk3YWUwMjM2NDhlNzY0Zjc5NGZmYjljNTJkYTEwOWQ2Y2FmMDljNDcKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJRnJpIEp1biAyNyAyMzowNDowNCAyMDA4ICswNDAwCgogICAgZnNsX2VsYmNfbmFuZDogZml4IE9PQiB3b3JrYWJpbGl0eSBmb3IgbGFyZ2UgcGFnZSBOQU5EIGNoaXBzCgogICAgRm9yIGxhcmdlIHBhZ2UgY2hpcHMsIG5hbmRfYmJ0IGlzIGxvb2tpbmcgaW50byBPT0IgYXJlYSwgYW5kIGNoZWNraW5nCiAgICBmb3IgIjB4ZmYgMHhmZiIgcGF0dGVybiBhdCBPT0Igb2Zmc2V0IDAuIFRoYXQgaXMsIHR3byBieXRlcyBzaG91bGQgYmUKICAgIHJlc2VydmVkIGZvciBiYnQgbWVhbnMuCgogICAgQnV0IEVMQkMgZHJpdmVyIGlzIHNwZWNpZnlpbmcgZWNjbGF5b3V0IHNvIHRoYXQgb29iZnJlZSBhcmVhIHN0YXJ0cyBhdAogICAgb2Zmc2V0IDEsIHNvIG9ubHkgb25lIGJ5dGUgbGVmdCBmb3IgdGhlIGJidCBwdXJwb3Nlcy4KCiAgICBUaGlzIGNhdXNlcyBwcm9ibGVtcyB3aXRoIGFueSBPT0IgdXNlcnMsIG5hbWVseSBKRkZTMjogYWZ0ZXIgZmlyc3QgbW91bnQKICAgIEpGRlMyIHdpbGwgZmlsbCBhbGwgT09CcyB3aXRoICJlcmFzZWQgbWFya2VyIiwgc28gT09CcyB3aWxsIGNvbnRhaW46CgogICAgICBPT0IgRGF0YTogZmYgMTkgODUgMjAgMDMgMDAgZmYgZmYgZmYgMDAgMDAgMDggZmYgZmYgZmYgZmYKICAgICAgT09CIERhdGE6IGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmCiAgICAgIE9PQiBEYXRhOiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZgogICAgICBPT0IgRGF0YTogZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYKCiAgICBBbmQgb24gdGhlIG5leHQgYm9vdCwgTkFORCBjb3JlIHdpbGwgcmVzY2FuIGZvciBiYWQgYmxvY2tzLCB0aGVuIHdpbGwKICAgIHNlZSAiMHhmZiAweDE5IiBwYXR0ZXJuLCBhbmQgd2lsbCBtYXJrIGFsbCBibG9ja3MgYXMgYmFkIG9uZXMuCgogICAgVG8gZml4IHRoZSBpc3N1ZSB3ZSBzaG91bGQgaW1wbGVtZW50IG91ciBvd24gYmFkIGJsb2NrIHBhdHRlcm46IGp1c3Qgb25lCiAgICBieXRlIGF0IE9PQiBzdGFydC4gVGhvdWdoLCB0aGlzIHdpbGwgd29yayBvbmx5IGZvciB4OCBjaGlwcy4gRm9yIHgxNgogICAgY2hpcHMgdHdvIGJ5dGVzIG11c3QgYmUgY2hlY2tlZC4gU2luY2UgRUxCQyBkcml2ZXIgZG9lcyBub3Qgc3VwcG9ydCB4MTYKICAgIE5BTkRzICh5ZXQpLCB3ZSdyZSBzYWZlIGZvciBub3cuCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBXb29kaG91c2UgPERhdmlkLldvb2Rob3VzZUBpbnRlbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3MjM4YWRhMzEzMDU3YTg1NDA5NDg1YjhlZTIxNTE1ZGMxMGMwN2E1CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIFNlcCAxMiAxMzo1MjoyMSAyMDA4ICswMjAwCgogICAgTVBDNTEyeDogcmVkdWNlIHRpbWVvdXQgd2FpdGluZyBmb3IgRXRoZXJuZXQgYXV0b25lZ290aWF0aW9uIHRvIDIuNXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGIxODQxMGU1MDhhMTJiYTBhMTc3ZGZjMmEzODY4NTdjODA2ZmE5NmQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBTZXAgMTEgMTM6MDU6NTYgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRW5hYmxlIGRldmljZSB0cmVlIChGRFQpIHN1cHBvcnQgaW4gemV1cyBib2FyZCBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDdiZjVlY2ZhNTA3MjJhOWZlYjQ1ZWE4ZjA0ZGE3NWY1ZDQwNmYyMGIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBTZXAgMTAgMTY6NTM6NDcgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRml4IFNEUkFNIGluaXRpdGlhbGl6YXRpb24gb2YgbXVsdGlwbGUgNDA1IGJhc2VkIGJvYXJkIHBvcnRzCgogICAgVGhpcyBwYXRjaCBmaXhlcyBhIHByb2JsZW0gaW50cm9kaWNlZCB3aXRoIHBhdGNoCiAgICBiYmVmZjMwYyBbcHBjNHh4OiBSZW1vdmUgc3VwZXJmbHVvdXMgZHJhbV9pbml0KCkgY2FsbCBvciByZXBsYWNlIGl0IGJ5CiAgICBpbml0ZHJhbSgpXS4KCiAgICBUaGUgYm9hcmRzIGFmZmVjdGVkIGFyZToKICAgIC0gUENJNDA1CiAgICAtIFBQQ2hhbWVsZW9uRVZCCiAgICAtIHF1YWQxMDBoZAogICAgLSB0YWlodQogICAgLSB6ZXVzCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDYxNzM3YzU5YTMyODVmNmZhZGY5NmE1ODM2ODc5ODk4YzA0ZWMyOGQKQXV0aG9yOiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KRGF0ZToJVGh1IFNlcCAxMSAxOTo0MToyNiAyMDA4IC0wNDAwCgogICAgcHBjNHh4OiBBZGQgLmdpdGlnbm9yZSBmaWxlIHRvIHhpbGlueC1wcGM0NDAgYm9hcmRzCgogICAgU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMmJlYzQ5OGVkMTE2NGE1OGNkODQzN2I1NjFiZGM0NTUxZDY5ZjliZgpBdXRob3I6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgpEYXRlOglUaHUgU2VwIDExIDE5OjQxOjI1IDIwMDggLTA0MDAKCiAgICBwcGM0eHg6IEZpeCBjb21waWxhdGlvbiBvZiB2NWZ4MzB0ZXZhbF9mbGFzaAoKICAgIFNpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDRiZWQ5ZGVlYmJkN2VlNmYwYmE3NDZiNDRkNDdhOTIyMTU2Zjc0MDQKQXV0aG9yOiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KRGF0ZToJV2VkIFNlcCAxMCAxNzo0NDozMCAyMDA4IC0wNDAwCgogICAgcHBjNHh4OiBGaXggaW4tdHJlZSBidWlsZCBmb3IgcHBjNDQwLWdlbmVyaWMgYm9hcmRzCgogICAgU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDZjNGFiNTBmNWNjZmI1NWVhMmRkMzI0YWEyOGIyYjA2MTAyZTQxNgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBTZXAgMTIgMDI6MjA6NDcgMjAwOCArMDIwMAoKICAgIEFSTTogc3luY2hyb25pemUgbWFjaC10eXBlcy5oIHdpdGggbGludXggMi42LjI3LXJjNgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgM2VlOWYwM2Y1ODhhZDYwNWUzZmQxMDUzMDIzN2Y5ZTNlMmU3YWI0YwpBdXRob3I6IEplbnMgU2NoYXJzaWcgPGVzd0BidXMtZWxla3Ryb25pay5kZT4KRGF0ZToJRnJpIFNlcCAxMiAwMjoyMDo0NyAyMDA4ICswMjAwCgogICAgYXQ5MXJtOTIwMDogZml4IGVycm9ycyB3aXRoIENPTkZJR19DTURfSTJDX1RSRUUKCiAgICBUaGlzIHBhdGNoIHByZXZlbnRzIGxpbmtlciBlcnJvciBvbiBBVDkxUk05MjAwIGJvYXJkcywgaWYKICAgIENPTkZJR19DTURfSTJfVFJFRSBpcyBzZXQuCiAgICBJdCBpbXBsZW1lbnRzIGkyY19zZXRfYnVzX3NwZWVkIGFuZCBpMmNfZ2V0X2J1c19zcGVlZCBhcyBhIGR1bW15IGZ1bmN0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEplbnMgU2NoYXJzaWcgPGVzd0BidXMtZWxla3Ryb25pay5kZT4KCmNvbW1pdCBiNWIwMzQ0OTU3ZDMyZTNkMDdhOGRkNzJmY2U2NGZiNDhlNjgwYmE0CkF1dGhvcjogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+CkRhdGU6CUZyaSBTZXAgMTIgMDI6MjA6NDcgMjAwOCArMDIwMAoKICAgIEFSTSBEYVZpbmNpOiBSZW1vdmUgZHVwbGljYXRlIGNvZGUgaW4gY3B1L2FybTkyNmVqcy9kYXZpbmNpL2RwODM4NDguYwoKICAgIEFSTSBEYVZpbmNpOiBSZW1vdmUgZHVwbGljYXRlIGNvZGUgaW4gY3B1L2FybTkyNmVqcy9kYXZpbmNpL2RwODM4NDguYwoKICAgIFNpZ25lZC1vZmYtYnk6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgoKY29tbWl0IDAzZGI1MzMzNWM4ZWJhNjU2YTdjNDRkMTU1NWIxYTQ1MTQzODNlMzMKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglGcmkgU2VwIDEyIDAyOjIwOjQ2IDIwMDggKzAyMDAKCiAgICBtYWtlOiBSZW1vdmUgcmVkdW5kYW50IF9fQVJNX18gYWRkaXRpb24gd2hlbiBjcm9zcy1jb21waWxpbmcgb24gKkJTRAoKICAgIF9fQVJNX18gaXMgZ2l2ZW4gYnkgYXJtX2NvbmZpZy5tayBhdXRvbWF0aWNhbGx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgOGNjNjJhN2Q5Yzc3ZjhlZjUxNjZmYjU3MzIyYzRhNmRkYWMzMjBiNApBdXRob3I6IENsYXVkaW8gU2NvcmRpbm8gPGNsYXVkaW9AZXZpZGVuY2UuZXUuY29tPgpEYXRlOglGcmkgU2VwIDEyIDAyOjIwOjQ2IDIwMDggKzAyMDAKCiAgICBGaXggTUFDSF9UWVBFIGZvciB0aGUgQVQ5MVJNOTIwMERLIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IENsYXVkaW8gU2NvcmRpbm8gPGNsYXVkaW9AZXZpZGVuY2UuZXUuY29tPgoKY29tbWl0IDI3NDczN2U1ZWIyNWIyYmNkM2FmM2E5NmRhOTIzZWZmZDU0MzI4NGYKQXV0aG9yOiBBbmRyZXcgRHllciA8YWR5ZXJAcmlnaHRoYW5kdGVjaC5jb20+CkRhdGU6CUZyaSBTZXAgMTIgMDI6MjA6NDYgMjAwOCArMDIwMAoKICAgIGkubXggY2hhbmdlIGdldF90aW1lcihiYXNlKSB0byByZXR1cm4gdGltZSBzaW5jZSBiYXNlCgogICAgVGhpcyBwYXRjaCBjaGFuZ2VzIGdldF90aW1lcigpIGZvciBpLk1YIHRvIHJldHVybiB0aGUgdGltZSBzaW5jZQogICAgJ2Jhc2UnIGluc3RlYWQgb2YgdGhlIHRpbWUgc2luY2UgdGhlIGNvdW50ZXIgd2FzIGF0IHplcm8uCgogICAgU3ltcHRvbSBzZWVuIGlzIGZsYXNoIHRpbWVvdXQgZXJyb3JzIHdoZW4gZXJhc2luZyBvciBwcm9ncmFtbWluZyBhCiAgICBzZWN0b3IgdXNpbmcgdGhlIGNvbW1vbiBjZmkgZmxhc2ggY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgRHllciA8YWR5ZXJAcmlnaHRoYW5kdGVjaC5jb20+Cgpjb21taXQgNDhmZWQ0MDU3NWIzZThlYWU5NjBlYjAxNDE1MDlkZGQ5YTczMDEyYQpBdXRob3I6IEFuZHJldyBEeWVyIDxhZHllckByaWdodGhhbmR0ZWNoLmNvbT4KRGF0ZToJRnJpIFNlcCAxMiAwMjoyMDo0NiAyMDA4ICswMjAwCgogICAgaS5NWCB1c2UgdS1ib290IGJhdWQgcmF0ZSBhbmQgZG9uJ3QgYXNzdW1lIFVBUlQgbWFzdGVyIGNsb2NrCgogICAgMSkgQ2hhbmdlIHRoZSBpLk1YIHNlcmlhbCBkcml2ZXIgdG8gdXNlIHRoZSBiYXVkIHJhdGUgc2V0IGluIHRoZQogICAgIHUtYm9vdCBlbnZpcm9ubWVudAoKICAgIDIpIGRvbid0IGFzc3VtZSBhIDE2TUh6IHZhbHVlIGZvciBQRVJDTEsxIGluIGJhdWQgcmF0ZSBjYWxjdWxhdGlvbnMKCiAgICAzKSBkb24ndCB3cml0ZSBhIDEgdG8gdGhlIFJEUiBiaXQgaW4gdGhlIFVTUjIgcmVnLiAoYml0IGlzIG5vdCAid3JpdGUKICAgICBvbmUgdG8gY2xlYXIiIGxpa2Ugb3RoZXIgc3RhdHVzIGJpdHMgaW4gdGhlIHJlZy4pCgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IER5ZXIgPGFkeWVyQHJpZ2h0aGFuZHRlY2guY29tPgoKY29tbWl0IDZlMTU1MWE4NzBkMzYwODA1YjlkMTcyZGM1NmQ5MzUwNjRhYmU3MWQKQXV0aG9yOiBBbmRyZXcgRHllciA8YWR5ZXJAcmlnaHRoYW5kdGVjaC5jb20+CkRhdGU6CUZyaSBTZXAgMTIgMDI6MjA6NDYgMjAwOCArMDIwMAoKICAgIGFybTkyMHQgZml4IGNvbnN0YW50IGVycm9yIGluIHN0YXJ0LlMKCiAgICBDb2RlIGluIGNwdS9hcm05MjB0L3N0YXJ0LlMgd2lsbCBkaWUgd2l0aCBhIGNvbXBpbGF0aW9uIGVycm9yIGlmCiAgICBDT05GSUdfU1RBQ0tTSVpFICsgQ0ZHX01BTExPQ19MRU4gd29ya3Mgb3V0IHRvIGFuIGludmFsaWQgY29uc3RhbnQgZm9yCiAgICB0aGUgQVJNIHN1YiBpbnN0cnVjdGlvbi4gIENoYW5nZSB0aGUgY29kZSBzbyB0aGF0IGVhY2ggaXMgc3VidHJhY3RlZAogICAgaW5kZXBlbmRlbnRseSB0byBhdm9pZCB0aGUgZXJyb3IuCgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IER5ZXIgPGFkeWVyQHJpZ2h0aGFuZHRlY2guY29tPgoKY29tbWl0IGIyMzI1MzgzNWY4NzFjZDliZDhlOTU1YjlhOTcxZDE4YTdkNGZmNTYKQXV0aG9yOiBHdXJ1cmFqYSBIZWJiYXIgSyBSIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgpEYXRlOglGcmkgU2VwIDEyIDAyOjIwOjQwIDIwMDggKzAyMDAKCiAgICBBUk0gT01BUCA6IENvcnJlY3QgSW52YWxpZCBUaW1lciBSZWdpc3RlciBGaWVsZCBEZWNsYXJhdGlvbiBpbiBvbWFwMTUxMC5oICYgb21hcDczMC5oCgogICAgLSBDb3JyZWN0IEludmFsaWQgI2RlZmluZSBvZiBNUFVUSU1fUFRWX01BU0sgZm9yCiAgICAgICBvbWFwMTUxMCAmIG9tYXA3MzAgcmVnaXN0ZXIgZGVmaW5pdGlvbgoKICAgICBNUFVUSU1fUFRWX01BU0sgaXMgZGVmaW5lZCBhcwogICAgICNkZWZpbmUgTVBVVElNX1BUVl9NQVNLCQkoMHg3PDxQVFZfQklUKQoKICAgICB3aGlsZSBpdCBzaG91bGQgaGF2ZSBiZWVuCiAgICAgI2RlZmluZSBNUFVUSU1fUFRWX01BU0sJCSgweDc8PE1QVVRJTV9QVFZfQklUKQoKICAgIC0gQmVsb3cgUGF0Y2ggY29ycmVjdHMgdGhlIHNhbWUKCiAgICBTaWduZWQtb2ZmLWJ5OiBHdXJ1cmFqYSBIZWJiYXIgPGd1cnVyYWpha3JAc2FueW8uY28uaW4+Cgpjb21taXQgYzQ1NWQwNzM5NmRkZGM5ODY0ZmQ4ZGJiOTY1ZWUxMGZlOTVjZThjZgpBdXRob3I6IEFkcmlhbiBGaWxpcGkgPGFkcmlhbi5maWxpcGlAZXVyb3RlY2guY29tPgpEYXRlOglGcmkgSnVsIDE4IDExOjUyOjAyIDIwMDggLTA0MDAKCiAgICBTZXQgdXAgU0QvTU1DIE9DUiBhcyBjb21tZW50IGRlc2NyaWJlcy4gaS5lLiAzLjItMy40di4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBZHJpYW4gRmlsaXBpIDxhZHJpYW4uZmlsaXBpQGV1cm90ZWNoLmNvbT4KCmNvbW1pdCBlYjE2MTM1ZGYyMDUzNWIwZDE5OTY5ZjUwZmI1YmQxN2Y5NWU5YzI1CkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglUaHUgQXVnIDI4IDEyOjI1OjExIDIwMDggKzAyMDAKCiAgICBpLk1YMzE6IGRvY3VtZW50IHRpbWVyIHByZWNpc2lvbiBvcHRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgMWE2MzM3YjAxMzUxYjgyYTQ1YjBkZWZhNzZmMDg3NDQ1MTFjNTgwYgpBdXRob3I6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KRGF0ZToJRnJpIEF1ZyAyOSAxMDozNjoxOCAyMDA4ICswMjAwCgogICAgaS5NWDMxOiBNYWtlIHRoZSBTUEkgYnVzIGFuZCBjaGlwIHNlbGVjdCBjb25maWd1cmFibGUgZm9yIE1DMTM3ODMKCiAgICBUaGUgaS5NWDMxIGhhcyB0aHJlZSBTUEkgYnVzZXMgYW5kIGVhY2ggYnVzIGhhcyBzZXZlcmFsIGNoaXAgc2VsZWN0cwogICAgYW5kIHRoZSBNQzEzNzgzIGNoaXAgY2FuIGJlIGNvbm5lY3RlZCB0byBhbnkgb2YgdGhlc2UuIFRoZSBjdXJyZW50CiAgICBSVEMgZHJpdmVyIGZvciBNQzEzNzgzIGlzIGhhcmRjb2RlZCBmb3IgQ1NQSTIvU1MyLgoKICAgIFRoaXMgcGF0Y2ggbWFrZXMgbWFrZSBNQzEzNzgzIFNQSSBidXMgYW5kIGNoaXAgc2VsZWN0IGNvbmZpZ3VyYWJsZQogICAgdmlhIENPTkZJR19NQzEzNzgzX1NQSV9CVVMgYW5kIENPTkZJR19NQzEzNzgzX1NQSV9DUy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Cgpjb21taXQgOGM0ZWJlYzI1YjIxZTM1NWI4NDg4Njk4ZWMxNTk0ZGE5NzAxZmZmNApBdXRob3I6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KRGF0ZToJRnJpIEF1ZyAyOSAxMDozNjoxNyAyMDA4ICswMjAwCgogICAgaS5NWDMxOiBBZGQgcmVzZXRfdGltZXIoKSBhbmQgbW9kaWZ5IGdldF90aW1lcl9tYXNrZWQoKS4KCiAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIHJlc2V0X3RpbWVyKCkgZnVuY3Rpb24gKG5lZWRlZCBieSBuYW5kX2Jhc2UuYykgYW5kCiAgICBtb2RpZmllcyB0aGUgZ2V0X3RpbWVyX21hc2tlZCgpIHRvIHdvcmsgaW4gdGhlIHNhbWUgd2F5IGFzIHRoZSBvbWFwMjR4eAogICAgZnVuY3Rpb24uCgogICAgU2lnbmVkLW9mZi1ieTogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgoKY29tbWl0IGRlZWVjNDk5MWE1NWRlMjQzNzg3MDAyZWRlMjRkMjMzMWQyMzRmYzgKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglXZWQgU2VwIDEwIDIyOjQ4OjA5IDIwMDggKzAyMDAKCiAgICBhcDMyNXJ4YTogcmVtb3ZlIGR1cGxpY2F0ZSBDT05GSUdfRkxBU0hfQ0ZJX0RSSVZFUgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYTNhMDhjMGNlZGQzMjllZGY1MjU2ZTFkNmIyYmFkMGZjYTAwMjcyNQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBTZXAgMTAgMjI6NDg6MDkgMjAwOCArMDIwMAoKICAgIGJvb3RtIGFybS9hdnIzMi9ibGFja2Zpbi9taWNyb2JsYXplL25pb3MyL3NoOiByZW1vdmUgbm8gbW9yZSBuZWVkICdlcnJvcicgbGFiZWwKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDBlOGQxNTg2NjRhOTEzMzkyY2IwMWZiMTFhOTQ4ZDgzZjcyZTEwNWUKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglXZWQgU2VwIDEwIDIyOjQ4OjA2IDIwMDggKzAyMDAKCiAgICByZW5hbWUgQ0ZHX0VOViBtYWNyb3MgdG8gQ09ORklHX0VOVgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMWVkZTc4NzEwYzNiZjlhZDZmNGE1M2FhZGRjM2JjYzg2ZmVkZDlkZgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBTZXAgMTAgMjI6NDg6MDUgMjAwOCArMDIwMAoKICAgIG52ZWRpdDogcmVuYW1lIGVycm9yIGNvbW1lbnQgdG8gQ09ORklHX0VOVl9JU19JTl8KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGI2NGI3NzVlNzU0NmVkMTM4ZGYzNjBjZWIzYTcxZWUzNThjYjlhMDEKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglXZWQgU2VwIDEwIDIyOjQ4OjA1IDIwMDggKzAyMDAKCiAgICBjbWRfbWVtOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA4YTQwZmIxNDhlZmE0NDJkNjUyNmVhYzQ2YTIwMDFlNGM2NGQyOGZmCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIFNlcCAxMCAyMjo0ODowNSAyMDA4ICswMjAwCgogICAgbW92ZSBjbWRfZ2V0X2RhdGFfc2l6ZSB0byBjb21tYW5kLmMKCiAgICBhZGQgQ01EX0RBVEFfU0laRSBtYWNybyB0byBlbmFibGUgaXQKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDUwNzY0MWQyNDkxOTgwNTMxOTMyYjlmMjVkYWIzN2ZlNWU2YzNhMWEKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglXZWQgU2VwIDEwIDIyOjQ4OjA0IDIwMDggKzAyMDAKCiAgICBlbnZfZmxhc2g6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDVhMWFjZWIwNjg5ZTJmNzMxNDkxODM4OTcwODg0YTY3M2VmN2U3ZDMKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglXZWQgU2VwIDEwIDIyOjQ4OjA0IDIwMDggKzAyMDAKCiAgICByZW5hbWUgQ0ZHX0VOVl9JU19JTl9GTEFTSCBpbiBDT05GSUdfRU5WX0lTX0lOX0ZMQVNICgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA3ZDliNWJhZTViYTU1OGM3NDY0ZDg5ZDAzM2FjYTA0YWNhZjAxMTcyCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIFNlcCAxMCAyMjo0ODowMyAyMDA4ICswMjAwCgogICAgY2xlYW51cCB1c2Ugb2YgQ0ZHX0VOVl9JU19JTl9GTEFTSAoKICAgIC0gI2lmIENGR19FTlZfSVNfSU5fRkxBU0gKICAgIC0gI2lmIChDRkdfRU5WX0lTX0lOX0ZMQVNIID09IDEpCiAgICAtICNkZWZpbmUgQ0ZHX0VOVl9JU19JTl9GTEFTSCAwCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAwY2Y0ZmQzY2Y4ZDBlMDA2MDViZWM1ZmM1NmY4OWM2NDE1MDE1YTQ2CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIFNlcCAxMCAyMjo0ODowMSAyMDA4ICswMjAwCgogICAgcmVuYW1lIGVudmlyb25tZW50LmMgaW4gZW52X2VtYmVkZGVkLmMgdG8gcmVmbGVjdCBpcyBmdW5jdGlvbmFsaXR5CgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBjMDg3OGFmNmUzMmYwZmQ4ZTEzYTZjYTMxNWI5YWRkNjQ0NDExMTVhCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIFNlcCAxMCAyMjo0ODowMSAyMDA4ICswMjAwCgogICAgZW52X25vd2hlcmU6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDkzZjZkNzI1NDRkYTQ1MTBhMTQ2YmM0YzkzZDYwOWIwMTE2Y2RlMzcKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglXZWQgU2VwIDEwIDIyOjQ4OjAwIDIwMDggKzAyMDAKCiAgICByZW5hbWUgQ0ZHX0VOVl9JU19OT1dIRVJFIGluIENPTkZJR19FTlZfSVNfTk9XSEVSRQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMjU1NmVmNzgxMTNiNWYwODlkZmNhYzVkYTkwYmYzMWRkNTY4Mzk3YgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBTZXAgMTAgMjI6NDg6MDAgMjAwOCArMDIwMAoKICAgIGVudl9zZjogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMGI1MDk5YTg0MTliZjljODI4ZGY1ZTNlMmM2ODc4ZGMzMDBkOThlMwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBTZXAgMTAgMjI6NDg6MDAgMjAwOCArMDIwMAoKICAgIHJlbmFtZSBDRkdfRU5WX0lTX0lOX1NQSV9GTEFTSCBpbiBDT05GSUdfRU5WX0lTX0lOX1NQSV9GTEFTSAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNTVjNWY0OTkxMGVjODIyNTM0N2FhMWQyMTEzNTJhODRkZTY2NDliNApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBTZXAgMTAgMjI6NDg6MDAgMjAwOCArMDIwMAoKICAgIGVudl9vbmVuYW5kOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA5NjU2MTM4ZmYxYTM0ZDRjNDc2OGRiNmI0OTBkZWZmYzQwZWU2NzRiCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIFNlcCAxMCAyMjo0Nzo1OSAyMDA4ICswMjAwCgogICAgcmVuYW1lIENGR19FTlZfSVNfSU5fT05FTkFORCBpbiBDT05GSUdfRU5WX0lTX0lOX09ORU5BTkQKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDk1N2EwZTY5NTc1NjgzZWZkNzBhY2UxNDc3NDZiYmIzZDhlN2M1MDEKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglXZWQgU2VwIDEwIDIyOjQ3OjU5IDIwMDggKzAyMDAKCiAgICBlbnZfbnZyYW06IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDkzMTRjZWU2OTE3NDQ0YWI4OGJkNGU3NThkYTdhMzA5NzUxMjAxODcKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglXZWQgU2VwIDEwIDIyOjQ3OjU5IDIwMDggKzAyMDAKCiAgICByZW5hbWUgQ0ZHX0VOVl9JU19JTl9OVlJBTSBpbiBDT05GSUdfRU5WX0lTX0lOX05WUkFNCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAwNmY2MTM1NDM5NzkxMWE0YzEyMWRmYTUxYjZjY2JmN2UzMDBkNDhiCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIFNlcCAxMCAyMjo0Nzo1OSAyMDA4ICswMjAwCgogICAgZW52X25hbmQ6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDUxYmZlZTE5MjA5OTIwNmE0Mzk3ZjE1ZjNiOTM1MTZlMDFmNThhYjAKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglXZWQgU2VwIDEwIDIyOjQ3OjU4IDIwMDggKzAyMDAKCiAgICByZW5hbWUgQ0ZHX0VOVl9JU19JTl9OQU5EIGluIENPTkZJR19FTlZfSVNfSU5fTkFORAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZDhjYzA0ZDBhYzljN2MwZDEyNDU0NzA4YWFmNTQ4OWY4NTMyYmJmOQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBTZXAgMTAgMjI6NDc6NTggMjAwOCArMDIwMAoKICAgIGVudl9kYXRhZmxhc2g6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDA1N2M4NDljNDViOWVlMTlkZjhmZjNhY2RlZWU2NmJlNTI4MTk5NjIKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglXZWQgU2VwIDEwIDIyOjQ3OjU4IDIwMDggKzAyMDAKCiAgICByZW5hbWUgQ0ZHX0VOVl9JU19JTl9EQVRBRkxBU0ggaW4gQ09ORklHX0VOVl9JU19JTl9EQVRBRkxBU0gKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGQxMDM0YmM4ZGI2MGZhNmJkNDE5MzI4YmFmNmE3NWNiMDY0NWNlZTgKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglXZWQgU2VwIDEwIDIyOjQ3OjUyIDIwMDggKzAyMDAKCiAgICBjbWRfZWVwcm9tOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBiZjVhNzcxMGVjNzBlOTBlOThmNDUxYjRiYTBlYjY1ZjlmZmMzNGViCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIFNlcCA1IDA5OjE5OjU0IDIwMDggKzAyMDAKCiAgICBlbnZfZWVwcm9tOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBiYjFmOGI0ZjhiYjBiZmNlNTJlMGZhYTQ2MzdiOTc1Yjc0NTgyNGIzCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIFNlcCA1IDA5OjE5OjMwIDIwMDggKzAyMDAKCiAgICByZW5hbWUgQ0ZHX0VOVl9JU19JTl9FRVBST00gaW4gQ09ORklHX0VOVl9JU19JTl9FRVBST00KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDMyNjI4YzUwMDgxMDVhNzMyMjEyMDAzZDgzYjc1ZjA1ZTUyNDNiYjIKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgQXVnIDMwIDIzOjU0OjU4IDIwMDggKzAyMDAKCiAgICBjbWRfbWFjOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCgogICAgZmluaXNoIHJlbWFuaW5nIENGR19JRF9FRVBST00gaW4gQ09ORklHX0lEX0VFUFJPTQogICAgc3RhcnQgaW4gY29tbWl0IGFkOGY4Njg3Yjc4YzNlOTE3YjE3M2YwMzg5MjY2OTUzODNjNTU1NTUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGU1NjQ4YWNhYjE1M2YwZjQyOWJmYzcxNDkwMmM1YWFhNzg3OWY3MWIKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgQXVnIDMwIDIzOjQ3OjQxIDIwMDggKzAyMDAKCiAgICBjbWRfZmRjOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAyZDAyZDkxZDUzMGU4MzFmMmRhYjIyODA4NTk2M2ZjMWQ1YjcxY2IwCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IEF1ZyAzMCAyMzo0NzozOCAyMDA4ICswMjAwCgogICAgY29tbW9uL01ha2VmaWxlOiBhZGQgY29yZSBjb21tYW5kIHNlY3Rpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDBkOTJkNGE2OTlmYjFhMzkzODFkOTg1NzFkYzUxZmI5N2U1YmNmOWUKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgQXVnIDMwIDIzOjI5OjU3IDIwMDggKzAyMDAKCiAgICBjbWRfdmZkOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA2NjQ0NjQxZDA3MmFlZTMwODdkYTEyOWQ4NDQzMTg3MTk2YTRkOGE5CkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBTZXAgMTAgMTE6NDg6NDkgMjAwOCAtMDUwMAoKICAgIGRlbHRhLCB6eWxvbml0ZTogVXBkYXRlIG5hbmRfb29iaW5mbyB0byBuYW5kX2VjY2xheW91dC4KCiAgICBUaGlzIGlzIHBhcnQgb2YgdGhlIHN3aXRjaCB0byBuZXdlciB1cHN0cmVhbSBNVEQgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5YjA1YWE3ODhiZmRkMzI2NGZmMWJjOTQxOGNiMTk1NTBhNzIzNGU0CkF1dGhvcjogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+CkRhdGU6CVNhdCBBdWcgMzAgMTc6MDY6NTUgMjAwOCAtMDQwMAoKICAgIEFSTSBEYVZpbmNpOiBGaXggYnJva2VuIEhXIEVDQyBmb3IgbGFyZ2UgcGFnZSBOQU5ELgoKICAgIEJhc2VkIG9uIG9yaWdpbmFsIHBhdGNoIGJ5IEJlcm5hcmQgQmxhY2toYW0gPGJlcm5hcmRAbGFyZ2VzdHByaW1lLm5ldD4KCiAgICBVLWJvb3QncyBIVyBFQ0Mgc3VwcG9ydCBmb3IgbGFyZ2UgcGFnZSBOQU5EIG9uIERhdmluY2kgaXMgY29tcGxldGVseQogICAgYnJva2VuLiAgU29tZSBrZXJuZWxzLCBzdWNoIGFzIHRoZSAyLjYuMTAgb25lIHN1cHBvcnRlZCBieQogICAgTW9udGFWaXN0YSBmb3IgRGFWaW5jaSwgcmVseSB1cG9uIHRoaXMgYnJva2VuIGJlaGF2aW91ciBhcyB0aGV5CiAgICBzaGFyZSB0aGUgc2FtZSBjb2RlIGZvciBFQ0NzLiBJbiB0aGUgZXhpc3Rpbmcgc2NoZW1lLCBlcnJvcgogICAgZGV0ZWN0aW9uICptaWdodCogd29yayBvbiBsYXJnZSBwYWdlLCBidXQgZXJyb3IgY29ycmVjdGlvbgogICAgZGVmaW5pdGVseSBkb2VzIG5vdC4gIFNtYWxsIHBhZ2UgRUNDIGNvcnJlY3Rpb24gd29ya3MsIGJ1dCB0aGUKICAgIGZvcm1hdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSBtYWlubGluZSBnaXQga2VybmVsLgoKICAgIFRoaXMgcGF0Y2ggYWRkcyBFQ0MgY29kZSB0aGF0IG1hdGNoZXMgd2hhdCBpcyBjdXJyZW50bHkgaW4gdGhlCiAgICBEYXZpbmNpIGdpdCByZXBvc2l0b3J5IChzaW5jZSBOQU5EIHN1cHBvcnQgd2FzIGFkZGVkIGluIDIuNi4yNCkuCiAgICBUaGlzIG1ha2VzIHRoZSBFQ0MgYW5kIE9PQiBsYXlvdXQgd3JpdHRlbiBieSB1LWJvb3QgY29tcGF0aWJsZSB3aXRoCiAgICBMaW51eCBmb3IgYm90aCBzbWFsbCBwYWdlIGFuZCBsYXJnZSBwYWdlIGRldmljZXMgYW5kIGZpeGVzIEVDQwogICAgY29ycmVjdGlvbiBmb3IgbGFyZ2UgcGFnZSBkZXZpY2VzLgoKICAgIFRoZSBvbGQgYmVoYXZpb3VyIGNhbiBiZSByZXN0b3JlZCBieSBkZWZpbmluZyB0aGUgbWFjcm8KICAgIENGR19EQVZJTkNJX0JST0tFTl9FQ0MsIHdoaWNoIGlzIHVuZGVmaW5lZCBieSBkZWZhdWx0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgogICAgQWNrZWQtYnk6IFNlcmdleSBLdWJ1c2h5biA8a3NpQGtvaTgubmV0PgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMGI3YzU2Mzk4OTFmNDEwM2EwZTMxZWM3YWUwYmViM2U5N2VkMzgzNgpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglXZWQgU2VwIDEwIDExOjE1OjI4IDIwMDggKzAyMDAKCiAgICBtdWFzMzAwMTogdXBkYXRlIEJSNCBzZXR0aW5ncwoKICAgIEFsc28gc2V0IHVwIHRoZSBwb3J0IHBpbnMgZm9yIHVzaW5nIEkyQy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAzNTkxMjkzNTA5ZTBjMGJjZjI0NGIwZjk3NDc3NWJmZjJlMjU2OTdlCkF1dGhvcjogUGV0cmkgTGVodGluZW4gPHBldHJpLmxlaHRpbmVuQGlub2kuZmk+CkRhdGU6CVdlZCBTZXAgMTAgMDk6NDM6NDkgMjAwOCArMDMwMAoKICAgIGF1dG9zY3I6IEZpeCBvbmUtY2hhcmFjdGVyIGxpbmVzIGFuZCBub24tbmV3bGluZSB0ZXJtaW5hdGVkIHNjcmlwdHMKCiAgICBXaGVuIG5vdCB1c2luZyBodXNoLCB0aGUgYXV0b3NjciBjb21tYW5kIG5vdyBleGVjdXRlcyBsaW5lcyB0aGF0IGFyZQogICAgb25seSBvbmUgY2hhcmFjdGVyIGxvbmcuIEl0IGFsc28gcnVucyB0aGUgbGFzdCBsaW5lIG9mIHNjcmlwdHMgZXZlbiBpZgogICAgaXQgZG9lcyBub3QgZW5kIGluIGEgbmV3bGluZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRyaSBMZWh0aW5lbiA8cGV0cmkubGVodGluZW5AaW5vaS5maT4KCmNvbW1pdCA5ZWJiYjU0ZjdhMjUwNTUwMTBmYTY2NjhlYmE0MGM3MmE0YzRmOTg1CkF1dGhvcjogVmljdG9yIEdhbGxhcmRvIDx2Z2FsbGFyZG9AYW1jYy5jb20+CkRhdGU6CVR1ZSBTZXAgOSAxNToxMzoyOSAyMDA4IC0wNzAwCgogICAgcHBjNHh4OiBBbGxvdyBEVFRfSTJDX0RFVl9DT0RFIGNvbmZpZ3VyZWQgYnkgQ0ZHX0kyQ19EVFRfQUREUgoKICAgIE9uIEFNQ0MgQXJjaGVzIGJvYXJkIERUVF9JMkNfREVWX0NPREUgaXMgZGlmZmVyZW50IHRoZW4gY2FueW9ubGFuZHMKICAgIGFuZCBnbGFjaWVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFZpY3RvciBHYWxsYXJkbyA8dmdhbGxhcmRvQGFtY2MuY29tPgoKY29tbWl0IDI0NWY2ZWYzZTExODI4Y2I0NjE4OGUzOTZmYjFlNjdmN2IwN2NkMDMKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJTW9uIFNlcCA4IDEwOjIxOjExIDIwMDggKzAyMDAKCiAgICBtdWFzMzAwMTogYWRkZWQgc3VwcG9ydCBmb3IgdGhlIExNNzUgc2Vuc29yLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDRhMDJhMmRjYTgyYWVhYjhmODM5ZGI5ZGQzNWZkYTlkNTQxMmRhY2IKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJTW9uIFNlcCA4IDEwOjIwOjE5IDIwMDggKzAyMDAKCiAgICBtdWFzMzAwMTogYWN0aXZhdGUgV0RUIGZvciB0aGUgbXVhczMwMDEgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgYTU1ZDA3NGRhYzI0ZGM5NDFmMWFmYjViNGU5NGIxNTA5YmZkZGE0ZQpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglNb24gU2VwIDggMTA6MTk6MzYgMjAwOCArMDIwMAoKICAgIG11YXMzMDAxOiBhZGRlZCA2NE1CIFNEUkFNIGF1dG9kZXRlY3Rpb24uCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgNTI1MTQ2OTk0Mzg5NWRlNGJiOWEwNGQ1MDUzMzUyY2MyMmFjYjdkNQpBdXRob3I6IEFuZHJldyBLbG9zc25lciA8YW5kcmV3QGNlc2Eub3BidS54ZXJveC5jb20+CkRhdGU6CVRodSBBdWcgMjEgMDc6MTI6MjYgMjAwOCAtMDcwMAoKICAgIEZpeCBwcmludGYgZXJyb3JzIHVuZGVyIC1EREVCVUcKCiAgICBGaXggcHJpbnRmIGZvcm1hdC1zdHJpbmcvYXJnIG1pc21hdGNoZXMgdW5kZXIgLURERUJVRy4KCiAgICBUaGVzZSB3YXJuaW5ncyBvY2N1ciB3aXRoIERFQlVHIGRlZmluZWQgZm9yIGEgcGxhdGZvcm0gdXNpbmcKICAgIGNwdS9tcGM4NXh4LiAgVXNlcnMgb2Ygb3RoZXIgYXJjaGl0ZWN0dXJlcyBjYW4gdW5lYXJ0aCBzaW1pbGFyCiAgICBwcm9ibGVtcyBieSBhZGRpbmcgdGhlIGxpbmUgIkNGTEFHUyArPSAtRERFQlVHPTEiIGluIGNvbmZpZy5tayByaWdodAogICAgYWZ0ZXIgIkNGTEFHUyArPSAkKGNhbGwgY2Mtb3B0aW9uLC1mbm8tc3RhY2stcHJvdGVjdG9yKSIuCgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IEtsb3NzbmVyIDxhbmRyZXdAY2VzYS5vcGJ1Lnhlcm94LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4YjllNDc4NzY0MTcxOWQ3MDliZmEyZWJlYjcyZThiZDQ5NTJiZWU3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIFNlcCA5IDIzOjU1OjE4IDIwMDggKzAyMDAKCiAgICBVcGRhdGUgQ0hBTkdFTE9HLCBwcmVwYXJlIDIwMDgtMTAtcmMxIHJlbGVhc2UKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGUwZmYzZDM1MGQ2Yjc5NjBkZWI1YTg4MWRmYzVhY2YzYTYzZWY2NzYKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gU2VwIDggMDg6NTE6MjkgMjAwOCAtMDUwMAoKICAgIDg1eHg6IEVuc3VyZSB0aW1lYmFzZSBpcyB6ZXJvIG9uIHNlY29uZGFyeSBjb3JlcwoKICAgIFRoZSBlNTAwdW0gc2F5cyB0aGUgdGltZWJhc2UgaXMgdm9sYXRpbGUgb3V0IG9mIHJlc2V0LiAgVG8gZW5zdXJlCiAgICBUQiBzeW5jIHdvcmtzIHdlIG5lZWQgdG8gbWFrZSBzdXJlIGl0cyB6ZXJvLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNTRiNGFiM2M5NjFhMjAxMmExYzJhMDljMjU5YTYzNDMzMjNlYzU1MQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVR1ZSBTZXAgOSAyMjoxODoyNCAyMDA4ICswMjAwCgogICAgYm9vdG1fbG9hZF9vczogZml4IGxvYWRfZW5kIGRlYnVnIG1lc3NhZ2UKCiAgICBwcmludCBsb2FkX2VuZCB2YWx1ZSBub3QgcG9pbnRlcgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMWQ5YWYwYmU3NjQ5NjBlNmNjMWMwOTNlOTcxNzZjMzU0Mjc5NjgyMApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVR1ZSBTZXAgOSAyMjoxODoyMyAyMDA4ICswMjAwCgogICAgYm9vdG06IGVuYWJsZSBmZHQgc3VwcG9ydCBvbmx5IG9uIHBwYywgbTY4ayBhbmQgc3BhcmMKCiAgICAuLi5hcyBkb25lIGluIGltYWdlLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDc0OGI1Mjc0ZTc2ZjgxZGY4NWNmY2ZmYWZmZWRjMzIzNjc4ZDA2MjMKQXV0aG9yOiBNYXJrdXMgSGVpZGVsYmVyZyA8bWFya3VzLmhlaWRlbGJlcmdAd2ViLmRlPgpEYXRlOglUdWUgU2VwIDkgMTg6NTE6MDUgMjAwOCArMDIwMAoKICAgIGNvbW1vbi9jbWRfbWVtLmM6IHJlbW92ZSBuZXN0ZWQgI2lmIGRlZmluZWQoQ09ORklHX0NNRF9NRU1PUlkpCgogICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEhlaWRlbGJlcmcgPG1hcmt1cy5oZWlkZWxiZXJnQHdlYi5kZT4KCmNvbW1pdCA2NTA2MzJmZTRjYTA5Y2ZkMGU1ZTZhNTkzZjJlZmMwMmVmODdhNThjCkF1dGhvcjogTWFya3VzIEhlaWRlbGJlcmcgPG1hcmt1cy5oZWlkZWxiZXJnQHdlYi5kZT4KRGF0ZToJVHVlIFNlcCA5IDE3OjMxOjQ2IDIwMDggKzAyMDAKCiAgICBnaXRpZ25vcmU6IGFkZCB0YWdzIGZpbGVzIGFuZCBWaW0gc3dhcCBmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEhlaWRlbGJlcmcgPG1hcmt1cy5oZWlkZWxiZXJnQHdlYi5kZT4KCmNvbW1pdCAxZDliNjdiMjNmY2E2YTI1MTU0MzMzNzMzMjA0MzM5ODAyNTEwNzIwCkF1dGhvcjogWW9zaGloaXJvIFNoaW1vZGEgPHNoaW1vZGEueW9zaGloaXJvQHJlbmVzYXMuY29tPgpEYXRlOglUdWUgU2VwIDkgMTc6NTI6NDcgMjAwOCArMDkwMAoKICAgIGFkZCBib2FyZF9ldGhfaW5pdCgpIGZvciBzaDc3ODVsY3IgYm9hcmQKCiAgICBGaXggdGhlIHByb2JsZW0gdGhhdCBjYW5ub3Qgd29yayBSVEw4MTY5IG9uIHNoNzc4NWxjciBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+Cgpjb21taXQgN2I3YTg2OWE4YmEzYmQ2ZDliZmZiNzQ4YzkxMjMyMTQxMzMwZjUxNApBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgNiAxNjowODo0MSAyMDA4IC0wNTAwCgogICAgbXRkOiBTUEkgRmxhc2g6IFN1cHBvcnQgdGhlIFNUTWljcm8gRmxhc2gKCiAgICBBZGQgTVREIFNQSSBGbGFzaCBzdXBwb3J0IGZvciBNMjVQMTYsIE0yNVAyMCwgTTI1UDMyLAogICAgTTI1UDQwLCBNMjVQNjQsIE0yNVA4MCwgTTI1UDEyOC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBNY011bGxhbiA8bWNtdWxsYW5AbmV0YXBwLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNGJjMDdjMzY4MDc2NTYwZWQ3ZmE0YzlmOTg3YzcxYTg1MjE0ODhhOQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBTZXAgOSAxNzo1NTozMSAyMDA4ICswMjAwCgogICAgdHJhYjogZml4IGJ1aWxkIHByb2JsZW0gYWZ0ZXIgY2hhbmdlIHRvIHVzZSBkb19kaXYoKQoKICAgIFdlIG11c3QgbGluayB3aXRoIGxpYmdlbmVyaWMgbm93LgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgM2IyMGZkODNjNzNjMjJhY2ZjYjBjNjY2M2JlNzQ3YmQ1YzhiNzAxMQpBdXRob3I6IFJ5YW4gQ0hFTiA8cnlhbi5jaGVuQHN0LmNvbT4KRGF0ZToJV2VkIEF1ZyAyMCAxMzowMDoxNyAyMDA4IC0wNDAwCgogICAgQ29ycmVjdCBkcnZfdXNiX2tiZF9pbml0IGZ1bmN0aW9uCgogICAgVGhlIHBhdGNoIGlzIHRoYXQgY2hlY2sgaWYgdXNiX2dldF9kZXZfaW5kZXgoKSBmdW5jdGlvbiByZXR1cm4gdmFsaWQKICAgIHBvaW50ZXIuIElmIHZhbGlkLCBjb250aW51ZS4gT3RoZXJ3aXNlIHJldHVybiAtMS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSeWFuIENoZW4gPHJ5YW4uY2hlbkBzdC5jb20+CiAgICBBY2tlZC1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KCmNvbW1pdCBlYmExZjJmYzc1ZjEyOGE5YTZjMTMyOGQ3ODY5OTZhOTNmZDdhNzA3CkF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CkRhdGU6CVdlZCBBdWcgMjAgMTE6MjI6MDIgMjAwOCArMDIwMAoKICAgIE1ha2UgdXNiLXN0b3AoKSBzYWZlIHRvIGNhbGwgbXVsdGlwbGUgdGltZXMgaW4gYSByb3cuCgogICAgQSByZWNlbnQgY29tbWl0ICg5MzY4OTdkNGQxMzY1NDUyYmJiZGY4NDMwZGI1ZTc3NjllZjA4ZDM4KQogICAgZW5hYmxlZCB0aGUgdXNiX3N0b3AoKSBjb21tYW5kIGluIGNvbW1vbi9jbWRfYm9vdG0uYyB3aGljaCB3YXMKICAgIG5vdCBlbmFibGVkIGZvciBzb21lIHRpbWUsIGJlY2F1c2Ugbm8gYm9hcmQgZGlkIGFjdHVhbGx5IHNldCB0aGUKICAgIENGR19DTURfVVNCIGZsYWcuIFNvLCBub3cgdGhlIHVzYl9zdG9wKCkgaXMgZXhlY3V0ZWQgYmVmb3JlCiAgICBsb2FkaW5nIHRoZSBsaW51eCBrZXJuZWwuCgogICAgSG93ZXZlciwgdGhlIHVzYl9vaGNpIGRyaXZlciBoYW5ncyB1cCAoYXQgbGVhc3Qgb24gQVQ5MVNBTSkgaWYgdGhlCiAgICBkcml2ZXIgaXMgc3RvcHBlZCB0d2ljZSAoZS5nLiB0aGUgcGVyaXBoZXJhbCBjbG9jayBpcyBzdG9wcGVkIG9uIEFUOTEpLgogICAgSWYgc29tZSBvdGhlciBwaWVjZSBvZiBjb2RlIGNhbGxzIHVzYl9zdG9wKCkgYmVmb3JlIHRoZSBib290bSBjb21tYW5kLAogICAgdGhpcyBjb21tYW5kIHdpbGwgaGFuZ3VwIHRoZSBzeXN0ZW0gZHVyaW5nIGJvb3QuCiAgICAodXNiIHN0YXJ0IGFuZCBzdG9wIGlzIHR5cGljYWxseSB1c2VkIHdoaWxlIGJvb3RpbmcgZnJvbSB1c2IgbWVtb3J5IHN0aWNrKQoKICAgIEJ1dCwgc3RvcHBpbmcgdGhlIHVzYiBzdGFjayB0d2ljZSBpcyB1c2VsZXNzIGFueXdheSwgYW5kIGEgZmxhZyBhbHJlYWR5CiAgICBleGlzdGVkIHRoYXQga2VwdCB0cmFjayBvbiB0aGUgdXNiX2luaXQoKS91c2Jfc3RvcCgpIGNhbGxzLgogICAgU28sIHdlIG5vdyBjaGVjayBpZiB0aGUgdXNiIHN0YWNrIGlzIHJlYWxseSBzdGFydGVkIGJlZm9yZSB3ZSBzdG9wIGl0LgoKICAgIFRoaXMgcHJvYmxlbSBpcyBub3cgZml4ZWQgaW4gYm90aCB0aGUgdXBwZXIgYXMgbG93LWxldmVsIGxheWVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgogICAgQWNrZWQtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgMmM4Y2NmMjcyOGY1ZTY3ZDk5MWNlY2Y3NmM0MDU3ZGI3NWE4N2I2NwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBTZXAgOSAxNjo1NTo0NyAyMDA4ICswMjAwCgogICAgTWFrZWZpbGU6IGZpeCBidWcgaW50cm9kdWNlZCBieSBjb21taXQgNDdmZmQ2YzIKCmNvbW1pdCA4ODBmNmE1ZDc1OTZmNDJkYjVmZjg4MDNiNzk3Yjc4ZWM1YjE0NmUwCkF1dGhvcjogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+CkRhdGU6CVR1ZSBTZXAgOSAxMDowMDozMyAyMDA4IC0wNDAwCgogICAgcHBjNHh4OiBwcGM0NDAtZ2VuZXJpYy1BTEw6IEZpeCBvdXQgb2YgdHJlZSBidWlsZCB2MgoKICAgIFRoaXMgcGF0Y2ggc29sdmVzIHRoZSBwcm9ibGVtcyBjb21waWxpbmcgbWw1MDcsIHY1ZngzMHRldmFsIGFuZAogICAgcHBjNDQwLWdlbmVyaWMgb3V0IG9mIHRyZWUuCgogICAgU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+Cgpjb21taXQgNDdiZWJlMzRjYTRlMzNiYWIwZTgyMmU0Y2VlYmJlYzI1OTBjY2JjYgpBdXRob3I6IE7DrWNvbGFzIENhcm5laXJvIExlYmVkZW5jbyA8bmljb2xhcy5sZWJlZGVuY29AdGFza3Npc3RlbWFzLmNvbS5icj4KRGF0ZToJVGh1IFNlcCA0IDE1OjM1OjQ2IDIwMDggLTAzMDAKCiAgICBGaXggZGV2X3ByaW50IHdoZW4gY2FsbGVkIGZyb20gdXNiX3N0b3JfaW5mbyAodXNiIHN0b3JhZ2UgY29tbWFuZCkKCiAgICBGaXggb3V0cHV0IG9mIHRoZSB1c2Igc3RvcmFnZSBjb21tYW5kLiBJdCB3YXMgcHJpbnRpbmcgIkRldmljZSAwOiBub3QKICAgIGF2YWlsYWJsZSIgYmVjYXVzZSBJRl9UWVBFX1VTQiB3YXMgbm90IGluY2x1ZGVkIGludG8gdGhlIHN3aXRjaAogICAgc3RhdGVtZW50LgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pY29sYXMgTGViZWRlbmNvIDxuaWNvbGFzLmxlYmVkZW5jb0B0YXNrc2lzdGVtYXMuY29tLmJyPgoKY29tbWl0IGE0ZjI0MzQ1MmNjOGNlMGMyYzliNTFhMjUyMGRiNGJkZTVmNDcyZGUKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgU2VwIDkgMTI6NTg6MTYgMjAwOCArMDIwMAoKICAgIEZJVDogbWFrZSBpbWluZm8gY2hlY2sgaGFzaGVzIG9mIGFsbCBpbWFnZXMgaW4gRklULCByZXR1cm4gMSBvbiBmYWlsZWQgY2hlY2sKCiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDkxOWY1NTBkYzExYTEzYWJmMDFjNmJjNzEzYzk2OGRlNzkwYjhkN2MKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgU2VwIDkgMTI6NTg6MTUgMjAwOCArMDIwMAoKICAgIEZJVDogYWRkIGFiaWxpdHkgdG8gY2hlY2sgaGFzaGVzIG9mIGFsbCBpbWFnZXMgaW4gRklULCBpbXByb3ZlIG91dHB1dAoKICAgIC0gYWRkIGZ1bmN0aW9uIGZpdF9hbGxfaW1hZ2VfY2hlY2tfaGFzaGVzKCkgdGhhdCB2ZXJpZmllcyBpZiBhbGwKICAgICAgaGFzaGVzIG9mIGFsbCBpbWFnZXMgaW4gdGhlIEZJVCBhcmUgdmFsaWQKICAgIC0gaW1wcm92ZSBvdXRwdXQgb2YgZml0X2ltYWdlX2NoZWNrX2hhc2hlcygpIHdoZW4gdGhlIGhhc2ggY2hlY2sgZmFpbHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDFkZTFmYTQwODk2N2NlZjY4MDRiYjA0NmI5MDQxMTQ1MTliYjM2ZjAKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglNb24gU2VwIDggMjA6NTQ6MzkgMjAwOCArMDIwMAoKICAgIHFlbXVfbWlwczogVXBkYXRlIGxpbnV4IGJvb3RtIHRvIHN1cHBvcnQgZHluYW1pYyBjbWRsaW5lCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBmNWVkOWUzOTA4OGVjZmE1YTVmM2VmNDdiMDhlNWJkYTc4OTBkNzY0CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJTW9uIFNlcCA4IDE0OjU2OjQ5IDIwMDggLTA1MDAKCiAgICBBZGQgc3VwcG9ydCBmb3IgYm9vdGluZyBvZiBJTlRFR1JJVFkgb3BlcmF0aW5nIHN5c3RlbSB1SW1hZ2VzCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCA3MmYxYjY1ZjFiNjhiYzZlZDBkMTgyZWRhMWYzZDZjZjUxYjY0MTRhCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJTW9uIFNlcCA4IDIxOjAxOjI5IDIwMDggKzAyMDAKCiAgICBtaXBzL2Jvb3RtOiBGaXggdHlwbyBpbiBjb21taXQgYzRmOTQxOWMsICJpbml0cmRfc3RhcnQiIHJlcGxhY2VkIGJ5ICJpbWFnZXMtPnJkX3N0YXJ0IgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgOWJhMmUyYzgxOTEzNTNkNzViMmQ1MzVlNjcyYTEyNWJlN2I4NGMwMwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBTZXAgOCAxMzo1NzoxMiAyMDA4IC0wNTAwCgogICAgUmVtb3ZlIHN1cHBvcnQgZm9yIGJvb3RpbmcgQVJUT1MgaW1hZ2VzCgogICAgUGFudGVsaXMgQW50b25pb3Ugc3RhdGVkOgoJQUZBSUssIGl0IGlzIHN0aWxsIHVzZWQgYnV0IHRoZSBwcm9kdWN0cyB1c2luZyBQUEMgYXJlIGxvbmcgZ29uZS4KCU51a2UgaXQgcGx6IChmcm9tIG9yYml0KS4KCiAgICBTbyByZW1vdmUgaXQgc2luY2UgaXQgY2xlYW5zIHVwIGEgdXNhZ2Ugb2YgZW52X2dldF9jaGFyIG91dHNpZGUgb2YKICAgIHRoZSBlbnZpcm9ubWVudCBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNDdmZmQ2YzJmYzcyYjQ2ZGFhOWQ1ZDU5ZWVkYjg5NGZhYjJiN2VlMQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBTZXAgOSAxNTo0NToxOCAyMDA4ICswMjAwCgogICAgTWFrZWZpbGU6IGNvbXBpbGUgYW5kIGxpbmsgZWFjaCBtb2R1bGUganVzdCBvbmNlCgogICAgU2V2ZXJhbCBzb3VyY2UgZmlsZXMgbmVlZCB0byBiZSBjb21waWxlZCBhbmQgbGlua2VkIHdoZW4gb25lIG9yIG1vcmUKICAgIGNvbmZpZyBvcHRpb25zIGFyZSBzZWxlY3RlZC4gVG8gYWxsb3cgZm9yIGVhc3kgc2VsZWN0aW9uIGluIHRoZQogICAgTWFrZWZpbGVzIHlldCB0byBhdm9pbGQgbXVsdGlwbGUgY29tcGlsYXRpb24gKHdoaWNoIGNvc3RzIGJ1aWxkIHRpbWUpCiAgICBhbmQgZXNwZWNpYWxseSBtdWx0aXBsZSBsaW5raW5nICh3aGljaCBjYXVzZXMgZXJyb3JzKSwgd2UgdXNlCiAgICAiQ09CSlMgPSAkKHNvcnQgQ09CSlMteSkiIHdoaWNoIGVsaW1pbmF0ZXMgZHVwbGljYXRlcy4KCiAgICBCeSBjb3VydGVzeSBvZiBEZXRsZXYgWnVuZGVsIHdobyBzdWdnZXN0ZWQgdGhpcyBhcHByb2FjaC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDQ4ZDAxOTJmZTg2OTk0OGZlZjE0YjQ2MGI1ZjBjODViY2E5MzM2OTMKQXV0aG9yOiBBbmRyZWFzIEVuZ2VsIDxhbmRyZWFzLmVuZ2VsQGVyaWNzc29uLmNvbT4KRGF0ZToJTW9uIFNlcCA4IDE0OjMwOjUzIDIwMDggKzAyMDAKCiAgICBNb3ZlZCBjb25kaXRpb25hbCBjb21waWxlIGludG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIEVuZ2VsIDxhbmRyZWFzLmVuZ2VsQGVyaWNzc29uLmNvbT4KCmNvbW1pdCAyMGM5MjI2Y2I4Y2FiMDhhMTExZWU3M2RiMDRlNjJkOTQzZWUwYzk3CkF1dGhvcjogQW5kcmVhcyBFbmdlbCA8YW5kcmVhcy5lbmdlbEBlcmljc3Nvbi5jb20+CkRhdGU6CU1vbiBTZXAgOCAxMDoxNzozMSAyMDA4ICswMjAwCgogICAgTWVyZ2VkIHNlcmlhbF9wbDAxMC5jIGFuZCBzZXJpYWxfcGwwMTEuYy4KCiAgICBUaGV5IG9ubHkgZGlmZmVyIGluIHRoZSBpbml0IGZ1bmN0aW9uLgogICAgVGhpcyBhbHNvIGFkZHMgdGhlIG1pc3Npbmcgd2F0Y2hkb2cgc3VwcG9ydCBmb3IgdGhlIFBMMDExLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgRW5nZWwgPGFuZHJlYXMuZW5nZWxAZXJpY3Nzb24uY29tPgoKY29tbWl0IDA4MTdkNjg4ZjMwN2VlMmMwNTk4ZTc5MTc1Yzk0YTQwY2U5MDMzN2IKQXV0aG9yOiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KRGF0ZToJU3VuIFNlcCA3IDE3OjEwOjI3IDIwMDggLTA0MDAKCiAgICBSZW1vdmUgZ2FwIGZpbGwgaW4gc3JlYyBvYmplY3QgdjIKCiAgICBTUkVDIGZpbGVzIGRvIG5vdCBuZWVkIGdhcCBmaWxsOiBUaGUgbG9hZCBhZGRyZXNzIGlzIHNwZWNpZmllZCBpbiB0aGUKICAgIGZpbGUuIE9uIHRoZSBvdGhlciBoYW5kLCBpdCBjYW4ndCBiZSBhdm9pZGVkIGluIGEgLmJpbiBvYmplY3QuIEl0IGhhcwogICAgbm8gaW5mb3JtYXRpb24gYWJvdXQgbWVtb3J5IGxvY2F0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgoKY29tbWl0IDFkYzMwNjkzMWNhNWNlODdmMTM5MTZmYTcxNjViMDUyZDNhYTcxNGYKQXV0aG9yOiBNYXJrdXMgSGVpZGVsYmVyZyA8bWFya3VzLmhlaWRlbGJlcmdAd2ViLmRlPgpEYXRlOglTdW4gU2VwIDcgMjA6MTg6MjcgMjAwOCArMDIwMAoKICAgIFJFQURNRTogZml4IG1pc3Npbmcgc3ViZGlyZWN0b3J5IGluIHRoZSBkb2N1bWVudGF0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEhlaWRlbGJlcmcgPG1hcmt1cy5oZWlkZWxiZXJnQHdlYi5kZT4KCmNvbW1pdCAzZWY5NmRlZDM4YThkMzNiNThiOWZhYjljZDg3OWQ1MWRkYWM0Y2JkCkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJU3VuIFNlcCA3IDA3OjA4OjQyIDIwMDggKzEwMDAKCiAgICBVcGRhdGUgaTM4NiBjb2RlIChzYzUyMF9jZHApCgogICAgQXR0ZW1wdCB0byBicmluZyBpMzg2IC8gc2M1MjAgaW5saW5lIHdpdGggbWFzdGVyCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KCmNvbW1pdCA1NjA4NjkyMTA0ZWZhOGQ1NmRmODAzZGM3OWVhNDFhYzM2MDdlZWU1CkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglUaHUgU2VwIDQgMTM6MDE6NDkgMjAwOCArMDIwMAoKICAgIGZ3X2VudjogYWRkIE5BTkQgc3VwcG9ydAoKICAgIEFkZCBzdXBwb3J0IGZvciBlbnZpcm9ubWVudCBpbiBOQU5EIHdpdGggYXV0b21hdGljIE5PUiAvIE5BTkQgcmVjb2duaXRpb24sCiAgICBpbmNsdWRpbmcgdW5hbGlnbmVkIGVudmlyb25tZW50LCBiYWQtYmxvY2sgc2tpcHBpbmcsIHJlZHVuZGFudCBlbnZpcm9ubWVudAogICAgY29weS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgZGQ3OTQzMjNhMmExZWQ2YThhNWRmNTE3ODVjMzFiY2RlNjBhZDdjYQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUdWUgU2VwIDkgMDk6NTA6MjQgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRml4IG91dC1vZi10cmVlIGJ1aWxkaW5nIG9mIENQQ0k0MDUgdmFyaWFudHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNTlmNjMwNTg4ZTNmZGJkNjk4YTBhMjc5OGU1MmE4OTI0ZTg5OTU2MwpBdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CkRhdGU6CUZyaSBBdWcgMTUgMTU6NDI6MTEgMjAwOCArMDIwMAoKICAgIFJlbW92ZWQgaGFyZGNvZGVkIE14TVIgbG9vcCB2YWx1ZSBmcm9tIHVwbWNvbmZpZygpIGZvciBNUEM4NXh4LgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Cgpjb21taXQgZTY0OTg3YTg5MjM1M2YzZDQ5ZWIyNDJkOTk3ODIwZWY4ZjUzODkxMgpBdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KRGF0ZToJRnJpIEF1ZyAxNSAxNTo0MjoxMyAyMDA4ICswMjAwCgogICAgODV4eDogc29jcmF0ZXM6IEVuYWJsZSBMaW1lIHN1cHBvcnQuCgogICAgVGhpcyBwYXRjaCBhZGRzIExpbWUgR0RDIHN1cHBvcnQgdG9nZXRoZXIgd2l0aCBzdXBwb3J0IGZvciB0aGUgUFdNCiAgICBiYWNrbGlnaHQgY29udHJvbCB0aHJvdWdoIHRoZSB3ODM3ODJkIGNoaXAuICBUaGUgcmVzZXQgcGluIG9mIHRoZQogICAgbGF0dGVyIGlzIGF0dGFjaGVkIHRvIEdQSU8sIHNvIHdlIG5lZWQgdG8gcmVzZXQgaXQgaW4KICAgIGVhcmx5X2JvYXJkX2luaXRfci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgM2U3OWI1ODhiNTE5OWYzNTAxNmYxNzhmYzBkNWQxMjY2MzgyMDk3ZgpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglGcmkgQXVnIDE1IDE1OjQyOjEyIDIwMDggKzAyMDAKCiAgICA4NXh4OiBTb2NyYXRlczogTWFqb3IgY29kZSB1cGRhdGUuCgogICAgLSBVcGRhdGUgdGhlIGxvY2FsIGJ1cyByYW5nZXMgaW4gdGhlIEZEVCBmb3IgTGludXggZm9yIHRoZSB2YXJpb3VzCiAgICAgIGRldmljZXMgY29ubmVjdGVkIHRvIHRoZSBsb2NhbCBidXMgdmlhIGNoaXAtc2VsZWN0LgoKICAgIC0gU2V0IHRoZSBMQ1JSX0RCWVAgYml0IGluIHRoZSBMQ1JSIGZvciBsb2NhbCBidXMgZnJlcXVlbmNpZXMKICAgICAgbG93ZXIgdGhhbiA2NiBNSHogYW5kIHVzZXMgSS9PIGFjY2Vzc29yIGZ1bmN0aW9ucyBjb25zZXF1ZW50bHkuCgogICAgLSBVUE0gZGF0YSB1cGRhdGUuCgogICAgLSBVcGRhdGUgb2YgZGVmYXVsdCBlbnZpcm9ubWVudCBhbmQgY29uZmlndXJhdGlvbi4JVXNlIEkyQyBtdWx0aWJ1cwogICAgICBhcyB3ZSBkbyBoYXZlIHR3byBJMkMgYnVzZXMuICBBbHNvIGVuYWJsZSBzZHJhbSBhbmQgZXh0MiBjb21tYW5kcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KCmNvbW1pdCBlOGQxODU0MWM2Y2VhYjgyMWY3NWZhYWIwMzE3NDBiMzNmZGJmYTRiCkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEp1bCAxOCAxNjo1MjoyMyAyMDA4ICswMjAwCgogICAgVXBkYXRlIEZyZWVzY2FsZSA4NXh4IGJvYXJkcyB0byBzeXNfZWVwcm9tLmMKCiAgICBUaGUgbmV3IHN5c19lZXByb20uYyBzdXBwb3J0cyBib3RoIHRoZSBvbGQgQ0NJRCBFRVBST00gZm9ybWF0IGFuZCB0aGUgbmV3IE5YSUQKICAgIGZvcm1hdCwgYW5kIHNvIGl0IG9ic29sZXRlcyBib2FyZC9mcmVlc2NhbGUvY29tbW9uL2Nkc19lZXByb20uYy4gIEZyZWVzY2FsZQogICAgODZ4eCBib2FyZHMgYWxyZWFkeSB1c2Ugc3lzX2VlcHJvbS5jLCBzbyB0aGlzIHBhdGNoIG1pZ3JhdGVzIHRoZSByZW1haW5pbmcKICAgIEZyZWVzY2FsZSA4NXh4IGJvYXJkcyB0byB1c2UgaXQgYXMgd2VsbC4gIGNkc19lZXByb20uYyBpcyBkZWxldGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYWFiMmJmMDIwMmM4NjIyN2UzZGNjOGE1YjU4OTQ2MDg3ZWJjYzFhZgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBTZXAgOSAxMDowODowMiAyMDA4ICswMjAwCgogICAgbGliX3BwYy9pbnRlcnJ1cHRzLmM6IG1ha2UgYm9hcmRfc2hvd19hY3Rpdml0eSgpIGEgd2VhayBmdW5jdGlvbgoKICAgIFRoaXMgYWxsb3dzIHRvIHVzZSBzaG93X2FjdGl2aXR5KCkgd2l0aG91dCBoYXZpbmcgdG8KICAgIGRlZmluZSBhbiBlbXB0eSBib2FyZF9zaG93X2FjdGl2aXR5KCkgZnVuY3Rpb24uCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBmZTg3Njc4N2Y4NzQzODgzY2U1OGZlZDYxNTI1ZWFhMmYzNGRhNGM1CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIFNlcCA5IDEwOjA2OjQ0IDIwMDggKzAyMDAKCiAgICBzdHh4dGM6IHJlbW92ZSBlbXB0eSBDT05GSUdfU0hPV19BQ1RJVklUWSBmdW5jdGlvbnMKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDk2NWRlMTA2YmE4OTAwMzcyYzhiMTZkYzYwZDVhY2FiN2Y5MjVlMzgKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgU2VwIDkgMTA6MDM6NDcgMjAwOCArMDIwMAoKICAgIE5FVFRBMjogcmVtb3ZlIGVtcHR5IENPTkZJR19TSE9XX0FDVElWSVRZIGZ1bmN0aW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNmNjNjRmOWI1ZjY5MjM5YzhiMTk2OTU3MmI1YTNhNGFhYjdkZTViOQpBdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CkRhdGU6CUZyaSBBdWcgMTUgMTU6NDI6MTEgMjAwOCArMDIwMAoKICAgIFJlbW92ZWQgaGFyZGNvZGVkIE14TVIgbG9vcCB2YWx1ZSBmcm9tIHVwbWNvbmZpZygpIGZvciBNUEM4NXh4LgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Cgpjb21taXQgMzYyNDFjYTI5ZDQ4MDRhMTAwNmZiM2YyNjA2OWVmZmRhNTIwMjU4MQpBdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KRGF0ZToJRnJpIEF1ZyAxNSAxNTo0MjoxMyAyMDA4ICswMjAwCgogICAgODV4eDogc29jcmF0ZXM6IEVuYWJsZSBMaW1lIHN1cHBvcnQuCgogICAgVGhpcyBwYXRjaCBhZGRzIExpbWUgR0RDIHN1cHBvcnQgdG9nZXRoZXIgd2l0aCBzdXBwb3J0IGZvciB0aGUgUFdNCiAgICBiYWNrbGlnaHQgY29udHJvbCB0aHJvdWdoIHRoZSB3ODM3ODJkIGNoaXAuICBUaGUgcmVzZXQgcGluIG9mIHRoZQogICAgbGF0dGVyIGlzIGF0dGFjaGVkIHRvIEdQSU8sIHNvIHdlIG5lZWQgdG8gcmVzZXQgaXQgaW4KICAgIGVhcmx5X2JvYXJkX2luaXRfci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgN2E0Nzc1M2RkY2FlYmJmMjE0MjgwOTg0MmY3MGM1ZjcyM2JkOWRkYgpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglGcmkgQXVnIDE1IDE1OjQyOjEyIDIwMDggKzAyMDAKCiAgICA4NXh4OiBTb2NyYXRlczogTWFqb3IgY29kZSB1cGRhdGUuCgogICAgLSBVcGRhdGUgdGhlIGxvY2FsIGJ1cyByYW5nZXMgaW4gdGhlIEZEVCBmb3IgTGludXggZm9yIHRoZSB2YXJpb3VzCiAgICAgIGRldmljZXMgY29ubmVjdGVkIHRvIHRoZSBsb2NhbCBidXMgdmlhIGNoaXAtc2VsZWN0LgoKICAgIC0gU2V0IHRoZSBMQ1JSX0RCWVAgYml0IGluIHRoZSBMQ1JSIGZvciBsb2NhbCBidXMgZnJlcXVlbmNpZXMKICAgICAgbG93ZXIgdGhhbiA2NiBNSHogYW5kIHVzZXMgSS9PIGFjY2Vzc29yIGZ1bmN0aW9ucyBjb25zZXF1ZW50bHkuCgogICAgLSBVUE0gZGF0YSB1cGRhdGUuCgogICAgLSBVcGRhdGUgb2YgZGVmYXVsdCBlbnZpcm9ubWVudCBhbmQgY29uZmlndXJhdGlvbi4JVXNlIEkyQyBtdWx0aWJ1cwogICAgICBhcyB3ZSBkbyBoYXZlIHR3byBJMkMgYnVzZXMuICBBbHNvIGVuYWJsZSBzZHJhbSBhbmQgZXh0MiBjb21tYW5kcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KCmNvbW1pdCA0ZDJhZTcwZThjMzFjMjJlNTcxMGRmNWZmMjM2YjU1NjVlYTJjZjJjCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVHVlIFNlcCA5IDAxOjIyOjM5IDIwMDggKzAyMDAKCiAgICBkaXNrLW9uLWNoaXA6IHJlbW92ZSBkdXBsaWNhdGUgZG9jX3Byb2JlIGRlY2xhcmF0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAzMjIxYjA3NGEwYWIxOTlmNmFlNDdjMTljYzIyZjQyZGRmM2VmODE5CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVHVlIFNlcCA5IDAwOjU5OjQwIDIwMDggKzAyMDAKCiAgICBvbmVuYW5kX3Vib290OiBmaXggd2FybmluZzogJ3N0cnVjdCBtdGRfb29iX29wcycgZGVjbGFyZWQgaW5zaWRlIHBhcmFtZXRlciBsaXN0CgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAxM2I0ZGIwZTIxMDcxNzVhODYyMmViYjQ4NTI5ZmEzYWQ4ZTEyYzc1CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVHVlIFNlcCA5IDAwOjU5OjM5IDIwMDggKzAyMDAKCiAgICByczVjMzcyOiBmaXggcnRjX3NldCBwcm90b3R5cGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDFiYjhiMmVmMjcyMmJiYWVhM2NjNWQ0NjMyMWNlMWQ5OWY5YjU2ZjcKQXV0aG9yOiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgpEYXRlOglUaHUgQXVnIDE0IDE0OjA4OjI4IDIwMDggKzAyMDAKCiAgICBBUk06IGZpeCB3YXJuaW5nOiB0YXJnZXQgQ1BVIGRvZXMgbm90IHN1cHBvcnQgaW50ZXJ3b3JraW5nCgogICAgVGhpcyBwYXRjaCBmaXhlcyB3YXJuaW5ncyBsaWtlIHRoaXM6CgogICAgc3RhcnQuUzowOiB3YXJuaW5nOiB0YXJnZXQgQ1BVIGRvZXMgbm90IHN1cHBvcnQgaW50ZXJ3b3JraW5nCgogICAgd2hpY2ggY29tZSBmcm9tIHNvbWUgQVJNIGNyb3NzIGNvbXBpbGVycyBhbmQgYXJlIGNhdXNlZCBieSBoYXJkLWNvZGVkCiAgICAod2l0aCAiLS13aXRoLWNwdT1hcm05IiBjb25maWd1cmF0aW9uIG9wdGlvbikgQVJNIHRhcmdldHMgKHdoaWNoCiAgICBzdXBwb3J0IEFSTSBUaHVtYiBpbnN0cnVjdGlvbnMpLCB3aGlsZSB0aGUgQVJNIHRhcmdldCBzZWxlY3RlZCBmcm9tCiAgICB0aGUgY29tbWFuZCBsaW5lICh3aXRoICItbWFyY2g9YXJtdjQiKSBkb2Vzbid0IHN1cHBvcnQgVGh1bWIKICAgIGluc3RydWN0aW9ucy4KCiAgICBUaGlzIHdhcm5pbmcgaXMgaXNzdWVkIGJ5IHRoZSBjb21waWxlciByZWdhcmRsZXNzIG9mIHRoZSByZWFsIHVzZSBvZgogICAgdGhlIFRodW1iIGluc3RydWN0aW9ucyBpbiBjb2RlLgoKICAgIFRvIGZpeCB0aGlzIHByb2JsZW0sIHdlIHVzZSBvcHRpb25zIGFjY29yZGluZyB0byBjb21waWxlciB2ZXJzaW9uCiAgICBiZWluZyB1c2VkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDQyNjVjMzVmYmNiMjQ4ZTU4MTc5MDA3NjIxZDYxZDMyZDBiM2I4MmEKQXV0aG9yOiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgpEYXRlOglUaHUgQXVnIDE0IDE0OjA4OjI4IDIwMDggKzAyMDAKCiAgICBBUk06IFVzZSBkb19kaXYoKSBpbnN0ZWFkIG9mIGRpdmlzaW9uIGZvciAibG9uZyBsb25nIi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA4ZmViZDEzYzY5Y2I2ODY1MjU3N2QxYTlmY2JkZTk1NGJmNzg0MTU1CkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEp1bCAxOCAxNjo1MjoyMyAyMDA4ICswMjAwCgogICAgVXBkYXRlIEZyZWVzY2FsZSA4NXh4IGJvYXJkcyB0byBzeXNfZWVwcm9tLmMKCiAgICBUaGUgbmV3IHN5c19lZXByb20uYyBzdXBwb3J0cyBib3RoIHRoZSBvbGQgQ0NJRCBFRVBST00gZm9ybWF0IGFuZCB0aGUgbmV3IE5YSUQKICAgIGZvcm1hdCwgYW5kIHNvIGl0IG9ic29sZXRlcyBib2FyZC9mcmVlc2NhbGUvY29tbW9uL2Nkc19lZXByb20uYy4gIEZyZWVzY2FsZQogICAgODZ4eCBib2FyZHMgYWxyZWFkeSB1c2Ugc3lzX2VlcHJvbS5jLCBzbyB0aGlzIHBhdGNoIG1pZ3JhdGVzIHRoZSByZW1haW5pbmcKICAgIEZyZWVzY2FsZSA4NXh4IGJvYXJkcyB0byB1c2UgaXQgYXMgd2VsbC4gIGNkc19lZXByb20uYyBpcyBkZWxldGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTA1NTE3MWVkMDViN2M0ODg1NzM3NDYzZDUyYjhkNmMwMTNiY2I1ZApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBTZXAgOCAyMzoyNjoyMiAyMDA4ICswMjAwCgogICAgbGliX2FybS9ib290bS5jOiBmaXggY29tcGlsZSB3YXJuaW5ncwoKICAgIGJvb3RtLmM6MTI4OiB3YXJuaW5nOiBsYWJlbCAnZXJyb3InIGRlZmluZWQgYnV0IG5vdCB1c2VkCiAgICBib290bS5jOjY1OiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ3JldCcKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDJlM2M4NjdkMGE2M2M1NjNhNTFlNjViNzc2OTczYjAwOGYxNmNlYzUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gU2VwIDggMjI6NDY6NDIgMjAwOCArMDIwMAoKICAgIG1sNTA3OiBmaXggb3V0IG9mIHRyZWUgYnVpbGQgcHJvYmxlbQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgOTg2M2ExNWE5OGYyM2I3OWYzNGEwZTRmOWU0NjViYzZkZjVkNTA0ZApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBTZXAgOCAyMjoxMDoyOCAyMDA4ICswMjAwCgogICAgY29tbW9uL2NtZF9ib290bS5jOiBmaXggcHJpbnRmKCkgZm9ybWF0IHdhcm5pbmdzCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0Mzk0ZjlhOGM0MmJiMWIwYWJjNGZjMDRiZDU4MmQ0ZGI1ZjhiNzI2CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIFNlcCA4IDIyOjM3OjQ1IDIwMDggKzAyMDAKCiAgICBCTVcsIFBDSVBQQzIsIFBDSVBQQzYsIFJCQzgyOiBmaXggY29tcGlsZSB3YXJuaW5ncwoKICAgIG1pc3NpbmcgZG9jX3Byb2JlKCkgcHJvdG90eXBlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMmM1ZTNjYzQ5OTQ4OTdkMzY0YjE0ODk0MmZmMjNlNDc3ODMxOThmNgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBTZXAgOCAyMToyODoxNCAyMDA4ICswMjAwCgogICAgbWs0OHQ1OTogZml4IGNvbXBpbGUgcHJvYmxlbSBpbnRyb2R1Y2VkIGJ5IGNvbW1pdCBkMWUyMzE5NAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNWZmODg5MzQ5ZDJhY2UxM2YxMGM5MzM1ZTA5MzY1ZmNlYzgyNDdjYwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIFNlcCA4IDE0OjExOjEyIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IE1vdmUgcHBjNHh4IHNwZWNpZmljIHByb3RvdHlwZXMgdG8gcHBjNHh4IGhlYWRlcgoKICAgIFRoaXMgcGF0Y2ggbW92ZXMgc29tZSA0eHggc3BlY2lmaWMgcHJvdG90eXBlcyBvdXQgb2YgaW5jbHVkZSBjb21tb24uaAogICAgdG8gYSBwcGM0eHggc3BlY2lmaWMgaGVhZGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhYzUzZWU4MzE4Njc4MTkwYmYzYzY4ZGE0NzdhODRhNjU3ZDg2ZmIwCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CUZyaSBTZXAgNSAxNTozNDowNCAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgQ1BDSTQwNShBQikgY29uZmlndXJhdGlvbgoKICAgIFRoaXMgcGF0Y2ggYWRkIEZEVCBzdXBwb3J0IGFuZCBjb21tYW5kIGxpbmUgZWRpdGluZyBjYXBhYmlsaXRpZXMKICAgIGZvciBDUENJNDA1IGFuZCBDUENJNDA1QUIgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDdiMWZiY2FkZjczYTgzYjNiZWI5NGFiY2NkYTFjMzVlMmMwNzVhOTQKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJRnJpIFNlcCA1IDE1OjM0OjAzIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IENsZWFudXAgQ1BDSTQwNSBsaW5rZXIgc2NyaXB0CgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNzY3ZjkxNTljNWM5NGNkMGNiMzEzNWI1YjgyODE0YWQxMjgxNmRkZgpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglGcmkgU2VwIDUgMTU6MzQ6MDIgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogVXBkYXRlIENQQ0k0MDUgdmFyaWFudHMgaGFuZGxpbmcKCiAgICBUaGlzIHBhdGNoIHJlcGxhY2VzIHRoZSBCT0FSRF9SRVZJU0lPTiB2YXJpYWJsZSBpbiBpbmNsdWRlL2NvbmZpZy5tawogICAgYnkgYSB1c2luZyBhIHRlbXBvcmFyeSBpbmNsdWRlIGZpbGUgaW4gdGhlIHBsYXRmb3JtIGRpcmVjdG9yeS4KCiAgICBUaGUgZm9ybWVyIHdheSBkb2VzIG5vdCB3b3JrIGFueW1vcmUgYW5kIHRoZSBsYXR0ZXIgaXMgYWxzbyB1c2VkIGJ5CiAgICBzb21lIG90aGVyIGJvYXJkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmMDcxZjAxZmQwOWU5YmYxY2YwOWRlMzdhNzQxNmFhY2NlNzFiYWUxCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gU2VwIDggMTA6MDE6NDggMjAwOCArMDIwMAoKICAgIHBwYzR4eDogUmVtb3ZlIENPTkZJR19DUzg5NTJfUEhZIGRlZmluZQoKICAgIFNpbmNlIHRoaXMgZGVmaW5lIGlzIG9ubHkgdXNlZCBvbiBvbmUgYm9hcmQgdGhhdCB3YXMgbmV2ZXIgcmVhbGx5IGluCiAgICBwcm9kdWN0aW9uLCByZW1vdmluZyB0aGlzIGNvbXBpbGUgdGltZSBvcHRpb24gZG9lc24ndCBodXJ0IGFuZCBtYWtlcwogICAgdGhlIGNvZGUgbW9yZSByZWFkYWJsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNmNhODY0NmMxODYwYmJhNzQzMjZiZjkxNmE1YTMzODlhNWMwZDNiNQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIFNlcCA1IDE0OjExOjQwIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBjb21waWxhdGlvbiB3YXJuaW5nIGZvciBQSVA0MDUKCiAgICBUaGlzIHBhdGNoIGZpeGVzIGEgY29tcGlsYXRpb24gd2FybmluZyBmb3IgdGhlIFBJUDQwNSBib2FyZC4gSXQgbW92ZXMgdGhlCiAgICAjaWZuZGVmIENPTkZJR19DUzg5NTJfUEhZIGRlZmluZSBhIGxpdHRsZSBzbyB0aGF0IHRoZSB3YXJuaW5nIGRvZXNuJ3QKICAgIG9jY3VyIGFueW1vcmUuIEkgYW0gYSBsaXR0bGUgdW5zdXJlIGlmIHRoaXMgI2lmZGVmIGlzIGF0IHRoZSBjb3JyZWN0CiAgICBwbGFjZSBub3cgb3IgaWYgaXQgY291bGQgYmUgcmVtb3ZlZCBjb21wbGV0ZWx5LiBUaGlzIG5lZWRzIHRvIGdldAogICAgdGVzdGVkIG9uIHRoZSBQSVA0MDUgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDcyNWI1M2FjNjFmNGRmMzAyNmI4ZjY0ODllZjAwODBmZDI3ZDM4MTYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBTZXAgNSAxNDowOTowOSAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBGaXggY29tcGlsYXRpb24gd2FybmluZyBmb3IgY2FueW9ubGFuZHMgJiBnbGFjaWVyCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDMwMmU1MmUwYjFkNGM3Zjk5NDk5MTcwOWQwY2I2YzNlYTYxMmNkYjUKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglGcmkgU2VwIDUgMTQ6NDA6MjkgMjAwOCAtMDUwMAoKICAgIEZpeCBjb21waWxlciB3YXJuaW5nIGluIG1wYzh4eHggZGRyIGNvZGUKCiAgICBjdHJsX3JlZ3MuYzogSW4gZnVuY3Rpb24gJ2NvbXB1dGVfZnNsX21lbWN0bF9jb25maWdfcmVncyc6CiAgICBjdHJsX3JlZ3MuYzo1MjM6IHdhcm5pbmc6ICdjYXNsYXQnIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbgogICAgY3RybF9yZWdzLmM6NTIzOiBub3RlOiAnY2FzbGF0JyB3YXMgZGVjbGFyZWQgaGVyZQoKICAgIEFkZCBhIHdhcm5pbmcgaW4gRERSMSBjYXNlIGlmIGNhc19sYXRlbmN5IGlzbid0IGEgdmFsdWUgd2Uga25vdyBhYm91dC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgQWNrZWQtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZDFlMjMxOTQxNGVhNTIxOGJhODAxMTYzZTQ1MzBlY2YyZGZjYmYzNgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CU1vbiBTZXAgMSAyMzowNjoyMyAyMDA4ICswMjAwCgogICAgcnRjOiBhbGxvdyBydGNfc2V0IHRvIHJldHVybiBhbiBlcnJvciBhbmQgdXNlIGl0IGluIGNtZF9kYXRlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBlZTk1MzZhMjhjYjE0OWJjYjZjNWRlZTlkMDhjNjJjOTFmNGM3MmQyCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJTW9uIFNlcCAxIDAxOjE2OjMzIDIwMDggKzAyMDAKCiAgICBhcDMyNXJ4YS9mYXZyLTMyLWV6a2l0OiBVc2UgQ09ORklHX0ZMQVNIX0NGSV9EUklWRVIKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDZiOTcxYzczZjE4MjI0OGNlMTAzNTAzZDc0ZmJjMDEwMGJiOGM4YjcKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglTdW4gQXVnIDMxIDA1OjM3OjA0IDIwMDggKzA5MDAKCiAgICBjb25maWcubWs6IE1vdmUgYXJjaC1zcGVjaWZpYyBjb25kaXRpb24gdG8gJChBUkNIKV9jb25maWcubWsKCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IGVhODZiOWU2NGI4MTE3NTNkOWVhYmUwZjU2MGVlMTg5ZmJlNWQwYzEKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglGcmkgQXVnIDI5IDE5OjA4OjI5IDIwMDggLTA1MDAKCiAgICBQcmV2ZW50IGNyYXNoIGlmIHJhbmRvbS9pbnZhbGlkIHJhbWRpc2tzIGFyZSBwYXNzZWQgdG8gYm9vdG0KCiAgICBBZGRzIHJldHVybmluZyBhbiBlcnJvciBmcm9tIHRoZSByYW1kaXNrIGRldGVjdGlvbiBjb2RlIGlmCiAgICBpdHMgbm90IGEgcmVhbCByYW1kaXNrIChpbnZhbGlkKS4gIFRoZXJlIGlzIG5vIHJlYXNvbiB3ZSBjYW4ndAogICAganVzdCByZXR1cm4gYmFjayB0byB0aGUgY29uc29sZSBpZiB3ZSBkZXRlY3QgYW4gaW52YWxpZAogICAgcmFtZGlzayBvciBDUkMgZXJyb3IuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA4ZTAyNDk0ZThmODZjOGYyZDczMjRiNWViOWU3NTI3MTEwNGEwMWVmCkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglGcmkgQXVnIDI5IDIxOjA0OjQ1IDIwMDggKzAyMDAKCiAgICBQcmV2ZW50IGNyYXNoIGlmIHJhbmRvbSBEVEIgYWRkcmVzcyBpcyBwYXNzZWQgdG8gYm9vdG0KCiAgICBUaGlzIHBhdGNoIGFkZHMgYm9vdG1fc3RhcnQoKSByZXR1cm4gdmFsdWUgY2hlY2suIElmCiAgICBlcnJvciBzdGF0dXMgaXMgcmV0dXJuZWQsIHdlIGRvIG5vdCBwcm9jZWVkIGZ1cnRoZXIgdG8KICAgIHByZXZlbnQgYm9hcmQgcmVzZXQgb3IgY3Jhc2ggYXMgd2Ugc3RpbGwgY2FuIHJlY292ZXIKICAgIGF0IHRoaXMgcG9pbnQuCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IGNjMzQ3ODAxYWRkMjY4OWIxZWU1NGQyMWY2MmJjMTRlY2Y2ZTFkZDgKQXV0aG9yOiBBbmRyZXcgRHllciA8YWR5ZXJAcmlnaHRoYW5kdGVjaC5jb20+CkRhdGU6CUZyaSBBdWcgMjkgMTI6MzA6MzkgMjAwOCAtMDUwMAoKICAgIGNsZWFuIHVwIHNvbWUgI2lmICFkZWZpbmVkKCkgaW4gZHJpdmVycy92aWRlby9jZmJfY29uc29sZS5jCgogICAgcmVhcnJhbmdlIHNvbWUgI2lmICFkZWZpbmVkKCkgLyAjZWxzZSAvICNlbmRpZiBzdGF0ZW1lbnRzIHRvIHJlbW92ZQogICAgdGhlIG5lZ2F0aXZlIGxvZ2ljLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBEeWVyIDxhZHllckByaWdodGhhbmR0ZWNoLmNvbT4KCmNvbW1pdCBjODNmNGMyZDc3ZjA3MTc0ZGNkNmJlZjdlODdhMGY3MDE3YmU3YzMzCkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+CkRhdGU6CUZyaSBBdWcgMjkgMDk6MDI6MjAgMjAwOCArMDkwMAoKICAgIGFwb2xsb246IHVzZSB0aGUgbGFzdCBtZW1vcnkgYXJlYSBmb3IgdS1ib290CgogICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KCmNvbW1pdCBhNmYyZTQ1NWI3NzRkMGM1ZDU2ZTQ0ZTU2NjFkZjlhZGI2OWI2ZTA3CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVRodSBBdWcgMjggMTM6NTA6NDIgMjAwOCArMDIwMAoKICAgIFRRTTgyNzI6IG1vdmUgTkFORCBwYXJ0IGluIHNlcGVyYXRlIEZpbGUKCiAgICBJIGRpZG4ndCB0cnkgdG8gdXNlIGRyaXZlcnMvbXRkL25hbmQvZnNsX3VwbS5jIGZvciB0aGUgTkFORCBkcml2ZXIsCiAgICBiZWNhdXNlIEkgaGF2ZSBubyBsb25nZXIgYWNjZXNzIHRvIHRoZSBoYXJkd2FyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCA1ODRmOTc5ZjdlZTkxNGUzMmQ0MDg3MzljYmRkMmM0NDU3ZWMxOGI4CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVRodSBBdWcgMjggMTM6NDg6MzYgMjAwOCArMDIwMAoKICAgIFRRTTgyNzI6IEZpeCBjb21waWxpbmcgZXJyb3IgZm9yIHRoZSBUUU04MjcyIGJvYXJkLgoKICAgIEZpeCBjb21waWxlIHByb2JsZW1zIGNhdXNlZCBieQogICAgY29tbWl0ICBjZmE0NjBhZGZkZWZjYzMwZDEwNGUxYTllZTQ0OTk0ZWUzNDliYjdiCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgMWE3ZjhjY2VjOTgxNjQ4Y2NkMzhmY2EyNTM1NDkwNTgyZWVlMDhlNgpBdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgpEYXRlOglXZWQgQXVnIDI3IDE0OjQ1OjIwIDIwMDggKzA5MDAKCiAgICBBZGQgSkZGUzIgY29tbWFuZCBzdXBwb3J0IG9uIE9uZU5BTkQKCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgoKY29tbWl0IGY1YzNiYTc5Nzg4YjBlMzliYWFiNzAyNmQzNzRmZTM3NWRkMWE0M2YKQXV0aG9yOiBNYXJrIEphY2tzb24gPG1wZmpAbWltYy5jby51az4KRGF0ZToJTW9uIEF1ZyAyNSAxOToyMTozMCAyMDA4ICswMTAwCgogICAgQWxsb3cgY29uc29sZSBpbnB1dCB0byBiZSBkaXNhYmxlZAoKICAgIEFkZGVkIG5ldyBDT05GSUdfRElTQUJMRV9DT05TT0xFIGRlZmluZSBhbmQgR0RfRkxHX0RJU0FCTEVfQ09OU09MRS4KCiAgICBXaGVuIENPTkZJR19ESVNBQkxFX0NPTlNPTEUgaXMgZGVmaW5lZCwgc2V0dGluZwogICAgR0RfRkxHX0RJU0FCTEVfQ09OU09MRSBkaXNhYmxlcyBhbGwgY29uc29sZSBpbnB1dCBhbmQgb3V0cHV0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmsgSmFja3NvbiA8bXBmakBtaW1jLmNvLnVrPgoKY29tbWl0IDJiMjJkNjA4ZjM3MDU2NWM4N2Y1NTkyOGI1MjQyMDcwMzE0MTljMTEKQXV0aG9yOiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KRGF0ZToJV2VkIEp1bCAzMCAxMjozOToyOSAyMDA4ICswMjAwCgogICAgbG9hZHM6IGFsbG93IG5lZ2F0aXZlIG9mZnNldHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KCmNvbW1pdCBlOTBmYjZhZmFiMmMwYzA3NGRmYjY3YmFjYjRkZTE3OWViMTg4YTI0CkF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgpEYXRlOglUaHUgU2VwIDQgMTE6MTk6MDUgMjAwOCArMDIwMAoKICAgIFVTQiBFSENJOiByZXNldCByb290IGh1YgoKICAgIFNvbWUgb2YgbXVsdGktZnVuY3Rpb24gVVNCIGNvbnRyb2xsZXJzIChlLmcuIElTUDE1NjIpIGFsbG93IHJvb3QgaHViCiAgICByZXNldHRpbmcgb25seSB2aWEgRUhDSSByZWdpc3RlcnMuIFNvLCB0aGlzIHBhdGNoIGFkZHMgdGhlCiAgICBjb3JyZXNwb25kaW5nIGtpbmQgb2YgcmVzZXQgdG8gT0hDSSdzIGhjX3Jlc2V0KCkgaWYgdGhlIG5ld2x5CiAgICBpbnRyb2R1Y2VkIENPTkZJR19QQ0lfRUhDSV9ERVZOTyBvcHRpb24gaXMgc2V0IChlLmcuIGZvciBTb2NyYXRlcwogICAgYm9hcmQpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KICAgIEFja2VkLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgoKY29tbWl0IDU4NzVkMzU4ZjAyNWMxYjA0MmQ4YTBmMDgzODRiNzU2ZGU3MjU2YzkKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CkRhdGU6CUZyaSBBdWcgMTUgMTU6NDI6MDkgMjAwOCArMDIwMAoKICAgIFJYIDgwMjUgUlRDOiBhbmFseXplIDEyLzI0LWhvdXIgbW9kZSBmbGFnIGluIHJ0Y19nZXQoKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgM2UzYzAyNmVkNzQ2YTI4NGM2ZjBlZjEzOWIyNmQ4NTk5MzlkZTdlOQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIFNlcCA1IDEwOjQ3OjQ2IDIwMDggKzAyMDAKCiAgICBkZXZpY2VzOiBVc2UgbGlzdF9hZGRfdGFpbCgpIGluc3RlYWQgb2YgbGlzdF9hZGQoKSB0byByZWdpc3RlciBhIGRldmljZQoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBwcm9ibGVtIHNwb3R0ZWQgb24gR2xhY2llci9DYW55b25sYW5kcyAoYW5kIG1vc3QKICAgIGxpa2VseSBsb3RzIG9mIG90aGVyIGJvYXJkIHBvcnRzKSwgdGhhdCBubyBzZXJpYWwgb3V0cHV0IHdhcyBzZWVuCiAgICBhZnRlciBjb25zb2xlIGluaXRpYWxpemF0aW9uIGluIGNvbnNvbGVfaW5pdF9yKCkuIFRoaXMgaXMgYmVjYXVzZSB0aGUKICAgIGxhc3QgYWRkZWQgY29uc29sZSBkZXZpY2Ugd2FzIHVzZWQgaW5zdGVhZCBvZiB0aGUgZmlyc3QgYWRkZWQuCgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGlzIHByb2JsZW0gYnkgdXNpbmcgbGlzdF9hZGRfdGFpbCgpIGluc3RlYWQgb2YKICAgIGxpc3RfYWRkKCkgdG8gcmVnaXN0ZXIgYSBkZXZpY2UuIFRoaXMgd2F5IHRoZSBmaXJzdCBhZGRlZCBjb25zb2xlCiAgICBpcyB1c2VkIGFnYWluLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3OGQ3ODIzNjg5NmQ2MmJiOGNhNzMwMmFmMzhkOGYxNDkzZWIyNjUxCkF1dGhvcjogVmljdG9yIEdhbGxhcmRvIDx2Z2FsbGFyZG9AYW1jYy5jb20+CkRhdGU6CVRodSBTZXAgNCAyMzo0OTozNiAyMDA4IC0wNzAwCgogICAgcHBjNHh4OiBBZGQgc3VwcG9ydCBmb3IgR1BDUywgU0dNSUkgYW5kIE04OEUxMTEyIFBIWQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBHUENTLCBTR01JSSBhbmQgTTg4RTExMTIgUEhZIHN1cHBvcnQKICAgIGZvciB0aGUgQU1DQyBQUEM0NjBHVC9FWCBwcm9jZXNzb3JzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFZpY3RvciBHYWxsYXJkbyA8dmdhbGxhcmRvQGFtY2MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGY2YjZjNDU4NDBmOWI0NjcxZDJkOTcyNDNhMTJhMWYzZmZiNjQ3NjUKQXV0aG9yOiBBZGFtIEdyYWhhbSA8YWdyYWhhbUBhbWNjLmNvbT4KRGF0ZToJV2VkIFNlcCAzIDEyOjI2OjU5IDIwMDggLTA3MDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBLaWxhdWVhIHRvIHVzZSBQUEM0eHggRERSIGF1dG9jYWxpYnJhdGlvbiByb3V0aW5lcwoKICAgIFNpZ25lZC1vZmYtYnk6IEFkYW0gR3JhaGFtIDxhZ3JhaGFtQGFtY2MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDA3NWQwYjgxZTg5NmU4NzM1YWUyNjM3MmNkMzg0Zjg3Y2JkMjRlNDEKQXV0aG9yOiBBZGFtIEdyYWhhbSA8YWdyYWhhbUBhbWNjLmNvbT4KRGF0ZToJV2VkIFNlcCAzIDEyOjI2OjI4IDIwMDggLTA3MDAKCiAgICBwcGM0eHg6IElCTSBNZW1vcnkgQ29udHJvbGxlciBERFIgYXV0b2NhbGlicmF0aW9uIHJvdXRpbmVzCgogICAgQWx0ZXJuYXRlIFNEUkFNIEREUiBhdXRvY2FsaWJyYXRpb24gcm91dGluZSB0aGF0IGNhbiBiZSBnZW5lcmljYWxseSB1c2VkCiAgICBmb3IgYW55IFBQQzR4eCBjaGlwcyB0aGF0IGhhdmUgdGhlIElCTSBTRFJBTSBDb250cm9sbGVyIGNvcmUgYWxsb3dpbmcgZm9yCiAgICBzdXBwb3J0IG9mIG1vcmUgRElNTS9tZW1vcnkgY2hpcCB2ZW5kb3JzIGFuZCBnZXRzIHRoZSBERFIgYXV0b2NhbGlicmF0aW9uCiAgICB2YWx1ZXMgd2hpY2ggZ2l2ZSB0aGUgYmVzdCByZWFkIGxhdGVuY3kgcGVyZm9ybWFuY2UgKFNEUkFNMF9SRENDLltSRFNTXSkuCgogICAgVHdvIGFsdGVybmF0ZSBTRFJBTSBERFIgYXV0b2NhbGlicmF0aW9uIGFsZ29yaXRtIGFyZSBwcm92aWRlZCBpbiB0aGlzIHBhdGNoLAogICAgIk1ldGhvZF9BIiBhbmQgIk1ldGhvZF9CIi4JRERSIGF1dG9jYWxpYnJhdGlvbiBNZXRob2RfQSBzY2FucyB0aGUgZnVsbCByYW5nZQogICAgb2YgcG9zc2libGUgUFBDNHh4CVNEUkFNIENvbnRyb2xsZXIgRERSIGF1dG9jYWxpYnJhdGlvbiB2YWx1ZXMgYW5kIHRha2VzIGEKICAgIGxvdCBsb25nZXIgdG8gcnVuIHRoYW4gTWV0aG9kX0IuICBNZXRob2RfQiBleGVjdXRlcyBpbiB0aGUgc2FtZSBhbW91bnQgb2YgdGltZQogICAgYXMgdGhlIGN1cnJlbnRseSBleGlzdGluZyBERFIgYXV0b2NhbGlicmF0aW9uIHJvdXRpbmUsIGkuZS4gMSBzZWNvbmQgb3Igc28uCiAgICBOb3JtYWxseSBNZXRob2RfQiBpcyB1c2VkIGFuZCBpdCBpcyBzZXQgYXMgdGhlIGRlZmF1bHQgbWV0aG9kLgoKICAgIFRoZSBjdXJyZW50IFUtQm9vdCBQUEM0eHggRERSIGF1dG9jYWxpYnJhdGlvbiBjb2RlIGNhbGlicmF0ZXMgdGhlIElCTSBTRFJBTQogICAgQ29udHJvbGxlciByZWdpc3RlcnMuW2JpdC1maWVsZF06CiAgICAxKQlTRFJBTTBfUlFEQy5bUlFGRF0KICAgIDIpCVNEUkFNMF9SRkRDLltSRkZEXQoKICAgIFRoaXMgYWx0ZXJuYXRlIFBQQzR4eCBERFIgYXV0b2NhbGlicmF0aW9uIGNvZGUgY2FsaWJyYXRlcyB0aGUgZm9sbG93aW5nCiAgICBJQk0gU0RSQU0gQ29udHJvbGxlciByZWdpc3RlcnMuW2JpdC1maWVsZF06CgogICAgMSkJU0RSQU0wX1dSRFRSLltXRFRSXQogICAgMikJU0RSQU0wX0NMS1RSLltDS1RSXQogICAgMykJU0RSQU0wX1JRREMuW1JRRkRdCiAgICA0KQlTRFJBTTBfUkZEQy5bUkZGRF0KCiAgICBhbmQgd2lsbCBhbHNvIHVzZSB0aGUgY2FsaWJyYXRlZCBzZXR0aW5ncyBvZiB0aGUgYWJvdmUgZm91ciByZWdpc3RlcnMgdGhhdAogICAgcHJvZHVjZSB0aGUgYmVzdCAiUmVhZCBTYW1wbGUgQ3ljbGUgU2VsZWN0IiB2YWx1ZSBpbiB0aGUgU0RSQU0wX1JEQ0MuW1JEU1NdCiAgICByZWdpc3Rlci5bYml0LWZpZWxkXS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBZGFtIEdyYWhhbSA8YWdyYWhhbUBhbWNjLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlMDdmNGE4MDMzYjYyNzBiODEwMzA0OWFkYjY0NTZmNjYwZmY0YTg5CkF1dGhvcjogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+CkRhdGU6CU1vbiBTZXAgMSAxMzowOTozOSAyMDA4IC0wNDAwCgogICAgcHBjNDR4OiBVbmlmaWNhdGlvbiBvZiB2aXJ0ZXg1IHBwNDQwIGJvYXJkcwoKICAgIFRoaXMgcGF0Y2ggcHJvdmlkZXMgYW4gdW5pZmljYXRlZCB3YXkgb2YgaGFuZGxpbmcgeGlsaW54IHY1IHBwYzQ0MCBib2FyZHMuCgogICAgSXQgdW5pZmljYXRlcyAzIGRpZmZlcmVudCB0aGluZ3M6CgogICAgMSkgU291cmNlIGNvZGUKICAgIEEgbmV3IGJvYXJkIGNhbGxlZCBwcGM0NDAtZ2VuZXJpYyBoYXMgYmVlbiBjcmVhdGVkLiBUaGlzIGJvYXJkIGluY2x1ZGVzCiAgICBhIGdlbmVyaWMgdGxiIGluaXRpYWxpemF0aW9uIChNYXBzIHRoZSB3aG9sZSBtZW1vcnkgaW50byB2aXJ0dWFsKSBhbmQKICAgIGRlZmluZXMgYm9hcmRfcHJlX2luaXQsIGNoZWNrYm9hcmQsIGluaXRkcmFtIGFuZCBnZXRfc3lzX2luZm8gd2Vha2x5LAogICAgc28sIHRoZXkgY2FuIGJlIHJlcGxhY2VkIGJ5IHNwZWNpZmljIGZ1bmN0aW9ucy4KCiAgICBJZiBhIG5ldyBib2FyZCBuZWVkcyB0byByZWRlZmluZSBhbnkgb2YgdGhlIHByZXZpb3VzIGZ1bmN0aW9ucwogICAgKHNwZWNpZmljIGluaXRpYWxpemF0aW9uKSBpdCBjYW4gY3JlYXRlIGEgbmV3IGRpcmVjdG9yeSB3aXRoIHRoZQogICAgc3BlY2lmaWMgaW5pdGlhbGl6YXRpb25zIG5lZWRlZC4gKHNlZSB0aGUgZXhhbXBsZSBtbDUwNyBib2FyZCkuCgogICAgMikgQ29uZmlndXJhdGlvbiBmaWxlCiAgICBDb21tb24gY29uZmlndXJhdGlvbnMgYXJlIGxvY2F0ZWQgdW5kZXIgY29uZmlncy94aWxpbngtcHBjNDQwLmgsIHRoaXMKICAgIGhlYWRlciBmaWxlIGludGVycHJldGVzIHRoZSB4cGFyYW1ldGVycyBmaWxlIGdlbmVyYXRlZCBieSBFREsgYW5kCiAgICBjb25maWd1cmF0ZXMgdS1ib290IGluIGNvcnJlc3BvbmRlbmNlLiBFeGFtcGxlOiBpZiB0aGVyZSBpcyBhIFRlbWFjLAogICAgYWxsb3dzIENNRF9DT05GSUdfTkVUCiAgICBTcGVjaWZpYyBjb25maWd1cmF0aW9uIGFyZSBsb2NhdGVkIHVuZGVyIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZmlsZS4KICAgIChzZWUgdGhlIGV4YW1wbGUgbWw1MDcgYm9hcmQpCgogICAgMykgTWFrZWZpbGUKICAgIFNvbWUgd29yayBoYXMgYmVlbiBkb25lIGluIG9yZGVyIHRvIG5vdCBkdXBsaWNhdGUgd29yayBpbiB0aGUgTWFpbgogICAgTWFrZWZpbGUuIFBsZWFzZSBzZWUgdGhlIGF0dGFjaGVkIGNvZGUuCgogICAgSW4gb3JkZXIgdG8gc3VwcG9ydCBuZXcgYm9hcmRzIHRoZXkgY2FuIGJlIGltcGxlbWVudGVkIGluIHRoZSBuZXh0IHdheToKCiAgICBhKSBTaW1wbGUgR2VuZXJpYyBCb2FyZCAgKDkwJSBvZiB0aGUgdGltZSkKICAgIFVzaW5nIEVESyBnZW5lcmF0ZXMgYSBuZXcgeHBhcmFtZXRlcnMuaCBmaWxlLCByZXBsYWNlCiAgICBwcGM0NDAtZ2VuZXJpYy94cGFyYW1ldGVycy5oICBhbmQgcnVuIG1ha2UgeGlsaW54LXBwYzQ0MC1nZW5lcmljX2NvbmZpZwogICAgJiYgbWFrZQoKICAgIGIpIFNpbXBsZSBCb2FyZHMgd2l0aCBzcGVjaWFsIHUtYm9vdCBwYXJhbWV0ZXJzICg5ICUgb2YgdGhlIHRpbWUpCiAgICBDcmVhdGUgYSBuZXcgZmlsZSB1bmRlciBjb25maWdzIGZvciBpdCAodXNlIG1sNTA3LmggYXMgZXhhbXBsZSkgYW5kCiAgICBjaGFuZ2UgeW91ciBwYXJhbWF0ZXJzLiBDcmVhdGUgYSBuZXcgTWFrZWZpbGUgcGFyYWdyYXBoIGFuZCBjb21waWxlCgogICAgYykgQ29tcGxleCBib2FyZHMgKDElIG9mIHRoZSB0aW1lKQogICAgQ3JlYXRlIGEgbmV3IGZvbGRlciBmb3IgdGhlIGJvYXJkLCBsaWtlIHRoZSBtbDUwNwoKICAgIEZpbmFsbHksIGl0IGFkZHMgc3VwcG9ydCBmb3IgdGhlIEF2bmV0IEZYMzBUIEV2YWx1YXRpb24gYm9hcmQsIGZvbGxvd2luZwogICAgdGhlIG5ldyBnZW5lcmljIHN0cnVjdHVyZToKCiAgICBDaGVhcCBib2FyZCBieSBBdm5ldCBmb3IgZXZhbHVhdGluZyB0aGUgVmlydGV4NSBGWCB0ZWNobm9sb2d5LgoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvcjoKICAgICAtIFVhcnRMaXRlCiAgICAgLSAxNk1CIEZsYXNoCiAgICAgLSA2NE1CIFJBTQoKICAgIFByaW9yIHVzaW5nIFUtYm9vdCBpbiB0aGlzIGJvYXJkLCByZWFkIGNhcmVmdWxseSB0aGUgRVJSQVRBIGJ5IEF2bmV0CiAgICB0byBzb2x2ZSBzb21lIG1lbW9yeSBpbml0aWFsaXphdGlvbiBpc3N1ZXMuCgogICAgU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNjRhYzFlYjVhZmFmY2VkNDliMzI3NDI1YWQxODE0YjJkYzQyMmQ2ZQpBdXRob3I6IE5pY2sgU3BlbmNlIDxuaWNrLnNwZW5jZUBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgU2VwIDIgMTU6MjE6MTYgMjAwOCAtMDUwMAoKICAgIG1wYzgzeHg6IGZpeCBtcGM4MzEzIGluLXRyZWUgYnVpbGRpbmcgd2l0aCBOQU5ECgogICAgYW5kIGFkZCBtcGM4MzEzIE5BTkQgYnVpbGQgdG8gTUFLRUFMTAoKICAgIFNpZ25lZC1vZmYtYnk6IE5pY2sgU3BlbmNlIDxuaWNrLnNwZW5jZUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2ZWIyYTQ0ZTI3OTE5ZmRjNjAxZTBjMDU0MDRiMjk4YTc2MDJjMGUzCkF1dGhvcjogTmljayBTcGVuY2UgPG5pY2suc3BlbmNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBBdWcgMjggMTQ6MDk6MjUgMjAwOCAtMDcwMAoKICAgIG1wYzgzeHg6IGNsZWFuIHVwIGNhY2hlIG9wZXJhdGlvbnMgYW5kIHVubG9ja19yYW1faW5fY2FjaGUoKSBmdW5jdGlvbnMKCiAgICBDbGVhbnMgdXAgc29tZSBsYXRlbnQgaXNzdWVzIHdpdGggdGhlIGRhdGEgY2FjaGUgY29udHJvbCBzbyB0aGF0CiAgICBkY2FjaGVfZW5hYmxlKCkgYW5kIGRjYWNoZV9kaXNhYmxlKCkgd2lsbCB3b3JrIHJlbGlhYmx5IChhZnRlcgogICAgdW5sb2NrX3JhbV9pbl9jYWNoZSgpIGhhcyBiZWVuIGNhbGxlZCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNDY0OTcwNTZhZTNiMWU4MWU3MzZlOWNmM2ExNzA0NzJjNWQ5NzE5ZgpBdXRob3I6IE5pY2sgU3BlbmNlIDxuaWNrLnNwZW5jZUBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXVnIDI4IDE0OjA5OjE5IDIwMDggLTA3MDAKCiAgICBtcGM4M3h4OiBTdG9yZSBhbmQgZGlzcGxheSBBcmJpdGVyIEV2ZW50IFJlZ2lzdGVyIHZhbHVlcwoKICAgIFJlY29yZCB0aGUgQXJiaXRlciBFdmVudCBSZWdpc3RlciB2YWx1ZXMgYW5kIG9wdGlvbmFsbHkgZGlzcGxheSB0aGVtLgoKICAgIFRoZSBBcmJpdGVyIEV2ZW50IFJlZ2lzdGVyIGNhbiByZWNvcmQgdGhlIHR5cGUgYW5kIGVmZmVjdGl2ZSBhZGRyZXNzIG9mCiAgICBhbiBhcmJpdGVyIGVycm9yLCBldmVuIHRocm91Z2ggYW4gSFJFU0VULiBUaGlzIHBhdGNoIHN0b3JlcyB0aGUgdmFsdWVzIGluCiAgICB0aGUgZ2xvYmFsIGRhdGEgc3RydWN0dXJlLgoKICAgIERpc3BsYXkgb2YgdGhlIEFyYml0ZXIgRXZlbnQgcmVnaXN0ZXJzIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBSU1IgdmFsdWUKICAgIGNhbiBiZSBlbmFibGVkIHdpdGggZGVmaW5lcy4gVGhlIEFyYml0ZXIgdmFsdWVzIHdpbGwgb25seSBiZSBkaXNwbGF5ZWQKICAgIGlmIGFuIGFyYml0ZXIgZXZlbnQgaGFzIG9jY3VyZWQgc2luY2UgdGhlIGxhc3QgUG93ZXIgT24gUmVzZXQsIGFuZCBlaXRoZXIKICAgIG9mIHRoZSBmb2xsb3dpbmcgZGVmaW5lcyBleGlzdDoKICAgICAjZGVmaW5lIENPTkZJR19ESVNQTEFZX0FFUl9CUklFRiAtIGRpc3BsYXkgb25seSB0aGUgYXJiaXRlciBhZGRyZXNzIGFuZAoJCQkJCWFuZCB0eXBlIHJlZ2lzdGVyIHZhbHVlcwogICAgICNkZWZpbmUgQ09ORklHX0RJU1BMQVlfQUVSX0ZVTEwgIC0gZGlzcGxheSBhbmQgaW50ZXJwcmV0IHRoZSBhcmJpdGVyCgkJCQkJZXZlbnQgcmVnaXN0ZXIgdmFsdWVzCgogICAgQWRkcmVzcyBPbmx5IHRyYW5zYWN0aW9ucyBhcmUgb25lIG9mIHRoZSB0cmFwcGVkIGV2ZW50cyB0aGF0IGNhbiByZWdpc3RlcgogICAgYXMgYW4gYXJiaXRlciBldmVudC4gVGhleSBvY2N1ciB3aXRoIHNvbWUgY2FjaGUgbWFuaXB1bGF0aW9uIGluc3RydWN0aW9ucwogICAgaWYgdGhlIEhJRDBfQUJFIChBZGRyZXNzIEJyb2FkY2FzdCBFbmFibGUpIGlzIHNldCBhbmQgdGhlIG1lbW9yeSByZWdpb24KICAgIGhhcyB0aGUgTUVNT1JZX0NPSEVSRU5DRSBXSU1HIGJpdCBzZXQuIFNldHRpbmc6CiAgICAgI2RlZmluZSBDT05GSUdfTUFTS19BRVJfQU8gLSBwcmV2ZW50cyB0aGUgYXJiaXRlciBmcm9tIHJlY29yZGluZyBhZGRyZXNzCgkJCQkgIG9ubHkgZXZlbnRzLCBzbyB0aGF0IGl0IGNhbiBzdGlsbCBjYXB0dXJlCgkJCQkgIG90aGVyIHJlYWwgcHJvYmxlbXMuCgogICAgU2lnbmVkLW9mZi1ieTogTmljayBTcGVuY2UgPG5pY2suc3BlbmNlQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGFkZTUwYzdmYTFiMTZlZjk4YmUxN2U5YzNhZTI4NmFlY2Y0ZjU2MDUKQXV0aG9yOiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEF1ZyAyOCAxNDowOToxMSAyMDA4IC0wNzAwCgogICAgbXBjODN4eDogdXNlIHI0IGluc3RlYWQgb2YgcjIgaW4gbG9ja19yYW1faW5fY2FjaGUgYW5kIHVubG9ja19yYW1faW5fY2FjaGUKCiAgICBUaGlzIGlzIG5lZWRlZCBpbiB1bmxvY2tfcmFtX2luX2NhY2hlKCkgYmVjYXVzZSBpdCBpcyBjYWxsZWQgZnJvbSBDIGFuZAogICAgd2lsbCBjb3JydXB0IHRoZSBzbWFsbCBkYXRhIGFyZWEgYW5jaG9yIHRoYXQgaXMga2VwdCBpbiBSMi4KCiAgICBsb2NrX3JhbV9pbl9jYWNoZSgpIGlzIG1vZGlmaWVkIHNpbWlsYXJseSBhcyBnb29kIGNvZGluZyBwcmFjdGljZSwgYnV0CiAgICBpcyBub3QgY2FsbGVkIGZyb20gQy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDlmZTg4MTczY2I0ZjdkMjkzNzk2ZmZlMTBjN2EwZDNkNDI2ZDhmOQpBdXRob3I6IE5pY2sgU3BlbmNlIDxuaWNrLnNwZW5jZUBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgQXVnIDIyIDIzOjUyOjUwIDIwMDggLTA3MDAKCiAgICBNUEM4M1hYOiBGaXggR1BJTyBjb25maWd1cmF0aW9uIC0gc2V0IGdwaW8gbGV2ZWwgYmVmb3JlIGRpcmVjdGlvbgoKICAgIFNldCBEQVQgdmFsdWUgYmVmb3JlIERJUiB2YWx1ZXMgdG8gYXZvaWQgY3JlYXRpbmcgZ2xpdGNoZXMgb24gdGhlCiAgICBHUElPIHNpZ25hbHMuCgogICAgU2V0IGdwaW8gbGV2ZWwgcmVnaXN0ZXIgYmVmb3JlIGRpcmVjdGlvbiByZWdpc3RlciB0byBpbmhpYml0CiAgICBnbGl0Y2hlcyBvbiBoaWdoIGxldmVsIG91dHB1dCBwaW5zLgoKICAgIERpciBhbmQgZGF0YSBnZXRzIGNsZWFyZWQgYXQgcG93ZXJ1cCwgc28gaGlnaCBsZXZlbCBvdXRwdXQgbGluZXMgc2VlCiAgICBhIHNob3J0IGxvdyBwdWxzZSBiZXR3ZWVuIHNldHRpbmcgdGhlIGRpcmVjdGlvbiBhbmQgbGV2ZWwgcmVnaXN0ZXJzLgoKICAgIElzc3VlIHdhcyBzZWVuIG9uIGEgbmV3IGJvYXJkIHdpdGggdGhlIG5SZXNldCBsaW5lIG9mIHRoZSBOT1IgZmxhc2gKICAgIGNvbm5lY3RlZCB0byBhIEdQSU8uIFNldHRpbmcgdGhlIGRpcmVjdGlvbiByZWdpc3RlciBwdXRzIHRoZSBOT1IgZmxhc2gKICAgIGluIHJlc2V0IHNvIHRoZSBuZXh0IGluc3RydWN0aW9uIHRvIHNldCB0aGUgbGV2ZWwgY2Fubm90IGdldCBleGVjdXRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIEtvcnNnYWFyZCA8amFjbWV0QHN1bnNpdGUuZGs+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDcwMDdjNTk3NWVlOTAwYWQ3MDk4M2IwNjgxZDMyNTFlMjIxZjgzMjEKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUdWUgU2VwIDIgMDI6NTg6MzIgMjAwOCArMDIwMAoKICAgIGRvYy9xZW11X21pcHM6IGFkZCBkb2MgaG93dG8gZGVidWcgdS1ib290IHdpdGggZ2RiCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA3ZGViM2IzZWNkMGU4MWVmMDliYjY4YWEwZWMyMzQ2ZjRhZTBhNDA1CkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVdlZCBTZXAgMyAxNzoxNTo0NSAyMDA4ICswMjAwCgogICAgcHB4NHh4OiBGaXggYnJva2VuIERBU0FfU0lNIGJvYXJkCgogICAgVGhpcyBwYXRjaCBhZGRzIGluaXRkcmFtKCkgdG8gREFTQV9TSU0gYm9hcmRzIHRoYXQgaGFzIGJlZW4KICAgIHJlbW92ZWQgYWNjaWRlbnRhbGx5IGJ5IGEgcHJldmlvdXMgY29tbWl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDdlNDEwYWEzMGZiY2IxZDE5YTI2YmJmMWU4NGE5Y2E2MTAyZDUzNGIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBTZXAgMSAwODozNTozNyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBSZW1vdmUgcmVmZXJlbmNlIHRvIGNvbW1vbi9saXN0cy5vIGZyb20gc29tZSBlc2QgbGlua2VyIHNjcmlwdHMKCiAgICBUaGlzIHBhdGNoIHJlbW92ZXMgc29tZSBkaXJlY3QgcmVmZXJlbmNlcyB0byBjb21tb24vbGlzdHMubyBmcm9tIHNvbWUKICAgIGVzZCBsaW5rZXIgc2NyaXB0cy4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgbGlzdHMgc291cmNlIHdhcyBtb3ZlZAogICAgYW5kIGlzIG5vdCBpbiB0aGUgImNvbW1vbiIgZGlyZWN0b3J5IGFueW1vcmUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDk3YjA3MzRkNjVmOGEwYjAzZGYwYTMzNWEyYWRkYzc1OWRhNTYxMDcKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVHVlIFNlcCAyIDE2OjMzOjA1IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IFJlbW92ZSBvYnNvbGV0ZSBvciB1bnVzZWQgZnVuY3Rpb25zIGZyb20gc29tZSBlc2QgYm9hcmRzCgogICAgVGhpcyBwYXRjaCByZW1vdmVzIGluaXRkcmFtKCkgYW5kIHRlc3RkcmFtKCkgZnJvbSBtb3N0IGVzZCA0MDUgcGxhdGZvcm1zLgogICAgU29tZSBib2FyZHMgYWxzbyBoYXZlIGFuIGVtcHR5IGR1bW15IGltcGxlbWVudGF0aW9uIG9mCiAgICBtaXNjX2luaXRfZigpLiBUaGlzIGlzIGFsc28gcmVtb3ZlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxMDkyY2UyMThjNTE0ZTVjY2IxODQ1MGFjNWFmNTAxZDk2ZDZlM2U5CkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVR1ZSBTZXAgMiAxNTowNzo1NCAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgVk9NNDA1IGJvYXJkIGNvbmZpZ3VyYXRpb24KCiAgICAtIHJlbW92ZSBQQ0kgY29kZQogICAgLSBhZGQgY29tbWFuZCBsaW5lIGVkaXRpbmcKICAgIC0gbWlub3IgY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDgzMGM4MDBlMjhlOTZlYzdjM2M2OTM2YTBiZDFiOTQ2MWYzZTc3ZDQKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVHVlIFNlcCAyIDE1OjA3OjUzIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IFJlbW92ZSBvYnNvbGV0ZSBpbml0ZHJhbSgpIGZ1bmN0aW9uIGZyb20gVk9NNDA1IGJvYXJkCgogICAgVGhpcyBwYXRjaCByZW1vdmVkIHRoZSBvYnNvbGV0ZSBpbml0ZHJhbSgpIGZ1bmN0aW9uIGZyb20KICAgIFZPTTQwNSBwbGF0Zm9ybSBmaWxlLgoKICAgIFNvbWUgbWlub3IgY2xlYW51cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzZDRkZDdhOTQxYjIzMjdiOGMyZmM1MzViNzgyY2EzMDdmZjhiNmM4CkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVR1ZSBTZXAgMiAxNTowNzo1MiAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBDbGVhbnVwIFZPTTQwNSBsaW5rZXIgc2NyaXB0CgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZmNhZmZkNTk3ZjZmNTE5MWIxMmNhNjZjMmE0Nzg5YmJkZWVhODVjMgpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtZkBlc2QuZXU+CkRhdGU6CVR1ZSBTZXAgMiAxNTowNzo1MSAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBBZGQgZmR0IHN1cHBvcnQgZm9yIFZPTTQwNSBib2FyZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWZAZXNkLmV1PgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDllYzM2N2FhMmM1ZGNmNzk1NThhYTJiMjA5YjQ1ZDc2ODY2NTRjMTQKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVHVlIFNlcCAyIDExOjM2OjE0IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IENvZGluZyBzdHlsZSBjbGVhbnVwCgogICAgV3JhcCBsb25nIGxpbmVzIGV0Yy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxN2U2NWMyMWFkZmI2Mzk4MGU2YWZmODBiZmJkMmRmMGVlYjEyMDYwCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVR1ZSBTZXAgMiAxMTozNTo1NiAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBFbmFibGUgVVNCIG9uIFBMVTQwNSBib2FyZHMKCiAgICBUaGlzIHBhdGNoIGVuYWJsZXMgdGhlIFBDSS1PSENJIGNvbnRyb2xsZXIgb24gUExVNDA1IGJvYXJkLgoKICAgIEFsc28gdGhlIGRlZmF1bHQgQ1BVIGZyZXF1ZW5jeSBpcyB1cGRhdGVkIHRvIDI2NiBNSHogYW5kCiAgICBjb21tYW5kIGxpbmUgZWRpdGluZyBpcyBlbmFibGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDQwZTQzZTNiODdkNTdiMmFjNzg2ZTI3ZjZlMjVhN2RmOTk0MGQ5M2IKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVHVlIFNlcCAyIDExOjM1OjM1IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IENsZWFudXAgUExVNDA1IHBsYXRmb3JtIGZpbGUKCiAgICBUaGlzIHBhdGNoCiAgICAtIHdyYXBzIHNvbWUgbG9uZyBsaW5lcwogICAgLSByZW1vdmVzIHVudXNlZC9vYnNvbGV0ZSBmdW5jdGlvbnM6IG1pc2NfaW5pdF9mKCkgYW5kIGluaXRkcmFtKCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWZAZXNkLmV1PgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGQ3NGNkYjFkMDYxNGFiNzgxMjhlMDczNWE1MWU3OTg4YTdiN2VhMzMKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVHVlIFNlcCAyIDExOjM1OjA0IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IENsZWFudXAgUExVNDA1IGxpbmtlciBzY3JpcHQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWZAZXNkLmV1PgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDNiYzEwNTRjZWMyZjZiMjU4MjJmMzAxZWE5MjJhMTYyMzNiYWE0YzcKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVHVlIFNlcCAyIDExOjM0OjM2IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBmZHQgc3VwcG9ydCBmb3IgUExVNDA1IGJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtZkBlc2QuZXU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNWEzZTQ4MGI3ODNiZmJjMTM5NTg2MjkzYTU0ZmI4NzVkN2M1YzVkNApBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUdWUgU2VwIDIgMTE6MzQ6MDggMjAwOCArMDIwMAoKICAgIHBwYzR4eDogSW5jcmVhc2UgVS1Cb290IHNpemUgdG8gMzg0a0IgZm9yIFBMVTQwNSBib2FyZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWZAZXNkLmV1PgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGJlMWIwZDI3NzdlMTc5MTkxYTU3YjEzOGI2NjA1NDdhMTdlNTVhYWQKQXV0aG9yOiBKb2NoZW4gRnJpZWRyaWNoIDxqb2NoZW5Ac2NyYW0uZGU+CkRhdGU6CVR1ZSBTZXAgMiAxMToyNDo1OSAyMDA4ICswMjAwCgogICAgRG9uJ3QgdGZ0cCB0byB1bmtub3duIGZsYXNoCgogICAgSWYgYSBib2FyZCBoYXMgYSB2YXJpYWJsZSBudW1iZXIgb2YgZmxhc2ggYmFua3MsIHRoZXJlIGFyZSBlbXB0eSBlbnRyaWVzCiAgICBpbiBmbGFzaF9pbmZvW10gYW5kIENGR19ESVJFQ1RfRkxBU0hfVEZUUCBpcyBzZXQsIHRmdHAgYm9vdCBmYWlscyB3aXRoCiAgICAiT3V0c2lkZSBhdmFpbGFibGUgRmxhc2giLiBUaGlzIHBhdGNoIHNraXBzIGZsYXNoIGJhbmtzIHdpdGggdW5rbm93bgogICAgZmxhc2ggaWRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvY2hlbiBGcmllZHJpY2ggPGpvY2hlbkBzY3JhbS5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMzMzMTQ0NzBhYjMyYTNmNTQxMmJiNjFiNWYzZDZjMjE2Yzg4YmY5YgpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJVGh1IEF1ZyAyOCAxMzo0MDo0NCAyMDA4ICswOTAwCgogICAgbmV0OiBzbWM5MTF4OiBBZGQgcGt0X2RhdGFfcHVsbCBhbmQgcGt0X2RhdGFfcHVzaCBmdW5jdGlvbgoKICAgIFRoZSBSU0s3MjAzIGJvYXJkIGhhcyB0aGUgU01TQzkxMTggd2lyZWQgdXAgJ2luY29ycmVjdGx5Jy4KICAgIEJ5dGUtc3dhcHBpbmcgaXMgbmVjZXNzYXJ5LCBhbmQgc28gcG9vciBwZXJmb3JtYW5jZSBpcyBpbmV2aXRhYmxlLgogICAgVGhpcyBwcm9ibGVtIGNhbm5vdCBldmFkZSBieSB0aGUgc3dhcCBmdW5jdGlvbiBvZiBDSElQLCB0aGlzIGNhbgogICAgZXZhZGUgYnkgc29mdHdhcmUgQnl0ZS1zd2FwcGluZy4KICAgIEFuZCB0aGlzIGhhcyBwcm9ibGVtIGJ5IEZJRk8gYWNjZXNzIG9ubHkuIHBrdF9kYXRhX3B1bGwvcGt0X2RhdGFfcHVzaAogICAgZnVuY3Rpb25zIG5lY2Vzc2FyeSB0byBzb2x2ZSB0aGlzIHByb2JsZW0uCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAxMGVmYTAyNGI4ZmZkOWU2YWFjYTYzZGE4YmRkZmRmZmRjNjcyMjc0CkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJU3VuIEF1ZyAzMSAyMDozNzowMCAyMDA4IC0wNzAwCgogICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgRUVQUk8xMDAgRXRoZXJuZXQgY29udHJvbGxlciB0byBib2FyZF9ldGhfaW5pdCgpCgogICAgQWZmZWN0ZWQgYm9hcmRzOgoJZGI2NDM2MAoJZGI2NDQ2MAoJa2F0bWFpCgl0YWlodQoJdGFpc2hhbgoJeXVjY2EKCWNwYzQ1CgljcHU4NwoJZVhhbGlvbgoJZWxwcGMKCWRlYnJpcwoJa3ZtZTA4MAoJbXBjODMxNWVyZGIKCWludGVncmF0b3JhcAoJaXhkcDQyNQoJb3hjCglwbTgyNgoJcG04MjgKCXBtODU0CglwbTg1NgoJcHBtYzd4eAoJc2MzCglzYzUyMF9zcHVuawoJc29yY2VyeQoJdHFtODI3MgoJdHFtODV4eAoJdXR4ODI0NQoKICAgIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYwogICAgQWxzbywgd3JhcHBlZCBjb250ZW50cyBvZiBwY2lfZXRoX2luaXQoKSBieSBDT05GSUdfUENJLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgOGNhMGIzZjk5YzRmY2U3YTU5OWRjYWY5MmFlMDk1NDk2ZGM4YzhlMApBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVN1biBBdWcgMzEgMTA6NDU6NDQgMjAwOCAtMDcwMAoKICAgIE1vdmVkIGluaXRpYWxpemF0aW9uIG9mIFRVTElQIEV0aGVybmV0IGNvbnRyb2xsZXIgdG8gYm9hcmRfZXRoX2luaXQoKQoKICAgIEFmZmVjdGVkIGJvYXJkczoKCWN1ODI0CgliYWI3eHgKCWFkY2lvcAoJZGFzYV9zaW0KCW1vdXNzZQoJbXBjODU0MGV2YWwKCW11c2Vua2kKCW12Ymx1ZQoJcGNpcHBjMi9wY2lwcGM2CglzYmM4MjQwCglzdHhzc2EKCiAgICBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIHRoZSBkcml2ZXIgZnJvbSBuZXQvZXRoLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGFkMzM4MWNmNDE2NzEyMGRiNWM3Yjg4ZTQ5NzAyNDVlMWQ1YzBhMzIKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglTdW4gQXVnIDMxIDEwOjQ0OjE5IDIwMDggLTA3MDAKCiAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBFMTAwMCBFdGhlcm5ldCBjb250cm9sbGVyIHRvIGJvYXJkX2V0aF9pbml0KCkKCiAgICBBZmZlY3RlZCBib2FyZHM6CglhcDEwMDAKCW12YmNfcAoJUE04NTQKCiAgICBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIHRoZSBkcml2ZXIgZnJvbSBuZXQvZXRoLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDRmY2UyYWNlYWY4YWZkMzFhMjUyYmM3ODJjOWRiYzQ5N2JmNDA0ODcKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglTdW4gQXVnIDMxIDEwOjQwOjUxIDIwMDggLTA3MDAKCiAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBwbGIyODAwIEV0aGVybmV0IGRyaXZlciB0byBib2FyZF9ldGhfaW5pdAoKICAgIEFmZmVjdGVkIGJvYXJkczoKCXB1cnBsZQoKICAgIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgY29udHJvbGxlciBmcm9tIG5ldC9ldGguYwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZTFkNzQ4MGI1ZGUxZmQ0ODMwYmY3Y2Y1ZTIyMzdkM2IwODQ2ZDA4ZApBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVN1biBBdWcgMzEgMTA6Mzk6MTIgMjAwOCAtMDcwMAoKICAgIE1vdmVkIGluaXRpYWxpemF0aW9uIG9mIE1QQzV4eHhfRkVDIEV0aGVybmV0IGRyaXZlciB0byBDUFUgZGlyZWN0b3J5CgogICAgTW9kaWZpZWQgYm9hcmRfZXRoX2luaXQoKSBmdW5jdGlvbnMgb2YgYm9hcmRzIHRoYXQgaGF2ZSB0aGlzIEZFQyBpbiBhZGRpdGlvbgogICAgdG8gb3RoZXIgRXRoZXJuZXQgY29udHJvbGxlcnMuCgogICAgQWZmZWN0ZWQgYm9hcmRzOgoJYmMzNDUwCglpY2VjdWJlCgltdmJjX3AKCW8yZG50CglwbTUyMAoJdG90YWw1MjAwCgl0cTUyMDAKCiAgICBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIGNvbnRyb2xsZXIgZnJvbSBuZXQvZXRoLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGEwYWFkMDhmOTQyN2FjMDAyMThiZGIyY2I2NDk4MzNjZTZlYzliOGQKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglTdW4gQXVnIDMxIDEwOjM2OjM4IDIwMDggLTA3MDAKCiAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBNUEM1MTJ4X0ZFQyBFdGhlcm5ldCBkcml2ZXIgdG8gQ1BVIGRpcmVjdG9yeQoKICAgIEFkZGVkIGEgY3B1X2V0aF9pbml0KCkgZnVuY3Rpb24gdG8gTVBDNTEyeCBDUFUgZGlyZWN0b3J5IGFuZAogICAgcmVtb3ZlZCBjb2RlIGZyb20gbmV0L2V0aC5jCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA4MjE4YmQyYWE2ODgyMGI4NzhhODQxMzQ5M2FlMTdmZDhkMjFmOTQ0CkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJU3VuIEF1ZyAzMSAxMDoxNjo1OSAyMDA4IC0wNzAwCgogICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgSW5jYUlQIEV0aGVybmV0IGNvbnRyb2xsZXIgdG8gYm9hcmRfZXRoX2luaXQKCiAgICBBZmZlY3RlZCBib2FyZHM6CglJbmNhSVAKCiAgICBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIHRoZSBkcml2ZXIgZnJvbSBuZXQvZXRoLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDE2NDg0NmVlYjI1Y2IyYTVlZGU3YWI5MzcxZmRjYTdmNDgzMWEwNTUKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglTdW4gQXVnIDMxIDEwOjE1OjI2IDIwMDggLTA3MDAKCiAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiAzQ09NIEV0aGVybmV0IGNvbnRyb2xsZXIgKEFtaWdhT25lKSB0byBib2FyZF9ldGhfaW5pdCgpCgoJQWZmZWN0ZWQgYm9hcmRzOgoJICAgIEFtaWdhT25lRzNTRQoKCVJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNmFjYTE0NWUwNjdlZmU3NTM5OGU5ZmFjOTc4MjJiZDM3MDBkZTBiMgpBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVN1biBBdWcgMzEgMTA6MTM6MzQgMjAwOCAtMDcwMAoKICAgIE1vdmVkIGluaXRpYWxpemF0aW9uIG9mIEdUNjQyNnggRXRoZXJuZXQgY29udHJvbGxlciB0byBib2FyZF9ldGhfaW5pdCgpCgogICAgQWZmZWN0ZWQgYm9hcmRzOgoJRVZCNjQyNjAKCVAzRzQKCVpVTUEKCiAgICBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIHRoZSBkcml2ZXIgZnJvbSBuZXQvZXRoLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGUzMDkwNTM0ZDYyMDQ1ZGNiNzNmNTM5MmJhY2M2NGE0ZThlNDQzZGMKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglTdW4gQXVnIDMxIDEwOjA4OjQzIDIwMDggLTA3MDAKCiAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBQQ05FVCBFdGhlcm5ldCBjb250cm9sbGVyIHRvIGJvYXJkX2V0aF9pbml0KCkKCiAgICBBZmZlY3RlZCBib2FyZHM6CglQTjYyCglzYzUyMF9jZHAKCiAgICBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIHRoZSBkcml2ZXIgZnJvbSBuZXQvZXRoLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGI5MDJiOGRkYTVlMWZkNGQ1ZmUyZjIwMmM3MWVlMzUyMWQyYzQwZWQKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglTdW4gQXVnIDMxIDEwOjA3OjE2IDIwMDggLTA3MDAKCiAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBOQVRTRU1JIEV0aGVybmV0IGNvbnRyb2xsZXIgdG8gYm9hcmRfZXRoX2luaXQoKQoKICAgIEFmZmVjdGVkIGJvYXJkczoKCWEzMDAwCgogICAgUmVtb3ZlZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgZHJpdmVyIGZyb20gbmV0L2V0aC5jCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAxOTQwMzYzM2RkNzAzMzM4OTNjMmRhNzkyNmExZDBkY2Q2ZGFiN2Q4CkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJU3VuIEF1ZyAzMSAxMDowMzoyMiAyMDA4IC0wNzAwCgogICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgTlM4MzgyWCBFdGhlcm5ldCBjb250cm9sbGVyIHRvIGJvYXJkX2V0aF9pbml0KCkKCiAgICBBZmZlY3RlZCBib2FyZHM6CgliYzM0NTAKCWNwY2k1MjAwCgltZWNwNTIwMAoJcGYyMDAwCglpY2VjdWJlCglvMmRudAoJcG01MjAKCXNhbmRwb2ludDgyNDUKCXRvdGFsNTIwMAoJdHFtNTIwMAoKICAgIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgY2NkZDEyZjgzZWY5MzcxOWZiZTg1ZjY0MmFhNGRjNjQ4Yjk0OThmMApBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVN1biBBdWcgMzEgMDk6NTk6MzMgMjAwOCAtMDcwMAoKICAgIE1vdmVkIGluaXRpYWxpemF0aW9uIG9mIFRTSTEwOCBFdGhlcm5ldCBjb250cm9sbGVyIHRvIGJvYXJkX2V0aF9pbml0KCkKCiAgICBBZmZlY3RlZCBib2FyZHM6CgltcGM3NDQ4aHBjMgoKICAgIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMGIyNTJmNTBhZTIxOGFlMTViZmI2M2FmNDQyMjc5NzI2ODZlYmM1NgpBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVN1biBBdWcgMzEgMjE6NDE6MDggMjAwOCAtMDcwMAoKICAgIE1vdmVkIGluaXRpYWxpemF0aW9uIG9mIFJUTDgxMzkgRXRoZXJuZXQgY29udHJvbGxlciB0byBib2FyZF9ldGhfaW5pdCgpCgogICAgQWZmZWN0ZWQgYm9hcmRzOgoJaGlkZGVuX2RyYWdvbgoJTVBDODU0NERTCglNUEM4NjEwSFBDTgoJUjJEUExVUwoJVEIwMjI5CgogICAgUmVtb3ZlZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgZHJpdmVyIGZyb20gbmV0L2V0aC5jCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAwMmQ2OTg5MWQ5NWVlNzZiMGU4NmUxNzE1YTRkYzBiOTY0YTU3Y2I3CkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJU3VuIEF1ZyAzMSAwOTo0OTo0MiAyMDA4IC0wNzAwCgogICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgUlRMODE2OSBFdGhlcm5ldCBjb250cm9sbGVyIHRvIGJvYXJkX2V0aF9pbml0KCkKCiAgICBBZmZlY3RlZCBib2FyZHM6CglsaW5rc3RhdGlvbgoJcjc3ODBtcAoKICAgIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgM2FlMDcxZTQ0MjU2MTQ0ZDZjMWUzZmViYjY1ZjZjNTZiZDQzMzc2OQpBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVR1ZSBBdWcgMTIgMjI6MTE6NTMgMjAwOCAtMDcwMAoKICAgIE1vdmVkIGluaXRpYWxpemF0aW9uIG9mIEV0aGVybmV0IGNvbnRyb2xsZXJzIG9uIEF0bWVsIEFUOTEgdG8gYm9hcmRfZXRoX2luaXQoKQoKICAgIFJlbW92ZWQgYXQ5MXNhbTlfZXRoX2luaXRpYWxpemUoKSBmcm9tIG5ldC9ldGguYwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgODk5NzNmOGE4MmMyOGFkODkzYzRjM2NjNTY4MzlhOGUxMGZlNWYxMwpBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVN1biBBdWcgMzEgMjI6MjI6MDQgMjAwOCAtMDcwMAoKICAgIEludHJvZHVjZSBuZXRkZXYuaCBoZWFkZXIgZmlsZSBhbmQgcmVtb3ZlIGV4dGVybnMKCiAgICBUaGlzIGFkZHJlc3NlcyBhbGwgZHJpdmVycyB3aG9zZSBpbml0aWFsaXplcnMgaGF2ZSBhbHJlYWR5CiAgICBiZWVuIG1vdmVkIHRvIGJvYXJkX2V0aF9pbml0KCkvY3B1X2V0aF9pbml0KCkuCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA1YThhMTYzYWMzOTRkOWY0ZjdmZjU3ZjQxNWQ4MmJkNjczYjAwNjhjCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglTdW4gQXVnIDMxIDE2OjMzOjMwIDIwMDggLTA1MDAKCiAgICBBZGQgcGl4aXNfc2V0X3NnbWlpIGNvbW1hbmQKCiAgICBUaGUgODU0NERTIGFuZCA4NTcyRFMgcGxhdGZvcm1zIHN1cHBvcnQgYW4gb3B0aW9uYWwgU0dNSUkgcmlzZXIgY2FyZCB0bwogICAgZXhwb3NlIGV0aGVybmV0IG92ZXIgYW4gU0dNSUkgaW50ZXJmYWNlLiAgT25jZSB0aGUgY2FyZCBpcyBpbiwgaXQgaXMgYWxzbwogICAgbmVjZXNzYXJ5IHRvIGNvbmZpZ3VyZSB0aGUgYm9hcmQgc3VjaCB0aGF0IGl0IHVzZXMgdGhlIGNhcmQsIHJhdGhlciB0aGFuCiAgICB0aGUgb24tYm9hcmQgZXRoZXJuZXQgcG9ydHMuICBUaGlzIGNhbiBlaXRoZXIgYmUgZG9uZSBieSBmbGlwcGluZyBkaXAgc3dpdGNoZXMKICAgIG9uIHRoZSBtb3RoZXJib2FyZCwgb3IgYnkgbW9kaWZ5aW5nIHJlZ2lzdGVycyBpbiB0aGUgcGl4aXMuICBFaXRoZXIgd2F5CiAgICByZXF1aXJlcyBhIHJlYm9vdC4KCiAgICBUaGlzIGFkZHMgYSBjb21tYW5kIHRvIGFsbG93IHVzZXJzIHRvIGNob29zZSB3aGljaCBwb3J0cyBhcmUgcm91dGVkIHRocm91Z2gKICAgIHRoZSBTR01JSSBjYXJkLCBhbmQgd2hpY2ggdGhyb3VnaCB0aGUgb25ib2FyZCBwb3J0cy4gIEl0IGFsc28gYWxsb3dzIHVzZXJzCiAgICB0byByZXZlcnQgdG8gdGhlIGN1cnJlbnQgc3dpdGNoIHNldHRpbmdzLgoKICAgIFRoaXMgY29kZSBkb2VzIG5vdCB3b3JrIG9uIHRoZSA4NTcyLCBhcyB0aGUgUElYSVMgaXMgZGlmZmVyZW50LgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMjE2ZjJhNzE1NmE1ZmRlN2I0N2FkYzQwYWQ1NTNjODg4YTljYmFhNwpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIEF1ZyAzMSAxNjozMzoyOSAyMDA4IC0wNTAwCgogICAgQWRkIFNHTUlJIHN1cHBvcnQgZm9yIHRoZSA4NTQ0IERTCgogICAgVGhlIDg1NDQgRFMgaGFzIGFuIG9wdGlvbmFsIFNHTUlJIFJpc2VyIGNhcmQsIHdoaWNoIHVzZXMgZGlmZmVyZW50IFBIWQogICAgYWRkcmVzc2VzLglDaGVjayBpZiB3ZSBhcmUgaW4gU0dNSUkgbW9kZSwgYW5kIGludm9rZSB0aGUgU0dNSUkgUmlzZXIKICAgIHNldHVwIGNvZGUgaWYgc28uCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA2NTJmN2MyZWVmNzZhMTM0MDkyOGJkNjYwODQ1NDQxZTkzMmQ4NmEyCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglTdW4gQXVnIDMxIDE2OjMzOjI4IDIwMDggLTA1MDAKCiAgICBBZGQgc3VwcG9ydCBmb3IgRnJlZXNjYWxlIFNHTUlJIFJpc2VyIENhcmQKCiAgICBUaGUgODU0NERTIGFuZCA4NTcyRFMgc3lzdGVtcyBoYXZlIGFuIG9wdGlvbmFsIFNHTUlJIHJpc2VyIGNhcmQgd2hpY2gKICAgIGV4cG9zZXMgbmV3IGV0aGVybmV0IHBvcnRzIHdoaWNoIGFyZSBjb25uZWN0ZWQgdG8gdGhlIGVUU0VDcyB2aWEgYW4KICAgIFNHTUlJIGludGVyZmFjZS4gIFRoZSBTR01JSSBQSFlzIGZvciB0aGlzIGJvYXJkIGFyZSBvZmZzZXQgZnJvbSB0aGUgc3RhbmRhcmQKICAgIFBIWSBhZGRyZXNzZXMsIHNvIHRoaXMgY29kZSBtb2RpZmllcyB0aGUgcGFzc2VkIGluIHRzZWNfaW5mbyBzdHJ1Y3R1cmUgdG8KICAgIHVzZSB0aGUgU0dNSUkgUEhZcyBvbiB0aGUgY2FyZCwgaW5zdGVhZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDJhYmUzNjFjMDNiNDNlNmRjZjY4ZjU0ZTk2YjVjMDUxNTZjNDkyODQKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVN1biBBdWcgMzEgMTY6MzM6MjcgMjAwOCAtMDUwMAoKICAgIEFkZCBTR01JSSBzdXBwb3J0IHRvIHRoZSB0c2VjCgogICAgQWRkcyBzdXBwb3J0IGZvciBjb25maWd1cmluZyB0aGUgVEJJIHRvIHRhbGsgcHJvcGVybHkgd2l0aCB0aGUgU2VyRGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNzViOWQ0YWUwZDY5ZjIxNGVhYjY0MWNhZjEyY2U4YWY4M2EzOWE0MgpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIEF1ZyAzMSAxNjozMzoyNiAyMDA4IC0wNTAwCgogICAgUGFzcyBpbiB0c2VjX2luZm8gc3RydWN0IHRocm91Z2ggdHNlY19pbml0aWFsaXplCgogICAgVGhlIHRzZWMgZHJpdmVyIGNvbnRhaW5zIGEgaGFyZC1jb2RlZCBhcnJheSBvZiBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uCiAgICBmb3IgdGhlIHRzZWMgZXRoZXJuZXQgY29udHJvbGxlcnMuCVdlIGNyZWF0ZSBhIGRlZmF1bHQgZnVuY3Rpb24gdGhhdCB3b3JrcwogICAgZm9yIG1vc3QgdHNlY3MsIGFuZCBhbGxvdyB0aGF0IHRvIGJlIG92ZXJyaWRkZW4gYnkgYm9hcmQgY29kZS4gIEl0IGNyZWF0ZXMKICAgIGFuIGFycmF5IG9mIHRzZWNfaW5mbyBzdHJ1Y3R1cmVzLCB3aGljaCBhcmUgdGhlbiBwYXJzZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcKICAgIGRyaXZlciBpbnN0YW5jZSB0byBkZXRlcm1pbmUgY29uZmlndXJhdGlvbi4gIEFsc28sIGFkZCByZWdzLCBtaWlyZWdzLCBhbmQKICAgIGRldm5hbWUgZmllbGRzIHRvIHRoZSB0c2VjX2luZm8gc3RydWN0dXJlLCBzbyB0aGF0IHdlIGRvbid0IG5lZWQgdGhlIGtsdWRneQogICAgImluZGV4IiBwYXJhbWV0ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBkZDNkMWY1NmEwMWY0NjBkNTYwNzY2MTI2ZWU3ZGZlZDJlYTliYzEwCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglTdW4gQXVnIDMxIDE2OjMzOjI1IDIwMDggLTA1MDAKCiAgICB0c2VjOiBNb3ZlIHRzZWMuaCB0byBpbmNsdWRlLwoKICAgIFRoaXMgaXMgdG8gcHJlcGFyZSB0aGUgd2F5IGZvciBib2FyZCBjb2RlIHBhc3NpbmcgaW4gdGhlIHRzZWNfaW5mbyBzdHJ1Y3R1cmUKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGQyM2RjMzk0YWE2OTA5M2I2MzI2YWQ5MTdkYjA0ZGMwZDFhZmYzZjgKQXV0aG9yOiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgpEYXRlOglGcmkgSnVuIDYgMTU6NTI6NDQgMjAwOCArMDIwMAoKICAgIFBIWTogQWRkIHN1cHBvcnQgZm9yIHRoZSBNODhFMTEyMVIgTWFydmVsbCBjaGlwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDE3MTFmM2JkMTZkMWM1ZTlkMTdiNGMwMTk4YjQyNmQ4Njk5OTc4MWIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgU2VwIDIgMjE6MTc6MzYgMjAwOCArMDIwMAoKICAgIGZ3X2Vudi5jOiBmaXggYnVpbGQgcHJvYmxlbXMgd2l0aCBNVERfVkVSU0lPTj1vbGQKCiAgICAoYXMgbmVlZGVkIHRvIHN1cHBvcnQgb2xkIDIuNCBMaW51eCBrZXJuZWwgYmFzZWQgcmVsZWFzZXMpCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA2MjhmZmQ3M2JjZmYwYzlmM2JjNWE4ZWViMmM3NDU1ZmU5ZDI4YTUxCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJTW9uIFNlcCAxIDE3OjExOjI2IDIwMDggKzAyMDAKCiAgICBkZXZpY2U6IG1ha2UgZGV2aWNlX3JlZ2lzdGVyKCkgY2xvbmUgdGhlIGRldmljZQoKICAgIFRoaXMgaXMgZXhwZWN0ZWQgYnkgdGhlIGNhbGxlcnMsIGJ1dCB0aGlzIGZhY3Qgd2FzIGhpZGRlbiB3ZWxsIHdpdGhpbgogICAgdGhlIG9sZCBsaXN0IGltcGxlbWVudGF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYmFmNDQ5ZmM1ZmY5NmYwNzFiYjBlMzc4OWZkMzI2NWY2ZDRmZDlhMApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJTW9uIFNlcCAxIDE0OjAwOjA3IDIwMDggKzAyMDAKCiAgICBhdnIzMjogQWRkIHN1cHBvcnQgZm9yICJHUElPIiBwb3J0IG11eAoKICAgIFRoZSAiR1BJTyIgcG9ydCBtdXggaXMgdXNlZCBvbiBBVlIzMiBVQzMgcGFydHMgYXMgd2VsbCBhcyBBVDMyQVA3MjAwIGFuZAogICAgYWxsIGxhdGVyIEFWUjMyIGNoaXBzLiBUaGlzIHBhdGNoIGFkZHMgYSBkcml2ZXIgZm9yIGl0LCBpbXBsZW1lbnRpbmcgdGhlCiAgICBzYW1lIEFQSSBhcyB0aGUgZXhpc3RpbmcgcG9ydG11eC1waW8gZHJpdmVyIGJ1dCB3aXRoIG1vcmUgZnVuY3Rpb25hbGl0eS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgZDkyODUyNTc5NTQ2YzQ2YmRhYWM5NzhlMGI2NzY3YTY2NDViNjllMApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJRnJpIEF1ZyAxNSAxNTowMjoyOSAyMDA4ICswMjAwCgogICAgYXRzdGsxMDAwOiBDb252ZXJ0IHRvIG5ldy1zdHlsZSBtYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCAyNWU2ODU0ZDQyYzExMDQ2YTQ2ODU3NjE3OWI1NDk0Zjg1MDMxMWIyCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglTdW4gQXVnIDMxIDE4OjQ2OjM1IDIwMDggKzAyMDAKCiAgICBhdnIzMjogdXNlIGJvYXJkX2Vhcmx5X2luaXRfciBpbnN0ZWFkIG9mIGJvYXJkX2luaXRfaW5mbwoKICAgIFJlcGxhY2UgdGhlIGF2cjMyLXNwZWNpZmljIGJvYXJkX2luaXRfaW5mbyBob29rIGJ5IHRoZSBzdGFuZGFyZAogICAgYm9hcmRfZWFybHlfaW5pdF9yIGhvb2sgYW5kIG1ha2UgaXQgb3B0aW9uYWwuCgogICAgYm9hcmRfZWFybHlfaW5pdF9yKCkgcnVucyBzb21ld2hhdCBlYXJsaWVyIHRoYW4gYm9hcmRfaW5pdF9pbmZvIHVzZWQgdG8KICAgIGRvLCBidXQgdGhpcyBpc24ndCBhIHByb2JsZW0gZm9yIGFueSBvZiB0aGUgaW4tdHJlZSBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDM2ZDM3NWZhZjVjZmY5OGU4ZGNhMzJhYWJiYmIxZWM2MDM2NDM3ZGQKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVN1biBBdWcgMzEgMTg6MjQ6MjQgMjAwOCArMDIwMAoKICAgIGF2cjMyOiBVc2UgYm9hcmRfcG9zdGNsa19pbml0IGluc3RlYWQgb2YgZ2Nsa19pbml0CgogICAgUmVwbGFjZSB0aGUgYXZyMzItc3BlY2lmaWMgZ2Nsa19pbml0KCkgYm9hcmQgaG9vayB3aXRoIHRoZSBzdGFuZGFyZAogICAgYm9hcmRfcG9zdGNsa19pbml0KCkgaG9vayB3aGljaCBpcyBzdXBwb3NlZCB0byBydW4gYXQgdGhlIHNhbWUgcG9pbnQKICAgIGR1cmluZyBpbml0aWFsaXphdGlvbi4KCiAgICBQcm92aWRlIGEgZHVtbXkgd2VhayBhbGlhcyBmb3IgYm9hcmRzIG5vdCBpbXBsZW1lbnRpbmcgdGhpcyBob29rLiBUaGUKICAgIGNvc3Qgb2YgdGhpcyBpczoKICAgICAgLSAyIGJ5dGVzIGZvciB0aGUgZHVtbXkgZnVuY3Rpb24gKHJldGFsIDApCiAgICAgIC0gMiBieXRlcyBmb3IgZWFjaCB1bm5lY2Vzc2FyeSBmdW5jdGlvbiBjYWxsIChzaG9ydCByY2FsbCkKCiAgICB3aGljaCBpcyBhIHByZXR0eSBzbWFsbCBwcmljZSB0byBwYXkgZm9yIGF2b2lkaW5nIGxvdHMgb2YgI2lmZGVmCiAgICBjbHV0dGVyLiBJbiB0aGlzIHBhcnRpY3VsYXIgY2FzZSwgYWxsIGJvYXJkcyBwcm9iYWJseSBlbmQgdXAgc2xpZ2h0bHkKICAgIHNtYWxsZXIgYmVjYXVzZSB3ZSBhdm9pZCB0aGUgY29uZGl0aW9uYWwgY2hlY2tpbmcgaWYgdGhlIGdjbGtfaW5pdAogICAgc3ltYm9sIGlzIE5VTEwuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGFiZGRlMmIxZDU3MGIxZWU3NzYwNmJmNzgzNDQ0ZmNkZGY3ZjA5NjUKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVN1biBBdWcgMzEgMTg6MDc6MzUgMjAwOCArMDIwMAoKICAgIGhhbW1lcmhlYWQ6IFVzZSBnY2xrIGhlbHBlciBmdW5jdGlvbnMKCiAgICBVc2UgdGhlIG5ldyBnY2xrIGhlbHBlciBmdW5jdGlvbnMgdG8gc2V0IHVwIHRoZSBQSFkgY2xvY2sgaW5zdGVhZCBvZgogICAgYWNjZXNzaW5nIHRoZSBQTSByZWdpc3RlcnMgZGlyZWN0bHkuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDk4MDkwY2Q3NWNkYjQwYjJhYjk0YzgwNmMzMzg1NDBhNTcxNjc0OGIKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVN1biBBdWcgMzEgMTg6MDU6MzIgMjAwOCArMDIwMAoKICAgIGF2cjMyOiBBZGQgZ2NsayBoZWxwZXIgZnVuY3Rpb25zCgogICAgQWRkIHR3byBoZWxwZXIgZnVuY3Rpb25zIGZvciBjb25maWd1cmluZyBhbmQgZW5hYmxpbmcgZ2VuZXJpYyBjbG9ja3M6CiAgICAgIC0gZ2Nsa19lbmFibGVfb3V0cHV0OiBFbmFibGVzIG91dHB1dCBvbiBhIEdDTEt4IHBpbgogICAgICAtIGdjbGtfc2V0X3JhdGU6IENvbmZpZ3VyZXMgYSBnY2xrIHRvIHJ1biBhdCBhIHNwZWNpZmljIHJhdGUKCiAgICBUaGlzIHNob3VsZCBlbGltaW5hdGUgYW55IHJlYXNvbiB0byBnbyBtdWNraW5nIGFib3V0IHdpdGggUE0gcmVnaXN0ZXJzCiAgICBmcm9tIGJvYXJkIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGFiMGRmMzZmYzdkYjlkZGEwYjc4NmI5MDlmNjUzZTI3OWRmZWI5Y2YKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CUZyaSBBdWcgMjkgMjE6MDk6NDkgMjAwOCArMDIwMAoKICAgIGF2cjMyOiByZWZhY3RvciB0aGUgcG9ydG11eC9ncGlvIGNvZGUKCiAgICAgIC0gU2VwYXJhdGUgdGhlIHBvcnRtdXggY29uZmlndXJhdGlvbiBmdW5jdGlvbmFsaXR5IGZyb20gdGhlIEdQSU8gcGluCgljb250cm9sIEFQSS4KICAgICAgLSBTZXBhcmF0ZSB0aGUgY29udHJvbGxlci1zcGVjaWZpYyBjb2RlIGZyb20gdGhlIGNoaXAtc3BlY2lmaWMgY29kZS4KICAgICAgLSBBbGxvdyAiZ2FuZ2VkIiBwb3J0IGNvbmZpZ3VyYXRpb24gKG11bHRpcGxlIHBpbnMgYXQgb25jZSkuCiAgICAgIC0gQWRkIG1vcmUgZmxleGliaWxpdHkgdG8gdGhlICJjYW5uZWQiIHBlcmlwaGVyYWwgc2VsZWN0IGZ1bmN0aW9uczoKCSAgLSBBbGxvdyB1c2luZyBtb3JlIHRoYW4gMjMgYWRkcmVzcyBiaXRzLCBtb3JlIGNoaXAgc2VsZWN0cywgYXMKCXdlbGwgYXMgTkFORC0gYW5kIENGLXNwZWNpZmljIHBpbnMuCgkgIC0gTWFrZSB0aGUgTUFDQiBTUEVFRCBwaW4gb3B0aW9uYWwsIGFuZCBjaG9vc2UgYmV0d2VlbiBNSUkvUk1JSQoJdXNpbmcgYSBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBhbiAjaWZkZWYuCgkgIC0gTWFrZSBpdCBwb3NzaWJsZSB0byB1c2Ugb3RoZXIgTU1DIHNsb3RzIHRoYW4gc2xvdCAwLCBhbmQgc3VwcG9ydAoJZGlmZmVyZW50IE1NQy9TRENhcmQgZGF0YSBidXMgd2lkdGhzLgogICAgICAtIFVzZSBtb3JlIHJlYXNvbmFibGUgcHVsbC11cCBkZWZhdWx0czsgZmxvYXRpbmcgcGlucyBtYXkgY29uc3VtZSBhCglsb3Qgb2YgcG93ZXIuCiAgICAgIC0gR2V0IHJpZCBvZiBzb21lIGN1c3RvbSBwb3J0bXV4IGNvZGUgZnJvbSB0aGUgbWltYzIwMCBib2FyZCBjb2RlLiBUaGUKCW9sZCBncGlvL3BvcnRtdXggQVBJIGNvdWxkbid0IHJlYWxseSBoYW5kbGUgaXRzIHJlcXVpcmVtZW50cywgYnV0Cgl0aGUgbmV3IG9uZSBjYW4uCiAgICAgIC0gQWRkIGRvY3VtZW50YXRpb24uCgogICAgVGhlIGVuZCByZXN1bHQgaXMgc2xpZ2h0bHkgc21hbGxlciBjb2RlIGZvciBhbGwgYm9hcmRzLiBXaGljaCBpc24ndAogICAgcmVhbGx5IHRoZSBwb2ludCwgYnV0IGF0IGxlYXN0IGl0IGlzbid0IGFueSBsYXJnZXIuCgogICAgVGhpcyBoYXMgYmVlbiB2ZXJpZmllZCBvbiBBVFNUSzEwMDIgYW5kIEFUTkdXMTAwLiBJJ2QgYXBwcmVjaWF0ZSBpZgogICAgdGhlIGJvYXJkIG1haW50YWluZXJzIGNvdWxkIGhlbHAgbWUgdGVzdCB0aGlzIG9uIHRoZWlyIGJvYXJkcy4gSW4KICAgIHBhcnRpY3VsYXIsIHRoZSBtaW1jMjAwIHBvcnQgaGFzIGxvc3QgYSBsb3Qgb2YgY29kZSwgc28gSSdtIGhvcGluZyBNYXJrCiAgICBjYW4gaGVscCBtZSBvdXQuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgogICAgQ2M6IEhhbnMtQ2hyaXN0aWFuIEVndHZlZHQgPGhhbnMtY2hyaXN0aWFuLmVndHZlZHRAYXRtZWwuY29tPgogICAgQ2M6IE1hcmsgSmFja3NvbiA8bXBmakBtaW1jLmNvLnVrPgogICAgQ2M6IEFsZXggUmFpbW9uZGkgPGFsZXgucmFpbW9uZGlAbWlyb21pY28uY2g+CiAgICBDYzogSnVsaWVuIE1heSA8anVsaWVuLm1heUBtaXJvbWljby5jaD4KCiAgICBDaGFuZ2VzIHNpbmNlIHYxOgogICAgICAqIEVuYWJsZSBwdWxsdXAgb24gTldBSVQKICAgICAgKiBBZGQgbWlzc2luZyBpbmNsdWRlIHRvIHBvcnRtdXgtcGlvLmgKICAgICAgKiBSZW5hbWUgQ09ORklHX1BJTzIgLT4gQ09ORklHX1BPUlRNVVhfUElPIHRvIG1hdGNoIGRvY3MKCmNvbW1pdCA0YzI0ZTgyODhjNjAxY2I3NzNhYjAyNTI4YjQ4YTg1Nzc5NzBlODY3CkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglTYXQgQXVnIDMwIDE3OjI4OjM2IDIwMDggKzAyMDAKCiAgICBhdnIzMjogZGF0YV9iaXRzIHNob3VsZCByZWZsZWN0IHRoZSBhY3R1YWwgbnVtYmVyIG9mIGRhdGEgYml0cwoKICAgIE1ha2UgdGhlIGRhdGFfYml0cyBlbnVtIGluIHN0cnVjdCBzZHJhbV9jb25maWcgcmVmbGVjdCB0aGUgYWN0dWFsIG51bWJlcgogICAgb2YgZGF0YSBiaXRzIG9uIHRoZSBidXMsIGkuZS4gMTYgb3IgMzIuIEhhdmluZyAwIG1lYW4gMTYgYml0cyBhbmQgMSBtZWFuCiAgICAzMiBiaXRzIGlzIGp1c3QgdG9vIGNvbmZ1c2luZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgNjZiN2JjNTE3NTMyNTgwOTcxOGQ4ZDQ5ZWYwNzNiYzEwMzZhZDcxYgpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJRnJpIEF1ZyAyOSAxNzo0ODoxOCAyMDA4ICswMjAwCgogICAgYXZyMzI6IFVwZGF0ZSBSRUFETUUKCiAgICBSZW1vdmUgc29tZSBvdXRkYXRlZCBhbmQvb3IgdW5uZWNlc3NhcnkgaW5mb3JtYXRpb24sIGFuZCBhZGQgdXBkYXRlZAogICAgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRvb2xjaGFpbiBhbmQgYnVpbGRyb290LgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBjNzVlNzcyYTJmMDYxYTUwOGJiYTI4ZGVkMWI1YmVhOTFmMDQ0MmIwCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglTdW4gQXVnIDMxIDIzOjI4OjE1IDIwMDggKzA5MDAKCiAgICBzaDogUmVtb3ZlIENDIGxpbmUgZnJvbSBib2FyZCdzIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDQ2OGVhZTA2NjBkZTZmZGZkOTk5OTk0NGM1MzZlY2M0Nzk3YmQ5NDQKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVN1biBBdWcgMzEgMjM6MjU6NTcgMjAwOCArMDkwMAoKICAgIHNoOiBSZXBsYWNlZCAiQC4vbWtjb25maWciIGZvciBAJChNS0NPTkZJRykKCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgM2FlYjFmZjc0ODJhNzMyNTAzMTg2Yzc0MmQzYTVkZWQ0YjdhMGQzNApBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJVGh1IEF1ZyAyOCAxNDo1MDo1MiAyMDA4ICswOTAwCgogICAgc2g6IEFkZCBzdXBwb3J0IHNoMiB0byBNQUtFQUxMCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDZmM2Q4YmI1ZmFhMTJkYmYzMDMxMzgyMjg2Nzg0Yzk3OGRmMDM4ZWUKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVRodSBBdWcgMjggMTQ6NTI6MjMgMjAwOCArMDkwMAoKICAgIHNoOiBGaXggY29tcGlsZSBlcnJvciByc2s3MjAzIGJvYXJkCgogICAgVGhpcyBib2FyZHMgdXNlZCBvbGQgdHlwZSBwcmVwcm9jZXNzb3IuCiAgICBUaGlzIHBhdGNoIGZpeCBjb21waWxlIGVycm9yLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCAxYzk4MTcyZTAyNTAxODU1MmU5YmI0YzQzYjBhYWVlNzZmNzliMWFhCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgpEYXRlOglUaHUgQXVnIDI4IDE0OjUzOjMxIDIwMDggKzA5MDAKCiAgICBzaDogRml4IGNvbXBpbGUgZXJyb3Igc2g3Nzg1bGNyIGJvYXJkCgogICAgVGhpcyBib2FyZHMgdXNlZCBvbGQgdHlwZSBwcmVwcm9jZXNzb3IuCiAgICBUaGlzIHBhdGNoIGZpeCBjb21waWxlIGVycm9yLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCA2ZjBkYTQ5NzJlNDhmOTlkMzdiYzUyMjgxNDk0MGE2MDIyY2QzMDg0CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglGcmkgQXVnIDIyIDE3OjM5OjA5IDIwMDggKzA5MDAKCiAgICBzaDogUmVuZXNhcyBTb2x1dGlvbnMgQVAzMjVSWEEgYm9hcmQgc3VwcG9ydAoKICAgIEFQMzI1UlhBIGlzIFNINzcyMydzIHJlZmVyZW5jZSBib2FyZC4KICAgIFRoaXMgaGFzIFNDSUYsIE5PUiBGbGFzaCwgRXRoZXJuZXQsIFVTQiBob3N0LCBMQ0RDLCBTRCBIb3N0LCBDYW1lcmEgYW5kIG90aGVyLgogICAgSW4gdGhpcyBwYXRjaCwgc3VwcG9ydCBTQ0lGLCBOT1IgRmxhc2gsIGFuZCBFdGhlcm5ldC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgYWIwOWY0MzNiNTBiYjgzYjVlNDQwYzMzNWJjMzgzOWVlMDY5ZTUzNApBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJRnJpIEF1ZyAyMiAxNzo0ODo1MSAyMDA4ICswOTAwCgogICAgc2g6IGFkZCBzdXBwb3J0IFJlbmVzYXMgU0g3NzIzCgogICAgUmVuZXNhcyBTSDc3MjMgaGFzIDUgU0NJRiwgU0QsIENhbWVyYSwgTENEQyBhbmQgb3RoZXIuCiAgICBUaGlzIHBhdGNoIHN1cHBvcnRzIENQVSByZWdpc3RlcidzIGhlYWRlciBmaWxlIGFuZCBTQ0lGIHNlcmlhbCBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGM2NTVmYWQwNmJhM2ZiMDQyZGJjNjY3NzI0YTQwZTFhOWEwOTEyNDgKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVN1biBBdWcgMzEgMjM6MDI6MDQgMjAwOCArMDkwMAoKICAgIHNoOiBSZW5lc2FzIFJTSysgNzIwMyBib2FyZCBzdXBwb3J0CgogICAgVGhpcyBhZGRzIGluaXRpYWwgc3VwcG9ydCBmb3IgdGhlIFJURSBSU0srIFNINzIwMyBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgNmVkZTc1M2RkZjUyYTdiMGY5OTJkOWJjY2JlNWU0YTA5NjhjYTQ3NQpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJVGh1IEp1bCAzIDIzOjExOjAyIDIwMDggKzA5MDAKCiAgICBzaDogQWRkIHN1cHBvcnQgUmVuZXNhcyBTSDcyMDMgcHJvY2Vzc29yCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDZhZDQzZDBkZDg2YjYxMjg5NWRkYzdmNDgwZWI2Y2RmZTc5M2FkZjkKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVN1biBBdWcgMzEgMjI6NDg6MzMgMjAwOCArMDkwMAoKICAgIHNoOiBBZGQgc3VwcG9ydCBTSDIvU0gyQSB3aGljaCBpcyBDUFUgb2YgUmVuZXNhcyBUZWNobm9sb2d5CgogICAgQWRkIHN1cHBvcnQgU0gyL1NIMkEgYmFzaWMgZnVuY3Rpb24uCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDBkNTNhNDdkYzA3MzdiNmFhM2EzOWNhZWUyMTQxMGMxNjk0NDFhZTUKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVN1biBBdWcgMzEgMjI6NDU6MDggMjAwOCArMDkwMAoKICAgIHNoOiBSZW5lc2FzIFIwUDc3ODVMQzAwMTFSTCBib2FyZCBzdXBwb3J0CgogICAgVGhpcyBib2FyZCBoYXMgU0g3Nzg1LCA1MTJNQiBERFIyLVNEUkFNLCBOT1IgRmxhc2gsCiAgICBHcmFwaGljLCBFdGhlcm5ldCwgVVNCLCBTRCwgUlRDLCBhbmQgSTJDIGNvbnRyb2xsZXIuCgogICAgVGhpcyBwYXRjaCBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKICAgICAtIDEyOE1CIEREUjItU0RSQU0gKDI5LWJpdCBhZGRyZXNzIG1vZGUgb25seSkKICAgICAtIE5PUiBGbGFzaAogICAgIC0gVVNCIGhvc3QKICAgICAtIEV0aGVybmV0CgogICAgU2lnbmVkLW9mZi1ieTogWW9zaGloaXJvIFNoaW1vZGEgPHNoaW1vZGEueW9zaGloaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGIwYjYyMTg5MjliYzdkZTlhNmJkYjhlNTY0ZmE4ZWMyZWZhNzFiNGUKQXV0aG9yOiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVRodSBKdWwgMTAgMTk6MzI6NTMgMjAwOCArMDkwMAoKICAgIHNoOiBhZGQgc3VwcG9ydCBmb3IgU0g3Nzg1CgogICAgUmVuZXNhcyBTSDc3ODUgaGFzIEREUjItU0RSQU0gY29udHJvbGxlciwgUENJLCBhbmQgb3RoZXIuCiAgICBUaGlzIHBhdGNoIHN1cHBvcnRzIENQVSByZWdpc3RlcidzIGhlYWRlciBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBkNmUwNDI1OGJlOGYyNDA4ODQ1NDY4ZDNjZjcyMmE0Y2YwNDMzNDQ1CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIEF1ZyAzMSAwNDo0NTo0MiAyMDA4ICswMjAwCgogICAgZGF2aW5jaTogZml4IHJlbWFpbmluZyBkbTY0NHhfZXRoCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAwOGFiNGUxNzgwZmE2M2M4OGRkNWE1YWI1MmY0ZmY0ZWQxZWUxODc4CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIEF1ZyAzMSAwNDoyNDo1NiAyMDA4ICswMjAwCgogICAgZnM6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGMxZGU3YTZkYWY5YzY1NzQ4NGUxYzZkNDMzZjAxZmNjZDQ5YTdmNDgKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gQXVnIDMxIDA0OjI0OjU1IDIwMDggKzAyMDAKCiAgICBkZXZpY2VzOiBtZXJnZSB0byBsaXN0X2hlYWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGVmMDI1NWZjNzVmMjg2NTVmOTY4MTQyMjA3OTI4N2Q2OGExNGRiYWEKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gQXVnIDMxIDA0OjI0OjUxIDIwMDggKzAyMDAKCiAgICB1cGRhdGUgbGludXgvbGlzdAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNzFjYjMxMjI3YmVlNzQxYjI3NGY2YzAyNzliMmFhYzFhYjhlMjhlMwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBBdWcgMzEgMDA6Mzk6NDggMjAwOCArMDIwMAoKICAgIHNtZGs2NDAwOiBhZGQgZ2l0aWdub3JlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBmOWY2OTJlMmIxNDZkNGUzMDZiNzc3ZTZkNWY2OWYxZDcyNWI5ZWI5CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIEF1ZyAzMSAwMDozOTo0OCAyMDA4ICswMjAwCgogICAgc21kazY0MDA6IFVzZSBDT05GSUdfRkxBU0hfQ0ZJX0RSSVZFUgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgN2MwZTVhOGRiM2QxMzU4YjBjZTNjYzg1YWRhMGRlNjM0MWNhNGExNQpBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KRGF0ZToJU3VuIEF1ZyAzMSAwMDozOTo0NyAyMDA4ICswMjAwCgogICAgc21kazY0MDA6IHJlbW92ZSByZWR1bmRhbnQgYm9vdGFyZ3MgZGVmaW5pdGlvbgoKICAgIERvdWJsZSBib290YXJncyBzZXR0aW5nIGxlYWRzIHRvIGEgZHVwbGljYXRlZCBlbnZpcm9ubWFudCBlbnRyeS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgMTFlZGNmZTI2MGYyMGRjZWE3OTI4NGEzZTk1MjcwOTg5ZDQzMzg1NApBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KRGF0ZToJU3VuIEF1ZyAzMSAwMDozOTo0NyAyMDA4ICswMjAwCgogICAgQVJNOiBBZGQgc3VwcG9ydCBmb3IgUzNDNjQwMCBiYXNlZCBTTURLNjQwMCBib2FyZAoKICAgIFNNREs2NDAwIGNhbiBvbmx5IGJvb3QgVS1Cb290IGZyb20gTkFORC1mbGFzaC4gVGhpcyBwYXRjaCBhZGRzIGEgbmFuZF9zcGwKICAgIGRyaXZlciBmb3IgaXQgdG9vLiBUaGUgYm9hcmQgY2FuIGFsc28gYm9vdCBmcm9tIHRoZSBOT1IgZmxhc2gsIGJ1dCBkdWUgdG8KICAgIGhhcmR3YXJlIGxpbWl0YXRpb25zIGl0IGNhbiBvbmx5IGFkZHJlc3MgNjRLaUIgb24gaXQsIHdoaWNoIGlzIG5vdCBlbm91Z2gKICAgIGZvciBVLUJvb3QuIEJhc2VkIG9uIHRoZSBvcmlnaW5hbCBzb3VyY2VzIGJ5IFNhbXN1bmcgZm9yIFUtQm9vdCAxLjEuNi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgZTAwNTZiMzQxMDY5Nzk2ZWFlYTExZWFlMGZjOGViOTNhM2RjZWFhYwpBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KRGF0ZToJU3VuIEF1ZyAzMSAwMDozOTo0NyAyMDA4ICswMjAwCgogICAgTkFORDogYWRkIE5BTkQgZHJpdmVyIGZvciBTM0M2NFhYCgogICAgQmFzZWQgb24gdGhlIG9yaWdpbmFsIFMzQzY0WFggTkFORCBkcml2ZXIgYnkgU2Ftc3VuZyBmb3IgVS1Cb290IDEuMS42LgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCAzZmU3YjU4OWY5Yzc0NjNkZjM5MDU2Zjg4NzIwMDZhNjdmNTZhOTFjCkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglTdW4gQXVnIDMxIDAwOjM5OjQ3IDIwMDggKzAyMDAKCiAgICBTM0M2NFhYOiByZW1vdmUgYnJva2VuIEhXRkxPVyBzdXBwb3J0IGZyb20gdGhlIHNlcmlhbCBkcml2ZXIKCiAgICBBcyBub3RlZCBieSBIYXJhbGQgV2VsdGUsIEhXRkxPVyBzdXBwb3J0IGluIHRoZSBTM0M2NFhYIHNlcmlhbCBkcml2ZXIgaXMKICAgIGJyb2tlbiBhbmQgY3VycmVudGx5IHVudXNlZC4gUmVtb3ZlIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCAyZmIyOGRjZjgyMDQ4MDQ1ZTFiZjUwMTRlOTM4ZTQ4NmZhNmMyMzgzCkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglTdW4gQXVnIDMxIDAwOjM5OjQ3IDIwMDggKzAyMDAKCiAgICBzZXJpYWw6IGFkZCBTM0M2NFhYIHNlcmlhbCBkcml2ZXIKCiAgICBCYXNlZCBvbiB0aGUgb3JpZ2luYWwgUzNDNjRYWCBVQVJUIGRyaXZlciBieSBTYW1zdW5nIGZvciBVLUJvb3QgMS4xLjYuCgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgoKY29tbWl0IDgyNjI4MTNjYTA0ZmM1N2Y1ZDg4NTZlMTgyODA4NWMxMzZlMGYxZWIKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CkRhdGU6CVN1biBBdWcgMzEgMDA6Mzk6NDYgMjAwOCArMDIwMAoKICAgIFVTQjogQWRkIHN1cHBvcnQgZm9yIE9IQ0kgY29udHJvbGxlciBvbiBTM0M2NDAwCgogICAgTm90aWNlOiBVU0Igb24gUzNDNjQwMCBjdXJyZW50bHkgd29ya3MgX29ubHlfIHdpdGggc3dpdGNoZWQgb2ZmIE1NVS4gT25lIGNvdWxkCiAgICB0cnkgdG8gZW5hYmxlIHRoZSBNTVUsIGJ1dCBtYXAgYWRkcmVzc2VzIDEtdG8tMSwgYW5kIGRpc2FibGUgZGF0YSBjYWNoZSwgdGhlbgogICAgaXQgc2hvdWxkIHdvcmsgdG9vIGFuZCB3ZSBjb3VsZCBzdGlsbCBwcm9maXQgZnJvbSBpbnN0cnVjdGlvbiBjYWNoZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgOWIwNzc3M2Y4ODgzNjY1YjAwMjUwMGMxOTA1MDdlOWZkOTliNzE4MQpBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KRGF0ZToJU3VuIEF1ZyAzMSAwMDozOTo0NiAyMDA4ICswMjAwCgogICAgQVJNOiBBZGQgYXJtMTE3NiBjb3JlIHdpdGggUzNDNjQwMCBTb0MKCiAgICBCYXNlZCBvbiB0aGUgb3JpZ2luYWwgUzNDNjRYWCBwb3J0IGJ5IFNhbXN1bmcgZm9yIFUtQm9vdCAxLjEuNi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgZmNhYWM1ODlhNjgxMTU4MTlkZGFkY2Y1YzE4ZGVkOWE1ZjllMmM3NQpBdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KRGF0ZToJU3VuIEF1ZyAzMSAwMDozOTo0NiAyMDA4ICswMjAwCgogICAgQVJNIERhVmluY2k6IENoYW5naW5nIGZ1bmN0aW9uIG5hbWVzIGZvciBFTUFDIGRyaXZlcgoKICAgIERNNjQ0eCBpcyBqdXN0IG9uZSBvZiBhIHNlcmllcyBvZiBEYVZpbmNpIGNoaXBzIHRoYXQgdXNlIHRoZSBFTUFDIGRyaXZlci4KICAgIEJ5IHJlcGxhY2luZyBhbGwgdGhlIGZ1bmN0aW9uIG5hbWVzIHRoYXQgc3RhcnQgd2l0aCBkbTY0NHhfKiB0byBkYXZpbmNpXyoKICAgIHdlIG1ha2UgdGhlc2UgZnVuY3Rpb24gbW9yZSBwb3J0YWJsZS4gSSBoYXZlIHRlc3RlZCB0aGlzIGNoYW5nZSBvbiBteSBFVk0uCiAgICBETTY0NjcgaXMgYW5vdGhlciBEYVZpbmNpIFNPQyB3aGljaCB1c2VzIHRoZSBFTUFDIGRyaXZlciBhbmQgaSB3aWxsCiAgICBiZSBzZW5kaW5nIHBhdGNoZXMgdGhhdCBhZGQgRGFWaW5jaSBETTY0Njcgc3VwcG9ydCB0byB0aGUgbGlzdCBzb29uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KCmNvbW1pdCBmYmJiMWRlMzY5Y2E3ZDVhY2U2ZjdiMGNlOWQwYWVlMjRhNmY0NTdiCkF1dGhvcjogR3VydXJhamEgSGViYmFyIEsgUiA8Z3VydXJhamFrckBzYW55by5jby5pbj4KRGF0ZToJU2F0IEF1ZyAzMCAyMzoyMTozMCAyMDA4ICswMjAwCgogICAgSW50ZWdyYXRvcltBUC9DUF0gLSBSZW1vdmUgdW51c2VkIGZpbGUgbWVtc2V0dXAuUwoKICAgIC0gbWVtc2V0dXAucyBpcyBjaGFuZ2VkL21lcmdlZCB0byBsb3dsZXZlbF9pbml0LlMKICAgICAgbWVtc2V0dXAuUyBoYXMgYSBnbG9iYWwgbGFiZWwgbWVtc2V0dXAgdGhhdCBqdXN0IHJldHVybnMgYmFjayB0byBjYWxsZXIKICAgIC0gbWVtc2V0dXAgZ2xvYmFsIGxhYmVsIGlzIGNoYW5nZWQvbWVyZ2VkIHRvIGxvd2xldmVsX2luaXQKICAgICAgVGhpcyBsYWJlbCBpcyBub3QgY2FsbGVkIGZyb20gYW55d2hlcmUuCgogICAgU2lnbmVkLW9mZi1ieTogR3VydXJhamEgSGViYmFyIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgoKY29tbWl0IDg5ZDUxZDAyMmE2M2JlMWE4NTFlZGE5ODNjOGNiY2UxYTA0NGY2NWYKQXV0aG9yOiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KRGF0ZToJV2VkIEF1ZyAyNyAyMTozNTo1MiAyMDA4ICswMjAwCgogICAgQVJNIERhVmluY2k6IFN0YW5kYXJkaXplIG5hbWVzIG9mIGRpcmVjdG9yaWVzL2ZpbGVzCgogICAgQVJNIERhVmluY2k6IFN0YW5kYXJkaXplIG5hbWVzIG9mIGRpcmVjdG9yaWVzL2ZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAyNjRiYmRkMTFkMDFmMTRmNWVhNDYyOTU1NmFlNjNiMDBiMTM0MDJkCkF1dGhvcjogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+CkRhdGU6CUZyaSBKdWwgMTEgMTU6MTA6MTMgMjAwOCAtMDQwMAoKICAgIEFSTSBEYVZpbmNpOiBNb3ZlIGNvbW1vbiBmdW5jdGlvbnMgdG8gYm9hcmQvZGF2aW5jaS9jb21tb24KCiAgICBBUk0gRGFWaW5jaTogTW92ZSBjb21tb24gZnVuY3Rpb25zIHRvIGJvYXJkL2RhdmluY2kvY29tbW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgoKY29tbWl0IGMyYjRiMmU0ODE0ZjRhY2U5MDE1ZmRiNjQxMzI4OTQzMjc0MDBiZjAKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBBdWcgMjkgMTE6NTY6NDkgMjAwOCArMDIwMAoKICAgIHBwYzR4eC9OQU5EOiBBZGQgc2VsZWN0X2NoaXAgZnVuY3Rpb24gdG8gNHh4IE5ERkMgZHJpdmVyCgogICAgVGhpcyBmdW5jdGlvbiBpcyBuZWVkZWQgZm9yIHRoZSBuZXcgTkFORCBpbmZyYXN0cnVjdHVyZS4gV2Ugb25seSBuZWVkCiAgICBhIGR1bW15IGltcGxlbWVudGF0aW9uIHRob3VnaCBmb3IgdGhlIE5ERkMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDNkNGE3NDZlMmZiNDU0NWYwN2Q4NzEwNDk4MDVmYjM0YWU5N2NjOTQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBBdWcgMjkgMTI6MDY6MjcgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogSW5jcmVhc2UgaW1hZ2Ugc2l6ZSBmb3IgTkFORCBib290IHRhcmdldAoKICAgIFRoaXMgaXMgbmVlZGVkIHNpbmNlIG5vdyB3aXRoIEhVU0ggZW5hYmxlZCAoYW1jYy1jb21tb24uaCkgdGhlIGltYWdlCiAgICByZWFkIGZyb20gTkFORCBleGNlZWRzIHRoZSBwcmV2aW91cyBsaW1pdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNmI1MDQ5ZDA1NmNkOGVmNzJkMWYyZjQ2MWNlYjJkMDMzZDkzZjc1OQpBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVRodSBBdWcgMjggMjM6NTg6MzAgMjAwOCAtMDcwMAoKICAgIE1vdmUgTVBDNTEyeF9GRUMgZHJpdmVyIHRvIGRyaXZlcnMvbmV0CgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA4MGIwMGFmMDFiM2M5MTU0Nzc0ZGUyOTM2ZjA1YTA1MWU5MmY2YTAzCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJVGh1IEF1ZyAyOCAyMzo1ODoyOSAyMDA4IC0wNzAwCgogICAgTW92ZSBNUEM1eHh4X0ZFQyBkcml2ZXIgdG8gZHJpdmVycy9uZXQKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDNkZTdiZjBlNmIxYWQyNjA4MDE0MDk2YzgxOTJmMTMyMjliMmU5ZDcKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglGcmkgQXVnIDI5IDIxOjUzOjU3IDIwMDggKzAyMDAKCiAgICBjbWRfdGVybWluYWw6IHJlbW92ZSBubyBuZWVkIGlmZGVmCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA1NzgxMThiZGYxMjI4NzdhZTc2OTc3NmJlMDAyMjU1YmU0NDdiNGZhCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIEF1ZyAyOSAyMTo1Mzo1NyAyMDA4ICswMjAwCgogICAgY29tbW9uL01ha2VmaWxlOiBvcmRlciBieSBmdW5jdGlvbmFsaXR5CgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBiYTdiNWIyMzQ4YjY4NGNmOGVjNDI0YjJlMzhlMjY3ZGMxY2ZkMmZiCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIEF1ZyAyOSAyMTo1Mzo1NiAyMDA4ICswMjAwCgogICAgbWlpcGh5dXRpbDogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgODE3ODljMzlkYjNmMGY2YjYyMWRmOGMwZWM2NjAxNGQ3MDFmMzY4ZQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBBdWcgMjkgMjE6NTM6MzcgMjAwOCArMDIwMAoKICAgIGF1dG9zY3JpcHQ6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGJiZjUyZGY5YWE5NGZmYjExNWI4YjFlYmViMDBkMDEzNzRiYjBhMWQKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglGcmkgQXVnIDI5IDAxOjE4OjExIDIwMDggKzAyMDAKCiAgICBjcmMxNjogbW92ZSB0byBsaWJfZ2VuZXJpYwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNTUxOTU3NzNlYWNlZmIyMmRkNDgzYTNjNTYwZWEzMGExNDI2M2NlMQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBBdWcgMjkgMDE6MTg6MDEgMjAwOCArMDIwMAoKICAgIG1paXBoeWJiOiBtb3ZlIHRvIGRyaXZlcnMvbmV0L3BoeQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZTgzMTQwMzU5OTZhOTExOGFjNTk0OGRmMmZmOGEyZjIxNjFlZDY3YQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVRodSBBdWcgMjggMTI6MzE6NTEgMjAwOCArMDIwMAoKICAgIHNvZnRfc3BpOiBtb3ZlIHRvIGRyaXZlcnMvc3BpCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA0ZDc1ZTBhYTljYWNhNjRkNGExZDU1ZDk1Y2QxY2E1ZjMwZDlmYzU2CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVGh1IEF1ZyAyOCAxMjozMTo1MSAyMDA4ICswMjAwCgogICAgc29mdF9pMmM6IG1vdmUgdG8gZHJpdmVycy9pMmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDcxN2EyMjIyMjlmZGI3NzcwM2U5MTc0ZDBlYjA4YTRiNDFmZWJmNDkKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUaHUgQXVnIDI4IDEyOjMxOjQ4IDIwMDggKzAyMDAKCiAgICBndW56aXA6IG1vdmUgdG8gbGliX2dlbmVyaWMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDUyYWVmOGY5YmEyOGI3NDc5NzNiZjc2NzQxYzIzZGI2NThkNTc3M2MKQXV0aG9yOiBXb2xmZ2FuZyBPY2tlciA8d2VvQHJlY2Nvd2FyZS5kZT4KRGF0ZToJVHVlIEF1ZyAyNiAxOTo1NToyMyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBOQU5EIGNvbmZpZ3VyYXRpb24KCiAgICBNYWRlIE5BTkQgYmFuayBjb25maWd1cmF0aW9uIHNldHRpbmcgYSBjb25maWcgdmFyaWFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgT2NrZXIgPHdlb0ByZWNjb3dhcmUuZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNWJjNTQyYTU5M2FiYzllOTc0ZmJkMzQ3MDRhZjg1YzM3YzM2NmM2MApBdXRob3I6IFZpY3RvciBHYWxsYXJkbyA8dmdhbGxhcmRvQGFtY2MuY29tPgpEYXRlOglUaHUgQXVnIDI4IDE2OjAzOjI4IDIwMDggLTA3MDAKCiAgICBwcGM0eHg6IGZpeCBVSUMgZXh0ZXJuYWxfaW50ZXJydXB0IGhhbmcgb24gVUlDMAoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBVSUMgZXh0ZXJuYWxfaW50ZXJydXB0IGhhbmcgaWYgY3JpdGljYWwgb3Igbm9uLWNyaXRpY2FsCiAgICBpbnRlcnJ1cHQgaXMgc2V0IGF0IHRoZSBzYW1lIHRpbWUgYXMgYSBub3JtYWwgaW50ZXJydXB0IGlzIHNldCBvbiBVSUMwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFZpY3RvciBHYWxsYXJkbyA8dmdhbGxhcmRvQGFtY2MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDA0NzM3ZDVmZmQxNjI0OGNiODBhYjNkZDRmMzc2NTA1N2E4MDNmMTgKQXV0aG9yOiBQcm9keXV0ICBIYXphcmlrYSA8cGhhemFyaWthQGFtY2MuY29tPgpEYXRlOglXZWQgQXVnIDI3IDE2OjM5OjAwIDIwMDggLTA3MDAKCiAgICBwcGM0eHg6IE9wdGltaXphdGlvbnMvQ2xlYW51cHMgZm9yIElCTSBERFIyIE1lbW9yeSBDb250cm9sbGVyCgogICAgUmVtb3ZlZCBNYWdpYyBudW1iZXJzIGZyb20gSW5pdGlhbGl6YXRpb24gcHJlbG9hZCByZWdpc3RlcnMKICAgIFRlc3RlZCB3aXRoIEtpbGF1ZWEsIEdsYWNpZXIsIENhbnlvbmxhbmRzIGFuZCBLYXRtYWkgYm9hcmRzCiAgICBBYm91dCA1LTclIGltcHJvdmVtZW50IHNlZW4gZm9yIExNQmVuY2ggbWVtdGVzdHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQcm9keXV0IEhhemFyaWthIDxwaGF6YXJpa2FAYW1jYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOGE0OTA0MjJiZWQ2ODVjOTQ5MTI3NGVjOTk3ZjYyMDYxZDg4NjIwYgpBdXRob3I6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXVnIDI4IDEzOjE3OjA3IDIwMDggLTA2MDAKCiAgICBBRFM1MTIxOiBGaXggTk9SIGFuZCBDUExEIEFMRSB0aW1pbmcgZm9yIHJldiAyIHNpbGljb24KCiAgICBNUEM1MTIxIHJldiAyIHNpbGljb24gaGFzIGEgbmV3IHJlZ2lzdGVyIGZvciBjb250cm9sbGluZyBob3cgbG9uZwogICAgQ1MgaXMgYXNzZXJ0ZWQgYWZ0ZXIgZGVhc3NlcnRpb24gb2YgQUxFIGluIG11bHRpcGxleGVkIG1vZGUuCgogICAgVGhlIGRlZmF1bHQgaXMgdG8gYXNzZXJ0IENTIHRvZ2V0aGVyIHdpdGggQUxFLiAgVGhlIGFsdGVybmF0aXZlCiAgICBpcyB0byBhc3NlcnQgQ1MgKEFMRU4rMSkqTFBDX0NMSyBjbG9ja3MgYWZ0ZXIgZGVhc3NlcnRpb24gb2YgQUxFLgoKICAgIFRoZSBkZWZhdWx0IGlzIHdyb25nIGZvciB0aGUgTk9SIGZsYXNoIGFuZCBDUExEIG9uIHRoZSBBRFM1MTIxLgoKICAgIFRoaXMgcGF0Y2ggdHVybnMgb24gdGhlIGFsdGVybmF0aXZlIGZvciBDUzAgKE5PUikgYW5kIENTMiAoQ1BMRCkKICAgIGl0IGRvZXMgc28gY29uZGl0aW9uYWxseSBiYXNlZCBvbiBzaWxpY29uIHJldiAyLjAgb3IgZ3JlYXRlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aGEgSiBNYXJ4IDxtbWFyeEBzaWxpY29udGt4LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDVkOWE1ZWZhNGIzMzJmNDQyYjU0YTc1NWQ0OTk2OTEyM2MzYTg3NDIKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDE5IDAwOjU2OjQ2IDIwMDggKzA2MDAKCiAgICBBZGQgSTJDIGZyZXF1ZW5jeSBkaXZpZGVycyBmb3IgQ29sZEZpcmUKCiAgICBUaGUgZXhpc3RpbmcgSTJDIGZyZXFlbmN5IGRpdmlkZXJzIGZvciBGRFIgZG9lcyBub3QgYXBwbHkKICAgIHRvIENvbGRGaXJlIHBsYXRmb3JtczsgdGh1cywgYSBzZXBlcmF0ZSB0YWJsZSBpcyBhZGRlZAogICAgYmFzZWQgb24gTUNGNXh4eCBSZWZlcmVuY2UgTWFudWFsCgogICAgU2lnbmVkLW9mZi1ieTogTHVpZ2kgJ0NvbWlvJyBNYW50ZWxsaW5pIDxsdWlnaS5tYW50ZWxsaW5pQGlkZi1oaXQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBUYWJpIFRpbXVyIDx0aW11ckBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGVlYzU2N2E2N2UwMGQxZWQ4ZDk0MWU5MDk4YjdkNDIxZjQwOTFhYmYKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDE5IDAzOjAxOjE5IDIwMDggKzA2MDAKCiAgICBDb2xkRmlyZTogSTJDIGZpeCBmb3IgbXVsdGlwbGUgcGxhdGZvcm1zCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkNTNjZjZhOWM3NDIzY2JhNjY4Yjg2Nzk3ODY0ODY0NWY3MWMzMDkwCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEF1ZyAxOSAwMDozNzoxMyAyMDA4ICswNjAwCgogICAgQ29sZEZpcmU6IEFkZCBDT05GSUdfTUlJX0lOSVQgZm9yIE01MjcyQzMKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGY3OGNlZDMwMjhkNDEzMGIyNGEzMTg5NDNhNzBjZjU1ODRhYjE2ZjQKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDE5IDAwOjI2OjI1IDIwMDggKzA2MDAKCiAgICBDb2xkRmlyZTogTXVsdGlwbGUgZml4ZXMgZm9yIE1DRjU0NDV4IHBsYXRmb3JtcwoKICAgIEFkZCBGRUMgcGluIHNldCBhbmQgbWlpIHJlc2V0IGluIF9fbWlpX2luaXQoKS4gQ2hhbmdlCiAgICBsZWdhY3kgZmxhc2ggdmVuZG9yIGZyb20gMiB0byBBTUQgTEVHQUNZICgweEZGRjApLAogICAgY2hhbmdlIGNmaV9vZmZzZXQgdG8gMCwgYW5kIGNoYW5nZSBDRkdfRkxBU0hfQ0ZJIHRvCiAgICBDT05GSUdfRkxBU0hfQ0ZJX0xFR0FDWS4gQ29ycmVjdCBNNTQ0NTFFVkIgYW5kCiAgICBNNTQ0NTVFVkIgZW52IHNldHRpbmdzIGluIGNvbmZpZ3VyYXRpb24gZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ1NGU3MjViM2E5NTM3YjdmMjczYmJkMGNiY2ExODBmMjNhN2E2ZTgKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgQXVnIDE1IDE4OjI0OjI1IDIwMDggKzAwMDAKCiAgICBDb2xkRmlyZTogQ2hhbmdlIHRoZSBTRFJBTSBCUkQyV1QgdGltaW5nIGZyb20gMyB0byA3CgogICAgVGhlIHVzZXIgbWFudWFscyByZWNvbW1lbmQgNy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdXJ0IE1haGFuIDxrbWFoYW5AZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDc5ZTA3OTljZjZlODhkOThkNzdiMjE2YTU1MjM0YmY2NzRiNTlhNGUKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgQXVnIDE1IDE2OjUwOjA3IDIwMDggKzAwMDAKCiAgICBDb2xkRmlyZTogUmFpc2UgdWFydCBiYXVkcmF0ZSB0byAxMTUyMDAgYnBzCgogICAgTTUyNDlFVkIsIE01MjcxRVZCLCBNNTI3MkMzLCBNNTI3NUVWQiBhbmQgTTUyODJFVkIgcGxhdGZvcm1zCiAgICB1YXJ0IGJhdWRyYXRlIGluY3JlYXNlIGZyb20gMTkyMDAgdG8gMTE1MjAwIGJwcwoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYWI2YmE4NDI2ODI1NTJjY2YwNzFkMDAzNGRhMGEyMDYzM2QxZDFhYwpBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMTMgMTI6MDc6MDMgMjAwOCArMDAwMAoKICAgIENvbGRGaXJlOiBGaXggYm9hcmQuYyB3YXJuaW5nIG1lc3NhZ2UKCiAgICBJbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBuYW5kX2luaXQoKSB3YXJuaW5nIG1lc3NhZ2UKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDU3OThiMWM0NjUwZTlhODcxM2M5NWIyNWMxZTY2OWEyYmM4MGE5N2IKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgQXVnIDI3IDAxOjEwOjM0IDIwMDggLTA1MDAKCiAgICBGU0wgRERSOiBSZW1vdmUgZHVwbGljYXRlIHNldHRpbmcgb2YgY3MwX2JuZHMgcmVnaXN0ZXIgb24gODZ4eC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDI1OGMzN2IxNDczNTNiYzUyMmZmYzMzZGZiZDdkMGQ5Y2Q3YzMyZDcKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVGh1IEF1ZyAyMSAyMDo0NDo0OSAyMDA4ICswMjAwCgogICAgbXBjNTJ4eDogYWRkZWQgc3VwcG9ydCBmb3IgdGhlIE1QQzUyMDAgYmFzZWQgTVVDLk1DNTIgYm9hcmQgZnJvbSBNQU4uCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgOWNmZjQ0NDhhOWNiODgyZGVmZTZjOGJkZTczYjc3ZmMwYzYzNjc5OQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBdWcgMTkgMTQ6NDY6MzYgMjAwOCAtMDUwMAoKICAgIG1wYzg1eHg6IHJlbW92ZSByZWR1ZGFudCBjb2RlIHdpdGggbGliX3BwYy9pbnRlcnJ1cHRzLmMKCiAgICBGb3Igc29tZSByZWFzb24gd2UgZHVwbGljYXRlZCB0aGUgbWFqb3JpdHkgb2YgY29kZSBpbiBsaWJfcHBjL2ludGVycnVwdHMuYwogICAgbm90IHNob3cgaG93IHRoYXQgaGFwcGVuZWQsIGJ1dCB0aGVyZSBpcyBubyBnb29kIHJlYXNvbiBmb3IgaXQuCgogICAgVXNlIHRoZSBpbnRlcnJ1cHRfaW5pdF9jcHUoKSBhbmQgdGltZXJfaW50ZXJydXB0X2NwdSgpIHNpbmNlIGl0cyB3aHkKICAgIHRoZXkgZXhpc3QuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA5NDkwYTdmMWE5NDg0NjE3YmFkNzVjNjA4MDdjZTAyYzhhM2E2ZDU2CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEp1bCAyNSAxMzozMTowNSAyMDA4IC0wNTAwCgogICAgbXBjODV4eDogQWRkIHN1cHBvcnQgZm9yIHRoZSBNUEM4NTM2RFMgcmVmZXJlbmNlIGJvYXJkCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IFNyaWthbnRoIFNyaW5pdmFzYW4gPHNyaWthbnRoLnNyaW5pdmFzYW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERlamFuIE1pbmljIDxtaW5pY0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGVmNTBkNmMwNmVjZTc0ZmIxN2U4ZDc1MTBlNjJjYWQ5ZGY4YjgxMGQKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgQXVnIDEyIDExOjE0OjE5IDIwMDggLTA1MDAKCiAgICBtcGM4NXh4OiBBZGQgc3VwcG9ydCBmb3IgdGhlIE1QQzg1MzYKCiAgICBUaGUgTVBDODUzNiBBZGRzIFNESEMgYW5kIFNBVEEgY29udHJvbGxlcnMgdG8gdGhlIFBRMyBmYW1pbHkuICBXZQogICAgYWxzbyBoYXZlIFNFUkRFUyBpbml0IGNvZGUgZm9yIHRoZSA4NTM2LgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTcmlrYW50aCBTcmluaXZhc2FuIDxzcmlrYW50aC5zcmluaXZhc2FuQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBEZWphbiBNaW5pYyA8bWluaWNAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDEyOWJhNjE2YjM4MTNkZGU4NjFmMjVmM2Q4YTNjNDdjNWMzNmFkNWYKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgQXVnIDEyIDExOjEzOjA4IDIwMDggLTA1MDAKCiAgICBtcGM4NXh4OiBBZGQgc3VwcG9ydCBmb3IgdGhlIE1QQzg1NzJEUyByZWZlcmVuY2UgYm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDQ1N2NhZWNkYmNhM2RmMjFhOTNhYmZmMTllYWIxMmRiYzYxYjc4OTcKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgQXVnIDI3IDAxOjA1OjM1IDIwMDggLTA1MDAKCiAgICBGU0wgRERSOiBSZW1vdmUgb2xkIFNQRCBzdXBwb3J0IGZyb20gY3B1L21wYzg1eHgKCiAgICBBbGwgODV4eCBib2FyZHMgaGF2ZSBiZWVuIGNvbnZlcnRlZCB0byB0aGUgbmV3IGNvZGUgc28gd2UgY2FuCiAgICByZW1vdmUgdGhlIG9sZCBTUEQgRERSIHNldHVwIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAwZTc5MjdkYjEzODk3NjQ2OWU3MjU3ZTI5YzEzMzgwNTBhNTBmY2Q5CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEF1ZyAyNyAwMTowNDowNyAyMDA4IC0wNTAwCgogICAgRlNMIEREUjogQ29udmVydCBTVFhTU0EgdG8gbmV3IEREUiBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYzM2MGQ5Yjk3MGZiYjljMTM3NDRjMzU1ODc5NjcxMTY1YmJiOWI5ZQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBBdWcgMjcgMDE6MDM6NDIgMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IENvbnZlcnQgU1RYR1AzIHRvIG5ldyBERFIgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDhlNTUzMTNiN2FlMTIzNTJhMzQzZjliOTk2MmU2NjJkYmQ4OTcxODcKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgQXVnIDI2IDIzOjUyOjU4IDIwMDggLTA1MDAKCiAgICBGU0wgRERSOiBDb252ZXJ0IFNCQzg1NjAgdG8gbmV3IEREUiBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgOTY1OGJlYzJlOGY1NWQ1NmNhMWJlNzAwOTBjZTVhMzQ4YmU0OTgwZgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBdWcgMjYgMjM6NTI6MzIgMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IENvbnZlcnQgTVBDODU0MEVWQUwgdG8gbmV3IEREUiBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNmJmYThmNzIzY2ZkODJjNTVlM2VmNTYyMGFkZTM5NjkxNjQ3MGE3MApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBdWcgMjYgMjM6NTI6MDcgMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IENvbnZlcnQgUE04NTYgdG8gbmV3IEREUiBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZDUzYmQzZTE3YmQ0ZjQ2MDI1N2MxOTI1NTU2OWVhNmRjZmFhZTgxNwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBdWcgMjYgMjM6NTE6NDkgMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IENvbnZlcnQgUE04NTQgdG8gbmV3IEREUiBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMzNiOTA3OWJhMjA5MjZmMTQyMzhmZmY4NjNiNjhhOThlOTM4OTQ4ZQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBdWcgMjYgMjM6MTU6MjggMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IENvbnZlcnQgc2JjODU0OCB0byBuZXcgRERSIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBhOTQ3ZTRjN2ViMTVjZWExZDlmYjYzMzk1NWM1MTZhYWI1YWQzNWRkCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIEF1ZyAyNiAyMzoxNDoxNCAyMDA4IC0wNTAwCgogICAgRlNMIEREUjogQ29udmVydCBhdHVtODU0OCB0byBuZXcgRERSIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBiZTBiZDgyMzRiOTc3N2VjZDYzYzRjNjg2ZjcyYWYwNzBkODg2NTE3CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIEF1ZyAyNiAyMjo1Njo1NiAyMDA4IC0wNTAwCgogICAgRlNMIEREUjogQ29udmVydCBzb2NyYXRlcyB0byBuZXcgRERSIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAxMTY3YTJmZDU2MTM4YjcxNmUwMTM3MGM0MjY3ZjNiNzBiZjlmZmEwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIEF1ZyAyNiAwODowMjozMCAyMDA4IC0wNTAwCgogICAgRlNMIEREUjogQ29udmVydCBNUEM4NTQ0RFMgdG8gbmV3IEREUiBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZTZmNWIzNWI0MWRkYmQ2MzdiYjljYTRhZDk4NWIxZTBiMDdkYWUwZQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBNYXIgMTggMTM6NTE6MDUgMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IENvbnZlcnQgTVBDODU2OE1EUyB0byBuZXcgRERSIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZTMxZDJjMWUyYmM5NTRkYzMyZTMzYmIyMDc2MTM5Zjg1Yjk1ZjhlNgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBNYXIgMTggMTM6NTE6MDYgMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IENvbnZlcnQgTVBDODU0OENEUyB0byBuZXcgRERSIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYWExMWQ4NWNmMzE4Yjk2MWUwMjlmZTUwZDY4Y2E0N2QwMDRiY2U5MwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBNYXIgMTcgMTU6NDg6MTggMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IENvbnZlcnQgTVBDODU0MUNEUyB0byBuZXcgRERSIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMmI0MGVkYjEwZDgxZGE3YmJhNzI0ZWRiY2NkN2Y1Mzc3NzExMjU3OQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBNYXIgMTggMTE6MTI6NDIgMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IENvbnZlcnQgTVBDODU1NUFEUyB0byBuZXcgRERSIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgOGI2MjUxMTRlOGJjNWE2YjQzNjE4MTE2N2E2ZTdmY2QzMzAzZGQyYwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBNYXIgMTggMTE6MTI6NDQgMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IENvbnZlcnQgTVBDODU2MEFEUyB0byBuZXcgRERSIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgOTYxN2M4ZDQ5YTIxNzAzZWFmMTNhNDAzM2FiMWE1NmVlY2MwMzNjYwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CUZyaSBKdW4gNiAxMzoxMjoxOCAyMDA4IC0wNTAwCgogICAgRlNMIEREUjogQ29udmVydCBNUEM4NTQwQURTIHRvIG5ldyBERFIgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDJhNmMyZDdhYjJhNjY2NjBmNDBhNmNkM2RlMmViMjllZTI5ZDk2OTMKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgQXVnIDI2IDIxOjM0OjU1IDIwMDggLTA1MDAKCiAgICBGU0wgRERSOiBBZGQgODV4eCBzcGVjaWZpYyByZWdpc3RlciBzZXR0aW5nCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA2ZmIxYjczNDY4NDljY2QwYzIwMzA2MTQzZTMzNGY1Yjc2MTQzMDcwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIEp1biA5IDExOjA3OjQ2IDIwMDggLTA1MDAKCiAgICBGU0wgRERSOiBBZGQgZTUwMCBUTEIgaGVscGVyIGZvciBERFIgY29kZQoKICAgIFByb3ZpZGUgYSBoZWxwZXIgZnVuY3Rpb24gdGhhdCBib2FyZCBjb2RlIGNhbiBjYWxsIHRvIG1hcCBUTEJzIHdoZW4KICAgIHNldHRpbmcgdXAgRERSLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZDI2YjczOWFmZTVhNjc2MGJkMzQ1NzQzMTg4NzU5Y2Q5ZDBmM2I0NwpBdXRob3I6IEFuZHJldyBEeWVyIDxhZHllckByaWdodGhhbmR0ZWNoLmNvbT4KRGF0ZToJVHVlIEF1ZyAyNiAxNzowMzozOCAyMDA4IC0wNTAwCgogICAgZG05MDAwIHJlbW92ZSBkZWFkIGV4dGVybmFsIHBoeSBzdXBwb3J0LCBncGlvIGZpeAoKICAgIGRtOTAwMCBoYXMgY29kZSB0byBkZXRlY3QgYW5kIGluaXRpYWxpemUgZXh0ZXJuYWwgcGh5IHBhcnRzLCBidXQgbGF0ZXIKICAgIG9uIGluIHRoZSBjb2RlIHRoZSBwYXJ0IGlzIGZvcmNlZCB0byB1c2UgdGhlIGludGVybmFsIHBoeQogICAgdW5jb25kaXRpb25hbGx5LiAgUmVtb3ZlIHRoZSB1bnVzZWQvdW50ZXN0ZWQgY29kZS4KCiAgICBjaGFuZ2UgdGhlIEdQSU8gaW5pdGlhbGl6YXRpb24gc28gdGhhdCBvbmx5IHRoZSBHUElPIHVzZWQgYXMgYW4KICAgIGludGVybmFsIHBoeSByZXNldCAoaGFyZHdpcmVkIGluIHRoZSBjaGlwKSBpcyBzZXQgYXMgYW4gb3V0cHV0LiAgVGhlCiAgICByZW1haW5pbmcgR1BJTyBuZWVkIHRvIGJlIGhhbmRsZWQgYnkgYm9hcmQgc3BlY2lmaWMgY29kZSB0byBwcmV2ZW50CiAgICBwb3NzaWJsZSBkcml2ZSBjb25mbGljdHMuICBTZXQgYXMgaW5wdXRzIGZvciBzYWZldHkuCgogICAgcmVwbGFjZSBhIGZldyBtYWdpYyBudW1iZXJzIHdpdGggZGVmaW5lcwoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBEeWVyIDxhZHllckByaWdodGhhbmR0ZWNoLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYTE1NzNkYjBjMDdjOGJhOTllOWMzNzNiYjA3ZWNkNmY1OWRhNjcyYwpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVR1ZSBBdWcgMjYgMTE6MTc6NDggMjAwOCAtMDUwMAoKICAgIFN0YW5kYXJkaXplIGJvb3RwLCB0ZnRwYm9vdCwgcmFycGJvb3QsIGRoY3AsIGFuZCBuZnMgY29tbWFuZCBkZXNjcmlwdGlvbnMKCiAgICBjbWRfbmV0LmMgY29tbWFuZCBkZXNjcmlwdGlvbnMgd2VyZSB1cGRhdGVkIHRvIGRlc2NyaWJlIHRoZSBvcHRpb25hbAogICAgaG9zdElQYWRkciBhcmd1bWVudC4gIFRoZSBkaGNwIGNvbW1hbmQgaGVscCBtZXNzYWdlIHdhcyBhbHNvIHVwZGF0ZWQKICAgIHRvIG1vcmUgY2xvc2VseSByZWZsZWN0IHRoZSBvdGhlciBjb21tYW5kcyBpbiBjbWRfbmV0LmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA1MWRmZTEzODJlYmFmNjkxNDg1YmFkZmEwZWE1ZTc1YjA3MTA1MzFiCkF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CkRhdGU6CVdlZCBBdWcgMjAgMTE6MzA6MjggMjAwOCArMDIwMAoKICAgIEZpeCBib2d1cyBlcnJvciBtZXNzYWdlIGluIHRoZSBESENQIGhhbmRsZXIKCiAgICBUaGUgREhDUCBoYW5kbGVyIGhhcyAxIHN0YXRlIHRoYXQgaXMgbm90IGxpc3RlZCBpbiB0aGlzIGNhc2UsIGNhdXNpbmcgYQogICAgZmFpbHVyZSBtZXNzYWdlIHdoZW4gdGhlcmUgaXMgYWN0dWFsbHkgbm8gZmFpbHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNjEzNjU1MDFhMGUyY2FlOWMxZGYyODE4YjdiNWIzZjUyYzQ1MGQxOApBdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgpEYXRlOglXZWQgQXVnIDIwIDExOjMwOjI3IDIwMDggKzAyMDAKCiAgICBGaXggY29tcGlsZSBlcnJvciB3aGVuIENPTkZJR19CT09UUF9SQU5ET01fREVMQVkgaXMgc2V0LgoKICAgIFRoZSBvcHRpb24gQ09ORklHX0JPT1RQX1JBTkRPTV9ERUxBWSBkb2VzIG5vdCBjb21waWxlLCBiZWNhdXNlIG9mIGEKICAgIG1pc3NpbmcgZXh0ZXJuIGluc2lkZSB0aGUgbmV0L2Jvb3RwLmggaGVhZGVyCgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDE4MDNmN2Y5MWZmMzVjYTQwMjI1OTA2NWRmNzU1NzEwN2RjZjI4YTIKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDE5IDIxOjI2OjMyIDIwMDggKzAwMDAKCiAgICBDb2xkRmlyZTogQWRkIEZFQyBCdWZmZXIgZGVzY3JpcHRvcnMgaW4gU1JBTQoKICAgIEFkZCBGRUMgQnVmZmVyIGRlc2NyaXB0b3JzIGFuZCBkYXRhIGJ1ZmZlciBpbiBTUkFNIGZvcgogICAgZmFzdGVyIGV4ZWN1dGlvbiBhbmQgYWNjZXNzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDQyOWJlMjdjZTE5NTIxMGQ0YjlkZWNmOWU4NjdiOWNhNjE1NWE4N2QKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXVnIDIxIDIzOjU1OjExIDIwMDggKzAwMDAKCiAgICBGaXggQ29sZEZpcmUgRkVDIHdhcm5pbmcgbWVzc2FnZXMKCiAgICBUeXBlcyBtaXNtYXRjaCBhbmQgaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgaWNhY2hlX2ludmFsaWQoKQogICAgd2FybmluZyBtZXNzYWdlcwoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDZhMDAyMTcxMDk4ZTk2OGJkNWIzNjIzNDdkMjgzMTIyNGZhYjYwNDgKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglTYXQgSnVsIDEyIDAwOjE3OjUwIDIwMDggLTA3MDAKCiAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBTS0dFIEV0aGVybmV0IGRyaXZlciB0byBib2FyZCBjb2RlLgoKICAgIFRoZSBvbmx5IGJvYXJkIHVzaW5nIHRoaXMgZHJpdmVyIGlzIHRoZSBTTDgyNDUgYm9hcmQuCiAgICBSZW1vdmVkIGluaXRpYWxpemF0aW9uIGZvciB0aGUgZHJpdmVyIGZyb20gbmV0L2V0aC5jCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA4Mzc5ZjQyYmM3NDVlYjllNGNhNTUxYTMwZmQyZDBhNjNmNzQwZDc1CkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJU2F0IEp1bCAxMiAwMDowODo0NSAyMDA4IC0wNzAwCgogICAgTW92ZWQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUgZm9yIFNLOTggRXRoZXJuZXQgZHJpdmVyCgogICAgQnJ1dGUtZm9yY2UgcmVtb3ZhbCBvZiAjaWZkZWZzLiAgRGlkbid0IHRvdWNoIHRoZSBjb2RlLgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA2NWQzZDk5YzI4ZGMzNjNkMTVlYWVlNzgyMjVmZjY0M2RmNDk5Yjk3CkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJRnJpIEp1bCAxMSAyMzo0MjoxOSAyMDA4IC0wNzAwCgogICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgVUxJNTI2WCBFdGhlcm5ldCBkcml2ZXIgdG8gYm9hcmQgY29kZS4KCiAgICBUaGUgb25seSBib2FyZCB1c2luZyB0aGlzIGRyaXZlciBpcyB0aGUgRnJlZXNjYWxlIE1QQzg2MTBIUENEIGJvYXJkLgogICAgUmVtb3ZlZCBpbml0aWFsaXphdGlvbiBmb3IgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgOTE0OTQ3MzEzYTcxMGY1ZGNmMDZiZWFmN2YyYWEyNGYxZWJjY2U0ZgpBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CUZyaSBKdWwgMTEgMjM6MTU6MjggMjAwOCAtMDcwMAoKICAgIE1vdmVkIGluaXRpYWxpemF0aW9uIG9mIEJsYWNrZmluIEVNQUMgRXRoZXJuZXQgY29udHJvbGxlciB0byBib2FyZF9ldGhfaW5pdCgpCgogICAgQWRkZWQgYm9hcmRfZXRoX2luaXQoKSBmdW5jdGlvbiB0byBiZjUzNy1zdGFtcCBib2FyZC4KICAgIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gZm9yIHRoZSBCbGFja2luIEVNQUMgZHJpdmVyIGZyb20gbmV0L2V0aC5jCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBmYzM2M2NlMzU0MDhmMzQ4Y2FjY2VkNjg1MDVmMzc0N2E1M2UzZDdjCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJV2VkIEp1bCA5IDAxOjA0OjE5IDIwMDggLTA3MDAKCiAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBHUkVUSCBFdGhlcm5ldCBkcml2ZXIgdG8gQ1BVIGRpcmVjdG9yeQoKICAgIEFkZGVkIGEgY3B1X2V0aF9pbml0KCkgZnVuY3Rpb24gdG8gbGVvbjIvbGVvbjMgQ1BVIGRpcmVjdG9yaWVzIGFuZAogICAgcmVtb3ZlZCBjb2RlIGZyb20gbmV0L2V0aC5jCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA4Njg4MmI4MDc3MTMwOWJjZWIxMWM2YWNjZmQ3ZjZmOTBhZGU4YmZjCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJVHVlIEF1ZyAyNiAyMjoxNjoyNSAyMDA4IC0wNzAwCgogICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgTUNGRkVDIEV0aGVybmV0IGRyaXZlciB0byBDUFUgZGlyZWN0b3J5CgogICAgQWRkZWQgYSBjcHVfZXRoX2luaXQoKSBmdW5jdGlvbiB0byBjb2xkZmlyZSBDUFUgZGlyZWN0b3JpZXMgYW5kCiAgICByZW1vdmVkIGNvZGUgZnJvbSBuZXQvZXRoLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGIzMWRhODhiOWMxNjBkODBkNDJhNTljYmJiMzFlMjRmMjcxODRkNWMKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglUdWUgQXVnIDI2IDIyOjEyOjM2IDIwMDggLTA3MDAKCiAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBGU0xfTUNETUFGRUMgRXRoZXJuZXQgZHJpdmVyIHRvIENQVSBkaXJlY3RvcnkKCiAgICBBZGRlZCBhIGNwdV9ldGhfaW5pdCgpIGZ1bmN0aW9uIHRvIGNwdS9tY2Y1NDd4Xzh4IGRpcmVjdG9yeSBhbmQKICAgIHJlbW92ZWQgY29kZSBmcm9tIG5ldC9ldGguYwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYjU3MTBkOTk3NGY2ZjBmM2RkYjRlNjdkNmNjY2MyNjJhYjM3MDQ5ZQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBdWcgMjYgMTU6MDE6MzggMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IFJlbW92ZSBvbGQgU1BEIHN1cHBvcnQgZnJvbSBjcHUvbXBjODZ4eAoKICAgIEFsbCA4Nnh4IGJvYXJkcyBoYXZlIGJlZW4gY29udmVydGVkIHRvIHRoZSBuZXcgY29kZSBzbyB3ZSBjYW4KICAgIHJlbW92ZSB0aGUgb2xkIFNQRCBERFIgc2V0dXAgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDliZDRlNTkxMWI3NTA4Mzc1MTU0NjZiYzc0NDkwODc2OThiODhlMGUKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgQXVnIDI2IDE1OjAxOjM3IDIwMDggLTA1MDAKCiAgICBGU0wgRERSOiBDb252ZXJ0IFNCQzg2NDFEIHRvIG5ldyBERFIgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDM5YWExYTczNDgzZTFhYzJiZDU2ZDU1MjNhYmZjMzk3MGVlODJjNzcKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDI2IDE1OjAxOjM2IDIwMDggLTA1MDAKCiAgICBGU0wgRERSOiBDb252ZXJ0IE1QQzg2MTBIUENEIHRvIG5ldyBERFIgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA2YThlNTY5MjkzM2U4ZTZkNmU1YmE3ZTU5NGY0OWRkNmQ0YzNhMjYzCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIEF1ZyAyNiAxNTowMTozNSAyMDA4IC0wNTAwCgogICAgRlNMIEREUjogQ29udmVydCBNUEM4NjQxSFBDTiB0byBuZXcgRERSIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNDZmZjRmMTEwMGVhNjRhMDFkMjFjYzAwOGNlODVhYzE1ZWIxODIxZgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBdWcgMjYgMTU6MDE6MzQgMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IEFkZCA4Nnh4IHNwZWNpZmljIHJlZ2lzdGVyIHNldHRpbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDIzM2ZkZDUwMmE2YzIyN2Y0NzYyMTJiMzA5NzY1M2FkNDhkN2UyNTQKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgQXVnIDI2IDE1OjAxOjMyIDIwMDggLTA1MDAKCiAgICBGU0wgRERSOiBBZGQgRERSMiBESU1NIHBhcmFtdGVyIHN1cHBvcnQKCiAgICBDb21wdXRlIERJTU0gcGFyYW1ldGVycyBiYXNlZCB1cG9uIHRoZSBTUEQgaW5mb3JtYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogSmFtZXMgWWFuZyA8SmFtZXMuWWFuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMDVjMDVhMjM2M2E2YWMxMWUwZTQwNTkyNjAzNDU0NmZmYWQ3MWZhZApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBdWcgMjYgMTU6MDE6MzAgMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IEFkZCBERFIxIERJTU0gcGFyYW10ZXIgc3VwcG9ydAoKICAgIENvbXB1dGUgRElNTSBwYXJhbWV0ZXJzIGJhc2VkIHVwb24gdGhlIFNQRCBpbmZvcm1hdGlvbiBpbiBzcGQuCgogICAgU2lnbmVkLW9mZi1ieTogSmFtZXMgWWFuZyA8SmFtZXMuWWFuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNThlNWU5YWZmMTQ3ZThjN2UyYmMxNDA2YmY5Mzg0ZjY1ZjAyMGZmYQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBdWcgMjYgMTU6MDE6MjkgMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IFJld3JpdGUgdGhlIEZTTCBtcGM4eHh4IEREUiBjb250cm9sbGVyIHNldHVwIGNvZGUuCgogICAgVGhlIG1haW4gcHVycG9zZSBvZiB0aGlzIHJld3JpdGUgaXQgdG8gYmUgYWJsZSB0byBzaGFyZSB0aGUgc2FtZQogICAgaW5pdGlhbGl6YXRpb24gY29kZSBvbiBhbGwgRlNMIFBvd2VyUEMgcHJvZHVjdHMgdGhhdCBoYXZlIEREUgogICAgY29udHJvbGxlcnMuICAoODN4eCwgODV4eCwgODZ4eCkuCgogICAgVGhlIGNvZGUgaXMgYnJva2VuIHVwIGludG8gdGhlIGZvbGxvd2luZyBzdGVwczoKCUdFVF9TUEQKCUNPTVBVVEVfRElNTV9QQVJNUwoJQ09NUFVURV9DT01NT05fUEFSTVMKCUdBVEhFUl9PUFRTCglBU1NJR05fQUREUkVTU0VTCglDT01QVVRFX1JFR1MKCVBST0dSQU1fUkVHUwoKICAgIFRoaXMgYWxsb3dzIHVzIHRvIHNoYXJlIG1vcmUgY29kZSBhbiBlYXNpbHkgYWxsb3cgZm9yIGJvYXJkIHNwZWNpZmljIGNvZGUKICAgIG92ZXJyaWRlcy4KCiAgICBBZGRpdGlvbmFsbHkgdGhpcyBjb2RlIGJhc2UgYWRkcyBzdXBwb3J0IGZvciA+NEcgb2YgRERSIGFuZCBwcm92aWRlcyBhCiAgICBmb3VuZGF0aW9uIGZvciBzdXBwb3J0aW5nIGludGVybGVhdmluZyBvbiBwcm9jZXNzb3JzIHdpdGggbW9yZSB0aGFuIG9uZQogICAgY29udHJvbGxlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYW1lcyBZYW5nIDxKYW1lcy5ZYW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmNzg0ZTMyYjRiY2UwMDEzOTgzNTA2YjExYWY0Yjg1YjhjYTNkMzZlCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIEF1ZyAyNiAxNTowMToyOCAyMDA4IC0wNTAwCgogICAgRlNMIEREUjogUHJvdmlkZSBhIGdlbmVyaWMgc2V0X2Rkcl9sYXdzKCkKCiAgICBQcm92aWRlIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgd2lsbCBzZXR1cCB0aGUgbGFzdCBhdmFpbGFibGUKICAgIExBV3MgKHVwdG8gMikgZm9yIEREUi4gIFVzZWZ1bCBmb3IgU1BEL2R5YW5taWMgRERSIHNldHRpbmcgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDBmMmNiZTNmNWVkZGJkZjM4NDgyNjVmMzVlNGY3MTQ0MzQ5MjljZmYKQXV0aG9yOiBKYW1lcyBZYW5nIDxKYW1lcy5ZYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBBdWcgMjYgMTU6MDE6MjcgMjAwOCAtMDUwMAoKICAgIEFkZCBwcm9wZXIgU1BEIGRlZmluaXRpb25zIGZvciBERFIxLzIvMwoKICAgIEFsc28gYWRkcyBoZWxwZXIgZnVuY3Rpb25zIGZvciBERFIxLzIgdG8gdmVyaWZ5IHRoZSBjaGVja3N1bS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDI4NWRiNzQ3MTZjNzI0YWU4YTBmZjE3Nzg3OGZkMDlhNzQ0MjhjN2IKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgQXVnIDI3IDAxOjAyOjQ4IDIwMDggKzAyMDAKCiAgICBVcGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBhZGYyMmI2NmQ4YmYwNWJkNDZlMDk4Y2Y3MWU2ZGNhMjliMzBhYTdiCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVR1ZSBBdWcgMTkgMTA6MDg6NDkgMjAwOCArMDIwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBtdWFzMzAwMSBib2FyZCAoTVBDODI3MCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAzMjIwOThiZmYzMjQxMGQyYTAwMDMxNjQ5YjQ3YzRlYzkwYTY2ZDlhCkF1dGhvcjogR3VydXJhamEgSGViYmFyIEsgUiA8Z3VydXJhamFrckBzYW55by5jby5pbj4KRGF0ZToJVHVlIEF1ZyAxOSAwODozMToxOCAyMDA4ICswNTMwCgogICAgY29tbW9uL2NtZF9sb2FkLmMgY2xlYW51cCAtIHJlbW92ZSB1bnVzZWQgdmFyaWFibGVzCgogICAgLSBSZW1vdmUgdW51c2VkIGdsb2JhbCB2YXJpYWJsZSBvc19kYXRhX2NvdW50LgogICAgLSBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIHouCgogICAgU2lnbmVkLW9mZi1ieTogR3VydXJhamEgSGViYmFyIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgoKY29tbWl0IDMwNjYyMGI3NjJhNGY5ZmE2Njc4NTY4YWQyZTg3NzJkZWMxNDUyMDgKQXV0aG9yOiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+CkRhdGU6CU1vbiBBdWcgMTggMTM6MzU6MjcgMjAwOCArMDIwMAoKICAgIHJlbW92ZSBNVlMxIGJvYXJkCgogICAgTVZTMSBib2FyZCBoYXMgcmVhY2hlZCBlbmQtb2YtbGlmZSBhbmQgY2FuIGJlIHJlbW92ZWQgY29tcGxldGVseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Cgpjb21taXQgNDBkN2U5OWQzNzRiYTBhMGEyOWNkMWE4YmE0MGQzYjdjMmMxNzVjNwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CUZyaSBBdWcgMTUgMDg6MjQ6NDUgMjAwOCAtMDUwMAoKICAgIGJvb3RtOiByZWZhY3RvciBkb19yZXNldCBhbmQgb3MgYm9vdCBmdW5jdGlvbiBhcmdzCgogICAgVGhlcmUgaXMgbm8gbmVlZCBmb3IgZWFjaCBPUyBzcGVjaWZpYyBmdW5jdGlvbiB0byBjYWxsIGRvX3Jlc2V0KCkgd2UKICAgIGNhbiBqdXN0IGRvIGl0IG9uY2UgaW4gYm9vdG0uIFRoaXMgbWVhbnMgaXRzIGZlYXNpYmxlIG9uIGFuIGVycm9yIGZvcgogICAgdGhlIE9TIGJvb3QgZnVuY3Rpb24gdG8gcmV0dXJuLgoKICAgIEFsc28sIHJlbW92ZSBwYXNzaW5nIGluIGNtZF90YmxfdCBhcyBpdHMgbm90IG5lZWRlZCBieSB0aGUgT1MgYm9vdAogICAgZnVuY3Rpb25zLglmbGFnIGlzbid0IGN1cnJlbnRseSB1c2VkIGJ1dCBtaWdodCBiZSBpbiB0aGUgZnV0dXJlIHNvCiAgICB3ZSBsZWZ0IGl0IGFsb25lLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNDBhZmFjMjJhOWM2MDJlNTVjNTAxYzgwMGYxYzA2NDMyNDcxMWI1NgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CUZyaSBBdWcgMTUgMDg6MjQ6NDQgMjAwOCAtMDUwMAoKICAgIGZkdDogQWRkZWQgcmVzaXplIGNvbW1hbmQKCiAgICBSZXNpemUgdGhlIGZkdCB0byBzaXplICsgcGFkZGluZyB0byA0ayBib3VuZGFyeQoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMmExYTJjYjZlMmI4N2VlNTUwZTZmMjdiNjQ3ZDIzMzMxZGZkNWUxYgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CUZyaSBBdWcgMTUgMDg6MjQ6NDMgMjAwOCAtMDUwMAoKICAgIGZkdDogcmVmYWN0b3IgaW5pdHJkIHJlbGF0ZWQgY29kZQoKICAgIENyZWF0ZWQgYSBuZXcgZmR0X2luaXRyZCgpIHRvIGRlYWwgd2l0aCBzZXR0aW5nIHRoZSBpbml0cmQgcHJvcGVydGllcwogICAgaW4gdGhlIGRldmljZSB0cmVlIGFuZCBmaXhpbmcgdXAgdGhlIG1lbSByZXNlcnZlLiAgV2UgY2FuIHVzZSB0aGlzCiAgICBib3RoIGluIHRoZSBjaG9vc2VuIG5vZGUgaGFuZGxpbmcgYW5kIGxldHMgdXMgcmVtb3ZlIHNvbWUgZHVwbGljYXRlZAogICAgY29kZSB3aGVuIHdlIGZpeHVwIHRoZSBpbml0cmQgaW5mbyBpbiBib290bSBvbiBQUEMuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAzMDgyZDIzNDhjOGUxMzM0MmY1ZmRkMTBlOWIzZjc0MDgwNjJkYmY5CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEF1ZyAxNSAwODoyNDo0MiAyMDA4IC0wNTAwCgogICAgZmR0OiByZWZhY3RvciBmZHQgcmVzaXplIGNvZGUKCiAgICBNb3ZlIHRoZSBmZHQgcmVzaXppbmcgY29kZSBvdXQgb2YgcHBjIHNwZWNpZmljIGJvb3QgY29kZSBhbmQgaW50bwogICAgY29tbW9uIGZkdCBzdXBwb3J0IGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAzOTZmNjM1YjhmZjNjY2JjMzhkNzVkNWVkYTk4NDQ0YzY0NjY4MTBhCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEF1ZyAxNSAwODoyNDo0MSAyMDA4IC0wNTAwCgogICAgYm9vdG06IHJlZmFjdG9yIGltYWdlIGRldGVjdGlvbiBhbmQgb3MgbG9hZCBzdGVwcwoKICAgIENyZWF0ZWQgYSBib290bV9zdGFydCgpIHRoYXQgaGFuZGxlcyB0aGUgcGFyc2luZyBhbmQgZGV0ZWN0aW9uIG9mIGFsbAogICAgdGhlIGltYWdlcyB0aGF0IHdpbGwgYmUgdXNlZCBieSB0aGUgYm9vdG0gY29tbWFuZCAoT1MsIHJhbWRpc2ssIGZkdCkuCiAgICBBcyBwYXJ0IG9mIHRoaXMgd2Ugbm93IHRyYWN0IGFsbCB0aGUgcmVsZXZhbnQgaW1hZ2Ugb2Zmc2V0cyBpbiB0aGUKICAgIGJvb3RtX2hlYWRlcnNfdCBzdHJ1Y3QuIFRoaXMgd2lsbCBhbGxvdyB1cyB0byBoYXZlIGFsbCB0aGUgbmVlZGVkCiAgICBzdGF0ZSBmb3IgZnV0dXJlIHN1Yi1jb21tYW5kcyBhbmQgbGV0cyB1cyByZWR1Y2UgYSBiaXQgb2YgYXJjaAogICAgc3BlY2lmaWMgY29kZSBvbiBTUEFSQy4KCiAgICBDcmVhdGVkIGEgYm9vdG1fbG9hZF9vcygpIHRoYXQgZGVhbHMgd2l0aCBkZWNvbXByZXNzaW9uIGFuZCBsb2FkaW5nCiAgICB0aGUgT1MgaW1hZ2UuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBlOTA2Y2ZhZTA4ZThjYzI0NDdmNTliMWJjNGMyMmFiOWMzYzI4NmQyCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEF1ZyAxNSAwODoyNDo0MCAyMDA4IC0wNTAwCgogICAgYm9vdG06IG1vdmUgbG1iIGludG8gdGhlIGJvb3RtX2hlYWRlcnNfdCBzdHJ1Y3R1cmUKCiAgICBUbyBhbGxvdyBmb3IgcGVyc2lzdGVudCBzdGF0ZSBiZXR3ZWVuIGZ1dHVyZSBib290bSBzdWJjb21tYW5kcyB3ZQogICAgbmVlZCB0aGUgbG1iIHRvIGV4aXN0IGluIGEgZ2xvYmFsIHN0YXRlLgogICAgTW92aW5nIGl0IGludG8gdGhlIGJvb3RtX2hlYWRlcnNfdCBhbGxvd3MgdXMgdG8gZG8gdGhhdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDU0ZjljODY2OTEzMDliMmY5MTlmNTY3ZjkyNTViOGJjYWQyYzc2NTEKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglGcmkgQXVnIDE1IDA4OjI0OjM5IDIwMDggLTA1MDAKCiAgICBib290bTogU2V0IHdvcmtpbmcgZmR0IGFkZHJlc3MgYXMgcGFydCBvZiB0aGUgYm9vdG0gZmxvdwoKICAgIFNldCB0aGUgZmR0IHdvcmtpbmcgYWRkcmVzcyBzbyAiZmR0IEZPTyIgY29tbWFuZHMgY2FuIGJlIHVzZWQgYXMgcGFydAogICAgb2YgdGhlIGJvb3RtIGZsb3cuCUFsc28gc2V0IGFuIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSAiZmR0YWRkciIKICAgIHdpdGggdGhlIHZhbHVlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMDZhMDk5MThmMzkwMzQ1MDMxM2UyMDQ3YTljYzI1OGJmNTg3MmY0NgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CUZyaSBBdWcgMTUgMDg6MjQ6MzggMjAwOCAtMDUwMAoKICAgIGJvb3RtOiByZWZhY3RvciBmZHQgbG9jYXRpbmcgYW5kIHJlbG9jYXRpb24gY29kZQoKICAgIE1vdmUgdGhlIGNvZGUgdGhhdCBoYW5kbGVzIGZpbmRpbmcgYSBkZXZpY2UgdHJlZSBibG9iIGFuZCByZWxvY2F0aW5nCiAgICBpdCAoaWYgbmVlZGVkKSBpbnRvIGNvbW1vbiBjb2RlIHNvIGFsbCBhcmNoJ3MgaGF2ZSBhY2Nlc3MgdG8gaXQuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBjNGY5NDE5YzZiNTQ5NThlMGVkZGJjYmM5ZTVhNGE3YjdlYzk5ODY1CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEF1ZyAxNSAwODoyNDozNyAyMDA4IC0wNTAwCgogICAgYm9vdG06IHJlZmFjdG9yIHJhbWRpc2sgbG9jYXRpbmcgY29kZQoKICAgIE1vdmUgZGV0ZXJtaW5nIGlmIHdlIGhhdmUgYSByYW1kaXNrIGFuZCB3aGVyZSBpdHMgbG9jYXRlZCBpbnRvIHRoZQogICAgY29tbW9uIGNvZGUuIEtlZXAgdHJhY2sgb2YgdGhlIHJhbWRpc2sgc3RhcnQgYW5kIGVuZCBpbiB0aGUKICAgIGJvb3RtX2hlYWRlcnNfdCBpbWFnZSBzdHJ1Y3QuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBjMTYwYTk1NDQ3NDNlODBlODg4OWVkYjIyNzU1MzhlNzc2NGNlMzM0CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEF1ZyAxNSAwODoyNDozNiAyMDA4IC0wNTAwCgogICAgYm9vdG06IHJlZmFjdG9yIGVudHJ5IHBvaW50IGNvZGUKCiAgICBNb3ZlIGVudHJ5IHBvaW50IGNvZGUgb3V0IG9mIGVhY2ggYXJjaCBhbmQgaW50byBjb21tb24gY29kZS4KICAgIEtlZXAgdGhlIGVudHJ5IHBvaW50IGluIHRoZSBib290bV9oZWFkZXJzX3QgaW1hZ2VzIHN0cnVjdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDIwMjIwZDIyYjlmNDE0NDYyODg1ODhjZDJlNDU3ZTAwNzdhMThiZWQKQXV0aG9yOiBSYW5keSBWaW5zb24gPHJ2aW5zb25AbXZpc3RhLmNvbT4KRGF0ZToJV2VkIEF1ZyAxMyAxMTo0NDo1NyAyMDA4IC0wNzAwCgogICAgbXBjNzQ0OGhwYzI6IEZpeCBQQ0kgSS9PIHNwYWNlIG1hcHBpbmcuCgogICAgUENJIEkvTyBzcGFjZSBpcyBjdXJyZW50bHkgbWFwcGVkIDE6MSBhdCAweEZBMDAwMDAwLiBMaW51eCByZXF1aXJlcwogICAgUENJIEkvTyBzcGFjZSB0byBzdGFydCBhdCAwIG9uIHRoZSBQQ0kgYnVzLiBUaGlzIHBhdGNoIG1hcHMgUENJIEkvTwogICAgc3BhY2Ugc3VjaCB0aGF0IDB4RkEwMDAwMDAgaW4gdGhlIHByb2Nlc3NvcidzIGFkZHJlc3Mgc3BhY2UgbWFwcyB0byAwCiAgICBvbiB0aGUgUENJIEkvTyBidXMuCgogICAgU2lnbmVkLW9mZi1ieSBSYW5keSBWaW5zb24gPHJ2aW5zb25AbXZpc3RhLmNvbT4KICAgIEFja2VkLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjRlMDc1MjBiYmI1NDY3YWQ3MmViOTJhNWM5MTc3ZDI3OTdiOWUzMApBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KRGF0ZToJV2VkIEF1ZyAxMyAxODoxMDoyNiAyMDA4ICswMjAwCgogICAgaS5NWDMxOiBTcGVjaWZ5IG1haW50YWluZXJzIGZvciBpLk1YMzEtYmFzZWQgYm9hcmRzCgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1MWU0NmUyOGZkYTRiYmRmNTE0OWFjN2Y2N2Q2MmZjYzhkZjRkYTYzCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIEF1ZyAyNiAxNTowMToyOCAyMDA4ICswMjAwCgogICAgQURTNTEyMTogYWRqdXN0IGltYWdlIGFkZHJlc3NlcyBpbiBSQU0gYW5kIGZsYXNoCgogICAgVXNlIHRoZSBzYW1lIG1hcHBpbmcgaW4gZmxhc2ggYXMgdXNlZCBieSBMaW51eAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMTlmMTAxNDEyYzE2ZWRlZTlmZDU1ZGI0MDM5ZTFkNjhhODMzYjI4YgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBBdWcgMjYgMTM6MTQ6MzQgMjAwOCArMDIwMAoKICAgIGNtZF9tZW0uYzogRml4IGhlbHAgbWVzc2FnZSBhbGlnbm1lbnQKCiAgICBCdWcgd2FzIGludHJvY2VkIGJ5ICJCaWcgd2hpdGUtc3BhY2UgY2xlYW51cCIgKDUzNjc3ZWYxKQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMWE5ZWViNzhiODI1YmZhZGUzMWQ3NjA2YTJmZTNiOWVjYTllMzViZQpBdXRob3I6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KRGF0ZToJV2VkIEF1ZyAyMCAxMToxMTo1MiAyMDA4ICswMjAwCgogICAgY2hhbmdlIG12QkwtTTcgZGVmYXVsdCBlbnYgYW5kIG1vdmUgdG8gdmVuZG9yIHN1YmRpcgoKICAgIGZpeCBtdkJMLU03IGNvbmZpZyBhbmQgbW92ZSB0byBtYXRyaXhfdmlzaW9uIHN1YmRpcgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMDAyZDI3Y2FmMjZlN2ViOTEzZDQ3NGQzYTkxZjY3ZDU2YzhjMzFkNQpBdXRob3I6IE5pY2sgU3BlbmNlIDxuaWNrLnNwZW5jZUBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgQXVnIDIyIDIzOjUyOjQwIDIwMDggLTA3MDAKCiAgICBNUEM4M1hYOiBBZGQgbWlzY2VsbGFuZW91cyByZWdpc3RlcnMgYW5kICNkZWZpbmVzIHRvIHN1cHBvcnQgTVBDODN4eCBmYW1pbHkgZGV2aWNlcwoKICAgIFRoaXMgcGF0Y2ggYWRkcyBlbGVtZW50cyB0byB0aGUgODN4eCBzeXNjb25mIHN0cnVjdHVyZSBhbmQgI2RlZmluZSB2YWx1ZXMgdGhhdCBhcmUgdXNlZAogICAgYnkgbXBjODN4eCBmYW1pbHkgZGV2aWNlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNDQ3YWQ1NzY4YWJkYTY2OWFjMGU3ZjQ2ZmNkYjYyZmJlODI4ZDYzNwpBdXRob3I6IElyYSBXLiBTbnlkZXIgPGl3c0BvdnJvLmNhbHRlY2guZWR1PgpEYXRlOglGcmkgQXVnIDIyIDExOjAwOjE1IDIwMDggLTA3MDAKCiAgICBNUEM4MzQ5RU1EUzogQWRkIFBDSSBBZ2VudCAoUENJU0xBVkUpIHN1cHBvcnQKCiAgICBBZGQgdGhlIGFiaWxpdHkgZm9yIHRoZSBNUEM4MzQ5RU1EUyB0byBydW4gaW4gUENJIEFnZW50IG1vZGUsIGFjdGluZyBhcyBhCiAgICBQQ0kgY2FyZCByYXRoZXIgdGhhbiBhIGhvc3QgY29tcHV0ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogSXJhIFcuIFNueWRlciA8aXdzQG92cm8uY2FsdGVjaC5lZHU+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRmZjlhZWE5ZDZiNTYwMjY4M2E5MjA5NTFlZjg5Njk5NjQzOGFmNjIKQXV0aG9yOiBJcmEgVy4gU255ZGVyIDxpd3NAb3Zyby5jYWx0ZWNoLmVkdT4KRGF0ZToJRnJpIEF1ZyAyMiAxMTowMDoxNCAyMDA4IC0wNzAwCgogICAgbXBjODN4eDogYWRkIFBDSVNMQVZFIHN1cHBvcnQgdG8gODNYWF9HRU5FUklDX1BDSSBzZXR1cCBjb2RlCgogICAgVGhpcyBhZGRzIGEgaGVscGVyIGZ1bmN0aW9uIHRvIHVubG9jayB0aGUgUENJIGNvbmZpZ3VyYXRpb24gYml0LCBzbyB0aGF0CiAgICBhbnkgZXh0cmEgUENJIHNldHVwIChzdWNoIGFzIG91dGJvdW5kIHdpbmRvd3MsIGV0Yy4pIGNhbiBiZSBkb25lIGFmdGVyCiAgICB1c2luZyB0aGUgODNYWF9HRU5FUklDX1BDSSBjb2RlIHRvIHNldCB1cCB0aGUgUENJIGJ1cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBJcmEgVy4gU255ZGVyIDxpd3NAb3Zyby5jYWx0ZWNoLmVkdT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTYyMzM4ZTFmY2RlMjMxY2E0ZDU2MmU1ZWJkNzg1OTQ1NjczMTY5MQpBdXRob3I6IElyYSBXLiBTbnlkZXIgPGl3c0BvdnJvLmNhbHRlY2guZWR1PgpEYXRlOglGcmkgQXVnIDIyIDExOjAwOjEzIDIwMDggLTA3MDAKCiAgICBNUEM4MzQ5RU1EUzogdXNlIDgzWFhfR0VORVJJQ19QQ0kgc2V0dXAgY29kZQoKICAgIENoYW5nZSB0aGUgTVBDODM0OUVNRFMgYm9hcmQgdG8gdXNlIHRoZSBnZW5lcmljIFBDSSBpbml0aWFsaXphdGlvbiBjb2RlCiAgICBmb3IgdGhlIG1wYzgzeHggY3B1LgoKICAgIFNpZ25lZC1vZmYtYnk6IElyYSBXLiBTbnlkZXIgPGl3c0BvdnJvLmNhbHRlY2guZWR1PgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmNGU1NWE0OTQxZThiYTQ2YmMwNjAyMGIyNzQ3OTI4YWRmOGZkZWU3CkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEF1ZyAyNSAxNDo1MzowOSAyMDA4IC0wNTAwCgogICAgZml4IG91dCBvZiB0cmVlIGJ1aWxkaW5nCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhNDlkMTBjZjAyN2QwNTllZTE1YzI2MjAxMGEwNWNkYWVjMDk2MWUxCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIEF1ZyAyNSAyMzo0NTo0MSAyMDA4ICswMjAwCgogICAgTWlub3IgY29kaW5nIHN0eWxlIGNsZWFudXAsIHVwZHRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNGQ1NmU4ZGVhNjcwNzU3YzgwMWE2YTY1NTMxZjAyYThmOTgxY2UxZgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEF1ZyAyMCAyMDoyOTozOCAyMDA4ICswMjAwCgogICAgUlRDOiBGaXggTWFrZWZpbGUgcHJvYmxlbSB3aXRoIENPQkpTLSQoQ09ORklHX1JUQ19EUzEzMDcgfHwgQ09ORklHX1JUQ19EUzEzMzgpCgogICAgVGhpcyAifHwiIGRvZXNuJ3Qgc2VlbSB0byB3b3JrLiBOb3cgdXNpbmcgdGhlIGlkZWEgc3VnZ2VzdCBieSBTY290dCBXb29kCiAgICB0byBjb21iaW5lIGJvdGggY29uZmlnIG9wdGlvbnMgaW50byBvbmUgbGluZS4gVGhpcyBldmVuIGFsbG93cyBkZWZpbmluZwogICAgYm90aCBvcHRpb25zIGFuZCBub3QgZ2VuZXJhdGluZyB0aGUgdGFyZ2V0IG9iamVjdCB0d2ljZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDc5ZWRiOTEzZGJhZTE0N2I1MGE0ODhjZjAyZTAzZjQ3M2ZjNWYyOApBdXRob3I6IEplbnMgR2VocmxlaW4gPHNld19zQHRxcy5kZT4KRGF0ZToJRnJpIEp1bCA0IDE2OjUwOjA1IDIwMDggKzAyMDAKCiAgICBNWDMxOiBmaXggYml0IG1hc2tzIGluIGZ1bmN0aW9uIG14MzFfZGVjb2RlX3BsbCgpCgogICAgQml0cyBNUENUTFtNRk5dIGFuZCBNUENUTFtNRkRdIHdlcmUgbm90IGZ1bGx5IGNvdmVyZWQuCgogICAgU2lnbmVkLW9mZi1ieTogSmVucyBHZWhybGVpbiA8c2V3X3NAdHFzLmRlPgoKY29tbWl0IGU4ZjEyMDdiYmYyZGY2ZmI2OTNlZTFhYTMzMjliMjAxNGM5MmU1ZTYKQXV0aG9yOiBHdXJ1cmFqYSBIZWJiYXIgSyBSIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgpEYXRlOglNb24gQXVnIDI1IDExOjExOjM0IDIwMDggKzAyMDAKCiAgICBDb3JyZWN0IEFSTSBWZXJzYXRpbGUgVGltZXIgSW5pdGlhbGl6YXRpb24KCiAgICAgLSBBY2NvcmRpbmcgdG8gQVJNIER1YWwtVGltZXIgTW9kdWxlIChTUDgwNCkgVFJNIChBUk0gRERJMDI3MSksCiAgICAgICAtLSBUaW1lciBWYWx1ZSBSZWdpc3RlciBAIFRJTUVSIEJhc2UgKyA0IGlzIFJlYWQtb25seS4KICAgICAgIC0tIFByZXNjYWxlIFZhbHVlIChCaXRzIDMtMiBvZiBUSU1FUiBDb250cm9sIHJlZ2lzdGVyKQoJY2FuIG9ubHkgYmUgb25lIG9mIDAwLDAxLDEwLiAxMSBpcyB1bmRlZmluZWQuCiAgICAgICAtLSBDRkdfSFogZm9yIFZlcnNhdGlsZSBib2FyZCBpcyBzZXQgdG8KCSNkZWZpbmUgQ0ZHX0haCQkoMTAwMDAwMCAvIDI1NikKCVNvIFByZXNjYWxlIGJpdHMgaXMgc2V0IHRvIGluZGljYXRlCgktIDggU3RhZ2VzIG9mIFByZXNjYWxlLCBDbG9jayBkaXZpZGVkIGJ5IDI1NgogICAgIC0gVGhlIFRpbWVyIENvbnRyb2wgUmVnaXN0ZXIgaGFzIG9uZSBVbmRlZmluZWQvU2hvdWxkbid0IFVzZSBCaXQKICAgICAgIFNvIHdlIHNob3VsZCBkbyByZWFkL21vZGlmeS93cml0ZSBPcGVyYXRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdXJ1cmFqYSBIZWJiYXIgPGd1cnVyYWpha3JAc2FueW8uY28uaW4+Cgpjb21taXQgNTM1Y2ZhNGYzZGU4NmNmNDhkNmMwYWYxZGFmMzNhZWJkY2EwODlmOQpBdXRob3I6IEd1cnVyYWphIEhlYmJhciBLIFIgPGd1cnVyYWpha3JAc2FueW8uY28uaW4+CkRhdGU6CU1vbiBBdWcgMjUgMTE6MzA6MjkgMjAwOCArMDIwMAoKICAgIEFkZCBBUk0gQU1CQSBQTDAzMSBSVEMgU3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IEd1cnVyYWphIEhlYmJhciBLIFIgPGd1cnVyYWpha3JAc2FueW8uY28uaW4+Cgpjb21taXQgZTM5NDExNjc0NjY5Y2M4ODBlMWVjNGE4Y2E0Nzk0ZmIxNWMzM2E0NQpBdXRob3I6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgpEYXRlOglUdWUgQXVnIDE5IDE2OjIxOjAzIDIwMDggLTA0MDAKCiAgICBBUk0gRGFWaW5jaTogUmVtb3ZlZCByZWR1bmRhbnQgTkFORCBpbml0aWFsaXphdGlvbiBjb2RlLgoKICAgIEFSTSBEYVZpbmNpOiBSZW1vdmVkIHJlZHVuZGFudCBOQU5EIGluaXRpYWxpemF0aW9uIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Cgpjb21taXQgYjNmYjY2M2IyMGQ5OTVjYTQxMzI3ZGI4NzdkZGIxNjgyNzliM2Y2MgpBdXRob3I6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgpEYXRlOglUdWUgQXVnIDE5IDE2OjIxOjAwIDIwMDggLTA0MDAKCiAgICBBUk0gRGFWaW5jaTogRml4IGNvbXBpbGF0aW9uIGVycm9yIHdpdGggbmV3IE1URCBjb2RlLgoKICAgIEFSTSBEYVZpbmNpOiBGaXggY29tcGlsYXRpb24gZXJyb3Igd2l0aCBuZXcgTVREIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Cgpjb21taXQgMTA5YzMwZmI4ZWRlYTFhMTVkMzdhNmNlNzg3Y2Q1ZmFmMzNkOGU0MwpBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CUZyaSBBdWcgMjIgMTQ6Mzc6MDUgMjAwOCAtMDQwMAoKICAgIEFkZCBub3RlIG9uIGRlcmVmZXJlbmNpbmcgL2FsaWFzZXMgcG9pbnRlcnMKCiAgICBSZXBsYWNlIHRoZSAibXVzdCBxdW90ZSBzcGVjaWFsIGNoYXJhY3RlcnMiIG5vdGUgd2l0aCBhIGhpbnQgb24KICAgIGhvdyB0byBkZXJlZmVyZW5jZSAvYWxpYXNlcyBwb2ludGVycyBieSBvbWl0dGluZyB0aGUgbGVhZGluZyAiLyIuCiAgICBUaGlzIGZlYXR1cmUgd2FzIGludHJvZHVjZWQgYnkgS3VtYXIgR2FsYSBhcyBhIGxpYmZkdCBlbmhhbmNlbWVudAogICAgaW4gY29tbWl0IGVkMDM1NzA4MjM1MzMyYzNjMTE3ZWUzYmIxYTQyNjA2M2YwM2NmY2IuCgogICAgRXhhbXBsZToKCiAgICA9PiBmZHQgcHJpbnQgL2FsaWFzZXMKICAgIGFsaWFzZXMgewoJICAgIGV0aGVybmV0MCA9ICIvcWVAZTAxMDAwMDAvdWNjQDIwMDAiOwoJICAgIGV0aGVybmV0MSA9ICIvcWVAZTAxMDAwMDAvdWNjQDMwMDAiOwoJICAgIHNlcmlhbDAgPSAiL3NvYzgzNjBAZTAwMDAwMDAvc2VyaWFsQDQ1MDAiOwoJICAgIHNlcmlhbDEgPSAiL3NvYzgzNjBAZTAwMDAwMDAvc2VyaWFsQDQ2MDAiOwoJICAgIHBjaTAgPSAiL3BjaUBlMDAwODUwMCI7CiAgICB9OwogICAgPT4gZmR0IHByaW50IGV0aGVybmV0MAogICAgdWNjQDIwMDAgewoJICAgIGRldmljZV90eXBlID0gIm5ldHdvcmsiOwoJICAgIGNvbXBhdGlibGUgPSAidWNjX2dldGgiOwoJICAgIGNlbGwtaW5kZXggPSA8MHgxPjsKCSAgICByZWcgPSA8MHgyMDAwIDB4MjAwPjsKCSAgICBpbnRlcnJ1cHRzID0gPDB4MjA+OwoJICAgIGludGVycnVwdC1wYXJlbnQgPSA8MHgyPjsKCSAgICBsb2NhbC1tYWMtYWRkcmVzcyA9IFswMCAwMCAwMCAwMCAwMCAwMF07CgkgICAgcngtY2xvY2stbmFtZSA9ICJub25lIjsKCSAgICB0eC1jbG9jay1uYW1lID0gImNsazkiOwoJICAgIHBoeS1oYW5kbGUgPSA8MHgzPjsKCSAgICBwaHktY29ubmVjdGlvbi10eXBlID0gInJnbWlpLWlkIjsKCSAgICBwaW8taGFuZGxlID0gPDB4ND47CiAgICB9OwoKICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgZmVlY2EzZjU3OGI3ZjUzYzAzMmJhMjAzNjk4NzUxYzk4MmY4YmY1YQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBBdWcgMTQgMDg6Mjg6MTkgMjAwOCAtMDUwMAoKICAgIGxpYmZkdDogQWRkIHN1cHBvcnQgZm9yIHVzaW5nIGFsaWFzZXMgaW4gZmR0X3BhdGhfb2Zmc2V0KCkKCiAgICBJZiB0aGUgcGF0aCBkb2Vzbid0IHN0YXJ0IHdpdGggJy8nIGNoZWNrIHRvIHNlZSBpZiBpdCBtYXRjaGVzIHNvbWUgYWxpYXMKICAgIHVuZGVyICIvYWxpYXNlcyIgYW5kIHN1YnN0aXR1dGUgdGhlIG1hdGNoaW5nIGFsaWFzIHZhbHVlIGluIHRoZSBwYXRoCiAgICBhbmQgcmV0cnkgdGhlIGxvb2t1cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgQWNrZWQtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgogICAgQWNrZWQtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgMDIxOTM5OWE0ZTNhOGVkYjQyOGUxOTI0ZTFhMDNkNThjY2NmOGQ4ZQpBdXRob3I6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgpEYXRlOglXZWQgQXVnIDYgMTQ6NTA6NDkgMjAwOCArMTAwMAoKICAgIGxpYmZkdDogSW1wbGVtZW50IGZkdF9nZXRfcHJvcGVydHlfbmFtZWxlbigpIGFuZCBmZHRfZ2V0cHJvcF9uYW1lbGVuKCkKCiAgICBBcyB3ZWxsIGFzIGZkdF9zdWJub2RlX29mZnNldCgpLCBsaWJmZHQgaW5jbHVkZXMgYW4KICAgIGZkdF9zdWJub2RlX29mZnNldF9uYW1lbGVuKCkgZnVuY3Rpb24gdGhhdCB0YWtlcyB0aGUgc3Vibm9kZSBuYW1lIHRvCiAgICBsb29rIHVwIG5vdCBhcyBhIE5VTC10ZXJtaW5hdGVkIHN0cmluZywgYnV0IGFzIGEgc3RyaW5nIHdpdGggYW4KICAgIGV4cGxpY2l0IGxlbmd0aC4gIFRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVuIHRoZSBjYWxsZXIgaGFzIHRoZSBuYW1lIGFzCiAgICBwYXJ0IG9mIGEgbG9uZ2VyIHN0cmluZywgc3VjaCBhcyBhIGZ1bGwgcGF0aC4KCiAgICBIb3dldmVyLCB3ZSBkb24ndCBoYXZlIGNvcnJlc3BvbmRpbmcgJ25hbWVsZW4nIHZlcnNpb25zIGZvcgogICAgZmR0X2dldF9wcm9wZXJ0eSgpIGFuZCBmZHRfZ2V0cHJvcCgpLiAgVGhlcmUgYXJlIGxlc3Mgb2J2aW91cyB1c2UKICAgIGNhc2VzIGZvciB0aGVzZSB2YXJpYW50cyBvbiBwcm9wZXJ0eSBuYW1lcywgYnV0IHRoZXJlIGFyZQogICAgY2lyY3Vtc3RhbmNlcyB3aGVyZSB0aGV5IGNhbiBiZSB1c2VmdWwgZS5nLiBsb29raW5nIHVwIHByb3BlcnR5IG5hbWVzCiAgICB3aGljaCBuZWVkIHRvIGJlIHBhcnNlZCBmcm9tIGEgbG9uZ2VyIHN0cmluZyBidWZmZXIgc3VjaCBhcyB1c2VyIGlucHV0CiAgICBvciBhIGNvbmZpZ3VyYXRpb24gZmlsZSwgb3IgbG9va2luZyB1cCBhbiBhbGlhcyBpbiBhIHBhdGggd2l0aAogICAgSUVFRTEyNzUgc3R5bGUgYWxpYXNlcy4KCiAgICBTbywgc2luY2UgaXQncyB2ZXJ5IGVhc3kgdG8gaW1wbGVtZW50IHN1Y2ggdmFyaWFudHMsIHRoaXMgcGF0Y2ggZG9lcwogICAgc28uICBUaGUgb3JpZ2luYWwgTlVMLXRlcm1pbmF0ZWQgdmFyaWFudHMgYXJlLCBvZiBjb3Vyc2UsIGltcGxlbWVudGVkCiAgICBpbiB0ZXJtcyBvZiB0aGUgbmFtZWxlbiB2ZXJzaW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KCmNvbW1pdCBmMTcxNzQ2ZjcwMWVhNThiZjZhNTNlODM1YjUzZDJhYWViZWUwZDgxCkF1dGhvcjogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+CkRhdGU6CVR1ZSBKdWwgMjkgMTQ6NTE6MjIgMjAwOCArMTAwMAoKICAgIGxpYmZkdDogRm9yZ290IG9uZSBmdW5jdGlvbiB3aGVuIGNsZWFuaW5nIHRoZSBuYW1lc3BhY2UKCiAgICBJbiBjb21taXQgYjZkODBhMjBmYzI5M2YzYjk5NWMzY2UxYTY3NDRhNTU3NDE5MjEyNSwgd2UgcmVuYW1lZCBhbGwKICAgIGxpYmZkdCBmdW5jdGlvbnMgdG8gYmUgcHJlZml4ZWQgd2l0aCBmZHRfIG9yIF9mZHRfIHRvIG1pbmltaXNlIHRoZQogICAgY2hhbmNlIG9mIGNvbGxpc2lvbnMgd2l0aCB0aGluZ3MgZnJvbSB3aGF0ZXZlciBwYWNrYWdlIGxpYmZkdCBpcwogICAgZW1iZWRkZWQgaW4sIHB1bGxlZCBpbnRvIHRoZSBsaWJmZHQgYnVpbGQgdmlhIHRoYXQgZW52aXJvbm1lbnQncwogICAgbGliZmR0X2Vudi5oLgoKICAgIEV4Y2VwdC4uLiBJIG1pc3NlZCBvbmUuICBUaGlzIHBhdGNoIGFwcGxpZXMgdGhlIHNhbWUgdHJlYXRtZW50IHRvCiAgICBfc3RyaW5nbGlzdF9jb250YWlucygpLiAgV2hpbGUgd2UncmUgYXQgaXQsIGFsc28gbWFrZSBpdCBzdGF0aWMgc2luY2UKICAgIGl0J3Mgb25seSB1c2VkIGluIHRoZSBzYW1lIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+Cgpjb21taXQgNDYzOTBkYTE1NDExMzUxZmMzYjQ5OGJkOGMxNjE1Zjc4ZmU4MGRmMApBdXRob3I6IFdvbGZyYW0gU2FuZyA8dy5zYW5nQHBlbmd1dHJvbml4LmRlPgpEYXRlOglXZWQgSnVsIDkgMTE6MjI6NDQgMjAwOCArMDIwMAoKICAgIGxpYmZkdDogSW1wcm92ZSBkb2N1bWVudGF0aW9uIGluIGxpYmZkdC5oCgogICAgRml4IGEgZmV3IHR5cG9zIGFuZCBtaXN0YWtlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmcmFtIFNhbmcgPHcuc2FuZ0BwZW5ndXRyb25peC5kZT4KICAgIEFja2VkLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KCmNvbW1pdCBmYzc3NThlZTRmNTc4Mjg3OGYyZTk2ODc2YjdiYzU2Y2ZlZTBhYzY2CkF1dGhvcjogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+CkRhdGU6CVdlZCBKdWwgOSAxNDoxMDoyNCAyMDA4ICsxMDAwCgogICAgbGliZmR0OiBJbmNyZWFzZSBuYW1lc3BhY2UtcG9sbHV0aW9uIHBhcmFub2lhCgogICAgbGliZmR0IGlzIHN1cHBvc2VkIHRvIGVhc3kgdG8gZW1iZWQgaW4gcHJvamVjdHMgYWxsIGFuZCBzdW5kcnkuCiAgICBPZnRlbiwgaXQgd29uJ3QgYmUgcHJhY3RpY2FsIHRvIHNlcGFyYXRlIHRoZSBlbWJlZGRlZCBsaWJmZHQncwogICAgbmFtZXNwYWNlIGZyb20gdGhhdCBvZiB0aGUgc3Vycm91bmRpbmcgcHJvamVjdC4gIFdoaWNoIG1lYW5zIHRoZXJlIGNhbgogICAgYmUgbmFtZXNwYWNlIGNvbmZsaWN0cyBiZXR3ZWVuIGV2ZW4gbGliZmR0J3MgaW50ZXJuYWwvc3RhdGljIGZ1bmN0aW9ucwogICAgYW5kIGZ1bmN0aW9ucyBvciBtYWNyb3MgY29taW5nIGZyb20gdGhlIHN1cnJvdW5kaW5nIHByb2plY3QncyBoZWFkZXJzCiAgICB2aWEgbGliZmR0X2Vudi5oLgoKICAgIFRoaXMgcGF0Y2gsIHRoZXJlZm9yZSwgcmVuYW1lcyBhIGJ1bmNoIG9mIGxpYmZkdCBpbnRlcm5hbCBmdW5jdGlvbnMKICAgIGFuZCBtYWNyb3MgYW5kIG1ha2VzIGEgZmV3IG90aGVyIGNoYW5jZXMgdG8gcmVkdWNlIHRoZSBjaGFuY2VzIG9mCiAgICBuYW1lc3BhY2UgY29sbGlzaW9ucyB3aXRoIGVtYmVkZGluZyBwcm9qZWN0cy4gIFNwZWNpZmljYWxseToKCS0gSW50ZXJuYWwgZnVuY3Rpb25zIChldmVuIHN0YXRpYyBvbmVzKSBhcmUgbm93IG5hbWVkIF9mZHRfKigpCgoJLSBUaGUgdHlwZSBhbmQgKHN0YXRpYykgZ2xvYmFsIGZvciB0aGUgZXJyb3IgdGFibGUgaW4KCSAgICAgIGZkdF9zdHJlcnJvcigpIGdhaW4gYW4gZmR0XyBwcmVmaXgKCgktIFRoZSB1bnVzZWQgbWFjcm8gUEFMSUdOIGlzIHJlbW92ZWQKCgktIFRoZSBtZW1lcSBhbmQgc3RyZXEgbWFjcm9zIGFyZSByZW1vdmVkIGFuZCBvcGVuLWNvZGVkIGluIHRoZQoJICAgICAgdXNlcnMgKHRoZXkgd2VyZSBvbmx5IHVzZWQgb25jZSBlYWNoKQoKCS0gT3RoZXIgbWFjcm9zIGdhaW4gYW4gRkRUXyBwcmVmaXgKCgktIFRvIHNhdmUgc29tZSBvZiB0aGUgYnVsayBmcm9tIHRoZSBwcmV2aW91cyBjaGFuZ2UsIGFuCgkgICAgICBGRFRfVEFHQUxJR04oKSBtYWNybyBpcyBpbnRyb2R1Y2VkLCB3aGVyZSBGRFRfVEFHQUxJR04oeCkgPT0KCSAgICAgIEZEVF9BTElHTih4LCBGRFRfVEFHU0laRSkKCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KCmNvbW1pdCBjNjY4MzAyNjNhZjE5ODMxZjJiN2RiMzA3Zjc5ZDE5NDNmZWJmN2Y5CkF1dGhvcjogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+CkRhdGU6CU1vbiBKdWwgNyAxMDoxNDoxNSAyMDA4ICsxMDAwCgogICAgZHRjOiBFbmFibGUgYW5kIGZpeCAtV2Nhc3QtcXVhbCB3YXJuaW5ncwoKICAgIEVuYWJsaW5nIC1XY2FzdC1xdWFsIHdhcm5pbmdzIGluIGR0YyBzaG93cyB1cCBhIG51bWJlciBvZiBwbGFjZXMgd2hlcmUKICAgIHdlIGFyZSBpbmNvcnJlY3RseSBkaXNjYXJkaW5nIGEgY29uc3QgcXVhbGlmaWNhdGlvbi4gIFRoZXJlIGFyZSBhbHNvCiAgICBzb21lIHBsYWNlcyB3aGVyZSB3ZSBhcmUgaW50ZW50aW9uYWxseSBkaXNjYXJkaW5nIHRoZSAnY29uc3QnLCBhbmQgd2UKICAgIG5lZWQgYW4gdWdseSBjYXN0IHRocm91Z2ggdWludHB0cl90IHRvIHN1cHByZXNzIHRoZSB3YXJuaW5nLiAgSG93ZXZlciwKICAgIG1vc3Qgb2YgdGhlc2UgYXJlIHByZXR0eSB3ZWxsIGlzb2xhdGVkIHdpdGggdGhlICpfdygpIGZ1bmN0aW9ucy4gIFNvCiAgICBpbiB0aGUgaW50ZXJlc3RzIG9mIG1heGltdW0gc2FmZXR5IHdpdGggY29uc3QgcXVhbGlmaWNhdGlvbnMsIHRoaXMKICAgIHBhdGNoIGVuYWJsZXMgdGhlIHdhcm5pbmdzIGFuZCBmaXhlcyB0aGUgZXhpc3RpbmcgY29tcGxhaW50cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KICAgIEFja2VkLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IGVmNGU4Y2UxYmViNWI5M2FlZGRhNWE0YzFiOTBiZmQ5ODljNjc5MWUKQXV0aG9yOiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KRGF0ZToJTW9uIEp1bCA3IDEwOjEwOjQ4IDIwMDggKzEwMDAKCiAgICBkdGM6IEVuYWJsZSBhbmQgZml4IC1XcG9pbnRlci1hcml0aCB3YXJuaW5ncwoKICAgIFRoaXMgcGF0Y2ggdHVybnMgb24gdGhlIC1XcG9pbnRlci1hcml0aCBvcHRpb24gaW4gdGhlIGR0YyBNYWtlZmlsZSwKICAgIGFuZCBmaXhlcyB0aGUgcmVzdWx0aW5nIHdhcm5pbmdzIGR1ZSB0byB1c2luZyAodm9pZCAqKSBpbiBwb2ludGVyCiAgICBhcml0aG1ldGljLiAgV2hpbGUgY29udmVuaWVudCwgcG9pbnRlciBhcml0aG1ldGljIG9uIHZvaWQgKiBpcyBub3QKICAgIHBvcnRhYmxlLCBzbyBpdCdzIGJldHRlciB0aGF0IHdlIGF2b2lkIGl0LCBwYXJ0aWN1bGFybHkgaW4gbGliZmR0LgoKICAgIEFsc28gYWRkIG5lY2Vzc2FyeSBkZWZpbml0aW9uIG9mIHVpbnRwdHJfdCBuZWVkZWQgYnkgRGF2aWQgR2lic29uJ3MKICAgIGNoYW5nZXNldCAiZHRjOiBFbmFibGUgYW5kIGZpeCAtV3BvaW50ZXItYXJpdGggd2FybmluZ3MiICh0aGUgZGVmaW5pdGlvbgogICAgY29tZXMgZnJvbSBzdGRpbnQuaCwgd2hpY2ggdS1ib290IGRvZXNuJ3QgaGF2ZSkuIC0tIGd2YgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgogICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCA1ZDRiM2QyYjMxZTU4ZmNiMmQ0YmQxMGFmNzYyZjVmZjQxYjIyOWZkCkF1dGhvcjogVGlydW1hbGEgUiBNYXJyaSA8dG1hcnJpQGFtY2MuY29tPgpEYXRlOglUaHUgQXVnIDIxIDIxOjU0OjUzIDIwMDggLTA3MDAKCiAgICBwcGM0eHg6IEFNQ0MgUFBDNDYwR1QvRVggUENJLUUgZGUtZW1waGFzaXMgYWRqdXN0bWVudCBmaXgKCiAgICBEdXJpbmcgcmVjZW50IFBDSS1FIHRlc3RzIGl0IGhhcyBiZWVuIGZvdW5kIHRoYXQgY3VycmVudAogICAgZHJpdmVybCBsZXZlbCBhbmQgZGUtZW1waGFzaXMgdmFsdWVzIGFyZSBub3Qgc2V0IGNvcnJlY3RseS4KICAgIEFmdGVyIHN3ZWVwaW5nIHRocm9naCBhbGwgZGUtZXBoYXNpcyB2YWx1ZXMsIGl0IHdhcyBmb3VuZCB0aGF0CiAgICAweDEzMCBpcyBhIHJpZ2h0IHZhbHVlLiBXaGVyZSAweDEzIGlzIGRyaXZlciBsZXZlbCBhbmQgMCBpcwogICAgZGUtZW1waGFzaXMuCgogICAgU2lnbmVkLW9mZi1ieTogVGlydW1hbGEgUiBNYXJyaSA8dG1hcnJpQGFtY2MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDBiYjg2ZDgyM2I2YzE1MGM3ZWUxN2RlMGNmY2E5ZmZjY2MxNjQ2M2IKQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KRGF0ZToJV2VkIEF1ZyAyMCAyMDo0Njo1NiAyMDA4ICswMjAwCgogICAgTWFrZSB0aGUgWUFGRlMgZmlsZXN5c3RlbSB3b3JrCgogICAgUmVjZW50bHkgdGhlIFlBRkZTIGZpbGVzeXN0ZW0gc3VwcG9ydCBoYXMgYmVlbiBhZGRlZCB0byBVLWJvb3QuCiAgICBIb3dldmVyLCBqdXN0IGVuYWJsaW5nIENPTkZJR19ZQUZGUzIgaXMgbm90IGVub3VnaCB0byBnZXQgaXQgd29ya2luZy4KCiAgICB5bW91bnQgd2lsbCBnZW5lcmF0ZSBhbiBleGNlcHRpb24gKHdoZW4gZGVyZWZlcmVuY2luZyBtdGQtPnJlYWRvb2IoKSksIGJlY2F1c2UKICAgIHRoZSBnZW5lcmljRGV2aWNlIGlzIGEgbnVsbCBwb2ludGVyLiBGdXJ0aGVyLCBhIGxvdCBvZiBsb2dnaW5nIGlzIHByb2R1Y2VkCiAgICB3aGlsZSB1c2luZyBZQUZGUyBmcywgc28gbG9nZ2luZyBzaG91bGQgYWxzbyBiZSBkaXNhYmxlZC4KICAgIEJvdGggaXNzdWVzIGFyZSBzb2x2ZWQgYnkgdGhpcyBwYXRjaC4KCiAgICBXaXRoIHRoaXMgcGF0Y2ggYW5kIENPTkZJR19ZQUZGUzIgZW5hYmxlZCwgSSBnZXQgYSByZWFkYWJsZSBmaWxlc3lzdGVtCiAgICBpbiBVLWJvb3QsIGFzIHdlbGwgYXMgaW4gTGludXguCgogICAgVGVzdGVkIG9uIGEgQXRtZWwgQVQ5MVNBTTkyNjFFSyBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KICAgIEFja2VkLWJ5OiBXaWxsaWFtIEp1dWwgPHdpbGxpYW0uanV1bEB0YW5kYmVyZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiZmQ3ZjM4NjE0ZTIxZjc0NWI2ZDY4NDVmY2M2MTZlYmM1ZTRkMzZmCkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+CkRhdGU6CVR1ZSBBdWcgMTkgMDg6NDI6NTMgMjAwOCArMDkwMAoKICAgIEZpeCBPbmVOQU5EIHJlYWRfb29iL3dyaXRlX29vYiBmdW5jdGlvbnMgY29tcGF0YWJpbGl0eQoKICAgIEFsc28gc3luYyB3aXRoIGtlcm5lbCBPbmVOQU5EIGNvZGVzCgogICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDhkNzY1NDU2YzFkMzNmMjAxMGQyNzE3ZWU1OGRlNzY0N2ZkYzYzNDYKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEF1ZyAxOCAxNzoxMToyMCAyMDA4IC0wNTAwCgogICAgTkFORDogUmVtb3ZlIGRlbGF5IGZyb20gbmFuZF9ib290X2ZzbF9lbGJjLmMuCgogICAgSXQgd2FzIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMsIGFuZCBzaG91bGRuJ3QgaGF2ZSBiZWVuIGxlZnQgaW4uCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjU1NjQ4MzczNDEyNjc5MzUyMmZiN2E4Y2YzNmFmOTBkYTc4ZjA4NApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEF1ZyAyMSAxMTowNTowMyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBDbGVhbnVwIG9mICJwcGM0eHg6IE9wdGltaXplIFBMQjQgQXJiaXRlci4uLiIgcGF0Y2gKCiAgICBUaGlzIHBhdGNoIGZpeGVzIHNvbWUgbWlub3IgaXNzdWVzIGludHJvZHVjZWQgd2l0aCB0aGUgcGF0Y2g6CiAgICBwcGM0eHg6IE9wdGltaXplIFBMQjQgQXJiaXRlci4uLiBmcm9tIFByb2R5dXQgSGF6YXJpa2E6CgogICAgLSBSZXdvcmsgbWVtb3J5LXF1ZXVlIGFuZCBQTEIgYXJiaXRlciBvcHRpbWl6YXRpb24gY29kZSwgdGhhdCB0aGUKICAgICAgbG9jYWwgdmFyaWFibGUgaXMgbm90IG5lZWRlZCBhbnltb3JlLiBUaGlzIHJlbW92ZXMgb25lICNpZmRlZi4KICAgIC0gVXNlIGNvbnNpc3RhbnQgc3BhY2luZyBpbiBwcGM0eHguaCBoZWFkZXIgKFhYWCArIDB4MDEgaW5zdGVhZAogICAgICBvZiBYWFgrIDB4MDEpLiBUaGlzIHdhcyBub3QgaW50cm9kdWNlZCBieSBQcm9keXV0LCBqdXN0IGEKICAgICAgY29weS1wYXN0ZSBwcm9ibGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwNzk1ODliY2ZiMjRiYTExMDY4NDYwMjc2YTNjYzk1NDlhYjUzNDZmCkF1dGhvcjogUHJvZHl1dCAgSGF6YXJpa2EgPHBoYXphcmlrYUBhbWNjLmNvbT4KRGF0ZToJV2VkIEF1ZyAyMCAwOTozODo1MSAyMDA4IC0wNzAwCgogICAgcHBjNHh4OiBPcHRpbWl6ZSBQTEI0IEFyYml0ZXIgYW5kIE1lbW9yeSBRdWV1ZSBzZXR0aW5ncyBmb3IgUFBDNDQwU1AvU1BlLAoJUFBDNDA1RVggYW5kIFBQQzQ2MEVYL0dUL1NYCgogICAgLSBSZWFkIHBpcGVsaW5lIGRlcHRoIHNldCB0byA0IGZvciBQUEM0NDBTUC9TUEUsIFBQQzQwNUVYLCBQUEM0NjBFWC9HVC9TWAogICAgICBwcm9jZXNzb3JzCiAgICAtIE1vdmVkIFBMQjQgQXJiaXRlciByZWdpc3RlciBkZWZpbml0aW9ucyB0byBwcGM0eHguaCBzaW5jZSBpdCBpcyBzaGFyZWQKICAgICAgYWNyb3NzIHByb2Nlc3NvcnMgKDQwNSBhbmQgNDQwLzQ2MCkKICAgIC0gT3B0aW1pemUgTWVtb3J5IFF1ZXVlIHNldHRpbmdzIGZvciBQUEM0NDBTUC9TUEUgYW5kIFBQQzQ2MEVYL0dUL1NYCiAgICAgIHByb2Nlc3NvcnMKICAgIC0gQWRkIHJlZ2lzdGVyIGJpdCBkZWZpbml0aW9ucyBmb3IgTWVtb3J5IFF1ZXVlIENvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzCgogICAgU2lnbmVkLW9mZi1ieTogUHJvZHl1dCBIYXphcmlrYSA8cGhhemFyaWthQGFtY2MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGJhMzdhYTAzMjg3YzU0ODNjNjFjMGEzZTMyMGM4ODg4YmVlMDE0M2EKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgQXVnIDE5IDE1OjQxOjE4IDIwMDggLTA1MDAKCiAgICBmZHQ6IHJld29yayBmZHRfZml4dXBfZXRoZXJuZXQoKSB0byB1c2UgZW52IGluc3RlYWQgb2YgYmRfdAoKICAgIE1vdmUgdG8gdXNpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyAnZXRoYWRkcicsICdldGgxYWRkcicsIGV0Yy4uCiAgICBpbnN0ZWFkIG9mIGJkLT5iaV9lbmV0YWRkciwgYmlfZW5ldDFhZGRyLCBldGMuCgogICAgVGhpcyBtYWtlcyB0aGUgY29kZSBhIGJpdCBtb3JlIGZsZXhpYmxlIHRvIHRoZSBudW1iZXIgb2YgZXRoZXJuZXQKICAgIGludGVyZmFjZXMuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA0Y2FjZjdjNjQ2MDk4MzlmODA5ZTJmOWM0NTg3M2YxZDY1ODYxNzAzCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgQXVnIDE5IDE0OjU3OjU1IDIwMDggKzAyMDAKCiAgICBodXNoOiBGaXggcHJpbnRmIGRlYnVnIG1hY3JvIGluIGh1c2guYyBzbyB0aGF0IGl0IHVzYWJsZSBpbiBVLUJvb3QKCiAgICBUaGlzIHBhdGNoIGNoYW5nZXMgdGhlIGRlYnVnX3ByaW50ZigpIG1hcmNvIGZvciBVLUJvb3QgaW4gaHVzaC5jIGFuZAogICAgbW92ZXMgdGhlIGRlZmluaXRpb24gb2YgREVCVUdfU0hFTEwgdG8gYSBwbGFjZSB0aGF0IGlzIGFjdHVhbGx5IGNvbXBpbGVkCiAgICB1bmRlciBVLUJvb3QuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDhmMmI0NTdlZjI2YTQ0ZDllNWZkN2Q2YjE2YzM5NGU1YzNhNzFjYTIKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVHVlIEF1ZyAxOSAwOTo1Nzo0MSAyMDA4ICswMjAwCgogICAgY2ZpOiByZW5hbWUgQ0ZHX0ZMQVNIX0NGSV9EUklWRVIgdG8gQ09ORklHX0ZMQVNIX0NGSV9EUklWRVIKCiAgICBDb21taXQJMDBiMTg4M2E0Y2FjNTlkOTdjZDI5N2IxYTNhMzk4ZGI4NTk4Mjg2NQogICAgbWlzc2VkIGEgZmV3IGJvYXJkczoKCWluY2x1ZGUvY29uZmlncy9NNTI1M0RFTU8uaAoJaW5jbHVkZS9jb25maWdzL21sNTA3LmgKCWluY2x1ZGUvY29uZmlncy9yZWR3b29kLmgKCiAgICBUaGlzIHBhdGNoIGZpeGVzIHRoaXMuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgMDc2OGI3YTg3Mjk2NDA4NWVlY2U4ZDVlOWZlYzkxNzVlOWRlYjE2MQpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJTW9uIEF1ZyAxOCAxMzo0MToyNyAyMDA4ICswMjAwCgogICAgQ29uc29saWRhdGUgc3RybWh6KCkgaW1wbGVtZW50YXRpb24KCiAgICBBUk0sIGkzODYsIG02OGsgYW5kIHBwYyBhbGwgaGF2ZSBpZGVudGljYWwgaW1wbGVtZW50YXRpb25zIG9mIHN0cm1oeigpLgogICAgT3RoZXIgYXJjaGl0ZWN0dXJlcyBkb24ndCBwcm92aWRlIHRoaXMgZnVuY3Rpb24gYXQgYWxsLgoKICAgIFRoaXMgcGF0Y2ggbW92ZXMgc3RybWh6KCkgaW50byBsaWJfZ2VuZXJpYywgcmVkdWNpbmcgY29kZSBkdXBsaWNhdGlvbgogICAgYW5kIHByb3ZpZGluZyBhIG1vcmUgdW5pZmllZCBBUEkgYWNyb3NzIGFyY2hpdGVjdHVyZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGE5MjhkMGRmMjExZjFkODI5MzA4ZDMzNWQxOWJlM2NhNDI1NThkZmMKQXV0aG9yOiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+CkRhdGU6CU1vbiBBdWcgMTggMTI6MDI6NTEgMjAwOCArMDIwMAoKICAgIGZpeCBtdmJjX3AgYm9hcmQgYnVpbGQgd2FybmluZ3MKCiAgICBmaXggYnVpbGQgd2FybmluZ3MgQCBtdkJDLVAgYm9hcmQgYnkgdXNpbmcgY29ycmVjdCB0eXBlcywgaS5lLiBjaGFuZ2UKICAgIG91dF9iZTMyIHRvIG91dF9iZTE2IGFuZCBvdXRfOCBhY2NvcmRpbmdseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Cgpjb21taXQgYTk1OGI2NjNkMjdmNjE2YmQxZGZiNzIwZDFiNDc2ZDFlY2FhYTU2OQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBBdWcgMTYgMTg6NTQ6MjcgMjAwOCArMDIwMAoKICAgIE1ha2VmaWxlOiBmaXggcG9zaXggc3VwcG9ydCBvbiBmaW5kCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBiZWY5MmUyMTVkOTQ1Y2M1NzQzOTljMWExYjAwYTNhNzZkMzVhYTAzCkF1dGhvcjogQXhlbCBCZWllcmxlaW4gPGJlbGF0cm9uaXhAd2ViLmRlPgpEYXRlOglTYXQgQXVnIDE2IDAwOjMwOjQ4IDIwMDggKzAyMDAKCiAgICBBZGRpbmcgYm9vdGxpbWl0L2Jvb3Rjb3VudCBmZWF0dXJlIGZvciBNUEM1WFhYIG9uIFRRTTUyMDAgQm9hcmRzCgogICAgVGVzdGVkIHdpdGggVFFNNTIwMFMgb24gU1RLNTJYWC4yMDAgQm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBBeGVsIEJlaWVybGVpbiA8YmVsYXRyb25peEB3ZWIuZGU+Cgpjb21taXQgMDgwMDcwN2I2ZDUwNDFhODQwYTY1ZDU1NjAzMmMxNWM1ODRiNTVmOApBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBBdWcgMTUgMTQ6MzY6MzIgMjAwOCAtMDUwMAoKICAgIG1vZF9pMmNfbWVtKCkgYnVnZml4CgogICAgVGhlIGxhc3QgdXNlZCBjaGlwLCBhZGRyZXNzLCBhbmQgYWRkcmVzcyBsZW5ndGggd2VyZSBub3QgYmVpbmcKICAgIHN0b3JlZCBmb3IgdGhlIGltbSBhbmQgaW1uIGNvbW1hbmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgNGFmYmVmOTY3Mjc1YjJmNjM2YWJhZTg2ZjkxYjgxYmVjZWU3YWQwMwpBdXRob3I6IFN0ZXZlbiBBLiBGYWxjbyA8c2ZhbGNvQGhhcnJpcy5jb20+CkRhdGU6CUZyaSBBdWcgMTUgMTU6Mzc6MzEgMjAwOCAtMDQwMAoKICAgIEZpeCB0eXBvIGluIHNwZWxsaW5nIG9mIEFUQVBJLgoKICAgIENvcnJlY3QgYSBzbWFsbCBzcGVsbGluZyBtaXN0YWtlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZXZlbiBBLiBGYWxjbyA8c2ZhbGNvQGhhcnJpcy5jb20+Cgpjb21taXQgMzZjMmQzMDYyZWNjNmFiODVmOGUyMzcxODBlYjEzNDQ2NGM0ODQxOApBdXRob3I6IFN0ZXZlbiBBLiBGYWxjbyA8c2ZhbGNvQGhhcnJpcy5jb20+CkRhdGU6CUZyaSBBdWcgMTUgMTU6MzQ6MTAgMjAwOCAtMDQwMAoKICAgIEFkZCBhIGhvb2sgdG8gYWxsb3cgYm9hcmQtc3BlY2lmaWMgUElPIG1vZGUgc2V0dGluZy4KCiAgICBUaGlzIHBhdGNoIGFkZHMgYSBob29rIHdoZXJlYnkgYSBib2FyZC1zcGVjaWZpYyByb3V0aW5lIGNhbiBiZSBjYWxsZWQgdG8KICAgIGNvbmZpZ3VyZSBoYXJkd2FyZSBmb3IgYSBQSU8gbW9kZS4JVGhlIHByb3RvdHlwZSBmb3IgdGhlIGJvYXJkLXNwZWNpZmljCiAgICByb3V0aW5lIGlzOgoKCWludCBpbmxpbmUgaWRlX3NldF9waW9tb2RlKGludCBwaW9fbW9kZSkKCiAgICBpZGVfc2V0X3Bpb21vZGUgc2hvdWxkIGJlIHByZXBhcmVkIHRvIGNvbmZpZ3VyZSBoYXJkd2FyZSBmb3IgYSBwaW9fbW9kZQogICAgYmV0d2VlbiAwIGFuZCA2LCBpbmNsdXNpdmUuICBJdCBzaG91bGQgcmV0dXJuIDAgb24gc3VjY2VzcyBvciAxIG9uIGZhaWx1cmUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RldmVuIEEuIEZhbGNvIDxzZmFsY29AaGFycmlzLmNvbT4KCmNvbW1pdCA5NTcxYjg0Y2IxNDIzODc2ZjExNTMwODFiOWU2YTUxZDkwZmJjZGM0CkF1dGhvcjogU3RldmVuIEEuIEZhbGNvIDxzZmFsY29AaGFycmlzLmNvbT4KRGF0ZToJRnJpIEF1ZyAxNSAxNToyOToxMiAyMDA4IC0wNDAwCgogICAgUmVwbGFjZSBlbnVtcyBpbiBhdGEuaCB3aXRoIGFuIGluY2x1ZGUgb2YgbGliYXRhLmgKCiAgICBUaGlzIHBhdGNoIHJlbW92ZXMgc29tZSBlbnVtcyBmcm9tIGF0YS5oIGFuZCByZXBsYWNlcyB0aGVtIHdpdGggYW4KICAgIGluY2x1ZGUgb2YgbGliYXRhLmguICBUaGlzIHdheSwgd2UgZWxpbWluYXRlIGR1cGxpY2F0ZWQgY29kZSwgYW5kCiAgICBwcmV2ZW50IGVycm9ycyB3aGVyZWJ5IHRoZSBkaWZmZXJlbnQgdmVyc2lvbnMgY291bGQgYmUgb3V0IG9mIHN5bmMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RldmVuIEEuIEZhbGNvIDxzZmFsY29AaGFycmlzLmNvbT4KCmNvbW1pdCAwZGUwYWZiY2E4NjVlY2Y0ODJiNGQyYjYzNTIzNjc0NmRlZjg1MThmCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIEF1ZyAxNSAxODozMjo0MSAyMDA4ICswMjAwCgogICAgY29sZGZpcmU6IGZpeCBDRkkgZHJpdmVycyBhY3RpdmF0aW9uIHdpdGggbmV3IG1hY3JvCgogICAgcmVuYW1lIENGR19GTEFTSF9DRklfRFJJVkVSIHRvIENPTkZJR19GTEFTSF9DRklfRFJJVkVSCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA3ZGJjMzhhZDkxNWY0YWU2N2Y0Y2QxODE4YjdhYzhmZWQzNjhhYWE5CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEF1ZyAxNSAwODoyNDozNSAyMDA4IC0wNTAwCgogICAgZmR0OiBmZHQgYWRkciB3L28gYW55IGFyZ3MgcmVwb3J0cyBiYWNrIHRoZSBjdXJyZW50IHdvcmtpbmcgYWRkcmVzcwoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZjk1M2Q5OWZkNTI4YTQ5NmI0MDBhNzA2YjUxMWVhZjhlM2VhNjZhZgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CUZyaSBBdWcgMTUgMDg6MjQ6MzQgMjAwOCAtMDUwMAoKICAgIGZkdDogYWRkZWQgdGhlIGFiaWxpdHkgdG8gc2V0IGluaXRyZCBzdGFydC9lbmQgdmlhIGNob3NlbiBjb21tYW5kCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmZmE0YmFmYWNhZWY2NzA1ODQ2M2IzZDdkMDA5OWNlZDU3NTY5ZGQyCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEF1ZyAxNSAwODoyNDozMyAyMDA4IC0wNTAwCgogICAgQWRkIGNvbW1hbmQgdG8gZW5hYmxlL2Rpc2FibGUgaW50ZXJydXB0cwoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgOWU4ZTYzY2NlNjk1NTZhZWYxMGI1OGJjYmM1NmQzMjRmNTcwZWMzYQpBdXRob3I6IE5pY2sgU3BlbmNlIDxuaWNrLnNwZW5jZUBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDE5IDIyOjIxOjE2IDIwMDggLTA3MDAKCiAgICBDRkk6IEFkZCBDRklfQ01EU0VUX0lOVEVMX0VYVEVOREVEIHRvIGZpeCBmbGFzaF9yZWFsX3Byb3RlY3QoKQoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBtaXNzaW5nIHZlbmRvciBjb2RlIGluIHRoZSBmbGFzaF9yZWFsX3Byb3RlY3QoKSBmdW5jdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0ZTAwYWNkZWQyZTZhOGQ2NjNlMTI2OTBhMGYwZjA4ZjViZWM1YTU4CkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEF1ZyAxOSAxNjo1MzozOSAyMDA4ICswMDAwCgogICAgQ0ZJOiBGaXggQU1EIExlZ2FjeSBzZWN0b3IgcHJvdGVjdAoKICAgIE5ldyBpbXBsZW1lbnQgc2VjdG9yIGxvY2sgYW5kIHVubG9jayBvciBzb2Z0bG9jayBjb21tYW5kcwogICAgZG8gbm90IGV4aXN0IGluIEFNRCBsZWdhY3kgZmxhc2guIFRodXMsIGNhdXNpbmcgaXNzdWUKICAgIHdoZW4gZXJhc2luZyBBTUQgbGVnYWN5IGZsYXNoIChzdWNoIGFzIGx2MDQwKQoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNDkyNjcxNDA0MTQwZjA5ZDViMjFiM2QyY2U0ZTM2MmMwNjkyYzA2OQpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJV2VkIEF1ZyAyMCAwOTo0MDoxNiAyMDA4ICswMjAwCgogICAgaGFtbWVyaGVhZC9taW1jMjAwOiBVc2UgQ09ORklHX0ZMQVNIX0NGSV9EUklWRVIKCiAgICBDRkdfRkxBU0hfQ0ZJX0RSSVZFUiB3YXMgcmVjZW50bHkgcmVuYW1lZCBDT05GSUdfRkxBU0hfQ0ZJX0RSSVZFUi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgMzNlYWMyYjNkOTQ2ZmM5OThhMDkyNDVkZmU1NGQwMTcwNzliOTA1NgpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJV2VkIEF1ZyAyMCAwOToyODozNiAyMDA4ICswMjAwCgogICAgaGFtbWVyaGVhZDogQWRkIG1pc3NpbmcgcHJpbnRmIHBhcmFtZXRlciB0byBDT05GSUdfQVVUT0JPT1RfUFJPTVBUCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDI1ZGEwYjg0MTk1ZmRkYTg5YTk0M2IyZDI1NzU3ZGI1YWZlZWY1YjgKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVdlZCBBdWcgMjAgMDk6Mjc6MzcgMjAwOCArMDIwMAoKICAgIGZhdnItMzItZXpraXQ6IEZpeCBwcmludGYgZm9ybWF0IHdhcm5pbmdzCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDQ2MmRhMjVlODliMGI1OGJmNGM2NjM0NmMxZmNiMzA4N2M2MWI0YjgKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CUZyaSBBdWcgMTUgMTI6MDQ6MjUgMjAwOCArMDIwMAoKICAgIE1BSU5UQUlORVJTOiBTb3J0IGF2cjMyIHNlY3Rpb24gYWxwaGFiZXRpY2FsbHkKCiAgICBUaGUgcmVzdCBvZiB0aGUgTUFJTlRBSU5FUlMgZmlsZSBhcHBlYXJzIHRvIGJlIHNvcnRlZAogICAgYWxtb3N0LWFscGhhYmV0aWNhbGx5LCBidXQgZW50cmllcyBmb3IgdGhlIG5ld2x5IGFkZGVkIEFWUjMyIGJvYXJkcyB3ZXJlCiAgICBhZGRlZCBzb21ld2hhdCByYW5kb21seS4gVGhpcyBwYXRjaCBzb3J0cyB0aGUgbGlzdCBhbHBoYWJldGljYWxseSBhZ2Fpbi4KCiAgICBBbHNvIHVwZGF0ZSBteSBlLW1haWwgYWRkcmVzcy4gVGhlIG9sZCBvbmUgc3RpbGwgd29ya3MsIGJ1dCBpdCBtYXkgbm90CiAgICB3b3JrIGZvcmV2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDEzYjUwZmUzYmMwNjVjNDg5MTFmYTM3MzIzMTQyMTI4MDg1NWE5ZDYKQXV0aG9yOiBNYXJrIEphY2tzb24gPG1wZmpAbWltYy5jby51az4KRGF0ZToJV2VkIEp1bCAzMCAxMzowNzoyNyAyMDA4ICswMTAwCgogICAgYXZyMzI6IEFkZCBNSU1DMjAwIGJvYXJkCgogICAgVGhlIE1JTUMyMDAgYm9hcmQgaXMgYmFzZWQgb24gQXRtZWwncyBOR1cxMDAgZGV2IGtpdCwgYnV0IHdpdGggYW4gZXh0cmEKICAgIDhNQnl0ZSBGTEFTSCBhbmQgMTI4S0J5dGUgRlJBTS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrIEphY2tzb24gPG1wZmpAbWltYy5jby51az4KICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBkYjcwYjg0MzI5MzE1YzUyZjZlYzc3ZjVhZTVjYTFhZmU5NzBhOWJiCkF1dGhvcjogWW9zaGloaXJvIFNoaW1vZGEgPHNoaW1vZGEueW9zaGloaXJvQHJlbmVzYXMuY29tPgpEYXRlOglXZWQgSnVsIDkgMjE6MDc6MzQgMjAwOCArMDkwMAoKICAgIHJ0bDgxNjk6IGFkZCBzdXBwb3J0IGZvciBSVEw4MTEwU0NMCgogICAgVGhpcyBwYXRjaCBmaXhlcyBhIHByb2JsZW0gdGhhdCBSVEw4MTEwU0NMIHN0YXJ0ZWQgdHJhbnNmZXIKICAgIHdpdGggYW4gaW5jb3JyZWN0IG1lbW9yeSBhZGRyZXNzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgOTQzYjgyNWJmMTVlNmEyOGFjODMyOGUwZjY0ODk0NzhiY2VlZjFlYQpBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKdW4gMjUgMTU6NDg6NTIgMjAwOCAtMDUwMAoKICAgIEZpeCBkbTkwMDAgcmVjZWl2ZSBzdGF0dXMgYW5kIGxlbiBsaXR0bGUgZW5kaWFuIGlzc3VlCgogICAgVGhlIHJlY2VpdmVkIHN0YXR1cyBhbmQgbGVuIHdhcyBpbiBsaXR0bGUgZW5kaWFuCiAgICBmb3JtYXQgYW5kIGNhdXNlZCB0aGUgZXRoZXJuZXQgdW5hYmxlIHRvIHByb2NlZWQKICAgIGZ1cnRoZXIuIEFkZCBfX2xlMTZfdG9fY3B1KCkgaW4gZG05MDAwX3J4X3N0YXR1c184LzE2LzMyYml0KCkuCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZmNkNjlhMWE1N2ZiMmFmNGQyNjIwMTQyMjA5NWE0YmU5ZjM2OTYzZQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CUZyaSBBdWcgMTUgMDg6MjQ6MzIgMjAwOCAtMDUwMAoKICAgIENsZWFuIHVwIHVzYWdlIG9mIGljYWNoZV9kaXNhYmxlL2RjYWNoZV9kaXNhYmxlCgogICAgVGhlcmUgaXMgbm8gcG9pbnQgaW4gZGlzYWJsaW5nIHRoZSBpY2FjaGUgb24gN3h4Lzc0eHgvODZ4eCBwYXJ0cyBhbmQgbm90CiAgICBhbHNvIGZsdXNoaW5nIHRoZSBpY2FjaGUuICBBbGwgY2FsbGVycyBvZiBpbnZhbGlkYXRlX2wxX2luc3RydWN0aW9uX2NhY2hlKCkKICAgIGNhbGwgaWNhY2hlX2Rpc2FibGUoKSByaWdodCBhZnRlci4JTWFrZSBpdCBzbyBpY2FjaGVfZGlzYWJsZSgpIGNhbGxzCiAgICBpbnZhbGlkYXRlX2wxX2luc3RydWN0aW9uX2NhY2hlKCkgZm9yIHVzLgoKICAgIEFsc28sIGRjYWNoZV9kaXNhYmxlKCkgYWxyZWFkeSBjYWxscyBkY2FjaGVfZmx1c2goKSBzbyB0aGVyZSBpcyBubyBwb2ludAogICAgaW4gdGhlIGV4cGxpY2l0IGNhbGxzIG9mIGRjYWNoZV9mbHVzaCgpLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYTE1YjA3MTA0Y2E3YmJiNzA5M2M5MDA5YzlhZTFiNThiNDIwMmQxMwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CUZyaSBBdWcgMTUgMDg6MjQ6MzEgMjAwOCAtMDUwMAoKICAgIFVwZGF0ZSBsaW51eCBib290bSB0byBzdXBwb3J0IGVQQVBSIGNsaWVudCBpbnRlcmZhY2UKCiAgICBUaGUgZVBBUFIgc3BlYyBoYXMgc29tZSBzdWJ0bGUgZGlmZmVyZW5jZXMgZnJvbSB0aGUgY3VycmVudCBkZXZpY2UKICAgIHRyZWUgYmFzZWQgYm9vdCBpbnRlcmZhY2UgdG8gdGhlIHBvd2VycGMgbGludXgga2VybmVsLiBUaGUgcG93ZXJwYwogICAgbGludXgga2VybmVsIGN1cnJlbnRseSBpZ25vcmVzIHRoZSBkaWZmZXJlbmNlcyB0aGF0IGVQQVBSIHNwZWNpZmllcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGI3MzRlNTU1NmEyMzliM2JlNWY5NjkzYjJmNGI0YjczOTY4M2VjMTYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gQXVnIDE4IDIzOjUwOjIwIDIwMDggKzAyMDAKCiAgICBNaW5vciBjb2RlIGNsZWFudXA6IGtlZXAgbGlzdHMgc29ydGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZDAwMzlkNGVkMjc1ZTZjYTA5ZmI0MTc4OTUwMjRhZDAyYmUxMThjNApBdXRob3I6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgpEYXRlOglXZWQgSnVsIDIzIDE5OjEwOjE0IDIwMDggKzAyMDAKCiAgICBBZGQgc3VwcG9ydCBmb3IgQURUNzQ2MCBJMkMgbW9uaXRvciBjaGlwCgogICAgU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+Cgpjb21taXQgZWI1OWVhNDVhYjc3YzE0YjA5MGVhODU3ZDllYTlmOTAyZjQwZGIwYgpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJTW9uIEp1bCAxNCAxOTo0NTo0NSAyMDA4ICswMjAwCgogICAgdmlkZW86IENsZWFuIGRyaXZlcnMvdmlkZW8vTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Cgpjb21taXQgODcxYzE4ZGQzMDE3NTIyNzBlMWY3NDMyOGM4NDZjMzEwNGJlMWUyZQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJTW9uIEp1bCAxNCAxOTo0NTozNyAyMDA4ICswMjAwCgogICAgcnRjOiBDbGVhbiBkcml2ZXJzL3J0Yy9NYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KCmNvbW1pdCBhNGE1NDliNGI1M2FkZjQwYTBkMzg4MmNjMzBhYzgxMmE4Zjg0N2M1CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglNb24gSnVsIDE0IDE5OjQ1OjM1IDIwMDggKzAyMDAKCiAgICBpMmM6IENsZWFuIGRyaXZlcnMvaTJjLyBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KCmNvbW1pdCAwYTgyM2FhMmE4YThjMDY4NWU3MzkwMGYzODdkNjAyZDdlZGFmYzBlCkF1dGhvcjogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KRGF0ZToJV2VkIEp1bCA5IDIyOjMwOjMwIDIwMDggKzA4MDAKCiAgICBBZGQgJ2xpY2Vuc2UnIGNvbW1hbmQgdG8gVS1Cb290IGNvbW1hbmQgbGluZQoKICAgIFRoZSAnbGljZW5zZScgY29tbWFuZCBpbmNsdWRlcyB0aGUgVS1Cb290IGxpY2Vuc2UgKEdQTHYyKSBpbnRvIHRoZQogICAgYWN0dWFsIGJvb3Rsb2FkZXIgYmluYXJ5LiBUaGUgbGljZW5zZSB0ZXh0IGNhbiBiZSBzaG93biBpbnRlcmFjdGl2ZWx5CiAgICBhdCB0aGUgVS1Cb290IGNvbW1hbmRsaW5lLgoKICAgIEZvciBwcm9kdWN0cyB3aGVyZSB0aGUgY29tbWFuZGxpbmUgY2FuIGFjdHVhbGx5IGJlIGFjY2Vzc2VkIGJ5IHRoZQogICAgZW5kIHVzZXIsIHRoaXMgaGVscHMgdG8gcHJldmVudCBpbmFkdmVydGVudCBHUEwgdmlvbGF0aW9ucywgc2luY2UgdGhlCiAgICBHUEx2MiBsaWNlbnNlIHRleHQgY2FuIG5vIGxvbmdlciBiZSAnZm9yZ290dGVuJyB0byBiZSBpbmNsdWRlZCBpbnRvCiAgICB0aGUgcHJvZHVjdC4KCiAgICBUaGUgJ2xpY2Vuc2UnIGNvbW1hbmQgY2FuIGJlIGVuYWJsZWQgYnkgQ09ORklHX0NNRF9MSUNFTlNFLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBvcGVubW9rby5vcmc+Cgpjb21taXQgZmUyY2U1NTAwZWJmNDNkNzlkMjI3MTkwYmQyMzcwMjMyZDViMTEzZApBdXRob3I6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBnbnVtb25rcy5vcmc+CkRhdGU6CVN1biBKdWwgNiAxNTo1NjozOCAyMDA4ICswODAwCgogICAgYWRkICd1bnppcCcgY29tbWFuZCB0byB1LWJvb3QgY29tbWFuZGxpbmUKCiAgICBbUEFUQ0hdIGFkZCBuZXcgJ3VuemlwJyBjb21tYW5kIHRvIHUtYm9vdCBjb21tYW5kbGluZQoKICAgIGNvbW1vbi9jbWRfbWVtLmM6IG5ldyBjb21tYW5kICJ1bnppcCBzcmNhZGRyIGRzdGFkZHIgW2RzdHNpemVdIiB0byB1bnppcCBmcm9tCiAgICBtZW1vcnkgdG8gbWVtb3J5LCBhbmQgb3B0aW9uIENPTkZJR19DTURfVU5aSVAgdG8gZW5hYmxlIGl0CgogICAgU2lnbmVkLW9mZi1ieTogV2VybmVyIEFsbWVzYmVyZ2VyIDx3ZXJuZXJAb3Blbm1va28ub3JnPgogICAgU2lnbmVkLW9mZi1ieTogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KCmNvbW1pdCAwN2VmYzllMzIxNjE5YzNkZWMyMTMzMTBjMzJlMDExYWE2ZjAyNzgzCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEF1ZyA2IDE5OjM3OjE3IDIwMDggLTA1MDAKCiAgICBDaGFuZ2UgQ0ZHX0VOVl9TSVpFIHRvIENGR19FTlZfU0VDVF9TSVpFIGZvciBTUEkgc2VjdG9yIGVyYXNlCgogICAgVGhlIENGR19FTlZfU0laRSBpcyBub3Qgc3VpdGFibGUgdXNlZCBmb3IgU1BJIGZsYXNoIGVyYXNlCiAgICBzZWN0b3Igc2l6ZSBpZiBDRkdfRU5WX1NJWkUgaXMgbGVzcyB0aGFuIENGR19FTlZfU0VDVF9TSVpFLgogICAgQWRkIGNvbmRpdGlvbiBjaGVjayBpZiBDRkdfRU5WX1NJWkUgaXMgbGFyZ2VyIHRoYW4KICAgIENGR19FTlZfU0VDVF9TSVpFLCBjYWxjdWxhdGUgdGhlIHJpZ2h0IG51bWJlciBvZiBzZWN0b3JzIGZvcgogICAgZXJhc2luZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRjYjRlNjU0Y2FmYWJhYTFhYzE4MGQzN2IwMGM4ZjYwOTVkYWU5YzkKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXVnIDExIDE1OjU0OjI1IDIwMDggKzAwMDAKCiAgICBDb2xkRmlyZTogTXVsdGlwbGUgZml4ZXMgZm9yIE01MjgyRVZCCgogICAgSW5jb3JyZWN0IENGR19IWiB2YWx1ZSwgY2hhbmdlIDEwMDAwMDAgdG8gMTAwMC4KICAgIFJlbmFtZSAjd2FyaW5nIHRvICN3YXJuaW5nLiBSQU1CQVIxIHVzZXMgdHdpY2UKICAgIGluIHN0YXJ0LlMsIHJlbmFtZSB0aGUgbGF0ZXIgdG8gRkxBU0hCQVIuIEluc2VydAogICAgbm9wIGZvciBEUkFNIHNldHVwLiBBbmQsIGVudl9vZmZzZXQgaW4gbGlua2VyIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxMGRiM2ExN2EyNzhkZDNhMjc2NjhiMzFjYjMyY2RkMTQ3NmU5NTEzCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEF1ZyAxMSAxNToyNjo0MyAyMDA4ICswMDAwCgogICAgQ29sZEZpcmU6IE1vdmUgbTUyODJldmIgZnJvbSBib2FyZCB0byBib2FyZC9mcmVlc2NhbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDU2ZGYwOTFkMzkxZjc0YmJmMmRjMmY3OTMxZjlmM2M4ZjIzNTI5ZTQKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXVnIDExIDE1OjI1OjA3IDIwMDggKzAwMDAKCiAgICBDb2xkRmlyZTogTW92ZSBtNTI3MmMzIGZyb20gYm9hcmQgdG8gYm9hcmQvZnJlZXNjYWxlCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2NTllOWJhZDYyOWE0ODBmNjA2YjI4NmQ1NzAzYWVmNzE1OWVkZjk4CkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEF1ZyAxMSAxNToyMzoxNiAyMDA4ICswMDAwCgogICAgQ29sZEZpcmU6IE1vdmUgbTUyNzFldmIgZnJvbSBib2FyZCB0byBib2FyZC9mcmVlc2NhbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDA1MzE2ZjhlY2U4MjA2MzM5YTIwOGVjMDUyZjAzOWNkMGY3Y2E5MjIKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXVnIDExIDEzOjQxOjQ5IDIwMDggKzAwMDAKCiAgICBDb2xkRmlyZTogQWRkIE01NDQ1MUVWQiBwbGF0Zm9ybSBzdXBwb3J0IGZvciBNQ0Y1NDQ1eAoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTIyY2Q3NTE1NTk3ZTlhMmMwN2Q2OGUyYTYyNDBiMGI3YjBmMDEzNgpBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgNiAxOToxNDowOCAyMDA4IC0wNTAwCgogICAgQ29sZEZpcmU6IEFkZCBTZXJpYWwgRmxhc2ggc3VwcG9ydCBmb3IgTTU0NDU1RVZCCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5Zjc1MTU1MTQ1NjgyOGIyZDBmZjQxN2YxMDk1OWZiMGM3MTEwYmQwCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1bCAyMyAyMDozODo1MyAyMDA4IC0wNTAwCgogICAgQ29sZEZpcmU6IEltcGxlbWVudCBTQkYgZmVhdHVyZSBmb3IgTTU0NDVFVkIKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGE3MzIzYmJhMjI5MjAzYWFlMjYwNGFmZGUxMzFhYjQ3YmFkNGVhZGMKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVsIDIzIDE3OjUzOjM2IDIwMDggLTA1MDAKCiAgICBDb2xkRmlyZTogQWRkIFNTUEkgZmVhdHVyZSBmb3IgTUNGNTQ0NXgKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGIyZDAyMmQxYWMzZjU5YmZmYTljZWMyNDkzNDFlNzdhZWExNjhhYmMKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVsIDIzIDE3OjM3OjEwIDIwMDggLTA1MDAKCiAgICBDb2xkRmlyZTogVXNlIENGSSBGbGFzaCBkcml2ZXIgZm9yIE01NDQ1NUVWQgoKICAgIFJlbW92ZSBub24tY29tbW9uIGZsYXNoIGRyaXZlciBpbgogICAgYm9hcmQvZnJlZXNjYWxlL201NDQ1NWV2Yi9mbGFzaC5jLiBUaGUgbm9uLWNmaSBmbGFzaCB3aWxsCiAgICB1c2UgQ09ORklHX0ZMQVNIX0NGSV9MRUdBQ1kgdG8gY29uZmlndXJlIHRoZSBmbGFzaAogICAgYXR0cmlidXRlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNmQzM2M2YWNmYTM1YjExNDRkNDZmZmJmZjdlMjllZTc5NjkyOTBkMApBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKdWwgMjMgMTc6MTE6NDcgMjAwOCAtMDUwMAoKICAgIENvbGRGaXJlOiBBZGQgTTUyNTNERU1PIHBsYXRmb3JtIHN1cHBvcnQgZm9yIE1DRjUyNTMKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDgwYmE2MWZkODI1NjlhZjQwZTA0ZDRhMDg5MjU3YjgxODgxODg0ZjIKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDYgMTQ6MTc6MDkgMjAwOCAtMDUwMAoKICAgIENvbGRGaXJlOiBSYWlzZSBNNTI1M0VWQkUgdWFydCBiYXVkcmF0ZSB0byAxMTUyMDAgYnBzCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkMzYxMzA3ZTczY2UxZjZmYzY4NzYwMTIzZjM3ZDQ4NzZmODUxZjNlCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEF1ZyA2IDE0OjExOjM2IDIwMDggLTA1MDAKCiAgICBDb2xkRmlyZTogRml4IE01MjUzRVZCIGRyYW0gYnJpbmcgdXAgaXNzdWUKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRiMDcwODA5M2UxNWI0MTIyOTYzMjhiZjgxMzI1Y2Y5YjY5ZmU1MTIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgQXVnIDE0IDE0OjQxOjA2IDIwMDggKzAyMDAKCiAgICBDb2RpbmcgU3R5bGUgY2xlYW51cCwgdXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNjhjZjE5YWFlNDhmMjk2OWVjNzA2Njk2MDRkMGQ3NzZmMDJjOGJjNApBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDEzIDE4OjI0OjA1IDIwMDggLTA1MDAKCiAgICBzb2NyYXRlczogVXBkYXRlIE5BTkQgZHJpdmVyIHRvIG5ldyBBUEkuCgogICAgQWxzbywgZml4IHNvbWUgbWlub3IgZm9ybWF0dGluZyBpc3N1ZXMsIGFuZCBzaW1wbGlmeSB0aGUgaGFuZGxpbmcgb2YKICAgICJzdGF0ZSIgZm9yIHdyaXRlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiYTIyZDEwZjM5ZWFlZWRkMDM1ZTgyNjU2MTZlMzFmZjg4ZTMxNGQ1CkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMTMgMTg6MDM6NDAgMjAwOCAtMDUwMAoKICAgIHF1YWQxMDBoZDogVXBkYXRlIE5BTkQgZHJpdmVyIHRvIG5ldyBBUEkuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjY0Y2I2NTJhOGE4NGM1YzM0ZDBhZmNiZDdmZmVmODg2YWExZDgzOApBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDEzIDE3OjUzOjQ4IDIwMDggLTA1MDAKCiAgICBtNTM3M2V2YjogVXBkYXRlIE5BTkQgZHJpdmVyIHRvIG5ldyBBUEkuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMWEyM2ExOTdjODcyMmI4MDVmNDA4OTU1NDRiYmRiMWE2NDhjMWM4MgpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDEzIDE3OjA0OjMwIDIwMDggLTA1MDAKCiAgICBzM2MyNHgwOiBVcGRhdGUgTkFORCBkcml2ZXIgdG8gbmV3IEFQSS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhYTVmNzVmMjBkYjhhNzEwM2ZhZDljMzRkNmYxMTkzZTEwZDE4OTBmCkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMTMgMTU6NTY6MDAgMjAwOCAtMDUwMAoKICAgIGF0OTE6IFVwZGF0ZSBib2FyZCBOQU5EIGRyaXZlcnMgdG8gY3VycmVudCBBUEkuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDQzOGQ1MDg0OGU5NDI1Mjg2ZTVmYjA0OTNlMGFmZmI1YTBiMWUxYgpBdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgpEYXRlOglXZWQgQXVnIDEzIDA5OjExOjAyIDIwMDggKzA5MDAKCiAgICBGaXggT25lTkFORCBidWlsZCBicmVhawoKICAgIFNpbmNlIHBhZ2Ugc2l6ZSBmaWVsZCBpcyBjaGFuZ2VkIGZyb20gb29iYmxvY2sgdG8gd3JpdGVzaXplLiBCdXQgT25lTkFORCBpcyBub3QgdXBkYXRlZC4KICAgIC0gZml4IGJ1ZmZlcnJhbSBtYW5hZ2VtZW50IGF0IGVyYXNlIG9wZXJhdGlvbgogICAgVGhpcyBwYXRjaCBpbmNsdWRlcyB0aGUgTkFORC9PbmVOQU5EIHN0YXRlIGZpbGVkIHRvby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTQ4M2RmNjQwOGMyNWYxNjA2MDQzMmRlMzg2ODkwMWUzNTJlMjNiYwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBBdWcgMTMgMDE6NDA6NDMgMjAwOCArMDIwMAoKICAgIGRyaXZlcnMvbXRkL25hbmRfbGVnYWN5OiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBjYzRhMGNlZWFjNTQ2MjEwNjE3MmQwY2M5ZDlkNTQyMjMzYWEzYWIyCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIEF1ZyAxMyAwMTo0MDo0MyAyMDA4ICswMjAwCgogICAgZHJpdmVycy9tdGQvbmFuZDogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIHJlbmFtZSBDRkdfTkFORF9MRUdBQ1kgdG8gQ09ORklHX05BTkRfTEVHQUNZCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA0ZmIwOWI4MTkyMGU1ZGZkZmM0NTc2ODgzMTg2NzMzZjBiZDYwNTljCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIEF1ZyAxMyAwMTo0MDo0MiAyMDA4ICswMjAwCgogICAgZHJpdmVycy9tdGQvb25lbmFuZDogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMDBiMTg4M2E0Y2FjNTlkOTdjZDI5N2IxYTNhMzk4ZGI4NTk4Mjg2NQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBBdWcgMTMgMDE6NDA6NDIgMjAwOCArMDIwMAoKICAgIGRyaXZlcnMvbXRkOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCgogICAgcmVuYW1lIENGR19GTEFTSF9DRklfRFJJVkVSIHRvIENPTkZJR19GTEFTSF9DRklfRFJJVkVSCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA3YmE0NGE1NTIxY2RiN2ZhMWM3Mjg2NDAyNWNkZTFlMjFhNmY2OTIxCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIEF1ZyAxMyAwMTo0MDo0MSAyMDA4ICswMjAwCgogICAgZHJpdmVycy9xZTogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYWI2ODc4YzdiYzY4YTdiNWU1YjczMTY1NWJkYzEzMjIxYmJmYzQ5MwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBBdWcgMTMgMDE6NDA6NDAgMjAwOCArMDIwMAoKICAgIGRyaXZlcnMvcGNpOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA1NWQ2ZDJkMzlmZTNmZTg3ODAyZTM5OWFhMTc1MzkzNjhiNDk1ZDJlCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIEF1ZyAxMyAwMTo0MDo0MCAyMDA4ICswMjAwCgogICAgZHJpdmVycy9taXNjOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA2NWU0MWVhMDU0OGI4NmUzZDc4OTJkZWZhYzhlNGRjMWVhNzBhZWQxCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIEF1ZyAxMyAwMTo0MDo0MCAyMDA4ICswMjAwCgogICAgZHJpdmVycy9pbnB1dDogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgODhmNTdlMDkzMTE0YTQ0YWE5YTg1OGQ1MmIwOTliY2M1MjAzNGE4YwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBBdWcgMTMgMDE6NDA6MzkgMjAwOCArMDIwMAoKICAgIGRyaXZlcnMvZG1hOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAxYTAyODA2YzRiMWI0YTA5YWQ0ZTk1ZDNhYWMzNzgzODg5ZTVmOGQ3CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIEF1ZyAxMyAwMTo0MDozOSAyMDA4ICswMjAwCgogICAgZHJpdmVycy9ibG9jazogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMWE2ZmZiZmFmNDM1M2JlYzM3OWVkMWZjZmM1NGI2ZjFhMzBhZjA5YQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBBdWcgMTMgMDE6NDA6MzkgMjAwOCArMDIwMAoKICAgIHNlcmlhbDogbW92ZSBDRkdfTlM5NzUwX1VBUlQgdG8gQ09ORklHX05TOTc1MF9VQVJUCgogICAgbW92ZSBhbHNvIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA2YzU4YTAzMGY4NjgyOWZhNGYwZDQzMzdjZjRiNzk0YzQxYTE4MjNlCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIEF1ZyAxMyAwMTo0MDozOCAyMDA4ICswMjAwCgogICAgc2VyaWFsOiBtb3ZlIENGR19TQ0lGX0NPTlNPTEUgdG8gQ09ORklHX1NDSUZfQ09OU09MRQoKICAgIG1vdmUgYWxzbyBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZDZlOWVlOTJlODkwZjY3NTk0YWIxNTA2ODk1MTBkZjM2MTEzM2VhZApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBBdWcgMTMgMDE6NDA6MzggMjAwOCArMDIwMAoKICAgIGNvbW1vbjogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZjVhY2I5ZmQ5YmJhMTE2MGRlM2VmMzQ5YzdkMzNmZTUxMGVkYTI4NgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBBdWcgMTMgMDE6NDA6MDkgMjAwOCArMDIwMAoKICAgIG14MzE6IG1vdmUgZnJlZXNjYWxlJ3MgbXgzMSBib2FyZHMgdG8gdmVuZG9yIGJvYXJkIGRpcgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgOGVkMmY1Zjk1MGUyNTgxMjE0ZDIwYjAxMWE4ZjI3YTYzOTZkNjVkMgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBKdWwgNSAyMzoxMToxMSAyMDA4ICswMjAwCgogICAgYXQ5MTogbW92ZSBhcmNoLWF0OTFzYW05IHRvIGFyY2gtYXQ5MQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMTk1Y2NmYzU5OTFkNDg3NjRiMjUxOTk0MWUzNTA3ZjY5Mzg1MWQ1ZApBdXRob3I6IEZhdGhpIEJPVURSQSA8ZmFib0BkZWJpYW4ub3JnPgpEYXRlOglXZWQgQXVnIDYgMTA6MDY6MjAgMjAwOCArMDIwMAoKICAgIE9uZU5BTkQ6IEZpbGwgaW4gTVREIGZ1bmN0aW9uIHBvaW50ZXJzIGZvciBPbmVOQU5ELgoKICAgIG9uZW5hbmRfcHJpbnRfZGV2aWNlX2luZm8oKToKICAgICAtIE5vdyByZXR1cm5zIGEgc3RyaW5nIHRvIGJlIHBsYWNlZCBpbiBtdGQtPm5hbWUsCiAgICAgICByYXRoZXIgdGhhbiBjYWxsaW5nIHByaW50Zi4KICAgICAtIFJlbW92ZSB2ZXJib3NlIHBhcmFtZXRlciBhcyBpdCBiZWNvbWVzIHVzZWxlc3MuCgogICAgU2lnbmVkLW9mZi1ieTogRmF0aGkgQm91ZHJhIDxmYWJvQGRlYmlhbi5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhYTY0NjY0M2I2YmMyNTBjYjNhNDk2NmJmNzI4ODc2ZTBjMTBkMzI5CkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglXZWQgQXVnIDYgMjE6NDI6MDcgMjAwOCArMDIwMAoKICAgIG5hbmRfc3BsOiBTdXBwb3J0IHBhZ2UtYWxpZ25lZCByZWFkIGluIG5hbmRfbG9hZCwgdXNlIGNoaXBzZWxlY3QKCiAgICBTdXBwb3J0aW5nIHBhZ2UtYWxpZ25lZCByZWFkcyBkb2Vzbid0IGluY3VyZSBhbnkgc2luaWZpY2FudCBvdmVyaGVhZCwganVzdAogICAgYSBzbWFsbCBjaGFuZ2UgaW4gdGhlIGFsZ29yaXRobS4gQWxzbyByZXBsYWNlIGluXzggd2l0aCByZWFkYiwgc2luY2UgdGhlcmUKICAgIGlzIG5vIGluXzggb24gQVJNLgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRmMzJkNzc2MGE1OGZlNzM5ODFiNmVkYzBiMDc1MTU2NWQyZGFhNGMKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEF1ZyA1IDExOjE1OjU5IDIwMDggLTA1MDAKCiAgICBOQU5EIGJvb3Q6IFVwZGF0ZSBsYXJnZSBwYWdlIHN1cHBvcnQgZm9yIGN1cnJlbnQgQVBJLgoKICAgIEFsc28sIHJlbW92ZSB0aGUgY3RybCB2YXJpYWJsZSBpbiBmYXZvciBvZiBwYXNzaW5nIHRoZSBjb25zdGFudHMKICAgIGRpcmVjdGx5LCBhbmQgcmVtb3ZlIHJlZHVuZGFudCAodTgpIGNhc3RzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGU0YzA5NTA4NTQ1ZDFjNDU2MTdiYTQ1MzkxYzAzYzAzY2JjMzYwYjkKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEp1biAzMCAxNDoxMzoyOCAyMDA4IC0wNTAwCgogICAgTkFORCBib290OiBNUEM4MzEzRVJEQiBzdXBwb3J0CgogICAgTm90ZSB0aGF0IHdpdGggb2xkZXIgYm9hcmQgcmV2aXNpb25zLCBOQU5EIGJvb3QgbWF5IG9ubHkgd29yayBhZnRlciBhCiAgICBwb3dlci1vbiByZXNldCwgYW5kIG5vdCBhZnRlciBhIHdhcm0gcmVzZXQuICBJIGRvbid0IGhhdmUgYSBuZXdlciBib2FyZAogICAgdG8gdGVzdCBvbjsgaWYgeW91IGhhdmUgYSBib2FyZCB3aXRoIGEgMzNNSHogY3J5c3RhbCwgcGxlYXNlIGxldCBtZSBrbm93CiAgICBpZiBpdCB3b3JrcyBhZnRlciBhIHdhcm0gcmVzZXQuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYWNkYWI1YzMzZjFlYTZmNWUwOGYwNmYwOGJjNjRhZjIzZmY0MGQ3MQpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVuIDI2IDE0OjA2OjUyIDIwMDggLTA1MDAKCiAgICBtcGM4MzEzZXJkYjogRW5hYmxlIE5BTkQgaW4gY29uZmlnLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGMzZGI4YzY0OWM2YWIzZGEyZjE0MTFjNGM2ZDYxYWVjZWEwNTRhYTQKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CkRhdGU6CVRodSBKdWwgMzEgMTI6Mzg6MjYgMjAwOCArMDIwMAoKICAgIE5BTkQ6IERvIG5vdCB3cml0ZSBvciByZWFkIGEgd2hvbGUgYmxvY2sgaWYgaXQgaXMgbGFyZ2VyIHRoYW4gdGhlIGVudmlyb25tZW50CgogICAgRW52aXJvbm1lbnQgY2FuIGJlIHNtYWxsZXIgdGhhbiBOQU5EIGJsb2NrIHNpemUsIGRvIG5vdCBuZWVkIHRvIHJlYWQgYSB3aG9sZQogICAgYmxvY2sgYW5kIG1pbmltdW0gZm9yIHdyaXRpbmcgaXMgb25lIHBhZ2UuIEFsc28gcmVtb3ZlIGFuIHVudXNlZCB2YXJpYWJsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlYWZjYWJkMTVmMDBjMTQyMTU2MjM1YzUxOWZjYzU1YjEwOTkzMjQxCkF1dGhvcjogTWFyY2VsIFppc3dpbGVyIDxtYXJjZWxAemlzd2lsZXIuY29tPgpEYXRlOglTdW4gSnVuIDIyIDE2OjMwOjA2IDIwMDggKzAyMDAKCiAgICBOQU5EOiBjaGlwLT5zdGF0ZSBkb2VzIG5vdCBhbHdheXMgZ2V0IHNldC4KCiAgICBGaXhlcyBhbiBpc3N1ZSB3aXRoIGNoaXAtPnN0YXRlIG5vdCBhbHdheXMgYmVpbmcgc2V0IGNhdXNpbmcgdHJvdWJsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyY2VsIFppc3dpbGVyIDxtYXJjZWxAemlzd2lsZXIuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTNmMGZkOTRlM2NhZTZmOGEwZDlmYmE1ZDM2N2UzMTFlZGM4ZWJkZQpBdXRob3I6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgpEYXRlOglNb24gSnVuIDMwIDE1OjM0OjQwIDIwMDggKzAyMDAKCiAgICBOQU5EOiBTY2FuIGJhZCBibG9ja3MgbGF6aWx5LgoKICAgIFJhdGhlciB0aGFuIHNjYW5uaW5nIG9uIGJvb3QsIHNjYW4gdXBvbiB0aGUgZmlyc3QgYXR0ZW1wdCB0byBjaGVjayB0aGUKICAgIGJhZG5lc3Mgb2YgYSBibG9jay4gIFRoaXMgc3BlZWRzIHVwIGJvb3Qgd2hlbiBub3QgdXNpbmcgTkFORCwgYW5kIHJlZHVjZXMKICAgIHRoZSBsaWtlbGlob29kIG9mIG5lZWRpbmcgdG8gcmVmbGFzaCB2aWEgSlRBRyBpZiBOQU5EIGJlY29tZXMKICAgIG5vbmZ1bmN0aW9uYWwuCgogICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkZmJmNjE3ZmYwNTVlNDIxNmY3OGQzNThiMDg2N2M1NDg5MTZkMTRiCkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdW4gMTIgMTM6MjA6MTYgMjAwOCAtMDUwMAoKICAgIE5BTkQgcmVhZC93cml0ZSBmaXgKCiAgICBJbXBsZW1lbnQgYmxvY2stc2tpcHBpbmcgcmVhZC93cml0ZSwgYmFzZWQgb24gYSBwYXRjaCBmcm9tCiAgICBNb3J0ZW4gRWJiZWxsIEhlc3RlbnMgPG1vcnRlbi5oZXN0bmVzQHRhbmRiZXJnLmNvbT4uCgogICAgU2lnbmVkLW9mZi1ieTogTW9ydGVuIEViYmVsbCBIZXN0bmVzIDxtb3J0ZW4uaGVzdG5lc0B0YW5kYmVyZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5ODRlMDNjZGYxNDMxYmI1OTNhZWFhMWI3NGM0NDVkNjE2Zjk1NWQzCkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdW4gMTIgMTM6MTM6MjMgMjAwOCAtMDUwMAoKICAgIE5BTkQ6IEFsd2F5cyBza2lwIGJsb2NrcyBvbiByZWFkL3dyaXRlL2Jvb3QuCgogICAgVXNlIG9mIHRoZSBub24tc2tpcHBpbmcgdmVyc2lvbnMgd2FzIGFsbW9zdCBhbHdheXMgKGlmIG5vdCBhbHdheXMpCiAgICBhbiBlcnJvciwgYW5kIG5vIHZhbGlkIHVzZSBjYXNlIGhhcyBiZWVuIGlkZW50aWZpZWQuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZTFjM2RiYWRhMzQ5OTkyODc1OTM0NTc1Yzk3YjMyOGFiMmNiMzNjYQpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglUaHUgSnVuIDEyIDExOjEwOjIxIDIwMDggLTA1MDAKCiAgICBuYW5kOiBmc2xfdXBtOiBjb252ZXJ0IHRvIHVwZGF0ZWQgTVREIE5BTkQgaW5mcmFzdHJ1Y3R1cmUKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDMwMDI1MzMwNmFjYzcyYjFiMmU5ZmFmMDk4N2Y4NjU1MTE1MWQ3Y2YKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE1heSAyMiAxNTowMjo0NiAyMDA4IC0wNTAwCgogICAgZnNsX2VsYmNfbmFuZDogSGFyZC1jb2RlIHRoZSBGQkFSL0ZQQVIgc3BsaXQuCgogICAgVGhlIGhhcmR3YXJlIGhhcyBzZXBhcmF0ZSByZWdpc3RlcnMgZm9yIGJsb2NrIGFuZCBwYWdlLXdpdGhpbi1ibG9jaywKICAgIGJ1dCB0aGUgZGl2aXNpb24gYmV0d2VlbiB0aGUgdHdvIGhhcyBubyBhcHBhcmVudCByZWxhdGlvbiB0byB0aGUKICAgIGFjdHVhbCBlcmFzZSBibG9jayBzaXplIG9mIHRoZSBOQU5EIGNoaXAuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOWM4MTRiMGE3MTZhYWU4ODRiZWM5NzdiOWEwMzJkZmE1OWNmYjc5YQpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglGcmkgTWFyIDI4IDIyOjEwOjU0IDIwMDggKzAzMDAKCiAgICBmc2xfZWxiY19uYW5kOiB3b3JrYXJvdW5kIGZvciBoYW5ncyBkdXJpbmcgbmFuZCB3cml0ZQoKICAgIFVzaW5nIGN1cnJlbnQgZHJpdmVyIGVsYmMgc29tZXRpbWVzIGhhbmdzIGR1cmluZyBuYW5kIHdyaXRlLiBSZWFkaW5nIGJhY2sKICAgIGxhc3QgYnl0ZSBoZWxwcyB0aG91Z2ggKHRoYW5rcyB0byBTY290dCBXb29kIGZvciB0aGUgaWRlYSkuCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5ZmQwMjBkNmI0YjM2YjlmYjY3Y2Q4MzRiYzFhZTdmZGJhMTVlZTllCkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBNYXIgMjEgMTY6MTI6NTEgMjAwOCAtMDUwMAoKICAgIEZyZWVzY2FsZSBlTEJDIEZDTSBOQU5EIGRyaXZlcgoKICAgIFRoaXMgaXMgYSBkcml2ZXIgZm9yIHRoZSBGbGFzaCBDb250cm9sIE1hY2hpbmUgb2YgdGhlIGVuaGFuY2hlZCBMb2NhbCBCdXMKICAgIENvbnRyb2xsZXIgZm91bmQgb24gc29tZSBGcmVlc2NhbGUgY2hpcHMgKHN1Y2ggYXMgdGhlIG1wYzgzMTMgYW5kIHRoZQogICAgbXBjODM3OSkuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNDFlZjhjNzE2ZTkzZmRmNTBlZmU5YzFiYTczM2NhNjY3NWRhYWNhNgpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgTWFyIDE4IDE1OjI5OjE0IDIwMDggLTA1MDAKCiAgICBEb24ndCBwYW5pYyBpZiBhIGNvbnRyb2xsZXIgZHJpdmVyIGRvZXMgZWNjIGl0cyBvd24gd2F5LgoKICAgIFNvbWUgaGFyZHdhcmUsIHN1Y2ggYXMgdGhlIGVuaGFuY2VkIGxvY2FsIGJ1cyBjb250cm9sbGVyIHVzZWQgb24gc29tZQogICAgbXBjODN4eCBjaGlwcywgZG9lcyBlY2MgdHJhbnNwYXJlbnRseSB3aGVuIHJlYWRpbmcgYW5kIHdyaXRpbmcgZGF0YSwgcmF0aGVyCiAgICB0aGFuIHByb3ZpZGluZyBhIGdlbmVyaWMgY2FsY3VsYXRlL2NvcnJlY3QgbWVjaGFuaXNtIHRoYXQgY2FuIGJlIGV4cG9ydGVkIHRvCiAgICB0aGUgbmFuZCBzdWJzeXN0ZW0uCgogICAgVGhlIHN1YnN5c3RlbSBzaG91bGQgbm90IEJVRygpIHdoZW4gY2FsY3VsYXRlLCBjb3JyZWN0LCBvciBod2N0bCBhcmUKICAgIG1pc3NpbmcsIGlmIHRoZSBtZXRob2RzIHRoYXQgY2FsbCB0aGVtIGhhdmUgYmVlbiBvdmVycmlkZGVuLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGU1MmIzNGQ0MGE4YTY0NmUzZDExNjM4ZWE4Nzk3ZTk2Mzk4ZGJhMTMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBKYW4gMTAgMTg6NDc6MzMgMjAwOCArMDEwMAoKICAgIE5BTkQ6IE1ha2UgTkFORCBkcml2ZXIgbGVzcyB2ZXJib3NlIHBlciBkZWZhdWx0CgogICAgVGhpcyBwYXRjaCB0dXJucyBvZmYgcHJpbnRpbmcgb2YgYmFkIGJsb2NrcyBwZXIgZGVmYXVsdCB1cG9uIGJvb3R1cC4KICAgIFRoaXMgY2FuIGFsd2F5cyBiZSBzaG93biB2aWEgdGhlICJuYW5kIGJhZCIgY29tbWFuZCBsYXRlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZmU1NmEyNzcyZTVjNTk1NzdkZjkwNjE2M2QwZDRiMjliMDU2MTQwZQpBdXRob3I6IFNlcmdleSBLdWJ1c2h5biA8a3NpQGtvaTgubmV0PgpEYXRlOglXZWQgSmFuIDkgMTU6MzY6MjAgMjAwOCArMDEwMAoKICAgIE5BTkQ6IERhdmluY2kgZHJpdmVyIHVwZGF0ZXMKCiAgICBIZXJlIGNvbWVzIGEgdHJpdmlhbCBwYXRjaCB0byBjcHUvYXJtOTI2ZWpzL2RhdmluY2kvbmFuZC5jLiBVbmZvcnR1bmF0ZWx5IEkKICAgIGRvbid0IGhhdmUgaGFyZHdhcmUgaGFuZHkgc28gSSBjYW4gbm90IHRlc3QgaXQgYXQgdGhlIG1vbWVudCBidXQgY2hhbmdlcyBhcmUKICAgIHJhdGhlciB0cml2aWFsIHNvIGl0IHNob3VsZCB3b3JrLiBJdCB3b3VsZCBiZSBuaWNlIGlmIHNvbWVib2R5IHdpdGggYQogICAgaGFyZHdhcmUgY2hlY2tlZCBpdCBhbnl3YXlzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdleSBLdWJ1c2h5biA8a3NpQGtvaTgubmV0PgoKY29tbWl0IGRlYWM5MTNlZmZkOGQ4MDUzNWM5ZmY0Njg3YjZmY2RmZjU0MGM1NTQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVNhdCBKYW4gNSAxNjo1MDozMiAyMDA4ICswMTAwCgogICAgTkFORDogRml4IGNvbXBpbGF0aW9uIHdhcm5pbmcgYW5kIHNtYWxsIGNvZGluZyBzdHlsZSBpc3N1ZQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjNTY4Zjc3YWNkZjg5NmZjM2RkNjQxM2NlNTMyMDViMTdiYTgwOWEzCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgSmFuIDUgMTY6NDk6MzcgMjAwOCArMDEwMAoKICAgIE5BTkQ6IFVwZGF0ZSBuYW5kX3NwbCBkcml2ZXIgdG8gbWF0Y2ggdXBkYXRlZCBuYW5kIHN1YnN5c3RlbQoKICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgTkFORCBib290aW5nIGRyaXZlciBuYW5kX3NwbC9uYW5kX2Jvb3QuYyB0byBtYXRjaAogICAgdGhlIG5ldyBpbmZyYXN0cnVjdHVyZSBmcm9tIHRoZSB1cGRhdGVkIE5BTkQgc3Vic3lzdGVtLiBUaGlzIE5BTkQKICAgIHN1YnN5c3RlbSB3YXMgcmVjZW50bHkgc3luY2VkIGFnYWluIHdpdGggdGhlIExpbnV4IDIuNi4yMiBNVEQvTkFORAogICAgc3Vic3lzdGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzZGYyZWNlMGYwZmJiYTQ3ZDI3ZjAyZmZmOTZjNTMzNzMyYjk4YzE0CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgSmFuIDUgMTY6NDc6NTggMjAwOCArMDEwMAoKICAgIE5BTkQ6IFVwZGF0ZSA0eHggTkRGQyBkcml2ZXIgdG8gbWF0Y2ggdXBkYXRlZCBuYW5kIHN1YnN5c3RlbQoKICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgNHh4IE5BTkQgZHJpdmVyIG5kZmMuYyB0byBtYXRjaCB0aGUgbmV3CiAgICBpbmZyYXN0cnVjdHVyZSBmcm9tIHRoZSB1cGRhdGVkIE5BTkQgc3Vic3lzdGVtLiBUaGlzIE5BTkQKICAgIHN1YnN5c3RlbSB3YXMgcmVjZW50bHkgc3luY2VkIGFnYWluIHdpdGggdGhlIExpbnV4IDIuNi4yMiBNVEQvTkFORAogICAgc3Vic3lzdGVtLgoKICAgIFRlc3RlZCBzdWNjZXNzZnVsbHkgb24gQU1DQyBTZXF1b2lhIGFuZCBCYW1ib28uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDEyMDcyMjY0NTI4ZWJhMzM3MzdiYzk2NzRlMTlmMGU5MjVmZmRhMjMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVNhdCBKYW4gNSAxNjo0MzoyNSAyMDA4ICswMTAwCgogICAgTkFORDogQ2hhbmdlIG5hbmRfd2FpdF9yZWFkeSgpIHRvIG5vdCBjYWxsIG5hbmRfd2FpdCgpCgogICAgVGhpcyBwYXRjaCBjaGFuZ2VzIG5hbmRfd2FpdF9yZWFkeSgpIHRvIG5vdCBqdXN0IGNhbGwgbmFuZF93YWl0KCksCiAgICBzaW5jZSB0aGlzIHdpbGwgc2VuZCBhIG5ldyBjb21tYW5kIHRvIHRoZSBOQU5EIGNoaXAuIFdlIGp1c3Qgd2FudCB0bwogICAgd2FpdCBmb3IgdGhlIGNoaXAgdG8gYmVjb21lIHJlYWR5IGhlcmUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDlhZDc1NGZlZjUwNTMxNDRkYWVkM2IwMDdhZGFmMWM5YmVjNjU0YzkKQXV0aG9yOiBXaWxsaWFtIEp1dWwgPHdpbGxpYW0uanV1bEBkYXRhcmVzcG9ucy5ubz4KRGF0ZToJRnJpIERlYyAxNCAxNjozMzo0NSAyMDA3ICswMTAwCgogICAgbWFrZSBuYW5kIGR1bXAgYW5kIG5hbmQgZHVtcC5vb2Igd29yawoKICAgIFNpZ25lZC1vZmYtYnk6IFdpbGxpYW0gSnV1bCA8d2lsbGlhbS5qdXVsQHRhbmRiZXJnLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQzZWEzNmZiOGZkY2JjNmUyNmYwY2FmZmU4MDhjNjM2MzNiMTg4MzgKQXV0aG9yOiBXaWxsaWFtIEp1dWwgPHdpbGxpYW0uanV1bEBkYXRhcmVzcG9ucy5ubz4KRGF0ZToJTW9uIE5vdiAxOSAxNDo0NjowMCAyMDA3ICswMTAwCgogICAgbW92aW5nIGZpbGVzIGZyb20geWFmZnMyL2RpcmVjdC8gdG8geWFmZnMyLyBhbmQgZGVsZXRpbmcgYWxsIHN5bWxpbmtzCgogICAgU2lnbmVkLW9mZi1ieTogV2lsbGlhbSBKdXVsIDx3aWxsaWFtLmp1dWxAdGFuZGJlcmcuY29tPgoKY29tbWl0IDk4ODI0Y2UzZjk1ZTZjNGQwOGQ0MzliNzc5YzBhY2IwMDQ4MDQ1YTYKQXV0aG9yOiBXaWxsaWFtIEp1dWwgPHdpbGxpYW0uanV1bEB0YW5kYmVyZy5jb20+CkRhdGU6CVR1ZSBKdW4gMTAgMTY6MTg6MTMgMjAwOCAtMDUwMAoKICAgIENsZWFuIG91dCB1bm5lZWRlZCBmaWxlcwoKICAgIFNpZ25lZC1vZmYtYnk6IFdpbGxpYW0gSnV1bCA8d2lsbGlhbS5qdXVsQHRhbmRiZXJnLmNvbT4KCmNvbW1pdCBlYzI5YTMyYjVhNzFiMjAzZjdkOTA4N2YxZjRkNzg2ZTdmMTNkZDIzCkF1dGhvcjogV2lsbGlhbSBKdXVsIDx3aWxsaWFtLmp1dWxAZGF0YXJlc3BvbnMubm8+CkRhdGU6CUZyaSBOb3YgMTYgMDg6NDQ6MjcgMjAwNyArMDEwMAoKICAgIENyZWF0ZSBzeW1saW5rcyBmcm9tIHlhZmZzMi9kaXJlY3QgdG8geWFmZnMyCgogICAgU2lnbmVkLW9mZi1ieTogV2lsbGlhbSBKdXVsIDx3aWxsaWFtLmp1dWxAdGFuZGJlcmcuY29tPgoKY29tbWl0IDkwZWYxMTdiNjgzODdkNjY3NjMyOTFhZjAxMTc2Nzc2NDQxNjY2MTEKQXV0aG9yOiBXaWxsaWFtIEp1dWwgPHdpbGxpYW0uanV1bEBkYXRhcmVzcG9ucy5ubz4KRGF0ZToJVGh1IE5vdiAxNSAxMjoyMzo1NyAyMDA3ICswMTAwCgogICAgSW5jb3Jwb3JhdGUgeWFmZnMyIGludG8gVS1ib290CgogICAgVG8gdXNlIFlBRkZTMiBkZWZpbmUgQ09ORklHX1lBRkZTMgoKICAgIFNpZ25lZC1vZmYtYnk6IFdpbGxpYW0gSnV1bCA8d2lsbGlhbS5qdXVsQHRhbmRiZXJnLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDBlOGNjOGJkOTIyNTdkYTJlMWRmODhjYmM5ODVlMTY2ZTQ3MmNlNjEKQXV0aG9yOiBXaWxsaWFtIEp1dWwgPHdpbGxpYW0uanV1bEBkYXRhcmVzcG9ucy5ubz4KRGF0ZToJVGh1IE5vdiAxNSAxMToxMzowNSAyMDA3ICswMTAwCgogICAgWUFGRlMyIGltcG9ydAoKICAgIERpcmVjdCBpbXBvcnQgb2YgeWFmZnMgYXMgYSB0YXJiYWxsIGFzIG9mIDIwMDcxMTEzIGZyb20gdGhlaXIgcHVibGljCiAgICBDVlMtd2ViIGF0IGh0dHA6Ly93d3cuYWxlcGgxLmNvLnVrL2NnaS1iaW4vdmlld2N2cy5jZ2kveWFmZnMyLwoKICAgIFRoZSBjb2RlIGNhbiBhbHNvIGJlIGltcG9ydGVkIG9uIHRoZSBjb21tYW5kIGxpbmUgd2l0aDoKICAgIGV4cG9ydCBDVlNST09UPTpwc2VydmVyOmFub255bW91c0BjdnMuYWxlcGgxLmNvLnVrOi9ob21lL2FsZXBoMS9jdnMgY3ZzIGxvZ29uCiAgICAoSGl0IHJldHVybiB3aGVuIGFza2VkIGZvciBhIHBhc3N3b3JkKQogICAgY3ZzIGNoZWNrb3V0IHlhZmZzMgoKICAgIFNpZ25lZC1vZmYtYnk6IFdpbGxpYW0gSnV1bCA8d2lsbGlhbS5qdXVsQHRhbmRiZXJnLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0aWcgT2xzZW4gPHN0aWcub2xzZW5AdGFuZGJlcmcuY29tPgoKY29tbWl0IDMwNDNjMDQ1ZDVhOTg5N2ZhYmE3ZDVjNzIxOGMyZjRkMDZjZDAwMzgKQXV0aG9yOiBXaWxsaWFtIEp1dWwgPHdpbGxpYW0uanV1bEBkYXRhcmVzcG9ucy5ubz4KRGF0ZToJV2VkIE5vdiAxNCAxNDoyODoxMSAyMDA3ICswMTAwCgogICAgV2hpdGVzcGFjZSBjbGVhbnVwIGFuZCBtYXJraW5nIGJyb2tlbiBjb2RlLgoKICAgIENoYW5nZXMgcmVxdWVzdGVkIGJ5IG1haW50YWluZXIgU3RlZmFuIFJvZXNlIGFmdGVyCiAgICBwb3N0aW5nIHBhdGNoIHRvIFUtYm9vdCBtYWlsaW5nIGxpc3QuCgogICAgU2lnbmVkLW9mZi1ieTogV2lsbGlhbSBKdXVsIDx3aWxsaWFtLmp1dWxAdGFuZGJlcmcuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNWUxZGFlNWMzZGI3ZjQwMjZmMzFiNmEyYTgxZWNkOWU5ZGVlNDc1ZgpBdXRob3I6IFdpbGxpYW0gSnV1bCA8d2lsbGlhbS5qdXVsQGRhdGFyZXNwb25zLm5vPgpEYXRlOglGcmkgTm92IDkgMTM6MzI6MzAgMjAwNyArMDEwMAoKICAgIEZpeGluZyBjb2Rpbmcgc3R5bGUgaXNzdWVzCgogICAgIC0gRml4aW5nIGxlYWRpbmcgd2hpdGUgc3BhY2VzCiAgICAgLSBGaXhpbmcgaW5kZW50YXRpb24gd2hlcmUgNCBzcGFjZXMgYXJlIHVzZWQgaW5zdGVhZCBvZiB0YWIKICAgICAtIFJlbW92aW5nIEMrKyBjb21tZW50cyAoLy8pLCB3aGVyZXZlciBJIGludHJvZHVjZWQgdGhlbQoKICAgIFNpZ25lZC1vZmYtYnk6IFdpbGxpYW0gSnV1bCA8d2lsbGlhbS5qdXVsQHRhbmRiZXJnLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRjYmI2NTFiMjljYjY0ZDM3OGEwNjcyOTk3MGUxZTE1M2JiNjA1YjEKQXV0aG9yOiBXaWxsaWFtIEp1dWwgPHdpbGxpYW0uanV1bEBkYXRhcmVzcG9ucy5ubz4KRGF0ZToJVGh1IE5vdiA4IDEwOjM5OjUzIDIwMDcgKzAxMDAKCiAgICBSZW1vdmUgd2hpdGUgc3BhY2UgYXQgZW5kLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdpbGxpYW0gSnV1bCA8d2lsbGlhbS5qdXVsQHRhbmRiZXJnLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGNmYTQ2MGFkZmRlZmNjMzBkMTA0ZTFhOWVlNDQ5OTRlZTM0OWJiN2IKQXV0aG9yOiBXaWxsaWFtIEp1dWwgPHdpbGxpYW0uanV1bEBkYXRhcmVzcG9ucy5ubz4KRGF0ZToJV2VkIE9jdCAzMSAxMzo1MzowNiAyMDA3ICswMTAwCgogICAgVXBkYXRlIE1URCB0byB0aGF0IG9mIExpbnV4IDIuNi4yMi4xCgogICAgQSBsb3QgY2hhbmdlZCBpbiB0aGUgTGludXggTVREIGNvZGUsIHNpbmNlIGl0IHdhcyBsYXN0IHBvcnRlZCBmcm9tCiAgICBMaW51eCB0byBVLUJvb3QuIFRoaXMgcGF0Y2ggdGFrZXMgVS1Cb290IE5BTkQgc3VwcG9ydCB0byB0aGUgbGV2ZWwKICAgIG9mIExpbnV4IDIuNi4yMi4xIGFuZCB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciB2ZXJ5IGxhcmdlIE5BTkQgZGV2aWNlcwogICAgKDRLQiBwYWdlcykgYW5kIGVhc2UgdGhlIGNvbXBhdGliaWxpdHkgYmV0d2VlbiBVLUJvb3QgYW5kIExpbnV4CiAgICBmaWxlc3lzdGVtcy4KCiAgICBUaGlzIHBhdGNoIGlzIHRlc3RlZCBvbiB0d28gY3VzdG9tIGJvYXJkcyB3aXRoIFBQQyBhbmQgQVJNCiAgICBwcm9jZXNzb3JzIHJ1bm5pbmcgWUFGRlMgaW4gVS1Cb290IGFuZCBMaW51eCB1c2luZyBnY2MtNC4xLjIKICAgIGNyb3NzIGNvbXBpbGVycy4KCiAgICBNQUtFQUxMIHBwYy9hcm0gaGFzIHNvbWUgaXNzdWVzOgogICAgICogRE9DL09uZU5hbmQvbmFuZF9zcGwgaXMgbm90IGJ1aWxkaW5nIChJIGhhdmUgbm90IHRyaWVkIHBvcnRpbmcKICAgICAgIHRoZXNlIHBhcnRzLCBhbmQgc2luY2UgSSBkbyBub3QgaGF2ZSBhbnkgSFcgYW5kIEkgYW0gbm90IGZhbWlsaWFyCiAgICAgICB3aXRoIHRoaXMgY29kZS9IVyBJIHRoaW5rIGl0cyBiZXN0IGxlZnQgdG8gc29tZW9uZSBlbHNlLikKCiAgICBFeGNlcHQgZm9yIHRoZSBpc3N1ZXMgbWVudGlvbmVkIGFib3ZlLCBJIGhhdmUgcG9ydGVkIGFsbCBkcml2ZXJzCiAgICBuZWNlc3NhcnkgdG8gcnVuIE1BS0VBTEwgcHBjL2FybSB3aXRob3V0IGVycm9ycyBhbmQgd2FybmluZ3MuIE1hbnkKICAgIGRyaXZlcnMgd2VyZSB0cml2aWFsIHRvIHBvcnQsIGJ1dCBzb21lIHdlcmUgbm90IHNvIHRyaXZpYWwuIFRoZQogICAgZm9sbG93aW5nIGRyaXZlcnMgbXVzdCBiZSBleGFtaW5lZCBjYXJlZnVsbHkgYW5kIG1heWJlIHJld3JpdHRlbiB0bwogICAgc29tZSBkZWdyZWU6CiAgICAgY3B1L3BwYzR4eC9uZGZjLmMKICAgICBjcHUvYXJtOTI2ZWpzL2RhdmluY2kvbmFuZC5jCiAgICAgYm9hcmQvZGVsdGEvbmFuZC5jCiAgICAgYm9hcmQvenlsb25pdGUvbmFuZC5jCgogICAgU2lnbmVkLW9mZi1ieTogV2lsbGlhbSBKdXVsIDx3aWxsaWFtLmp1dWxAdGFuZGJlcmcuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RpZyBPbHNlbiA8c3RpZy5vbHNlbkB0YW5kYmVyZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjZDgyOTE5ZTZjOGE3M2IzNjNhMjZmMzRiNzM0OTIzODQ0ZTUyZDFjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIEF1ZyAxMiAxNjowODozOCAyMDA4ICswMjAwCgogICAgQ29kaW5nIHN0eWxlIGNsZWFudXAsIHVwZGF0ZSBDSEFOR0VMT0csIHByZXBhcmUgcmVsZWFzZQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMTdlOTAwYjhjMGYzOGQ5MjJkYTQ3MDczMjQ2MjE5ZGNlMmE4NDdmMgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBBdWcgMTIgMTQ6NTQ6MDQgMjAwOCArMDIwMAoKICAgIE1WQkNfUDogZml4IGNvbXBpbGUgcHJvYmxlbQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNTJiMDQ3YWU0ODIxOWI1OWJlYmUzN2JhNzQzYWIxMDNmZDRmODMxNgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBBdWcgMTIgMTI6MTA6MTEgMjAwOCArMDIwMAoKICAgIE1QQzgyNzJBRFM6IGZpeCBidWlsZCBlcnJvcjogJ2JkX3QnIGhhcyBubyBtZW1iZXIgbmFtZWQgJ3BjaV9jbGsnCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjOWMxMDFjNjYwYjNkMTk5NTA0NWM2MWM3YzYwNDFmNTJiNmNmMzM1CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIEF1ZyAxMiAwMDozNjo1MyAyMDA4ICswMjAwCgogICAgYWRzNTEyMTogZml4IGNvbXBpbGVyIHdhcm5pbmdzICh1bnVzZWQgdmFyaWFibGVzKQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgOTAyY2EwOTI0NjAzOTk2NGQ1OWJiY2I1MTliMWUxYjVhZWQwMTMwOApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBBdWcgMTEgMTE6Mjk6MjggMjAwOCAtMDUwMAoKICAgIDg1eHg6IFJlbmFtZSBDT05GSUdfTlJfQ1BVUyB0byBDT05GSUdfTlVNX0NQVVMKCiAgICBVc2UgQ09ORklHX05VTV9DUFVTIHRvIG1hdGNoIGV4aXN0aW5nIGRlZmluZSB1c2VkIGJ5IDg2eHguCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDMyMTZjYTk2OTJmZjgwZDdjNjM4NzIzZWY0NDhmM2QzNjMwMWQ5ZTcKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gQXVnIDExIDA5OjIwOjUzIDIwMDggLTA1MDAKCiAgICBGaXggZmFsbG91dCBmcm9tIGF1dG9zdGFydCByZXZlcnQKCiAgICBUaGUgYXV0b3N0YXJ0IHJldmVydCBjYXVzZWQgYSBiaXQgb2YgZHVwbGljYXRlZCBjb2RlIGFzIHdlbGwgYXMKICAgIGNvZGUgdGhhdCB3YXMgdXNpbmcgaW1hZ2VzLT5hdXRvc3RhcnQgdGhhdCBuZWVkcyB0byBnZXQgcmVtb3ZlZCBzbwogICAgd2UgY2FuIGJ1aWxkIGFnYWluLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgM2NmOGEyMzRiOGU4YzAyZTRkYTFmMjM1NjYwNDNiYzI4OGIwNTIyMApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBBdWcgMTEgMDk6MTY6MjUgMjAwOCAtMDUwMAoKICAgIEZpeCBjb21waWxlIGVycm9yIHJlbGF0ZWQgdG8gcjhhNjY1OTctaGNkICYgdXNiCgogICAgV2hlbiBidWlsZGluZyB0aGUgODU0NERTIGJvYXJkIHdlIGdldCB0aGlzIGVycm9yOgoKICAgIEluIGZpbGUgaW5jbHVkZWQgZnJvbSByOGE2NjU5Ny1oY2QuYzoyMjoKICAgIHUtYm9vdC9pbmNsdWRlL3VzYi5oOjE5MDoyOiBlcnJvcjogI2Vycm9yIFVTQiBMb3dsZXZlbCBub3QgZGVmaW5lZAogICAgbWFrZVsxXTogKioqIFtyOGE2NjU5Ny1oY2Qub10gRXJyb3IgMQoKICAgIFRoZSBjbGVhbmVzdCBmaXggaXMgdG8gb25seSBidWlsZCByOGE2NjU5Ny1oY2QuYyBpZiBDT05GSUdfVVNCX1I4QTY2NTk3X0hDRAogICAgaXMgc2V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMmQwZGFhMDM2MTIzMzhhODEzZTNjOWQyMjY4MGU1NGVhYmZlYTM3OApBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXVnIDQgMTQ6MDI6MjYgMjAwOCAtMDUwMAoKICAgIFBPV0VSUEMgODZ4eDogTW92ZSBCQVQgc2V0dXAgY29kZSB0byBDCgogICAgVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSB3ZSB3aWxsIGJlIHBvc3NpYmx5IGJlIGxvY2F0aW5nCiAgICBkZXZpY2VzIGF0IHBoeXNpY2FsIGFkZHJlc3NlcyBhYm92ZSAzMmJpdHMsIGFuZCB0aGUgYXNtCiAgICBwcmVwcm9jZXNzaW5nIGRvZXMgbm90IGFwcGVhciB0byBkZWFsIHdpdGggVUxMIGNvbnN0YW50cwogICAgcHJvcGVybHkuIFdlIG5vdyBjYWxsIHdyaXRlX2JhdCBpbiBsaWJfcHBjL2JhdF9ydy5jLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOWRlNjcxNDlkYjU3NmM5MWI5YzJhMGExODI2NTIzMzFlN2U0NDIxMQpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXVnIDQgMTQ6MDE6NTMgMjAwOCAtMDUwMAoKICAgIFBPV0VSUEM6IEFkZCBzeW5jaHJvbml6YXRpb24gdG8gd3JpdGVfYmF0IGluIGxpYl9wcGMvYmF0X3J3LmMKCiAgICBQZXJmb3JtIHN5bmMvaXN5bmMgYXMgcmVxdWlyZWQgYnkgdGhlIGFyY2hpdGVjdHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDIzZjkzNWMwNzNlNzU3OGM2MDY2ODA0ZmQyZjllZTExNmNhZTZmZmUKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEF1ZyA0IDE0OjAxOjE2IDIwMDggLTA1MDAKCiAgICBQT1dFUlBDOiA4Nnh4IC0gYWRkIG1pc3NpbmcgQ09ORklHX0hJR0hfQkFUUyB0byBzYmM4NjQxZCBjb25maWcKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDUyNzZhMzU4NGQyNmE5NTMzNDA0ZjBlYzAwYzNiNjFjZjlhOTc5MzkKQXV0aG9yOiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+CkRhdGU6CVN1biBBdWcgMyAyMTo0NDoxMCAyMDA4ICswMjAwCgogICAgaS5NWDMxOiBGaXggbXgzMV9ncGlvX211eCgpIGZ1bmN0aW9uIGFuZCBNVVhfLW1hY3Jvcy4KCiAgICBDb3JyZWN0IHRoZSBteDMxX2dwaW9fbXV4KCkgZnVuY3Rpb24gdG8gYWxsb3cgY2hhbmdpbmcgYWxsIGkuTVgzMSBJT01VWAogICAgY29udGFjdHMgaW5zdGVhZCBvZiBvbmx5IHRoZSBmaXJzdCAyNTYgb25lcyBhcyBpcyB0aGUgY2FzZSBwcmlvciB0bwogICAgdGhpcyBwYXRjaC4KCiAgICBBZGQgbWlzc2luZyBNVVhfKiBtYWNyb3MgYW5kIHVwZGF0ZSBib2FyZCBmaWxlcyB0byB1c2UgdGhlIG5ldyBtYWNyb3MuCgogICAgU2lnbmVkLW9mZi1ieTogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgoKY29tbWl0IGI2YjE4M2M1YjJmZmZkNGM0NTZiN2UzZmNiMDY0Y2NlYjQ3ZmU3YWMKQXV0aG9yOiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+CkRhdGU6CVN1biBBdWcgMyAyMTo0MzozNyAyMDA4ICswMjAwCgogICAgaS5NWDMxOiBGaXggSU9NVVggcmVsYXRlZCB0eXBvcwoKICAgIENvcnJlY3QgdGhlIG5hbWVzIG9mIHNvbWUgSU9NVVggbWFjcm9zLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KCmNvbW1pdCA0ZDU3YjBmYjI5MjdkNGY1MGQ4MzQ4ODRiNGVjNGE3Y2EwMTcwOGIwCkF1dGhvcjogU3RldmUgU2Frb21hbiA8c3RldmVAc2Frb21hbi5jb20+CkRhdGU6CU1vbiBBdWcgMTEgMjA6MjY6MTYgMjAwOCArMDIwMAoKICAgIE9uZU5BTkQ6IFJlbW92ZSB1bnVzZWQgcGFyYW1ldGVycyB0byBvbmVuYW5kX3ZlcmlmeV9wYWdlCgogICAgVGhlIGJsb2NrIGFuZCBwYWdlIHBhcmFtZXRlcnMgb2Ygb25lbmFuZF92ZXJpZnlfcGFnZSgpIGFyZSBub3QgdXNlZC4gVGhpcyBjYXVzZXMgYSBjb21waWxlciBlcnJvciB3aGVuIENPTkZJR19NVERfT05FTkFORF9WRVJJRllfV1JJVEUgaXMgZW5hYmxlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGV2ZSBTYWtvbWFuIDxzdGV2ZUBzYWtvbWFuLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ21haWwuY29tPgoKY29tbWl0IGU4NGQ1NjhmYTJhOWY0Y2U3ODg4MTQxZTcxNjc2MzY4ZWY2YjNmMjUKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CUZyaSBBdWcgOCAxODowMDo0MCAyMDA4ICswMjAwCgogICAgdmlkZW86IGZpeCBidWcgaW4gY2ZiX2NvbnNvbGUgY29kZQoKICAgIEZJTExfMTVCSVRfNTU1UkdCIG1hY3JvIGV4dGVuc2lvbiBmb3IgcGl4ZWwgc3dhcHBpbmcKICAgIGJ5IGNvbW1pdCBiZWQ1Mzc1M2RkMWQ3ZTZiY2JlYTQzMzliZTBmYjc3NjAyMTRjYzM1CiAgICBpbnRyb2R1Y2VkIGEgYnVnIGluIGNmYl9jb25zb2xlOgoKICAgIEJpdG1hcHMgd2l0aCBvZGQtbnVtYmVyZWQgd2lkdGggd29uJ3QgYmUgcmVuZGVyZWQKICAgIGNvcnJlY3RseSBhbmQgZXZlbiBVLUJvb3QgY3Jhc2hlcyBhcmUgb2JzZXJ2ZWQgb24KICAgIHNvbWUgcGxhdGZvcm1zIHdoaWxlIHJlcGVhdGVkIHJlbmRlcmluZyBvZiBzdWNoCiAgICBiaXRtYXBzIHdpdGggImJtcCBkaXNwbGF5Ii4gQWxzbyBpZiBhIGJpdG1hcCBpcwogICAgcmVuZGVyZWQgdG8gYW4gb2RkLW51bWJlcmVkIHggc3RhcnRpbmcgcG9zaXRpb24sCiAgICB0aGUgc2FtZSBwcm9ibGVtIG9jY3Vycy4gVGhpcyBwYXRjaCBpcyBhbiBhdHRlbXB0CiAgICB0byBmaXggaXQuCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IGQ5MDE1ZjZhNTBkNzI1ODEyNTM0OWVmNWMyYWY4MzY0NThhMDAyOWEKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CUZyaSBBdWcgOCAxODowMDozOSAyMDA4ICswMjAwCgogICAgdmlkZW86IGZpeCBidWcgaW4gbG9nb19wbG90CgogICAgSWYgbG9nb19wbG90KCkgc2hvdWxkIGV2ZXIgYmUgY2FsbGVkIHdpdGggeCBzdGFydGluZwogICAgcG9zaXRpb24gb3RoZXIgdGhhbiB6ZXJvIGFuZCBmb3IgcGl4ZWwgZGVwdGhzIGdyZWF0ZXIKICAgIHRoYW4gOGJwcCwgbG9nbyBjb2xvcnMgZGlzdG9ydGlvbiB3aWxsIGJlIG9ic2VydmVkLgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgaXNzdWUuCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IDQwNjgxOWFlOTRmNzlmNWI1OWUwMWQxNjMzODBjYTdkODM3MDkyNTEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gQXVnIDExIDAwOjE3OjUyIDIwMDggKzAyMDAKCiAgICBNQUlOVEFJTkVSUzogc29ydCBlbnRyaWVzCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjZmM0NDJkNzkxM2Q0ZDFjM2E5YmY0OTRmOTBjMDEyYzJmOGMzYmRjCkF1dGhvcjogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXVnIDcgMTg6MTk6MjggMjAwOCArMDgwMAoKICAgIEFkZCBtcGM3NDQ4aHBjMiBtYWludGFpbmVyIGluZm9ybWF0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGE5ZmUwYzNlN2NhNDhhZmE1MGQ2YTBkYjk5ZmE5MWU3MjgyZDczZDgKQXV0aG9yOiBHdXJ1cmFqYSBIZWJiYXIgSyBSIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgpEYXRlOglUaHUgQXVnIDcgMTM6MTM6MjcgMjAwOCArMDUzMAoKICAgIGNvbW1vbi9jbWRfbG9hZC5jIC0gTWlub3IgY29kZSAmIENvZGluZyBTdHlsZSBjbGVhbnVwCgogICAgLSBvc19kYXRhX2hlYWRlciBWYXJpYWJsZSBpcyBhIGNhcnJ5IG92ZXIgZmVhdHVyZQogICAgICAgJiB1bnVzZWQuIFNvIHJlbW92ZWQgYWxsIGluc3RhbmNlIG9mIHRoaXMgdmFyaWFibGUKICAgICAtIE1pbm9yIENvZGUgU3R5bGUgVXBkYXRlCgogICAgU2lnbmVkLW9mZi1ieTogR3VydXJhamEgSGViYmFyIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgogICAgQWNrZWQtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMGQyOGYzNGJiZTU2ZDA5NzFiZDYwMzc4OWRjYzZmZTdhZGYxMWYxNApBdXRob3I6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KRGF0ZToJV2VkIEF1ZyA2IDE5OjMyOjMzIDIwMDggKzAyMDAKCiAgICBVcGRhdGUgdGhlIFUtQm9vdCB3aWtpIFVSTC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Cgpjb21taXQgYWE1ZmZhMTZkN2U0YzQ2MWI3Yjc3YmY4ZTc5ZDJlZjU2MzhjZjc1NApBdXRob3I6IGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20gPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVN1biBBdWcgMTAgMTc6NTY6MzYgMjAwOCArMDIwMAoKICAgIE9uZU5BTkQ6IFJlbW92ZSBiYXNlIGFkZHJlc3Mgb2Zmc2V0IHVzYWdlCgogICAgV2hpbGUgbG9jYWxseSBwcmVwYXJpbmcgc29tZSBVLUJvb3QgcGF0Y2hlcyBmb3IgQVJNIGJhc2VkIE9NQVAzIGJvYXJkcywgc29tZQogICAgdXNpbmcgT25lTkFORCBhbmQgc29tZSB1c2luZyBOQU5ELCB3ZSBmb3VuZCBzb21lIGRpZmZlcmVuY2VzIGluIE9uZU5BTkQgYW5kCiAgICBOQU5EIGNvbW1hbmQgYWRkcmVzcyBoYW5kbGluZy4KCiAgICBBcyB0aGlzIG1pZ2h0IGNvbmZ1c2UgdXNlcnMgKGl0IGFscmVhZHkgY29uZnVzZWQgdXMpLCB3ZSBsaWtlIHRvIGFsaWduIE9uZU5BTkQKICAgIGFuZCBOQU5EIGFkZHJlc3MgaGFuZGxpbmcuCgogICAgVGhlIGlzc3VlIGlzIHRoYXQgY21kX29uZW5hbmQuYyBzdWJ0cmFjdHMgdGhlIG9uZW5hbmQgYmFzZSBhZGRyZXNzIGZyb20gdGhlCiAgICBhZGRyZXNzZXMgeW91IHR5cGUgaW50byB0aGUgdS1ib290IGNvbW1hbmQgbGluZSBzbywgdW5saWtlIG5hbmQsIHlvdSBjYW4ndAogICAgdXNlIGFkZHJlc3NlcyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIG9uZW5hbmQgcGFydCBlLmcuIHRoaXMgd29uJ3Qgd29yazoKCiAgICBvbmVuYW5kIHJlYWQgODIwMDAwMDAgMjgwMDAwIDQwMDAwMAoKICAgIHlvdSBoYXZlIHRvIHVzZToKCiAgICBvbmVuYW5kIHJlYWQgODIwMDAwMDAgMjAyODAwMDAgNDAwMDAwCgogICAgTG9va2luZyBhdCByZWNlbnQgZ2l0LCB0aGUgb25seSBib2FyZCBjdXJyZW50bHkgdXNpbmcgT25lTkFORCBpcyBBcG9sbG9uLCBhbmQKICAgIGZvciB0aGlzIHRoZSBPbmVOQU5EIGJhc2UgYWRkcmVzcyBpcyAwIChhcG9sbG9uLmgpCgogICAgI2RlZmluZQlDRkdfT05FTkFORF9CQVNFCTB4MDAwMDAwMDAKCiAgICBzbyBwYXRjaCBiZWxvdyB3b24ndCBicmVhayBhbnkgZXhpc3RpbmcgYm9hcmRzIGFuZCB3aWxsIGFsaWduIE9uZU5BTkQgYW5kIE5BTkQKICAgIGhhbmRsaW5nIG9uIGJvYXJkcyB3aGVyZSBPbmVOQU5EIGJhc2UgYWRkcmVzcyBpcyAhPSAwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZXZlIFNha29tYW4gPHNha29tYW5AZ21haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWFuaWthbmRhbiBQaWxsYWkgPG1hbmkucGlsbGFpQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ21haWwuY29tPgoKY29tbWl0IGMxMTUyODA4M2VmNmU1NWU3NmRmNzQyMjI4YzI2ZTM5ZDE1MTgxM2QKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgQXVnIDcgMDk6Mjg6MjAgMjAwOCAtMDUwMAoKICAgIG1wYzg1eHg6IHdvcmthcm91bmQgb2xkIGJpbnV0aWxzIGJ1ZwoKICAgIFRoZSByZWNlbnQgY2hhbmdlIHRvIG1vdmUgdGhlIC5ic3Mgb3V0c2lkZSBvZiB0aGUgaW1hZ2UgZ2l2ZXMgb2xkZXIKICAgIGJpbnV0aWxzIChsZCBmcm9tIGVsZGs0LjEvYmludXRpbHMtMi4xNikgc29tZSBoZWFkYWNoZToKCiAgICBwcGNfODV4eC1sZDogdS1ib290OiBOb3QgZW5vdWdoIHJvb20gZm9yIHByb2dyYW0gaGVhZGVycyAoYWxsb2NhdGVkIDMsIG5lZWQgNCkKICAgIHBwY184NXh4LWxkOiBmaW5hbCBsaW5rIGZhaWxlZDogQmFkIHZhbHVlCgogICAgV2Ugd29ya2Fyb3VuZCBpdCBieSBiZWluZyBleHBsaWNpdCBhYm91dCB0aGUgcHJvZ3JhbSBoZWFkZXJzIGFuZCBub3QKICAgIGFzc2lnbmluZyB0aGUgLmJzcyB0byBhIHByb2dyYW0gaGVhZGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMGJmMjAyZWM1ODZkNDQ2NmM5MDBlOTg3NzIwZmE2MzVjNTk0ZDY4OQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBBdWcgMTAgMDE6MjY6MjYgMjAwOCArMDIwMAoKICAgIFJldmVydCAiW25ldyB1SW1hZ2VdIEFkZCBhdXRvc3RhcnQgZmxhZyB0byBib290bV9oZWFkZXJzIHN0cnVjdHVyZSIKCiAgICBUaGlzIHJldmVydHMgY29tbWl0IGY1NjE0ZTc5MjY4NjNiZjAyMjVlYzg2MGQ5YjMxOTc0MWE5YzQwMDQuCgogICAgVGhlIGNvbW1pdCB3YXMgYmFzZWQgb24gYSBtaXN1bmRlcnN0YW5kaW5nIG9mIHRoZSAoZG9jdW1lbnRlZCkKICAgIG1lYW5pbmcgb2YgdGhlICdhdXRvc3RhcnQnIGVudmlyb25tZW50IHZhcmlhYmxlLiBJdCBtaWdodCBjYXVzZQogICAgYm9hcmRzIHRvIGhhbmcgaWYgJ2F1dG9zdGFydCcgd2FzIHVzZWQsIHdpdGggdGhlIHBvdGVudGlhbCB0byBicmljawogICAgdGhlbS4gR28gYmFjayB0byB0aGUgZG9jdW1lbnRlZCBiZWhhdmlvdXIuCgogICAgQ29uZmxpY3RzOgoKCWNvbW1vbi9jbWRfYm9vdG0uYwoJY29tbW9uL2ltYWdlLmMKCWluY2x1ZGUvaW1hZ2UuaAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMjlmOGY1OGZmNDBjNjdmN2YyZTExYWZkMTcxNTE3MzA5NGU1MmFjMgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBBdWcgOSAyMzoxNzozMiAyMDA4ICswMjAwCgogICAgVFFNOHh4e0wsTX06IHRyeSB0byBub3JtYWxpemUgY29uZmlnIGZpbGVzIGZvciBUUU04eHg/IGJhc2VkIGJvYXJkCgogICAgLSBlbmFibGUgQ0ZJIGRyaXZlciB3aGVyZSB0aGlzIHdhcyBmb3Jnb3R0ZW4KICAgIC0gZW5hYmxlIG10ZHBhcnRzIHN1cHBvcnQKICAgIC0gYWRqdXN0IGRlZmF1bHQgZW52aXJvbm1lbnQKICAgIGV0Yy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDQxMjY2YzliNWE1Zjg3M2RmM2VjODkxYmIwOTA3NjE2OTU4YjU2MDIKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglUdWUgQXVnIDUgMTA6NTE6NTcgMjAwOCAtMDUwMAoKICAgIEZJVDogRml4IGhhbmRsaW5nIG9mIGltYWdlcyB3aXRob3V0IHJhbWRpc2tzCgogICAgYm9vdF9nZXRfcmFtZGlzaygpIHNob3VsZCBub3QgdHJlYXQgdGhlIGNhc2Ugd2hlbiBhIEZJVCBpbWFnZSBkb2VzCiAgICBub3QgY29udGFpbiBhIHJhbWRpc2sgYXMgYW4gZXJyb3IuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIEFja2VkLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Cgpjb21taXQgZjc3ZDkyYTNmNTZkODhlNjNjYzAyMjI2YTEyMDRiM2JkYmFjNjk2MQpBdXRob3I6IFNlcmdleSBMYXBpbiA8c2xhcGluQG9zc2ZhbnMub3JnPgpEYXRlOglTYXQgQXVnIDkgMDE6Mzk6MDkgMjAwOCArMDQwMAoKICAgIERhdGFGbGFzaDogQVQ0NURCMDIxIGZpeCBhbmQgQVQ0NURCMDgxIHN1cHBvcnQKCiAgICBGaXggZm9yIHBhZ2Ugc2l6ZSBvZiBBVDQ1REIwMjEuIEFsc28gYWRkaW5nIGJpZ2dlciBBVDQ1REIwODEKICAgIHdoaWNoIGNvbWVzIHdpdGggc29tZSBuZXdlciBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2V5IExhcGluIDxzbGFwaW5Ab3NzZmFucy5vcmc+Cgpjb21taXQgYmE5MzI0NDUxYjY2MmRkMzkzYWZhNTNlNWNjMzZmYzVkM2QxMDk2NgpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJRnJpIEF1ZyA4IDE2OjMwOjIzIDIwMDggKzA5MDAKCiAgICBzaDogVXBkYXRlIHNoNzc2M3JkcCBjb25maWcKCiAgICBBZGQgc2hfZXRoIHN1cHBvcnQgdG8gc2g3NzYzcmRwLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KCmNvbW1pdCAyMWY5NzFlYzI2NWY2MDQyZWMyMTYzNmQ1NWQwNmE2YmMwNzUxMDc3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIEp1bCA3IDAxOjIyOjI5IDIwMDggKzAyMDAKCiAgICBUUU04MjNMOiByZS1lbmFibGUgbG9nbyBzdXBwb3J0OyB1cGRhdGUgTENEX0lORk8gdGV4dAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgM2I4ZDE3ZjBmMDgyMDczMzQ2YzBkZjAxN2M5ZGZkNmFjZGI0MGQ2ZApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBBdWcgOCAxNjo0MTo1NiAyMDA4ICswMjAwCgogICAgVFFNOHh4TDogZml4IHN1cHBvcnQgZm9yIHNlY29uZCBmbGFzaCBiYW5rCgogICAgV2hlbiBzd2l0Y2hpbmcgdGhlIFRRTTh4eEwgbW9kdWxlcyB0byB1c2UgdGhlIENGSSBmbGFzaCBkcml2ZXIsCiAgICBzdXBwb3J0IGZvciB0aGUgc2Vjb25kIGZsYXNoIGJhbmsgd2FzIGJyb2tlbiBiZWNhdXNlIHRoZSBDRkkgZHJpdmVyCiAgICBkaWQgbm90IHN1cHBvcnQgZHluYW1pY2FsbHkgc2l6ZWQgYmFua3MuIFRoaXMgZ2V0cyBmaXhlZCBub3cuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAyYTExMmIyMzRkODc5ZjYzOTA1MDNhNWY0ZTM4MjQ2YWNjZTlkMGIwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIEF1ZyA4IDE2OjM5OjU0IDIwMDggKzAyMDAKCiAgICBDRkk6IGFsbG93IGZvciBkeW5hbWljYWxseSBkZXRlcm1pbmVkIGZsYXNoIHNpemVzIGFuZCBhZGRyZXNzZXMKCiAgICBUaGUgQ0ZJIGRyaXZlciBhbGxvd2VkIG9ubHkgZm9yIHN0YXRpYyBpbml0aWFsaXplcnMgaW4gdGhlCiAgICBDRkdfRkxBU0hfQkFOS1NfTElTVCBkZWZpbml0aW9uLCBpLiBlLiBpdCBkaWQgbm90IGFsbG93IHRvIG1hcAogICAgc2V2ZXJhbCBmbGFzaCBiYW5rcyBjb250aWd1b3VzbHkgaWYgdGhlIGJhbmsgc2l6ZXMgd2VyZSBub3Qga25vd24gaW4KICAgIGFkdmFuY2UsIHdoaWNoIGtpbmQgb2YgdmlvbGF0ZXMgVS1Cb290J3MgZGVzaWduIHBoaWxvc29waHkuCgogICAgKHdpbGwgYmUgdXNlZCBmb3IgZXhhbXBsZSBieSB0aGUgVFFNOHh4TCBib2FyZHMpCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBkOWQ3OGVlNDZkOWEzOTZkMGE4MWQwMGMyYjAwM2E5YmQzMmMyZTYxCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJVGh1IEF1ZyA3IDIzOjI2OjM1IDIwMDggLTA3MDAKCiAgICBRRSBVRUM6IEZpeCBjb21waWxlciB3YXJuaW5ncwoKICAgIE1vdmVkIHN0YXRpYyBmdW5jdGlvbnMgZWFybGllciBpbiBmaWxlIHNvIGZvcndhcmQgZGVjbGFyYXRpb25zIGFyZSBub3QgbmVlZGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZDVkMjhmZTRhYWQ1ZjQ1MzU0MDA2NDdhNTYxN2MxMTAzOTUwNjQ2NwpBdXRob3I6IERhdmlkIFNhYWRhIDxEYXZpZC5TYWFkYUBlY2l0ZWxlLmNvbT4KRGF0ZToJTW9uIE1hciAzMSAwMjozNzozOCAyMDA4IC0wNzAwCgogICAgUUUgVUVDOiBBZGQgTUlJIENvbW1hbmRzCgogICAgQWRkIE1JSSBjb21tYW5kcyB0byB0aGUgVUVDIGRyaXZlci4gTm90ZSB0aGF0IG9uY2UgYSBVRUMgZGV2aWNlIGlzIHNlbGVjdGVkLAogICAgYW55IGRldmljZSBvbiBpdHMgTURJTyBidXMgY2FuIGJlIGFkZHJlc3NlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTYWFkYSA8ZGF2aWQuc2FhZGFAZWNpdGVsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGZkMGYyZjM3OTZmZjJhN2EzMmQzNWRlYjFiNzk5NmU0ODU4NDlkZjcKQXV0aG9yOiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVdlZCBKdWwgOSAyMTowNzozOCAyMDA4ICswOTAwCgogICAgdXNiOiBhZGQgc3VwcG9ydCBmb3IgUjhBNjY1OTcgdXNiIGNvbnRyb2xsZXIKCiAgICBhZGQgc3VwcG9ydCBmb3IgUmVuZXNhcyBSOEE2NjU5NyB1c2IgY29udHJvbGxlci4KICAgIFRoaXMgcGF0Y2ggc3VwcG9ydHMgVVNCIEhvc3QgbW9kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgoKY29tbWl0IDFkMTBkY2QwNDFhYWVhZTlmZDdjODIxMDA1NjkyODk4YTAzMDMzODIKQXV0aG9yOiBIdW50ZXIsIEpvbiA8am9uLWh1bnRlckB0aS5jb20+CkRhdGU6CVNhdCBKdWwgMjYgMTg6NTk6MTYgMjAwOCAtMDUwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBPTUFQNTkxMiBhbmQgT01BUDE2eHggdG8gdXNiZGNvcmVfb21hcDE1MTAuYwoKICAgIEFkZCBzdXBwb3J0IHRvIGRyaXZlcnMvdXNiL3VzYmRjb3JlX29tYXAxNTEwLmMgZm9yIE9NQVA1OTEyIGFuZCBPTUFQMTZ4eCBkZXZpY2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBIdW50ZXIgPGpvbi1odW50ZXJAdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KCmNvbW1pdCBlYWIxMDA3MzM0YjkzYTYyMDlmMWVjMzM2MTVlMjZlZjUzMTFlZGU3CkF1dGhvcjogU3RldmVuIEEuIEZhbGNvIDxzZmFsY29AaGFycmlzLmNvbT4KRGF0ZToJV2VkIEF1ZyA2IDE1OjQyOjUyIDIwMDggLTA0MDAKCiAgICBwcGM0eHg6IFNlcXVvaWEgaGFzIHR3byBVQVJUcyBpbiAiNC1waW4iIG1vZGUuIENvbmZpZ3VyZSB0aGUgR1BJT3MgYXMgcGVyIHNjaGVtYXRpYy4KCiAgICBUaGUgU2VxdW9pYSBib2FyZCBoYXMgdHdvIFVBUlRzIGluICI0LXBpbiIgbW9kZS4gVGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgR1BJTwogICAgY29uZmlndXJhdGlvbiB0byBtYXRjaCB0aGUgc2NoZW1hdGljLCBhbmQgYWxzbyBzZXRzIHRoZSBTRFIwX1BGQzEgcmVnaXN0ZXIgdG8KICAgIHNlbGVjdCB0aGUgY29ycmVzcG9uZGluZyBtb2RlIGZvciB0aGUgVUFSVHMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RldmVuIEEuIEZhbGNvIDxzZmFsY29AaGFycmlzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwZWI1NzE3YTg1YjZjYmEzZjY3YzExZmE4OWJkZGUzOGRjZDA4MWI1CkF1dGhvcjogSGFucy1DaHJpc3RpYW4gRWd0dmVkdCA8aGFucy1jaHJpc3RpYW4uZWd0dmVkdEBhdG1lbC5jb20+CkRhdGU6CVdlZCBBdWcgNiAxNDo0MjoxMyAyMDA4ICswMjAwCgogICAgYXZyMzI6IGFkZCBzdXBwb3J0IGZvciBFYXJ0aExDRCBGYXZyLTMyIGJvYXJkCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBGYXZyLTMyIGJvYXJkIG1hZGUgYnkgRWFydGhMQ0QuCgogICAgVGhpcyBraXQsIHdoaWNoIGlzIGFsc28gY2FsbGVkIGV6TENELTEwMSB3aGVuIHJ1bm5pbmcgd2l0aCBFYXJ0aExDRCBmaXJtd2FyZSwKICAgIGhhcyBhIDEwLjQiIHRvdWNoIHNjcmVlbiBMQ0QgcGFuZWwsIDE2IE1CIDMyLWJpdCBTRFJBTSwgOCBNQiBwYXJhbGxlbCBmbGFzaCwKICAgIEV0aGVybmV0LCBhdWRpbyBvdXQsIFVTQiBkZXZpY2UsIFNELWNhcmQgc2xvdCwgVVNBUlQgYW5kIHZhcmlvdXMgb3RoZXIKICAgIGNvbm5lY3RvcnMgZm9yIGNlbm5lY3Rpbmcgc3R1ZmYgdG8gU1BJLCBJMkMsIEdQSU8sIGV0Yy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYW5zLUNocmlzdGlhbiBFZ3R2ZWR0IDxoYW5zLWNocmlzdGlhbi5lZ3R2ZWR0QGF0bWVsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBiYzkwMTllMTk3NThhMTlhMzg4ZmIyMGVmMThkYzc3MWNkMzlmZGRhCkF1dGhvcjogUmFmYWVsIENhbXBvcyA8cmFmYWVsLmNhbXBvc0BoYW5zY2FuLmNvbT4KRGF0ZToJVGh1IEp1bCAzMSAxMDoyMjoyMCAyMDA4ICswMjAwCgogICAgY2ZpLWZsYXNoOiBBZGRlZCBzdXBwb3J0IHRvIGZsYXNoX3JlYWxfcHJvdGVjdCBmb3IgQXRtZWwgZmxhc2ggZGV2aWNlcwoKICAgIFNvbWUgb2YgdGhlIGZsYXNoIG1lbW9yaWVzIHByb2R1Y2VkIGJ5IEFUTUVMIHN0YXJ0IGluIHJlYWQtb25seSBtb2RlLgogICAgV2UgbmVlZCB0byB1bnByb3RlY3QgaXQuIFRoaXMgcGF0Y2ggYWxsb3dzIHRoZSBBVDQ5QlY2NDE2IHRvIHdvcmsgd2l0aAogICAgY2ZpX2ZsYXNoIG1lbW9yaWVzLiBUZXN0ZWQgaW4gdGhlIGF0OTFybTkyMDBlayBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhZWwgQ2FtcG9zIExhcyBIZXJhcyA8cmFmYWVsLmNhbXBvc0BoYW5zY2FuLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3OTQ5ODM5ZTU4MzZiZjhiMTA3NGJiNjE0MmM0NmQzMGFjM2FhMzUwCkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglUdWUgQXVnIDUgMTU6MzY6MzkgMjAwOCArMDIwMAoKICAgIGNmaS1mbGFzaDogQWRkIGRlZmluaXRpb24gZm9yIHRoZSBBTTI5TFY4MDBCQiBBTUQgTk9SLWZsYXNoCgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDEzMTg2NzMwNDVmZTE4OGM2ZTI0YzU4MmIxZTZlZmMwMGFlMWM2MmMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBBdWcgNiAxNDowNjowMyAyMDA4ICswMjAwCgogICAgRml4IG1lcmdlIHByb2JsZW1zCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGYyMzAyZDQ0MzBlN2YzZjQ4MzA4ZDZhNTg1MzIwZmU5NmFmOGFmYmQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBBdWcgNiAxNDowNTozOCAyMDA4ICswMjAwCgogICAgRml4IG1lcmdlIHByb2JsZW1zCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDY2ODk0ODRjY2Q0MzE4OTMyMmFhYTVhMWM2Y2QwMmNkZDUxMWFkN2QKQXV0aG9yOiBLZW5uZXRoIEpvaGFuc3NvbiA8a2VubmV0aEBzb3V0aHBvbGUuc2U+CkRhdGU6CVR1ZSBKdWwgMTUgMTI6MTM6MzggMjAwOCArMDIwMAoKICAgIG1wYzUxMjE6IE1vdmUgaW9waW4gZmVhdHVyZXMgZnJvbSBib2FyZCBzcGVjaWZpYyB0byBjb21tb24gZmlsZXMuCgogICAgQW5kIGluIHRoZSBwcm9jZXNzIGVsaW1pbmF0ZSBzb21lIGR1cGxpY2F0ZSByZWdpc3RlciBkZWZpbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtlbm5ldGggSm9oYW5zc29uIDxrZW5uZXRoQHNvdXRocG9sZS5zZT4KCmNvbW1pdCBlZjExZGY2YjY2ZWNmNTc5N2U5NGJhMzIyMjU0YjhmYjdhNGUyZTEyCkF1dGhvcjogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBBdWcgNSAxNzozODo1NyAyMDA4IC0wNjAwCgogICAgbXBjNTEyMTogc3F1YXNoIHNvbWUgZmR0IGZpeHVwIGVycm9ycwoKICAgIE9uIEFEUzUxMjEgd2hlbiBib290aW5nIGxpbnV4IHRoZSBmb2xsb3dpbmcgZXJyb3JzIGFyZSBzZWVuOgoJVW5hYmxlIHRvIHVwZGF0ZSBwcm9wZXJ0eSAvc29jNTEyMUA4MDAwMDAwMDpidXMtZnJlcXVlbmN5LCBlcnI9RkRUX0VSUl9OT1RGT1VORAoJVW5hYmxlIHRvIHVwZGF0ZSBwcm9wZXJ0eSAvc29jNTEyMUA4MDAwMDAwMC9ldGhlcm5ldEAyODAwOmxvY2FsLW1hYy1hZGRyZXNzLCBlcnI9RkRUX0VSUl9OT1RGT1VORAoJVW5hYmxlIHRvIHVwZGF0ZSBwcm9wZXJ0eSAvc29jNTEyMUA4MDAwMDAwMC9ldGhlcm5ldEAyODAwOmFkZHJlc3MsIGVycj1GRFRfRVJSX05PVEZPVU5ECgogICAgVGhpcyBpcyBjYXVzZWQgYnkgZnRfY3B1X3NldHVwIHRyeWluZyB0byBkZWFsIHdpdGgKICAgIGJvdGggb2xkIGFuZCBuZXcgc29jIG5vZGUgbmFtaW5nLiAgVGhpcyBwYXRjaAogICAgZml4ZXMgdGhpcyBieSBiZWluZyBzbWFydGVyIGFib3V0IHdoYXQgdG8KICAgIGZpeHVwLgoKICAgIEFsc28gZG8gc29jIG5vZGUgZml4dXBzIGJ5IGNvbXBhdGlibGUgaW5zdGVhZCBvZiBieSBwYXRoLgogICAgQSBuZXcgYm9hcmQgY29uZmlnIGNhbGxlZCBPRl9TT0NfQ09NUEFUIGRlZmluZWQKICAgIHRvIGJlICJmc2wsbXBjNTEyMS1pbW1yIiByZXBsYWNlcyB0aGUgb2xkCiAgICBPRl9TT0Mgbm9kZSBwYXRoIHRoYXQgd2FzIGRlZmluZWQgdG8gYmUgInNvY0A4MDAwMDAwMCIuCgogICAgT2xkIGRldmljZSB0cmVlcyBzdGlsbCB3b3JrLCBidXQgdGhlIGNvbXBhdGlibGl0eQogICAgaXMgY29uZGl0aW9uYWwgb24gQ09ORklHX09GX1NVUFBPUlRfT0xEX0RFVklDRV9UUkVFUwogICAgd2hpY2ggaXMgb24gYnkgZGVmYXVsdCBpbiBpbmNsdWRlL2NvbmZpZ3MvYWRzNTEyMS5oLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDgxMDkxZjU4ZjBjNThlY2QyNmM1YjA1ZGUyYWUyMGNhNmNkYjUyMWMKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgQXVnIDIgMjM6NDg6MzAgMjAwOCArMDIwMAoKICAgIGRyaXZlcnMvc2VyaWFsOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlIGZvciBDT05GSUdfKiBtYWNyb3MKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDRjZDdlNjUyOGY2MWVjNjY5NzU1YzM3NTRiYjRmOTc3OTg3NGZhYjMKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgQXVnIDIgMjM6NDg6MzIgMjAwOCArMDIwMAoKICAgIG5pb3MyL3N5c2lkOiBmaXggcHJpbnRmIHdhcm5pbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDY2ZGE2ZmEwZTM1ZTdlZTU2NjI4Yzg1OTgxNzA5YWZlNzE4MGZjOGUKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgQXVnIDIgMjM6NDg6MzMgMjAwOCArMDIwMAoKICAgIEZpeCByZW1haW5pbmcgYnVpbGQgaXNzdWVzIHdpdGggTVBDOHh4IEZBRFMgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgODFkM2YxZmRkZGFmZDFlYjUzYmJjYTg3MzlmNDg4ZDQxN2ViM2RkMgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBBdWcgMiAyMzo0ODozMSAyMDA4ICswMjAwCgogICAgbmlvczI6IGZpeCBwaHlzX2FkZHJfdCBhbmQgcGh5c19zaXplX3Qgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNWZhNjIwMDBkYjZkMGI0NmVjZGVhZGJlYjUwZmFmNTE5N2RiNDllZgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBBdWcgMiAyMzo0ODozNCAyMDA4ICswMjAwCgogICAgbXZiY19wOiBGaXggcHJvYmxlbSB3aXRoICcjaWYgKENPTkZJR19DTURfS0dEQiknCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAxNDY0ZWZmNzdlN2ZkYWVkNjA5ZWNmMjYzYTI0MjNjOWRjZjk2YjFmCkF1dGhvcjogTWFyayBKYWNrc29uIDxtcGZqQG1pbWMuY28udWs+CkRhdGU6CUZyaSBBdWcgMSAwOTo0ODoyOSAyMDA4ICswMTAwCgogICAgRml4IGJpdG1hcCBkaXNwbGF5IGZvciBhdG1lbCBsY2QgY29udHJvbGxlcgoKICAgIFRoZSBjdXJyZW50IGxjZF9kaXNwbGF5X2JpdG1hcCgpIGZ1bmN0aW9uIGRvZXMgbm90IHdvcmsgcHJvcGVybHkKICAgIGZvciB0aGUgQXRtZWwgTENEIGNvbnRyb2xsZXIuCgogICAgMiBmaXhlcyBuZWVkIHRvIGJlIGRvbmU6LQoKICAgIChhKSB3aGVuIHNldHRpbmcgdGhlIGNvbG91ciBtYXAsIHVzZSB0aGUgbGNkX3NldGNvbHJlZygpIGZ1bmN0aW9uCglhcyBwcm92aWRlZCBieSB0aGUgQXRtZWwgZHJpdmVyCiAgICAoYikgdGhlIGRhdGEgaXMgbmV2ZXIgYWN0dWFsbHkgd3JpdHRlbiB0byB0aGUgbGNkIGZyYW1lYnVmZmVyICEhCgogICAgU2lnbmVkLW9mZi1ieTogTWFyayBKYWNrc29uIDxtcGZqQG1pbWMuY28udWs+Cgpjb21taXQgMmE0MzNjNjZiMWUyNzcwMzQ5ZmU0OTExYmUyM2MzNzVmMDUzZWJkOApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBBdWcgMSAwODo0MDozNCAyMDA4ICswMjAwCgogICAgcWVtdV9taXBzOiB1cGRhdGUgUkVBRE1FIHRvIGZvbGxvdyBxZW11IHVwZGF0ZSBhYm91dCBkZWZhdWx0IG1hY2hpbmUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGFjMTY5ZDY0NWY1ZjBlMGI5YTIzMjU2MzA5OTIwOWU5MmEzNTVkOGUKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVsIDMxIDE5OjUzOjIxIDIwMDggLTA1MDAKCiAgICBDb2xkRmlyZTogRml4IGNvbXBpbGF0aW9uIGlzc3VlIGNhdXNlZCBieSBhIG1pc3NpbmcgZnVuY3Rpb24KCiAgICBJbXBsZW1lbnQgdXNlYzJ0aWNrcygpIHdoaWNoIGlzIHVzZWQgYnkgZnNsX2kyYy5jIGluCiAgICBsaWJfbTY4ay90aW1lLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDAxYWU4NWI1OGI1MWQyZmIxZmFjNWI5MzA5NWY2MDQyY2Y0OGFlN2IKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVsIDMxIDE5OjUzOjA2IDIwMDggLTA1MDAKCiAgICBGaXggY29tcGlsYXRpb24gZXJyb3IgZm9yIFRBU1JFRwoKICAgIFRBU1JFRyBpcyBDb2xkRmlyZSBwbGF0Zm9ybSwgdGhlIGluY2x1ZGUgcHBjNHh4LmggaW4KICAgIGJvYXJkL2VzZC9jb21tb24vZmxhc2guYyBjYXVzZXMgY29uZmxpY3QuCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzNWQzYmQzY2MzNWM1MDhhNjgyM2RhYzc3ZTBmZDEyNjgwOGU0ZmM3CkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1bCAzMSAxOTo1MjozNiAyMDA4IC0wNTAwCgogICAgRml4IGNvbXBpbGF0aW9uIGVycm9yIGZvciBNQ0Y1Mjc1CgogICAgUmVuYW1lIE9CSiB0byBDT0JKIGluIGJvYXJkL3BsYXRmb3JtL01ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1YzQwNTQ4ZjAxMjE4MzYwYTFmMTM5NTE5OGM1MGZmNDVmMzAzNWI1CkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1bCAzMSAxOTo1MjoyOCAyMDA4IC0wNTAwCgogICAgRml4IGNvbXBpbGUgZXJyb3IgY2F1c2VkIGJ5IGluY29ycmVjdCBmdW5jdGlvbiByZXR1cm4gdHlwZQoKICAgIFJlbmFtZSBpbnQgbWlpX2luaXQodm9pZCkgdG8gdm9pZCBtaWlfaW5pdCh2b2lkKSBmb3IgaWRtcgogICAgQ29sZEZpcmUgcGxhdGZvcm0KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGE1OGM3ODA2N2M5Mjg5NzZjMDgyYzc1OGQzOTg3ZTg5ZWFkNWIxOTEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgQXVnIDEgMTI6MDY6MjIgMjAwOCArMDIwMAoKICAgIEZpeCBidWlsZCBpc3N1ZXMgd2l0aCBNUEM4eHggRkFEUyBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0YjUwY2QxMmEzYjNjNjQ0MTUzYzRjZjM5M2Y0YTRjMTIyODllNWFhCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IEp1bCAzMSAxNzo1NDowMyAyMDA4ICswMjAwCgogICAgUHJlcGFyZSB2MS4zLjQtcmMyOiB1cGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBhNDgzMTE1NTdkYjZlN2U5NDczYTYxNjNiNDRiYjFlNmM2ZWQ2NGM0CkF1dGhvcjogTWFyayBKYWNrc29uIDxtcGZqQG1pbWMuY28udWs+CkRhdGU6CVRodSBKdWwgMzEgMTY6MDk6MDAgMjAwOCArMDEwMAoKICAgIEFkZCBnemlwcGVkIGxvZ28gc3VwcG9ydAoKICAgIFRoZSBSRUFETUUgZmlsZSBzdGF0ZXMgdGhhdCBDT05GSUdfVklERU9fQk1QX0daSVAgYmVoYXZlcyBhcyBmb2xsb3dzOgoKICAgICAgSWYgdGhpcyBvcHRpb24gaXMgc2V0LCBhZGRpdGlvbmFsbHkgdG8gc3RhbmRhcmQgQk1QCiAgICAgIGltYWdlcywgZ3ppcHBlZCBCTVAgaW1hZ2VzIGNhbiBiZSBkaXNwbGF5ZWQgdmlhIHRoZQogICAgICBzcGxhc2hzY3JlZW4gc3VwcG9ydCBvciB0aGUgYm1wIGNvbW1hbmQuCgogICAgSG93ZXZlciwgdGhlIHNwbGFzaHNjcmVlbiBmdW5jdGlvbiAqb25seSogc3VwcG9ydHMgc3RhbmRhcmQgQk1QIGltYWdlcy4KCiAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGRvY3VtZW50ZWQgZ3ppcCBzdXBwb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmsgSmFja3NvbiA8bXBmakBtaW1jLmNvLnVrPgoKY29tbWl0IGE1YmNiMDFmYmRlNmIxZjFjOTg2M2NkODZlNWM0YzM2OWYwMTIxYWMKQXV0aG9yOiBNYXJrIEphY2tzb24gPG1wZmpAbWltYy5jby51az4KRGF0ZToJVGh1IEp1bCAzMSAxNTo1Njo0OCAyMDA4ICswMTAwCgogICAgRml4IEF0bWVsIExDRCBjb250cm9sbGVyIGVuZGlhbmVzcyBmb3IgQVZSMzIgcHJvY2Vzc29ycwoKICAgIFRoZSBBdG1lbCBsY2QgY29udHJvbGxlciBpcyB1c2VkIG9uIEF0bWVsJ3MgQVQ5MSAobGl0dGxlIGVuZGlhbikgYW5kCiAgICBBVlIzMiAoYmlnIGVuZGlhbikgcGxhdGZvcm1zLgoKICAgIEFzIHN1Y2gsIHRoZSBjb250cm9sbGVyIGNhbiBoYW5kbGUgYm90aCBiaWcgYW5kIGxpdHRsZSBlbmRpYW4gbWVtb3J5LgoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIGRyaXZlciBmb3IgdGhlIEFWUjMyIHBsYXRmb3JtLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmsgSmFja3NvbiA8bXBmakBtaW1jLmNvLnVrPgoKY29tbWl0IGNkYjhiZDJmZDNiY2JlNjVkOGU0MzM0YTU1ZjVhNjY3ODQ1NDI2YTEKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUaHUgSnVsIDMxIDE1OjU2OjAxIDIwMDggKzAyMDAKCiAgICBhcG9sbG9uOiBmaXggYnVpbGQgb3V0IG9mIHRyZWUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDJlNzUyYmUzOWQzZTM5OGQ0YWI4OWZmYTY2MzRjMzk3ZGYyOTgyOTcKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CkRhdGU6CVRodSBKdWwgMzEgMTI6MzU6MDQgMjAwOCArMDIwMAoKICAgIFVuY29tcHJlc3NlZCBpbWFnZXMgbG9hZGVkIHRvIHRoZWlyIHN0YXJ0IGFkZHJlc3Mgc2hhbGwgc2V0IGxvYWRfZW5kIHRvbwoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IGMzNzIwN2Q3ZjUxZTE5YzE3Zjg1OTk2NmYzMTRlMjdjYzEyMzE4MDEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgSnVsIDE2IDE2OjM4OjU5IDIwMDggKzAyMDAKCiAgICBGaXggcHJpbnRmKCkgZm9ybWF0IHByb2JsZW1zIHdpdGggY29uZmlndXJhYmxlIHByb21wdHMKCiAgICBVLUJvb3QgYWxsb3dzIGZvciBjb25maWd1cmFibGUgcHJvbXB0IHN0cmluZ3MgdXNpbmcgdGhlCiAgICBDT05GSUdfQVVUT0JPT1RfUFJPTVBUIHJlc3AuIENPTkZJR19NRU5VUFJPTVBUIGRlZmluaXRpb25zLiBTbyBmYXIsCiAgICB0aGUgYXNzdW1wdGlvbiB3YXMgdGhhdCBhbnkgc3VjaCB1c2VyIGRlZmluZWQgcHJvYmx0cyB3b3VsZCBjb250YWluCiAgICBleGFjdGx5IG9uZSAiJWQiIGZvcm1hdCBzcGVjaWZpZXIuIEJ1dCBzb21lIGJvYXJkcyBkaWQgbm90LgoKICAgIFRvIGFsbG93IGZvciBmbGV4aWJsZSBib290IHByb21wdHMgd2l0aG91dCBhZGRpbmcgdG9vIGNvbXBsZXggY29kZSB3ZQogICAgbm93IGFsbG93IHRvIHNwZWNpZnkgdGhlIHdob2xlIGxpc3Qgb2YgcHJpbnRmKCkgYXJndW1lbnRzIGluIHRoZSB1c2VyCiAgICBkZWZpbml0aW9uLiBUaGlzIGlzIHBvd2VyZnVsLCBidXQgcmVxdWlyZXMgYSByZXNwb25zaWJsZSB1c2VyIHdobwogICAgcmVhbGx5IHVuZGVyc3RhbmRzIHdoYXQgaGUgaXMgZG9pbmcsIGFzIGhlIG5lZWRzIHRvIGtub3cgZm9yIGV4YW5wbGUKICAgIHdoaWNoIHZhcmlhYmxlcyBhcmUgYXZhaWxhYmxlIGluIHRoZSByZXNwZWN0aXZlIGNvbnRleHQuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1NDc1NDEyMDYzN2I2YTdmNGZmNzc0ZmIxOTlmYzU1MGJjZmVhMWRhCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IEp1bCAzMSAxNzowMjoxNCAyMDA4ICswMjAwCgogICAgVFFNODV4eDogZml4IHR5cG8gaW50cm9kdWNlIGJ5IGNvbW1pdCBmZmJiNWNiOQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMGI0OTUxZDRjZGRjYTljYzgwMDc0NTg5MWM5NWIyOTFlNDdjYmJkNwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVRodSBKdWwgMzEgMTU6Mjc6MDEgMjAwOCArMDIwMAoKICAgIG12YmNfcCBib2FyZDogZml4IG1vc3QgYnVpbGQgd2FybmluZ3MuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjNGVjNmRiMDc0MDUxZDJmNmZjNzZhNjY0MTFjNjA2MjFiMjJiYzAyCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IEp1bCAzMSAxMzo1NzoyMCAyMDA4ICswMjAwCgogICAgRTEwMDA6IGNsZWFuIHVwIENPTkZJR19FMTAwMF9GQUxMQkFDS19NQUMgaGFuZGxpbmcKCiAgICBBdm9pZCAiaW50ZWdlciBjb25zdGFudCBpcyB0b28gbGFyZ2UgZm9yICdsb25nJyB0eXBlIiB3YXJuaW5ncy4KICAgIEFuZCBzaW1wbGlmeSB0aGUgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDkxOTZiNDQzMzRjMzMwY2MxM2RlMjQ2NGM1OTE4MWU0ZGI3MWY1NDkKQXV0aG9yOiBNYXR2ZWpjaGlrb3YgSWx5YSA8bWF0dmVqY2hpa292QGdtYWlsLmNvbT4KRGF0ZToJV2VkIEp1bCAzMCAyMzoyMToxOSAyMDA4ICswNDAwCgogICAgODI2MDogTWFraW5nIHRoZSB1c2Ugb2YgZ2QtPnBjaV9jbGsgZGVwZW5kYW50IG9uIHRoZSBDT05GSUdfUENJCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dmVqY2hpa292IElseWEgPG1hdHZlamNoaWtvdkBnbWFpbC5jb20+Cgpjb21taXQgNjM2MWFkNGI1OTZmNWE5NDBhMDFjOTFhZTAyOTdkOThmNzkwY2JlMApBdXRob3I6IE1hdHZlamNoaWtvdiBJbHlhIDxtYXR2ZWpjaGlrb3ZAZ21haWwuY29tPgpEYXRlOglXZWQgSnVsIDMwIDIzOjIwOjMyIDIwMDggKzA0MDAKCiAgICBQUEM6IEFkZCBwY2lfY2xrIGluIHRoZSBnbG9iYWxfZGF0YSBmb3IgQ1BNMiBwcm9jZXNzb3JzCgogICAgVGhpcyBwYXRjaCBhZGRzIHBjaV9jbGsgZmllbGQgdG8gdGhlIGdsb2JhbF9kYXRhIHN0cnVjdHVyZSBmb3IgdGhlCiAgICBwcm9jZXNzb3JzIHdoaWNoIGhhdmUgQ1BNMiBtb2R1bGUgaW4gY2FzZSB0aGUgQ09ORklHX1BDSSBpcyBkZWZpbmVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHZlamNoaWtvdiBJbHlhIDxtYXR2ZWpjaGlrb3ZAZ21haWwuY29tPgoKY29tbWl0IGYwZmY4ODVjYTY0NjU1YmVlNjU0MGViOGEyNWVlZDkwYjExNTI2ODYKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgSnVsIDMwIDE0OjEzOjMwIDIwMDggLTA1MDAKCiAgICBtcGM4NXh4OiBVcGRhdGUgbGlua2VyIHNjcmlwdHMgZm9yIEZyZWVzY2FsZSBib2FyZHMKCiAgICAqIE1vdmUgdG8gdXNpbmcgYWJzb2x1dGUgYWRkcmVzc2luZyBhbHdheXMuICBNYWtlcyB0aGUgc2NyaXB0cyBhIGJpdCBtb3JlCiAgICAgIHBvcnRhYmxlIGFuZCBjb21tb24KICAgICogTW92ZWQgLmJzcyBhZnRlciB0aGUgZW5kIG9mIHRoZSBpbWFnZS4gIFRoZXNlIGFsbG93cyB1cyB0byBoYXZlIG1vcmUKICAgICAgcm9vbSBpbiB0aGUgcmVzdWx0aW5nIGJpbmFyeSBpbWFnZSBmb3IgY29kZSBhbmQgZGF0YS4KICAgICogUmVtb3ZlZCAudGV4dCBvYmplY3QgZmlsZXMgdGhhdCBhcmVuJ3QgcmVhbGx5IG5lZWRlZAogICAgKiBNYWtlIHN1cmUgX2VuZCBpcyA0LWJ5dGUgYWxpZ25lZCBhcyB0aGUgLmJzcyBpbml0IGNvZGUgZXhwZWN0cyB0aGlzLgogICAgICAoSXRzIHBvc3NpYmxlIHRoYXQgdGhlIGVuZCBvZiAuYnNzIGlzbid0IDQtYnl0ZSBhbGlnbmVkKQoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNTdjMjE5YWQ1ZDM0ZGQ5ZDQ5OTkxNzc3YTYyZTM4OTk1OTVmMmVjNwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBKdWwgMzAgMDg6MDE6MTUgMjAwOCAtMDUwMAoKICAgIEZpeCBjb21waWxlIHdhcm5pbmdzIGluIGRsbWFsbG9jCgogICAgVGhlIG9yaWdpb25hbCBjb2RlIHdhcyB1c2luZyBvbiBvZGQgcmVmZXJlbmNlIHRvIGdldCB0byB0aGUgZmlyc3QKICAgIHJlYWwgZWxlbWVudCBpbiBhdl9bXS4gIFRoZSBmaXJzdCB0d28gZWxlbWVudHMgb2YgdGhlIGFycmF5IGFyZQogICAgbm90IHVzZWQgZm9yIGFjdHVhbCBiaW5zLCBidXQgZm9yIGhvdXNlIGtlZXBpbmcuICBJZiB3ZSBhcmUgbW9yZQogICAgZXhwbGljaXQgYWJvdXQgaG93IHVzZSB0aGUgZmlyc3QgZmV3IGVsZW1lbnRzIHdlIGNhbiBnZXQgcmlkIG9mIHRoZQogICAgd2FybmluZ3M6CgogICAgZGxtYWxsb2MuYzogSW4gZnVuY3Rpb24gJ21hbGxvY19leHRlbmRfdG9wJzoKICAgIGRsbWFsbG9jLmM6MTk3MTogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZCBwb2ludGVyIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCiAgICBkbG1hbGxvYy5jOjE5OTk6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwogICAgZGxtYWxsb2MuYzoyMDI5OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKICAgIC4uLgoKICAgIFRoZSBsb2dpYyBvZiBob3cgdGhpcyBjb2RlIGNhbWUgdG8gYmUgaXM6CgliaW5fYXQoMCkgPSAoY2hhciopJihhdl9bMl0pIC0gMipTSVpFX1NaCgogICAgU0laRV9TWiBpcyB0aGUgc2l6ZSBvZiBwb2ludGVyLCBhbmQgYXZfIGlzIGFycnkgb2YgcG9pbnRlcnMgc286CgliaW5fYXQoMCkgPSAmKGF2X1swXSkKCiAgICBHb2luZyBmcm9tIHRoZXJlIHRvIGJpbl9hdCgwKS0+ZmQgb3IgYmluX2F0KDApLT5zaXplIHNob3VsZCBiZSBzdHJhaWdodCBmb3J3YXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgM2Y5YWUxYTVkNDNjNDlhOGVjZjQ5NzQ3MGMzZDFkODAyNTVlNDRiOQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEp1bCAzMCAxMDoyMTowMSAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBGaXggVzdPTE1HIGNvbXBpbGUgcHJvYmxlbXMgYnkgYWRkaW5nIG1pc3NpbmcgTE03NSBkZWZpbmVzCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGViYjg2YzRlY2QzN2E3NzAxMzU4Mjg0ZTQ5N2NhNGM2NDgzYzdjYzUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBKdWwgMzAgMDk6NTk6NTEgMjAwOCArMDIwMAoKICAgIGNtZF9ib290bS5jOiBGaXggcHJvYmxlbSB3aXRoICcjaWYgKENPTkZJR19DTURfVVNCKScKCiAgICBBIHJlY2VudCBwYXRjaCB1c2VkICcjaWYgKENPTkZJR19DTURfVVNCKScgaW5zdGVhZCBvZgogICAgJyNpZiBkZWZpbmVkKENPTkZJR19DTURfVVNCKScuIFRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBwcm9ibGVtIGFuZCBtYWtlcwogICAgY29tbW9uL2Jvb3RtLmMgY29tcGlsZSBhZ2Fpbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBBY2tlZC1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KCmNvbW1pdCAyY2I5MDgwNDI3ZmU2NDFkY2I3MWRhNDZjZDA2MzRkZDQwNmYzN2VkCkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+CkRhdGU6CVR1ZSBKdWwgMjIgMDg6MDE6NDMgMjAwOCArMDkwMAoKICAgIFJlbW92ZSB1bnVzZWQgSTJDIGF0IGFwb2xsb24gYm9hcmQKCiAgICBUaGVyZSBhcmUgbm8gSTJDIGRldmljZXMgb24gdGhpcyBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgoKY29tbWl0IDNjOTU5NjBlNTI2YjNiMDI2ZGEyMDIwMWRiNjQ1MjZmNDZmYWYxNGIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDMxIDEwOjEyOjA5IDIwMDggKzAyMDAKCiAgICBhdDkxcm05MjAwZGssIGNzYjYzNzogZml4IE5BTkQgcmVsYXRlZCBidWlsZCBwcm9ibGVtcwoKICAgIFRyaWVkIGZpeGluZyBOQU5EIHN1cHBvcnQgZm9yIHRoZSBhdDkxcm05MjAwZGsgYm9hcmQ7IHVudGVzdGVkLgogICAgRGlzYWJsZWQgTkFORCBzdXBwb3J0IGluIHRoZSBjc2I2MzcgYm9hcmQgY29uZmlnIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA5MjQ2ZjVlY2ZkMzUzYWUyOTdhMDJmZmQ1MzI4NDAyYWNmMTZjOWRkCkF1dGhvcjogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+CkRhdGU6CVdlZCBKdWwgMzAgMTI6Mzk6MjggMjAwOCArMDIwMAoKICAgIHBwYzR4eDogTUw1MDc6IEVudmlyb25tZW50IGluIGZsYXNoIGFuZCBNVEQgU3VwcG9ydAoKICAgIC0gUmVsb2NhdGUgdGhlIGxvY2F0aW9uIG9mIFUtQm9vdCBpbiB0aGUgZmxhc2gKICAgIC0gU2F2ZSB0aGUgZW52aXJvbm1lbnQgaW4gb25lIHNlY3RvciBvZiB0aGUgZmxhc2ggbWVtb3J5CiAgICAtIE1URCBTdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYThhMTZhZjRkNTlkMTRjYzFjMTE4N2MxMGFhYWQ4MGQ2YjgzOTRiNQpBdXRob3I6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgpEYXRlOglUdWUgSnVsIDI5IDE3OjE2OjEwIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IE1MNTA3OiBVc2Ugb2YgZ2V0X3JhbV9zaXplIGluIGJvYXJkIG1sNTA3CgogICAgLSBDaGFuZ2Ugc3VnZ2VzdGVkIGJ5IFdECgogICAgU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDFhMDA0MzEzYzVlYzJkMTI4YjYxMWRmNGMyMDhiMWIwZDNjM2ZiNApBdXRob3I6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgpEYXRlOglNb24gSnVsIDIxIDIwOjMwOjA3IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IE1MNTA3OiBVLUJvb3QgaW4gZmxhc2ggYW5kIFN5c3RlbSBBQ0UKCiAgICBUaGlzIHBhdGNoIGFsbG93cyBib290aW5nIGZyb20gRkxBU0ggdGhlIE1MNTA3IGJvYXJkIGJ5IFhpbGlueC4KICAgIFByZXZpb3VzbHksIFUtQm9vdCBuZWVkZWQgdG8gYmUgbG9hZGVkIGZyb20gSlRBRyBvciBhIFN5dGVtIEFDRSBDRgoKICAgIFNpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDVjMzc0YzllZTE2ZmVlMmJmNjg1MzNjYzQwMTBiM2MwZGYyMWY3ODMKQXV0aG9yOiBKdWxpZW4gTWF5IDxtYWlsaW5nbGlzdEBtaXJvbWljby5jaD4KRGF0ZToJTW9uIEp1biAyMyAxMzo1Nzo1MiAyMDA4ICswMjAwCgogICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBoYW1tZXJoZWFkIChBVlIzMikgYm9hcmQKCiAgICBUaGUgSGFtbWVyaGVhZCBwbGF0Zm9ybSBpcyBidWlsdCBhcm91bmQgYSBBVlIzMiAzMi1iaXQgbWljcm9jb250cm9sbGVyCiAgICBmcm9tIEF0bWVsLiAgSXQgb2ZmZXJzIHZlcnNhdGlsZSBwZXJpcGhlcmFscywgc3VjaCBhcyBldGhlcm5ldCwgdXNiCiAgICBkZXZpY2UsIHVzYiBob3N0IGV0Yy4KCiAgICBUaGUgYm9hcmQgYWxzbyBpbmNvb3BlcmF0ZXMgYSBwb3dlciBzdXBwbHkgYW5kIGlzIGEgUG93ZXIgb3ZlciBFdGhlcm5ldAogICAgKFBvRSkgUG93ZXJlZCBEZXZpY2UgKFBEKS4KCiAgICBBZGRpdG9uYWxseSwgYSBDeWNsb25lIElJSSBGUEdBIGZyb20gQWx0ZXJhIGlzIGludGVncmF0ZWQgb24gdGhlIGJvYXJkLgogICAgVGhlIEZQR0EgaXMgbWFwcGVkIGludG8gdGhlIDMyLWJpdCBBVlIgbWVtb3J5IGJ1cy4gVGhlIEZQR0Egb2ZmZXJzIHR3bwogICAgRERSMiBTRFJBTSBpbnRlcmZhY2VzLCB3aGljaCB3aWxsIGNvdmVyIGV2ZW4gdGhlIG1vc3QgZXhjZXB0aW9uYWwgbmVlZAogICAgb2YgbWVtb3J5IGJhbmR3aWR0aC4gVG9nZXRoZXIgd2l0aCB0aGUgb25ib2FyZCB2aWRlbyBkZWNvZGVyIHRoZSBib2FyZAogICAgaXMgcmVhZHkgZm9yIHZpZGVvIHByb2Nlc3NpbmcuCgogICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlOiBodHRwOi8vL3d3dy5taXJvbWljby5jb20vaGFtbWVyaGVhZAoKICAgIFNpZ25lZC1vZmYtYnk6IEp1bGllbiBNYXkgPG1haWxpbmdsaXN0QG1pcm9taWNvLmNoPgogICAgW2hhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb206IHZhcmlvdXMgc21hbGwgZml4ZXMgYW5kIGFkYXB0aW9uc10KICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCAwOWQzMThhOGJiMTQ0NGVjOTJlMzFjYWZjZGJhODc3ZWI5NDA5ZTU4CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIEp1bCAyOSAxMjoyMzo0OSAyMDA4IC0wNTAwCgogICAgZnNsX2kyYzogVXNlIHRpbWViYXNlIHRpbWVyIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIGdldF90aW1lcigpCgogICAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgZ2V0X3RpbWVyKCkgaXMgb25seSByZWFsbHkgdXNlZnVsIGFmdGVyIHdlCiAgICBoYXZlIHJlbG9jYXRlZCB1LWJvb3QgdG8gbWVtb3J5LiAgVGhlIGkyYyBjb2RlIGlzIHVzZWQgYmVmb3JlIHRoYXQgYXMgcGFydAogICAgb2YgdGhlIFNQRCBERFIgc2V0dXAuCgogICAgV2UgYWN0dWFsbHkgaGF2ZSBhIGJ1ZyB3aGVuIHVzaW5nIHRoZSBnZXRfdGltZXIoKSBjb2RlIGJlZm9yZSByZWxvY2F0aW9uCiAgICBiZWNhdXNlIHRoZSAuYnNzIGhhc24ndCBiZWVuIHNldHVwIGFuZCB0aHVzIHdlIGNvdWxkIGJlIHJlYWRpbmcvd3JpdGluZwogICAgYSByYW5kb20gbG9jYXRpb24gKHByb2JhYmx5IGluIGZsYXNoKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDRmYzcyYTBkNmNhODUwNzBhNWU5MGQ3NmNjNWE4NTM1MjZhYzA5YzQKQXV0aG9yOiBGcmFuayBTdmVuZHNiw7hlIDxmcmFuay5zdmVuZHNib2VAZ21haWwuY29tPgpEYXRlOglUdWUgSnVsIDI5IDE0OjQ5OjMxIDIwMDggKzAyMDAKCiAgICBBZGRlcjh4eDogRml4IENGR19NT05JVE9SX0xFTgoKICAgIER1ZSB0byBpbmNyZWFzZWQgc3BhY2UgdXNhZ2UsIFUtQm9vdCBjYW4gbm8gbG9uZ2VyIGJlIHN0b3JlZCBpbiB0aHJlZSBzZWN0b3JzLgogICAgVGhlIGN1cnJlbnQgVS1Cb290IHVzZSBqdXN0IG92ZXIgdGhyZWUgZmxhc2ggc2VjdG9ycyAoMTk3ayksIGFuZCBVLUJvb3Qgd2lsbAogICAgYmVjb21lIGNvcnJ1cHQgYWZ0ZXIgc2F2aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcy4gVGhpcyBwYXRjaCBhZGRzIGFub3RoZXIgNjRrCiAgICB0byBDRkdfTU9OSVRPUl9MRU4uCgogICAgU2lnbmVkLW9mZi1ieTogRnJhbmsgRS4gU3ZlbmRzYsO4ZSA8ZnJhbmsuc3ZlbmRzYm9lQGdtYWlsLmNvbT4KCmNvbW1pdCBhNGM1OWFkNGEyMTE0MDU1MGFkYTZmOTc2OTBkMjUyN2M0MTQ2Y2U1CkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+CkRhdGU6CVR1ZSBKdWwgMjkgMDg6NDc6NTcgMjAwOCArMDkwMAoKICAgIEFkZCBPbmVOQU5EIElQTCByZWxhdGVkIGZpbGVzIHRvIGdpdGlnbm9yZQoKICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Cgpjb21taXQgOGQ4NzU4OWU4ZTg3NGRmNzEyMGEzZDk2NjdmMDUxYmMzM2JhYzI1MApBdXRob3I6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+CkRhdGU6CU1vbiBKdWwgMjggMjA6Mzg6MjUgMjAwOCArMDIwMAoKICAgIEFQSTogVGVhY2ggdGhlIHN0b3JhZ2UgbGF5ZXIgYWJvdXQgU0FUQSBhbmQgTU1DIG9wdGlvbnMuCgogICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgQ3p1YmFrIDxyY3pAc2VtaWhhbGYuY29tPgogICAgQWNrZWQtYnk6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Cgpjb21taXQgNmI3M2I3NTRmNzgyZTFlY2NlNTA0OGJmMjBiMjJjZTU2YTA3YTViOApBdXRob3I6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+CkRhdGU6CU1vbiBKdWwgMjggMjA6Mzc6NDggMjAwOCArMDIwMAoKICAgIEFQSTogRHVtcCBjb250ZW50cyBvZiBzZWN0b3IgMCBpbiB0aGUgZGVtbyBhcHBsaWNhdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBDenViYWsgPHJjekBzZW1paGFsZi5jb20+CiAgICBBY2tlZC1ieTogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KCmNvbW1pdCAxM2NhNjMwNWYyZWJhNDljMTc1ZjYzNzBjMzUyODYxNDEwNTljNzg5CkF1dGhvcjogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KRGF0ZToJTW9uIEp1bCAyOCAyMDozNzoxMCAyMDA4ICswMjAwCgogICAgQVBJOiBDb3JyZWN0IHN0b3JhZ2UgZW51bWVyYXRpb24gcm91dGluZSwgb3RoZXIgbWlub3IgZml4ZXMgaW4gQVBJIHN0b3JhZ2UgYXJlYS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBDenViYWsgPHJjekBzZW1paGFsZi5jb20+CiAgICBBY2tlZC1ieTogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KCmNvbW1pdCAwNWM3ZmUwZjA0OWIxYzllYjlhMTk5MmYyN2U1ZTM1MGQ4NjVmNGE4CkF1dGhvcjogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KRGF0ZToJTW9uIEp1bCAyOCAyMDozNjoxOSAyMDA4ICswMjAwCgogICAgQVBJOiBGaXggY29tcGlsYXRpb24gd2FybmluZ3MgaW4gYXBpX2V4YW1wbGVzL2RlbW8uYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBDenViYWsgPHJjekBzZW1paGFsZi5jb20+Cgpjb21taXQgYzE0ZWVmY2M0ODIxMmFmMmYzMzE0ODA5NjA1Njk4ZGQ4MzkzYTkwYQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBKdWwgMjcgMTc6MDk6NDMgMjAwOCArMDIwMAoKICAgIEZpeCBtb3JlIHByaW50ZigpIGZvcm1hdCB3YXJuaW5ncwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgOTM2ODk3ZDRkMTM2NTQ1MmJiYmRmODQzMGRiNWU3NzY5ZWYwOGQzOApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBKdWwgMjUgMTU6MTg6MTYgMjAwOCArMDIwMAoKICAgIEZpeCByZW1haW5pbmcgQ0ZHX0NNRF8gZGVmaW5lLCBpZmRlZiBhbmQgY29tbWVudHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDVkMWQwMGZiMzYwMDU0ODJlMTgwM2EwMGRkYzQ2ZWZhMTFkNzE5YWYKQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KRGF0ZToJRnJpIEp1bCAyNSAwODo1Nzo0MCAyMDA4ICswMjAwCgogICAgQWRkIGluY2x1ZGUgZm9yIGNvbmZpZy5oIGluIGNvbW1hbmQuaC4KCiAgICBCZWNhdXNlIHRoZSBjbWRfdGJsX3Mgc3RydWN0dXJlIGRlcGVuZHMgb24gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSwgaXQKICAgIG11c3QgYmUgYXNzdXJlZCB0aGF0IGNvbmZpZy5oIGlzIGluY2x1ZGVkIGJlZm9yZSB0aGUgc3RydWN0dXJlIGlzCiAgICBldmFsdWF0ZWQgYnkgdGhlIGNvbXBpbGVyLiBJZiB0aGlzIGlzIG5vdCBjZXJ0YWluLCBpdCBjb3VsZCBoYXBwZW4KICAgIHRoYXQgdGhlIGNvbXBpbGVyIGdlbmVyYXRlcyBzdHJ1Y3R1cmVzIG9mIGRpZmZlcmVudCBzaXplLCBkZXBlbmRpbmcKICAgIG9uIHRoZSBmYWN0IGlmIHRoZSBzb3VyY2UgZmlsZSBpbmNsdWRlcyA8Y29uZmlnLmg+IGJlZm9yZSBvciBhZnRlcgogICAgPGNvbW1hbmQuaD4uCgogICAgVGhlIGVmZmVjdCBpcyB0aGF0IHUtYm9vdCBjcmFzaGVzIHdoZW4gdHJpZXMgdG8gcmVsb2NhdGUgdGhlIGNvbW1hbmQKICAgIHRhYmxlIChmb3IgcHBjKSBvciB0cnkgdG8gYWNjZXNzIHRvIHRoZSBjb21tYW5kIHRhYmxlIGZvciBvdGhlcgogICAgYXJjaGl0ZWN0dXJlcy4KCiAgICBUaGUgcHJvYmxlbSBjYW4gaGFwcGVuIG9uIGJvYXJkLWRlcGVuZGluZyBjb21tYW5kcy4gQWxsIGdlbmVyYWwKICAgIGNvbW1hbmRzIHVuZGVyIC9jb21tb24gYXJlIHVuYWZmZWN0ZWQsIGJlY2F1c2UgdGhleSBpbmNsdWRlIGFscmVhZHkKICAgIGNvbmZpZy5oIGJlZm9yZSBjb21tYW5kLmguCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Cgpjb21taXQgMmRhY2I3MzRiYWM5ZGJhMWRiOWU3MDRkM2UwYjIwMGVmNTIxYzc5YQpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVsIDIzIDEzOjE2OjA2IDIwMDggLTA1MDAKCiAgICBOQU5EOiAkKG9iaiktcXVhbGlmeSBlY2MuaCBpbiBraWxhdWVhIE5BTkQgYm9vdCBNYWtlZmlsZS4KCiAgICBUaGlzIGZpeGVzIGJ1aWxkaW5nIG91dC1vZi10cmVlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDM2ZDU5YmQ5ZGE5ZTE1ZDE5Yjg2N2I0ODQ0OTQwODgzMGY0ZTJhZDUKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJV2VkIEp1bCAyMyAwNzozMDo0NiAyMDA4ICswMjAwCgogICAgRml4IHdhcm5pbmdzIGlmIGNvbXBpbGluZyB3aXRoIElERSBzdXBwb3J0LgoKICAgIGNtZF9pZGUuYzo4Mjc6IFdhcm51bmc6IHdlYWsgZGVjbGFyYXRpb24gb2YgYGlkZV9vdXRiJyBhZnRlciBmaXJzdCB1c2UgcmVzdWx0cyBpbiB1bnNwZWNpZmllZCBiZWhhdmlvcgogICAgY21kX2lkZS5jOjgzOTogV2FybnVuZzogd2VhayBkZWNsYXJhdGlvbiBvZiBgaWRlX2luYicgYWZ0ZXIgZmlyc3QgdXNlIHJlc3VsdHMgaW4gdW5zcGVjaWZpZWQgYmVoYXZpb3IKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCA3NjEwZGIxN2ZkNGQ1OWM1MWQ4MjU0ODg1MjZkODVlZGUyZjA2NzY3CkF1dGhvcjogQWRyaWFuIEZpbGlwaSA8YWRyaWFuLmZpbGlwaUBldXJvdGVjaC5jb20+CkRhdGU6CVR1ZSBKdWwgMjIgMTQ6Mjg6MTEgMjAwOCAtMDQwMAoKICAgIFJlbW92ZWQgc3VwcG9ydCBmb3IgdGhlIGFkc3ZpeCBib2FyZC4KCiAgICBTdXBwb3J0IGZvciB0aGUgYWRzdml4IHdhcyBvcmlnaW5hbGx5IHByb3ZpZGVkIGJ5IEFwcGxpZWQgRGF0YQogICAgU3lzdGVtcyAoQURTKSwgaW5jLiwgbm93IEV1cm9UZWNoLCBJbmMuCiAgICBUaGUgYm9hcmQgbmV2ZXIgc2hpcHBlZCBhc2lkZSBmcm9tIHNvbWUgc2FtcGxlIGJvYXJkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBZHJpYW4gRmlsaXBpIDxhZHJpYW4uZmlsaXBpQGV1cm90ZWNoLmNvbT4KCmNvbW1pdCBmOTZiNDRjZWY4OTdiZDM3MmJlYjg2ZGRlMWIzMzYzN2MxMTlkODRkCkF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CkRhdGU6CVR1ZSBKdWwgMjIgMTY6MjI6MTEgMjAwOCArMDIwMAoKICAgIEFSTTogc2V0IEdEX0ZMR19SRUxPQyBmb3IgYm9hcmRzIHNraXBwaW5nIHJlbG9jYXRpb24gdG8gUkFNCgogICAgSWYgQ09ORklHX1NLSVBfUkVMT0NBVEVfVUJPT1QgaXMgc2V0IHRoZSBmbGFnIEdEX0ZMR19SRUxPQyBpcyB1c3VhbGx5CiAgICBuZXZlciBzZXQsIGJlY2F1c2UgcmVsb2NhdGlvbiB0byBSQU0gaXMgYWN0dWFsbHkgbmV2ZXIgZG9uZSBieSBVLWJvb3QKICAgIGl0c2VsZi4gSG93ZXZlciwgc2V2ZXJhbCBwaWVjZXMgb2YgY29kZSBjaGVjayBpZiB0aGlzIGZsYWcgaXMgc2V0IGF0CiAgICBzb21lIHRpbWUuCgogICAgU28sIHRvIG1ha2Ugc3VyZSB0aGlzIGZsYWcgaXMgc2V0IG9uIGJvYXJkcyBza2lwcGluZyByZWxvY2F0aW9uLCB0aGlzCiAgICBpcyBhZGRlZCB0byB0aGUgaW5pdGlhbGlzYXRpb24gb2YgVS1ib290IGF0IGEgbW9tZW50IHdoZXJlIGl0IGlzIHNhZmUKICAgIHRvIGRvIHNvLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IGU0ZGFmZmY4NmYyODliNTY3NzE0M2EzZTQxZGE3YjQ1YzZkMjdmYzcKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDIxIDE0OjI2OjIzIDIwMDggLTA1MDAKCiAgICBmc2wtaTJjOiBmaXggd3JpdGVzIHRvIGRhdGEgc2VnbWVudCBiZWZvcmUgcmVsb2NhdGlvbgoKICAgIFByZXZlbnQgaTJjX2luaXQoKSBpbiBmc2xfaTJjLmMgZnJvbSB3cml0aW5nIHRvIHRoZSBkYXRhIHNlZ21lbnQgYmVmb3JlCiAgICByZWxvY2F0aW9uLiAgQ29tbWl0IGQ4YzgyZGI0IGFkZGVkIHRoZSBhYmlsaXR5IGZvciBpMmNfaW5pdCgpIHRvIHByb2dyYW0gdGhlCiAgICBJMkMgYnVzIHNwZWVkIGFuZCBzYXZlIHRoZSB2YWx1ZSBpbiBpMmNfYnVzX3NwZWVkW10sIHdoaWNoIGlzIGEgZ2xvYmFsCiAgICB2YXJpYWJsZS4gIEl0IGlzIGFuIGVycm9yIHRvIHdyaXRlIHRvIHRoZSBkYXRhIHNlZ21lbnQgYmVmb3JlIHJlbG9jYXRpb24sCiAgICB3aGljaCBpcyB3aGF0IGkyY19pbml0KCkgZG9lcyB3aGVuIGl0IHN0b3JlcyB0aGUgYnVzIHNwZWVkIGluIGkyY19idXNfc3BlZWRbXS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGRiZDMyMzg3OTIwZTVhZDZmOWRkNThhN2I1MDEyYmJhYmUyYTZhMjEKQXV0aG9yOiBXb2xmZ2FuZyBPY2tlciA8d2VvQHJlY2Nvd2FyZS5kZT4KRGF0ZToJTW9uIEp1bCAyOCAxNjo1Njo1MSAyMDA4ICswMjAwCgogICAgbWlwczogRml4IGJhdWRyYXRlIGRpdmlzb3IgY29tcHV0YXRpb24gb24gYWxjaGVteSBjcHVzCgogICAgVXNlIENGR19NSVBTX1RJTUVSX0ZSRVEgd2hlbiBjb21wdXRpbmcgdGhlIGJhdWRyYXRlIGRpdmlzb3IKICAgIG9uIGFsY2hlbXkgY3B1cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBPY2tlciA8d2VvQHJlY2Nvd2FyZS5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgYzhjODQ1Y2ZkYzZkMDIxNzEzNWMxZDU5MjdlZWJkMmIxMzNhMzMxNApBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVNhdCBKdWwgNSAwMDowODo0OCAyMDA4IC0wNzAwCgogICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgQVZSMzIgRXRoZXJuZXQgY29udHJvbGxlcnMgdG8gYm9hcmRfZXRoX2luaXQoKQoKICAgIFJlbmFtZWQgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zIGZvciBhdG5ndzEwMCBhbmQgYXRzdGsxMDAwLgogICAgUmVtb3ZlZCBpbml0aWFsaXphdGlvbnMgZm9yIHRoZXNlIGJvYXJkcyBmcm9tIG5ldC9ldGguYwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgYTIyOWQyOTFmMzMzMDhhYjc3NjFkMzlmMjVmYTFhNTNjMGZjMDBhMgpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJV2VkIEp1bCAyMyAxMDo1NTo0NiAyMDA4ICswMjAwCgogICAgc3BpIGZsYXNoOiBGaXggcHJpbnRmKCkgZm9ybWF0IHdhcm5pbmdzCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDI1MmE1ZTA3MzhiY2FmYWYyNWY3ZmJiNDBmMTlhNTlhYmMyY2IxM2UKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVdlZCBKdWwgMjMgMTA6NTU6MzEgMjAwOCArMDIwMAoKICAgIGF0bWVsX21jaTogRml4IHByaW50ZigpIGZvcm1hdCB3YXJuaW5ncwoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCA3ZjRiMDA5ZjQyMzJkNTcwODRjZTBlYzVhZWIzYjU3YmNjYjA4ZTRjCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglXZWQgSnVsIDIzIDEwOjU1OjE1IDIwMDggKzAyMDAKCiAgICBhdnIzMjogRml4IHByaW50ZigpIGZvcm1hdCB3YXJuaW5ncwoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBhNzljM2U4ZDljMzFkYjI1ZDVjYTNlYzhlMDhhOTdmMzIzNDEwZGQ0CkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglXZWQgSnVsIDIzIDEwOjUyOjE5IDIwMDggKzAyMDAKCiAgICBhdnIzMjogYXNtL2lvLmggbmVlZHMgYXNtL3R5cGVzLmgKCiAgICBtYXBfcGh5c21lbSgpIHRha2VzIGEgcGh5c19hZGRyX3QgYXMgcGFyYW1ldGVyLiBUaGlzIHR5cGUgaXMgZGVmaW5lZCBpbgogICAgYXNtL3R5cGVzLmgsIHNvIHdlIG5lZWQgdG8gaW5jbHVkZSB0aGF0IGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDE5NTNkMTI4ZmQwN2YwN2QxYzM4MTBhMjhjMDg2M2VhNjRkYWUxYjYKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CVRodSBKdWwgMTcgMTI6MjU6NDYgMjAwOCArMDIwMAoKICAgIG1pY3JvYmxhemU6IEZpeCBwcmludGYoKSBmb3JtYXQgaXNzdWVzCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgoKY29tbWl0IGRlMmEwN2U1MzRmMThiMWNhNWY5ODY5YTRlZjA2MDRjYTgyOWNmZjAKQXV0aG9yOiBHdXJ1cmFqYSBIZWJiYXIgSyBSIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgpEYXRlOglUaHUgSnVsIDE3IDA3OjI3OjUxIDIwMDggKzA1MzAKCiAgICBSZW1vdmUgdW51c2VkIGNvZGUgZnJvbSBsaWJfYXJtL2Jvb3RtLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBHdXJ1cmFqYSBIZWJiYXIgPGd1cnVyYWpha3JAc2FueW8uY28uaW4+Cgpjb21taXQgZmZiYjVjYjk0MmU5ODU2ZmEyNGU5NDY5NzdlMGE2MGM2NGRmMDRhYgpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglXZWQgSnVsIDE2IDE4OjU2OjQ1IDIwMDggKzAyMDAKCiAgICB0cW04NXh4OiBEZW15c3RpZnkgJ0RLOiAhISEnIGNvbW1lbnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KCmNvbW1pdCBiMmY0NGJhNTcwZjNhMDExMTNiYmI3NDVkYWY0NmYzODU4ZDIyZjUzCkF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+CkRhdGU6CVdlZCBKdWwgMTYgMTg6NTY6NDQgMjAwOCArMDIwMAoKICAgIDgzeHgvODV4eC84Nnh4OiBBZGQgTFRFRFIgbG9jYWwgYnVzIGRlZmluaXRpb25zCgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgZjEzZjY0Y2Y0MmQ1YWJlYzNlMGY5MjAyMzNmNmE3YTYxZTdhZTQ5NApBdXRob3I6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgpEYXRlOglXZWQgSnVsIDE2IDE2OjIyOjMyIDIwMDggKzAyMDAKCiAgICBzZXJpYWxfeHVhcnRsaXRlLmM6IGZpeCBjb21waWxlciB3YXJuaW5ncwoKICAgIFNpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgogICAgQWNrZWQtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCA4NjQ0NmQzYTVkOWQzY2E4MWU4NWQxY2NkM2FjY2FhYWU2ZjhlM2M5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVsIDE4IDExOjAzOjM1IDIwMDggKzAyMDAKCiAgICBQT1NUOiBBZGQgZGlzYWJsZSBpbnRlcnJ1cHRzIGluIHNvbWUgb2YgdGhlIG1pc3NpbmcgQ1BVIFBPU1QgdGVzdHMKCiAgICBTb21lIENQVSBQT1NUIHRlc3RzIGRpZCBub3QgZGlzYWJsZSB0aGUgaW50ZXJydXB0cyB3aGlsZSBydW5uaW5nLiBUaGlzCiAgICBzZWVtcyB0byBiZSBuZWNlc3NhcnkgdG8gcHJvdGVjdCB0aGlzIHNlbGYgbW9kaWZ5aW5nIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDk3YTNiZjI2OGQwOTZlMGU5N2U1NDA0ODQ0OGMzNTExNGVkY2Y1NTcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBKdWwgMTggMTA6NDM6MjQgMjAwOCArMDIwMAoKICAgIGlkZTogVXNlIENGR182NEJJVF9MQkEgaW5zdGVhZCBvZiBDRkdfNjRCSVRfU1RSVE9VTAoKICAgIFRoaXMgaXMgbmVlZGVkIGZvciBib2FyZHMgdGhhdCBkZWZpbmUgQ0ZHXzY0QklUX1NUUlRPVUwgYnV0IGRvbid0IGRlZmluZQogICAgQ0ZHXzY0QklUX0xCQS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDA0M2FjNTUwMjQ5NjMyOTVmYzc5YjM5YWY4NWI2ZGMzYjI2MWUxNwpBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+CkRhdGU6CUZyaSBKdWwgMTggMTE6MjI6MjMgMjAwOCArMDIwMAoKICAgIFBPU1QgUFBDNHh4L3NwciBJVlBSIG9ubHkgaWYgUFBDNDQwCgogICAgVGhlIFNQUiBJVlBSIHJlZ2lzdGVyIGlzIG9ubHkgcHJlc2VudCAoYXMgZmFyIGFzIEkga25vdykgZm9yCiAgICBwcm9jZXNzb3JzIHdpdGggYSBQUEM0NDAgY29yZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgogICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxMDkyZmJkNjQ3NDhkZmEyZTk3OWIxMDI2MTFlY2U5YmM1ZWMxODU1CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVsIDE4IDEwOjQyOjI5IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEVuYWJsZSA2NGJpdCBwcmludGYgZm9ybWF0IG9uIDQ0MC80NjAgcGxhdGZvcm1zCgogICAgVGhpcyBwYXRjaCBkZWZpbmVzIENGR182NEJJVF9WU1BSSU5URiBhbmQgQ0ZHXzY0QklUX1NUUlRPVUwgZm9yIGFsbAogICAgNDQwLzQ2MCBwbGF0Zm9ybXMuIFRoaXMgbWF5IGJlIG5lZWRlZCBzaW5jZSB0aG9zZSBwbGF0Zm9ybXMgc3VwcG9ydAogICAgMzZiaXQgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNjZmZTE4M2IxZGQ5Yzc1MzQ2MDUxNDdhOGVjZmVkMWMwMjM0NWVlNQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEp1bCAxOCAxNTo1NzoyMyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBGaXggaW5jb3JyZWN0IE1PRFR4IHNldHVwIGZvciBzb21lIERJTU0gY29uZmlndXJhdGlvbnMKCiAgICBUaGlzIHBhdGNoIGZpeGVzIGEgcHJvYmxlbSB3aXRoIGluY29ycmVjdCBNT0RUeCAoT24gRGllIFRlcm1pbmF0aW9uKQogICAgc2V0dXAgZm9yIGEgY29uZmlndXJhdGlvbiB3aXRoIG11bHRpcGxlIERJTU0ncyBhbmQgbXVsdGlwbGUgcmFua3MuCiAgICBXaXRob3V0IHRoaXMgY2hhbmdlIEthdG1haSB3YXMgdW5hYmxlIHRvIGJvb3QgTGludXggd2l0aCBERFIyIGZyZXF1ZW5jeQogICAgPj0gNTMzTUh6IGFuZCBtZW0+PTNHQi4gV2l0aCB0aGlzIHBhdGNoIEthdG1haSBzdWNjZXNzZnVsbHkgYm9vdHMgTGludXgKICAgIHdpdGggRERSMiBmcmVxdWVuY3kgPSA2NDBNSHogYW5kIG1lbT00R0IuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDYwMjA0ZDA2ZWQ5ZjhjMmE2N2NjNzllYjY3ZmQyYjFkMjJiY2JjOGMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBKdWwgMTggMTI6MjQ6NDEgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogTWlub3IgY29kaW5nIHN0eWxlIGNsZWFudXAgb2YgWGlsaW54IFZpcnRleDUgbWw1MDcgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwODY1MTFmYzk2YThhOWJiNTZlNWUxOWEzZDg0YzQwZjRkYmE4MGNjCkF1dGhvcjogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+CkRhdGU6CVRodSBKdWwgMTcgMTI6NDc6MDkgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogTUw1MDcgQm9hcmQgU3VwcG9ydAoKICAgIFRoZSBYaWxpbnggTUw1MDcgQm9hcmQgaXMgYSBWaXJ0ZXggNSBwcm90b3R5cGluZyBib2FyZCB0aGF0IGluY2x1ZGVzLAoJYW1vbmcgb3RoZXJzOgoJLVZpcnRleCA1IEZYIEZQR0EgKFdpdGggYSBwcGM0NDB4NSBpbiBpdCkKCS0yNTZNQiBvZiBTRFJBTTIKCS0zMk1CIG9mIEZsYXNoCgktSTJDIEVlcHJvbQoJLVN5c3RlbSBBQ0UgY2hpcAoJLVNlcmlhbCBBVEEgY29ubmVjdG9ycwoJLVJTMjMyIExldmVsIENvbnZlcnNvcnMKCS1FdGhlcm5ldCBUcmFuc2NlaXZlcgoKICAgIFRoaXMgcGF0Y2ggZ2l2ZXMgc3VwcG9ydCB0byBhIHN0YW5kYXJkIGRlc2lnbiBwcm9kdWNlZCBieSBFREsgZm9yIHRoaXMKICAgIGJvYXJkOiBwcGM0NDAsIHVhcnRsaXRlLCB4aWxpbnhfaW50IGFuZCBmbGFzaAoKICAgIC0gSW5jbHVkZXMgQ2hhbmdlcyBwcm9wb3NzZWQgYnkgU3RlZmFuIFJvZXNlIGFuZCBNaWNoYWwgU2ltZWsKCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZDg2NWZkMDk4MDlhM2ExODY2OWYzNWY5NzA3ODE4MjBhZjQwZTRkZQpBdXRob3I6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgpEYXRlOglUaHUgSnVsIDE3IDExOjQ0OjEyIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IENQVSBQUEM0NDB4NSBvbiBWaXJ0ZXg1IEZYCgogICAgLVRoaXMgcGF0Y2hzIGdpdmVzIHN1cHBvcnQgZm9yIHRoZSBlbWJiZWRkZWQgcHBjNDQwCiAgICAgb24gdGhlIFZpcnRleDUgRlBHQXMKICAgIC1pbnRlcnJ1cHRzLmMgZGl2aWRlZCBpbiB1aWMuYyBhbmQgaW50ZXJydXB0cy5jCiAgICAteGlsaW54X2lycS5jIGZvciB4aWxpbnggaW50ZXJydXB0IGNvbnRyb2xsZXIKICAgIC1JbmNsdWRlIG1vZGlmaWNhdGlvbnMgcHJvcG9zc2VkIGJ5ICBTdGVmYW4gUm9lc2UKCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMzQwY2NiMjYwZjIxNTE2YmUzNjA3NDVkNWM1ZTNiZDA2NTc2OThkZgpBdXRob3I6IFNlYmFzdGlhbiBTaWV3aW9yIDxiaWdlYXN5QGxpbnV0cm9uaXguZGU+CkRhdGU6CVdlZCBKdWwgMTYgMjA6MDQ6NDkgMjAwOCArMDIwMAoKICAgIGNmaV9mbGFzaDogZml4IGZsYXNoIG9uIEJFIG1hY2hpbmVzIHdpdGggQ0ZHX1dSSVRFX1NXQVBQRURfREFUQQoKICAgIFRoaXMgZ290IGJyb2tlbiBieSBjb21taXRzIDkzYzU2ZjIxMmMKICAgICBbY2ZpX2ZsYXNoOiBzdXBwb3J0IG9mIGxvbmcgY21kIGluIFUtYm9vdC5dCgogICAgVGhhdCBjb21tYW5kIG5lZWRzIHRvIGJlIGluIGxpdHRsZSBlbmRpYW4gZm9ybWF0IG9uIEJFIG1hY2hpbmVzCiAgICB3aXRoIENGR19XUklURV9TV0FQUEVEX0RBVEEuIFdpdGhvdXQgdGhpcyBwYXRjaCwgdGhlIGNvbW1hbmQgMHhmMAogICAgZ2V0cyBzYXZlZCBvbiBzdGFjayBhcyAweDAwIDAwIDAwIGYwIGFuZCAweDAwIGdldHMgd3JpdHRlbiBpbnRvCiAgICB0aGUgY21kYnVmIGluIGNhc2UgcG9ydHdpZHRoID0gY2hpcHdpZHRoID0gOGJpdC4KCiAgICBDYzogQWxleGV5IEtvcm9sZXYgPGFrb3JvbGV2QGluZnJhZGVhZC5vcmc+CiAgICBDYzogVmFzaWxpeSBMZW9uZW5rbyA8dmFzaWxpeS5sZW9uZW5rb0BtYWlsLnJ1PgogICAgU2lnbmVkLW9mZi1ieTogU2ViYXN0aWFuIFNpZXdpb3IgPGJpZ2Vhc3lAbGludXRyb25peC5kZT4KCmNvbW1pdCAxMTE4OGQ1NWJjMTZkZDkwNzQ1MWMwMDI4MmUwMGEwMzhmNzNkZDYyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDE3IDEwOjQwOjUxIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBhbHBoYWJldGljYWwgb3JkZXIgaW4gNHh4IE1ha2VmaWxlIHBhcnQgKHJlZHdvb2QpCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDAyMWY2ZGY2ZTk2YWY1YjM4NzgxMGNmOTZkMjQ4NDhkYTFmYWE1NWMKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJVGh1IEp1bCAxMCAxNzoyMDo1MSAyMDA4ICswNDAwCgogICAgODN4eDogbXBjODMxNWVyZGI6IGZpeCBzaWxseSB0aGlua28gaW4gZmR0X3RzZWMxX2ZpeHVwCgogICAgVGhlIHRoaW5rbyB3YXMgcXVpdGUgc2lsbHkgaW5kZWVkLCBJIG1lc3NlZCB3aXRoICFwdHIuIE5vcm1hbGx5IHRoaXMKICAgIHdvdWxkIHRyaWdnZXIgc29tZSBmYXVsdCwgYnV0IGluIFUtQm9vdCBOVUxMIHBvaW50ZXIgaXMgZXF1YWwgdG8gcGh5cwogICAgMCwgc28gdGhlIGNvZGUgd2FzIHdvcmtpbmcgc3RpbGwsIGp1c3QgZGlkbid0IGFjdHVhbGx5IHRlc3QgbXBjODMxNWVyZGIKICAgIGVudmlyb25tZW50IHZhcmlhYmxlIHZhbHVlLiBIZWguCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDI1ZjVmMGQ0OWEzYWU4OWJmNDM5NmYyNTU3Y2U5OGRlYmZlZjIxZGEKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJVHVlIEp1bCA4IDIxOjAwOjA0IDIwMDggKzA0MDAKCiAgICA4M3h4OiBtcGM4MzE1ZXJkYjogYWRkIHN1cHBvcnQgZm9yIHN3aXRjaGluZyBiZXR3ZWVuIFVMUEkvVVRNSSBVU0IgUEhZcwoKICAgIEZyZWVzY2FsZSBzaGlwcyBNUEM4MzE1RS1SREIgYm9hcmRzIGVpdGhlciB3aXRoIFRTRUMxIGFuZCBVU0IgVVRNSQogICAgc3VwcG9ydCwgb3Igd2l0aG91dCBUU0VDMSBidXQgd2l0aCBVU0IgVUxQSSBQSFkgc3VwcG9ydCBpbiBhZGRpdGlvbi4KICAgIFdpdGggdGhpcyBwYXRjaCB1c2VyIGNhbiBzcGVjaWZ5IGRlc2lyZWQgVVNCIFBIWS4KCiAgICBBbHNvLCBpdCBzZWVtcyB0aGF0IHdlIGNhbid0IGRpc3Rpbmd1aXNoIHRoZSB0d28gYm9hcmRzIGluIHNvZnR3YXJlLCBzbwogICAgdXNlciBoYXZlIHRvIHNldCBgbXBjODMxNWVyZGInIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGVpdGhlciAndHNlYzEnCiAgICAoVFNFQzEgZW5hYmxlZCkgb3IgYHVscGknIChib2FyZCB3aXRoIFVMUEkgUEhZLCBUU0VDMSBkaXNhYmxlZCksIHNvIHRoYXQKICAgIExpbnV4IHdpbGwgbm90IHByb2JlIGZvciBUU0VDMS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMDE1YjI3YjllMTY1ZmNmMjIwZTQyZjJjNGFmYmFlYWEyNzU4ZmNmNgpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglUdWUgSnVsIDggMjA6NTk6NDMgMjAwOCArMDQwMAoKICAgIGZkdF9zdXBwb3J0OiBmZHRfZml4dXBfZHJfdXNiOiBhZGQgc3VwcG9ydCBmb3IgcGh5X3R5cGUgZml4dXBzCgogICAgQ3VycmVudGx5IFUtQm9vdCBjYW4gb25seSBmaXh1cCB0aGUgdXNiIGRyX21vZGUsIGJ1dCBzb21lIGJvYXJkcyAobmFtZWx5CiAgICBNUEM4MzE1RS1SREIpIGNhbiB1c2UgdHdvIFBIWSB0eXBlczogVUxQSSAoc3RhbmQtYWxvbmUgT1RHIHBvcnQpIG9yIFVUTUkKICAgIChjb25uZWN0ZWQgdG8gdGhlIGZvdXItcG9ydHMgaHViLCB1c2IgaG9zdCBvbmx5KS4KCiAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgcGFzc2luZyBEdWFsLVJvbGUgVVNCIGNvbnRyb2xsZXIncwogICAgZGV2aWNlIHRyZWUgcHJvcGVydHkgcGh5X3R5cGUgdGhyb3VnaCB0aGUgdXNiX3BoeV90eXBlIGVudmlyb25tZW50CiAgICB2YXJpYWJsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KICAgIEFja2VkLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2OTlmMDUxMjU1MDkyNDkwNzJhMGI4NjVjOGQzNTUyMGQ5N2NkNTAxCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIEp1bCAxNSAyMjoyMjo0NCAyMDA4ICswMjAwCgogICAgUHJlcGFyZSB2MS4zLjQtcmMxOiBDb2RlIGNsZWFudXAsIHVwZGF0ZSBDSEFOR0VMT0csIHNvcnQgTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGJjYWI3NGJhYTZiMWIxYzk2OTAzOGFiNmY2NGExODYyMzkxODA0MDUKQXV0aG9yOiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KRGF0ZToJVHVlIEp1bCAxNSAxMToyMzowMiAyMDA4IC0wNDAwCgogICAgUm91bmQgdGhlIHNlcmlhbCBwb3J0IGNsb2NrIGRpdmlzb3IgdmFsdWUgcmV0dXJuZWQgYnkgY2FsY19kaXZpc29yKCkKCiAgICBSb3VuZCB0aGUgc2VyaWFsIHBvcnQgY2xvY2sgZGl2aXNvciB2YWx1ZSByZXR1cm5lZCBieQogICAgY2FsY19kaXZpc29yKCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KICAgIEFja2VkLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IDAzMjhlZjBlZGZlOTUwZjBiN2I4YjM2OGRhZTQ4MjUzMTUwNmI3NGEKQXV0aG9yOiBSb2JpbiBHZXR6IDxyZ2V0ekBibGFja2Zpbi51Y2xpbnV4Lm9yZz4KRGF0ZToJVHVlIEp1bCAxNSAyMTo0NDo0NiAyMDA4ICswMjAwCgogICAgRml4IERIQ1AgcHJvdG9jb2wgc28gVS1Cb290IGRvZXMgbm90IHJlc3BvbmQgdG9vIGVhcmx5CiAgICBvbiB0aGUgbmV0d29yayB3aXRoIGl0J3Mgb2ZmZXJlZCBJUCBudW1iZXI7IGl0IHNob3VsZCBub3QgcmVwbHkgdW50aWwKICAgIGFmdGVyIGl0IGhhcyByZWNlaXZlZCBhIERIQ1AgQUNLIG1lc3NhZ2UuIEFsc28gZW5zdXJlcyB0aGF0IFUtQm9vdAogICAgZG9lcyBpdCdzIERIQ1BSRVFVRVNUIGFzIGJyb2FkY2FzdCAocGVyIFJGQyAyMTMxKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSb2JpbiBHZXR6IDxyZ2V0ekBibGFja2Zpbi51Y2xpbnV4Lm9yZz4KICAgIEFja2VkLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA3Mjg4Zjk3MmZjYWVlMTRhOTc0MWNiMDhjODY4OGEyMzg3NGI0YTJlCkF1dGhvcjogU2ViYXN0aWFuIFNpZXdpb3IgPGJpZ2Vhc3lAbGludXRyb25peC5kZT4KRGF0ZToJVHVlIEp1bCAxNSAxMzozNToyMyAyMDA4ICswMjAwCgogICAgY2ZpX2ZsYXNoOiBtYWtlIHRoZSBjb21tYW5kIHUzMiBvbmx5CgogICAgVGhpcyBnb3QgY2hhbmdlZCBieSBjb21taXQgOTNjNTZmMjEyYwogICAgW2NmaV9mbGFzaDogc3VwcG9ydCBvZiBsb25nIGNtZCBpbiBVLWJvb3QuXQoKICAgIExvbmcgaXMgdGhlIHdyb25nIHR5cGUgYmVjYXVzZSBpdCB3aWxsIGJlaGF2ZSBkaWZmZXJlbnRseSBvbiA2NGJpdAogICAgbWFjaGluZXMgaW4gYSB3YXkgdGhhdCBpcyBwcm9iYWJseSBub3QgZXhwZWN0ZWQuIHUzMiBzaG91bGQgYmUKICAgIGVub3VnaC4KCiAgICBDYzogQWxleGV5IEtvcm9sZXYgPGFrb3JvbGV2QGluZnJhZGVhZC5vcmc+CiAgICBDYzogVmFzaWxpeSBMZW9uZW5rbyA8dmFzaWxpeS5sZW9uZW5rb0BtYWlsLnJ1PgogICAgU2lnbmVkLW9mZi1ieTogU2ViYXN0aWFuIFNpZXdpb3IgPGJpZ2Vhc3lAbGludXRyb25peC5kZT4KCmNvbW1pdCAzMWNmZTU3NDkxYjE4M2FjYWU1NzVkNDg2NzI5ZTE1OGYwMTZjMjdiCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJTW9uIEp1bCAxNCAyMzo0ODo0MSAyMDA4ICswMjAwCgogICAgdG9vbHMvZ2l0aWdub3JlOiB1cGRhdGUgdG8gYWxsIGdlbmVyYXRlZCBmaWxlcwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNWUwZGUwZTIxNmI4ZmIyNzYzNGFmYjExYzYwYTJmYTI0YzIzMzQ5ZQpBdXRob3I6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KRGF0ZToJV2VkIEp1bCA5IDE4OjMwOjQ0IDIwMDggKzAyMDAKCiAgICBtcGM1eHh4OiBBZGQgTVZCQ19QIGJvYXJkIHN1cHBvcnQKCiAgICBUaGUgTVZCQ19QIGlzIGEgTVBDNTIwMEIgYmFzZWQgY2FtZXJhIHN5c3RlbSB3aXRoIEludGVsIEdpZ2FiaXQgZXRoZXJuZXQKICAgIGNvbnRyb2xsZXIgKHVzaW5nIGUxMDAwKSBhbmQgY3VzdG9tIEFsdGVyYSBDeWNsb25lLUlJIEZQR0Egb24gUENJLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCBlMmQzMWZiMzQ1MDY1MzExNTQ1MjE0NDM2M2Q1YmRlNGU1ZTNlNjkzCkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1biAxOSAxNzo1NjoxMSAyMDA4IC0wNTAwCgogICAgVXBkYXRlIEZyZWVzY2FsZSBzeXNfZWVwcm9tLmMgdG8gaGFuZGxlIENDSUQgZm9ybWF0cwoKICAgIFVwZGF0ZSB0aGUgc3lzX2VlcHJvbS5jIGZpbGUgdG8gaGFuZGxlIGJvdGggTlhJRCBhbmQgQ0NJRCBFRVBST00gZm9ybWF0cy4gIFRoZQogICAgTlhJRCBmb3JtYXQgcmVwbGFjZXMgdGhlIG9sZGVyIENDSUQgZm9ybWF0LCBidXQgaXQncyBpbXBvcnRhbnQgdG8gc3VwcG9ydCBib3RoCiAgICBzaW5jZSBtb3N0IGJvYXJkcyBvdXQgdGhlcmUgc3RpbGwgdXNlIHRoZSBDQ0lEIGZvcm1hdC4gIFRoaXMgY2hhbmdlIGlzIGluCiAgICBwcmVwYXJhdGlvbiBmb3IgdXNpbmcgb25lIGZpbGUgdG8gaGFuZGxlIGJvdGggZm9ybWF0cy4gIFRoaXMgd2lsbCBhbHNvIHVuaWZ5CiAgICBFRVBST00gc3VwcG9ydCBmb3IgYWxsIEZyZWVzY2FsZSA4NXh4IGFuZCA4Nnh4IGJvYXJkcy4KCiAgICBBbHNvIHVwZGF0ZSB0aGUgODZ4eCBib2FyZCBoZWFkZXIgZmlsZXMgdG8gdXNlIHRoZSBzdGFuZGFyZCBDRkdfSTJDX0VFUFJPTV9BRERSCiAgICBpbnN0ZWFkIG9mIElEX0VFUFJPTV9BRERSLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDg1ZjQ2YTI1Y2NiMzNlZDliMjk1ZGUzYzJjZmUxY2UyNzBlY2U5YQpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJRnJpIEp1bCAxMSAxNzoyMjo0MyAyMDA4ICswOTAwCgogICAgcGNpOiBzaDogQWRkIHBjaV9za2lwX2RldiBhbmQgcGNpX3ByaW50X2RldiBmdW5jdGlvbgoKICAgIEFkZCBmdW5jdGlvbiBvZiBuZXcgUENJLCBwY2lfc2tpcF9kZXYgYW5kIHBjaV9wcmludF9kZXYuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDExMDcwMTRlODM1ZWM5ZDQ2YzAzMzNmNDIxMWQxMDRmNzc0NDJkYjAKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdWwgMTQgMjA6Mjk6MDcgMjAwOCAtMDUwMAoKICAgIENsZWFuIHVwIElOSVRfUkFNIG9wdGlvbnMKCiAgICBUaGUgTDJfSU5JVF9SQU0gb3B0aW9uIHdhcyB1bnVzZWQsIGFuZCByZWNlbnQgY2hhbmdlcyB0byB0aGUgVExCIGNvZGUKICAgIG1lYW50IHRoYXQgdGhlIElOSVRfUkFNIFRMQnMgd2VyZW4ndCBiZWluZyBjbGVhcmVkIG91dC4gIEluIG9yZGVyIHRvIHJlZHVjZQogICAgdGhlIGFtb3VudCBvZiBtYXBwZWQgc3BhY2UgYXR0YWNoZWQgdG8gbm90aGluZywgd2UgY2hhbmdlIHRoaW5ncyBzbyB0aGUgVExCcwogICAgZ2V0IGNsZWFyZWQuCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ1MjQ1NjE4MjBhOTMyN2U4OTEwNzg1NGIzYTcxODc4MDBjY2Y3MTkKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdWwgMTQgMjA6MjY6NTcgMjAwOCAtMDUwMAoKICAgIFJlbW92ZSBmYWtlIGZsYXNoIGJhbmsgZnJvbSA4NTQ0IERTCgogICAgVGhlIGZha2UgZmxhc2ggYmFuayB3YXMgZ2VuZXJhdGluZyBlcnJvcnMgZm9yIGFueW9uZSB3aG8gZGlkbid0IGhhdmUgYQogICAgUHJvbUpFVCBob29rZWQgdXAgdG8gdGhlIGJvYXJkLiAgQXMgdGhhdCBjb25zdGl0dXRlcyB0aGUgdmFzdCBtYWpvcml0eSBvZgogICAgdXNlcnMsIHdlIHJlbW92ZSBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjMwZDliZmNiNWY2ZDNhNDNmMjUxOTAxYTZiNDgwOTk0ZGNiNmVhMwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBKdWwgMTQgMTQ6MDc6MDMgMjAwOCAtMDUwMAoKICAgIE1QQzg1NDREUzogQWRkIEFUSSBWaWRlbyBjYXJkIHN1cHBvcnQKCiAgICBBZGQgc3VwcG9ydCBmb3IgdXNpbmcgYSBQQ0llIEFUSSBWaWRlbyBjYXJkIG9uIFBDSWUyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgN2Y5ZjQzNDdjZjMyNWM2M2EzOWZlMzA5MTBmM2ZiMjExYWUyY2MxNQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBKdWwgMTQgMTQ6MDc6MDIgMjAwOCAtMDUwMAoKICAgIDg1eHg6IEFkZCBzb21lIEwxL0wyIFNQUiByZWdpc3RlciBkZWZpbml0aW9ucwoKICAgIEFkZCBuZXcgTDEvTDIgU1BScyByZWxhdGVkIHRvIGU1MDBtYyBjYWNoZSBjb25maWcgYW5kIGNvbnRyb2wuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBlNTg1Mjc4N2YwYzNjNDQyYTI3NjI2MmYxM2Q5MWNhNDUwNjA1YWMwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIEp1bCAxNCAxNDowNzowMSAyMDA4IC0wNTAwCgogICAgTVBDODU0NERTOiBSZXBvcnQgYm9hcmQgaWQsIGJvYXJkIHZlcnNpb24gYW5kIGZwZ2EgdmVyc2lvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDczZjE1YTA2MGY2N2EyNDYyNTUxYzMzNDIxNWJkMjBmYWM2YjgxZDEKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gSnVsIDE0IDE0OjA3OjAwIDIwMDggLTA1MDAKCiAgICA4NXh4OiBDbGVhbnVwIEwyIGNhY2hlIHNpemUgZGV0ZWN0aW9uCgogICAgVGhlIEwyIHNpemUgZGV0ZWN0aW9uIGNvZGUgd2FzIGEgYml0IGNvbmZ1c2luZyBhbmQgd2Uga2VwdCBoYXZpbmcgdG8gYWRkCiAgICBjb2RlIHRvIGl0IHRvIGhhbmRsZSBuZXcgcHJvY2Vzc29ycy4gIENoYW5nZSB0aGUgc2Vuc2Ugb2YgZGV0ZWN0aW9uIHNvIHdlCiAgICBsb29rIGZvciB0aGUgb2xkZXIgcHJvY2Vzc29ycyB0aGF0IGFyZW4ndCBjaGFuZ2luZy4KCiAgICBBbHNvIGFkZGVkIHN1cHBvcnQgZm9yIDFNIGNhY2hlIHNpemUgb24gODU3Mi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGMzY2E3ZTVlMDBhMjQ0NTFmMjBkZjNiZGVkOWE2MWJhNTQxOTIxZGYKQXV0aG9yOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KRGF0ZToJRnJpIEp1bCAxMSAxNTozMzowOCAyMDA4IC0wNDAwCgogICAgc2JjODU2MDogZW5hYmxlIENPTkZJR19PRl9MSUJGRFQgYnkgZGVmYXVsdAoKICAgIE1ha2UgdGhlIGRlZmF1bHQgYnVpbGQgZm9yIHRoZSBzYmM4NTYwIGJvYXJkIGJlIHBvd2VycGMKICAgIGNhcGFibGUgd2l0aCBsaWJmZHQgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KCmNvbW1pdCA2YjQ0YTQ0ZWMyYWFiMTgwZDcwOTVjMWM5MmU2NjljZWUxZDNlM2JkCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDE0IDIwOjA0OjQwIDIwMDggLTA1MDAKCiAgICBGaXggaW5kZW50YXRpb24gZm9yIGRlZmF1bHQgYm9vdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKCiAgICBUaGlzIHdhcyBwcm9wb3NlZCBieSBQYXVsIEdvcnRtYWtlciBpbiByZXNwb25zZSB0byBXb2xmZ2FuZydzIGNvbW1lbnRzIG9uCiAgICBzaW1pbGFyICNkZWZpbmVzIGluIHNiYzg1NjAuaC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzdmZWY0OTkxMDRlMjhlMGE4M2IwMmI4NWNhMGQxZmJlODBkMjk0YQpBdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgpEYXRlOglGcmkgSnVsIDExIDE1OjMzOjA3IDIwMDggLTA0MDAKCiAgICBzYmM4NTYwOiBhZGQgZGVmYXVsdCBmZHQgdmFsdWVzCgogICAgQWRkIGluIHRoZSBkZWZhdWx0IGZkdCBzZXR0aW5ncyBhbmQgdGhlIHR5cGljYWwgRVhUUkFfRU5WCiAgICBzZXR0aW5ncyBhcyBib3Jyb3dlZCBmcm9tIHRoZSBtcGM4NTYwYWRzLiAgRml4IGEgY291cGxlCiAgICBvZiBzdGFsZSByZWZlcmVuY2VzIHRvIHRoZSBtcGM4NTYwYWRzIGRhdGluZyBiYWNrIHRvIHRoZQogICAgb3JpZ2luYWwgY2xvbmUvZm9yay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkMDRlNzZlZGY5MmY3Zjg5Njk2OTg5ZTg3MDJiOTdlMDIwNDU1YWYzCkF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CkRhdGU6CUZyaSBKdWwgMTEgMTU6MzM6MDYgMjAwOCAtMDQwMAoKICAgIHNiYzg1NjA6IGFkZCBpbiBmdF9ib2FyZF9zZXR1cCgpCgogICAgQWRkIGluIGZvciB0aGUgc2JjODU2MCwgdGhlIGZ0X2JvYXJkX3NldHVwKCkgcm91dGluZSwgYmFzZWQgb24gd2hhdCBpcwogICAgaW4gdXNlIGZvciB0aGUgRnJlZXNjYWxlIE1QQzg1NjBBRFMgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Cgpjb21taXQgYzE1OGJjYWNhM2IzMWNiZTM4YzQxNDM4MTJlNjE3MGUzOGE1NzM5MwpBdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgpEYXRlOglGcmkgSnVsIDExIDE1OjMzOjA1IDIwMDggLTA0MDAKCiAgICBzYmM4NTYwOiBkZWZpbmUgZXRoMCBhbmQgZXRoMSBpbnN0ZWFkIG9mIGV0aDEgYW5kIGV0aDIKCiAgICBUaGUgZXhpc3RpbmcgY29uZmlnIGRvZXNuJ3QgZGVmaW5lIENPTkZJR19IQVNfRVRIMCwgYW5kIHNvIHRoZQogICAgZmR0IHN1cHBvcnQgZG9lc24ndCB1cGRhdGUgdGhlIHplcm9zIGluIHRoZSBkdGIgbG9jYWwtbWFjIHdpdGgKICAgIHJlYWwgZGF0YSBmcm9tIHRoZSB1LWJvb3QgZW52LiAgU2luY2UgdGhlIGV4aXN0aW5nIGNvbmZpZyBpcwogICAgdGFpbG9yZWQgdG8ganVzdCB0d28gaW50ZXJmYWNlcywgZ2V0IHJpZCBvZiB0aGUgRVRIMiBkZWZpbml0aW9ucwogICAgYXQgdGhlIHNhbWUgdGltZS4KCiAgICBBbHNvIGRvbid0IGluY2x1ZGUgYW55IGVuZCB1c2VyIHNwZWNpZmljIGRhdGEgaW50byB0aGUgZW52aXJvbm1lbnQKICAgIGJ5IGRlZmF1bHQgLS0gdGhpbmdzIGxpa2UgTUFDIGFkZHJlc3MsIG5ldHdvcmsgcGFyYW1ldGVycyBldGMuIG5lZWQKICAgIHRvIGNvbWUgZnJvbSB0aGUgZW5kIHVzZXIuCgogICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMGVjNDM2ZDJmOTUwNzZkOWU0NmFlNTk0ZGI2ZTliMWQ4NzMyODQwZApBdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgpEYXRlOglGcmkgSnVsIDExIDE1OjMzOjA0IDIwMDggLTA0MDAKCiAgICBzYmM4NTYwOiBwcm9wZXJseSBzZXQgY3MwX2JuZHMgZm9yIDUxMk1CCgogICAgVGhlIHNiYzg1NjAgYm9hcmQgc2hpcHMgd2l0aCA1MTJNQiBvZiBtZW1vcnkgaW5zdGFsbGVkLAogICAgYnV0IHRoZSBjdXJyZW50IGNzMF9ibmRzIGlzIGhhcmQgY29kZWQgZm9yIDI1Nk1CLiAgU2V0IHRoZQogICAgdmFsdWUgYmFzZWQgb24gQ0ZHX1NEUkFNX1NJWkUuCgogICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Cgpjb21taXQgNmRlNWJmMjQwMDRjOGQ5YzliMDcwYmI4Zjc0MThkMWM0NWU1ZWIyNwpBdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgpEYXRlOglGcmkgSnVsIDExIDE1OjMzOjAzIDIwMDggLTA0MDAKCiAgICBzYmM4NTYwOiBwcm9wZXIgZGVmaW5pdGlvbnMgZm9yIFRTRUMuCgogICAgVGhlIGRlZmluaXRpb25zIGZvciB0aGUgVFNFQyBoYXZlIGJlY29tZSBvdXQgb2YgZGF0ZS4gIFRoZXJlIGlzIG5vCiAgICBsb25nZXIgYW55IHN1Y2ggb3B0aW9ucyBsaWtlICJDT05GSUdfTVBDODV4eF9UU0VDMSIgb3Igc2ltaWxhci4KICAgIFVwZGF0ZSB0byBtYXRjaCB0aG9zZSBvZiBvdGhlciBib2FyZHMsIGxpa2UgdGhlIE1QQzg1NjBBRFMuCgogICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CiAgICBBY2tlZC1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA3MTA3NGFiYmUwYzc2NDI5NTc3YWZmNThhZWZmMGEyNGFkMjEwYjIzCkF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CkRhdGU6CVdlZCBKdWwgOSAxMzoyMzowNSAyMDA4IC0wNDAwCgogICAgOHh4eC1mZHQ6IHNldCBuczE2NTUwIGNsb2NrIGZyb20gQ0ZHX05TMTY1NTBfQ0xLLCBub3QgYmlfYnVzZnJlcQoKICAgIFNvbWUgYm9hcmRzIHRoYXQgaGF2ZSBleHRlcm5hbCAxNjU1MCBVQVJUcyBkb24ndCBoYXZlIGEgZGlyZWN0CiAgICB0aWUgYmV0d2VlbiBiaV9idXNmcmVxIGFuZCB0aGUgY2xvY2sgdXNlZCBmb3IgdGhlIFVBUlRzLiAgQm9hcmRzCiAgICB0aGF0IGRvIGhhdmUgc3VjaCBhIHRpZSBzaG91bGQgc2V0IENGR19OUzE2NTUwX0NMSyB0byBiZQogICAgZ2V0X2J1c19mcmVxKDApIC0tIHdoaWNoIG1vc3Qgb2YgdGhlbSBkbyBhbHJlYWR5LgoKICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgogICAgQWNrZWQtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjRlZjc2ZjMyMGZiYWRmMDc0MTA1MjI5ODI2NTE0ZGIxNDBmOTM5ZgpBdXRob3I6IEFuZHJldyBLbG9zc25lciA8YW5kcmV3QGNlc2Eub3BidS54ZXJveC5jb20+CkRhdGU6CVdlZCBKdWwgMiAwNzowMzo1MyAyMDA4IC0wNzAwCgogICAgQ2hhbmdlIHRoZSB0ZW1wIG1hcCB0byBST00gdG8gYWxpZ24gYWRkcmVzc2VzIHRvIHBhZ2Ugc2l6ZS4KCiAgICBXaXRoIGEgcGFnZSBzaXplIG9mIEJPT0tFX1BBR0VTWl8xNk0sIGJvdGggdGhlIHJlYWwgYW5kIGVmZmVjdGl2ZQogICAgYWRkcmVzc2VzIG11c3QgYmUgbXVsdGlwbGVzIG9mIDE2TUIuICBUaGUgaGFyZHdhcmUgc2lsZW50bHkgdHJ1bmNhdGVzCiAgICB0aGVtIHNvIHRoZSBjb2RlIGhhcHBlbnMgdG8gd29yay4gIFRoaXMgcGF0Y2ggY2xhcmlmaWVzIHRoZSBzaXR1YXRpb24KICAgIGJ5IGVzdGFibGlzaGluZyBhZGRyZXNzZXMgdGhhdCB0aGUgaGFyZHdhcmUgZG9lc24ndCBuZWVkIHRvIHRydW5jYXRlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBLbG9zc25lciA8YW5kcmV3QGNlc2Eub3BidS54ZXJveC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMDZiNDE4NmMxMDIwNGI2NjgzZWRiMDQ3YWM1ZjUwNmZiMGNlMDkzNwpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdW4gMTcgMTc6NDU6MjIgMjAwOCAtMDUwMAoKICAgIG1wYzg1eHg6IHVzZSBJU19FX1BST0NFU1NPUiBtYWNybwoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNmI3MGZmYjlkMWIyZTc5MTE2MWYzY2Y5MjkzN2FhNDViNGEwN2I3OApBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdW4gMTYgMTU6NTU6NTMgMjAwOCAtMDUwMAoKICAgIGZkdDogYWRkIGNyeXB0byBub2RlIGhhbmRsaW5nIGZvciBNUEM4ezMsIDV9eHhFIHByb2Nlc3NvcnMKCiAgICBEZWxldGUgdGhlIGNyeXB0byBub2RlIGlmIG5vdCBvbiBhbiBFLXByb2Nlc3Nvci4gIElmIG9uIDgzNjAgb3IgODM0eCBmYW1pbHksCiAgICBjaGVjayByZXYgYW5kIHVwLXJldiBjcnlwdG8gbm9kZSAodG8gU0VDIHJldi4gMi40IHByb3BlcnR5IHZhbHVlcykKICAgIGlmIG9uIGFuICdFQScgcHJvY2Vzc29yLCBlLmcuIE1QQzgzNDlFQS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDg1ZTU4MDhlOGVhOWY3N2RhNTIxOWYyMzM5NDExMmYwYjQyNGZhNWUKQXV0aG9yOiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KRGF0ZToJRnJpIEp1bCAxMSAxNToxMDoxMSAyMDA4IC0wNDAwCgogICAgQVJNIERhVmluY2k6IFJlbW92ZSBleHRlcm4gcGh5X3QgZGVjbGFyYXRpb24gYnkgbW92aW5nIGNvZGUgdG8gcHJvcGVyIHBsYWNlCgogICAgQVJNIERhVmluY2k6IFJlbW92ZSBleHRlcm4gcGh5X3QgZGVjbGFyYXRpb24gYnkgbW92aW5nCiAgICBjb2RlIHRvIHByb3BlciBwbGFjZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KCmNvbW1pdCAzYTllN2JhMmFjMTQwMThjNWRkMWU3OGE3ZGQ3MzU1NzE1NjljOTcxCkF1dGhvcjogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+CkRhdGU6CUZyaSBKdWwgMTEgMTU6MTA6MTAgMjAwOCAtMDQwMAoKICAgIEFSTSBEYVZpbmNpOiBSZW1vdmUgZHVwbGljYXRlIGRlZmluaXRpb25zIG9mIE1BQ0hfVFlQRSBhbmQgcHJvdG90eXBlIG9mIGkyY19pbml0KCkKCiAgICBBUk0gRGFWaW5jaTogUmVtb3ZlIGR1cGxpY2F0ZSBkZWZpbml0aW9ucyBvZiBNQUNIX1RZUEUKICAgIGFuZCBwcm90b3R5cGUgb2YgaTJjX2luaXQoKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KCmNvbW1pdCAzNDg3NTNkNDE2Y2QyYzllN2VjNjUyMGE1NDRjOGYzM2NmMDJhNTYwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIEp1bCAxNCAxNDowMzowMiAyMDA4IC0wNTAwCgogICAgRml4IHNvbWUgbW9yZSBwcmludGYoKSBmb3JtYXQgcHJvYmxlbXMuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA0NWIxNmQyMmM2NDY3NGNjZDhjNDYzNzQ1NmE5ODc0NjM2MDkxNDFjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIEp1bCAxNCAyMjozODo0MiAyMDA4ICswMjAwCgogICAgRml4IGNvZGluZyBzdHlsZTsgbWFrZSBjb2RlIGJldHRlciBwYXJzYWJsZSBieSBleHRlcm5hbCB0b29scwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYjg4MGNiZjIwN2IxYzEwOWQzYTY2MTQxN2E4ZmVkZGNiZDcyOWE5ZApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBKdWwgMTQgMjE6MTk6MDggMjAwOCArMDIwMAoKICAgIGNwdS9pMzg2L3NlcmlhbC5jOiBGaXggc3ludGF4IGVycm9ycwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZTJkNDVlNmY0ZDk5MTllMWFmZWFjNWUwOTU1N2IyMjUyODMyZmNjZgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBKdWwgMTQgMjA6NDE6MzUgMjAwOCArMDIwMAoKICAgIGVscHBjIGJvYXJkOiBDb2Rpbmcgc3R5bGUgY2xlYW51cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDgyYjI0YThhNTA1ZmM4MTQ2NjQ4NGIzYzU1YjU3NGVlMGI0MjA1YmMKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gSnVsIDE0IDIwOjQwOjIyIDIwMDggKzAyMDAKCiAgICBlbHBwYyBib2FyZDogZml4IHN5bnRheCBlcnJvci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDBmZTM0MDU4NWE2YTQ4YmQzOTJkMzE1YjBkZDg0ZDA2OGIxYzM3OTAKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gSnVsIDE0IDIwOjM4OjI2IDIwMDggKzAyMDAKCiAgICBFQitNQ0YtRVYxMjMgYm9hcmQ6IGZpeCBjb2Rpbmcgc3R5bGUgKGFsaW5nbWVudCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDY4NDE3ODVhMGJiMGYzODE3NTQ1NmE5MjNlZGQ2MzRmYjdkZDY5NDcKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gSnVsIDE0IDIwOjM2OjQ0IDIwMDggKzAyMDAKCiAgICBFQitNQ0YtRVYxMjMgYm9hcmQ6IGZpeCBzeW50eCBlcnJvcgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYWI1Y2RhOWY4OGMzZWFmOWNmNTk5YWRjM2EzMzc1OTA2YzRlZDkwNApBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEp1bCA3IDE4OjAyOjA4IDIwMDggLTA1MDAKCiAgICBSZW1vdmUgTEJDX0NBQ0hFX0JBU0UgZnJvbSA4NTQ0IERTCgogICAgVGhlIDg1NDQgRFMgZG9lc24ndCBoYXZlIGFueSBjYWNoZWFibGUgTG9jYWwgQnVzIG1lbW9yaWVzIHNldCB1cC4gIEJ5IG1hcHBpbmcKICAgIHNwYWNlIGZvciBzb21lIGFueXdheSwgd2Ugd2VyZSBhbGxvd2luZyBzcGVjdWxhdGl2ZSBsb2FkcyBpbnRvIHVubWFwcGVkIHNwYWNlLAogICAgd2hpY2ggd291bGQgY2F1c2UgYW4gZXhjZXB0aW9uIChhbm5veWluZywgZXZlbiBpZiB1bHRpbWF0ZWx5IGhhcm1sZXNzKS4KICAgIFJlbW92aW5nIExCQ19DQUNIRV9CQVNFLCBhbmQgdXNpbmcgTEJDX05PTkNBQ0hFX0JBU0UgZm9yIHRoZSBMQkMgTEFXIHNvbHZlcyB0aGUKICAgIHByb2JsZW0uCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGQwZmY1MWJhNWQwMzA5ZGJlOWUyNWVhNTRmOGEwMjg1YTZkNWRiOTAKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gSnVsIDE0IDE1OjE5OjA3IDIwMDggKzAyMDAKCiAgICBDb2RlIGNsZWFudXA6IGZpeCBvbGQgc3R5bGUgYXNzaWdubWVudCBhbWJpZ3VpdGllcyBsaWtlICI9LSIgZXRjLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZDc4NTQyMjNjNWM4NWI1ODQ5ZmJmNDIyY2M4YWMwZWZlZjQ2MWMzNwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBKdWwgMTQgMTU6MTA6NTMgMjAwOCArMDIwMAoKICAgIEFtaWdhT25lRzNTRTogcmVtb3ZlIGRlYWQgYW5kIGluY29tcGxldGUgZmlsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGI2NGYxOTBiN2EzNDIyNGRmMDliNTU5Y2ExMTFlYjFiNzMzZjAwYWQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gSnVsIDE0IDE1OjA2OjM1IDIwMDggKzAyMDAKCiAgICBGaXggcHJpbnRmKCkgZm9ybWF0IGlzc3VlcyB3aXRoIHNpemVvZl90IHR5cGVzIGJ5IHVzaW5nICV6dQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGYzNTRiNzNlMTZhODZmOWU5MDg1NDcxYTgzMDYwNWY3NGY4NGVhNWQKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglNb24gSnVsIDE0IDE0OjExOjQ1IDIwMDggKzAyMDAKCiAgICB2c3ByaW50ZjogYWRkIHogYW5kIHQgb3B0aW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMjVkYmU5OGFiYjY4NmQ4MjEwZTE3MzFmYmE4NWNlZDdkM2NlODc0YwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBKdWwgMTMgMjM6MDc6MzUgMjAwOCArMDIwMAoKICAgIEZpeCBzb21lIG1vcmUgcHJpbnRmKCkgZm9ybWF0IGlzc3Vlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGQ1OTk2ZGQ1NTVlZGY1MjcyMWI3NjkxYTRjNTlkZTAxNjI1MWVkMzkKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gSnVsIDEzIDE5OjUxOjAwIDIwMDggKzAyMDAKCiAgICBGaXggc29tZSBtb3JlIHByaW50ZigpIGZvcm1hdCBwcm9ibGVtcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDBmOWQ1ZjZkNmU4MTQ5MDc3OTQ5OTVjNmEyMmFmNzUyMDQwYzM1ZDkKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gSnVsIDEzIDE5OjQ4OjI2IDIwMDggKzAyMDAKCiAgICBBRFM1MTIxOiBGaXggKGRlbGV0ZSkgaW5jb3JyZWN0IGFkczUxMjFfZGl1X2luaXQoKSBwcm90b3R5cGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDMyMjcxNmExZDFlYjMzYTcxMDY3YmEwZWIxYzUzNDZmYjJkZDZiMzQKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CVNhdCBKdWwgMTIgMTc6MzE6MzYgMjAwOCArMDIwMAoKICAgIEZpeCBidWcgaW4gTGltZSB2aWRlbyBkcml2ZXIKCiAgICBXZSBuZWVkIHRvIHdhaXQgd2hpbGUgZHJhd2luZyBlbmdpbmUgY2xlYXJzIGZyYW1lCiAgICBidWZmZXIgYmVmb3JlIGFueSBmdXJ0aGVyIHNvZnR3YXJlIGFjY2Vzc2VzIHRvIGZyYW1lCiAgICBidWZmZXIgd2lsbCBiZSBpbml0aWF0ZWQuIE90aGVyd2lzZSBzb2Z0d2FyZSBkcmF3bgogICAgcGFydHMgY291bGQgYmUgcGFydGlhbGx5IGRlc3Ryb3llZCBieSB0aGUgZHJhd2luZwogICAgZW5naW5lIG9yIGV2ZW4gR0RDIGNoaXAgZnJlZXplIGNvdWxkIG9jY3VyIChhcwogICAgb2JzZXJ2ZWQgb24gc29jcmF0ZXMgYm9hcmQpLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCAwYTU2NzZiZWZiMGM1OTAyMTJhNTNmNzYyN2ZhNWQwZDhhODRiZjM0CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IEp1bCAxMiAxNDozNjozNCAyMDA4ICswMjAwCgogICAgRml4IHNvbWUgbW9yZSBwcmludGYoKSBmb3JtYXQgaXNzdWVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMThjOGEyOGFhZDQ5ODAzNzgwYmQ4ZDUyNDMyZGVkNTI4ZTM3ZTcwMQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJRnJpIEp1bCAxMSAxNToxMTo1NyAyMDA4ICswMjAwCgogICAgaHdtb246IHJlbmFtZSBDT05GSUdfRFMxNzIyIHRvIENPTkZJR19EVFRfRFMxNzIyCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgogICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2ZWNiYjQ1YmIwMjdlOTBjMTlkNjNiNDhlN2IwYzA1YWNjMWE4N2MwCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglGcmkgSnVsIDExIDExOjUwOjUzIDIwMDggKzAyMDAKCiAgICBod21vbjogQ2xlYW5pbmcgaHdtb24gZGV2aWNlcwoKICAgIENsZWFuIE1ha2VmaWxlCiAgICBNb3ZlIGRldmljZSBzcGVjaWZpYyB2YWx1ZXMgdG8gZHJpdmVyIGZvciBiZXR0ZXIgcmVhZGluZwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYzc4ZmNlNjk5YzdmZjQ2N2VjZDg0MWRhNmE3OWYwNjUxODBiZjU3OApBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJRnJpIEp1bCAxMSAxMDo0MzoxMyAyMDA4ICswMjAwCgogICAgRklTOiByZXBhcmUgaW5jb3JyZWN0IHJldHVybiB2YWx1ZSB3aXRoIHJhbWRpc2sgaGFuZGxpbmcKCiAgICBNaWNyb2JsYXplIGFuZCBQb3dlclBDIHVzZSBib290X2dldF9yYW1kaXNrIGZvciBsb2FkaW5nCiAgICByYW1kaXNrIHRvIG1lbW9yeSB3aXRoIGNoZWNraW5nIHJldHVybiB2YWx1ZS4KICAgIFJldHVybiAwIG1lYW5zIHN1Y2Nlc3MuIFJldHVybiAxIG1lYW5zIGZhaWxlZC4KICAgIEhlcmUgaXMgY29ycmVzcG9uZCBwYXJ0IG9mIGNvZGUgZnJvbSBib290bS5jIHdoaWNoIGNoZWNrCiAgICByZXR1cm4gY29kZS4KCiAgICByZXQgPSBib290X2dldF9yYW1kaXNrIChhcmdjLCBhcmd2LCBpbWFnZXMsIElIX0FSQ0hfUFBDLAoJCSZyZF9kYXRhX3N0YXJ0LCAmcmRfZGF0YV9lbmQpOwogICAgaWYgKHJldCkKCWdvdG8gZXJyb3I7CgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgoKY29tbWl0IDg0YTJjNjRhMjZkYzVlMjc1ZTFjZjRlNzZhNmUxOTRhMThmYjU0NzcKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CUZyaSBKdWwgMTEgMTA6MTA6MzIgMjAwOCArMDIwMAoKICAgIG1pY3JvYmxhemU6IFJlbW92ZSB1c2VsZXNzIGFuY2llbnQgaGVhZGVycwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KCmNvbW1pdCA1M2VhOTgxYzMxMjRiMTNjMTM3YzJkMTBlOTc1YjdjNjY3MjI2NmUwCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglGcmkgSnVsIDExIDEwOjEwOjMxIDIwMDggKzAyMDAKCiAgICBtaWNyb2JsYXplOiBDbGVhbiB1YXJ0bGl0ZSBkcml2ZXIKCiAgICBSZWRlc2lnbiB1YXJ0bGl0ZSBkcml2ZXIgdG8gaW5fYmUzMiBhbmQgb3V0X2JlMzIgbWFjcm9zCiAgICBGaXggbWlzc2luZyBoZWFkZXIgaW4gaW8uaAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KICAgIEFja2VkLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgZGJmM2RmYjM4NmEyZDVkMjM4MTgxNGUzOTk4NWFiMmUyMTg5NDU1MApBdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KRGF0ZToJRnJpIEp1bCAxMSAwMjozOToxNCAyMDA4ICswMjAwCgogICAgRW5hYmxlIHBhc3Npbmcgb2YgQVRBR3MgcmVxdWlyZWQgYnkgbGF0ZXN0IExpbnV4IGtlcm5lbC4KCmNvbW1pdCBlZjEzMGQzMDkzYmRmODhmMDFjZjNlMDAwZmU1ZGYyNDllYmYyYjFhCkF1dGhvcjogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+CkRhdGU6CUZyaSBKdWwgMTEgMTA6MjQ6MTUgMjAwOCAtMDQwMAoKICAgIEZpeCBpbnRlZ2VyIG92ZXJmbG93IHdhcm5pbmcgaW4gY2FsY19kaXZpc29yKCkKCiAgICB3aGljaCBoYXBwZW5lZCB3aGVuIHJvdW5kaW5nIHRoZSBzZXJpYWwgcG9ydCBjbG9jayBkaXZpc29yCgogICAgU2lnbmVkLW9mZi1ieTogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Cgpjb21taXQgNmI3NjAxODlkNzdmMDAxNjg0ZTMxNjBiMzU1YzE4NWNhMzgwNDk2MQpBdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KRGF0ZToJRnJpIEp1bCAxMSAwMTowOTo1OSAyMDA4ICswMjAwCgogICAgRml4IGJ1aWxkIHRpbWUgd2FybmluZ3MgaW4gZnVuY3Rpb24gbW1jX2RlY29kZV9jc2QoKQoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KCmNvbW1pdCBjMTU5NDdkNmNlMGQ1OTkyNWM5N2ZkZmFjNjkyNDc2YWY2ZTI2MmQwCkF1dGhvcjogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+CkRhdGU6CVRodSBKdWwgMTAgMTA6NDY6MzMgMjAwOCAtMDQwMAoKICAgIEFSTTogRml4IGZvciBicm9rZW4gY29tcGlsYXRpb24gd2hlbiBkZWZpbmluZyBDT05GSUdfQ01EX0VMRgoKICAgIGNhdXNlZCBieSBtaXNzaW5nIGRjYWNoZSBzdGF0dXMvZW5hYmxlL2Rpc2FibGUgZnVuY3Rpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgoKY29tbWl0IDA2OGMxYjc3YzhmNDJhMWEzMTA4NGQyZjRiMWQ1Y2M4MDdjMWE5Y2UKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBKdWwgMTAgMTM6NTM6MzEgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogUmVtb3ZlIHJlZHVuZGFudCBmdF9ib2FyZF9zZXR1cCgpIGZ1bmN0aW9ucyBmcm9tIHNvbWUgNHh4IGJvYXJkcwoKICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBzb21lIGZ0X2JvYXJkX3NldHVwKCkgZnVuY3Rpb25zIGZyb20gc29tZSA0eHggYm9hcmRzLgogICAgVGhpcyBjYW4gYmUgZG9uZSBzaW5jZSB3ZSBub3cgaGF2ZSBhIGRlZmF1bHQgd2VhayBpbXBsZW1lbnRhdGlvbiBmb3IgdGhpcwogICAgaW4gY3B1L3BwYzR4eC9mZHQuYy4gT25seSBib2FyZCBpbiBuZWVkIGZvciBhIGRpZmZlcmVudC9jdXN0b20KICAgIGltcGxlbWVudGF0aW9uIGxpa2UgY2FueW9ubGFuZHMgbmVlZCB0aGVpciBvd24gdmVyc2lvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZDM5YTA4OWY4YmM5NjBiYTlhZTZhMDhmZGE1NTgyYjU3ODYyMGNjMQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBKdWwgMTMgMTQ6NTg6MTYgMjAwOCArMDIwMAoKICAgIEFkZCBsYXN0IGtub3duIG1haW50YWluZXIgZm9yIG9ycGhhbmVkIGJvYXJkczsgcmVmb3JtYXQuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1Yzc2MWQ1N2JiOTk0MGUwMTZkNTYxZmRhOGIyZWQ4NGM1NWRlNWI2CkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglUaHUgSnVsIDEwIDEzOjE2OjA0IDIwMDggKzAyMDAKCiAgICBSZW1vdmUga2hhcnJpc0BuZXh1cy10ZWNoLm5ldCBmcm9tIE1BSU5UQUlORVJTCgogICAgTWFpbCB0byBraGFycmlzQG5leHVzLXRlY2gubmV0IGJvdW5jZXMgYmVjYXVzZSB0aGUgdXNlciBkb2Vzbid0IGV4aXN0CiAgICBhbnltb3JlLiBZb3UgY2FuJ3QgYmUgYSBtYWludGFpbmVyIHdpdGhvdXQgYSB2YWxpZCBlLW1haWwgYWRkcmVzcywgc28KICAgIG1vdmUgYWxsIGJvYXJkcyB0aGF0IHVzZWQgdG8gYmUgbWFpbnRhaW5lZCBieSBLeWxlIEhhcnJpcyB0byB0aGUKICAgICJvcnBoYW5lZCIgbGlzdC4KCiAgICBDdXJyZW50bHksIG9ubHkgUG93ZXJQQyBoYXMgYSBsaXN0IG9mIG9ycGhhbmVkIGJvYXJkcywgc28gdGhpcyBwYXRjaAogICAgY3JlYXRlcyBvbmUgZm9yIEFSTSBhcyB3ZWxsLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCAxN2JkMTcwNzE0NjNiMGNkZTM5MWFjNGEwODYzZDYwMDQ3NGI0ZWExCkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDEwIDAxOjE1OjEwIDIwMDggKzAyMDAKCiAgICBhdDkxOiBGaXggdG8gZW5hYmxlIHVzaW5nIFRlcmlkaWFuIE1JSSBwaHkgKDc4UTIxeDMpIHdpdGggYXQ5MXNhbTkyNjAKCiAgICBPbiB0aGUgYXQ5MXNhbTkyNjBlcCBkZXZlbG9wbWVudCBib2FyZCB0aGVyZSBpcyBhbiBFRVBST00KICAgIGNvbm5lY3RlZCB0byB0aGUgVFdJIGludGVyZmFjZSAoUEEyMywgUEEyNCBQZXJpcGhlcmFsIEEKICAgIG11bHRpcGxleGluZyksIHNvIHdlIGNhbm5vdCB1c2UgdGhlc2UgcGlucyBhcyBFVFgyLCBFVFgzLgogICAgVGhpcyBwYXRjaCBjb25maWd1cmVzIFBBMTAsIFBBMTEgcGlucyBmb3IgRVRYMiwgRVRYMwogICAgaW5zdGVhZCBvZiBQQTIzLCBQQTI0IHBpbnMuCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogTWFudWVsIFNhaG0gPE1hbnVlbC5TYWhtQGZlaWcuZGU+Cgpjb21taXQgZjg4OTI2NTc1M2RkZjQ0NjVkOWQ1ODA4MjdiYjkyODliZmFjNTVkNgpBdXRob3I6IEtlbm5ldGggSm9oYW5zc29uIDxrZW5uZXRoQHNvdXRocG9sZS5zZT4KRGF0ZToJU2F0IEp1bCAxMiAxMzoxODozNCAyMDA4IC0wNjAwCgogICAgZml4IERJVSBmb3Igc21hbGwgc2NyZWVucwoKICAgIFRoZSBESVVfRElWIHJlZ2lzdGVyIGlzIDggYml0IG5vdCA1IGJpdC4gVGhpcyBwcmV2ZW50ZWQgbGFyZ2UgRElWIHZhbHVlcwogICAgc28gaXQgd2FzIG5vdCBwb3NzaWJsZSB0byBzZXQgYSBzbG93IHBpeGVsIGNsb2NrIGFuZCB0aHVzIHByZXZlbnRlZAogICAgZGlzcGxheSBvbiBzbWFsbCBzY3JlZW5zLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtlbm5ldGggSm9oYW5zc29uIDxrZW5uZXRoQHNvdXRocG9sZS5zZT4KICAgIEFja2VkLWJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiNjBiODU3Mzg3NWU2NTBlNGM2OWJlNjY3YmZjODhkM2VkNDc0YTdjCkF1dGhvcjogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBKdWwgMTEgMTQ6NDQ6MDkgMjAwOCAtMDYwMAoKICAgIEFEUzUxMjEgY2xlYW51cCBjb21waWxlIHdhcm5pbmdzCgogICAgYm9hcmQvYWRzNTEyMS9pb3Bpbi5jCglSZXBsYWNlIGJpdCBmaWVsZHMgaW4gc3RydWN0IGlvcGluX3Qgd2l0aCBhIHNpbmdsZQoJZmllbGQgYW5kIGludGlhbGl6ZSBpdCB2aWEgcGxhaW4gb2xkIG1hY3Jvcy4KCVRoaXMgZml4ZXMgdGhlIHR5cGUgcHVuIHdhcm5pbmdzIGFuZCBtYWtlcyB0aGUgY29kZQoJbW9yZSByZWFkYWJsZS4KCiAgICBib2FyZC9hZHM1MTIxL2FkczUxMjEuYwoJQWRkIGluY2x1ZGUgaW9waW4uaCB0byBhZHM1MTIxLmMgZm9yIHRoZSBpb3Bpbl9pbml0aWFsaXplCglwcm90b3R5cGUuCgoJQWRkIGFuIGV4dGVybiB2b2lkIGFkczUxMjFfZGl1X2luaXQodm9pZCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiZGU2MzU4NzYyMmM0YjgzMGEyN2QxZGRmNzI2NTg0M2RlOWU5OTRmCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIEp1bCAxMSAyMjo1NjoxMSAyMDA4ICswMjAwCgogICAgRml4IHNvbWUgbW9yZSBwcmludGYoKSBmb3JtYXQgaXNzdWVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMTg0ZjFiNDA0YTkwZWVmOGI0MjVjMGU3YjMwMThkNTllZjk5ODJjOApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBKdWwgMTEgMjI6NTU6MzEgMjAwOCArMDIwMAoKICAgIEZpeGVkIHNvbWUgb3V0LW9mLXRyZWUgYnVpbGQgaXNzdWVzCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0N2JmOWM3MWFlODM4MzA1YTNlYTMxNjFhZjhkMTRlNmYzZmMyYzgyCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1bCA5IDE2OjIwOjIzIDIwMDggLTA1MDAKCiAgICBDb2xkRmlyZTogRml4IEZCIENTIG5vdCBzZXR1cCBwcm9wZXJseSBmb3IgTWNmNTI4MgoKICAgIFJlbW92ZSBhbGwgQ0ZHX0NTbl9STyBpbiBjcHUvbWNmNTJ4Mi9jcHVfaW5pdC5jLiBJZgogICAgQ0ZHX0NTbl9STyBpcyBkZWZpbmVkIGFzIDAsIHRoZSBjaGlwc2VsZWN0IHdpbGwgbm90CiAgICBiZSBhc3NpZ25lZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGJjM2NjYjEzOWYwODM2ZjBhODM0Y2ZkMzcwYTEyMGEwMGFkN2U2M2EKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVsIDkgMTU6NDc6MjcgMjAwOCAtMDUwMAoKICAgIENvbGRGaXJlOiBGaXggaW5jb3JyZWN0IGRlZmluZSBmb3IgbWNmNTIyN3ggYW5kIG1jZjU0NDV4IFJUQwoKICAgIFJlbmFtZSBDT05GSUdfTUNGVE1SIHRvIENPTkZJR19NQ0ZSVEMgdG8gaW5jbHVkZSByZWFsIHRpbWUKICAgIGNsb2NrIG1vZHVsZSBpbiBjcHUvPGNmIGFyY2g+L2NwdV9pbml0LmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGY5NDk0NWI1MTdmMTBlMDE5MjcxMDE2NzljNjIzNjFlMDNkNGU4MzcKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVsIDkgMTU6MjU6MDEgMjAwOCAtMDUwMAoKICAgIENvbGRGaXJlOiBGaXggaW5jb3JyZWN0IGJvYXJkIG5hbWUgaW4gTUFLRUFMTCBmb3IgTTUyNTNFVkJFCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwZTBjNDM1N2QxNGEzNTYzYzZhMmExZTZkNWFkNmEyY2M0ZjM1Y2FiCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1bCA5IDE1OjIxOjQ0IDIwMDggLTA1MDAKCiAgICBGaXggY29tcGlsZSBlcnJvciBjYXVzZWQgYnkgbWlzc2luZyB0aW1lciBmdW5jdGlvbgoKICAgIEFkZCAjZGVmaW5lIENPTkZJR19NQ0ZUTVIgaW4gRUIrTUNGLUVWMTIzLmggY29uZmlndXJhdGlvbiBmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjMzdlYTAzMTE3NWI4MDdjNTRlNmJhZDliMjcwZTliZWRlNmMwMDc4CkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1bCA5IDE1OjE0OjI1IDIwMDggLTA1MDAKCiAgICBGaXggY29tcGlsZSBlcnJvciBjYXVzZWQgYnkgaW5jb3JyZWN0IGZ1bmN0aW9uIHJldHVybiB0eXBlCgogICAgUmVuYW1lIGludCBtaWlfaW5pdCh2b2lkKSB0byB2b2lkIG1paV9pbml0KHZvaWQpCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhYjQ4NjBiMjU1MjM5ZGJhZWNjY2RkMDAyYzhkMTFmNGVmNTRkZDc1CkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1biAxOCAxOToyNzoyMyAyMDA4IC0wNTAwCgogICAgQ29sZEZpcmU6IEZpeCBwb3dlciB1cCBpc3N1ZSBmb3IgTUNGNTIzNQoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZGQwOGU5NzM2MWZiYzllNzlmYTVlZjFhOGFjZjI5MjczYjkzNGIxMQpBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKdW4gMTggMTk6MTk6MDcgMjAwOCAtMDUwMAoKICAgIENvbGRGaXJlOiBGaXggY29tcGlsaW5nIGVycm9yIGZvciBNQ0Y1Mjc1CgogICAgVGhlIGNvbXBpbGluZyBlcnJvciB3YXMgY2F1c2VkIGJ5IG1pc3NpbmcgYSBjbG9zZWQgcGFyZW50aGVzZXMKICAgIGluIHNwZWVkLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk0NjAzYzJmZDRkYmUwNjU1ODc4NDE2YWEwZGE5ZjMwMmQ0YzMwZDMKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDE4IDE5OjE0OjAxIDIwMDggLTA1MDAKCiAgICBDb2xkRmlyZTogRml4IHRpbWVyIGlzc3VlIGZvciBNQ0Y1MjcyCgogICAgVGhlIHRpbWVyIHdhcyBhc3NpZ25lZCB0byB3cm9uZyB0aW1lciBtZW1vcnkgbWFwcGVkIHdoaWNoCiAgICBjYXVzZWQgdWRlbGF5KCkgYW5kIHRpbWVyKCkgbm90IHdvcmtpbmcgcHJvcGVybHkuCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzYjFlOGFjOWI0M2Y4OWNjOTI5MWE2YTg2ZTZiMzNlZjU1ODAxNTE1CkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1biAxOCAxOToxMjoxMyAyMDA4IC0wNTAwCgogICAgQ29sZEZpcmU6IENoYW5nZSBpbnZhbGlkIEpNUCB0byBCUkEgY2F1Z2h0IGJ5IG5ldyB2NGUgdG9vbGNoYWluCgogICAgU2lnbmVkLW9mZi1ieTogS3VydCBNYWhhbiA8a21haGFuQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgODM3MWRjMjA2NjEzNmJlMjFlMTBiN2I5MjkzZTQ2OTI5N2Q3NzI5OApBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKdW4gMTggMTk6MDU6MjMgMjAwOCAtMDUwMAoKICAgIENvbGRGaXJlOiBBZGQgLWdvdD1zaW5nbGUgcGFyYW0gZm9yIG5ldyBsaW51eCB2NGUgdG9vbGNoYWlucwoKICAgIFNpZ25lZC1vZmYtYnk6IEt1cnQgTWFoYW4gPGttYWhhbkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDU2ZDUyNjE1Y2Q0N2JjNTIyZWUxM2JiN2VjN2U1OWQ2Y2U5NDI2YzcKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDE4IDEzOjIxOjE5IDIwMDggLTA1MDAKCiAgICBDb2xkRmlyZTogRml4IGNvZGUgZmxhc2ggY29uZmlndXJhdGlvbiBmb3IgTTU0N3gvTTU0OHggYm9hcmRzCgogICAgU2lnbmVkLW9mZi1ieTogS3VydCBNYWhhbiA8a21haGFuQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNmUzNzA5MWFmYzA3ZmRjYzE1NTkwMDkzZmQwNjZiMGNiNzM5OWY4NQpBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdW4gMjQgMTI6MTI6MTYgMjAwOCAtMDUwMAoKICAgIENvbGRGaXJlOiBGaXggd2FybmluZyBtZXNzYWdlcyBieSBwYXNzaW5nIGNvcnJlY3QgZGF0YSB0eXBlIGluIGJvYXJkLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDgxY2MzMjMyMmFjYjFiMzIyNWVlNDU2MDZjZWQ0OGUyYTE0ODI0ZGMKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTWF5IDI5IDEyOjIxOjU0IDIwMDggLTA1MDAKCiAgICBDb2xkRmlyZTogRml4IFVBUlQgYmF1ZHJhdGUgZm9ybXVsYQoKICAgIFRoZSBmb3JtdWxhICJjb3VudGVyID0gKHUzMikgKGdkLT5idXNfY2xrIC8gZ2QtPmJhdWRyYXRlKSAvIDMyIgogICAgY2FuIGdlbmVyYXRlIHRoZSB3cm9uZyBkaXZpc29yIGR1ZSB0byBpbnRlZ2VyIGRpdmlzaW9uIHRydW5jYXRpb24uCiAgICBSb3VuZCB0aGUgY2FsY3VsYXRlZCBkaXZpc29yIHZhbHVlIGJ5IGFkZGluZyAxLzIgdGhlIGJhdWRyYXRlCiAgICBiZWZvcmUgZGl2aWRpbmcgYnkgdGhlIGJhdWRyYXRlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCBiNTc4ZmI0NzE0NDRjYmQ3ZGIxMjg1NzAxYmE1MTM0M2JhYWY3M2ZiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDEwIDExOjM4OjI2IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBpbmNsdWRlIHNlcXVlbmNlIGluIDR4eF9wY2llLmMKCiAgICBUaGlzIHBhdGNoIG5vdyBtb3ZlcyBjb21tb24uaCB0byB0aGUgdG9wIG9mIHRoZSBpbmxjdWRlIGxpc3QuIFRoaXMKICAgIGlzIG5lZWRlZCBmb3IgYm9hcmRzIHdpdGggQ09ORklHX1BIWVNfNjRCSVQgc2V0IChlLmcuIGthdG1haSksIHNvIHRoYXQKICAgIHRoZSBwaHlzX3NpemVfdC9waHlzX2FkZHJfdCBhcmUgZGVmaW5lZCB0byB0aGUgY29ycmVjdCBzaXplIGluIHRoaXMKICAgIGRyaXZlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNjllMmM2ZDBkMTNkN2M4Y2YxNjEyYWMwOTBiZGM0YzU5YmE2ODU4ZQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEp1bCAxMSAxMzoxMDo1NiAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBGaXggY29tcGlsZSB3YXJuaW5nIGluIDQ0eF9zcGRfZGRyMi5jCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDZiZDkxMzg0OThjMmU0ZjRmMDkxOTAxMDhiOTkxNTdkMWIyMTQwYjUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBKdWwgMTEgMTE6NDA6MTMgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRml4IHNtYWxsIGtvcmF0IG1lcmdlIHByb2JsZW0KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMWQwNTU0NzM2YTBhMWRkNTk3MThhY2RhNjYwODcxY2U1NmI2OWUxOApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEp1bCAxMSAxMTozNDo1MiAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBTb21lIFJld29vZCBjbGVhbnVwcyAoY29kaW5nIHN0eWxlLCBsZWFkaW5nIHdoaXRlIHNwYWNlcykKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgM2E4MjExM2VkNTkzNGQ0OThmMjUwODA0NDFhODI2MWZjOTQ1NGIxNQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEp1bCAxMCAxNjozNzowOSAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBBZGQgNDYwU1ggVUlDIGRlZmluZXMKCiAgICBPbmx5IHRoZSByZWFsbHkgbmVlZGVkIG9uZXMgYXJlIGFkZGVkIChjYXNjYWRpbmcgYW5kIEVNQUMvTUFMKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMjYxNzNmYzZmNjA1MjFjMmE4MDcyZjY1MmY4NjM2MTdmYzExYmE5YQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIEp1biAzMCAxNDoxMTowNyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBDb250aW51ZSBjbGVhbnVwIG9mIHBwYzQ0MC5oCgogICAgVGhpcyBwYXRjaCBjb250aW51ZXMgdGhlIHBwYzQ0MC5oIGNsZWFudXAgYnkgcmVtb3Zpbmcgc29tZSBvZiB0aGUgdW51c2VkCiAgICBkZWZpbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkOTA1NmI3OTEzZWQ2YTIyOGQyZjMzNjcxZDkxNmVmZWRlZTU0MWRkCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gSnVuIDMwIDE0OjA1OjA1IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IENsZWFudXAgS2F0bWFpICYgWXVjY2EgUENJZSByZWdpc3RlciB1c2FnZQoKICAgIFRoaXMgcGF0Y2ggY2xlYW5zIHVwIHRoZSA0NDBTUGUgUENJZSByZWdpc3RlciB1c2FnZS4gTm93IG9ubHkgZGVmaW5lcwogICAgZnJvbSB0aGUgaW5jbHVkZS9hc20tcHBjLzR4eF9wY2llLmggYXJlIHVzZWQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDVkZTg1MTQwM2IwMTQ4OWI0OTNmYTgzMTM3YWQ5OTBiOGNlNjBkMWMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBKdW4gMjYgMTc6MzY6MzkgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogUmV3b3JrIDQ0MEdYIFVJQyBoYW5kbGluZwoKICAgIFRoaXMgcGF0Y2ggcmV3b3JrcyB0aGUgNDQwR1ggaW50ZXJydXB0IGhhbmRsaW5nIHNvIHRoYXQgdGhlIGNvbW1vbiA0eHgKICAgIGNvZGUgY2FuIGJlIHVzZWQuIFRoZSA0NDBHWCBpcyBhbiBleGNlcHRpb24gdG8gYWxsIG90aGVyIDR4eCB2YXJpYW50cwogICAgYnkgaGF2aW5nIHRoZSBjYXNjYWRpbmcgaW50ZXJydXB0IHZlY3RvcnMgbm90IG9uIFVJQzAgYnV0IG9uIGEgc3BlY2lhbAogICAgVUlDIG5hbWVkIFVJQ0IwIChVSUMgQmFzZSAwKS4gV2l0aCB0aGlzIHBhdGNoIG5vdywgVS1Cb290IHJlZmVyZW5jZXMKICAgIHRoZSA0NDBHWCBVSUNCMCB3aGVuIFVJQzAgaXMgc2VsZWN0ZWQuIEFuZCB0aGUgY29tbW9uIDR4eCBpbnRlcnJ1cHQKICAgIGhhbmRsaW5nIGlzIHNpbXBsZXIgd2l0aG91dCBhbnkgNDQwR1ggc3BlY2lhbCBjYXNlcy4KCiAgICBBbHNvIHNvbWUgYWRkaXRpb25hbCBjbGVhbnVwIHRvIGNwdS9wcGM0eHgvaW50ZXJydXB0LmMgaXMgZG9uZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZDE2MzFmZTFhMDViMDYzY2NhZjYyZWE4OTJhODg4N2I4Mjk4NDdkMQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEp1biAyNiAxMzo0MDo1NyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBDb25zb2xpZGF0ZSBQUEM0eHggVUlDIGRlZmluZXMKCiAgICBUaGlzIDJuZCBwYXRjaCBub3cgcmVtb3ZlcyBhbGwgVUlDIG1hc2sgYml0IGRlZmluaXRpb24uIFRoZXkgc2hvdWxkIGJlCiAgICBnZW5lcmF0ZWQgZnJvbSB0aGUgdmVjdG9ycyBieSB1c2luZyB0aGUgVUlDX01BU0soKSBtYWNybyBmcm9tIG5vdyBvbi4KICAgIFRoaXMgd2F5IG9ubHkgdGhlIHZlY3RvcnMgbmVlZCB0byBnZXQgZGVmaW5lZCBmb3IgbmV3IFBQQydzLgoKICAgIEFsc28gb25seSB0aGUgcmVhbGx5IHVzZWQgaW50ZXJydXB0IHZlY3RvcnMgYXJlIG5vdyBkZWZpbmVkLiBUaGlzIG1ha2VzCiAgICBkZWZpbml0aW9ucyBmb3IgbmV3IFBQQyB2ZXJzaW9ucyBlYXNpZXIgYW5kIGxlc3MgZXJyb3IgcHJvbmUuCgogICAgQW5vdGhlciBwYXJ0IG9mIHRoaXMgcGF0Y2ggaXMgdGhhdCB0aGUgNHh4IGVtYWMgZHJpdmVyIGdvdCBhIGxpdHRsZQogICAgY2xlYW51cCwgc2luY2Ugbm93IHRoZSB1c2FnZSBvZiB0aGUgaW50ZXJydXB0cyBpcyBjbGVhcmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0ZmIyNWEzZGIzYjM4MzkwOTRhYTlhYjc0OGVmZDdhOTU5MjQ2OTBiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgSnVuIDI1IDEwOjU5OjIyIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IENvbnNvbGlkYXRlIFBQQzR4eCBVSUMgZGVmaW5lcwoKICAgIFRoaXMgcGF0Y2ggaXMgdGhlIGZpcnN0IHN0ZXAgdG8gY29uc29saWRhdGUgdGhlIFVJQyByZWxhdGVkIGRlZmluZXMgaW4gdGhlCiAgICA0eHggaGVhZGVycy4gTW92ZSBoZWFkZXIgZnJvbSBhc20tcHBjL3BwYzR4eC1pbnR2ZWMuaCB0bwogICAgYXNtLXBwYy9wcGM0eHgtdWljLmggYXMgaXQgd2lsbCBob2xkIGFsbCBVSUMgcmVsYXRlZCBkZWZpbmVzIGluIHRoZSBuZXh0CiAgICBzdGVwcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgN2VlMjYxOWMyMGNjZWNkNTc5NjZkNzRkODQ0ZTYzMjllMTQxMjYxYwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEp1biAyNCAxNzoxODo1MCAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBDb25zb2xpZGF0ZSBQUEM0eHggRUJDIGRlZmluZXMKCiAgICBUaGlzIHBhdGNoIHJlbW92ZXMgYWxsIEVCQyByZWxhdGVkIGRlZmluZXMgZnJvbSB0aGUgUFBDNHh4IGhlYWRlcnMKICAgIHBwYzQwNS5oIGFuZCBwcGM0NDAuaCBhbmQgaW50cm9kdWNlcyBhIG5ldyBoZWFkZXIKCiAgICBpbmNsdWRlL2FzbS1wcGMvcHBjNHh4LWViYy5oCgogICAgd2l0aCBhbGwgdGhvc2UgZGVmaW5lcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZTMyMTgwMWJlZDVhNmQ4OTZkMjk4YzAwZmQyMDA0NmYwMzlkNWQ2NgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEp1bCAxMCAxMzo1Mjo0NCAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBSZW1vdmUgcmVkdW5kYW50IGZ0X2JvYXJkX3NldHVwKCkgZnVuY3Rpb25zIGZyb20gc29tZSA0eHggYm9hcmRzCgogICAgVGhpcyBwYXRjaCByZW1vdmVzIHNvbWUgZnRfYm9hcmRfc2V0dXAoKSBmdW5jdGlvbnMgZnJvbSBzb21lIDR4eCBib2FyZHMuCiAgICBUaGlzIGNhbiBiZSBkb25lIHNpbmNlIHdlIG5vdyBoYXZlIGEgZGVmYXVsdCB3ZWFrIGltcGxlbWVudGF0aW9uIGZvciB0aGlzCiAgICBpbiBjcHUvcHBjNHh4L2ZkdC5jLiBPbmx5IGJvYXJkIGluIG5lZWQgZm9yIGEgZGlmZmVyZW50L2N1c3RvbQogICAgaW1wbGVtZW50YXRpb24gbGlrZSBjYW55b25sYW5kcyBuZWVkIHRoZWlyIG93biB2ZXJzaW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwODI1MGViMmVkYmQ5NjUxNGQwNDk2MDJkOWUxMzQxMTBhYzMxODVmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDEwIDE1OjMyOjMyIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBtZXJnZSBwcm9ibGVtcyBpbiA0NHhfc3BkX2RkcjIuYwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxNzQwYzFiZjQwZTNjNmQwM2FjMTZjMjk5NDNmZGQ5ZmMxZTg3MDM4CkF1dGhvcjogR3JhbnQgRXJpY2tzb24gPGdlcmlja3NvbkBudW92YXRpb25zLmNvbT4KRGF0ZToJVHVlIEp1bCA4IDA4OjM1OjAwIDIwMDggLTA3MDAKCiAgICBwcGM0eHg6IEFkZCBNSUkgbW9kZSBzdXBwb3J0IHRvIHRoZSBFTUFDIFJHTUlJIEJyaWRnZQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBwbGFjaW5nIHRoZSBSR01JSSBicmlkZ2Ugb24gdGhlCiAgICBQUEM0MDVFWChyKSBpbnRvIE1JSS9HTUlJIG1vZGUgYW5kIGFsbG93cyBhIGJvYXJkLXNwZWNpZmljCiAgICBjb25maWd1cmF0aW9uIHRvIHNwZWNpZnkgdGhlIGJyaWRnZSBtb2RlIGF0IGNvbXBpbGUtdGltZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDJlMjA1MDg0MmU3MzFjODIzY2U4ZDQxZmIwYzE1NTc5ZWI3MGNlZDkKQXV0aG9yOiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgpEYXRlOglXZWQgSnVsIDkgMTY6NDY6MzUgMjAwOCAtMDcwMAoKICAgIHBwYzR4eDogQWRkIE1uZW1vbmljcyBmb3IgQU1DQy9JQk0gRERSMiBTRFJBTSBDb250cm9sbGVyCgogICAgVGhpcyBwYXRjaCBjb21wbGV0ZXMgdGhlIHByZXByb2Nlc3NvciBtbmVvbWljcyBmb3IgdGhlIElCTSBERFIyIFNEUkFNCiAgICBjb250cm9sbGVyIHJlZ2lzdGVycyAoTU9EVCBhbmQgSU5JVFBMUikgdXNlZCBieSB0aGUKICAgIFBvd2VyUEM0MDVFWChyKS4gVGhlIE1NT0RFIGFuZCBNRU1PREUgcmVnaXN0ZXJzIGFyZSB1bmlmaWVkIHdpdGggdGhlaXIKICAgIHBlZXIgdmFsdWVzIHVzZWQgZm9yIHRoZSBJTklUUExSIE1SIGFuZCBFTVIgcmVnaXN0ZXJzLAogICAgcmVzcGVjdGl2ZWx5LiBGaW5hbGx5LCBhIHNwZWxsaW5nIHR5cG8gaXMgY29ycmVjdCAoTUFOVUVMIHRvIE1BTlVBTCkuCgogICAgV2l0aCB0aGVzZSBtbmVtb25pY3MgaW4gcGxhY2UsIHRoZSBDRkdfU0RSQU0wXyogbWFnaWMgbnVtYmVycyBmb3IKICAgIEtpbGF1ZWEgYXJlIHJlcGxhY2VkIGJ5IGVxdWl2YWxlbnQgbW5lbW9uaWNzIHRvIG1ha2UgaXQgZWFzaWVyIHRvCiAgICBjb21wYXJlIGFuZCBjb250cmFzdCBvdGhlciA0MDVFWChyKS1iYXNlZCBib2FyZHMgKGUuZy4gZHVyaW5nIGJvYXJkCiAgICBicmluZy11cCkuCgogICAgRmluYWxseSwgdW5pZmllZCB0aGUgU0RSQU0gY29udHJvbGxlciByZWdpc3RlciBkdW1wIHJvdXRpbmUgc3VjaCB0aGF0CiAgICBpdCBjYW4gYmUgdXNlZCBhY3Jvc3MgYWxsIHByb2Nlc3NvciB2YXJpYW50cyB0aGF0IHV0aWxpemUgdGhlIElCTSBERFIyCiAgICBTRFJBTSBjb250cm9sbGVyIGNvcmUuIEl0IHByb2R1Y2VzIG91dHB1dCBvZiB0aGUgZm9ybToKCglQUEM0eHggSUJNIEREUjIgUmVnaXN0ZXIgRHVtcDoKCQkuLi4KCQlTRFJBTV9NQjBDRls0MF0gPSAweDAwMDA2NzAxCgkJLi4uCgogICAgd2hpY2ggaXMgJzxtbmVtb25pYz5bPERDUiAjPl0gPSA8dmFsdWU+Jy4gVGhlIERDUiBudW1iZXIgaXMgaW5jbHVkZWQKICAgIHNpbmNlIGl0IGlzIG5vdCB1bmNvbW1vbiB0aGF0IHRoZSBEQ1IgdmFsdWVzIGluIGhlYWRlciBmaWxlcyBnZXQgbWl4ZWQKICAgIHVwIGFuZCBpdCBoZWxwcyB0byB2YWxpZGF0ZSwgYXQgYSBnbGFuY2UsIHRoZXkgbWF0Y2ggd2hhdCBpcyBwcmludGVkCiAgICBpbiB0aGUgdXNlciBtYW51YWwuCgogICAgVGVzdGVkIG9uOgogICAgICBBTUNDIEtpbGF1ZWEvSGFsZWFrYWxhOgogICAgICAtIE5GUyBMaW51eCBCb290OiBQQVNTRUQKICAgICAgLSBOQU5EIExpbnV4IEJvb3Q6IFBBU1NFRAoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IEVyaWNrc29uIDxnZXJpY2tzb25AbnVvdmF0aW9ucy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYWQ3MzgyZDgyODk4MmU5YzFiYWZjNDMxM2VmMWI2NjZmNjE0NWY1OApBdXRob3I6IEdyYW50IEVyaWNrc29uIDxnZXJpY2tzb25AbnVvdmF0aW9ucy5jb20+CkRhdGU6CVdlZCBKdWwgOSAxNjozMTo1OSAyMDA4IC0wNzAwCgogICAgcHBjNHh4OiBBZGQgQU1DQy9JQk0gRERSMiBTRFJBTSBFQ0MgRmllbGQgTW5lbW9uaWNzCgogICAgQWRkIGFkZGl0aW9uYWwgRERSMiBTRFJBTSBtZW1vcnkgY29udHJvbGxlciBEQ1IgbW5lb21uaWNzLCBjb25kaXRpb24KICAgIHJldmlzaW9uIElEIERDUiBiYXNlZCBvbiA0MDVFWCwgYW5kIGFkZCBmaWVsZCBtbmVtb25pY3MgZm9yIGJ1cyBlcnJvcgogICAgc3RhdHVzIGFuZCBFQ0MgZXJyb3Igc3RhdHVzIHJlZ2lzdGVycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDEwMzIwMTczMWJkOGU4NTQwNGQwZjUxYTViNGU4YWJkMTRjMGI2YzYKQXV0aG9yOiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgpEYXRlOglXZWQgSnVsIDkgMTY6MzE6MzYgMjAwOCAtMDcwMAoKICAgIHBwYzR4eDogQWRkIFNEUjBfU1JTVCBNbmVtb25pY3MgZm9yIHRoZSA0MDVFWChyKQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBiaXQgZmllbGQgbW5lbW9uaWNzIGZvciB0aGUgNDA1RVgocikgU0RSMF9TUlNUIHNvZnQgcmVzZXQgcmVnaXN0ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgRXJpY2tzb24gPGdlcmlja3NvbkBudW92YXRpb25zLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1YjQ1N2QwMDczMGQ0YWEwYzY0NTBkMjFhOTEwNDcyM2U2MDZmYjk4CkF1dGhvcjogR3JhbnQgRXJpY2tzb24gPGdlcmlja3NvbkBudW92YXRpb25zLmNvbT4KRGF0ZToJV2VkIEp1bCA5IDExOjU1OjQ2IDIwMDggLTA3MDAKCiAgICBQUEM0eHg6IENvcnJlY3QgU0RSQU1fTUNTVEFUIGZvciBQUEM0MDVFWChyKQoKICAgIFdoaWxlIHRoZSBQb3dlclBDIDQwNUVYKHIpIHNoYXJlcyBpbiBjb21tb24gdGhlIEFNQ0MvSUJNIEREUjIgU0RSQU0KICAgIGNvbnRyb2xsZXIgY29yZSBhbHNvIHVzZWQgaW4gdGhlIDQ0MFNQLCA0NDBTUGUsIDQ2MEVYLCBhbmQgNDYwR1QsIGluCiAgICB0aGUgNDA1RVgociksIFNEUkFNX01DU1RBVCBoYXMgYSBkaWZmZXJlbnQgRENSIHZhbHVlLgoKICAgIEl0cyBwcmVzZW50IHZhbHVlIG9uIHRoZSA0MDVFWChyKSBjYXVzZXMgYSByZWFkIGJhY2sgb2YgMHhGRkZGRkZGRgogICAgd2hpY2ggY2F1c2VzIFNEUkFNIGluaXRpYWxpemF0aW9uIHRvIHBlcmlvZGljYWxseSBmYWlsIHNpbmNlIGl0IGNhbgogICAgcHJlbWF0dXJlbHkgaW5kaWNhdGUgU0RSQU0gcmVhZHkgc3RhdHVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IEVyaWNrc29uIDxnZXJpY2tzb25AbnVvdmF0aW9ucy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMGNlNWM4Njc1YmIyYzYxZjFkNzFmYjk3ZjBiYmU4MjI2NjNmYjkzZApBdXRob3I6IEZlbmcgS2FuIDxma2FuQGFtY2MuY29tPgpEYXRlOglUdWUgSnVsIDggMjI6NDg6NDIgMjAwOCAtMDcwMAoKICAgIHBwYzR4eDogSW5pdGlhbCBmcmFtZXdvcmsgb2YgdGhlIEFNQ0MgUFBDNDYwU1ggcmVkd29vZCByZWZlcmVuY2UgYm9hcmQuCgogICAgQWRkIEFNQ0MgUmVkd29vZCByZWZlcmVuY2UgYm9hcmQgdGhhdCB1c2VzIHRoZSBsYXRlc3QKICAgIFBQQyA0NjQgQ1BVIHByb2Nlc3NvciBjb21iaW5lZCB3aXRoIGEgcmljaCBtaXggb2YgcGVyaXBoZXJhbAogICAgY29udHJvbGxlcnMuIFRoZSBib2FyZCB3aWxsIHN1cHBvcnQgUENJZSwgbXV0aXBsZSBHaWcgZXRoZXJuZXQKICAgIHBvcnRzLCBhZHZhbmNlZCBoYXJkd2FyZSBSQUlEIGFzc2lzdGFuY2UgYW5kIElFRUUgMTU4OC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBGZW5nIEthbiA8ZmthbkBhbWNjLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5NmU1ZmMwZTZhMTg2MWQwZmVhNGVmYTNjZDM3NmRmOTVhNWIxYjg5CkF1dGhvcjogRmVuZyBLYW4gPGZrYW5AYW1jYy5jb20+CkRhdGU6CVR1ZSBKdWwgOCAyMjo0ODowNyAyMDA4IC0wNzAwCgogICAgcHBjNHh4OiBBZGQgaW5pdGlhbCA0NjBTWCByZWZlcmVuY2UgYm9hcmQgKHJlZHdvb2QpIGNvbmZpZyBmaWxlIGFuZCBkZWZpbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEZlbmcgS2FuIDxma2FuQGFtY2MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDdkMzA3OTM2ODVlZmNhZGExODM4OTFjNzhmYzg5MmU2YzliYTUwYzcKQXV0aG9yOiBGZW5nIEthbiA8ZmthbkBhbWNjLmNvbT4KRGF0ZToJVHVlIEp1bCA4IDIyOjQ3OjMxIDIwMDggLTA3MDAKCiAgICBwcGM0eHg6IEFkZCBpbml0aWFsIDQ2MFNYIGRlZmluZXMgZm9yIHRoZSBjcHUvcHBjNHh4IGRpcmVjdG9yeS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBGZW5nIEthbiA8ZmthbkBhbWNjLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5YjU1YTI1MzY5MTlmNGRlMWJiMTA0NGU2ZWI4MjYyYzJmNTNiYzk2CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIEp1bCAxMSAwMToxNjowMCAyMDA4ICswMjAwCgogICAgRml4IHNvbWUgbW9yZSBwcmludCgpIGZvcm1hdCBlcnJvcnMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBmZGQ3MGQxOTIxYjg3Mjg3ZDlhOTlkMWJlOTliYzM1MjI2YzJiNDEyCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVGh1IEp1bCAxMCAyMDo1Nzo1NCAyMDA4ICswMjAwCgogICAgTUFLRUFMTDogcmVtb3ZlIGR1cGxpY2F0ZWQgYXQ5MSBmcm9tIEFSTTkgbGlzdCBhbmQgYWRkIExJU1RfYXQ5MSB0byBhcm0KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGM2NDU3ZTNiOGJjNzlhOTczODFjZjdkZWZmYTA4ZjdjNWEyNGY4NmMKQXV0aG9yOiBTZXJnZXkgTGFwaW4gPHNsYXBpbkBvc3NmYW5zLm9yZz4KRGF0ZToJVGh1IEp1biA1IDExOjA2OjI5IDIwMDggKzA0MDAKCiAgICBEYXRhRmxhc2ggQVQ0NURCMDIxIHN1cHBvcnQKCiAgICBTb21lIGJvYXJkcyBiYXNlZCBvbiBBVDkxU0FNOTI2WC1FSyB1c2Ugc21hbGxlciBERiBjaGlwcyB0byBrZWVwCiAgICBib290c3RyYXAsIHUtYm9vdCBhbmQgaXRzIGVudmlyb25tZW50LCB1c2luZyBOQU5EIG9yIG90aGVyIGV4dGVybmFsCiAgICBzdG9yYWdlIGZvciBrZXJuZWwgYW5kIHJvb3Rmcy4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yCiAgICBzbWFsbCAxMDI0eDI2MyBjaGlwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdleSBMYXBpbiA8c2xhcGluQG9zc2ZhbnMub3JnPgoKY29tbWl0IDQxMDlkZjZmNzVmYzAwYWI3ZGE1NmQyODZiYTUwMTQ5YTBkMTZhNjkKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVsIDEwIDE0OjAwOjE1IDIwMDggLTA1MDAKCiAgICBzaWxlbmNlIG1pc2MgcHJpbnRmIGZvcm1hdHRpbmcgY29tcGlsZXIgd2FybmluZ3MKCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDNkNzFjODFhOWJiMDNmODY2YTFlOThkYTk2MzYzZWYzZjQ2Yzc2YjMKQXV0aG9yOiBNYXJrdXMgS2xvdHpiw7xjaGVyIDxta0BkZW54LmRlPgpEYXRlOglUaHUgSnVsIDEwIDE0OjQ3OjA5IDIwMDggKzAyMDAKCiAgICBVU0I6IHNodXRkb3duIFVTQiBiZWZvcmUgYm9vdGluZwoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWxseSBzZXJpb3VzIGlzc3VlIHJlbGF0ZWQgdG8gVVNCIHdoaWNoIHdhcwogICAgZGlzY291dmVyZWQgYnkgTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+IGFuZCBmaXhlZCBmb3IKICAgIEFSTTkyMFQuIE1hcnRpbiB3cm90ZToKCiAgICAgIFR1cm4gb2ZmIFVTQiB0byBwcmV2ZW50IHRoZSBob3N0IGNvbnRyb2xsZXIgZnJvbSB3cml0aW5nIHRvIHRoZQogICAgICBTRFJBTSB3aGlsZSBMaW51eCBpcyBib290aW5nLiBUaGlzIGNvdWxkIGhhcHBlbiwgYmVjYXVzZSB0aGUgSENDQQogICAgICAoSG9zdCBDb250cm9sbGVyIENvbW11bmljYXRpb24gQXJlYSkgbGllcyB3aXRoaW4gdGhlIFNEUkFNIGFuZCB0aGUKICAgICAgaG9zdCBjb250cm9sbGVyIHdyaXRlcyBjb250aW5vdXNseSB0byB0aGlzIGFyZWEgKGFzIGJ1c21hc3RlciEpLCBmb3IKICAgICAgZXhhbXBsZSB0byBpbmNyZWFzZSB0aGUgSGNjYUZyYW1lTnVtYmVyIHZhcmlhYmxlLCB3aGljaCBoYXBwZW5zCiAgICAgIGV2ZXJ5IDEgbXMuCgogICAgVGhpcyBpcyBhIHNsaWdodGx5IG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIHBhdGNoIGluIG9yZGVyIHRvIHNodXRkb3duCiAgICBVU0Igd2hlbiBib290aW5nIG9uIGFsbCBhcmNoaXRlY3R1cmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgZjMxYzQ5ZGIyYTVlMDc2ZjQxNWMwNzg1ZWIzN2Y2N2YyZmFhNWZjOApBdXRob3I6IE1hcnRoYSBNYXJ4IDxtbWFyeEBzaWxpY29udGt4LmNvbT4KRGF0ZToJVGh1IE1heSAyOSAxNDoyMzoyNSAyMDA4IC0wNDAwCgogICAgQ29uZmlndXJhdGlvbiBjaGFuZ2VzIGZvciBBRFM1MTIxIFJldiAzCgogICAgQURTNTEyMSBSZXYgMyBib2FyZCBpcyBub3cgdGhlIGRlZmF1bHQgY29uZmlnCgogICAgY29uZmlnIHRhcmdldHMgYXJlIG5vdwoKICAgIGFkczUxMjFfY29uZmlnCglSZXYgMyBib2FyZCB3aXRoCglQQ0kKCU00MVQ2MiBvbiBib2FyZCBSVEMKCTUxMk1CIERSQU0KCiAgICBhZHM1MTIxX3JldjJfY29uZmlnCglSZXYgMiBib2FyZCB3aXRoCglObyBQQ0kKCTI1Nk1CIERSQU0KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aGEgTWFyeCA8bW1hcnhAc2lsaWNvbnRreC5jb20+CiAgICBBY2tlZC1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgogICAgQWNrZWQtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDE2YmVlN2IwZGMyOTRlZTAxY2EyNDM0YWExZGQzYmQ3MTdhNjk2MTUKQXV0aG9yOiBNYXJ0aGEgTWFyeCA8bW1hcnhAc2lsaWNvbnRreC5jb20+CkRhdGU6CVRodSBNYXkgMjkgMTU6Mzc6MjEgMjAwOCAtMDQwMAoKICAgIENvbnNvbGlkYXRlIEFEUzUxMjEgSU8gUGluIGNvbmZpZ3VyYXRpb24KCiAgICBDb25zb2xpZGF0ZSBBRFM1MTIxIElPIFBpbiBjb25maWd1cmF0aW9uIHRvIG9uZSBmaWxlCiAgICBib2FyZC9hZHM1MTIxL2lvcGluLmMuCgogICAgUmVtb3ZlIHBpbiBjb25maWcgZnJvbSBjcHUvbXBjNTEyeC9mZWMuYwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRoYSBNYXJ4IDxtbWFyeEBzaWxpY29udGt4LmNvbT4KICAgIEFja2VkLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CiAgICBBY2tlZC1ieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDQ2OTJiMGJhODNiN2I0NTRiYmQ5MmJhZDFmNGJlZmU2ZTE2NTdiNwpBdXRob3I6IENocmlzdGlhbiBFZ2dlcnMgPGNocmlzdGlhbkBwMjQwMC53Z25ldHoueHg+CkRhdGU6CUZyaSBKdW4gMjcgMTk6NDY6NTEgMjAwOCArMDIwMAoKICAgIEZpeCAidXNiIHBhcnQiIGNvbW1hbmQKCiAgICBPbmx5IHByaW50IHBhcnRpdGlvbiBmb3Igc2VsZWN0ZWQgZGV2aWNlIGlmIHVzZXIgc3VwcGxpZWQgdGhlIDxkZXY+CiAgICBhcmcgd2l0aCB0aGUgInVzYiBwYXJ0IFtkZXZdIiBjb21tYW5kLgoKICAgIFNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBFZ2dlcnMgPGNlZ2dlcnNAZ214LmRlPgogICAgQWNrZWQtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgY2M4M2IyNzIxN2Y3MzgwMDQxZmVhMzg2ZGRiNmQ2ZDliMjYxNjE3ZApBdXRob3I6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBnbnVtb25rcy5vcmc+CkRhdGU6CU1vbiBKdWwgNyAwMDo1ODowNSAyMDA4ICswODAwCgogICAgZml4IFVTQiBkZXZpY2VzIHdpdGggbXVsdGlwbGUgY29uZmlndXJhdGlvbnMKCiAgICBUaGlzIHBhdGNoIGZpeGVzIGJ1Z3MgaW4gdXNiZGNvcmUqLmMgcmVsYXRlZCB0byB0aGUgdXNlIG9mIGRldmljZXMKICAgIHdpdGggbXVsdGlwbGUgY29uZmlndXJhdGlvbnMuCgogICAgVGhlIG9yaWdpbmFsIGNvZGUgbWFkZSBtaXN0YWtlcyBhYm91dCB0aGUgbWVhbmluZyBvZiBjb25maWd1cmF0aW9uIHZhbHVlIGFuZAogICAgY29uZmlndXJhdGlvbiBpbmRleCwgYW5kIHRoZSByZXN1bHRpbmcgb2ZmLWJ5LW9uZSBlcnJvcnMgcmVzdWx0ZWQgaW46CgogICAgKiBTRVRfQ09ORklHVVJBVElPTiBhbHdheXMgc2VsZWN0ZWQgdGhlIGZpcnN0IGNvbmZpZ3VyYXRpb24sIG5vIG1hdHRlciB3aGF0CiAgICAgIHdWYWx1ZSBpcyBiZWluZyBwYXNzZWQuCiAgICAqIEdFVF9ERVNDUklQVE9SL0NPTkZJR1VSQVRJT04gYWx3YXlzIHJldHVybmVkIHRoZSBkZXNjcmlwdG9yIGZvciB0aGUgZmlyc3QKICAgICAgY29uZmlndXJhdGlvbiAoaW5kZXggMCkuCgogICAgU2lnbmVkLW9mZi1ieTogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KICAgIEFja2VkLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgoKY29tbWl0IDA2YzUzYmVhZTFhNzI2ZTcwNzk3MWM1NTU2MTNmMDliMjcwYTI0NjEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDEwIDEzOjE2OjA5IDIwMDggKzAyMDAKCiAgICBGaXggc29tZSBtb3JlIHByaW50KCkgZm9ybWF0IGVycm9ycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGQ0YjVmM2ZhMDAxMjI4ZDc2ZTJjMzM4MGNlZGFkZjgwNGI4MDJjMmEKQXV0aG9yOiBDaHJpc3RpYW4gRWdnZXJzIDxjaHJpc3RpYW5AcDI0MDAud2duZXR6Lnh4PgpEYXRlOglGcmkgSnVuIDI3IDE5OjQ2OjUxIDIwMDggKzAyMDAKCiAgICBGaXggInVzYiBwYXJ0IiBjb21tYW5kCgogICAgT25seSBwcmludCBwYXJ0aXRpb24gZm9yIHNlbGVjdGVkIGRldmljZSBpZiB1c2VyIHN1cHBsaWVkIHRoZSA8ZGV2PgogICAgYXJnIHdpdGggdGhlICJ1c2IgcGFydCBbZGV2XSIgY29tbWFuZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gRWdnZXJzIDxjZWdnZXJzQGdteC5kZT4KICAgIEFja2VkLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgoKY29tbWl0IGU3M2I1MjEyZTA0NjNhM2RiMGFmMGE1Yzk1Yzc1YmZiNzYyY2E5NzMKQXV0aG9yOiBIYXJhbGQgV2VsdGUgPGxhZm9yZ2VAZ251bW9ua3Mub3JnPgpEYXRlOglNb24gSnVsIDcgMDA6NTg6MDUgMjAwOCArMDgwMAoKICAgIGZpeCBVU0IgZGV2aWNlcyB3aXRoIG11bHRpcGxlIGNvbmZpZ3VyYXRpb25zCgogICAgVGhpcyBwYXRjaCBmaXhlcyBidWdzIGluIHVzYmRjb3JlKi5jIHJlbGF0ZWQgdG8gdGhlIHVzZSBvZiBkZXZpY2VzCiAgICB3aXRoIG11bHRpcGxlIGNvbmZpZ3VyYXRpb25zLgoKICAgIFRoZSBvcmlnaW5hbCBjb2RlIG1hZGUgbWlzdGFrZXMgYWJvdXQgdGhlIG1lYW5pbmcgb2YgY29uZmlndXJhdGlvbiB2YWx1ZSBhbmQKICAgIGNvbmZpZ3VyYXRpb24gaW5kZXgsIGFuZCB0aGUgcmVzdWx0aW5nIG9mZi1ieS1vbmUgZXJyb3JzIHJlc3VsdGVkIGluOgoKICAgICogU0VUX0NPTkZJR1VSQVRJT04gYWx3YXlzIHNlbGVjdGVkIHRoZSBmaXJzdCBjb25maWd1cmF0aW9uLCBubyBtYXR0ZXIgd2hhdAogICAgICB3VmFsdWUgaXMgYmVpbmcgcGFzc2VkLgogICAgKiBHRVRfREVTQ1JJUFRPUi9DT05GSUdVUkFUSU9OIGFsd2F5cyByZXR1cm5lZCB0aGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpcnN0CiAgICAgIGNvbmZpZ3VyYXRpb24gKGluZGV4IDApLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBvcGVubW9rby5vcmc+CiAgICBBY2tlZC1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KCmNvbW1pdCBlODcwNjkwYmRjYTE1NDk0M2VjYWRkNTIxMmQyZDU5YzFiOWQzOTFiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDEwIDEwOjEwOjU0IDIwMDggKzAyMDAKCiAgICBNVEQvTkFORDogRml4IHByaW50ZiBmb3JtYXQgd2FybmluZyBpbiBuYW5kIGNvZGUKCiAgICBUaGlzIHBhdGNoIGZpeGVzIE5BTkQgcmVsYXRlZCBwcmludGYgZm9ybWF0IHdhcm5pbmcuIFRob3NlIHdhcm5pbmdzIGFyZQogICAgbm93IHZpc2libGUgc2luY2UgcGF0Y2ggZGM0YjBiMzhkNGFhZGYwODgyNmY2YzMxMjcwZjFlZWNkMjc5NjRmZAogICAgW0ZpeCBwcmludGYgZXJyb3JzLl0gYnkgQW5kcmV3IEtsb3NzbmVyIGhhcyBiZWVuIGFwcGxpZWQuIFRoYW5rcywgdGhpcyBpcwogICAgcmVhbGx5IGhlbHBmdWwuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDEwOTQzYzlhZmEyNTY5NGJkOTk5OTQ2MWY0ZTllNTBjZTIyZmZmMmIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBKdWwgMTAgMTA6MDA6NDUgMjAwOCArMDIwMAoKICAgIHJ0YzogRml4IHByaW50ZiBmb3JtYXQgd2FybmluZyBpbiBtNDF0NjAuYwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkYzFkYTQyZjgxNGNkNzFlNjc1NmMyY2Y2MmFmMWFkYTFkMDU4MWZiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgSnVsIDggMTI6MDE6NDcgMjAwOCArMDIwMAoKICAgIHBjaTogTW92ZSBQQ0kgZGV2aWNlIGNvbmZpZ3VyYXRpb24gY2hlY2sgaW50byBhIHNlcGFyYXRlIHdlYWsgZnVuY3Rpb24KCiAgICBUaGlzIHBhdGNoIG1vdmVzIHRoZSBjaGVjaywgaWYgYSBkZXZpY2Ugc2hvdWxkIGJlIHNraXBwZWQgaW4gUENJIFBOUAogICAgY29uZmlndXJhdGlvbiBpbnRvIHRoZSBmdW5jdGlvbiBwY2lfc2tpcF9kZXYoKS4gVGhpcyBmdW5jdGlvbiBpcyBkZWZpbmVkCiAgICBhcyB3ZWFrIHNvIHRoYXQgaXQgY2FuIGJlIG92ZXJ3cml0dGVuIGJ5IGEgcGxhdGZvcm0gc3BlY2lmaWMgb25lIGlmCiAgICBuZWVkZWQuIFRoZSBjaGVjayBpZiB0aGUgZGV2aWNlIHNob3VsZCBnZXQgcHJpbnRlZCBpbiB0aGUgUENJIHN1bW1hcnkgdXBvbgogICAgYm9vdHVwICh3aGVuIENPTkZJR19QQ0lfU0NBTl9TSE9XIGlzIGRlZmluZWQpIGlzIG1vdmVkIHRvIHRoZSBmdW5jdGlvbgogICAgcGNpX3ByaW50X2RldigpIHdoaWNoIGlzIGFsc28gZGVmaW5lZCBhcyB3ZWFrIHRvby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYjAwMjE0NGUxZGMyMTM3NGIxZWY1MjgxZmU2YjVkMDE0YWY5NjY1MApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEp1bCAxMCAwOTo1ODowNiAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBGaXggcHJpbnRmIGZvcm1hdCB3YXJuaW5ncyBub3cgdmlzaWJsZSB3aXRoIHRoZSB1cGRhdGVkIGZvcm1hdCBjaGVjawoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgcHBjNHh4IHJlbGF0ZWQgcHJpbnRmIGZvcm1hdCB3YXJuaW5nLiBUaG9zZSB3YXJuaW5ncyBhcmUKICAgIG5vdyB2aXNpYmxlIHNpbmNlIHBhdGNoIGRjNGIwYjM4ZDRhYWRmMDg4MjZmNmMzMTI3MGYxZWVjZDI3OTY0ZmQKICAgIFtGaXggcHJpbnRmIGVycm9ycy5dIGJ5IEFuZHJldyBLbG9zc25lciBoYXMgYmVlbiBhcHBsaWVkLiBUaGFua3MsIHRoaXMgaXMKICAgIHJlYWxseSBoZWxwZnVsLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1ZDgxMmI4YjRhZDk2NjdjNzdhNWJmOTJiNGJhODE2OTlhYmM5ZmMzCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgSnVsIDkgMTc6MzM6NTcgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRW5hYmxlIHN1cHBvcnQgZm9yID4gMkdCIFNEUkFNIG9uIEFNQ0MgS2F0bWFpCgogICAgTmV3ZXIgUFBDJ3MgbGlrZSA0NDBTUGUsIDQ2MEVYL0dUIGNhbiBiZSBlcXVpcHBlZCB3aXRoIG1vcmUgdGhhbiAyR0Igb2YgU0RSQU0uCiAgICBUbyBzdXBwb3J0IHN1Y2ggY29uZmlndXJhdGlvbnMsIHdlICJvbmx5IiBtYXAgdGhlIGZpcnN0IDJHQiB2aWEgdGhlIFRMQidzLiBXZQogICAgbmVlZCBzb21lIGZyZWUgdmlydHVhbCBhZGRyZXNzIHNwYWNlIGZvciB0aGUgcmVtYWluaW5nIHBlcmlwaGVyYWxzIGxpa2UsIFNvQwogICAgZGV2aWNlcywgRkxBU0ggZXRjLgoKICAgIE5vdGUgdGhhdCBFQ0MgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgb24gY29uZmlndXJhdGlvbnMgd2l0aCBtb3JlIHRoYW4gMkdCCiAgICBTRFJBTS4gVGhpcyBpcyBiZWNhdXNlIHdlIG9ubHkgbWFwIHRoZSBmaXJzdCAyR0Igb24gc3VjaCBzeXN0ZW1zLCBhbmQgdGhlcmVmb3JlCiAgICB0aGUgRUNDIHBhcml0eSBieXRlIG9mIHRoZSByZW1haW5pbmcgYXJlYSBjYW4ndCBiZSB3cml0dGVuLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjZjFjMmVkOTFkZjI2OTAzYjk1Njk0OGYzN2Y4MmRlOWUxMTU4YTg5CkF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CkRhdGU6CVNhdCBKdW4gMTQgMTc6MDI6NDkgMjAwOCAtMDQwMAoKICAgIHBwYzR4eDogUmVtb3ZlIGltcGxlbWVudGF0aW9uIG9mIHRlc3RkcmFtKCkgZnJvbSBLb3JhdCBib2FyZCBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNDdjZTRhMjhjY2ZjZmI4MDNhYTY4ZDNkNDUwNWE4ZGUwNTZhOGE1ZQpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgpEYXRlOglTYXQgSnVuIDE0IDE2OjUzOjAyIDIwMDggLTA0MDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBhbmQgYWRkIEZEVCB0byBLb3JhdCBib2FyZCBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNDE4OGYwNDkxODg2YjNiNDg2MTY0ZTgxOWMwYTgzZmRiOTdlZmQ3ZApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVRodSBKdWwgMTAgMDE6MTM6MzAgMjAwOCArMDIwMAoKICAgIE1pbm9yIGNvZGluZyBzdHlsZSBjbGVhbnVwOyB1cGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA4OTE1ZjExODljMWQyOWQ4YmU3ZjRkZTMyNTcwMmQ5MGE4OTg4MjE5CkF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CkRhdGU6CVdlZCBKdWwgOSAxNzo1MDo0NSAyMDA4IC0wNDAwCgogICAgZTEwMDA6IGFkZCBzdXBwb3J0IGZvciA4MjU0NUdNIDY0Yml0IFBDSS1YIGNvcHBlciB2YXJpYW50CgogICAgVGhpcyBQQ0ktWCBlMTAwMCB2YXJpYW50IHdvcmtzIGJ5IGp1c3QgYWRkaW5nIGluIHRoZSBjb3JyZWN0CiAgICBQQ0kgSURzIGluIHRoZSBhcHByb3ByaWF0ZSBwbGFjZXMuCgogICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Cgpjb21taXQgMjFhZTZjYTAzMTVhZmRiYzY1ZGMzZTk1ZmZkNTc2M2U2NzczZDAzMApBdXRob3I6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KRGF0ZToJV2VkIEp1bCA5IDEyOjM0OjExIDIwMDggKzAwMDAKCiAgICBTUEFSQzogQnVpbGQgZXJyb3IgZml4CgogICAgKGludHJvZHVjZWQgYnkgY29tbWl0IDM5MWZkOTNhYjIzZTE1YWIzZGQ1OGE1NGY1YjYwOTAyNDAwOWMzNzgpCgogICAgVGhpcyBwYXRjaCBtYWtlcyBTUEFSQyB0YXJnZXRzIGJ1aWxkIGFnYWluLiBJdCBpcyBjYXVzZWQgYnkKICAgIHBoeXNfYWRkcl90IGFuZCBwaHlzX3NpemVfdCBiZWluZyBkZWZpbmVkIGluIHRoZSB3cm9uZyBoZWFkZXIKICAgIGZpbGUuIGluY2x1ZGUvbG1iLmggbmVlZCB0aG9zZSB0eXBlZGVmcyB0byBidWlsZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+Cgpjb21taXQgMTFjY2MzM2ZhMjFhY2NlMTA4ZjZiNGE2OTM2ZTMyNzFhZjkwNGM2NApBdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KRGF0ZToJV2VkIEp1bCA5IDA4OjE3OjE1IDIwMDggKzAyMDAKCiAgICBNYW55IHNwZWxsaW5nIGZpeGVzIGluIFJFQURNRS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+Cgpjb21taXQgZGJhYjA2OTFkMjUzMzU2MGY3ZTkxYjkyYWU4NDQwNDZhOWFkMWRmMwpBdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KRGF0ZToJV2VkIEp1bCA5IDA4OjE3OjA2IDIwMDggKzAyMDAKCiAgICBNaW5vciBzcGVsbGluZyBmaXggaW4gY29tbWVudC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+Cgpjb21taXQgODkxMzRlYTFmNjcyMDhmZDMxNjBiZGJiMGI5ZWFhYjRlYWI5ODQ4NApBdXRob3I6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgpEYXRlOglUdWUgSnVsIDggMTQ6NTQ6NTggMjAwOCAtMDQwMAoKICAgIFJvdW5kIHRoZSBzZXJpYWwgcG9ydCBjbG9jayBkaXZpc29yIHZhbHVlIHJldHVybmVkIGJ5IGNhbGNfZGl2aXNvcigpCgogICAgUm91bmQgdGhlIHNlcmlhbCBwb3J0IGNsb2NrIGRpdmlzb3IgdmFsdWUgcmV0dXJuZWQgYnkKICAgIGNhbGNfZGl2aXNvcigpLgoKICAgIFNpZ25lZC1vZmYtYnk6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgogICAgU2lnbmVkLW9mZi1ieTogSm9obiBSb2JlcnRzIDxqb2huLnJvYmVydHNAcHdhdi5jb20+Cgpjb21taXQgOWQyZTM5NDdiMjk0NGU1YmI4NWI0MzM1NTMzZjhjOTNjNTg0NDVmZQpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVsIDkgMTc6NDc6NTIgMjAwOCAtMDUwMAoKICAgIE5BTkQ6IGlmZGVmLXByb3RlY3QgbW9zdCBvZiBuYW5kLmggd2hlbiB1c2luZyBsZWdhY3kgTkFORC4KCiAgICBTb21lIG1hY3JvcyBzdWNoIGFzIE5BTkRfQ1RMX1NFVEFMRSBjb25mbGljdCBiZXR3ZWVuIGN1cnJlbnQgYW5kIGxlZ2FjeQogICAgTkFORCwgYmVpbmcgZGVmaW5lZCBieSB0aGUgc3Vic3lzdGVtIGluIHRoZSBmb3JtZXIgY2FzZSBhbmQgdGhlIGJvYXJkCiAgICBjb25maWcgZmlsZSBpbiB0aGUgbGF0dGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDJiMWZhOWQzODNjYmJiN2QzNDdjMTU4M2JkNmNhNGUxODFiYThlOWUKQXV0aG9yOiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KRGF0ZToJVHVlIEp1bCA4IDExOjAyOjA1IDIwMDggLTA0MDAKCiAgICBBUk06IEZpeCBmb3Igd3JvbmcgcGF0Y2ggdmVyc2lvbiBhcHBsaWVkIGZvciBMeXJ0ZWNoIFNGRi1TRFIgYm9hcmQgKEFSTTkyNkVKUykKCiAgICBBUk06IEZpeCBmb3IgaW5jb3JyZWN0IHZlcnNpb24gb2YgcGF0Y2ggYXBwbGllZCB3aGVuCiAgICBhZGRpbmcgc3VwcG9ydCBmb3IgdGhlIEx5cnRlY2ggU0ZGLVNEUiBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFBoaWxpcCBCYWxpc3RlciwgT3BlblNEUiA8cGhpbGlwQG9wZW5zZHIuY29tPgoKY29tbWl0IDQ3MDQyYjM2M2VlNTAyMmI4MTgwYzY1ZDNmNDU1OGU3OTcyYzc5Y2QKQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxrbXBhcmtAaW5mcmFkZWFkLm9yZz4KRGF0ZToJVHVlIEp1bCA4IDA5OjA4OjQwIDIwMDggKzA5MDAKCiAgICBSZW1vdmUgdXNlbGVzcyBwcmludCBtZXNzYWdlIGF0IGFwb2xsb24KCiAgICBSZW1vdmUgdXNlbGVzcyBwcmludCBtZXNzYWdlIGF0IGFwb2xsb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgoKY29tbWl0IDk4ODc0ZmYzMjlkNGE1YjMyYzQ2N2I0M2Y2ZTk2NmUxYWE2ODQ3OWYKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdWwgNyAxNDoyNDozOSAyMDA4IC0wNTAwCgogICAgRml4IExNQiB0eXBlIGlzc3VlcwoKICAgIFRoZSBMTUIgY29kZSBub3cgdXNlcyBwaHlzX2FkZHJfdCBhbmQgcGh5c19zaXplX3QuCUFsc28sIHRoZXJlIHdlcmUgYSBjb3VwbGUKICAgIG9mIGNhc3RpbmcgcHJvYmxlbXMgaW4gdGhlIGJvb3RtIGNvZGUgdGhhdCBjYWxsZWQgdGhlIExNQiBmdW5jdGlvbnMuCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGRhODY5M2E5MWI4ZWVmNzVhZGU4ZGU1MGExYjJjZTAzNWJjNWZiNTQKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gSnVsIDcgMDk6Mzk6MDYgMjAwOCAtMDUwMAoKICAgIEZpeCBjb21waWxlciB3YXJuaW5ncwoKICAgIGdjYy00LjMueCBnZW5lcmF0ZXMgdGhlIGZvbGxvd2luZzoKCiAgICBib290bS5jOiBJbiBmdW5jdGlvbiAnZG9fYm9vdG1fbGludXgnOgogICAgYm9vdG0uYzoyMDg6IHdhcm5pbmc6IGNhc3QgZnJvbSBwb2ludGVyIHRvIGludGVnZXIgb2YgZGlmZmVyZW50IHNpemUKICAgIGJvb3RtLmM6MjE1OiB3YXJuaW5nOiBjYXN0IGZyb20gcG9pbnRlciB0byBpbnRlZ2VyIG9mIGRpZmZlcmVudCBzaXplCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA1YmIxMmRiZDdhZTAzMTg5YjZjMTNkODczN2I1YTFiMzdjM2RmNjk4CkF1dGhvcjogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQGdudW1vbmtzLm9yZz4KRGF0ZToJTW9uIEp1bCA3IDE1OjQwOjM5IDIwMDggKzA4MDAKCiAgICBSZW1vdmUgY29kZSBkdXBsaWNhdGlvbiBmb3Igc2V0dGluZyB0aGUgZGVmYXVsdCBlbnZpcm9ubWVudAoKICAgIGNvbW1vbi9lbnZfY29tbW9uLmMgKGRlZmF1bHRfZW52KTogbmV3IGZ1bmN0aW9uIHRoYXQgcmVzZXRzIHRoZSBlbnZpcm9ubWVudCB0bwoJCSAgICB0aGUgZGVmYXVsdCB2YWx1ZQogICAgY29tbW9uL2Vudl9jb21tb24uYyAoZW52X3JlbG9jYXRlKTogdXNlIGRlZmF1bHRfZW52IGluc3RlYWQgb2Ygb3duIGNvcHkKICAgIGNvbW1vbi9lbnZfbmFuZC5jIChlbnZfcmVsb2NhdGVfc3BlYyk6IHVzZSBkZWZhdWx0X2VudiBpbnN0ZWFkIG9mIG93biBjb3B5CiAgICBpbmNsdWRlL2Vudmlyb25tZW50Lmg6IGFkZGVkIGRlZmF1bHRfZW52IHByb3RvdHlwZQoKICAgIFNpZ25lZC1vZmYtYnk6IFdlcm5lciBBbG1lc2JlcmdlciA8d2VybmVyQG9wZW5tb2tvLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBvcGVubW9rby5vcmc+Cgpjb21taXQgOTljMmI0MzRkMzc4NjNkZjVkZGE1MjA3YTUzNzYwYzY1MDZmYzJiZQpBdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KRGF0ZToJU3VuIEp1biAyMiAxNjoxMzo0NiAyMDA4ICswMjAwCgogICAgTkFORDogRml4IHdhcm5pbmcgZHVlIHRvIG1pc3NpbmcgZW52X3B0ciBjYXN0cyB0byB1X2NoYXIgKiBpbiBlbnZfbmFuZC5jLgoKICAgIFRoZSB3cml0ZWVudigpIGFuZCByZWFkZW52KCkgY2FsbHMgaW50cm9kdWNlZCBieSB0aGUgcmVjZW50bHkgYWRkZWQgYmFkIGJsb2NrCiAgICBtYW5hZ2VtZW50IGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2VyZSBtaXNzaW5nIGNhc3RzIHRoZXJlZm9yZSBwcm9kdWNpbmcKICAgIGNvbXBpbGUgdGltZSB3YXJuaW5ncy4KICAgIFdoaWxlIGF0IGl0IGZpeGluZyBzb21lIHR5cG8gaW4gYSBjb21tZW50IGFuZCBpbmRlbnRhdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzMTY3YzUzODZlYTFjOThiNjM4YmU1ZDg3NjNlZjZkNTkzOGVmMWJkCkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBKdW4gMjAgMTI6Mzg6NTcgMjAwOCAtMDUwMAoKICAgIE5BTkQ6IFJlbmFtZSBERUJVRyB0byBNVERERUJVRyB0byBhdm9pZCBuYW1lc3BhY2UgcG9sbHV0aW9uLgoKICAgIFRoaXMgaXMgcGFydGljdWxhcmx5IHByb2JsZW1hdGljIG5vdyB0aGF0IG5vbi1OQU5ELXNwZWNpZmljIGNvZGUgaXMKICAgIGluY2x1ZGluZyA8bmFuZC5oPiwgYW5kIHRodXMgYWxsIGRlYnVnZ2luZyBjb2RlIGlzIGJlaW5nIGNvbXBpbGVkCiAgICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgd2FzIHJlcXVlc3RlZCwgYXMgcmVwb3J0ZWQgYnkgU2NvdHQgTWNOdXR0CiAgICA8c21jbnV0dEBwc3llbnQuY29tPi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjM2JmMWFkN2JhYTFiMGRkOTg5ZGVkYzI2MGI3MDk4YjYwODlhZTA1CkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglUaHUgSnVuIDEyIDE5OjI3OjU4IDIwMDggKzAyMDAKCiAgICBtbWM6IE1vdmUgYXRtZWxfbWNpIGRyaXZlciBpbnRvIGRyaXZlcnMvbW1jCgogICAgVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gdXNlIHRoZSBkcml2ZXIgb24gb3RoZXIgcGxhdGZvcm1zLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KICAgIEFja2VkLWJ5OiBKZWFuLUNocml0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZDJkNTRlYTQ0OTYzOWYzZDFhNjAwN2UzMzNhYjlmY2M2MDlhMThmMApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJVGh1IEp1biAxMiAxOToyNzo1NyAyMDA4ICswMjAwCgogICAgYXZyMzI6IFVzZSBDT05GSUdfQVRNRUxfTUNJIHRvIHNlbGVjdCB0aGUgYXRtZWxfbWNpIGRyaXZlcgoKICAgIEFmdGVyIHdlIG1vdmUgdGhlIGF0bWVsX21jaSBkcml2ZXIgaW50byBkcml2ZXJzL21tYywgd2UgY2FuJ3Qgc2VsZWN0CiAgICBpdCB3aXRoIENPTkZJR19NTUMgYW55bW9yZS4gSW50cm9kdWNlIGEgbmV3IHN5bWJvbCBzcGVjaWZpY2FsbHkgZm9yCiAgICB0aGlzIGRyaXZlciBzbyB0aGF0IHRoZXJlJ3Mgbm8gYW1iaWd1aXR5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KICAgIEFja2VkLWJ5OiBKZWFuLUNocml0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNWNlMTMwNTFhNDhjNjJiZGE5NzIzZGYzYjQ3NzhjNDkyZmI0N2YzNgpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJVGh1IEp1biAxMiAxOToyNzo1NiAyMDA4ICswMjAwCgogICAgQ3JlYXRlIGRyaXZlcnMvbW1jIHN1YmRpcmVjdG9yeQoKICAgIEluIG9yZGVyIHRvIGNvbnNvbGlkYXRlIG1vcmUgb2YgdGhlIHZhcmlvdXMgTU1DIGRyaXZlcnMgYXJvdW5kIHRoZQogICAgdHJlZSwgd2UgbXVzdCBmaXJzdCBoYXZlIGEgY29tbW9uIHBsYWNlIHRvIHB1dCB0aGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KICAgIEFja2VkLWJ5OiBKZWFuLUNocml0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYjUwMjYxMWI1MWYwMjcxOGMyZDExMTdkNDk4MWRhYmNlYjVhZjZkZQpBdXRob3I6IEpvYWtpbSBUamVybmx1bmQgPGpvYWtpbS50amVybmx1bmRAdHJhbnNtb2RlLnNlPgpEYXRlOglTdW4gSnVsIDYgMTI6MzA6MDkgMjAwOCArMDIwMAoKICAgIENoYW5nZSBlbnZfZ2V0X2NoYXIgZnJvbSBhIGdsb2JhbCBmdW5jdGlvbiBwdHIgdG8gYSBmdW5jdGlvbgoKICAgIFRoaXMgYXZvaWRzIGFuIGVhcmx5IGdsb2JhbCBkYXRhIHJlZmVyZW5jZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KCmNvbW1pdCAyNzI2OTQxN2FkZTQzMjE4OWIyMzRkOWZiYWM5OGI1NGUzN2I5NzhjCkF1dGhvcjogTWF0dmVqY2hpa292IElseWEgPG1hdHZlamNoaWtvdkBnbWFpbC5jb20+CkRhdGU6CVN1biBKdWwgNiAxMzo1Nzo1OCAyMDA4ICswNDAwCgogICAgU29tZSBjb3B5LW4tcGFzdGUgZml4ZXMgaW4gcHJpbnRmIHVzYWdlCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dmVqY2hpa292IElseWEgPG1hdHZlamNoaWtvdkBnbWFpbC5jb20+Cgpjb21taXQgMGU2OTg5YjlmYWYxNTg4ZTg3MjM1MzU1MzllODhhMGRmM2M3MTM1NgpBdXRob3I6IE1hdHZlamNoaWtvdiBJbHlhIDxtYXR2ZWpjaGlrb3ZAZ21haWwuY29tPgpEYXRlOglTdW4gSnVsIDYgMTM6NTc6MDAgMjAwOCArMDQwMAoKICAgIEZEVCBtZW1vcnkgYW5kIHBjaSBub2RlIGZpeGVzIGZvciBNUEM4MjYwQURTCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dmVqY2hpa292IElseWEgPG1hdHZlamNoaWtvdkBnbWFpbC5jb20+Cgpjb21taXQgZGM0YjBiMzhkNGFhZGYwODgyNmY2YzMxMjcwZjFlZWNkMjc5NjRmZApBdXRob3I6IEFuZHJldyBLbG9zc25lciA8YW5kcmV3QGNlc2Eub3BidS54ZXJveC5jb20+CkRhdGU6CU1vbiBKdWwgNyAwNjo0MToxNCAyMDA4IC0wNzAwCgogICAgRml4IHByaW50ZiBlcnJvcnMuCgogICAgVGhlIGNvbXBpbGVyIHdpbGwgaGVscCBmaW5kIG1pc21hdGNoZXMgYmV0d2VlbiBwcmludGYgZm9ybWF0cyBhbmQKICAgIGFyZ3VtZW50cyBpZiB5b3UgbGV0IGl0LiAgVGhpcyBwYXRjaCBhZGRzIHRoZSBuZWNlc3NhcnkgYXR0cmlidXRlcyB0bwogICAgZGVjbGFyYXRpb25zIGluIGluY2x1ZGUvY29tbW9uLmgsIHRoZW4gYmVnaW5zIHRvIGNvcnJlY3QgdGhlIHJlc3VsdGluZwogICAgY29tcGlsZXIgd2FybmluZ3MuCVNvbWUgb2YgdGhlc2Ugd2VyZSBidWdzLCBlLmcuLCAiJGQiIGluc3RlYWQgb2YKICAgICIlZCIgYW5kIGluY29ycmVjdCBhcmd1bWVudHMuICBPdGhlcnMgd2VyZSBqdXN0IGFubm95aW5nLCBsaWtlCiAgICBpbnQtbG9uZyBtaXNtYXRjaGVzIG9uIGEgc3lzdGVtIHdoZXJlIGJvdGggYXJlIDMyIGJpdHMuICBJdCdzIHdvcnRoCiAgICBmaXhpbmcgdGhlIGFubm95aW5nIGVycm9ycyB0byBjYXRjaCB0aGUgcmVhbCBvbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBLbG9zc25lciA8YW5kcmV3QGNlc2Eub3BidS54ZXJveC5jb20+Cgpjb21taXQgNDE3ZmFmMjg1YjI1MjdhY2IyZGUyNGM1Y2QzZTI2MjFkMzg1NDA4YwpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVsIDkgMTE6MDk6NDEgMjAwOCAtMDUwMAoKICAgIEFsbG93IHByaW50X3NpemUgdG8gcHJpbnQgaW4gR0IKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlN2MzNzQ1MjljODc1MjVjOWFhNDYzZTA1NTdjMjg3ODg3YWU0ZTllCkF1dGhvcjogSmFzb24gTWNNdWxsYW4gPG1jbXVsbGFuQG5ldGFwcC5jb20+CkRhdGU6CVN1biBKdW4gOCAyMzo1NjowMCAyMDA4IC0wNDAwCgogICAgbWlwczogV2hlbiBib290aW5nIExpbnV4IGltYWdlcywgYWRkICdldGhhZGRyJyBhbmQgJ2V0aDFhZGRyJyB0byB0aGUgZW52aXJvbm1lbnQKCiAgICBBZGQgJ2V0aGFkZHInIGFuZCAnZXRoMWFkZHInIHRvIHRoZSBMaW51eCBrZXJuZWwgZW52aXJvbm1lbnQgaWYKICAgIHRoZXkgYXJlIHNldCBpbiB0aGUgVS1Cb290IGVudmlyb25tZW50LgoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIE1jTXVsbGFuIDxtY211bGxhbkBuZXRhcHAuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCAwMTkyZDdkNTZlOTMyMDgxOWRlYTI2MmY0OTc4OWFlMThmZGQyYzcyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgSnVsIDggMTI6NTc6MTQgMjAwOCArMDIwMAoKICAgIGplZGVjX2ZsYXNoOiBGaXggQU0yOURMODAwQkIgZGV2aWNlIElECgogICAgQXMgcG9pbnRlZCBvdXQgYnkgSmVycnkgSGlja3MsIHRoaXMgcGF0Y2ggY29ycmVjdHMgdGhlIGRldmljZSBJRCBvZgogICAgdGhlIFNwYW5zaW9uIEFNMjlETDgwMEJCIE5PUiBkZXZpY2UuIFZlcmlmaWVkIGFnYWluc3QgbGF0ZXN0IFNwYW5zaW9uCiAgICBkYXRhc2hlZXQgKHJldiBDNCBmcm9tIERlemVtYmVyIDIwMDYpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2ODljMWIzMGNhYWNiYTNmYmNhMGIxODEzZmFjYjNhYjcwYjZjZDYzCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglNb24gSnVsIDcgMTE6MjI6MzcgMjAwOCArMDkwMAoKICAgIHNoOiBGaXggY29tcGlsZSBlcnJvciBzaDc3NjNyZHAgYm9hcmQKCiAgICBEaXNhYmxlIFNIIGV0aGVyIGRyaXZlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgOWUyM2ZlMDU2MGI4NGUzMjRkYzVmMGZmODgxM2RhYjJhYTM0ZjA3NApBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJVHVlIEp1bCA4IDEyOjAzOjI0IDIwMDggKzA5MDAKCiAgICBzaDogRml4IFNILWJvYXJkcyBjb21waWxlIGVycm9yCgogICAgQnkgQ2xlYW51cCBvdXQtb3ItdHJlZSBidWlsZGluZyBmb3Igc29tZSBib2FyZHMgKC5kZXBlbmQpCiAgICAoY29tbWl0OmM4YTNiMTA5ZjA3ZjAyMzQyZDA5N2IzMDkwODk2NWY3MjYxZDlmMTUpCiAgICBiZWNhdXNlIGZpbHNlIHdhcmUgY2hhbmdlZCwgc29tZSBTSC1ib2FyZHMgaGF2ZSBjb21waWxlIGVycm9yLgogICAgSSByZXZpc2VkIHRoaXMgcHJvYmxlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgMzQ3M2FiNzM3MjgyYjA4YWQ2MTg0MWZjYmIxNGM0ZDI2NGE5M2E4ZQpBdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBNYXkgMTMgMTE6NTA6MzYgMjAwOCArMDgwMAoKICAgIEZlZWQgdGhlIHdhdGNoZG9nIGluIHUtYm9vdCBmb3IgODYxMCBib2FyZC4KCiAgICBUaGUgd2F0Y2hkb2cgb24gODYxMCBib2FyZCBpcyBlbmFibGVkIGJ5IHNldHRpbmcgc3dbNl0KICAgIHRvIG9uLiBPbmNlIGVuYWJsZWQsIHRoZSB3YXRjaGRvZyBjYW4gbm90IGJlIGRpc2FibGVkCiAgICBieSBzb2Z0d2FyZS4gU28gZmVlZCB0aGUgZG9nIGluIHUtYm9vdCBpcyBuZWNlc3NhcnkgZm9yCiAgICBub3JtYWwgb3BlcmF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjM2NzY4NDFjYTJkNjAzYjEzNzY1ZjNmN2I3MmZmMWE2MWMyM2Y5MApBdXRob3I6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgpEYXRlOglXZWQgSnVuIDE4IDEyOjEwOjMzIDIwMDggLTA0MDAKCiAgICBSZW1vdmUgZHVwbGljYXRlIGNvZGUgaW4gY3B1L2FybTkyNmVqcy9kYXZpbmNpL2x4dDk3Mi5jLgoKICAgIFJlbW92ZSBkdXBsaWNhdGUgY29kZSBpbiBjcHUvYXJtOTI2ZWpzL2RhdmluY2kvbHh0OTcyLmMuCgogICAgUmVtb3ZlIGR1cGxpY2F0ZSBjb2RlIGluIGEgaWYvZWxzZSBibG9jayBpbgogICAgY3B1L2FybTkyNmVqcy9kYXZpbmNpL2x4dDk3Mi5jLgogICAgRml4ZWQgc3R5bGUgaXNzdWVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBmZWM2MTQzMWEwMDNmNTc3OGJhZmEyNjI0MDczYTU3MWFmOGJlYzlmCkF1dGhvcjogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+CkRhdGU6CVdlZCBKdW4gMTggMTI6MTA6MzEgMjAwOCAtMDQwMAoKICAgIFJlbW92ZSBkdXBsaWNhdGUgZGVmaW5pdGlvbnMgaW4gaW5jbHVkZS9seHQ5NzFhLmguCgogICAgUmVtb3ZlIGR1cGxpY2F0ZSBkZWZpbml0aW9ucyBpbiBpbmNsdWRlL2x4dDk3MWEuaC4KCiAgICBSZW1vdmUgZHVwbGljYXRlIHJlZ2lzdGVycyBhbmQgYml0cyBkZWZpbml0aW9ucyBpbgogICAgaW5jbHVkZS9seHQ5NzFhLmggZm9yIHN0YW5kYXJkIE1JSSByZWdpc3RlcnMsIGFuZAogICAgdXNlIHZhbHVlcyBpbiBpbmNsdWRlL21paXBoeS5oIGluc3RlYWQuCgogICAgU2lnbmVkLW9mZi1ieTogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDk3NTFlZTA5OTBmNDY3OTQxZGEwYjA5NWE0ZTk5NWY4NjM2NzJkN2EKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVdlZCBKdW4gMTEgMjE6MDU6MDAgMjAwOCArMDkwMAoKICAgIG5ldDogc2g6IFJlbmVzYXMgU0g3NzYzIEV0aGVybmV0IGRldmljZSBzdXBwb3J0CgogICAgUmVuZXNhcyBTSDc3NjMgaGFzIDIgY2hhbm5lbCBFdGhlcm5ldCBkZXZpY2UuCiAgICBUaGlzIGlzIDEwLzEwMC8xMDAwIEJhc2Ugc3VwcG9ydC4KICAgIEJ1dCB0aGlzIHBhdGNoIGNoZWNrIDEwLzEwMCBCYXNlIG9ubHkuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA4NzNkOTdhYWJjMGIxYzg4MjJlZDFkODdlOGM1YzhhZTBhN2U0YWU5CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgpEYXRlOglUdWUgSnVuIDE3IDE2OjI4OjA1IDIwMDggKzA5MDAKCiAgICBzaDogVXBkYXRlIFJlbmVzYXMgUjJEUGx1cyBib2FyZAoKICAgIE5ldyBOT1IgRmxhc2ggYm9hcmQgc3VwcG9ydCBhbmQgcmVtb3ZlIG9sZCB0eXBlIGZsYXNoIGJvYXJkIGNvbmZpZy4KICAgIEFuZCBSZW1vdmUgbmV0d29yayBzZXR0aW5nIGZyb20gY29uZmlnIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGVjMzlkNDc5ZDIwMDNmMTVlODZlMjNlYmM0ZTAyYTFjOWEzYTE4MWMKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVR1ZSBKdW4gMTcgMTY6Mjg6MDEgMjAwOCArMDkwMAoKICAgIHNoOiBVcGRhdGUgUmVuZXNhcyBSNzc4ME1QIGJvYXJkCgogICAgTmV3IE5PUiBGbGFzaCBib2FyZCBzdXBwb3J0IGFuZCByZW1vdmUgbmV0d29yayBzZXR0aW5nIGZyb20gY29uZmlnIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGMwMDFjZDYwNGU5ZjEzMzc0M2VmZmJkZGIxYzIxNWI0OGU3NjFjNWEKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVR1ZSBKdW4gMTcgMTY6Mjc6NTYgMjAwOCArMDkwMAoKICAgIHNoOiBVcGRhdGUgUmVuZXNhcyBNaWdvLVIgYm9hcmQKCiAgICBSZW1vdmUgbmV0d29yayBzZXR0aW5nIGZyb20gY29uZmlnIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGY5NTk5ZWNhN2NiNWViZTQwZTUzMDVjODAwNmRjZWQ2ZWNjNWNkOWUKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVR1ZSBKdW4gMTcgMTY6Mjc6NTIgMjAwOCArMDkwMAoKICAgIHNoOiBVcGRhdGUgSGl0YWNoaSBNUzc3MjJTRSBib2FyZAoKICAgIFJlbW92ZSBuZXR3b3JrIHNldHRpbmcgZnJvbSBjb25maWcgZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgMjYyMDllNDhlODc5MTY3MGM5MzEwODAyOWE1YzMxYTMwMDE2YzZkZgpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJVHVlIEp1biAxNyAxNjoyNzo0OCAyMDA4ICswOTAwCgogICAgc2g6IENsZWFudXAgc291cmNlIGNvZGUgb2YgU0g3NzYzUkRQCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDVjZDViMmM5NmVmMDAyNTc2MjkzMTM0OWQzNTAyODdhZWMwM2FiNDcKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVR1ZSBKdW4gMTcgMTY6Mjc6NDQgMjAwOCArMDkwMAoKICAgIHNoOiBDbGVhbnVwIHNvdXJjZSBjb2RlIG9mIFIyRFBsdXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgNGVjN2U5MTVjZmFhMzFiMzkyNzU1ZGQyYzgyMzFlNjQ3MzZkMmVhOApBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJVHVlIEp1biAxNyAxNjoyNzo0MSAyMDA4ICswOTAwCgogICAgc2g6IENsZWFudXAgc291cmNlIGNvZGUgb2YgUjc3ODBNUAoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCAwOTU1ZWYzNGMwNDU0YWUyZWU1OWE3ODY1N2EwZjAxZmIzZWYxNmQ2CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgpEYXRlOglUdWUgSnVuIDE3IDE2OjI3OjM4IDIwMDggKzA5MDAKCiAgICBzaDogQ2xlYW51cCBzb3VyY2UgY29kZSBvZiBNUzc3MjJTRQoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCAxZDdiMzFkOTdiMzRjY2I2ZjliMjBhMjQ2NTg2NDk5OGIwYmYyNjkxCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgpEYXRlOglUdWUgSnVuIDE3IDE2OjI3OjM0IDIwMDggKzA5MDAKCiAgICBzaDogQ2xlYW51cCBzb3VyY2UgY29kZSBvZiBNUzc3MjBTRQoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCAzYWI0ODI3Y2JlNDA5NDg4ZWJlYTFhMmVlNTA5NDc4M2YyNjcyMjE0CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIEp1bCA3IDAwOjQ1OjAzIDIwMDggKzAyMDAKCiAgICBTSDogZml4IG91dCBvZiB0cmVlIGJ1aWxkaW5nCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA5MDQ3YmZhMWU3MzdkNzg3YmU0NjAzODdkZDZmNDU3MzdlZWNlYjEwCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgpEYXRlOglUaHUgSnVsIDMgMjM6MTY6MDYgMjAwOCArMDkwMAoKICAgIG5ldDogc21jOTExeDogRml4IHR5cG8KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Cgpjb21taXQgNWVkNTQ2ZmRkMGNhNDZhMTY1NjYxYzIwMDlmYTc0M2Q5YzlmY2VjYQpBdXRob3I6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KRGF0ZToJV2VkIEp1bCAyIDE4OjU0OjA4IDIwMDggKzAyMDAKCiAgICB1cGRhdGUgbXZCTC1NNyBib2FyZCBjb25maWcKCiAgICB1cGRhdGUgbXZCTC1NNyBjb25maWcgZmlsZSB0byB1c2UgVUJPT1RfVkVSU0lPTiBhbmQgZGVmaW5lCiAgICBDT05GSUdfSElHSF9CQVRTLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KCmNvbW1pdCA1Y2FjYzVkMGVjNTI2NzhhNWViODNlY2RhNWMzYmNiMjJlYjQ3ZjMwCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglNb24gSnVuIDMwIDE3OjQ1OjAxIDIwMDggKzA5MDAKCiAgICBuZXQ6IGZpeCBjb21waWxlIHByb2JsZW0gaW4gc21jOTExeCBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgogICAgQWNrZWQtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgOWZlYTY1YTZjNDY5YjFiNDc0YjI3NDQ2ZmViNTg3MzhiYWJhMmQzMQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJVHVlIEp1biAyNCAwOTo1NDowOSAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBSZW5hbWUgQ09ORklHX1hJTElOWF9NTDMwMCB0byBDT05GSUdfWElMSU5YXzQwNQoKICAgIFRoaXMgY2hhbmdlIGhlbHBzIHdpdGggYmV0dGVyIGhhbmRsaW5nIHdpdGggb3RoZXJzCiAgICBYaWxpbnggYmFzZWQgcGxhdGZvcm0uCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgogICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjYmI2Mjg5NTY5YWU0ZmM2ZTJkNjc2NTI4ZTQ2ZmZjYzcyZDc0M2QwCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglUdWUgSnVuIDE3IDEzOjA3OjExIDIwMDggKzA5MDAKCiAgICBuZXQ6IG5lMjAwMDogTW92ZSBkZXZfYWRkciB2YXJpYWJsZSBmcm9tIGdyb2JhbCB0byBsb2NhbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGRkN2U1ZmE1Zjg0NzE4OGY3OGY2MmYyYzUyZGU2Y2IzZGVmM2VjZGIKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVR1ZSBKdW4gMTcgMTM6MDc6MTUgMjAwOCArMDkwMAoKICAgIG5ldDogbmUyMDAwOiBGaXggY29tcGlsZSBlcnJvciBvZiBORTIwMDAKCiAgICBJZiBlbmFibGUgREVCVUcsIGNhbiBub3QgY29tcGlsZSBuZTIwMDAgZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZGQzNTQ3OWE1MGY2YzdjMzFlYTQ5MWMwN2M1MjAwYzZkZmQwNmEyNApBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CU1vbiBKdW4gMjMgMjI6NTc6MjcgMjAwOCAtMDcwMAoKICAgIEFkZCBtZWNoYW5pc21zIGZvciBDUFUgYW5kIGJvYXJkLXNwZWNpZmljIEV0aGVybmV0IGluaXRpYWxpemF0aW9uCgogICAgVGhpcyBwYXRjaCBpcyB0aGUgZmlyc3Qgc3RlcCBpbiBjbGVhbmluZyB1cCBuZXQvZXRoLmMsIGJ5IG1vdmluZyBFdGhlcm5ldAogICAgaW5pdGlhbGl6YXRpb24gdG8gQ1BVIG9yIGJvYXJkLXNwZWNpZmljIGNvZGUuICBJbml0aWFsIGltcGxlbWVudGF0aW9uIGlzCiAgICBvbmx5IG9uIHRoZSBGcmVlc2NhbGUgVFNFQyBjb250cm9sbGVyLCBidXQgb3RoZXJzIHdpbGwgYmUgYWRkZWQgc29vbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDc3NTRmMmJlNWQxODM1ZDI2M2FhZDIxYjVhNjI5NTI2ZjNlNjgwYjAKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gSnVsIDYgMDE6MjE6NDYgMjAwOCArMDIwMAoKICAgIGluY2x1ZGUvc2hhMjU2Lmg6IGZpeCBmaWxlIHBlcm1pc3Npb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZDNiY2RmODM4ZTI5OTFkNTg1NzEzMDhmYTZlMDRjYTMzNWJjMDZlOApBdXRob3I6IFBhdHJpY2UgVmlsY2hleiA8cGF0cmljZS52aWxjaGV6QGF0bWVsLmNvbT4KRGF0ZToJVHVlIE1heSAyNyAxMToxNToyOSAyMDA4ICswMjAwCgogICAgW0FUOTFTQU05XSBGaXggTkFORCBGTEFTSCB0aW1pbmdzCgogICAgRml4IE5BTkQgRkxBU0ggdGltaW5ncyBmb3IgYXQ5MXNhbTl4IGV2YWx1YXRpb24ga2l0cy4KCiAgICBOZXcgdGltaW5ncyBhcmUgYmFzZWQgb24gYXBwbGljYXRpb24gbm90ZQogICAgIk5BTkQgRmxhc2ggU3VwcG9ydCBvbiBBVDkxU0FNOSBNaWNyb2NvbnRyb2xsZXJzIiBhdmFpbGFibGUgYXQKICAgIGh0dHA6Ly9hdG1lbC5jb20vZHluL3Jlc291cmNlcy9wcm9kX2RvY3VtZW50cy9kb2M2MjU1LnBkZgoKICAgIFNpZ25lZC1vZmYtYnk6IFBhdHJpY2UgVmlsY2hleiA8cGF0aWNlLnZpbGNoZXpAYXRtZWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIEFja2VkLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgoKY29tbWl0IDE5YmQ2ODg0ODQzMjJmZTYyZDFhNjZjODI5OWRhNmZmOWU5NjdmZjkKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglUaHUgTWF5IDIyIDAwOjE1OjQwIDIwMDggKzAyMDAKCiAgICBGaXggYm9vdCBmcm9tIE5PUiBkdWUgdG8gaW5jb3JyZWN0IHJlc2V0IGRlbGF5LgoKICAgIEFUOTEgUlNUQyByZWdpc3RlcnMgYXJlIGJhdHRlcnktYmFja3VwZWQsIHNvIHRoZWlyIHZhbHVlcwogICAgYXJlIG5vdCByZXNldCBhY3Jvc3MgcG93ZXIgY3ljbGVzLiBPbmUgb2YgdGhvc2UgcmVnaXN0ZXJzLAogICAgdGhlIEFUOTFfUlNUQ19NUiByZWdpc3RlciwgaXMgYmVpbmcgbW9kaWZpZWQgYnkgVS1Cb290LCBpbgogICAgdGhlIGV0aGVybmV0IGluaXRpYWxpc2F0aW9uIHJvdXRpbmUsIHRvIGdlbmVyYXRlIGEgNTAwbXMKICAgIHVzZXIgcmVzZXQuCgogICAgVW5mb3J0dW5hdGVseSwgdGhpcyB2YWx1ZSBpcyBub3QgYmVpbmcgcmVzdG9yZWQgYWZ0ZXJ3YXJkcywKICAgIGNhdXNpbmcgc3Vic2VxdWVudCByZXNldHMgdG8gYWxzbyBsYXN0IGZvciA1MDBtcy4KCiAgICBUaGlzIGxvbmcgcmVzZXQgc2VxdWVuY2UgY2F1c2VzIHByb2JsZW1zIChhdCBsZWFzdCkgaW4gdGhlCiAgICBib290IHNlcXVlbmNlIGZyb20gTk9SOiBieSB0aGUgdGltZSB0aGUgQ1BVIHRyaWVzIHRvIGxvYWQKICAgIGEgcHJvZ3JhbSBmcm9tIHRoZSBOT1IgZmxhc2gsIHRoZSBsYXR0ZXIgaXMgc3RpbGwgaW4gcmVzZXQKICAgIGFuZCBub3QgeWV0IGF2YWlsYWJsZS4KCiAgICBBZGRpdGlvbmFseSwgdGhpcyBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgb3JpZ2luYWwgY29kZSB3aGljaAogICAgY2F1c2VkIHRoZSByZXNldCBkZWxheSB0byBsYXN0IGZvciAycyBpbnN0ZWFkIG9mIDUwMG1zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGY0OTJkZDYzNmZiYmFlNTI5ZTE3NTMzOTk1YmM2ZTU4MTNjMDA3ZjYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgSnVsIDQgMjA6MTE6NDkgMjAwOCArMDIwMAoKICAgIFVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDVlNmUzNTBmYzQ4OWFhMTk0MDJmMWU3OTAzN2RkOGMwYTRiYmQ3M2QKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgSnVsIDQgMjA6MDc6MzUgMjAwOCArMDIwMAoKICAgIENDTS9TQ00gYm9hcmRzOiBmaXggb3V0IG9mIHRyZWUgYnVpbGRpbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGFiNGMzYTQ5MGRmOWE5NjQ3MTE1NTZkMmEwNWIwYzc4N2RiNDVmZGUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDMgMjM6MjI6MjcgMjAwOCArMDIwMAoKICAgIFNDTSBib2FyZDogZml4IGJ1aWxkIGVycm9ycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGE1NjY0NjZmMTdiYTBlMmQyYjZjMjUwZTc3ZGE2NzhmYjkzMjQ3MGQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDMgMjM6MDY6MzYgMjAwOCArMDIwMAoKICAgIElBRDIxMCBib2FyZDogZml4IGBgIkFMSUdOIiByZWRlZmluZWQnJyB3YXJuaW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYWQ3NTYzMTQ3OTdjMTZmYTVkY2EyM2UxMTVhYWI4ODEwMTFmMTY0ZgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVRodSBKdWwgMyAyMzowMDoyNCAyMDA4ICswMjAwCgogICAgQ0NNIGJvYXJkOiBmaXggYnVpbGQgZXJyb3JzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZjE2ZWQ1MTcwMmNiOWZiNmZhMmUwMTliYmMwZmNkMTQ2NmI1N2MzYgpBdXRob3I6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KRGF0ZToJV2VkIEp1bCAyIDE4OjU0OjA4IDIwMDggKzAyMDAKCiAgICB1cGRhdGUgbXZCTC1NNyBib2FyZCBjb25maWcKCiAgICB1cGRhdGUgbXZCTC1NNyBjb25maWcgZmlsZSB0byB1c2UgVUJPT1RfVkVSU0lPTi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGNlZDIwOWM1MGU4MGMyNWYxM2MwODMwOTliMDUwNDQwNDhkMjFmNGYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDMgMjI6Mzk6MjEgMjAwOCArMDIwMAoKICAgIHNhY3NuZyBib2FyZDogZml4IHdhcm5pbmdzICJzdWdnZXN0IGV4cGxpY2l0IGJyYWNlcyB0byBhdm9pZCBhbWJpZ3VvdXMgJ2Vsc2UnIgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNGZmMTcwYTgxODBhNzlkYTRjZGFhYjFiMzBkNThjZDdiNmJlNTY1ZQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVRodSBKdWwgMyAyMjozNDowOCAyMDA4ICswMjAwCgogICAgQ2xlYW51cDogZml4ICJleHBlY3RlZCBzcGVjaWZpZXItcXVhbGlmaWVyLWxpc3QgYmVmb3JlICdwaHlzX3NpemVfdCciIGVycm9ycwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNzMwZjI5ODQ4NTk4NGIwMTFiNmVlOGY0YWNiNTExY2I0NWE4NDNkZApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVRodSBKdWwgMyAyMjowNDoxNyAyMDA4ICswMjAwCgogICAgbG1iOiBmaXggImltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdsbWJfZnJlZSciIHdhcm5pbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDMyMmVmNWUyOGQyZGM2MjU3MWFmYzY5OWIwMGFkZDIyYThlMDA2ZTQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgSnVsIDIgMjM6NTM6MjMgMjAwOCArMDIwMAoKICAgIENsZWFudXA6IHJlbW92ZSByZWR1bmRhbnQgZGVsZXRpbmcgb24gKn4gZmlsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGM4YTNiMTA5ZjA3ZjAyMzQyZDA5N2IzMDkwODk2NWY3MjYxZDlmMTUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgSnVsIDIgMjM6NDk6MTggMjAwOCArMDIwMAoKICAgIENsZWFudXAgb3V0LW9yLXRyZWUgYnVpbGRpbmcgZm9yIHNvbWUgYm9hcmRzICguZGVwZW5kKQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYTMwY2M1YTM0MGU3ZjhmNWY4NWEwZTA4ZTdmNmM0MTA2Y2UxMTdjNApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBKdWwgMiAyMzozODo1MCAyMDA4ICswMjAwCgogICAgQ2xlYW51cDogZml4IG91dC1vZi10cmVlIGJ1aWxkaW5nIGZvciBzb21lIGJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNDYxZmE2OGQyMDg2MTgxMTQ4Nzk0NGQyMjI5MWRiNWExMzQxMGUyMApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBKdWwgMiAyMzowMDoxNCAyMDA4ICswMjAwCgogICAgQ2xlYW51cDogcmVwbGFjZSBoYXJkLXdpcmVkICQoQVIpICdjcnYnIHNldHRpbmdzIGJ5ICQoQVJGTEFHUykKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDU5ODFlYmQzMjAxN2UwNjJiMDhhYTY3NDdjZjU5MTI3NmYyZGI3NzkKQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KRGF0ZToJRnJpIEp1biAyMCAyMjoyNjoyNCAyMDA4ICswMjAwCgogICAgZmR0OiBGaXggdHlwbyBpbiB2YXJpYWJsZSBuYW1lLgoKICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgoKY29tbWl0IGE3YTU5ODJjZDBmMzQ4MmY4ODIyNWFmNGRhNzc5NWJjNGY2Y2I5YmMKQXV0aG9yOiBHYXJ5IEplbm5lam9obiA8Z2FyeWpAZGVueC5kZT4KRGF0ZToJVGh1IEp1biAxOSAxMToxMToxOSAyMDA4ICswMjAwCgogICAgQWRkIGxvZ29zIGZvciBSUnZpc2lvbiBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgoKY29tbWl0IGVlNGFlMzgzNDIxNDIyMzdjYTg1OTEzZjg4ZWU1NzBjMWViNWNhN2MKQXV0aG9yOiBFc2JlbiBIYWFiZW5kYWwgPEVzYmVuSGFhYmVuZGFsQGdtYWlsLmNvbT4KRGF0ZToJV2VkIEp1biAxOCAxMTowMzo1NyAyMDA4ICswMjAwCgogICAgbXBjODI2MDogYWRkIGZkdF9maXh1cF9ldGhlcm5ldCBzdXBwb3J0CgogICAgQWRkIHN1cHBvcnQgZm9yIHVwZGF0aW5nIG1hYy1hZGRyZXNzIGFuZCBsb2NhbC1tYWMtYWRkcmVzcyBpbiBmZHQgZm9yCiAgICBhbGwgTVBDODI2MCB0YXJnZXRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVzYmVuIEhhYWJlbmRhbCA8ZWhhQGRvcmVkZXZlbG9wbWVudC5kaz4KCmNvbW1pdCBmNmE2OTU1OWQ2NDQ5OGEwNGUxZTBiMDg3YTliOTIwZTU3NzVmODY2CkF1dGhvcjogU3RldmVuIEEuIEZhbGNvIDxzZmFsY29AaGFycmlzLmNvbT4KRGF0ZToJVGh1IEp1biAxMiAxMzoyNDo0MiAyMDA4IC0wNDAwCgogICAgY21kX252ZWRpdC5jOiBjbGVhbiB1cCBzeW50YXggaGlnaGxpZ2h0aW5nCgogICAgTXkgdGV4dC1lZGl0b3IgKHZpbSkgaGFzIGEgYml0IG9mIHRyb3VibGUgc3ludGF4LWhpZ2hsaWdodGluZyB0aGUKICAgIGNtZF9udmVkaXQuYyBmaWxlLCBiZWNhdXNlIGl0IGFwcGFyZW50bHkgZG9lcyBub3QgcGFyc2UgQwogICAgaWZkZWYvZWxzZS9lbmRpZi4gVGhlIGZvbGxvd2luZyBwYXRjaCBkb2VzIG5vdCBjaGFuZ2UgdGhlIGJlaGF2aW9yIG9mCiAgICB0aGUgY29kZSBhdCBhbGwsIGJ1dCBkb2VzIGFsbG93IHRoZSBlZGl0b3IgdG8gcHJvcGVybHkKICAgIHN5bnRheC1oaWdobGlnaHQgdGhlIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RldmUgRmFsY28gPHNmYWxjb0BoYXJyaXMuY29tPgoKY29tbWl0IDc1Njc4YzgwN2E2MjcyZWNjNTU0MWViMzI4OThjOTM4ODdmMDg0MDAKQXV0aG9yOiBTdGV2ZW4gQS4gRmFsY28gPHNmYWxjb0BoYXJyaXMuY29tPgpEYXRlOglUaHUgSnVuIDEyIDEzOjIyOjEyIDIwMDggLTA0MDAKCiAgICBNYWtlIHNldGVudigpIHJldHVybiBzdGF0dXMKCiAgICBDdXJyZW50bHksIHRoZSBzZXRlbnYgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGFuIGVycm9yIGNvZGUuCiAgICBUaGlzIHBhdGNoIGFsbG93cyB0byB0ZXN0IGZvciBlcnJvcnMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RldmUgRmFsY28gPHNmYWxjb0BoYXJyaXMuY29tPgoKY29tbWl0IDQ5MjhlOTdjODUzMTI4M2NhOWIzNjhiN2MyOWE4YTEyZTcyNjU2MmEKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgSnVuIDExIDEwOjE0OjA2IDIwMDggLTA1MDAKCiAgICBQUEM6IEFkZGVkIGZscywgZmxzNjQsIF9faWxvZzJfdTY0LCBhbmQgZmZzNjQgdG8gYml0b3BzCgogICAgZmxzNjQsIF9faWxvZzJfdTY0LCBmZnM2NCBhcmUgdmFyaWFudHMgdGhhdCB3b3JrIG9uIGFuIHU2NCwKICAgIGFuZCBmbHMgaXMgdXNlZCB0byBpbXBsZW1lbnQgdGhlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDgzMDAyYTc3Y2JkZjM4MzAxNWNhMzg0ZWZmNWZhMzE3MjJkOGU1NzEKQXV0aG9yOiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+CkRhdGU6CU1vbiBKdW4gOSAyMjo1ODo0OCAyMDA4ICswMjAwCgogICAgaS5NWDMxOiBDbGVhbnVwIGNvbW1lbnRzIGluIGxvd2xldmVsX2luaXQuUy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Cgpjb21taXQgZjhjYzMxMmJiZWU2OTI1N2Q3NDFkYzlmNDA2MmY0YTBmNWFkZjYwOQpBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVN1biBKdW4gOCAyMzoyODozMyAyMDA4IC0wNzAwCgogICAgTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvZiBNUEM4WFhYIFNQSSBkcml2ZXIgdG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGQ5MmVhMjFiYWZiNjc0ZWUyYmYyNzQ0Nzk3MGIwNDc4NDVlN2IwYTIKQXV0aG9yOiBKdWVyZ2VuIEtpbGIgPEouS2lsYkBnbXguZGU+CkRhdGU6CVN1biBKdW4gOCAxNzo1OTo1MyAyMDA4ICswMjAwCgogICAgaS5NWDMxOiBmaXhlZCBDVFJMLUMgZGV0ZWN0aW9uCgogICAgVGhlIFJlZ2lzdGVyIFVSWEQgY29udGFpbnMgc3RhdHVzIGluZm9ybWF0aW9uIGluIGJpdHMgWzE1Li44XS4KICAgIFdpdGggc3RhdHVzIGJpdCAxNSBzZXQsIENUUkwtQyB3YXMgcmVwb3J0ZWQgYXMgMHg4MDAzIGluc3RlYWQKICAgIG9mIDB4MDMuIFRoZXJlZm9yZSBDVFJMLUMgd2FzIG5vdCBkZXRlY3RlZC4KICAgIFRvIHNvbHZlIHRoaXMsIGJpdHMgWzE1Li44XSB3ZXJlIG1hc2tlZCBvdXQgbm93LgoKICAgIFNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gS2lsYiA8Si5LaWxiQGdteC5kZT4KICAgIEFja2VkLWJ5OiBGZWxpeCBSYWRlbnNreSA8ZmVsaXhAZW1iZWRkZWQtc29sLmNvbT4KCmNvbW1pdCBkZDFjNTUyM2Q2ZjQ0ZTg0MmU2OWYyZmNiNTA3ODhjNjA2MGVhYjg2CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgSnVsIDEgMTc6MDM6MTkgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRml4IDQ2MEVYL0dUIFBDSWUgcG9ydCBpbml0aWFsaXphdGlvbgoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgdGhlIDQ2MEVYL0dUIFBDSWUgVVRMU0VUMSByZWdpc3RlciB3YXMKICAgIGNvbmZpZ3VyZWQgaW5jb3JyZWN0bHkuIFRoYW5rcyB0byBPbGdhIEJ1Y2hvbmluYSBmcm9tIEFNQ0MgZm9yIHBvaW50aW5nCiAgICB0aGlzIG91dC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYjU3MWFmZGUwMjk1YjAwN2E0NTA1NWVlNDlmODgyMmM3NTNhNTY1MQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBKdW4gNyAxMjoyOTo1MiAyMDA4ICswMjAwCgogICAgYWRkIFNIQTI1NiBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEZyYW5jZXNjbyBBbGJhbmVzZSA8RnJhbmNlc2NvLkFsYmFuZXNlQHN3aXNzY29tLmNvbT4KCmNvbW1pdCAzYmFiNzZhMjZlMDNkZjRmZjgxMzQyZmNjMTYzOTNjZTM3ZDk3NjZiCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJRnJpIEp1biA2IDIzOjA3OjQwIDIwMDggKzAyMDAKCiAgICBEZWxheSBGSVQgZm9ybWF0IGNoZWNrIG9uIHNlY3RvciBiYXNlZCBkZXZpY2VzCgogICAgR2xvYmFsIEZJVCBpbWFnZSBvcGVyYXRpb25zIGxpa2UgZm9ybWF0IGNoZWNrIGNhbm5vdCBiZSBwZXJmb3JtZWQgb24KICAgIGEgZmlyc3Qgc2VjdG9yIGRhdGEsIGRlZmVyIHRoZW0gdG8gdGhlIHBvaW50IHdoZW4gd2hvbGUgRklUIGltYWdlIHdhcwogICAgdXBsb2FkZWQgdG8gYSBzeXN0ZW0gUkFNLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CiAgICBQYXJ0aWFsICgnY21kX25hbmQnIGNhc2UpIEFja2VkLWJ5OiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgogICAgTkFORCBhbmQgRE9DIGJpdHMgQWNrZWQtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk4MTAyNjNhZmVjNWFjNWYzOGY5Mjk2M2JiM2I2ZDc5OWU0MzMxZDAKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdW4gMyAxNzozODoxOSAyMDA4ICswODAwCgogICAgc2F0YTogd2FpdCBmb3IgZGV2aWNlIHVwZGF0aW5nIHNpZ25hdHVyZSB0byBob3N0CgogICAgVGhlIGRyaXZlciBuZWVkIHdhaXQgZm9yIHRoZSBkZXZpY2UgdXBkYXRpbmcgc2lnbmF0dXJlIHRvIGhvc3QuCiAgICBJZiB3ZSBkb24ndCB3YWl0IGZvciBpdCwgdGhlIGRyaXZlciBjYW4gbm90IGRldGVjdCB0aGUgZGV2aWNlKGRpc2spCiAgICB3aGVuIHRoZSBzeXN0ZW0gcG93ZXJzIHVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNzQ1ZDhhMGQzY2VhODJlNmQxNzUzZTE0YWZiNDU4OGMzNDc2MWIxNQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IEp1biAyOCAxNDo1NjoxNyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBGaXggNDYwRVggZXJyYXRhIHdpdGggQ1BVIGxvY2t1cCB1cG9uIGhpZ2ggQUhCIHRyYWZmaWMKCiAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgYSBmaXggcHJvdmlkZWQgYnkgQU1DQyBzbyB0aGF0IHRoZSBsb2NrdXAgdXBvbgogICAgc2ltdWx0YW5pb3VzIHRyYWZmaWMgb24gQUhCIFVTQiBPVEcsIFVTQiAyLjAgYW5kIFNBVEEgZG9lc24ndCBvY2N1cgogICAgYW55bW9yZToKCiAgICBTZXQgU0RSMF9BSEJfQ0ZHW0EyUF9JTkNSNF0gKGJpdCAyNCkgYW5kIGNsZWFyIFNEUjBfQUhCX0NGR1tBMlBfUFJPVDJdCiAgICAoYml0IDI1KSBmb3IgYSBuZXcgNDYwRVggZXJyYXRhIHJlZ2FyZGluZyBjb25jdXJyZW50IHVzZSBvZiBBSEIgVVNCIE9URywKICAgIFVTQiAyLjAgaG9zdCBhbmQgU0FUQS4KCiAgICBUaGlzIGVycmF0YSBpcyBub3Qgb2ZmaWNpYWxseSBhdmFpbGFibGUgeWV0LiBJJ2xsIHVwZGF0ZSB0aGUgY29tbWVudAogICAgdG8gYWRkIHRoZSBlcnJhdGEgbnVtYmVyIGxhdGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4YjYxNmVkYjExOGUzN2QwNWY2NDAxMzg5ZWFlZTFjNjM2YjIyODI4CkF1dGhvcjogU3R1YXJ0IFdvb2QgPHN0dWFydC53b29kQGxhYnh0ZWNobm9sb2dpZXMuY29tPgpEYXRlOglNb24gSnVuIDIgMTY6NDI6MTkgMjAwOCAtMDQwMAoKICAgIHNlcmlhbF9wbDAxMC5jOiBhZGQgd2F0Y2hkb2cgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0dWFydCBXb29kIDxzdHVhcnQud29vZEBsYWJ4dGVjaG5vbG9naWVzLmNvbT4KCmNvbW1pdCA4NmQzMjczZTJiN2JlM2ZmZmI0NWUyMGMwODUzNWQ2YWQzYWRlZDZiCkF1dGhvcjogU3R1YXJ0IFdvb2QgPHN0dWFydC53b29kQGxhYnh0ZWNobm9sb2dpZXMuY29tPgpEYXRlOglNb24gSnVuIDIgMTY6NDA6MDggMjAwOCAtMDQwMAoKICAgIGpmZnMyXzFwYXNzLmM6IGFkZCB3YXRjaGRvZyBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogU3R1YXJ0IFdvb2QgPHN0dWFydC53b29kQGxhYnh0ZWNobm9sb2dpZXMuY29tPgoKY29tbWl0IDU3NDRkZGM2NjM3ZmVhNGY3YjkxMWE1NGE1ZmE4NjBjYjgxYTVkODkKQXV0aG9yOiBTYXNjaGEgTGF1ZSA8c2FzY2hhLmxhdWVAbGllYmhlcnIuY29tPgpEYXRlOglGcmkgTWF5IDMwIDA5OjQ4OjE0IDIwMDggKzAyMDAKCiAgICBDb25maWd1cmUgRFNQIFBPU1Q7IGFkZCB3YXRjaGRvZyByZXNldCB0byBkaWFnIGNvbW1hbmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTYXNjaGEgTGF1ZSA8c2FzY2hhLmxhdWVAbGllYmhlcnIuY29tPgoKY29tbWl0IGYxMzUyNjUxNzg1OWJmNmI1NzNlMjNmZjQ3MTk5ZTEwN2QxMDA5YjUKQXV0aG9yOiBUb3IgS3JpbGwgPHRvckBleGNpdG8uY29tPgpEYXRlOglUaHUgTWF5IDI5IDEwOjQwOjE3IDIwMDggKzAyMDAKCiAgICBBZGQgc2F0YSBzaWwzMTE0IHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBUb3IgS3JpbGwgPHRvckBleGNpdG8uY29tPgoKY29tbWl0IGUwOTNhMjQ3NjI4MjI4MTAwZjQwNWI2ZDdmNmIxYmZjMTYxNDE5MzgKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgSnVuIDI4IDIzOjM0OjM3IDIwMDggKzAyMDAKCiAgICBDb2RpbmcgU3R5bGUgQ2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMDFkYjIzMmRkN2EwY2ViODEyMDhhOWYyNTQ1NzIwYzgwZTViZmQ4MwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBKdW4gMjggMjM6MTY6MDEgMjAwOCArMDIwMAoKICAgIFVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGM3Zjg3OWVjMmIzODljNGYyYmY3MjZiMjkzYmQ1MTZmNGM2OTJlMDMKQXV0aG9yOiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KRGF0ZToJV2VkIE1heSAyMSAxMzo1ODo0MSAyMDA4IC0wNDAwCgogICAgQVJNOiBBZGQgc3VwcG9ydCBmb3IgTHlydGVjaCBTRkYtU0RSIGJvYXJkIChBUk05MjZFSlMpCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBMeXJ0ZWNoIFNGRi1TRFIgYm9hcmQsCiAgICBiYXNlZCBvbiB0aGUgVEkgRGFWaW5jaSBhcmNoaXRlY3R1cmUgKEFSTTkyNkVKUykuCgogICAgU2lnbmVkLW9mZi1ieTogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBQaGlsaXAgQmFsaXN0ZXIgPHBoaWxpcEBiYWxpc3Rlci5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDM0MTE4OGI5Y2NhYThkNDQ2MmQ3NzJjYzA2N2FjYThkNzYxODYzM2EKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVRodSBNYXkgMjIgMTE6MDk6NTkgMjAwOCArMDIwMAoKICAgIE1NQzogQ29uc29saWRhdGUgTU1DL1NEIGNvbW1hbmQgZGVmaW5pdGlvbnMKCiAgICBUaGlzIG1vdmVzIHRoZSBNTUMgYW5kIFNEIENhcmQgY29tbWFuZCBkZWZpbml0aW9ucyBmcm9tCiAgICBpbmNsdWRlL2FzbS9hcmNoL21tYy5oIGludG8gaW5jbHVkZS9tbWMuaC4gVGhlc2UgZGVmaW5pdGlvbnMgYXJlCiAgICBnaXZlbiBieSB0aGUgTU1DIGFuZCBTRCBDYXJkIHN0YW5kYXJkcywgbm90IGJ5IGFueSBwYXJ0aWN1bGFyCiAgICBhcmNoaXRlY3R1cmUuCgogICAgVGhlcmUncyBhIGxvdCBtb3JlIHJvb20gZm9yIGNvbnNvbGlkYXRpb24gaW4gdGhlIE1NQyBkcml2ZXJzIHdoaWNoCiAgICBJJ20gaG9waW5nIHRvIGdldCBkb25lIGV2ZW50dWFsbHksIGJ1dCB0aGlzIHBhdGNoIGlzIGEgc3RhcnQuCgogICAgQ29tcGlsZS10ZXN0ZWQgZm9yIGFsbCBhdnIzMiBib2FyZHMgYXMgd2VsbCBhcyBscGMyMjkyc29kaW1tIGFuZAogICAgbHViYm9jay4gVGhpcyBzaG91bGQgY292ZXIgYWxsIHRocmVlIG1tYyBkcml2ZXJzIGluIHRoZSB0cmVlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBmYTYwZWRmYzRjOTUyNjI2ZTA0OGMwZTA2NWY2NTRiM2MxODIyZmE1CkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+CkRhdGU6CVdlZCBNYXkgMjEgMTQ6Mzg6MDggMjAwOCArMDkwMAoKICAgIFVzZSBiZXR0ZXIgRXRoZXJuZXQgdGltaW5ncyBmb3IgYXBvbGxvbiBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Cgpjb21taXQgNDFjNWVhYTcyNTNlZDgyYmJhZTFlZGE1NjY3NzU1ODcyYzYxNTE2NApBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEp1biAxNiAxMzo1ODo1NiAyMDA4IC0wNTAwCgogICAgUmVzaXplIGRldmljZSB0cmVlIHRvIGFsbG93IHNwYWNlIGZvciBib2FyZCBjaGFuZ2VzIGFuZCB0aGUgY2hvc2VuIG5vZGUKCiAgICBDdXJyZW50IGNvZGUgcmVxdWlyZXMgdGhhdCBhIGNvbXBpbGVkIGRldmljZSB0cmVlIGhhdmUgc3BhY2UgYWRkZWQgdG8gdGhlIGVuZCB0bwogICAgbGVhdmUgcm9vbSBmb3IgZXh0cmEgbm9kZXMgYWRkZWQgYnkgYm9hcmQgY29kZSAoYW5kIHRoZSBjaG9zZW4gbm9kZSkuICBUaGlzCiAgICByZXF1aXJlcyB0aGF0IGRldmljZSB0cmVlIGNyZWF0b3JzIGFudGljaXBhdGUgaG93IG11Y2ggc3BhY2UgVS1Cb290IHdpbGwgYWRkIHRvCiAgICB0aGUgdHJlZSwgd2hpY2ggaXMgYWJzdXJkLglJZGVhbGx5LCB0aGUgY29kZSB3b3VsZCByZXNpemUgYW5kL29yIHJlbG9jYXRlIHRoZQogICAgdHJlZSB3aGVuIGl0IG5lZWRlZCBtb3JlIHNwYWNlLCBidXQgdGhpcyB3b3VsZCByZXF1aXJlIGEgc3lzdGVtaWMgY2hhbmdlIHRvIHRoZQogICAgZmR0IGNvZGUsIHdoaWNoIGlzIG5vbi10cml2aWFsLiAgSW5zdGVhZCwgd2UgcmVzaXplIHRoZSB0cmVlIGluc2lkZQogICAgYm9vdF9yZWxvY2F0ZV9mZHQsIHJlc2VydmluZyBlaXRoZXIgdGhlIHJlbWFpbmRlciBvZiB0aGUgYm9vdG1hcCAoaW4gdGhlIGNhc2UKICAgIHdoZXJlIHRoZSBmZHQgaXMgaW5zaWRlIHRoZSBib290bWFwKSwgb3IgYWRkaW5nIENGR19GRFRfUEFEIGJ5dGVzIHRvIHRoZSBzaXplLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3NTcwYTk5NDFmYzU2NTkyMjA3ODY3OWE3MmQyNDZmZTIwOGQ2OTZkCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVuIDE2IDEzOjU4OjU1IDIwMDggLTA1MDAKCiAgICBGaXggYW4gdW5kZXJmbG93IGJ1ZyBpbiBfX2xtYl9hbGxvY19iYXNlCgogICAgX19sbWJfYWxsb2NfYmFzZSBjYW4gdW5kZXJmbG93IGlmIGl0IGZhaWxzIHRvIGZpbmQgZnJlZSBzcGFjZS4gIFRoaXMgd2FzIGZpeGVkCiAgICBpbiBsaW51eCB3aXRoIGNvbW1pdCBkOTAyNGRmMDJmZmU3NGQ3MjNkOTdkNTUyZjg2ZGUzYjM0YmViOGNjLiAgVGhpcyBwYXRjaAogICAgbWVyZWx5IHVwZGF0ZXMgX19sbWJfYWxsb2NfYmFzZSB0byByZXNlbWJsZSB0aGUgY3VycmVudCB2ZXJzaW9uIGluIExpbnV4LgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2Mzc5NmM0ZTYxYjIwN2QyZTYzNTcyOWQ0MWI3YTdmN2QxODhiMDNjCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVuIDE2IDEzOjU4OjU0IDIwMDggLTA1MDAKCiAgICBBZGQgbG1iX2ZyZWUKCiAgICBsbWJfZnJlZSBhbGxvd3MgdXMgdG8gdW5yZXNlcnZlIHNvbWUgbWVtb3J5IHNvIHdlIGNhbiB1c2UgbG1iX2FsbG9jX2Jhc2Ugb3IKICAgIGxtYl9yZXNlcnZlIHRvIHRlbXBvcmFyaWx5IHJlc2VydmUgc29tZSBtZW1vcnkuCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRiMDNhYzhiNTEwMmFkOTVmOWZlZGU3ZDEzZmEyMzY5Nzc1OTNlN2QKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdW4gMTYgMTM6NTg6NTMgMjAwOCAtMDUwMAoKICAgIEFkZCBBTElHTigpIG1hY3JvCgogICAgQUxJR04oKSByZXR1cm5zIHRoZSBzbWFsbGVzdCBhbGlnbmVkIHZhbHVlIGdyZWF0ZXIgdGhhbiB0aGUgcGFzc2VkCiAgICBpbiBhZGRyZXNzIG9yIHNpemUuICBUYWtlbiBmcm9tIExpbnV4LgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5MzI2MmFmODVlM2U5ZDk5NzRjNmMwOGZiZDM3YTlhNzJlMDkwY2EyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgSnVuIDI0IDE3OjE1OjIyIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBjb21waWxhdGlvbiBwcm9ibGVtcyB3aXRoIHBoeXNfc2l6ZV90CgogICAgVGhpcyBwYXRjaCBpbmNsdWRlcyA8YXNtL3R5cGVzLmg+IGJlZm9yZSA8YXNtL3UtYm9vdC5oPiBpbiBzb21lIDR4eAogICAgYm9hcmQgc3BlY2lmaWMgZmlsZXMgd2hlcmUgaXQgaGFzIGJlZW4gbWlzc2luZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMjhlYWIwZDc3MzUyYjg0ODg1ZjkzODc1OWJmMjYxMmI3YmYwYmM0NApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglNb24gTWF5IDE5IDEyOjI2OjM4IDIwMDggKzAyMDAKCiAgICBDb25kaXRpb25hbGx5IGFkZCAtZm5vLXN0YWNrLXByb3RlY3RvciB0byBDRkxBR1MKCiAgICBXaGVuIGNvbXBpbGUtdGVzdGluZyBvbiBwb3dlcnBjLCBJIGdldCBlcnJvcnMgbGlrZSB0aGlzOgoKICAgIG5ldC9uZnMuYzo0MjI6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fc3RhY2tfY2hrX2ZhaWxfbG9jYWwnCgogICAgVGhpcyBzZWVtcyB0byBiZSBiZWNhdXNlIC1mc3RhY2stcHJvdGVjdG9yIGlzIG9uIGJ5IGRlZmF1bHQsIHNvCiAgICBsZXQncyBleHBsaWNpdGx5IGRpc2FibGUgaXQgb24gYWxsIGFyY2hpdGVjdHVyZXMgdGhhdCBzdXBwb3J0IHRoZQogICAgb3B0aW9uLgoKICAgIFRoZSBVYnVudHUgdG9vbGNoYWluIGlzIGFmZmVjdGVkIGJ5IHRoaXMgcHJvYmxlbSwgYW5kIGFjY29yZGluZyB0bwogICAgTWlrZSBGcnlzaW5nZXIsIEdlbnRvbyBoYXMgYmVlbiBydW5uaW5nIHdpdGggU1NQIGVuYWJsZWQgZm9yIHllYXJzLgogICAgTW9yZSBhbmQgbW9yZSBkaXN0cm9zIGFyZSB0dXJuaW5nIFNTUCBvbiBieSBkZWZhdWx0LCBzbyB0aGlzIHByb2JsZW0KICAgIGlzIGxpa2VseSB0byBnZXQgd29yc2UgaW4gdGhlIGZ1dHVyZS4KCiAgICBBbHNvLCBwb3dlcnBjIGp1c3QgaGFwcGVucyB0byBiZSBvbmUgb2YgdGhlIGFyY2hlcyBJIGRvCiAgICBjb21waWxlLXRlc3Rpbmcgb24uIFRoZXJlIG1heSBiZSBvdGhlciBhcmNoZXMgYWZmZWN0ZWQgYnkgdGhpcyB0b28uCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgZGZkM2JlODgxYzAzYTI2ZTMxZjBkZWE0YTQyZTc2MDYxZmE2MTBhYwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBNYXkgMTggMTk6MDk6NTIgMjAwOCArMDIwMAoKICAgIHBjbWNpYS90aV9wY2kxNDEwYTogTW92ZSBjb21waWxlIGNvbmRpdGlvbiB0byB0aGUgTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDcyZDVkNWY3YjVjNzRhMTg4ZGYyMzhlYzZkZDgyNGQ4MGM3NDg1N2EKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gTWF5IDE4IDE5OjA5OjUxIDIwMDggKzAyMDAKCiAgICBweGFfcGNtY2lhOiBNb3ZlIGNvbXBpbGUgY29uZGl0aW9uIHRvIHRoZSBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYzllZmYzMjg4MWZiNDI5MTAxYzkzN2NmOGMyNjhmMWQ0MmU1YzJhOQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBNYXkgMTggMTk6MDk6NTAgMjAwOCArMDIwMAoKICAgIG1hcmFidW5fcGNtY2lhOiBNb3ZlIGNvbXBpbGUgY29uZGl0aW9uIHRvIHRoZSBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNmExOWM0NmNhZTQzYzE2YzUyOGVkZGVmYWUzZGI5NzEzNGYxOTE1ZApBdXRob3I6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KRGF0ZToJTW9uIEp1biAyMyAxMzoyNTozNCAyMDA4ICswMjAwCgogICAgZml4IG5vbi13b3JraW5nIG12QkwtTTcKCiAgICBBZGQgbWlzc2luZyAjZGVmaW5lIENPTkZJR19ISUdIX0JBVFMgaW4gbXZCTC1NNyBib2FyZCBjb25maWcgZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDg0NmYxNTc0ZGRkZGVkYTJiYzIyNzY1NWU2ODczMDg2OTVmNDFjZGMKQXV0aG9yOiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+CkRhdGU6CU1vbiBKdW4gMjMgMTE6NDA6NTYgMjAwOCArMDIwMAoKICAgIGZpeCBzeXN0ZW0gY29uZmlnIG92ZXJ3cml0ZSBAIE1QQzgzNHggYW5kIE1QQzgzMTMKCiAgICBEdXJpbmcgODN4eCBzZXR1cCB0aGUgIlN5c3RlbSBJL08gY29uZmlndXJhdGlvbiByZWdpc3RlciBoaWdoIiBnZXRzCiAgICBvdmVyd3JpdHRlbiB3aXRoIHVzZXIgZGVmaW5lZCB2YWx1ZSBpZiBDRkdfU0lDUkggaXMgZGVmaW5lZC4KCiAgICBSZWdhcmRpbmcgdG8gdGhlIE1QQzgzNHggbWFudWFsIChUYWJsZSA1LTI4IHJldmUuMSkgYml0cyAyOCsyOSBvZiBTSUNSSAogICAgbXVzdCBrZWVwIHRoZWlyIHJlc2V0IHZhbHVlIHJlZ2FyZGxlc3Mgb2YgY29uZmlndXJhdGlvbi4KCiAgICBPbiBteSBib2FyZCAodXNpbmcgUkdNSUkpIHRob3NlIGJpdHMgYXJlIHNldCBhZnRlciByZXNldCAtIHlldCBpdCdzCiAgICB1bmNsZWFyIHdoZXJlIHRoZXkgY29tZSBmcm9tLgoKICAgIFRoZSBwYXRjaCBrZWVwcyBib3RoIGJpdHMgb24gTVBDODM0eCBhbmQgTVBDODMxMy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ4OTAyNDZhMmM1ZGY5MGE3NGUyOTQxZTM2NzNhNDliYmQzNmFlZTkKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSnVuIDE3IDE3OjQ1OjI3IDIwMDggLTA1MDAKCiAgICBtcGM4M3h4OiBtb3ZlIENQVV9UWVBFX0VOVFJZIG92ZXIgdG8gcHJvY2Vzc29yLmgKCiAgICB0byBhdm9pZCB0aGlzOgoKICAgIGNwdS5jOjQ3OjE6IHdhcm5pbmc6ICJDUFVfVFlQRV9FTlRSWSIgcmVkZWZpbmVkCiAgICBJbiBmaWxlIGluY2x1ZGVkIGZyb20gY3B1LmM6MzM6CiAgICAvaG9tZS9raW0vZ2l0L3UtYm9vdC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaDo5ODI6MTogd2FybmluZzogdGhpcyBpcyB0aGUgbG9jYXRpb24gb2YgdGhlIHByZXZpb3VzIGRlZmluaXRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGFhYzdhNTA5NWI5NjhkNmM5YTNlNjQyMmYzMWI0YWQyMDNjYWM5YzgKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBKdW4gMjMgMTE6MTU6MDkgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRml4IHByb2JsZW0gaW4gZ3Bpb19jb25maWcoKQoKICAgIEFzIHBvaW50ZWQgb3V0IGJ5IEd1ZW5uYWRpIExpYWtob3ZldHNraSAodGhhbmtzKSwgcGluMiBpcyBhbHJlYWR5IHNoaWZ0ZWQKICAgIGxlZnQgYnkgb25lLiBTbyB0aGUgYWRkaXRpb25hbCBzaGlmdCBpcyBib2d1cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNDA3Nzc4MTIzMTZmYzI1MmM5NDE2NjVjMGY2MGMxNDhmZDc5ZDUwZgpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglGcmkgSnVuIDIwIDIyOjI0OjA1IDIwMDggKzAyMDAKCiAgICBmZHQ6IEZpeCB0eXBvIGluIHZhcmlhYmxlIG5hbWUuCgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgNWY3MjNhM2I5OGM2MzBiZGUzM2RlNzQzNTFmMjEyMTY5MWZkZWYxNApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJRnJpIEp1biAyMCAxMDo0MTowNSAyMDA4ICswMjAwCgogICAgYXZyMzI6IEVuYWJsZSBTUEkgZmxhc2ggc3VwcG9ydCBvbiBBVE5HVzEwMAoKICAgIFRoZSBBVE5HVzEwMCBoYXMgOE1CIERhdGFGbGFzaCBvbiBib2FyZC4gR2l2ZSB1c2VycyBhY2Nlc3MgdG8gaXQgdGhyb3VnaAogICAgdGhlIG5ldyBTUEkgZmxhc2ggZnJhbWV3b3JrLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCA1NjA1ZWY2YjU4MDI5MjFjYmVmZTZhOTMzYTlkZWEzNDk3Mzk2YjVjCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglGcmkgSnVuIDIwIDEyOjQ0OjI4IDIwMDggKzAyMDAKCiAgICBhdnIzMjogRml4IFNQSSBwb3J0bXV4IGluaXRpYWxpemF0aW9uCgogICAgVXNlIHRoZSBuZXcgR1BJTyBtYW5pcHVsYXRpb24gZnVuY3Rpb25zIHRvIHNldCB1cCB0aGUgY2hpcCBzZWxlY3QgbGluZXMsCiAgICBhbmQgbWFrZSBzdXJlIGJvdGggYnVzc2VzIHVzZSBHUElPIGZvciBjaGlwIHNlbGVjdCBjb250cm9sLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCA0Njg4ZjllMzRhODdlODI1YWVkMzRkMDdjOWNhN2EyNzNlNmZjOGFiCkF1dGhvcjogUGV0ZXIgTWEgPHBtYUBtZWRpYW1hdGVjaC5jb20+CkRhdGU6CVN1biBKdW4gMSAyMjo1OToyNCAyMDA4IC0wNzAwCgogICAgYXZyMzI6IEFkZCBHUElPIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMKCiAgICBBZGRzIEdQSU8gbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucyBmb3IgQVZSMzIgQVA3IHBsYXRmb3JtLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIE1hIDxwbWFAbWVkaWFtYXRlY2guY29tPgogICAgW2hhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb206IGNvZGluZyBzdHlsZSBmaXh1cCwgc2xpZ2h0IHNpbXBsaWZpY2F0aW9uXQogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGI0ZmUxYTcxMDkwYzczZWZjNmU0MTg4ZWVkMTg4YjJmZjY3ZmMwMmEKQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KRGF0ZToJVGh1IEp1biA1IDEzOjAyOjMwIDIwMDggKzAyMDAKCiAgICBNUEM4MzYwRVJESzogYWRhcHQgTkFORCBpbnRlcmZhY2UgZm9yIHRoZSByZS13cml0dGVuIEZTTCBOQU5EIFVQTSBkcml2ZXIKCiAgICBUaGlzIHBhdGNoIGlzIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgcGF0Y2ggc2VudCBhIGZldyBtaW51dGVzIGFnbzoKICAgICJOQU5EIEZTTCBVUE06IGRyaXZlciByZS13cml0ZSB1c2luZyB0aGUgaHdjb250cm9sIGNhbGxiYWNrIgogICAgSXQgaXMgdW50ZXN0ZWQsIG9mIGNvdXJzZS4gQW50b24sIGNvdWxkIHlvdSBwbGVhc2UgZ2l2ZSBpdCBhIHRyeS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KICAgIEFja2VkLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KCmNvbW1pdCA5NjAyNmQ0MmZhNGU2NDZkMjgzMThjMGExNDM4YWFjNGIyMDE3OTA5CkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglUaHUgSnVuIDEyIDEyOjQwOjExIDIwMDggKzAyMDAKCiAgICBGaXggNHh4IGJ1aWxkIGlzc3VlCgogICAgQnVpbGRpbmcgZm9yIDR4eCBkb2Vzbid0IHdvcmsgc2luY2UgY29tbWl0IDRkYmRiNzY4OgoKICAgIEluIGZpbGUgaW5jbHVkZWQgZnJvbSA0eHhfcGNpZS5jOjI4OgogICAgaW5jbHVkZS9hc20vcHJvY2Vzc29yLmg6OTcxOiBlcnJvcjogZXhwZWN0ZWQgJyknIGJlZm9yZSAndmVyJwogICAgbWFrZVsxXTogKioqIFs0eHhfcGNpZS5vXSBFcnJvciAxCgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgcHJvYmxlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQWNrZWQtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYTAzNmIwNDQzNjU3ZmUwZjQ3NzM3ODZkZTkwOTIyNTE4NjlmMDhhYwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBKdW4gMTkgMDE6NDU6NTAgMjAwOCAtMDUwMAoKICAgIE1QQzg2MTBIUENEOiBSZXBvcnQgYm9hcmQgaWQsIGJvYXJkIHZlcnNpb24gYW5kIGZwZ2EgdmVyc2lvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDdkZThjMjFmMTRkZjljMjBmZGNmNjAyN2FlYzhlODU0NWY3NWY4MzUKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgSnVuIDE5IDAxOjQ1OjI3IDIwMDggLTA1MDAKCiAgICBNUEM4NjQxSFBDTjogUmVwb3J0IGJvYXJkIGlkLCBib2FyZCB2ZXJzaW9uIGFuZCBmcGdhIHZlcnNpb24uCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmYjhjMDYxZWEwNWZjNjhkMzdlMmE4YjlmOGM5NDlkNzZjOGQ3MWE4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gSnVuIDE2IDEwOjQwOjAyIDIwMDggKzAyMDAKCiAgICBjZmktZmxhc2g6IEZpeCBwcm9ibGVtIGluIGZsYXNoX3RvZ2dsZSgpLCBidXN5IHdhcyBub3QgZGV0ZWN0ZWQgcmVsaWFibHkKCiAgICBUaGlzIHBhdGNoIHNpbXBsaWZpZXMgZmxhc2hfdG9nZ2xlKCkgKEFNRCBjb21tYW5kc2V0KSwgd2hpY2ggaXMgdXNlZCB0bwogICAgZGV0ZWN0IGlmIGEgRkxBU0ggZGV2aWNlIGlzIHN0aWxsIGJ1c3kgd2l0aCBlcmFzZS9wcm9ncmFtIG9wZXJhdGlvbnMuIE9uCiAgICA4MDBNSHogQ2FueW9ubGFuZHMvR2xhY2llciBib2FyZHMgKDQ2MEVYL0dUKSB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbgogICAgZGlkIG5vdCBkZXRlY3QgdGhlIGJ1c3kgc3RhdGUgcmVsaWFibHksIHJlc3VsdGluZyBpbiBub24gZXJhc2VkIHNlY3RvcnMKICAgIGV0Yy4gVGhpcyBwYXRjaCBub3cgc2ltcGxpZmllcyB0aGlzIGZ1bmN0aW9uIGJ5ICJqdXN0IiBjb21wYXJpbmcgdGhlCiAgICBjb21wbGV0ZSBkYXRhLXdvcmQgaW5zdGVhZCBvZiBBTkRpbmcgaXQgd2l0aCB0aGUgY29tbWFuZC13b3JkICgweDQwKQogICAgYmVmb3JlIHRoZSBjb21wYXRpc29uLiBJdCBpcyBkb25lIHRoZSBzYW1lIHdheSBpbiB0aGUgTGludXggaW1wbGVtZW50YXRpb24KICAgIGNoaXBfcmVhZHkoKSBpbiBjZmlfY21kc2V0XzAwMDIuYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOWU0MDA2YmNhM2Q5ZmI0YTJkMDYxOTk2NzcxMDM2Y2IwMWU1MzlkMwpBdXRob3I6IFBoaWxpcCBCYWxpc3RlciA8cGhpbGlwQGJhbGlzdGVyLm9yZz4KRGF0ZToJTW9uIEp1biAxNiAwODo1ODowNyAyMDA4IC0wNDAwCgogICAgTkFORDogQWRkIG1pc3NpbmcgZGVjbGFyYXRpb24gdG8gbm9uLXJlZHVuZGFudCBzYXZlZW52KCkuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMmNkYjdmNTBhYzU5NTk0NTQwZmZmZGY4ZGJkN2IxMmJlYWM3OWM1MgpBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgpEYXRlOglNb24gSnVuIDIgMTU6MDk6NTUgMjAwOCArMDIwMAoKICAgIE1QQzgzNjBFUkRLOiBhZGFwdCBOQU5EIGludGVyZmFjZSBmb3IgdGhlIHJlLXdyaXR0ZW4gRlNMIE5BTkQgVVBNIGRyaXZlcgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgogICAgQWNrZWQtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjEyZWQ5MDYxNWMzZDIwZmE2YmQ3M2Q3MGQ1MTUzYmQwZDEyNGU1ZgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEp1biAxMCAxNTozNDoxMSAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBDYW55b25sYW5kczogRGlzYWJsZSB0aGUgUlRDIE00MVQ2MiBzcXVhcmUgd2F2ZSBvdXRwdXQKCiAgICBUaGlzIHBhdGNoIGRpc2FibGVzIHRoZSBzcXVhcmUgd2F2ZSBvdXRwdXQgb2YgdGhlIE00MVQ2MiBSVEMgdXNlZCBvbgogICAgQ2FueW9ubGFuZHMgJiBHbGFjaWVyLiBIZXJlIHRoZSBleHBsYW5hdGlvbjoKCiAgICBUaGUgc2VyaWFsIHJlYWwtdGltZSBjbG9jayBwYXJ0IHVzZWQgaW4gdGhlIGRlc2lnbiBpcyBhbgogICAgU1RNaWNybyBNNDFUNjIuIFRoaXMgcGFydCBoYXMgYSBmdWxsLXRpbWUgMzJLSHogc3F1YXJlIHdhdmUKICAgIG91dHB1dCB0aGF0IGlzIGNvbm5lY3RlZCB0byB0aGUgVG1yQ2xrIGlucHV0IHRvIHRoZQogICAgcHJvY2Vzc29yLiBUaGUgZGVmYXVsdCBzdGF0ZSBmb3IgdGhpcyBzcXVhcmUgd2F2ZSBvdXRwdXQgaXMKICAgIGVuYWJsZWQgc28gdGhlIG91dHB1dCBydW5zIGNvbnRpbnVvdXNseSB3aGVuIHRoZSBib2FyZCBpcwogICAgcG93ZXJlZCBub3JtYWxseSBhbmQgYWxzbyBmcm9tIHRoZSBiYXR0ZXJ5LiBUaGUgVG1yQ2xrIGlucHV0CiAgICB0byB0aGUgcHJvY2Vzc29yIGdvZXMgdG8gZ3JvdW5kIHdoZW4gdGhlIHBvd2VyIGlzIHJlbW92ZWQKICAgIGZyb20gdGhlIGJvYXJkL3Byb2Nlc3NvciwgYW5kIHRoZXJlZm9yZSB0aGUgcnVubmluZyBzcXVhcmUKICAgIHdhdmUgb3V0cHV0IGlzIGRyaXZpbmcgZ3JvdW5kIHdoaWNoIGRyYWlucyB0aGUgYmF0dGVyeSBxdWlja2x5LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhOTRmMjJmMDhmMjgwOTA1OTI2MjE5ZTU2ODU2ODk2NGNiOWVlYjlkCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDExIDE4OjEwOjIwIDIwMDggLTA1MDAKCiAgICBGaXggYnVpbGQgaXNzdWUgd2l0aCBzdHJpbmcuaCBhbmQgbGludXgvc3RyaW5nLmgKCiAgICBUaGlzIGNvbW1pdDoKICAgIGNvbW1pdCAzMzhjYzAzODQ2MWE2Yzc3MDljNWI4NmZkOWEyNDAyMDkzMzhhMWFlCiAgICBBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBEYXRlOiAgIEZyaSBKdW4gNiAxNDoyODoxNCAyMDA4ICswMjAwCgoJdG9vbHMvbWtpbWFnZTogZml4IGNvbXBpbGVyIHdhcm5pbmdzIG9uIHNvbWUgc3lzdGVtcy4KCiAgICBCcm9rZSBidWlsZGluZyBvbiBzb21lIHN5c3RlbXMsIGJlY2F1c2UgdGhlIGhvc3QncyBzdHJpbmcuaCB3YXMgaW50ZXJmZXJpbmcKICAgIHdpdGggdS1ib290J3MgbGludXgvc3RyaW5nLmguICBJdCBkb2Vzbid0IGxvb2sgbGlrZSB3ZSBuZWVkIHRoZSB1LWJvb3Qgb25lIGlmCiAgICB3ZSdyZSBidWlsZGluZyBmb3IgdGhlIGhvc3QsIHNvIG5vdyB3ZSBvbmx5IGluY2x1ZGUgd2hlbiBidWlsZGluZyBpbnNpZGUKICAgIHUtYm9vdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTk3M2UzYzYxNDcyMWJiZjE2OTg4MmZmYzNiZTI2NmE2NjExY2Q2MApBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVuIDkgMTY6MDM6NDAgMjAwOCAtMDUwMAoKICAgIENoYW5nZSBpbml0ZHJhbSgpIHJldHVybiB0eXBlIHRvIHBoeXNfc2l6ZV90CgogICAgVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSByZXR1cm4gdHlwZSBvZiBpbml0ZHJhbSgpIGZyb20gbG9uZyBpbnQgdG8gcGh5c19zaXplX3QuCiAgICBUaGlzIGlzIHJlcXVpcmVkIGZvciBhIGNvdXBsZSBvZiByZWFzb25zOiBsb25nIGludCBsaW1pdHMgdGhlIGFtb3VudCBvZiBkcmFtCiAgICB0byAyR0IsIGFuZCB1LWJvb3QgaW4gZ2VuZXJhbCBpcyBtb3Zpbmcgb3ZlciB0byBwaHlzX3NpemVfdCB0byByZXByZXNlbnQgdGhlCiAgICBzaXplIG9mIHBoeXNpY2FsIG1lbW9yeS4gIHBoeXNfc2l6ZV90IGlzIGRlZmluZWQgYXMgYW4gdW5zaWduZWQgbG9uZyBvbiBhbG1vc3QKICAgIGFsbCBjdXJyZW50IHBsYXRmb3Jtcy4KCiAgICBUaGlzIHBhdGNoICpvbmx5KiBjaGFuZ2VzIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgaW5pdGRyYW0gZnVuY3Rpb24gKGluCiAgICBpbmNsdWRlL2NvbW1vbi5oLCBhcyB3ZWxsIGFzIGluIGVhY2ggYm9hcmQncyBpbXBsZW1lbnRhdGlvbiBvZiBpbml0ZHJhbSkuICBJdAogICAgZG9lcyBub3QgYWN0dWFsbHkgbW9kaWZ5IHRoZSBjb2RlIGluc2lkZSB0aGUgZnVuY3Rpb24gb24gYW55IG9mIHRoZSBwbGF0Zm9ybXM7CiAgICBwbGF0Zm9ybXMgd2hpY2ggd2lzaCB0byBzdXBwb3J0IG1vcmUgdGhhbiAyR0Igb2YgRFJBTSB3aWxsIG5lZWQgdG8gbW9kaWZ5CiAgICB0aGVpciBpbml0ZHJhbSgpIGZ1bmN0aW9uIGNvZGUuCgogICAgQnVpbGQgdGVzdGVkIHdpdGggTUFLRUFMTCBmb3IgcHBjLCBhcm0sIG1pcHMsIG1pcHMtZWwuIEJvb3RlZCBvbiBwb3dlcnBjCiAgICBNUEM4NjQxSFBDTi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzOTFmZDkzYWIyM2UxNWFiM2RkNThhNTRmNWI2MDkwMjQwMDljMzc4CkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdW4gOSAyMDozNzoxOCAyMDA4IC0wNTAwCgogICAgQ2hhbmdlIGxtYiB0byB1c2UgcGh5c19zaXplX3QvcGh5c19hZGRyX3QKCiAgICBUaGlzIHVwZGF0ZXMgdGhlIGxtYiBjb2RlIHRvIHVzZSBwaHlzX3NpemVfdAogICAgYW5kIHBoeXNfYWRkcl90IGluc3RlYWQgb2YgdW5zaWduZWQgbG9uZy4gIE90aGVyIGNvZGUKICAgIHdoaWNoIGludGVyYWN0cyB3aXRoIHRoaXMgY29kZSwgbGlrZSBnZXRlbnZfYm9vdG1fc2l6ZSgpCiAgICBpcyBhbHNvIHVwZGF0ZWQuCgogICAgQm9vdGVkIG9uIE1QQzg2NDFIUENOLCBidWlsZC10ZXN0ZWQgcHBjLCBhcm0sIG1pcHMuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjFiMDlmYzI5NTJkYzYzNjAxN2RmNGU3OTcwZTNkZTEzMjI3NmJhMQpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVuIDkgMjA6Mzc6MTcgMjAwOCAtMDUwMAoKICAgIENoYW5nZSBwcmludF9zaXplIHRvIHRha2UgcGh5c19zaXplX3QKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiNTdjYTNlMTI4Y2MxMGExMzNiYTc5YmM3ZWMzZTdiNTBlN2M4ZmJlCkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdW4gOSAyMDozNzoxNiAyMDA4IC0wNTAwCgogICAgQ2hhbmdlIGJkL2dkIG1lbXNpemUvcmFtX3NpemUgdG8gYmUgcGh5c19zaXplX3QuCgogICAgQ3VycmVudGx5LCBib3RoIGFyZSBkZWZpbmVkIGFzIGFuIHVuc2lnbmVkIGxvbmcsIGJ1dAogICAgc2hvdWxkIGJlIHBoeXNfc2l6ZV90LiBUaGlzIHNob3VsZCByZXN1bHQgaW4gbm8gcmVhbCBjaGFuZ2UsCiAgICBzaW5jZSBwaHlzX3NpemVfdCBpcyBjdXJyZW50bHkgYW4gdW5zaWduZWQgbG9uZyBmb3IgYWxsIHRoZQogICAgZGVmYXVsdCBjb25maWdzLiAgQWxzbyBhZGQgcHJpbnRfbG51bSB0byBjbWRfYmRpbmZvIHRvIGRlYWwKICAgIHdpdGggdGhlIHBvdGVudGlhbGx5IHdpZGVyIG1lbXNpemUuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYmEwNGY3MDEwOTU4ZTg4YTg5MTBmMmExMjNmZWU1M2ZkYzcyZTAxMwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBKdW4gMTAgMTY6MTY6MDIgMjAwOCAtMDUwMAoKICAgIEZTTCBMQVc6IEFkZCBuZXcgaW50ZXJmYWNlIHRvIHVzZSB0aGUgbGFzdCBmcmVlIExBVwoKICAgIExBV3MgaGF2ZSB0aGUgY29uY2VwdCBvZiBwcmlvcml0eSBzbyBpdHMgdXNlZnVsIHRvIGJlIGFibGUgdG8gYWxsb2NhdGUKICAgIHRoZSBsb3dlc3QgKGhpZ2hlc3QgbnVtYmVyKSBwcmlvcml0eS4gIFdlIHdpbGwgZW5kIHVwIHVzaW5nIHRoaXMgd2l0aCB0aGUKICAgIG5ldyBERFIgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDg1OWE4NmEyNWM1NjlkMzY2NWZmNDEzZDFkOTIzMzk0YjhhOTYxZjMKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgSnVuIDExIDAwOjUxOjQ1IDIwMDggLTA1MDAKCiAgICA4NXh4Lzg2eHg6IE1vdmUgdG8gZHluYW1pYyBtZ210IG9mIExBV3MKCiAgICBXaXRoIHRoZSBuZXcgTEFXIGludGVyZmFjZSAoc2V0X25leHRfbGF3KSB3ZSBjYW4gbW92ZSB0byBsZXR0aW5nIHRoZQogICAgc3lzdGVtIGFsbG9jYXRlIHdoaWNoIExBV3MgYXJlIHVzZWQgZm9yIHdoYXQgcHVycG9zZS4gIFRoaXMgbWFrZXMgbGlmZQogICAgYSBiaXQgZWFzaWVyIGdvaW5nIGZvcndhcmQgd2l0aCB0aGUgbmV3IEREUiBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmMDYwMDU0ZGFkYmJlNzAyN2NhMDg4ZWVkODA2YTNlZjFmODJmZGI3CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEp1biAxMSAwMDo0NDoxMCAyMDA4IC0wNTAwCgogICAgRlNMIExBVzogS2VlcCB0cmFjayBvZiBMQVcgYWxsb2NhdGlvbnMKCiAgICBNYWtlIGl0IHNvIHdlIGtlZXAgdHJhY2sgb2Ygd2hpY2ggTEFXcyBoYXZlIGFsbG9jYXRlZCBhbmQgcHJvdmlkZQogICAgYSBmdW5jdGlvbiAoc2V0X25leHRfbGF3KSB3aGljaCBjYW4gYWxsb2NhdGUgYSBMQVcgZm9yIHVzIGlmIG9uZSBpcwogICAgZnJlZS4KCiAgICBJbiB0aGUgZnV0dXJlIHdlIHdpbGwgbW92ZSB0byBkb2luZyBtb3JlICJkeW5hbWljIiBMQVcgYWxsb2NhdGlvbgogICAgc2luY2UgdGhlIG1ham9yaXR5IG9mIHVzZXJzIGRvbnQgcmVhbGx5IGNhcmUgYWJvdXQgd2hhdCBMQVcgbnVtYmVyCiAgICB0aGV5IGFyZSBhdC4KCiAgICBBbHNvLCBhZGQgQ09ORklHX01QQzg1NDAgb3IgQ09ORklHX01QQzg1NjAgdG8gdGhvc2UgYm9hcmRzIHdoaWNoIG5lZWRlZCB0aGVtCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkZGRlNzRhMTU5Y2FhNmUxOGI0ODFmZWMwMWQ0MGI4ODVhZWJiNTY2CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIEp1biA5IDIyOjMxOjU3IDIwMDggLTA1MDAKCiAgICA4NXh4OiByZW1vdmUgZHVtbXkgYm9hcmRfZWFybHlfaW5pdF9mCgogICAgQSBudW1iZXIgb2YgYm9hcmQgcG9ydHMgaGF2ZSBlbXB0eSB2ZXJzaW9uIG9mIGJvYXJkX2Vhcmx5X2luaXRfZgogICAgZm9yIG5vIHJlYXNvbiBzaW5jZSB3ZSBjb250cm9sIGl0cyB2aWEgQ09ORklHX0JPQVJEX0VBUkxZX0lOSVRfRi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDgxZTU2ZTlhZjBkNDM3MTJkYjhlZmI4NDM2MDZhOGQ2MmVhYjQ1NGYKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gSnVuIDkgMTg6NTU6MzggMjAwOCAtMDUwMAoKICAgIE1QQzg1NDREUzogVXBkYXRlIGNvbmZpZy5oCgogICAgKiBFbmFibGUgZmxhc2ggcHJvZ3Jlc3MKICAgICogcmVtb3ZlIENMRUFSX0xBVzAgc2luY2Ugd2UgZG9udCByZWFsbHkgdXNlIGl0CgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA5NzhlODE2MDRjMWIyODUyNmVkNTgwZGYwZmJlNjRlYjgzODRlOTRmCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIEp1biA5IDEzOjM3OjI0IDIwMDggLTA1MDAKCiAgICA4NXh4OiBSZW1vdmUgdW51c2VkIGFuZCB1bmNvbmZpZ3VyZWQgbWVtb3J5IHRlc3QgY29kZS4KCiAgICBSZW1vdmUgdW51c2VkIGFuZCB1bmNvbmZpZ3VyZWQgRERSIHRlc3QgY29kZSBmcm9tIEZTTCA4NXh4IGJvYXJkcy4KICAgIEJlc2lkZXMsIG90aGVyIGNvbW1vbiBjb2RlIGV4aXN0cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGEyM2NkZGRlMWE5NWY5ODdlM2ZlMmE3MjBhN2VjOTM3NWI3MjY0ZDcKQXV0aG9yOiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgpEYXRlOglGcmkgSnVuIDYgMTU6NDI6NDUgMjAwOCArMDIwMAoKICAgIFNvY3JhdGVzOiBBZGRlZCBGUEdBIGJhc2UgYWRkcmVzcyB1cGRhdGUgaW4gRkRULgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Cgpjb21taXQgZmQ1MWIwZTBlNjIwYjhiYzlmZDRmNmRhYTNhNGZhNmY1ZTEzMTZmNApBdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CkRhdGU6CUZyaSBKdW4gNiAxNTo0Mjo0NCAyMDA4ICswMjAwCgogICAgU29jcmF0ZXM6IE5BTkQgc3VwcG9ydCBhZGRlZC4gQ2hhbmdlZCB0aGUgVS1Cb290IGJhc2UgYWRkcmVzcyBhbmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgoKY29tbWl0IDI0OGFlNWNmYzhiZjY5MDc0ZDFkYTA5OWRjNDk1ZDhlMDYwNzA1NDcKQXV0aG9yOiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgpEYXRlOglGcmkgSnVuIDYgMTU6NDI6NDMgMjAwOCArMDIwMAoKICAgIE5BTkQ6IEFkZGVkIHN1cHBvcnQgZm9yIDEyOC1iaXQgT09CLCBhZGFwdGVkCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KCmNvbW1pdCAzMWNhMDIwODYxMmYyZWI1NzY5MDExMGQ3YzI4MTU5NTM2NTBlNDdiCkF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KRGF0ZToJRnJpIEp1biA2IDE1OjQyOjQyIDIwMDggKzAyMDAKCiAgICBTb2NyYXRlczogYWRkZWQgbWlzc2VkIGZpbGUgd2l0aCBVUE1BIGNvbmZpZ3VyYXRpb24gZGF0YS4KCiAgICBTaWduZWQtb2YtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Cgpjb21taXQgNTlhYmQxNWI0M2NhYjdhNGQxOWRlNGJhMDk0MzgzN2Q5NTU1ZjdiYQpBdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CkRhdGU6CUZyaSBKdW4gNiAxNTo0Mjo0MSAyMDA4ICswMjAwCgogICAgU29jcmF0ZXM6IEFkZGVkIEZQR0EgbWFwcGluZy4gTEFXcyBhbmQgVExCcyBjbGVhbnVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Cgpjb21taXQgNzQwMjgwZTY4Y2NjMGI5NzFlNjEzZmFjZTdlYWFhOGJkMTM4MmI4YwpBdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CkRhdGU6CUZyaSBKdW4gNiAxNTo0Mjo0MCAyMDA4ICswMjAwCgogICAgQWRkZWQgdGhlIHVwbWNvbmZpZygpIGZ1bmN0aW9uIGZvciA4NXh4LgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDM5ZTY4NTE0ZmY5NDM5MzBlZTY5MmNmZjNmZGUwMzUzMmViN2ZlYwpBdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CkRhdGU6CUZyaSBKdW4gNiAxNTo0MjozOSAyMDA4ICswMjAwCgogICAgU29jcmF0ZXM6IGNvbmZpZyBmaWxlIGNsZWFudXAuCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KCmNvbW1pdCBlOGNjM2YwNGIxMjRmNzU3YWY0NTI4MjA2ZTYwZDhlYjcxNWFlMDgzCkF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+CkRhdGU6CVRodSBKdW4gNSAxMzoxMjoxMCAyMDA4ICswMjAwCgogICAgVFFNODV4eDogQ2hhbmdlIG1lbW9yeSBtYXAgdG8gc3VwcG9ydCBGbGFzaCBtZW1vcnkgPiAxMjggTWlCCgogICAgU29tZSBUUU04NXh4IGJvYXJkcyBjb3VsZCBiZSBlcXVpcHBlZCB3aXRoIHVwIHRvIDEgR2lCIChOT1IpIEZsYXNoCiAgICBtZW1vcnkuIFRoZSBjdXJyZW50IG1lbW9yeSBtYXAgb25seSBzdXBwb3J0cyB1cCB0byAxMjggTWlCIEZsYXNoLgogICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBDT05GSUdfVFFNX0JJR0ZMQVNILiBJZgogICAgc2V0LCB1cCB0byAxIEdpQiBmbGFzaCBpcyBzdXBwb3J0ZWQuIFRvIGFjaGlldmUgdGhpcywgdGhlIG1lbW9yeQogICAgbWFwIGhhcyB0byBiZSBhZGp1c3RlZCBpbiBncmVhdCBwYXJ0cyAoZm9yIGV4YW1wbGUgdGhlIENDU1JCQVIgaXMKICAgIG1vdmVkIGZyb20gMHhFMDAwMDAwMCB0byAweEEwMDAwMDAwKS4KCiAgICBJZiB5b3Ugd2FudCB0byBib290IExpbnV4IHdpdGggQ09ORklHX1RRTV9CSUdGTEFTSCBzZXQsIHRoZSBuZXcKICAgIG1lbW9yeSBtYXAgYWxzbyBoYXMgdG8gYmUgY29uc2lkZXJlZCBpbiB0aGUga2VybmVsIChjaGFuZ2VkCiAgICBDQ1NSQkFSIGFkZHJlc3MsIGNoYW5nZWQgUENJIElPIGJhc2UgYWRkcmVzcywgLi4uKS4gUGxlYXNlIHVzZQogICAgYW4gYXBwcm9wcmlhdGUgRmxhdCBEZXZpY2UgVHJlZSBibG9iICh0cW04NTQ4LmR0YikuCgogICAgU2lnbmVkLW9mZi1ieTogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KCmNvbW1pdCAxYzJkZWZmMjJjZDZlMmJmMGU2MThmZDZlMDljYTNlZWM1YThkMDUxCkF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+CkRhdGU6CVRodSBKdW4gNSAxMzoxMjowOSAyMDA4ICswMjAwCgogICAgVFFNODV4eDogTkFORCBzdXBwb3J0IHZpYSBsb2NhbCBidXMgVVBNQgoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBOQU5EIEZMQVNIIG9uIHRoZSBUUU04NTQ4LiBJdCBpcyBkaXNhYmxlZCBieQogICAgZGVmYXVsdCBhbmQgY2FuIGJlIGVuYWJsZWQgZm9yIHRoZSBUUU04NTQ4IG1vZHVsZXMuIEl0IGlzIG5vdyBiYXNlZCBvbgogICAgdGhlIHJlLXdyaXR0ZW4gRlNMIE5BTkQgVVBNIGRyaXZlci4gQSBwYXRjaCBoYXMgYmVlbiBwb3N0ZWQgZWFybGllciB0b2RheQogICAgd2l0aCB0aGUgc3ViamVjdDoKCiAgICAiTkFORCBGU0wgVVBNOiBkcml2ZXIgcmUtd3JpdGUgdXNpbmcgdGhlIGh3Y29udHJvbCBjYWxsYmFjayIKCiAgICBOb3RlIHRoYXQgdGhlIFIvQiBwaW4gaXMgbm90IHN1cHBvcnRlZCBieSB0aGF0IG1vZHVsZSByZXF1aXJpbmcgdG8gdXNlCiAgICB0aGUgc3BlY2lmaWVkIG1heGltdW0gZGVsYXkgdGltZS4KCiAgICBOb3RlOiBXaXRoIE5BTkQgc3VwcG9ydCBlbmFibGVkIHRoZSBzaXplIG9mIHRoZSBVLUJvb3QgaW1hZ2UgZXhjZWVkcwogICAgMjU2IEtCIGFuZCBURVhUX0JBU0UgbXVzdCB0aGVyZWZvcmUgYmUgc2V0IHRvIDB4ZmZmODAwMDAgaW4gY29uZmlnLm1rLAogICAgZG91YmxpbmcgdGhlIGltYWdlIHNpemUgOi0oLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBXYWVobmVyIDx0aG9tYXMud2FlaG5lckB0cXMuZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KCmNvbW1pdCBiOWU4MDc4YmIzZjNjNDgxMTFhNzA4MWUyNzI3OTkzOGMzYTQ0NWUxCkF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+CkRhdGU6CVRodSBKdW4gNSAxMzoxMjowOCAyMDA4ICswMjAwCgogICAgVFFNODU0ODogUENJIGV4cHJlc3Mgc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBQQ0kgZXhwcmVzcyBjYXJkcy4gVGhlIGJvYXJkIHN1cHBvcnQKICAgIG5vdyB1c2VzIGNvbW1vbiBGU0wgUENJIGluaXQgY29kZSwgZm9yIGJvdGgsIFBDSSBhbmQgUENJZSBvbiBhbGwKICAgIFRRTTg1eHggbW9kdWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgV2FlaG5lciA8dGhvbWFzLndhZWhuZXJAdHFzLmRlPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Cgpjb21taXQgMTI4N2UwYzU1YTJlZTJjNTc1YWM5Y2U4ZTQzMDJjZDQwODViZTg3NgpBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgpEYXRlOglUaHUgSnVuIDUgMTM6MTI6MDcgMjAwOCArMDIwMAoKICAgIFRRTTg1NDg6IEJhc2ljIHN1cHBvcnQgZm9yIHRoZSBUUU04NTQ4IG1vZHVsZXMKCiAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgc3VwcG9ydCBmb3IgdGhlIFRRTTg1NDggbW9kdWxlIGZyb20gVFEtQ29tcG9uZW50cwogICAgKGh0dHA6Ly93d3cudHFjLmRlLykgaW5jbHVkaW5nIEREUjIgU0RSQU0gaW5pdGlhbGlzYXRpb24gYW5kIHN1cHBvcnQgZm9yCiAgICBlVFNFQyAzIGFuZCA0CgogICAgRnVydGhlcm1vcmUgRmxhc2ggYnVmZmVyIHdyaXRlIGhhcyBiZWVuIGVuYWJsZWQgdG8gc3BlZWQgdXAgb3V0cHV0IHRvCiAgICB0aGUgRmxhc2ggYnkgYXBwcm94LiBhIGZhY3RvciBvZiAxMC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgV2FlaG5lciA8dGhvbWFzLndhZWhuZXJAdHFzLmRlPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Cgpjb21taXQgMjU5OTEzNTMyMDRjNzhiMDk0YzNjMWZlYzkwMTgyZGNkNjA3YWI4ZgpBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgpEYXRlOglUaHUgSnVuIDUgMTM6MTI6MDYgMjAwOCArMDIwMAoKICAgIFRRTTg1eHg6IFN1cHBvcnQgZm9yIEZsYXQgRGV2aWNlIFRyZWUKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgTGludXgga2VybmVscyB1c2luZyB0aGUgRmxhdCBEZXZpY2UgVHJlZS4KICAgIEl0IGFsc28gcmUtZGVmaW5lcyB0aGUgZGVmYXVsdCBlbnZpcm9ubWVudCBzZXR0aW5ncyBmb3IgYm9vdGluZyBMaW51eAogICAgd2l0aCB0aGUgRkRUIGJsb2IuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Cgpjb21taXQgZDllZTg0M2Q1NGM1NDc3NmUxZmRiODYzMzZjZTU1NDkwNmE4NzMzMQpBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgpEYXRlOglUaHUgSnVuIDUgMTM6MTI6MDUgMjAwOCArMDIwMAoKICAgIFRRTTg1eHg6IFN1cHBvcnQgZm9yIEludGVsIDgyNTI3IGNvbXBhdGlibGUgQ0FOIGNvbnRyb2xsZXIKCiAgICBUaGlzIHBhdGNoIGFkZHMgaW5pdGlhbGl6YXRpb24gb2YgdGhlIFVQTUMgUkFNIHRvIHN1cHBvcnQgdXAgdG8gdHdvCiAgICBJbnRlbCA4MjUyNyBjb21wYXRpYmxlIENBTiBjb250cm9sbGVyIG9uIHRoZSBUUU04NXh4IG1vZHVsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIFdhZWhuZXIgPHRob21hcy53YWVobmVyQHRxcy5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgoKY29tbWl0IDUxOGQ1Y2ZlNzI5MTYzMjNjNzQ2YWYxNjQ3NzY0NDU5OTE0ZjU1NWYKQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KRGF0ZToJVGh1IEp1biA1IDEzOjEyOjA0IDIwMDggKzAyMDAKCiAgICBUUU04NXh4OiBCdWdmaXggaW4gdGhlIFNEUkFNIGluaXRpYWxpc2F0aW9uCgogICAgVGhlIENTMF9CTkRTIHJlZ2lzdGVyIGlzIG5vdyBzZXQgYWNjb3JkaW5nIHRvIHRoZSBkZXRlY3RlZAogICAgbWVtb3J5IHNpemUuCgogICAgU2lnbmVkLW9mZi1ieSBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KCmNvbW1pdCA0NWRlZTJlNjIwY2NlYzZhYzdiMzU0OGZlODk3OWEzNGZkMDMwZTVkCkF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+CkRhdGU6CVRodSBKdW4gNSAxMzoxMjowMyAyMDA4ICswMjAwCgogICAgVFFNODV4eDogRml4IGNoaXAgc2VsZWN0IGNvbmZpZ3VyYXRpb24gZm9yIHNlY29uZCBGTEFTSCBiYW5rCgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgcmUtY2FsY3VsYXRpb24gb2YgdGhlIGF1dG9tYXRpYyBjaGlwIHNlbGVjdAogICAgY29uZmlndXJhdGlvbiBmb3IgYm9hcmRzIHdpdGggdHdvIHBvcHVsYXRlZCBGTEFTSCBiYW5rcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KCmNvbW1pdCA0NjM0NmYyN2NkYTZmZDAyNWE0OTZiZGU4ZjJkNGFlZWUwNGFjYTVmCkF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+CkRhdGU6CVRodSBKdW4gNSAxMzoxMjowMiAyMDA4ICswMjAwCgogICAgVFFNODV4eDogU3VwcG9ydCBmb3IgU3BhbnNpb24gJ04nIHR5cGUgZmxhc2hlcyBhZGRlZAoKICAgIFRoZSAnTicgdHlwZSBTcGFuc2lvbiBmbGFzaGVzIChTMjlHTHh4eE4gc2VyaWVzKSBoYXZlIGJpZ2dlciBzZWN0b3JzLAogICAgdGhhbiB0aGUgZm9ybWVybHkgdXNlZCAnTScgdHlwZXMgKFMyOUdMeHh4TSBzZXJpZXMpLCBzbyB0aGUgZmxhc2ggbGF5b3V0CiAgICBuZWVkcyB0byBiZSBjaGFuZ2VkIC0+IG5ldyBzdGFydCBhZGRyZXNzIG9mIHRoZSBlbnZpcm9ubWVudC4gVGhlIG1hY3JvCiAgICBkZWZpbml0aW9uIENPTkZJR19UUU1fRkxBU0hfTl9UWVBFIGlzIHVuZGVmaW5lZCBieSBkZWZhdWx0IGFuZCBtdXN0IGJlCiAgICBkZWZpbmVkIGZvciBib2FyZHMgd2l0aCAnTicgdHlwZSBmbGFzaGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Cgpjb21taXQgNWQ1YmQ4MzhmNzZlYWRlMjJjMGVhNDBhNTAwMzg5ZjkyNGQwZGEzNgpBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgpEYXRlOglUaHUgSnVuIDUgMTM6MTI6MDEgMjAwOCArMDIwMAoKICAgIFRRTTg1eHg6IEZpeCBDUE0gcG9ydCBwaW4gY29uZmlndXJhdGlvbgoKICAgIERvIG5vdCBjb25maWd1cmUgcG9ydCBwaW5zIFBEMzAvUEQzMSBhcyBTQ0MxIFR4RC9SeEQgZXhjZXB0IGZvciB0aGUgVFFNODU2MAogICAgYm9hcmQuIE9uIHRoZSBvdGhlciBUUU04NXh4IGJvYXJkcyAoVFFNODU0MSBhbmQgVFFNODU1NSkgU0NDMSBpcyBub3QgdXNlZAogICAgYXMgc2VyaWFsIGludGVyZmFjZSBhbnl3YXkuIFdvcnNlLCBvbiBzb21lIGJvYXJkIHZhcmlhbnRzIGNvbmZpZ3VyaW5nIHRoZQogICAgcGlucyBmb3IgU0NDMSBsZWFkcyB0byBzaG9ydCBjaXJjdWl0cyAoZm9yIGV4YW1wbGUgb24gdGhlIFRRTTg1NDEtQkcpLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgoKY29tbWl0IGI5OWJhMTY3OWU4Y2Q1MWIwMjNlNjcwOThjODllNjA2ZTQ3MTM3ZDIKQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KRGF0ZToJVGh1IEp1biA1IDEzOjEyOjAwIDIwMDggKzAyMDAKCiAgICBUUU04NXh4OiBWYXJpb3VzIGNvZGluZyBzdHlsZSBmaXhlcwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgoKY29tbWl0IGFlOWU5N2ZhOTZmNjQzYzhiYTJiNjY2YjA2YTAyNmNjODcxN2ViMDAKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglUdWUgSnVuIDEwIDIyOjE1OjU4IDIwMDggLTA0MDAKCiAgICBsaWJmZHQ6IE1vdmUgdGhlIHdvcmtpbmdfZmR0IHBvaW50ZXIgdG8gY21kX2ZkdC5jCgogICAgVGhlIHdvcmtpbmdfZmR0IHBvaW50ZXIgd2FzIGRlY2xhcmVkIGluIGNvbW1vbi9mZHRfc3VwcG9ydC5jIGJ1dCB3YXMKICAgIG5vdCB1c2VkIHRoZXJlLiAgTW92ZSBpdCB0byBjb21tb24vY21kX2ZkdC5jIHdoZXJlIGl0IGlzIHVzZWQgKGl0IGlzCiAgICBhbHNvIHVzZWQgaW4gbGliX3BwYy9ib290bS5jKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IGU0ODliOWMwNzhlMjJiMGQ5ZTc1ZjAwMmNkMmExYmQ5NjdlODhmNWUKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSnVuIDEwIDExOjA2OjE3IDIwMDggLTA1MDAKCiAgICBmZHQ6IHVuc2hhZG93IGdsb2JhbCB3b3JraW5nIGZkdCB2YXJpYWJsZQoKICAgIGRpZmZlcmVudGlhdGUgd2l0aCBsb2NhbCB2YXJpYWJsZXMgb2YgdGhlIHNhbWUgbmFtZSBieSByZW5hbWluZyB0aGUKICAgIGdsb2JhbCAnZmR0JyB2YXJpYWJsZSAnd29ya2luZ19mZHQnLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZTFlYjBlMjVkOWQ4ZmQ4ZWZkZmI5M2Y2NzBhNDE3NjYzZjM4NjAyMgpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEp1biAxMCAxODo0OTozNCAyMDA4IC0wNTAwCgogICAgc29jcmF0ZXM6IEZpeCBQQ0kgY2xrIGZpeCBwYXRjaAoKICAgIFRoZSBzdWJtaXR0ZWQgcGF0Y2ggc2VlbXMgdG8gaGF2ZSBiZWVuIG1vcmUgdXAtdG8tZGF0ZSwgYnV0IGFuIG9sZGVyIHBhdGNoIHdhcwogICAgYWxyZWFkeSBpbiB0aGUgcmVwb3NpdG9yeS4JVGhpcyBwYXRjaCBlbmNvbXBhc3NlcyB0aGUgZGlmZmVyZW5jZXMKCiAgICBUYWtlbiBlbnRpcmVseSBmcm9tIFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGE3NWE1N2VmNmU0YjYxM2M4MTQzNDk3MWU5NmVkNzBjZjllYzliYTAKQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KRGF0ZToJVGh1IEp1biA1IDEzOjAyOjI5IDIwMDggKzAyMDAKCiAgICBOQU5EIEZTTCBVUE06IGRyaXZlciByZS13cml0ZSB1c2luZyB0aGUgaHdjb250cm9sIGNhbGxiYWNrCgogICAgVGhpcyBpcyBhIHJlLXdyaXRlIG9mIHRoZSBOQU5EIEZTTCBVUE0gZHJpdmVyIHVzaW5nIHRoZSBtb3JlIHVuaXZlcnNhbAogICAgaHdjb250cm9sIGNhbGxiYWNrIChpbnN0ZWFkIG9mIHRoZSBjbWRmdW5jIGNhbGxiYWNrKS4gSGVyZSBpcyBhIGJyaWVmCiAgICBsaXN0IG9mIGZ1cmhlciBtb2RpZmljYXRpb25zOgoKICAgIC0gRm9yIHRoZSB0aW1lIGJlaW5nLCB0aGUgVVBNIHNldHVwIHdyaXRpbmcgdGhlIFVQTSBhcnJheSBoYXMgYmVlbgogICAgICByZW1vdmVkIGZyb20gdGhlIGRyaXZlciBhbmQgbXVzdCBub3cgYmUgZG9uZSBieSB0aGUgYm9hcmQgc3BlY2lmaWMKICAgICAgY29kZS4KCiAgICAtIFRoZSBidXMgd2lkdGggZGVmaW5pdGlvbiBpbiAic3RydWN0IGZzbF91cG1fbmFuZCIgaXMgbm93IGluIGJpdHMgdG8KICAgICAgY29tcGx5IHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgTGludXggZHJpdmVyIGFuZCA4LCAxNiBhbmQgMzIgYml0CiAgICAgIGFjY2Vzc2VzIGFyZSBzdXBwb3J0ZWQuCgogICAgLSBjaGlwLT5kZXZfcmVhZCBpcyBvbmx5IHNldCBpZiBmdW4tPmRldl9yZWFkeSAhPSBOVUxMLCB3aGljaCBpcwogICAgICByZXF1aXJlZCBmb3IgYm9hcmRzIG5vdCBjb25uZWN0aW5nIHRoZSBSL0IgcGluLgoKICAgIC0gQSBmZXcgaXNzdWUgaGF2ZSBiZWVuIGZpeGVkIHdpdGggTXhNUiBiaXQgbWFuaXB1bGF0aW9uIGxpa2UgaW4gdGhlCiAgICAgIGNvcnJlc3BvbmRpbmcgTGludXggZHJpdmVyLgoKICAgIE5vdGU6IEkgdGhpbmsgdGhlICJpb19hZGRyIiBmaWVsZCBvZiAic3RydWN0IGZzbF91cG0iIGNvdWxkIGJlIHJlbW92ZWQKCSAgYXMgd2VsbCwgYmVjYXVzZSB0aGUgYWRkcmVzcyBpcyBhbHJlYWR5IGRldGVybWluZWQgYnkKCSAgIm5hbmQtPklPX0FERFJfW1JXXSIsIGJ1dCBJJ20gbm90IDEwMCUgc3VyZS4KCiAgICBUaGlzIHBhdGNoIGhhcyBiZWVuIHRlc3RlZCBvbiBhIFRRTTg1NDggbW9kdWxlcyB3aXRoIHRoZSBOQU5EIGNoaXAKICAgIE1pY3JvbiBNVDI5RjhHMDhGQUJXUC4KCiAgICBUaGlzIHBhdGNoIGlzIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgcGF0Y2hlcyBwb3N0ZWQgdG8gdGhpcyBsaXN0IGEgZmV3CiAgICBtaW51dGVzIGFnbzoKCiAgICAgIFBQQzogYWRkIGFjY2Vzc29yIG1hY3JvcyB0byBjbGVhciBhbmQgc2V0IGJpdHMgaW4gb25lIHNob3QKICAgICAgODN4eC84NXh4Lzg2eHg6IGFkZCBtb3JlIE14TVIgbG9jYWwgYnVzIGRlZmluaXRpb25zCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+CiAgICBBY2tlZC1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Cgpjb21taXQgNmJlZWNmYmI1NDI5OTJlZWRlNTgzMTI0MGNkNTg2NzgyNzQ2ODNhOQpBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgpEYXRlOglUaHUgSnVuIDUgMTM6MTE6NTkgMjAwOCArMDIwMAoKICAgIE1QQzg1eHg6IEJlYXV0aWZ5IGJvb3Qgb3V0cHV0IG9mIEwyIGNhY2hlIGNvbmZpZ3VyYXRpb24KCiAgICBUaGUgYm9vdCBvdXRwdXQgaXMgbm93IGFsaWduZWQgcG9wZXJseSB3aXRoIG90aGVyIGJvb3Qgb3V0cHV0CiAgICBsaW5lcywgZS5nLjoKCiAgICAgIEZMQVNIOiAxMjggTUIKICAgICAgTDI6ICAgIDUxMiBLQiBlbmFibGVkCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Cgpjb21taXQgMzk4NDE1MTE0ZjBhNzA1MTYzYTE0NTQzZTlmZWYwM2Y3MzRiMWZmYQpBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgpEYXRlOglXZWQgSnVuIDQgMTI6NDU6MjIgMjAwOCArMDIwMAoKICAgIFBQQzogYWRkIGFjY2Vzc29yIG1hY3JvcyB0byBjbGVhciBhbmQgc2V0IGJpdHMgaW4gb25lIHNob3QKCiAgICBQUEM6IGFkZCBhY2Nlc3NvciBtYWNyb3MgdG8gY2xlYXIgYW5kIHNldCBiaXRzIGluIG9uZSBzaG90CgogICAgVGhpcyBwYXRjaCBhZGRzIG1hY3JvcyBmcm9tIGxpbnV4L2luY2x1ZGUvYXNtLXBvd2VycGMvaW8uaCB0byBjbGVhciBhbmQKICAgIHNldCBiaXRzIGluIG9uZSBzaG90IHVzaW5nIHRoZSBpbl9iZTMyLCBvdXRfYmUzMiwgZXRjLiBhY2Nlc3NvciBmdW5jdGlvbnMuCiAgICBUaGV5IGFyZSB2ZXJ5IGhhbmR5IHRvIG1hbmlwdWxhdGUgYml0cyBpdCBJL08gcmVnaXN0ZXJzLgoKICAgIFRoaXMgcGF0Y2ggaXMgcmVxdWlyZWQgZm9yIG15IGZvcnRoY29taW5nIEZTTCBOQU5EIFVQTSBkcml2ZXIgcmUtd3JpdGUgYW5kCiAgICB0aGUgc3VwcG9ydCBmb3IgdGhlIFRRTTg1NDggbW9kdWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgoKY29tbWl0IDQ2Nzc5ODhjN2VkYzA3MGMzNzg2ZDNkYjc5OTRhYmVjYTNhYjgyYTAKQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KRGF0ZToJV2VkIEp1biA0IDEzOjUyOjE3IDIwMDggKzAyMDAKCiAgICBUUU06IG1vdmUgVFFNIGJvYXJkcyB0byBib2FyZC90cWMKCiAgICBNb3ZlIGFsbCBUUU0gYm9hcmQgZGlyZWN0b3JpZXMgdG8gdGhlIHZlbmRvciBzcGVjaWZpYyBkaXJlY3RvcnkgInRxYyIKICAgIGZvciBtb2R1bGVzIGZyb20gVFEtQ29tcG9uZW50cyBHbWJIIChodHRwOi8vd3d3LnRxYy5kZSkuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Cgpjb21taXQgNmZhYjJmZTcyY2E1YmY5NTI4MGNkNTJjZGYzNzhhZjNlNTA2ZWI1MApBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgpEYXRlOglNb24gSnVuIDIgMTI6MDk6MzAgMjAwOCArMDIwMAoKICAgIDgzeHgvODV4eC84Nnh4OiBhZGQgbW9yZSBNeE1SIGxvY2FsIGJ1cyBkZWZpbml0aW9ucwoKICAgIDgzeHgvODV4eC84Nnh4OiBhZGQgbW9yZSBNeE1SIGxvY2FsIGJ1cyBkZWZpbml0aW9ucwoKICAgIFRoaXMgcGF0Y2ggYWRkcyBtb3JlIG1hY3JvIGRlZmluaXRpb25zIGZvciB0aGUgVVBNIE1hY2hpbmUgTW9kZSBSZWdpc3RlcnMKICAgIFRoZXkgYXJlIGNvcGllZCBmcm9tICJpbmNsdWRlL21wYzgyeHguaCIgdG8gc2ltcGxpZnkgdGhlIG1lcmdlIG9mIGFsbCA4eHh4CiAgICBjb21tb24gbG9jYWwgYnVzIGRlZmluaXRpb25zIGludG8gaW5jbHVkZS9hc20tcHBjL2ZzbF9sYmMuaC4gVGhleSBhcmUKICAgIHJlcXVpcmVkIGZvciBteSBmb3J0aGNvbWluZyBGU0wgTkFORCBVUE0gZHJpdmVyIHJlLXdyaXRlIGFuZCB0aGUgc3VwcG9ydAogICAgZm9yIHRoZSBUUU04NTQ4IG1vZHVsZS4KCiAgICBUaGlzIHBhdGNoIGlzIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgdHdvIHBhdGNoZXMgZnJvbSBBbnRvbiBWb3JvbnRzb3Y6CgogICAgaHR0cDovL3d3dy5tYWlsLWFyY2hpdmUuY29tL3UtYm9vdC11c2Vyc0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQvbXNnMDY1MTEuaHRtbAogICAgaHR0cDovL3d3dy5tYWlsLWFyY2hpdmUuY29tL3UtYm9vdC11c2Vyc0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQvbXNnMDY1ODcuaHRtbAoKICAgIEkgbGVhdmUgY29kaW5nIHN0eWxlIHZpb2xhdGlvbiBmaXhlcywgY29kZSBiZWF1dGlmaWNhdGlvbiBhbmQgbmFtZQogICAgY29ycmVjdGlvbnMgdG8gc29tZWJvZHkgZWxzZSA7LSguCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Cgpjb21taXQgYzhjNWZjMjY2ZTQ0OTllMjgzYzI5M2NjYjk3Mjg2MzE1NmFhNDEzNApBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglUaHUgTWF5IDI5IDE4OjE0OjU2IDIwMDggKzA0MDAKCiAgICA4M3h4Lzg1eHg6IGZ1cnRoZXIgbG9jYWxidXMgY2xlYW51cHMKCiAgICBNZXJnZSBtcGM4NXh4LmgncyBMQkMgZGVmaW5lcyB0byBmc2xfbGJjLmguIEFsc28sIGFkb3B0IEFDUyBuYW1lcwogICAgZnJvbSBtcGM4NXh4LmgsIHNvIEFDU18wYjEwIHJlbmFtZWQgdG8gQUNTX0RJVjQsIEFDU18wYjExIHRvIEFDU19ESVYyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgoKY29tbWl0IDQyZGJkNjY3Yzg4ZDQ5Njg4MmQ1M2UyMjY1NmU4OWI2NTQyMDU0OTIKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJV2VkIE1heSAyOCAxODoyMDoxNSAyMDA4ICswNDAwCgogICAgODN4eC84NXh4Lzg2eHg6IGZhY3RvciBvdXQgRnJlZXNjYWxlIExvY2FsYnVzIGRlZmluZXMgb3V0IG9mIG1wYzgzeHguaAoKICAgIFRoaXMgcGF0Y2ggbW92ZXMgRnJlZXNjYWxlIExvY2FsYnVzIGRlZmluZXMgb3V0IG9mIG1wYzgzeHguaCwgc28gd2UgY291bGQKICAgIHVzZSBpdCBvbiBNUEM4NXh4IGFuZCBNUEM4Nnh4IHByb2Nlc3NvcnMuCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Cgpjb21taXQgNzMwYjJmY2Y2ZmNkOWVlYzNlYTg2ZmJiMDg3YzNmOThhYTIzYTc2OQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBNYXkgMjkgMTE6MjI6MDYgMjAwOCAtMDUwMAoKICAgIDg1eHg6IEFkZCBzZXR0aW5nIG9mIGNhY2hlIHByb3BzIGluIHRoZSBkZXZpY2UgdHJlZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDRkYmRiNzY4MWUyNDM0MzE1MzBkZjA3MjU2MjcxOTJhMGM0YWVmZGEKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgSnVuIDEwIDE2OjUzOjQ2IDIwMDggLTA1MDAKCiAgICA4NXh4OiBleHBvc2UgY3B1IGlkZW50aWZpY2F0aW9uCgogICAgVGhlIGN1cnJlbnQgY3B1IGlkZW50aWZpY2F0aW9uIGNvZGUgaXMgdXNlZCBqdXN0IHRvIHJldHVybiB0aGUgbmFtZQogICAgb2YgdGhlIHByb2Nlc3NvciBhdCBib290LiAgVGhlcmUgYXJlIHNvbWUgb3RoZXIgbG9jYXRpb25zIHRoYXQgdGhlIG5hbWUKICAgIGlzIHVzZWZ1bCAoZGV2aWNlIHRyZWUgc2V0dXApLiAgRXhwb3NlIHRoZSBmdW5jdGlvbmFsaXR5IHRvIG90aGVyIGJpdHMKICAgIG9mIGNvZGUuCgogICAgQWxzbywgZHJvcCB0aGUgJ0UnIHN1ZmZpeCBhbmQgYWRkIGl0IG9uIGJ5IGxvb2tpbmcgYXQgdGhlIFNWUiB2ZXJzaW9uCiAgICB3aGVuIHdlIHByaW50IHRoaXMgb3V0LiAgVGhpcyBpcyBtYWlubHkgdG8gYWxsb3cgdGhlIG1vc3QgZmxleGlibGUgdXNlCiAgICBvZiB0aGUgbmFtZS4gIFRoZSBkZXZpY2UgdHJlZSBjb2RlIHRlbmRzIHRvIG5vdCBjYXJlIGFib3V0IHRoZSAnRScgc3VmZml4LgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMjMyOWZlMTEzZDg0N2U0M2NjYThlNGEwZTRlZGQ2MTNiNTBiODQ5MgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdW4gMTAgMTM6MjU6MjQgMjAwOCAtMDUwMAoKICAgIG1wYzgzeHg6IE1WQkxNNzogbWlub3IgYnVpbGQgZml4dXBzCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhMTI5M2U1NDliNTZkYTEzNWVmMzJmZmNhNWI5ZDM1YTE2YWE2ODAyCkF1dGhvcjogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgpEYXRlOglUdWUgSnVuIDEwIDA5OjE0OjA1IDIwMDggKzAyMDAKCiAgICBhZGQgTVBDODM0MyBiYXNlZCBib2FyZCBtdkJsdWVMWU5YLU03IChib2FyZCttYWtlIGZpbGVzKQoKICAgIEFkZCBNUEM4MzQzIGJhc2VkIGJvYXJkIG12Qmx1ZUxZTlgtTTcuCiAgICBJdCdzIGEgc2luZ2xlIGJvYXJkIHN0ZXJlbyBjYW1lcmEgc3lzdGVtLgogICAgUGxlYXNlIHJlYWQgZG9jL1JFQURNRS5tdmJsbTcgZm9yIGRldGFpbHMuCgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjMDA1YjkzOTI1YmE0OWYwN2RhMmFhNzQ4NTI3OTk2ZDkyN2UxNzJmCkF1dGhvcjogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgpEYXRlOglUdWUgSnVuIDEwIDA5OjEzOjE2IDIwMDggKzAyMDAKCiAgICBhZGQgTVBDODM0MyBiYXNlZCBib2FyZCBtdkJsdWVMWU5YLU03IChkb2MrY29uZmlnKQoKICAgIEFkZCBNUEM4MzQzIGJhc2VkIGJvYXJkIG12Qmx1ZUxZTlgtTTcuCiAgICBJdCdzIGEgc2luZ2xlIGJvYXJkIHN0ZXJlbyBjYW1lcmEgc3lzdGVtLgogICAgUGxlYXNlIHJlYWQgZG9jL1JFQURNRS5tdmJsbTcgZm9yIGRldGFpbHMuCgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmOTAyM2FmYmRmZDlmMjdlN2MzOGYzY2NlOTY1NzQ2ZTU2ZDYyZGQzCkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CVRodSBNYXkgMjkgMTg6MTQ6NTYgMjAwOCArMDQwMAoKICAgIDgzeHgvODV4eDogZnVydGhlciBsb2NhbGJ1cyBjbGVhbnVwcwoKICAgIG1vdmUgdGhlIEJSeF8qIGFuZCBPUnhfKiBsZWZ0IGJlaGluZCBpbiBtcGM4NXh4LmgKCiAgICBUaGUgc2FtZSBpcyBuZWVkZWQgZm9yIG1wYzh4eC5oIGFuZCBtcGM4MjYwLmggKGRlZmluZXMgYXJlIGFsbW9zdAogICAgdGhlIHNhbWUsIGp1c3QgZmV3IGRpZmZlcmVuY2VzIHdoaWNoIG5lZWRzIHNvbWUgYXR0ZW50aW9uIHRob3VnaCkuCgogICAgQnV0IHRoZSBiYWQgbmV3cyBmb3IgbXBjOHh4IGFuZCBtcGM4MjYwIGlzIHRoYXQgdGhlcmUgYXJlIGEgbG90IG9mIHVzZXJzCiAgICBvZiB0aGVzZSBkZWZpbmVzLiBTbyB0aGlzIGNsZWFudXAgSSdsbCBsZWF2ZSBmb3IgdGhlICJiZXR0ZXIgdGltZXMiLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiZjMwYmIxZjdjOTU0ZDc4NTVkOWIyMzYyNGIzM2IwMGM1MGI0Njk3CkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CVdlZCBNYXkgMjggMTg6MjA6MTUgMjAwOCArMDQwMAoKICAgIDgzeHgvODV4eC84Nnh4OiBmYWN0b3Igb3V0IEZyZWVzY2FsZSBMb2NhbGJ1cyBkZWZpbmVzIG91dCBvZiBtcGM4M3h4LmgKCiAgICBUaGlzIHBhdGNoIG1vdmVzIEZyZWVzY2FsZSBMb2NhbGJ1cyBkZWZpbmVzIG91dCBvZiBtcGM4M3h4LmgsIHNvIHdlIGNvdWxkCiAgICB1c2UgaXQgb24gTVBDODV4eCBhbmQgTVBDODZ4eCBwcm9jZXNzb3JzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDgyYjRmYzBjZThjY2E5NWU4NTdmYzUxMDIyZTg0MWNiMmRiZWU2YQpBdXRob3I6IFRvciBLcmlsbCA8dG9yQGV4Y2l0by5jb20+CkRhdGU6CU1vbiBKdW4gMiAxNTowOTozMCAyMDA4ICswMjAwCgogICAgQWRkIG1pc3NpbmcgQ1NDT05GSUdfQkFOS19CSVRfMyBkZWZpbmUgdG8gbXBjODN4eC5oCgogICAgU2lnbmVkLW9mZi1ieTogVG9yIEtyaWxsIDx0b3JAZXhjaXRvLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgM2I5MDRjY2I5M2MzMTk2NzI3ZTJlOTg3MGNiMWRmOTAzY2FiMTlhZApBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CU1vbiBKdW4gOSAyMzozNzo0NCAyMDA4ICswOTAwCgogICAgbmV0OiBDb25kaXRpb25hbCBDT0JKUyBpbmNsdXNpb24gb2YgbmV0d29yayBkcml2ZXJzCgogICAgUmVwbGFjZSBDT0JKUy15IHdpdGggYXBwcm9wcmlhdGUgZHJpdmVyIGNvbmZpZyBuYW1lcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAyZmI2OThiZjUwZjRhZmYyNDg1NTgxYTEyZmE2MzRhMDdjMDQwZTRhCkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJTW9uIEp1biA5IDIxOjAyOjE3IDIwMDggLTA0MDAKCiAgICBVc2Ugc3RybmNtcCgpIGZvciB0aGUgZmR0IGNvbW1hbmQKCiAgICBDbGVhbmVyIHRoYW4gZG9pbmcgbXVsdGlwbGUgY29uZGl0aW9uYWxzIG9uIGNoYXJhY3RlcnMuCgogICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCA0N2FiZThhYjI5MGQyNzIxYThlZWFkZmY2NWI5MzllNmFmOGMwMWIwCkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJU2F0IEp1biA3IDEyOjI1OjA1IDIwMDggLTA0MDAKCiAgICBUaGUgZmR0IGJvYXJkc2V0dXAgY29tbWFuZCBjcml0ZXJpYSB3YXMgbm90IHVuaXF1ZQoKICAgIEl0IHdhcyBjaGVja2luZyBqdXN0IGZvciAiYiIsIHdoaWNoIGlzIG5vdCB1bmlxdWUgd2l0aCByZXNwZWN0IHRvIHRoZQogICAgImJvb3QiIGNvbW1hbmQuICBDaGFuZ2UgdG8gY2hlY2sgZm9yICJib2EiW3Jkc2V0dXBdLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgMmYwOGJmYTk1MjZiYWU0ZjQ2MWUwNDM1MzBjZmI5MDNmZWMwZDI3MwpBdXRob3I6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgpEYXRlOglUdWUgTWF5IDIwIDE3OjE5OjExIDIwMDggKzEwMDAKCiAgICBsaWJmZHQ6IFNldmVyYWwgY2xlYW51cHMgdG8gcGFyYW1ldGVyIGNoZWNraW5nCgogICAgVGhpcyBwYXRjaCBtYWtlcyBhIGNvdXBsZSBvZiBzbWFsbCBjbGVhbnVwcyB0byBwYXJhbWV0ZXIgY2hlY2tpbmcgb2YKICAgIGxpYmZkdCBmdW5jdGlvbnMuCgoJLSBJbiBzZXZlcmFsIGZ1bmN0aW9ucyB3aGljaCB0YWtlIGEgbm9kZSBvZmZzZXQsIHdlIHVzZSBhbgogICAgaWRpb20gaW52b2x2aW5nIGZkdF9uZXh0X3RhZygpIGZpcnN0IHRvIGNoZWNrIHRoYXQgd2UgaGF2ZSBpbmRlZWQgYmVlbgogICAgZ2l2ZW4gYSBub2RlIG9mZnNldC4gIFRoaXMgcGF0Y2ggYWRkcyBhIGhlbHBlciBmdW5jdGlvbgogICAgX2ZkdF9jaGVja19ub2RlX29mZnNldCgpIHRvIGVuY2Fwc3VsYXRlIHRoaXMgdXNhZ2Ugb2YgZmR0X25leHRfdGFnKCkuCgoJLSBJbiBmZHRfcncuYyBpbiBzZXZlcmFsIHBsYWNlcyB3ZSBoYXZlIHRoZSBleHBhbmRlZCB2ZXJzaW9uCiAgICBvZiB0aGUgUldfQ0hFQ0tfSEVBREVSKCkgbWFjcm8gZm9yIG5vIHBhcnRpY3VsYXIgcmVhc29uLiAgVGhpcyBwYXRjaAogICAgcmVwbGFjZXMgdGhvc2UgaW5zdGFuY2VzIHdpdGggYW4gaW52b2NhdGlvbiBvZiB0aGUgbWFjcm87IHRoYXQncyB3aGF0CiAgICBpdCdzIGZvci4KCgktIEluIGZkdF9zdy5jIHdlIHJlbmFtZSB0aGUgY2hlY2tfaGVhZGVyX3N3KCkgZnVuY3Rpb24gdG8KICAgIHN3X2NoZWNrX2hlYWRlcigpIHRvIG1hdGNoIHRoZSBhbmFsZ291cyBmdW5jdGlvbiBpbiBmZHRfcncuYywgYW5kIHdlCiAgICBwcm92aWRlIGFuIFNXX0NIRUNLX0hFQURFUigpIHdyYXBwZXIgbWFjcm8gYXMgUldfQ0hFQ0tfSEVBREVSKCkKICAgIGZ1bmN0aW9ucyBpbiBmZHRfcncuYwoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgoKY29tbWl0IGZlYzZkOWVlN2MxMDQ0M2Y2NWNlMTc4OGVmODE4OTE5MTY3YmJmMmUKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglUdWUgSnVuIDMgMjA6MzQ6NDUgMjAwOCAtMDQwMAoKICAgIFJlbW92ZSB0aGUgZGVwcmVjYXRlZCBDT05GSUdfT0ZfRkxBVF9UUkVFCgogICAgVXNlIENPTkZJR19PRl9MSUJGRFQgaW5zdGVhZCB0byBzdXBwb3J0IGZsYXR0ZW5lZCBkZXZpY2UgdHJlZXMuICBJdCBpcwogICAgY2xlYW5lciwgaGFzIGJldHRlciBmdW5jdGlvbmFsaXR5LCBhbmQgaXMgYmV0dGVyIHN1cHBvcnRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IDYyYmNkZGEyOTNlZmE3NTJmODI4MWZiZDlkYTAzODIyYjI3Y2U4MmYKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglUdWUgSnVuIDMgMjA6MjY6MjkgMjAwOCAtMDQwMAoKICAgIENoYW5nZSB0aGUgc3R4eHN0IHRvIENPTkZJR19PRl9MSUJGRFQKCiAgICBUaGlzIHdhcyBjb25maWd1cmVkIHRvIHVzZSB0aGUgZGVwcmVjYXRlZCBDT05GSUdfT0ZfRkxBVF9UUkVFLCBjaGFuZ2UKICAgIHRvIENPTkZJR19PRl9MSUJGRFQuCgogICAgV0FSTklORzogSXQgYXBwZWFycyB0aGF0IHRoaXMgYm9hcmQgbG9zdCBpdHMgYWJpbGl0eSB0byBib290IHZpYSBhCiAgICBmbGF0dGVuZWQgZGV2aWNlIHRyZWUgcHJpb3IgdG8gdGhpcyBjaGFuZ2VzZXQuCgogICAgV0FSTklORzogVGhpcyBjb252ZXJzaW9uIHdhcyB1bnRlc3RlZCBiZWNhdXNlIEkgZG8gbm90IGhhdmUgYSBib2FyZCB0bwogICAgdGVzdCBpdCBvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IDU4OWMwNDI3MWQxMjk3MjlhOGIwMTM5MTQ1Mzg1MWFiOWNjNDA2OWMKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglUdWUgSnVuIDMgMjA6MjQ6NTggMjAwOCAtMDQwMAoKICAgIENvbnZlcnQgbXBjNzQ0OGhwYzIgdG8gQ09ORklHX09GX0xJQkZEVAoKICAgIFRoaXMgd2FzIGNvbmZpZ3VyZWQgdG8gdXNlIHRoZSBkZXByZWNhdGVkIENPTkZJR19PRl9GTEFUX1RSRUUsIGNoYW5nZQogICAgdG8gQ09ORklHX09GX0xJQkZEVC4KCiAgICBXQVJOSU5HOiBUaGlzIGNvbnZlcnNpb24gaXMgdW50ZXN0ZWQgYmVjYXVzZSBJIGRvIG5vdCBoYXZlIGEgYm9hcmQgdG8KICAgIHRlc3QgaXQgb24uCgogICAgTk9URTogVGhlIEZEVCBibG9iIChEVFMpIG11c3QgaGF2ZSBhbiAvYWxpYXNlcy9ldGhlcm5ldDAgYW5kIChvcHRpb25hbGx5KQogICAgL2FsaWFzZXMvZXRoZXJuZXQxIHByb3BlcnR5IGZvciB0aGUgZXRoZXJuZXQgdG8gd29yay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IGVlMWUzNWJlZGU5MWRlYmM4YmZmOWIwMmY3NTU3NDQ4NjAzM2I2NTIKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgTWF5IDI5IDAxOjIxOjI0IDIwMDggLTA1MDAKCiAgICA4NXh4OiBPbmx5IHVzZSBQT1JQTExTUltERFJfUmF0aW9dIG9uIHBsYXRmb3JtcyB0aGF0IGRlZmluZSBpdAoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgM2I5NTE5ZmM1MDgwMjQzNmU0MTdjODM5ZTY5ZGY3YjIwMTZjYWRlNQpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTWF5IDE0IDEzOjEwOjA0IDIwMDggLTA1MDAKCiAgICBNUEM4NXh4OiBDaGFuZ2UgdHJhcHMuYyB0byBub3QgcmVmZXJlbmNlIG5vbi1hZGRyZXNzYWJsZSBtZW1vcnkKCiAgICBDdXJyZW50bHksIEVORF9PRl9SQU0gaXMgdXNlZCBieSB0aGUgdHJhcCBjb2RlIHRvIGRldGVybWluZSBpZgogICAgd2Ugc2hvdWxkIGF0dGVtcHQgdG8gYWNjZXNzIHRoZSBzdGFjayBwb2ludGVyIG9yIG5vdC4gSG93ZXZlciwKICAgIG9uIHN5c3RlbXMgd2l0aCBhIGxvdCBvZiBSQU0sIG9ubHkgYSBzdWJzZXQgb2YgdGhlIFJBTSBpcwogICAgZ3VhcmFudGVlZCB0byBiZSBtYXBwZWQgaW4gYW5kIGFjY2Vzc2libGUuCUNoYW5nZSBFTkRfT0ZfUkFNCiAgICB0byB1c2UgZ2V0X2VmZmVjdGl2ZV9tZW1zaXplKCkgaW5zdGVhZCBvZiB1c2luZyB0aGUgcmF3IHJhbQogICAgc2l6ZSBvdXQgb2YgdGhlIGJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDdmYWRkYWVjZWE1MmY1ODVmNTM4ZmRmOWMyZTYxZjg1YTc4OWIxOWMKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CU1vbiBKdW4gOSAxMzozOTo1NyAyMDA4ICswOTAwCgogICAgc2g6IFJlbmVzYXMgU29sdXRpb25zIFNINzc2M1JEUCBib2FyZCBzdXBwb3J0CgogICAgU0g3NzYzUkRQIGhhcyBTQ0lGLCBOT1IgRmxhc2gsIEV0aGVybmV0LCBVU0IgaG9zdCwgTENEQyBhbmQgTU1DLgogICAgSW4gdGhpcyBwYXRjaCwgc3VwcG9ydCBTQ0lGLCBOT1IgRmxhc2gsIGFuZCBFdGhlcm5ldC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgNjAxNzkwOThhOTVlYWE5NzIwMDdkN2VjNThlNGMxNTg4MDI5NzIwZgpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJRnJpIEp1biA2IDE2OjI0OjEzIDIwMDggKzA5MDAKCiAgICBzaDogQWRkIHN1cHBvcnQgUmVuZXNhcyBTSDc3NjMKCiAgICBSZW5lc2FzIFNINzc2MyBoYXMgMyBTQ0lGLCBNTUMsIExDREMsIEV0aGVybmV0IGFuZCBvdGhlci4KICAgIFRoaXMgcGF0Y2ggc3VwcHJ0cyBDUFUgcmVnaXN0ZXIncyBoZWFkZXIgZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgMDhjNWZhYmUxODFkNjYzZWVjMGZlYmE1ZWNkMDJjMGI3ODkzNGE1MgpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJRnJpIEp1biA2IDE2OjE2OjA4IDIwMDggKzA5MDAKCiAgICBzaDogU0g3NzYzIFNDSUYgc3VwcG9ydAoKICAgIFNINzc2MyBoYXMgMyBTQ0lGIGNoYW5uZWxzLiBTQ0lGMCBhbmQgMSBhcmUgc2FtZSByZWdpc3RlciBjb25zdGl0dXRpb24sCiAgICBidXQgb25seSBTQ0lGMiBpcyBkaWZmZXJlbnQuIFRoaXMgcGF0Y2ggd29yayBhbGwgU0NJRiBjaGFubmVsLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCA3OWI1MWZmODIwNWYwMzU0ZDUzMDA1NzA2MTRjMWQyZGI0OTk2NzljCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJU2F0IEp1biA3IDIwOjUxOjU5IDIwMDggKzA5MDAKCiAgICBbTUlQU10gY3B1L21pcHMvTWFrZWZpbGU6IFNwbGl0IFtDU11PQkpTIG9udG8gc2VwYXJhdGUgbGluZXMKCiAgICBBbHNvIGdldCByaWQgb2Ygc29tZSAjaWZkZWZzIGluICouYyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IDhiZGU2M2ViM2Y3OWQ2OGY2OTMyMDE1MjhkYWZjOGFlN2FhMDg3ZGUKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglTYXQgSnVuIDcgMjA6NTE6NTYgMjAwOCArMDkwMAoKICAgIFtNSVBTXSBSZW5hbWUgQWxjaGVteSBwcm9jZXNzb3IgY29uZmlncyBpbnRvIENPTkZJR19TT0NfKgoKICAgIENPTkZJR19TT0NfQVUxWDAwCgogICAgICBDb21tb24gQWxjaGVteSBBdTF4MDAgc3R1ZmYuIEFsbCBBbGNoZW15IHByb2Nlc3NvciBiYXNlZCBtYWNoaW5lcwogICAgICBuZWVkIHRvIGhhdmUgdGhpcyBjb25maWcgYXMgYSBzeXN0ZW0gdHlwZSBzcGVjaWZpZXIuCgogICAgQ09ORklHX1NPQ19BVTEwMDAsIENPTkZJR19TT0NfQVUxMTAwLCBDT05GSUdfU09DX0FVMTIwMCwKICAgIENPTkZJR19TT0NfQVUxNTAwLCBDT05GSUdfU09DX0FVMTU1MAoKICAgICAgTWFjaGluZSB0eXBlIHNwZWNpZmllcnMuIEVhY2ggcG9ydCBzaG91bGQgaGF2ZSBvbmUgb2YgYWJvdmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgY2M0OWNhZGVlYjhiYjJmMGFlM2ZkYzEzYWY3MDUxYWU1OWYwODNiYwpBdXRob3I6IFN0dWFydCBXb29kIDxzdHVhcnQud29vZEBsYWJ4dGVjaG5vbG9naWVzLmNvbT4KRGF0ZToJRnJpIE1heSAzMCAxNjowNToyOCAyMDA4IC0wNDAwCgogICAgZW52X25hbmQuYzogQWRkZWQgYmFkIGJsb2NrIG1hbmFnZW1lbnQgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcwoKICAgIE1vZGlmaWVkIHRvIGNoZWNrIGZvciBiYWQgYmxvY2tzIGFuZCB0byBza2lwcGluZyBvdmVyIHRoZW0gd2hlbgogICAgQ0ZHX0VOVl9SQU5HRSBoYXMgYmVlbiBkZWZpbmVkLgogICAgQ0ZHX0VOVl9SQU5HRSBtdXN0IGJlIGxhcmdlciB0aGFuIENGR19FTlZfU0laRSBhbmQgYWxpZ25lZCB0byB0aGUgTkFORAogICAgZmxhc2ggYmxvY2sgc2l6ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdHVhcnQgV29vZCA8c3R1YXJ0Lndvb2RAbGFieHRlY2hub2xvZ2llcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyNzk3MjZiZDAwNTU4ZTgwMjYzZDQ0NTgxYzQ0MTY3NjI1YjdmYjlhCkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXkgMTQgMTM6MDk6NTggMjAwOCAtMDUwMAoKICAgIE1QQzg2eHg6IENoYW5nZSB0cmFwcy5jIHRvIG5vdCByZWZlcmVuY2Ugbm9uLWFkZHJlc3NhYmxlIG1lbW9yeQoKICAgIEN1cnJlbnRseSwgRU5EX09GX1JBTSBpcyB1c2VkIGJ5IHRoZSB0cmFwIGNvZGUgdG8gZGV0ZXJtaW5lIGlmCiAgICB3ZSBzaG91bGQgYXR0ZW1wdCB0byBhY2Nlc3MgdGhlIHN0YWNrIHBvaW50ZXIgb3Igbm90LiBIb3dldmVyLAogICAgb24gc3lzdGVtcyB3aXRoIGEgbG90IG9mIFJBTSwgb25seSBhIHN1YnNldCBvZiB0aGUgUkFNIGlzCiAgICBndWFyYW50ZWVkIHRvIGJlIG1hcHBlZCBpbiBhbmQgYWNjZXNzaWJsZS4JQ2hhbmdlIEVORF9PRl9SQU0KICAgIHRvIHVzZSBnZXRfZWZmZWN0aXZlX21lbXNpemUoKSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSByYXcgcmFtCiAgICBzaXplIG91dCBvZiB0aGUgYmQgdG8gcHJldmVudCB1cyBmcm9tIHRyeWluZyB0byBhY2Nlc3MKICAgIG5vbi1tYXBwZWQgbWVtb3J5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDMzOGNjMDM4NDYxYTZjNzcwOWM1Yjg2ZmQ5YTI0MDIwOTMzOGExYWUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgSnVuIDYgMTQ6Mjg6MTQgMjAwOCArMDIwMAoKICAgIHRvb2xzL21raW1hZ2U6IGZpeCBjb21waWxlciB3YXJuaW5ncyBvbiBzb21lIHN5c3RlbXMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBiMjgxNWY3OTI4OGQ0ZGE3YTNiYTE4YmRiZDA1MTIwY2UwOWQ1NjIyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVuIDYgMTY6MTA6NDEgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRml4IG1pc3NwZWxsZWQgQ09ORklHXzQ0MFNQRS80NDBFUFgvR1JYIGNvbmZpZyBvcHRpb25zCgogICAgV2UgdXNlIHVwcGVyIGNhc2UgbGV0dGVycyBmb3IgdGhlIEFNQ0MgcHJvY2Vzc29yIGRlZmluZXMgKGxpa2UKICAgIENPTkZJR180NDBTUEUpIGluIFUtQm9vdC4gU28gdGhlIDQ0MFNQZSBpcyBsYWJlbGVkIENPTkZJR180NDBTUEUgYW5kCiAgICBub3QgQ09ORklHXzQ0MFNQZS4gVGhpcyBwYXRjaCBmaXhlcyB0aGUgbGFzdCBtaXNzcGVsbGVkIGNvbmZpZyBvcHRpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3MjY3NWRjNmMwNmE0ODg0NmQxODAxMDYxNjFkNDlkZDcxNDM4M2NjCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVuIDYgMTU6NTU6MjEgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogVW5pZnkgQU1DQydzIGJvYXJkIGNvbmZpZyBmaWxlcyAocGFydCAzLzMpCgogICAgVGhpcyBwYXRjaCBzZXJpZXMgdW5pZmllcyB0aGUgQU1DQyBldmFsIGJvYXJkIHBvcnRzIGJ5IGludHJvZHVjaW5nCiAgICBhIGNvbW1vbiBpbmNsdWRlIGhlYWRlciBmb3IgYWxsIEFNQ0MgZXZhbCBib2FyZHM6CgogICAgaW5jbHVkZS9jb25maWdzL2FtY2MtY29tbW9uLmgKCiAgICBUaGlzIGhlYWRlciBub3cgaW5jbHVkZXMgYWxsIGNvbW1vbiBjb25maWd1cmF0aW9uIG9wdGlvbnMvZGVmaW5lcyB3aGljaAogICAgYXJlIHJlbW92ZWQgZnJvbSB0aGUgYm9hcmQgc3BlY2lmaWMgaGVhZGVycy4KCiAgICBUaGUgcmVhc29uIGZvciB0aGlzIGlzIGVhc2Ugb2YgbWFpbnRlbmFuY2UgYW5kIHVuaWZpZWQgbG9vayBhbmQgZmVlbAogICAgb2YgYWxsIEFNQ0MgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0OTBmMjA0MDk2ZDZlMmM5OTQwZjY3ODE2ZjE1NGE4MTI1YmFiMTE2CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVuIDYgMTU6NTU6MDMgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogVW5pZnkgQU1DQydzIGJvYXJkIGNvbmZpZyBmaWxlcyAocGFydCAyLzMpCgogICAgVGhpcyBwYXRjaCBzZXJpZXMgdW5pZmllcyB0aGUgQU1DQyBldmFsIGJvYXJkIHBvcnRzIGJ5IGludHJvZHVjaW5nCiAgICBhIGNvbW1vbiBpbmNsdWRlIGhlYWRlciBmb3IgYWxsIEFNQ0MgZXZhbCBib2FyZHM6CgogICAgaW5jbHVkZS9jb25maWdzL2FtY2MtY29tbW9uLmgKCiAgICBUaGlzIGhlYWRlciBub3cgaW5jbHVkZXMgYWxsIGNvbW1vbiBjb25maWd1cmF0aW9uIG9wdGlvbnMvZGVmaW5lcyB3aGljaAogICAgYXJlIHJlbW92ZWQgZnJvbSB0aGUgYm9hcmQgc3BlY2lmaWMgaGVhZGVycy4KCiAgICBUaGUgcmVhc29uIGZvciB0aGlzIGlzIGVhc2Ugb2YgbWFpbnRlbmFuY2UgYW5kIHVuaWZpZWQgbG9vayBhbmQgZmVlbAogICAgb2YgYWxsIEFNQ0MgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhOGExMWE5ZWQwNDZiNDgwYTE2ZTQ3YTE1OGY4ZjUzMDAwMjhkZmE2CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVuIDYgMTU6NTQ6MzEgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogVW5pZnkgQU1DQydzIGJvYXJkIGNvbmZpZyBmaWxlcyAocGFydCAxLzMpCgogICAgVGhpcyBwYXRjaCBzZXJpZXMgdW5pZmllcyB0aGUgQU1DQyBldmFsIGJvYXJkIHBvcnRzIGJ5IGludHJvZHVjaW5nCiAgICBhIGNvbW1vbiBpbmNsdWRlIGhlYWRlciBmb3IgYWxsIEFNQ0MgZXZhbCBib2FyZHM6CgogICAgaW5jbHVkZS9jb25maWdzL2FtY2MtY29tbW9uLmgKCiAgICBUaGlzIGhlYWRlciBub3cgaW5jbHVkZXMgYWxsIGNvbW1vbiBjb25maWd1cmF0aW9uIG9wdGlvbnMvZGVmaW5lcyB3aGljaAogICAgYXJlIHJlbW92ZWQgZnJvbSB0aGUgYm9hcmQgc3BlY2lmaWMgaGVhZGVycy4KCiAgICBUaGUgcmVhc29uIGZvciB0aGlzIGlzIGVhc2Ugb2YgbWFpbnRlbmFuY2UgYW5kIHVuaWZpZWQgbG9vayBhbmQgZmVlbAogICAgb2YgYWxsIEFNQ0MgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwZTM4YzkzOGVkNGJjYWRiNGY0ZmMxNDE5YTU0MTQzMWU5NGZjMjAyCkF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CkRhdGU6CVRodSBKdW4gNSAxMzowMzozNiAyMDA4ICswMjAwCgogICAgRE05MDAwIGZpeCBzdGF0dXMgY2hlY2sgZmFpbCAweDZkIGVycm9yIGZvciB0cml6ZXBzIGJvYXJkCgogICAgQWNjb3JkaW5nIHRvIHRoZSBBcHBsaWNhdGlvbiBOb3RlcyBvZiB0aGUgRE05MDAwLCBvbmx5IHRoZSAyIGJpdHMgMDoxIG9mCiAgICB0aGUgc3RhdHVzIGJ5dGUgbmVlZCB0byBiZSBjaGVja2VkIHRvIGlkZW50aWZ5IGEgdmFsaWQgcGFja2V0IGluIHRoZSBmaWZvCgogICAgQnV0LCBUaGUgc2V2ZXJhbCBkaWZmZXJlbnQgQXBwbGljYXRpb24gTm90ZXMgZG8gbm90IGFsbCBzcGVhayB0aGUgc2FtZQogICAgbGFuZ3VhZ2Ugb24gdGhlc2UgYml0cy4gVGhleSBkbyBub3QgZGlzYWdyZWUsIGJ1dCBvbmx5IDEgQXBwbGljYXRpb24gTm90ZQogICAgbm90ZWQgZXhwbGljaXRseSB0aGF0IG9ubHkgdGhlc2UgMiBiaXRzIG5lZWQgdG8gYmUgY2hlY2tlZC4KICAgIEV2ZW4gdGhlIGRhdGFzaGVldHMgZG8gbm90IG1lbnRpb24gYW55dGhpbmcgYWJvdXQgdGhlc2UgMiBiaXRzLgoKICAgIEJlY2F1c2UgdGhlIG9sZCBjb2RlLCBhbmQgdGhlIGtlcm5lbCBjaGVjayB0aGUgd2hvbGUgYnl0ZSwgSSBsZWZ0IHRoaXMgcGllY2UKICAgIHVudG91Y2hlZC4KCiAgICBIb3dldmVyLCBJIHRlc3RlZCBhbGwgYm9hcmQvRE05MDAwW0F8RXxFUF0gZGV2aWNlcyB3aXRoIHRoaXMgMiBiaXQgY2hlY2ssIHNvCiAgICBpdCBzaG91bGQgd29yay4KCiAgICBOb3RpY2UsIHRoYXQgdGhlIDJuZCBpdGVyYXRpb24gdGhyb3VnaCB0aGlzIHJlY2VpdmUgbG9vcCAod2hlbiBhIDJuZCBwYWNrZXQgaXMKICAgIGluIHRoZSBmaWZvKSBpcyBtdWNoIHNob3J0ZXIgbm93LCBjb21wYXJlZCB0byB0aGUgb2xkZXIgVS1ib290IGRyaXZlciBjb2RlLAogICAgc28gdGhhdCB3ZSBjYW4gbWF5YmUgcnVuIGludG8gYSBoYXJkd2FyZSBjb25kaXRpb24gbm93IHRoYXQgd2FzIG5ldmVyIHNlZW4KICAgIGJlZm9yZSwgb3IgbWF5YmUgd2FzIHNlZW4gdmVyeSB1bmZyZXF1ZW50bHkuCgogICAgQWRkaXRpb25hbHkgYWRkZWQgYSBjbGVhbnVwIG9mIGEgc3RhY2sgdmFyaWFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDdkYWYyZWJlOTE5NmRkNjcxMzFhMDZkODUwNDljM2E4YTA4Y2E0MTMKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglUaHUgSnVuIDUgMjI6Mjk6MDAgMjAwOCArMDkwMAoKICAgIFtNSVBTXSBVcGRhdGUgPGFzbS9hZGRyc3BhY2UuaD4gaGVhZGVyCgogICAgLSBGaXggdHJhZGl0aW9uYWwgS1NFRyBuYW1lcwogICAgLSBSZXBsYWNlIFBIWVNBRERSIHdpdGggQ1BIWVNBRERSCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCBmMGQ1YTZmMDYwZDAwMzU4Yjg1YzYyYTkyMWE0MjNlYThkZjcxMTg0CkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJVGh1IEp1biA1IDIyOjI5OjAwIDIwMDggKzA5MDAKCiAgICBbTUlQU10gbWlwc19jb25maWcubWs6IE1pc2MgZml4ZXMKCiAgICAtIEtpbGwgcmVkdW5kYW50IGAtcGlwZScgKHRoaXMgd2lsbCBiZSBhZGRlZCBieSAkKFRPUERJUikvY29uZmlnLm1rKQogICAgLSBNb2RpZnkgY29tbWVudHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IDVmNjRkMjFjOWEyOTk4Nzk0ZjI1NWI0NjkxNjViOTFmMDkyZGZjMmQKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglUaHUgSnVuIDUgMjI6Mjk6MDAgMjAwOCArMDkwMAoKICAgIFtNSVBTXSBLaWxsIHVudXNlZCA8dmVyc2lvbi5oPiBpbmNsdXNpb25zCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCBhNTVkNDgxNzRjZmQxYTViYzE4NDE1OTUxM2Y0OGRjYmJlNDA5YzgzCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJVGh1IEp1biA1IDIyOjI5OjAwIDIwMDggKzA5MDAKCiAgICBbTUlQU10gbGliX21pcHMvdGltZS5jOiBGaXggQ1AwIGNvdW50IHJlZ2lzdGVyIHVzYWdlIGFuZCB0aW1lciByb3V0aW5lcwoKICAgIE1JUFMgcG9ydCBoYXMgdHdvIHByb2JsZW1zIGluIHRpbWVyIHJvdXRpbmVzLiBPbmUgaXMgbm93IHdlIGFzc3VtZSBDRkdfSFoKICAgIGVxdWFscyB0byBDUDAgY291bnRlciBmcmVxdWVuY3ksIGJ1dCB0aGlzIGlzIHdyb25nLiBDRkdfSFogaGFzIHRvIGJlIDEwMDAKICAgIGluIHRoZSBVLUJvb3Qgc3lzdGVtLgoKICAgIFRoZSBvdGhlciBpcyB3ZSBkb24ndCBoYXZlIGEgcHJvcGVyIHRpbWUgbWFuYWdlbWVudCBjb3VudGVyIGxpa2UgdGltZXN0YW1wCiAgICBvdGhlciBBUkNIcyBoYXZlLiBXZSBuZWVkIHRoZSAzMi1iaXQgbWlsbGlzZWNvbmQgY2xvY2sgY291bnRlci4KCiAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgdGltZXN0YW1wIGFuZCBDWUNMRVNfUEVSX0pJRkZZLiB0aW1lc3RhbXAgaXMgYQogICAgMzItYml0IG5vbi1vdmVyZmxvd2luZyBDRkdfSFogY291bnRlciwgYW5kIENZQ0xFU19QRVJfSklGRlkgaXMgdGhlIG51bWJlcgogICAgb2YgY2FsY3VsYXRlZCBDUDAgY291bnRlciBjeWNsZXMgaW4gYSBDRkdfSFouCgogICAgU1RSQVRFR1k6CgogICAgKiBGaXggaW1wcm9wZXIgQ0ZHX0haIHZhbHVlIHRvIGhhdmUgMTAwMAoKICAgICogVXNlIENGR19NSVBTX1RJTUVSX0ZSRVEgZm9yIHRpbWVyIGNvdW50ZXIgZnJlcXVlbmN5LCBpbnN0ZWFkLgoKICAgICogdGltZXJfaW5pdDogaW5pdGlhbGl6ZSB0aW1lc3RhbXAgYW5kIHNldCB1cCB0aGUgZmlyc3QgdGltZXIgZXhwaXJhdGlvbi4KICAgICAgTm90ZSB0aGF0IHdlIGRvbid0IG5lZWQgdG8gaW5pdGlhbGl6ZSBDUDAgY291bnQvY29tcGFyZSByZWdpc3RlcnMgaGVyZQogICAgICBhcyB0aGV5IGhhdmUgYmVlbiBhbHJlYWR5IHplcm9lZCBvdXQgb24gdGhlIHN5c3RlbSByZXNldC4gTGVhdmUgdGhlbSBhcwogICAgICB0aGV5IGFyZS4KCiAgICAqIGdldF90aW1lcjogY2FsY3VsYXRlIGhvdyBtYW55IHRpbWVzdGFtcHMgaGF2ZSBiZWVuIHBhc3NlZCwgdGhlbiByZXR1cm4KICAgICAgYmFzZS1yZWxhdGl2ZSB0aW1lc3RhbXAuIE1ha2Ugc3VyZSB3ZSBjYW4gZWFzaWx5IGNvdW50IG1pc3NlZCB0aW1lc3RhbXBzCiAgICAgIHJlZ2FyZGxlc3Mgb2YgQ1AwIGNvdW50L2NvbXBhcmUgdmFsdWUuCgogICAgKiBnZXRfdGlja3M6IHJldHVybiB0aGUgY3VycmVudCB0aW1lc3RhbXAsIHRoYXQgaXMgZ2V0X3RpbWVyKDApLgoKICAgIE1vc3QgcGFydHMgYXJlIGZyb20gZ29vZCBvbGQgTGludXggdjIuNi4xNiBrZXJuZWwuCgogICAgdjI6CiAgICAtIFJlbW92ZSBGSVhNRSBjb21tZW50cyBhcyB0aGV5IHR1cm5lZCBvdXQgdG8gYmUgdHJpdmlhbC4KICAgIC0gVXNlIENQMCBjb21wYXJlIHJlZ2lzdGVyIGFzIGEgZ2xvYmFsIHZhcmlhYmxlIGZvciBleHBpcmVsby4KICAgIC0gS2lsbCBhIGdsb2JhbCB2YXJpYWJsZSAnY3ljbGVzX3Blcl9qaWZmeScuIFVzZSAjZGVmaW5lIENZQ0xFU19QRVJfSklGRlkKICAgICAgaW5zdGVhZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IDE5OWU0ZjY1N2M4YWY0MmVmZTNmYjNiYTFkMTEwNGViNmJiMjhjMjUKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglUaHUgSnVuIDUgMjI6Mjk6MDAgMjAwOCArMDkwMAoKICAgIFtNSVBTXSBsaWJfbWlwcy90aW1lLmM6IEZpeCB1ZGVsYXkKCiAgICBXaGF0IHdlIGhhdmUgdG8gZG8gaXMganVzdCB0byB3YWl0IGZvciBnaXZlbiBtaWNyby1zZWNvbmRzLiBObyBuZWVkIHRvCiAgICB0YWtlIGludG8gYWNjb3VudCBjdXJyZW50IHRpbWUsIGdldF90aW1lciBhbmQgQ0ZHX0haLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgYzdlMzhlNDEzYWU2OTEyMGQzZTUxZjEzMmM3Y2IxZDZiMzUxNGQwMwpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVRodSBKdW4gNSAyMjoyODo1OSAyMDA4ICswOTAwCgogICAgW01JUFNdIGxpYl9taXBzL3RpbWUuYzogUmVwbGFjZSBDUDAgYWNjZXNzIGZ1bmN0aW9ucyB3aXRoIGV4aXN0aW5nIG1hY3JvcwoKICAgIFdlIGFscmVhZHkgaGF2ZSBtYW55IHByZS1kZWZpbmVkIENQMCBhY2Nlc3MgbWFjcm9zIGluIDxhc20vbWlwc3JlZ3MuaD4uCiAgICBUaGlzIHBhdGNoIHJlcGxhY2VzIG1pcHNfe2NvbXBhcmUsY291bnR9X3NldCBhbmQgbWlwc19jb3VudF9nZXQgd2l0aAogICAgZXhpc3RpbmcgbWFjcm9zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgNmI1MmNmZTE2Y2Q1Mzk5MzVlMzJiZDhjZjE5MTQ2NTIyZTQ2MmE0ZApBdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgpEYXRlOglUdWUgSnVuIDMgMTU6NDg6MTcgMjAwOCArMDIwMAoKICAgIEdldCByaWQgb2YgYW5ub3lpbmcvc3VwZXJmbHVvdXMgYmFkLWNoZWNrc3VtIHdhcm5pbmcgbWVzc2FnZQoKICAgIFUtYm9vdCBjYW4gY29tcGxhaW4gYSBsb3QgYWJvdXQgJ2NoZWNrc3VtIGJhZCcgd2hlbiBpdCBpcyBhdHRhY2hlZCB0byB0aGUgbmV0d29yay4KICAgIEl0IGlzIGFubm95aW5nIGZvciBvcmRpbmFyeSB1c2VycyB3aG8gc3RhcnQgdG8gZG91YnQgdGhlIG5ldHdvcmsgY29ubmVjdGlvbgogICAgaW4gZ2VuZXJhbCB3aGVuIHRoZXkgc2VlIG1lc3NhZ2VzIGxpa2UgdGhpcy4KCiAgICBUaGlzIGlzIGNhdXNlZCBieSB0aGUgcm91dGluZSBOZXRDa3N1bU9rKCkgd2hpY2ggY2Fubm90IGhhbmRsZSBJUC1oZWFkZXJzIGxvbmdlcgogICAgdGhhbiAyMCBieXRlcy4gVGhvc2UgcGFja2FnZXMgY2FuIGJlIGlnbm9yZWQgYW55d2F5IGJ5IFUtYm9vdCwgc28gd2UgdHJhc2ggdGhlbQogICAgbm93IGJlZm9yZSBjaGVja2luZyB0aGUgY2hlY2tzdW0uCgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGQ2ZWU1ZmE0MGMyNjk3MGQzOTk5MGM2ZmM0YTJmMjBhOTc4MjI2NTAKQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KRGF0ZToJV2VkIEp1biA0IDEwOjQ3OjI1IDIwMDggKzAyMDAKCiAgICBGaXggb3JkZXIgZm9yIHJlYWRpbmcgcngtc3RhdHVzIHJlZ2lzdGVycyBpbiAzMmJpdCBtb2RlIG9mIERNOTAwMAoKICAgIEEgbGFzdCBtaW51dGUgY2xlYW51cCBiZWZvcmUgc3VibWl0dGluZyB0aGUgRE05MDAwQSBwYXRjaCBzZXJpZXMgeWVzdGVyZGF5IGludHJvZHVjZWQKICAgIGEgYnVnIGluIHJlYWRpbmcgdGhlIHJ4LXN0YXR1cyByZWdpc3RlcnMgaW4gMzJiaXQgbW9kZSBvbmx5LgogICAgVGhpcyBwYXRjaCByZXBhaXJzIHRoaXMuCgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDk4MjkxZTJlNjg5MDk2NDIwNDY1MDc0Y2NlOTI2YjIyNmQyZTcxYjQKQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KRGF0ZToJVHVlIEp1biAzIDE1OjI2OjI2IDIwMDggKzAyMDAKCiAgICBETTkwMDA6IFNvbWUgbWlub3IgY29kZSBjbGVhbnVwcwoKICAgIFNvbWUgbGluZXMgb2YgdGhlIFUtYm9vdCBETTkwMDB4IGRyaXZlciBhcmUgbG9uZ2VyIHRoYW4gODAgY2hhcmFjdGVycywgb3IKICAgIG5lZWQgc29tZSBvdGhlciBtaW5vciBjbGVhbnVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA4NTBiYTc1NTVkYmQ0Y2E4ZDE0ZmM0NzViODY0ZDUzNDc5N2FkYWIzCkF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CkRhdGU6CVR1ZSBKdW4gMyAxNToyNjoyNSAyMDA4ICswMjAwCgogICAgRE05MDAwOiBNYWtlIGRyaXZlciB3b3JrIHByb3Blcmx5IGZvciBETTkwMDBBCgogICAgVGhlIERNOTAwMEEgbmV0d29yayBjb250cm9sbGVyIGRvZXMgbm90IHdvcmsgd2l0aCB0aGUgVS1ib290IERNOTAwMHggZHJpdmVyLgogICAgQW5hbHlzaXMgc2hvd2VkIHRoYXQgbWFueSBpbmNvbWluZyBwYWNrZXRzIGFyZSBsb3N0LgoKICAgIFRoZSBETTkwMDBBIEFwcGxpY2F0aW9uIE5vdGVzIFYxLjIwIChzZWN0aW9uIDUuNi4xKSByZWNvbW1lbmQgdGhhdCB0aGUgcG9sbCB0bwogICAgY2hlY2sgZm9yIGEgdmFsaWQgcnggcGFja2V0IGJlIGRvbmUgb24gdGhlIGludGVycnVwdCBzdGF0dXMgcmVnaXN0ZXIsIG5vdAogICAgZGlyZWN0bHkgYnkgcGVyZm9ybWluZyB0aGUgZHVtbXkgcmVhZCBhbmQgdGhlIHJ4IHN0YXR1cyBjaGVjayBhcyBpcyBjdXJyZW50bHkKICAgIHRoZSBjYXNlIGluIHRoZSB1LWJvb3QgZHJpdmVyLgoKICAgIFdoZW4gdGhlIHJlY29tbWVuZGVkIHBvbGwgaXMgZG9uZSBhcyBzdWdnZXN0ZWQgdGhlIGRyaXZlciBzdGFydHMgd29ya2luZwogICAgY29ycmVjdGx5IG9uIDEwTWJpdC9IRCwgYnV0IG9uIDEwME1CaXQvRkQgcGFja2V0cyBjb21lIGluIGZhc3RlciBzbyB0aGF0IHRoZXJlCiAgICBjYW4gYmUgbW9yZSB0aGFuIDEgcGFja2FnZSBpbiB0aGUgZmlmbyBhdCB0aGUgc2FtZSB0aW1lLgoKICAgIFRoZSBkcml2ZXIgbXVzdCBwZXJmb3JtIHRoZSByeC1zdGF0dXMgY2hlY2sgaW4gYSBsb29wIGFuZCByZWFkIGFuZCBoYW5kbGUgYWxsCiAgICBwYWNrYWdlcyB1bnRpbCB0aGVyZSBpcyBubyBtb3JlIGxlZnQgX2FmdGVyXyB0aGUgaW50ZXJydXB0IFJYIGZsYWcgaXMgc2V0LgoKICAgIFRoaXMgY2hhbmdlIGhhcyBiZWVuIHRlc3RlZCB3aXRoIERNOTAwMEEsIERNOTAwMEUsIERNOTAwMEVQLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBmYmNiN2VjZTBlYTFlMzY0MTgwZjFjZjk2M2UwZmEwY2U3ZjY1NjBkCkF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CkRhdGU6CVR1ZSBKdW4gMyAxNToyNjoyNCAyMDA4ICswMjAwCgogICAgRE05MDAwOiBJbXByb3ZlIGV0aF9yZXNldCgpIHJvdXRpbmUKCiAgICBBY2NvcmRpbmcgdG8gdGhlIGFwcGxpY2F0aW9uIG5vdGVzIG9mIHRoZSBETTkwMDAgdjEuMjIgY2hhcHRlciA1LjIgYnVsbGV0IDIsIHRoZQogICAgcmVzZXQgcHJvY2VkdXJlIG11c3QgYmUgZG9uZSB0d2ljZSB0byBwcm9wZXJseSByZXNldCB0aGUgRE05MDAwIGJ5IG1lYW5zIG9mIHNvZnR3YXJlLgogICAgVGhpcyBlcnJhdGEgaXMgbm90IG5lZWRlZCBhbnltb3JlIGZvciB0aGUgRE05MDAwQSwgYnV0IGl0IGRvZXMgbm90IGJvdGhlciBpdC4KCiAgICBUaGlzIGNoYW5nZSBoYXMgYmVlbiB0ZXN0ZWQgd2l0aCBETTkwMDBBLCBETTkwMDBFLCBETTkwMDBFUC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYWNiYTMxODQ3ZmFkOWFlNDA3MDhjYzJjOWYzYTYzNGVjMzVmMzQxNgpBdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgpEYXRlOglUdWUgSnVuIDMgMTU6MjY6MjMgMjAwOCArMDIwMAoKICAgIERNOTAwMDogaW1wcm92ZSBldGhfc2VuZCgpIHJvdXRpbmUKCiAgICBUaGUgZXRoX3NlbmQgcm91dGluZSBvZiB0aGUgVS1ib290IERNOTAwMHggZHJpdmVyIGRvZXMgbm90IG1hdGNoIHRoZQogICAgRE05MDAwIG9yIERNOTAwMEEgYXBwbGljYXRpb24gbm90ZXMvcHJvZ3JhbW1pbmcgZ3VpZGVzLgoKICAgIFRoaXMgY2hhbmdlIGltcHJvdmVzIHRoZSBzdGFiaWxpdHkgb2YgdGhlIERNOTAwMEEgbmV0d29yayBjb250cm9sbGVyLgoKICAgIFRoaXMgY2hhbmdlIGhhcyBiZWVuIHRlc3RlZCB3aXRoIERNOTAwMEEsIERNOTAwMEUsIERNOTAwMEVQLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAxMzRlMjY2MjUzYzAyYTc4MzI1NjBkYTU5ZDM5NDk4OWM0ZjY0NDUzCkF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CkRhdGU6CVR1ZSBKdW4gMyAxNToyNjoyMiAyMDA4ICswMjAwCgogICAgRE05MDAwOiByZXBhaXIgZGVidWcgbG9nZ2luZwoKICAgIEl0IHNlZW1zIHRoYXQgdGhlIGRlYnVnZ2luZyBjb2RlIG9mIHRoZSBETTkwMDB4IGRyaXZlciBpbiBVLWJvb3QgaGFzIG5vdCBiZWVuCiAgICBjb21waWxlZCBmb3IgYSBsb25nIHRpbWUsIGJlY2F1c2UgaXQgY2Fubm90IGNvbXBpbGUuLi4KCiAgICBBbHNvIHJlYXJyYW5nZWQgc29tZSBsb2dsaW5lcyB0byBnZXQgbW9yZSB1c2VmdWwgaW5mbyB3aGlsZSBkZWJ1Z2dpbmcuCgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGExMDEzNjFiZmUyM2MxMjAzMjFlNDVkMTE0YzA2MDNiOGUwNzYzZTkKQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KRGF0ZToJVHVlIEp1biAzIDE1OjI2OjIxIDIwMDggKzAyMDAKCiAgICBETTkwMDA6IEFkZCBkYXRhIGJ1cy13aWR0aCBhdXRvIGRldGVjdGlvbi4KCiAgICBUaGUgVS1ib290IERNOTAwMHggZHJpdmVyIGNvbnRhaW5zIGEgY29tcGlsZSB0aW1lIGJ1cy13aWR0aCBkZWZpbml0aW9uIGZvcgogICAgdGhlIGRhdGFidXMgY29ubmVjdGVkIHRvIHRoZSBuZXR3b3JrIGNvbnRyb2xsZXIuCgogICAgVGhpcyBjb21waWxlIGNoZWNrIG1ha2VzIHRoZSBjb2RlIHVuY2xlYXIsIGluZmxleGlibGUgYW5kIGlzIHVubmVjY2Vzc2FyeS4KICAgIEl0IGNhbiBiZSBhc2tlZCB0byB0aGUgbmV0d29yayBjb250cm9sbGVyIHdoYXQgaXRzIGJ1cy13aWR0aCBpcyBieSByZWFkaW5nIGJpdHMKICAgIDYgYW5kIDcgb2YgdGhlIGludGVycnVwdCBzdGF0dXMgcmVnaXN0ZXIuCgogICAgVGhlIGxpbnV4IGtlcm5lbCBhbHJlYWR5IHVzZXMgYSBydW50aW1lIG1lY2hhbmlzbSB0byBkZXRlcm1pbmUgdGhpcyBidXMtd2lkdGgsCiAgICBzbyB0aGUgaW1wbGVtZW50YXRpb24gYmVsb3cgbG9va3Mgc29tZXdoYXQgbGlrZSB0aGF0IGltcGxlbWVudGF0aW9uLgoKICAgIFRoaXMgY2hhbmdlIGhhcyBiZWVuIHRlc3RlZCB3aXRoIERNOTAwMEEsIERNOTAwMEUsIERNOTAwMEVQLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA2M2EwYWZhMGMzMmU1ZjRlYTk4YTk0Mzk1NDI4NzAwNzI0Mzc0MDRkCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgSnVuIDQgMTk6MTk6MjAgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRml4IHByb2JsZW0gd2l0aCBTRFJBTSBpbml0IGluIGJhbWJvbyBOQU5EIGJvb3RpbmcgcG9ydAoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBwcm9ibGVtIHNwb3R0ZWQgYnkgRXVnZW5lIE8nQnJpYW4gKHRoYW5rcyBFdWdlbmUpCiAgICBpbnRyb2R1Y2VkIGJ5IHRoZSBjb21taXQ6CgogICAgcHBjNHh4L05BTkRfU1BMOiBDb25zb2xpZGF0ZSA0MDUgYW5kIDQ0MCBOQU5EIGJvb3RpbmcgY29kZSBpbiBzdGFydC5TCgogICAgV2l0aCB0aGlzIHBhdGNoIFNEUkFNIHdpbGwgZ2V0IGluaXRpYWxpemVkIGFnYWluIGFuZCBib290aW5nIGZyb20gTkFORAogICAgaXMgd29ya2luZyBhZ2Fpbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBBY2tlZC1ieTogRXVnZW5lIE8nQnJpZW4gPGV1Z2VuZS5vYnJpZW5AYWR2YW50ZWNoYW10LmNvbT4KCmNvbW1pdCA5ZWYxY2JlZjFhNjQ5ZTM3NzkyOThiMGU2NjNiZTQ4NjVjYmJiZmJjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIE1heSAyNyAxNDoxOTozMCAyMDA4ICswMjAwCgogICAgU29jcmF0ZXM6IEZpeCBQQ0kgYnVzIGZyZXF1ZW5jeSByZXBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgoKY29tbWl0IDhlYzZlMzMyZWFjZTBlZTc4YzcxZWU1ZjY0NWQxMmIwNjgxM2I4NmYKQXV0aG9yOiBUb3IgS3JpbGwgPHRvckBleGNpdG8uY29tPgpEYXRlOglUaHUgTWF5IDI5IDExOjEwOjMwIDIwMDggKzAyMDAKCiAgICBGaXggaW5jb3JyZWN0IHN3aXRjaCBmb3IgSUZfVFlQRSBpbiBwYXJ0LmMKCiAgICBVc2UgY29ycmVjdCBmaWVsZCBpbiBibG9ja19kZXZfZGVzY190IHdoZW4gd3JpdGluZyBpbnRlcmZhY2UgdHlwZSBpbgogICAgZGV2X3ByaW50LiBFcnJvciBpbnRyb2R1Y2VkIGluIDU3NGIzMTk1LgoKICAgIEFsc28gYWRkZWQgZml4IGZyb20gTWFydGluIEtyYXVzZQoKICAgIFNpZ25lZC1vZmYtYnk6IFRvciBLcmlsbCA8dG9yQGV4Y2l0by5jb20+Cgpjb21taXQgYjY0YjhhMGJkMzEwOTM1YjcwYWY2OWFjOTcwOTUyZjJiMzY0YWU1NgpBdXRob3I6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KRGF0ZToJVHVlIE1heSAyNyAxMDoyNTozOSAyMDA4ICswMjAwCgogICAgQWRkIHNpemUgI2RlZmluZXMgZm9yIEFsdGVyYSBDeWNsb25lLUlJIEVQMkM4IGFuZCBFUDJDMjAuCgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgoKY29tbWl0IDM1ZWY4NzdmMGE4ZjYyMzJjZGVmNzQ4ZjQ0MmZlZDVhY2NiMmI2NDEKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglUaHUgTWF5IDIyIDE4OjU2OjUyIDIwMDggLTA1MDAKCiAgICBBZGRpdGlvbmFsIGZpeCB0byByZWFkbGluZV9pbnRvX2J1ZmZlcigpIHdpdGggQ09ORklHX0NNRExJTkVfRURJVElORyBiZWZvcmUgcmVsb2NhdGluZwoKICAgIFJlbW92ZWQgdW5uZWVkZWQgY29tbWFuZCBsaW5lIGhpc3RvcnkgaW5pdGlhbGl6YXRpb24uICBBbHNvLCB0aGUgb3JpZ2luYWwKICAgIGNvZGUgd291bGQgYWNjZXNzIHRoZSAnaW5pdHRlZCcgdmFyaWFibGUgYmVmb3JlIHJlbG9jYXRpb24gdG8gU0RSQU0KICAgIHdoaWNoIHJlc3VsdGVkIGluIGVycmF0aWMgYmVoYXZpb3Igc2luY2UgdGhlIGJzcyBpcyBub3QgaW5pdGlhbGl6ZWQgd2hlbgogICAgZXhlY3V0aW5nIGZyb20gZmxhc2guCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCAyMmYzNzFiNjMwMzhhNGVjYWIwNDA2ODg3N2MxMDg5ZTUxYTAxYmExCkF1dGhvcjogR3JhbnQgRXJpY2tzb24gPGdlcmlja3NvbkBudW92YXRpb25zLmNvbT4KRGF0ZToJV2VkIE1heSAyMSAxMzoyODozMCAyMDA4IC0wNzAwCgogICAgUFBDNHh4OiBTaW1wbGlmaWVkIHBvc3Rfd29yZF97bG9hZCwgc3RvcmV9CgogICAgVGhpcyBwYXRjaCBzaW1wbGlmaWVzIHBvc3Rfd29yZF97bG9hZCxzdG9yZX0gYnkgdXNpbmcgdGhlIHByZXByb2Nlc3NvcgogICAgdG8gZWxpbWluYXRlIHJlZHVuZGFudCwgY29weS1hbmQtcGFzdGVkIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgRXJpY2tzb24gPGdlcmlja3NvbkBudW92YXRpb25zLmNvbT4KCmNvbW1pdCA5YzA0OGI1MjM0MTNhZTVmM2ZmMzRlMDBjZjU3NTY5YzMzNjhhYjUxCkF1dGhvcjogVmFzaWxpeSBMZW9lbmVua28gPHZhc2lsaXkubGVvbmVua29AbWFpbC5ydT4KRGF0ZToJV2VkIE1heSA3IDIxOjI1OjMzIDIwMDggKzA0MDAKCiAgICBjZmlfZmxhc2g6IGVuYWJsZSBNMTggZmxhc2ggY2hpcHMgZmFtaWx5IHN1cHBvcnQuCgogICAgQWRkZWQgbmV3IGNvbW1hbmQgc2V0IElELiBCdWZmZXJlZCB3cml0ZSBjb21tYW5kIHByb2Nlc3NpbmcgaXMgY2hhbmdlZAogICAgaW4gb3JkZXIgdG8gc3VwcG9ydCBNMTggZmxhc2ggY2hpcHMgZmFtaWx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXhleSBLb3JvbGV2IDxha29yb2xldkBpbmZyYWRlYWQub3JnPgogICAgU2lnbmVkLW9mZi1ieTogVmFzaWxpeSBMZW9uZW5rbyA8dmFzaWxpeS5sZW9uZW5rb0BtYWlsLnJ1PgoKY29tbWl0IDkzYzU2ZjIxMmNjZGFkYzE4MjAxOGYwNzY5Y2IyODQ0MjZiODhmMWQKQXV0aG9yOiBWYXNpbGl5IExlb2VuZW5rbyA8dmFzaWxpeS5sZW9uZW5rb0BtYWlsLnJ1PgpEYXRlOglXZWQgTWF5IDcgMjE6MjQ6NDQgMjAwOCArMDQwMAoKICAgIGNmaV9mbGFzaDogc3VwcG9ydCBvZiBsb25nIGNtZCBpbiBVLWJvb3QuCgogICAgU29tZSBOT1IgZmxhc2ggY2hpcHMgbmVlZHMgc3VwcG9ydCBvZiBjb21tYW5kcyB3aXRoIGxlbmd0aCBncmV0aGVyIHRoYW4gbWF4CiAgICB2YWx1ZSBzaXplIG9mIHVjaGFyLiBGb3IgZXhhbXBsZSBhbGwgTTE4IGZhbWlseSBjaGlwcyB1c2UgMHgxZmYgY29tbWFuZCBpbgogICAgYnVmZmVyZWQgd3JpdGUgbW9kZSBhcyB2YWx1ZSBvZiBwcm9ncmFtIGxvb3BzIGNvdW50LgoKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXhleSBLb3JvbGV2IDxha29yb2xldkBpbmZyYWRlYWQub3JnPgogICAgU2lnbmVkLW9mZi1ieTogVmFzaWxpeSBMZW9uZW5rbyA8dmFzaWxpeS5sZW9uZW5rb0BtYWlsLnJ1PgoKY29tbWl0IDRkOTFkMWRmMmYxNmI1MTFhYjgwZGVjNTBjODBlMDUwYmEwZDg0MWUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBNYXkgMTYgMTE6MDY6MDYgMjAwOCArMDIwMAoKICAgIERUVDogSXNzdWUgb25lLXNob3QgY29tbWFuZCBvbiBBRDc0MTQgKExNNzUgY29kZSkgdG8gcmVhZCB0ZW1wCgogICAgT24gQUQ3NDE0IHRoZSBmaXJzdCB2YWx1ZSB1cG9uIGJvb3R1cCBpcyBub3QgcmVhZCBjb3JyZWN0bHkuCiAgICBUaGlzIGlzIG1vc3QgbGlrZWx5IGJlY2F1c2Ugb2YgdGhlIDgwMG1zIHVwZGF0ZSB0aW1lIG9mIHRoZQogICAgdGVtcCByZWdpc3RlciBpbiBub3JtYWwgdXBkYXRlIG1vZGUuIFRvIGdldCBjdXJyZW50IHZhbHVlcwogICAgZWFjaCB0aW1lIHdlIGlzc3VlIHRoZSAiZHR0IiBjb21tYW5kIGluY2x1ZGluZyB1cG9uIHBvd2VydXAKICAgIHdlIHN3aXRjaCBpbnRvIG9uZS1zaG9ydCBtb2RlLgoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIHByb2JsZW0gb24gQUQ3NDE0IGVxdWlwcGVkIGJvYXJkcyAoU2VxdW9pYSwKICAgIENhbnlvbmxhbmRzIGV0YyksIHRoYXQgdGVtcCB2YWx1ZSBwcmludGVkIGluIHRoZSBib290dXAgbG9nIHdhcwogICAgaW5jb3JyZWN0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkZTViZmNmN2IwNDI1ZTAzMmJlMTI2OTgyNTJkYmFhNmI2NWEyOGMwCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CUZyaSBNYXkgMzAgMTY6NTU6MDYgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogQ2xlYW51cCBDUENJNDA1IHZhcmlhbnQncyBjb25maWcgZmlsZQoKICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBzb21lIGRlYWQgY29kZSBmcm9tIENQQ0k0MDUgYm9hcmQncwogICAgY29uZmlnIGZpbGVzLiBKRkZTMiBzdXBwb3J0IGlzIGFsc28gcmVtb3ZlZC4gSXQncyBub3QgdXNlZCBhbmQKICAgIENQQ0k0MDUyIGRvZXMgbm90IGJ1aWxkIGFueW1vcmUgd2l0aG91dCBzb21lIHNpemUgcmVkdWN0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDI5MThlYjlkNDJiYzcwNWZjYmQxOGM5ZmNjMzlkMTVmZjI4NDNjNjUKQXV0aG9yOiBLZW5uZXRoIEpvaGFuc3NvbiA8a2VubmV0aEBzb3V0aHBvbGUuc2U+CkRhdGU6CVRodSBNYXkgMjkgMTY6MzI6MzMgMjAwOCArMDIwMAoKICAgIFJlbW92ZSBzaGVsbCB2YXJpYWJsZSBVTkRFRl9TWU0uCgogICAgVU5ERUZfU1lNIGlzIGEgc2hlbGwgdmFyaWFibGUgaW4gdGhlIG1haW4gTWFrZWZpbGUgdXNlZCB0byBmb3JjZSB0aGUKICAgIGxpbmtlciB0byBhZGQgYWxsIHUtYm9vdCBjb21tYW5kcyB0byB0aGUgZmluYWwgaW1hZ2UuIEl0IGhhcyBubyB1c2UgaGVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLZW5uZXRoIEpvaGFuc3NvbiA8a2VubmV0aEBzb3V0aHBvbGUuc2U+Cgpjb21taXQgOGM2NjQ5N2UwNmJmODAzNDg5YzU4OWRmNThlZTU5MWQ3MTAzMzI3NApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJRnJpIE1heSAxNiAxMToxMDozNSAyMDA4ICswMjAwCgogICAgQWRkIHN1cHBvcnQgZm9yIGVudmlyb25tZW50IGluIFNQSSBmbGFzaAoKICAgIFRoaXMgaXMgcHJldHR5IGluY29tcGxldGUuLi5pdCBkb2Vzbid0IGhhbmRsZSByZWFkaW5nIHRoZSBlbnZpcm9ubWVudAogICAgYmVmb3JlIHJlbG9jYXRpb24sIGl0IGRvZXNuJ3Qgc3VwcG9ydCByZWR1bmRhbnQgZW52aXJvbm1lbnQsIGFuZCBpdAogICAgZG9lc24ndCBzdXBwb3J0IGVtYmVkZGVkIGVudmlyb25tZW50LiBCdXQgYXBhcnQgZnJvbSB0aGF0LCBpdCBkb2VzCiAgICBzZWVtIHRvIHdvcmsuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGI2MzY4NDY3ZTZhOTdmMjI1ZTBhNWZkN2JmYzVjNzU5OGVmNWRkYzQKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CUZyaSBNYXkgMTYgMTE6MTA6MzQgMjAwOCArMDIwMAoKICAgIFNQSSBGbGFzaDogQWRkICJzZiIgY29tbWFuZAoKICAgIFRoaXMgYWRkcyBhIG5ldyBjb21tYW5kLCAic2YiIHdoaWNoIGNhbiBiZSB1c2VkIHRvIG1hbmlwdWxhdGUgU1BJCiAgICBmbGFzaC4gQ3VycmVudGx5LCBpbml0aWFsaXphdGlvbiwgcmVhZGluZywgd3JpdGluZyBhbmQgZXJhc2luZyBpcwogICAgc3VwcG9ydGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBkMjVjZTdkMjRjYzBmOTM4ODE1NTlmNDAwOTE3NWVhMzA1YWY2NWU4CkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglGcmkgTWF5IDE2IDExOjEwOjMzIDIwMDggKzAyMDAKCiAgICBTUEkgRmxhc2ggc3Vic3lzdGVtCgogICAgVGhpcyBhZGRzIGEgbmV3IFNQSSBmbGFzaCBzdWJzeXN0ZW0uCgogICAgQ3VycmVudGx5LCBvbmx5IEFUNDUgRGF0YUZsYXNoIGluIG5vbi1wb3dlci1vZi10d28gbW9kZSBpcyBzdXBwb3J0ZWQsCiAgICBidXQgc29tZSBwcmVsaW1pbmFyeSBzdXBwb3J0IGZvciBvdGhlciBmbGFzaCB0eXBlcyBpcyBpbiBwbGFjZSBhcwogICAgd2VsbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgNjA0NDVjYjVjM2ViNzdlZDFhMDdmMmQ5MDhlZWYwOTE3NDQ4MzY5OApBdXRob3I6IEhhbnMtQ2hyaXN0aWFuIEVndHZlZHQgPGhjZWd0dmVkdEBhdG1lbC5jb20+CkRhdGU6CUZyaSBNYXkgMTYgMTE6MTA6MzIgMjAwOCArMDIwMAoKICAgIGF0bWVsX3NwaTogRHJpdmVyIGZvciB0aGUgQXRtZWwgU1BJIGNvbnRyb2xsZXIKCiAgICBUaGlzIGFkZHMgYSBkcml2ZXIgZm9yIHRoZSBTUEkgY29udHJvbGxlciBmb3VuZCBvbiBtb3N0IEFUOTEgYW5kIEFWUjMyCiAgICBjaGlwcywgaW1wbGVtZW50aW5nIHRoZSBuZXcgU1BJIEFQSS4KCiAgICBDaGFuZ2VkIGluIHY0OgogICAgICAtIFVwZGF0ZSB0byBuZXcgQVBJCiAgICAgIC0gSGFuZGxlIHplcm8tbGVuZ3RoIHRyYW5zZmVycyBhcHByb3ByaWF0ZWx5LiBUaGUgdXNlciBtYXkgc2VuZCBhCgl6ZXJvLWxlbmd0aCBTUEkgdHJhbnNmZXIgd2l0aCBTUElfWEZFUl9FTkQgc2V0IGluIG9yZGVyIHRvCglkZWFjdGl2YXRlIHRoZSBjaGlwIHNlbGVjdCBhZnRlciBhIHNlcmllcyBvZiB0cmFuc2ZlcnMgd2l0aCBjaGlwCglzZWxlY3QgYWN0aXZlLiBUaGlzIGlzIHVzZWZ1bCBlLmcuIHdoZW4gcG9sbGluZyB0aGUgc3RhdHVzCglyZWdpc3RlciBvZiBEYXRhRmxhc2guCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgZDI1NWJiMGU3OGQxY2FjNWI3YzhjOThjYjc3YTA5NWY1ZjE2ZGUwZApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglGcmkgTWF5IDE2IDExOjEwOjMxIDIwMDggKzAyMDAKCiAgICBTUEkgQVBJIGltcHJvdmVtZW50cwoKICAgIFRoaXMgcGF0Y2ggZ2V0cyByaWQgb2YgdGhlIHNwaV9jaGlwc2VsIHRhYmxlIGFuZCBhZGRzIGEgaGFuZGZ1bCBvZiBuZXcKICAgIGZ1bmN0aW9ucyB0aGF0IG1ha2VzIHRoZSBTUEkgbGF5ZXIgY2xlYW5lciBhbmQgbW9yZSBmbGV4aWJsZS4KCiAgICBJbnN0ZWFkIG9mIHRoZSBzcGlfY2hpcHNlbCB0YWJsZSwgZWFjaCBib2FyZCB0aGF0IHdhbnRzIHRvIHVzZSBTUEkKICAgIGdldHMgdG8gaW1wbGVtZW50IHRocmVlIGhvb2tzOgogICAgICAqIHNwaV9jc19hY3RpdmF0ZSgpOiBBY3RpdmF0ZXMgdGhlIGNoaXBzZWxlY3QgZm9yIGEgZ2l2ZW4gc2xhdmUKICAgICAgKiBzcGlfY3NfZGVhY3RpdmF0ZSgpOiBEZWFjdGl2YXRlcyB0aGUgY2hpcHNlbGVjdCBmb3IgYSBnaXZlbiBzbGF2ZQogICAgICAqIHNwaV9jc19pc192YWxpZCgpOiBEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiBidXMvY2hpcHNlbGVjdAoJY29tYmluYXRpb24gY2FuIGJlIGFjdGl2YXRlZC4KCiAgICBOb3QgYWxsIGRyaXZlcnMgbWF5IG5lZWQgdGhvc2UgZXh0cmEgZnVuY3Rpb25zIGhvd2V2ZXIuIElmIHRoYXQncyB0aGUKICAgIGNhc2UsIHRoZSBib2FyZCBjb2RlIG1heSBqdXN0IGxlYXZlIHRoZW0gb3V0IChhc3N1bWluZyB0aGV5IGtub3cgd2hhdAogICAgdGhlIGRyaXZlciBuZWVkcykgb3IgcmVseSBvbiB0aGUgbGlua2VyIHRvIHN0cmlwIHRoZW0gb3V0IChhc3N1bWluZwogICAgLS1nYy1zZWN0aW9ucyBpcyBiZWluZyB1c2VkLikKCiAgICBUbyBzZXQgdXAgY29tbXVuaWNhdGlvbiBwYXJhbWV0ZXJzIGZvciBhIGdpdmVuIHNsYXZlLCB0aGUgZHJpdmVyIG5lZWRzCiAgICB0byBjYWxsIHNwaV9zZXR1cF9zbGF2ZSgpLiBUaGlzIHJldHVybnMgYSBwb2ludGVyIHRvIGFuIG9wYXF1ZQogICAgc3BpX3NsYXZlIHN0cnVjdCB3aGljaCBtdXN0IGJlIHBhc3NlZCBhcyBhIHBhcmFtZXRlciB0byBzdWJzZXF1ZW50IFNQSQogICAgY2FsbHMuIFRoaXMgc3RydWN0IGNhbiBiZSBmcmVlZCBieSBjYWxsaW5nIHNwaV9mcmVlX3NsYXZlKCksIGJ1dCBtb3N0CiAgICBkcml2ZXIgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byBkbyB0aGlzLgoKICAgIEJlZm9yZSBzdGFydGluZyBvbmUgb3IgbW9yZSBTUEkgdHJhbnNmZXJzLCB0aGUgZHJpdmVyIG11c3QgY2FsbAogICAgc3BpX2NsYWltX2J1cygpIHRvIGdhaW4gZXhjbHVzaXZlIGFjY2VzcyB0byB0aGUgU1BJIGJ1cyBhbmQgaW5pdGlhbGl6ZQogICAgdGhlIGhhcmR3YXJlLiBXaGVuIGFsbCB0cmFuc2ZlcnMgYXJlIGRvbmUsIHRoZSBkcml2ZXIgbXVzdCBjYWxsCiAgICBzcGlfcmVsZWFzZV9idXMoKSB0byBtYWtlIHRoZSBidXMgYXZhaWxhYmxlIHRvIG90aGVycywgYW5kIHBvc3NpYmx5CiAgICBzaHV0IGRvd24gdGhlIFNQSSBjb250cm9sbGVyIGhhcmR3YXJlLgoKICAgIHNwaV94ZmVyKCkgYmVoYXZlcyBtb3N0bHkgdGhlIHNhbWUgYXMgYmVmb3JlLCBidXQgaXQgbm93IHRha2VzIGEKICAgIHNwaV9zbGF2ZSBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBhIHNwaV9jaGlwc2VsIGZ1bmN0aW9uIHBvaW50ZXIuIEl0IGFsc28KICAgIGdvdCBhIG5ldyBwYXJhbWV0ZXIsIGZsYWdzLCB3aGljaCBpcyB1c2VkIHRvIHNwZWNpZnkgY2hpcCBzZWxlY3QKICAgIGJlaGF2aW91ci4gVGhpcyBtYXkgYmUgZXh0ZW5kZWQgd2l0aCBvdGhlciBmbGFncyBpbiB0aGUgZnV0dXJlLgoKICAgIFRoaXMgcGF0Y2ggaGFzIGJlZW4gYnVpbGQtdGVzdGVkIG9uIGFsbCBwb3dlcnBjIGFuZCBhcm0gYm9hcmRzCiAgICBpbnZvbHZlZC4gSSBoYXZlIG5vdCB0ZXN0ZWQgTklPUyBzaW5jZSBJIGRvbid0IGhhdmUgYSB0b29sY2hhaW4gZm9yIGl0CiAgICBpbnN0YWxsZWQsIHNvIEkgZXhwZWN0IHNvbWUgYnJlYWthZ2UgdGhlcmUgZXZlbiB0aG91Z2ggSSd2ZSB0cmllZAogICAgZml4aW5nIHVwIGV2ZXJ5dGhpbmcgSSBjb3VsZCBmaW5kIGJ5IHZpc3VhbCBpbnNwZWN0aW9uLgoKICAgIEkgaGF2ZSBydW4tdGltZSB0ZXN0ZWQgdGhpcyBvbiBBVlIzMiBBVE5HVzEwMCB1c2luZyB0aGUgYXRtZWxfc3BpIGFuZAogICAgRGF0YUZsYXNoIGRyaXZlcnMgcG9zdGVkIGFzIGEgZm9sbG93LXVwLiBJJ2QgbGlrZSBzb21lIGhlbHAgdGVzdGluZwogICAgb3RoZXIgYm9hcmRzIHRoYXQgdXNlIHRoZSBleGlzdGluZyBTUEkgQVBJLgoKICAgIEJ1dCBtb3N0IG9mIGFsbCwgSSdkIGxpa2Ugc29tZSBjb21tZW50cyBvbiB0aGUgbmV3IEFQSS4gSXMgdGhpcyBzdHVmZgogICAgdXNhYmxlIGZvciBldmVyeW9uZT8gSWYgbm90LCB3aHk/CgogICAgQ2hhbmdlZCBpbiB2NDoKICAgICAgLSBCdWlsZCBmaXhlcyBmb3IgdmFyaW91cyBib2FyZHMsIGRyaXZlcnMgYW5kIGNvbW1hbmRzCiAgICAgIC0gUHJvdmlkZSBjb21tb24gc3RydWN0IHNwaV9zbGF2ZSBkZWZpbml0aW9uIHRoYXQgY2FuIGJlIGV4dGVuZGVkIGJ5Cglkcml2ZXJzCiAgICAgIC0gUGFzcyBhIHN0cnVjdCBzcGlfc2xhdmUgKiB0byBzcGlfY3NfYWN0aXZhdGUgYW5kIHNwaV9jc19kZWFjdGl2YXRlCiAgICAgIC0gTWFrZSBkZWZhdWx0IGJ1cyBhbmQgbW9kZSBidWlsZC10aW1lIGNvbmZpZ3VyYWJsZQogICAgICAtIE92ZXJyaWRlIGRlZmF1bHQgU1BJIGJ1cyBJRCBhbmQgbW9kZSBvbiBteDMyYWRzIGFuZCBpbXgzMV9saXRla2l0LgoKICAgIENoYW5nZWQgaW4gdjM6CiAgICAgIC0gQWRkIG9wYXF1ZSBzdHJ1Y3Qgc3BpX3NsYXZlIGZvciBjb250cm9sbGVyLXNwZWNpZmljIGRhdGEgYXNzb2NpYXRlZAoJd2l0aCBhIHNsYXZlLgogICAgICAtIEFkZCBzcGlfY2xhaW1fYnVzKCkgYW5kIHNwaV9yZWxlYXNlX2J1cygpCiAgICAgIC0gQWRkIHNwaV9mcmVlX3NsYXZlKCkKICAgICAgLSBzcGlfc2V0dXAoKSBpcyBub3cgY2FsbGVkIHNwaV9zZXR1cF9zbGF2ZSgpIGFuZCByZXR1cm5zIGEKCXN0cnVjdCBzcGlfc2xhdmUKICAgICAgLSBzb2Z0X3NwaSBub3cgc3VwcG9ydHMgZm91ciBTUEkgbW9kZXMgKENQT0x8Q1BIQSkKICAgICAgLSBBZGQgYnVzIHBhcmFtZXRlciB0byBzcGlfc2V0dXBfc2xhdmUoKQogICAgICAtIENvbnZlcnQgdGhlIG5ldyBpLk1YMzIgU1BJIGRyaXZlcgogICAgICAtIENvbnZlcnQgdGhlIG5ldyBNQzEzNzgzIFJUQyBkcml2ZXIKCiAgICBDaGFuZ2VkIGluIHYyOgogICAgICAtIENvbnZlcnQgdGhlIG1wYzh4eHhfc3BpIGRyaXZlciBhbmQgdGhlIG1wYzgzNDllbWRzIGJvYXJkIHRvIHRoZQoJbmV3IEFQSS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KICAgIFRlc3RlZC1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgoKY29tbWl0IDI4OTAxMTIwN2Q5OTliMmU0MDg1MTUwZDJhYTMwZDU0N2FkOWI4MDAKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CUZyaSBNYXkgMTYgMTE6MTA6MzAgMjAwOCArMDIwMAoKICAgIE1vdmUgZGVmaW5pdGlvbiBvZiBjb250YWluZXJfb2YoKSB0byBjb21tb24uaAoKICAgIEFWUjMyIGFuZCBBVDkxU0FNOSBib3RoIGhhdmUgdGhlaXIgb3duIGlkZW50aWNhbCBkZWZpbml0aW9ucyBvZgogICAgY29udGFpbmVyX29mKCkgdGFrZW4gZnJvbSB0aGUgTGludXgga2VybmVsLiBNb3ZlIGl0IHRvIGNvbW1vbi5oIHNvCiAgICB0aGF0IGFsbCBhcmNoaXRlY3R1cmVzIGNhbiB1c2UgaXQuCgogICAgY29udGFpbmVyX29mKCkgaXMgYWxyZWFkeSB1c2VkIGJ5IHNvbWUgZHJpdmVycywgYW5kIHdpbGwgYmUgdXNlZAogICAgZXh0ZW5zaXZlbHkgYnkgdGhlIG5ldyBhbmQgaW1wcm92ZWQgU1BJIEFQSS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgMTEwZTAwNmZlNjdmYjRhNmUxNzE5YWU2OTU2Yzc5YjdmZmMwMTQ4YgpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJRnJpIE1heSAxNiAxMTowODoxMSAyMDA4ICswMjAwCgogICAgc29mdF9pMmM6IFB1bGwgU0RBIGhpZ2ggYmVmb3JlIHJlYWRpbmcKCiAgICBTcG90dGVkIGJ5IERlYW4gQ2FwaW5kYWxlLgoKICAgIFN5c3RlbXMgdGhhdCBzdXBwb3J0IG9wZW4tZHJhaW4gR1BJTyBwcm9wZXJseSBhcmUgYWxsb3dlZCBwcm92aWRlIGFuCiAgICBlbXB0eSBJMkNfVFJJU1RBVEUgZGVmaW5lLiBIb3dldmVyLCB0aGlzIG1lYW5zIHRoYXQgd2UgbmVlZCB0byBiZQogICAgY2FyZWZ1bCBub3QgdG8gZHJpdmUgU0RBIGxvdyB3aGVuIHRoZSBzbGF2ZSBpcyBleHBlY3RlZCB0byByZXNwb25kLgoKICAgIFRoaXMgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgSTJDX1NEQSgxKSB0byByZWFkX2J5dGUoKSByZXF1aXJlZCB0bwogICAgdHJpc3RhdGUgdGhlIFNEQSBsaW5lIG9uIHN5c3RlbXMgdGhhdCBzdXBwb3J0IG9wZW4tZHJhaW4gR1BJTy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgM2MxZGUxYTZkMzZiZTllZWUyODRhNmM1OTZhODZlOTRmMTljYzViMgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE1heSAxOSAxMTozNDo1MyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBSZW1vdmUgaW1wbGVtZW50YXRpb25zIG9mIHRlc3RkcmFtKCkKCiAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIHVzZWQgdGVzdGRyYW0oKSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGJvYXJkCiAgICB0aGF0IGFyZSBtYWludGFpbmVkIGJ5IG15c2VsZi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYmJlZmYzMGNiZDFjNWQ1NTFlYjBhZDFjMjIzOWVjMDE4NDRjMGIwYQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIEp1biAyIDE3OjM3OjI4IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IFJlbW92ZSBzdXBlcmZsdW91cyBkcmFtX2luaXQoKSBjYWxsIG9yIHJlcGxhY2UgaXQgYnkgaW5pdGRyYW0oKQoKICAgIEhpc3RvcmljYWxseSB0aGUgNDA1IFUtQm9vdCBwb3J0IGhhZCBhIGRyYW1faW5pdCgpIGNhbGwgaW4gZWFybHkgaW5pdAogICAgc3RhZ2UuIFRoaXMgZnVuY3Rpb24gd2FzIHN0aWxsIGNhbGxlZCBmcm9tIHN0YXJ0LlMgYW5kIG1vc3Qgb2YgdGhlIHRpbWUKICAgIGNvZGVkIGluIGFzc2VtYmxlci4gVGhpcyBpcyBub3QgbmVlZGVkIGFueW1vcmUgKHNpbmNlIGEgbG9uZyB0aW1lKSBhbmQKICAgIGJvYXJkcyBzaG91bGQgaW1wbGVtZW50IHRoZSBjb21tb24gaW5pdGRyYW0oKSBmdW5jdGlvbiBpbiBDIGluc3RlYWQuCgogICAgVGhpcyBwYXRjaCBub3cgcmVtb3ZlZCB0aGUgZHJhbV9pbml0KCkgY2FsbCBmcm9tIHN0YXJ0LlMgYW5kIHJlbW92ZXMgdGhlCiAgICBlbXB0eSBpbXBsZW1lbnRhdGlvbnMgdGhhdCBhcmUgc2NhdHRlcmVkIHRocm91Z2ggbW9zdCBvZiB0aGUgNDA1IGJvYXJkCiAgICBwb3J0cy4gU29tZSBvbGRlciBib2FyZCBwb3J0cyByZWFsbHkgaW1wbGVtZW50IHRoaXMgZHJhbV9pbml0KCkgdGhvdWdoLgogICAgVGhlc2UgYXJlOgoKICAgIGNzYjI3MgogICAgY3NiNDcyCiAgICBFUklDCiAgICBFWEJJVEdFTgogICAgVzdPTE1DCiAgICBXN09MTUcKCiAgICBJIGNoYW5nZWQgdGhvc2UgYm9hcmRzIHRvIGNhbGwgdGhpcyBhc3NlbWJsZXIgZHJhbV9pbml0KCkgZnVuY3Rpb24gbm93CiAgICBmcm9tIHRoZWlyIGJvYXJkIHNwZWNpZmljIGluaXRkcmFtKCkgaW5zdGVhZC4gVGhpcyAqc2hvdWxkKiB3b3JrLCBidXQgcGxlYXNlCiAgICB0ZXN0IGFnYWluIG9uIHRob3NlIHBsYXRmb3Jtcy4gQW5kIGl0IGlzIHBlcmhhcHMgYSBnb29kIGlkZWEgdGhhdCB0aG9zZQogICAgYm9hcmRzIHVzZSBzb21lIGNvbW1vbiA0MDUgU0RSQU0gaW5pdGlhbGl6YXRpb24gY29kZSBmcm9tIGNwdS9wcGM0eHggYXQKICAgIHNvbWUgdGltZS4gU28gZnVydGhlciBwYXRjaGVzIHdlbGNvbWUgaGVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMTkyZjkwZTI3MmIzOTg5ZWU3YjRhNjY2ZDFmZGFiODMxZjIwZjhkMgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIEp1biAyIDE3OjIyOjExIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IFVzZSBuZXcgNHh4IFNEUkFNIGNvbnRyb2xsZXIgZW5hYmxlIGRlZmluZXMgaW4gY29tbW9uIEVDQyBjb2RlCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDM5YjMyYmUxOGNkMzNiNTNhODQwNjVlZGNkNGU0NjUxNjVjYzU1NjQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBKdW4gMiAxNzoyMDowMyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBGaXggY29tbW9uIEVDQyBnZW5lcmF0aW9uIGNvZGUgZm9yIDQ0MEdQIHN0eWxlIHBsYXRmb3JtcwoKICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIGNvbW1vbiA0eHggRUNDIGNvZGUgcmVhbGx5IHVzYWJsZSBvbiA0NDBHUCBzdHlsZQogICAgcGxhdGZvcm1zLgoKICAgIFNpbmNlIHRoZSBJQk0gRERSIGNvbnRyb2xsZXIgdXNlZCBvbiA0NDBHUC9HWC9FUC9HUiBpcyBub3QgcmVnaXN0ZXIKICAgIGNvbXBhdGlibGUgdG8gdGhlIElCTSBERFIvMiBjb250cm9sbGVyIHVzZWQgb24gNDA1RVgvNDQwU1AvU1BlLzQ2MEVYL0dUCiAgICB3ZSBuZWVkIHRvIG1ha2Ugc29tZSBwcm9jZXNzb3IgZGVwZW5kYW50IGRlZmluZXMgdXNlZCBsYXRlciBvbiBieSB0aGUKICAgIGRyaXZlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZWM3MjRmODgzZWUzZjM5MjVlNmM1NTAyN2U4ZmZhNzBhZGE4MzMwMwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIEp1biAyIDE3OjEzOjU1IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IENoYW5nZSBLaWxhdWVhIHRvIHVzZSB0aGUgY29tbW9uIEREUjIgaW5pdCBmdW5jdGlvbgoKICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUga2lsYXVlYSBhbmQga2lsYXVlYV9uYW5kIChmb3IgTkFORCBib290aW5nKQogICAgYm9hcmQgcG9ydCB0byBub3QgdXNlIGEgYm9hcmQgc3BlY2lmaWMgRERSMiBpbml0IHJvdXRpbmUgYW55bW9yZS4gTm93CiAgICB0aGUgY29tbW9uIGNvZGUgZnJvbSBjcHUvcHBjNHh4IGlzIHVzZWQuCgogICAgVGhhbmtzIHRvIEdyYW50IEVyaWNrc29uIGZvciBhbGwgaGlzIGJhc2ljIHdvcmsgb24gdGhpcyA0MDVFWCBlYXJseQogICAgYm9vdHVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxN2NlYjA2OWI4NWZiYjkyNjljNGRjMDliMmMyMzdmODgzMzRjNWJhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gSnVuIDIgMTQ6NTk6MjEgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogQ29uc29saWRhdGUgUFBDNHh4IFNEUkFNL0REUi9ERFIyIGRlZmluZXMsIHBhcnQyCgogICAgVGhpcyBwYXRjaCBub3cgYWRkcyBhIG5ldyBoZWFkZXIgZmlsZSAoYXNtLXBwYy9wcGM0eHgtc2RyYW0uaCkgZm9yIGFsbAogICAgcHBjNHh4IHJlbGF0ZWQgU0RSQU0vRERSL0REUjIgY29udHJvbGxlciBkZWZpbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzNmVhMTZmNmEwNjZjY2IwNDZlOTFlYmNlNGYzMjZiNjlmNGMwNTY5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gSnVuIDIgMTQ6NTc6NDEgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogQ29uc29saWRhdGUgUFBDNHh4IFNEUkFNL0REUi9ERFIyIGRlZmluZXMsIHBhcnQxCgogICAgVGhpcyBwYXRjaCByZW1vdmVzIGFsbCBTRFJBTSByZWxhdGVkIGRlZmluZXMgZnJvbSB0aGUgUFBDNHh4IGhlYWRlcnMKICAgIHBwYzQwNS5oIGFuZCBwcGM0NDAuaC4gVGhpcyBpcyBuZWVkZWQgc2luY2Ugbm93IHNvbWUgNDA1IFBQQydzIHVzZQogICAgdGhlIHNhbWUgU0RSQU0gY29udHJvbGxlciBhcyA0NDAgc3lzdGVtcyBkbyAobGlrZSA0MDVFWCBhbmQgNDQwU1ApLgoKICAgIEl0IGFsc28gaW50cm9kdWNlcyBuZXcgZGVmaW5lcyBmb3IgdGhlIGVxdWlwcGVkIFNEUkFNIGNvbnRyb2xsZXIgYmFzZWQgb24KICAgIHdoaWNoIFBQQyB2YXJpYW50IGlzIHVzZWQuIFRoZXJlIG5ldyBkZWZpbmVzIGFyZToKCiAgICB1c2VkIG9uIDQwNUdSL0NSL0VQIGFuZCBzb21lIFhpbGlueCBWaXJ0ZXggYm9hcmRzLgoKICAgIHVzZWQgb24gNDQwR1AvR1gvRVAvR1IuCgogICAgdXNlZCBvbiA0NDBFUHgvR1J4LgoKICAgIHVzZWQgb24gNDA1RVgvci80NDBTUC9TUGUvNDYwRVgvR1QuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDY0ODUyZDA5ZTA2ZGQ2ZGIyYjJkYjJhM2M1OWJjMmRiMTc2YTU0ZDYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBKdW4gMiAxNDozNTo0NCAyMDA4ICswMjAwCgogICAgcHBjNHh4L05BTkRfU1BMOiBDb25zb2xpZGF0ZSA0MDUgYW5kIDQ0MCBOQU5EIGJvb3RpbmcgY29kZSBpbiBzdGFydC5TCgogICAgVGhpcyBwYXRjaCBjb25zb2xpZGF0ZXMgdGhlIDQwNSBhbmQgNDQwIHBhcnRzIG9mIHRoZSBOQU5EIGJvb3RpbmcgY29kZQogICAgc2VsZWN0ZWQgdmlhIENPTkZJR19OQU5EX1NQTC4gTm93IGNvbW1vbiBjb2RlIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUKICAgIFNEUkFNIGJ5IGNhbGxpbmcgaW5pdGRyYW0oKSBhbmQgdG8gImNvcHkvcmVsb2NhdGUiIHRvIFNEUkFNL09DTS9ldGMuCiAgICBPbmx5ICphZnRlciogcnVubmluZyBmcm9tIHRoaXMgbG9jYXRpb24sIG5hbmRfYm9vdCgpIGlzIGNhbGxlZC4KCiAgICBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBpbml0c2RyYW0oKSBjYWxsIGlzIG5vdyBtb3ZlZCBmcm9tIG5hbmRfYm9vdC5jCiAgICB0byBzdGFydC5TLiBJIGV4cGVyaWVuY2VkIHByb2JsZW1zIHdpdGggc29tZSBib2FyZHMgbGlrZSBLaWxhdWVhCiAgICAoNDA1RVgpLCB3aGljaCBkb24ndCBoYXZlIGludGVybmFsIFNSQU0gKE9DTSkgYW5kIHJlbG9jYXRpb24gbmVlZHMgdG8KICAgIGJlIGRvbmUgdG8gU0RSQU0gYmVmb3JlIHRoZSBOQU5EIGNvbnRyb2xsZXIgY2FuIGdldCBhY2Nlc3NlZC4gV2hlbgogICAgaW5pdGRyYW0oKSBpcyBjYWxsZWQgbGF0ZXIgb24gaW4gbmFuZF9ib290KCksIHRoaXMgY2FuIGxlYWQgdG8gcHJvYmxlbXMKICAgIHdpdGggdmFyaWFibGVzIGluIHRoZSBic3Mgc2VjdGlvbnMgbGlrZSBuYW5kX2VjY19wb3NbXS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBBY2tlZC1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOGEyNGMwN2JhNWRhMmM3MmFkMWYwNWUzZWI4YTQ2Mzc1MDIwMGM5OApBdXRob3I6IEdyYW50IEVyaWNrc29uIDxnZXJpY2tzb25AbnVvdmF0aW9ucy5jb20+CkRhdGU6CVRodSBNYXkgMjIgMTQ6NDQ6MjQgMjAwOCAtMDcwMAoKICAgIHBwYzR4eDogRW5hYmxlIFByaW1vcmRpYWwgU3RhY2sgZm9yIDQweCBhbmQgVW5pZnkgRUNDIEhhbmRsaW5nCgogICAgVGhpcyBwYXRjaCAoUGFydCAyIG9mIDIpOgoKICAgICogUm9sbHMgdXAgYSBzdWl0ZSBvZiBjaGFuZ2VzIHRvIGVuYWJsZSBjb3JyZWN0IHByaW1vcmRpYWwgc3RhY2sgYW5kCiAgICAgIGdsb2JhbCBkYXRhIGhhbmRsaW5nIHdoZW4gdGhlIGRhdGEgY2FjaGUgaXMgdXNlZCBmb3Igc3VjaCBhIHB1cnBvc2UKICAgICAgZm9yIFBQQzQweC12YXJpYW50cyAoaS5lLiBDRkdfSU5JVF9EQ0FDSEVfQ1MpLgoKICAgICogUmVsYXRlZCB0byB0aGUgZmlyc3QsIHVuaWZpZXMgRERSMiBTRFJBTSBhbmQgRUNDIGluaXRpYWxpemF0aW9uIGJ5CiAgICAgIGVsaW1pbmF0aW5nIHJlZHVuZGFudCBFQ0MgaW5pdGlhbGl6YXRpb24gaW1wbGVtZW50YXRpb25zIGFuZCBtb3ZpbmcKICAgICAgcmVkdW5kYW50IFNEUkFNIGluaXRpYWxpemF0aW9uIG91dCBvZiBib2FyZCBjb2RlIGludG8gc2hhcmVkIDR4eAogICAgICBjb2RlLgoKICAgICogRW5hYmxlcyBNQ1NSIHZpc2liaWxpdHkgb24gdGhlIDQwNUVYKHIpLgoKICAgICogRW5hYmxlcyB0aGUgdXNlIG9mIHRoZSBkYXRhIGNhY2hlIGZvciBpbml0aWFsIFJBTSBvbgogICAgICBib3RoIEFNQ0MncyBLaWxhdWVhIGFuZCBNYWthbHUgYW5kIHJlbW92ZXMgYSByZWR1bmRhbnQKICAgICAgQ0ZHX1BPU1RfTUVNT1JZIGZsYWcgZnJvbSBlYWNoIGJvYXJkJ3MgQ09ORklHX1BPU1QgdmFsdWUuCgogICAgICAtIFJlbW92ZWQsIHBlciBTdGVmYW4gUm9lc2UncyByZXF1ZXN0LCBkZWZ1bmN0IG1lbW9yeS5jIGZpbGUgZm9yCglNYWthbHUgYW5kIHJvbGxlZCBzZHJhbV9pbml0IGZyb20gaXQgaW50byBtYWthbHUuYy4KCiAgICBXaXRoIHJlc3BlY3QgdG8gdGhlIDR4eCBERFIgaW5pdGlhbGl6YXRpb24gYW5kIEVDQyB1bmlmaWNhdGlvbiwgdGhlcmUKICAgIGlzIGNlcnRhaW5seSBtb3JlIHdvcmsgdGhhdCBjYW4gYW5kIHNob3VsZCBiZSBkb25lIChmaWxlIHJlbmFtaW5nLAogICAgZXRjLikuIEhvd2V2ZXIsIHRoYXQgY2FuIGJlIGhhbmRsZWQgYXQgYSBsYXRlciBkYXRlIG9uIGEgc2Vjb25kIG9yCiAgICB0aGlyZCBwYXNzLiBBcyBpdCBzdGFuZHMsIHRoaXMgcGF0Y2ggbW92ZXMgdGhpbmdzIGZvcndhcmQgaW4gYW4KICAgIGluY3JlbWVudGFsIHlldCBwb3NpdGl2ZSB3YXkgZm9yIHRob3NlIHBsYXRmb3JtcyB0aGF0IHV0aWxpemUgdGhpcwogICAgY29kZSBhbmQgdGhlIGZlYXR1cmVzIGFzc29jaWF0ZWQgd2l0aCBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGM4MjFiNWYxMjBiZWRmNzM4Njc1MTM0NjY0MTI1ODdjNjkxMmE4ZjgKQXV0aG9yOiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgpEYXRlOglUaHUgTWF5IDIyIDE0OjQ0OjE0IDIwMDggLTA3MDAKCiAgICBwcGM0eHg6IEVuYWJsZSBQcmltb3JkaWFsIFN0YWNrIGZvciA0MHggYW5kIFVuaWZ5IEVDQyBIYW5kbGluZwoKICAgIFRoaXMgcGF0Y2ggKFBhcnQgMSBvZiAyKToKCiAgICAqIFJvbGxzIHVwIGEgc3VpdGUgb2YgY2hhbmdlcyB0byBlbmFibGUgY29ycmVjdCBwcmltb3JkaWFsIHN0YWNrIGFuZAogICAgICBnbG9iYWwgZGF0YSBoYW5kbGluZyB3aGVuIHRoZSBkYXRhIGNhY2hlIGlzIHVzZWQgZm9yIHN1Y2ggYSBwdXJwb3NlCiAgICAgIGZvciBQUEM0MHgtdmFyaWFudHMgKGkuZS4gQ0ZHX0lOSVRfRENBQ0hFX0NTKS4KCiAgICAqIFJlbGF0ZWQgdG8gdGhlIGZpcnN0LCB1bmlmaWVzIEREUjIgU0RSQU0gYW5kIEVDQyBpbml0aWFsaXphdGlvbiBieQogICAgICBlbGltaW5hdGluZyByZWR1bmRhbnQgRUNDIGluaXRpYWxpemF0aW9uIGltcGxlbWVudGF0aW9ucyBhbmQgbW92aW5nCiAgICAgIHJlZHVuZGFudCBTRFJBTSBpbml0aWFsaXphdGlvbiBvdXQgb2YgYm9hcmQgY29kZSBpbnRvIHNoYXJlZCA0eHgKICAgICAgY29kZS4KCiAgICAqIEVuYWJsZXMgTUNTUiB2aXNpYmlsaXR5IG9uIHRoZSA0MDVFWChyKS4KCiAgICAqIEVuYWJsZXMgdGhlIHVzZSBvZiB0aGUgZGF0YSBjYWNoZSBmb3IgaW5pdGlhbCBSQU0gb24KICAgICAgYm90aCBBTUNDJ3MgS2lsYXVlYSBhbmQgTWFrYWx1IGFuZCByZW1vdmVzIGEgcmVkdW5kYW50CiAgICAgIENGR19QT1NUX01FTU9SWSBmbGFnIGZyb20gZWFjaCBib2FyZCdzIENPTkZJR19QT1NUIHZhbHVlLgoKICAgICAgLSBSZW1vdmVkLCBwZXIgU3RlZmFuIFJvZXNlJ3MgcmVxdWVzdCwgZGVmdW5jdCBtZW1vcnkuYyBmaWxlIGZvcgoJTWFrYWx1IGFuZCByb2xsZWQgc2RyYW1faW5pdCBmcm9tIGl0IGludG8gbWFrYWx1LmMuCgogICAgV2l0aCByZXNwZWN0IHRvIHRoZSA0eHggRERSIGluaXRpYWxpemF0aW9uIGFuZCBFQ0MgdW5pZmljYXRpb24sIHRoZXJlCiAgICBpcyBjZXJ0YWlubHkgbW9yZSB3b3JrIHRoYXQgY2FuIGFuZCBzaG91bGQgYmUgZG9uZSAoZmlsZSByZW5hbWluZywKICAgIGV0Yy4pLiBIb3dldmVyLCB0aGF0IGNhbiBiZSBoYW5kbGVkIGF0IGEgbGF0ZXIgZGF0ZSBvbiBhIHNlY29uZCBvcgogICAgdGhpcmQgcGFzcy4gQXMgaXQgc3RhbmRzLCB0aGlzIHBhdGNoIG1vdmVzIHRoaW5ncyBmb3J3YXJkIGluIGFuCiAgICBpbmNyZW1lbnRhbCB5ZXQgcG9zaXRpdmUgd2F5IGZvciB0aG9zZSBwbGF0Zm9ybXMgdGhhdCB1dGlsaXplIHRoaXMKICAgIGNvZGUgYW5kIHRoZSBmZWF0dXJlcyBhc3NvY2lhdGVkIHdpdGggaXQuCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgRXJpY2tzb24gPGdlcmlja3NvbkBudW92YXRpb25zLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhNDM5NjgwMDE5ZTA2MTcxZDRhNTY5NGI3OTkyYWNjY2U4N2Y1OTBlCkF1dGhvcjogR3JhbnQgRXJpY2tzb24gPGdlcmlja3NvbkBudW92YXRpb25zLmNvbT4KRGF0ZToJV2VkIE1heSAyMSAxMzoyODozMCAyMDA4IC0wNzAwCgogICAgUFBDNHh4OiBTaW1wbGlmaWVkIHBvc3Rfd29yZF97bG9hZCwgc3RvcmV9CgogICAgVGhpcyBwYXRjaCBzaW1wbGlmaWVzIHBvc3Rfd29yZF97bG9hZCxzdG9yZX0gYnkgdXNpbmcgdGhlIHByZXByb2Nlc3NvcgogICAgdG8gZWxpbWluYXRlIHJlZHVuZGFudCwgY29weS1hbmQtcGFzdGVkIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgRXJpY2tzb24gPGdlcmlja3NvbkBudW92YXRpb25zLmNvbT4KCmNvbW1pdCBmOTc5NjkwZWUzMzc0NTBiMjAzMGFiYTEyOGY5NWI3YThkOTg4MWMwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IE1heSAxNSAxNToxMzowOCAyMDA4IC0wNTAwCgogICAgRml4IHdhcm5pbmdzIGZyb20gZ2NjLTQuMy4wIGJ1aWxkIG9uIGEgcHBjIGhvc3QKCiAgICAqIFRoZSBjZmlfZmxhc2guYyBtZW1zZXQgZml4IGFjdHVhbCBhbGxvd3MgdGhlIGJvYXJkIHRvIGJvb3Qgc28gdGhlcmUgaXMKICAgICAgYSBiaXQgbW9yZSBnb2luZyBvbiBoZXJlIHRoYW4ganVzdCByZXNvbHZpbmcgd2FybmluZ3MgYXNzb2NpYXRlZCB3aXRoCiAgICAgIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLgoKICAgICogaW5jbHVkZS9hc20vYml0b3BzLmg6MzAyOiB3YXJuaW5nOiAnX19zd2FiMzJwJyBpcyBzdGF0aWMgYnV0IHVzZWQgaW4KICAgICAgaW5saW5lIGZ1bmN0aW9uICdleHQyX2ZpbmRfbmV4dF96ZXJvX2JpdCcgd2hpY2ggaXMgbm90IHN0YXRpYwoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgOWIxMjRhNjgzNDZjZTk2MDViNmUxZmNmNzllMTAyMTU0MWNkYmE5ZQpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTWF5IDE0IDEzOjA5OjUxIDIwMDggLTA1MDAKCiAgICBNUEM1MTJ4OiBDaGFuZ2UgdHJhcHMuYyB0byBub3QgcmVmZXJlbmNlIG5vbi1hZGRyZXNzYWJsZSBtZW1vcnkKCiAgICBDdXJyZW50bHksIEVORF9PRl9SQU0gaXMgdXNlZCBieSB0aGUgdHJhcCBjb2RlIHRvIGRldGVybWluZSBpZgogICAgd2Ugc2hvdWxkIGF0dGVtcHQgdG8gYWNjZXNzIHRoZSBzdGFjayBwb2ludGVyIG9yIG5vdC4gSG93ZXZlciwKICAgIG9uIHN5c3RlbXMgd2l0aCBhIGxvdCBvZiBSQU0sIG9ubHkgYSBzdWJzZXQgb2YgdGhlIFJBTSBpcwogICAgZ3VhcmFudGVlZCB0byBiZSBtYXBwZWQgaW4gYW5kIGFjY2Vzc2libGUuCUNoYW5nZSBFTkRfT0ZfUkFNCiAgICB0byB1c2UgZ2V0X2VmZmVjdGl2ZV9tZW1zaXplKCkgaW5zdGVhZCBvZiB1c2luZyB0aGUgcmF3IHJhbQogICAgc2l6ZSBvdXQgb2YgdGhlIGJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDgxNjczZTlhZTE0Yjc3MWNkMTNmYWYxOTk0NzE5MjU5OWNhZTM5NTkKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgTWF5IDEzIDE5OjAxOjU0IDIwMDggLTA1MDAKCiAgICBNYWtlIHN1cmUgY29tbW9uLmggaXMgdGhlIGZpcnN0IGluY2x1ZGUuCgogICAgSWYgY29tbW9uLmggaXNuJ3QgZmlyc3Qgd2UgY2FuIGdldCBDT05GSUdfIG9wdGlvbnMgZGVmaW5lZCBpbiB0aGUKICAgIGJvYXJkIGNvbmZpZyBmaWxlIGlnbm9yZWQuCVRoaXMgY2FuIGNhdXNlIGFuIGlzc3VlIGlmIGFueSBvZiB0aG9zZQogICAgY29uZmlnIG9wdGlvbnMgaW1wYWN0IHRoZSBzaXplIG9mIHR5cGVzIG9mIGRhdGEgc3RydWN0dXJlcwogICAgKGVnIENPTkZJR19QSFlTXzY0QklUKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDk1ZDQ0OWFkNGRlNzlkZDMyYjE3MDViOGE0ZDM1NTBmMWU5MDgxZTMKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgTWF5IDEzIDE1OjUzOjI5IDIwMDggKzAyMDAKCiAgICBBdm9pZCBpbml0cmQgYW5kIGxvZ2J1ZmZlciBhcmVhIG92ZXJsYXBzCgogICAgQWRkIGxvZ2J1ZmZlciB0byByZXNlcnZlZCBMTUIgYXJlYXMgdG8gcHJldmVudCBpbml0cmQgYWxsb2NhdGlvbgogICAgZnJvbSBvdmVybGFwaW5nIHdpdGggaXQuCgogICAgTWFrZSBzdXJlIHRvIHVzZSBjb3JyZWN0IGxvZ2J1ZmZlciBiYXNlIGFkZHJlc3MuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCA2OTU2ZDUzZDk5MzQ4NjI1MDdmODNmMGUzMjU1ZGZkNDY2MmU3NDgyCkF1dGhvcjogU2FzY2hhIExhdWUgPHNhc2NoYS5sYXVlQGxpZWJoZXJyLmNvbT4KRGF0ZToJVHVlIE1heSAxMyAxMzoyOTo1NCAyMDA4ICswMjAwCgogICAgbHdtb241OiBhZGQgbWVtb3J5LXBhdHRlcm4tdGVzdCB0byBGUEdBIFBPU1QuCgpjb21taXQgZTM0YTBlOTExYjZhMTU2OGQwY2E4NjQyMzRmYmQwZWUwNjBkOWIzNQpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTWF5IDggMTk6MDI6NTEgMjAwOCAtMDUwMAoKICAgIFBQQzogODZ4eCBBZGQgYmF0IHJlZ2lzdGVycyB0byByZWdpbmZvIGNvbW1hbmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkNWI5YjhjZGI4YjZlYjNhOGIwZjVkOTkwOWQ2OWNjYzljNzAzZWQ5CkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBNYXkgOSAxNTo0MTozNSAyMDA4IC0wNTAwCgogICAgUFBDOiBBZGQgcHJpbnRfYmF0cygpIHRvIGxpYl9wcGMvYmF0X3J3LmMKCiAgICBUaGlzIGZ1bmN0aW9uIHByaW50cyB0aGUgdmFsdWVzIG9mIGFsbCB0aGUgQkFUIHJlZ2lzdGVyCiAgICBwYWlycyAtIEkgbmVlZGVkIHRoaXMgZm9yIGRlYnVnIGVhcmxpZXIgdGhpcyB3ZWVrOyBhZGRpbmcgaXQgdG8KICAgIGxpYl9wcGMgc28gb3RoZXJzIGNhbiB1c2UgaXQgKGFuZCBhZGQgaXQgdG8gcmVnaW5mbyBjb21tYW5kcwogICAgaWYgc28gZGVzaXJlZCkuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYzE0OGYyNGMxNTc0M2EwMmU4NTU2MzZlNmJlZDAxM2JkMTIxZjdmMgpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTWF5IDE1IDIxOjI5OjA0IDIwMDggLTA1MDAKCiAgICBQUEM6IENoYW5nZSBsaWJfcHBjL2JhdF9ydy5jIHRvIHVzZSBoaWdoIGJhdHMKCiAgICBDdXJyZW50bHksIHRoaXMgY29kZSBvbmx5IGRlYWxzIHdpdGggQkFUcyAwLTMsIHdoaWNoIG1ha2VzCiAgICBpdCB1c2VsZXNzIG9uIHN5c3RlbXMgdGhhdCBzdXBwb3J0IEJBVHMgNC03LiAgQWRkIHRoZQogICAgc3VwcG9ydCBmb3IgdGhlc2UgcmVnaXN0ZXJzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxCZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDMxZDgyNjcyMjQzNDkzMWUxMTUyYTA5ZDE0MDE4N2RjZjcyZjhhYWMKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE1heSA4IDE5OjAyOjEyIDIwMDggLTA1MDAKCiAgICBQUEM6IENyZWF0ZSBhbmQgdXNlIENPTkZJR19ISUdIX0JBVFMKCiAgICBDaGFuZ2UgYWxsIGNvZGUgdGhhdCBjb25kaXRpb25hbGx5IG9wZXJhdGVzIG9uIGhpZ2ggYmF0CiAgICByZWdpc3RlcnMgKHRoYXQgaXMsIEJBVHMgNC03KSB0byBsb29rIGF0IENPTkZJR19ISUdIX0JBVFMKICAgIGluc3RlYWQgb2YgdGhlIG15cmlhZCB3YXlzIHRoaXMgaXMgZG9uZSBub3cuICBEZWZpbmUgdGhlIG9wdGlvbgogICAgZm9yIGV2ZXJ5IGNvbmZpZyBmb3Igd2hpY2ggaGlnaCBiYXRzIGFyZSBzdXBwb3J0ZWQgKGFuZAogICAgZW5hYmxlZCBieSBlYXJseSBib290LCBvbiBwYXJ0cyB3aGVyZSB0aGV5J3JlIG5vdCBhbHdheXMKICAgIGVuYWJsZWQpCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYWEzYjhiZjljMzAwNjViYjJlYTg1Mjc5OWQzMmRiNTAyMDU5ODQ5NQpBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgpEYXRlOglXZWQgTWF5IDI4IDE5OjU1OjE5IDIwMDggKzAyMDAKCiAgICBFMTAwMDogQWRkIHN1cHBvcnQgZm9yIHRoZSA4MjU0MUdJIExGIEludGVsIFBybyAxMDAwIEdUIERlc2t0b3AgQWRhcHRlcgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBmZjM2ZmJiMmU3NTgzZmI4MDhlZWY3NzNmNTExNDg5YzdhOWMyZGYzCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE1heSAyOCAxMzowNjoyNSAyMDA4IC0wNTAwCgogICAgQ29sZEZpcmU6IEFkZCAxMCBiYXNlIGV0aGVybmV0IHN1cHBvcnQgZm9yIG1jZjU0NDV4CgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMWE5ZmNjNGI3NjU1OTlkYjI0ZmE5YzMyMjkzNTk5ZjI0YzdhMTliYQpBdXRob3I6IEphc29uIE1jTXVsbGFuIDxtY211bGxhbkBuZXRhcHAuY29tPgpEYXRlOglGcmkgTWF5IDMwIDAwOjUzOjM4IDIwMDggKzA5MDAKCiAgICBtaXBzOiBBZGQgYW4gJ2luY2x1ZGUvYXNtL2Vycm5vLmgnLCBsaWtlIGFsbCBvdGhlciBhcmNoaXRlY3R1cmVzCgogICAgQWxsIG90aGVyIHUtYm9vdCBhcmNoaXRlY3R1cmVzIGhhdmUgYW4gaW5jbHVkZS9hc20vZXJybm8uaCwgc28KICAgIHRoaXMgY2hhbmdlIGFkZHMgaXQgdG8gdGhlIG1pcHMgaW5jbHVkZS9hc20tbWlwcyBoZWFkZXJzIGFsc28uCgogICAgU3RvbGVuIGZyb20gTGludXggMi42LjI1LgoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIE1jTXVsbGFuIDxtY211bGxhbkBuZXRhcHAuY29tPgoKY29tbWl0IGUyYWQ4NDI2NjI0YmFjNDU3YWNjNjkyNWI2ZmY0MDhlOWJmMjA0NjYKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglGcmkgTWF5IDMwIDAwOjUzOjM4IDIwMDggKzA5MDAKCiAgICBbTUlQU10gPGFzbS9taXBzcmVncy5oPjogVXBkYXRlIGNvcHJvY2Vzc29yIHJlZ2lzdGVyIGFjY2VzcyBtYWNyb3MKCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IDFhM2FkYWM4MWMyOTJmMmVlNzZlNDNjZGViMmZiZThmOTE1ZmUxOTQKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglGcmkgTWF5IDMwIDAwOjUzOjM4IDIwMDggKzA5MDAKCiAgICBbTUlQU10gPGFzbS9taXBzcmVncy5oPjogVXBkYXRlIHJlZ2lzdGVyIC8gYml0IGZpZWxkIGRlZmluaXRpb25zCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCBiZjQ2MmFlNDUwYTdmMmVlZWRkYzY5OWVkMzQ1YjM5MWUzMjYzNTQwCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJRnJpIE1heSAzMCAwMDo1MzozNyAyMDA4ICswOTAwCgogICAgW01JUFNdIDxhc20vbWlwc3JlZ3MuaD46IENvZGlueWdTdHlsZSBjbGVhbnVwcwoKICAgIE5vIGZ1bmN0aW9uYWwgY2hhbmdlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IDg5YTE1NTBlYzZiNzQ0NTIyNzRhN2EyMzEyNzkzNmUyYzdlZWM3MTEKQXV0aG9yOiBKYXNvbiBNY011bGxhbiA8bWNtdWxsYW5AbmV0YXBwLmNvbT4KRGF0ZToJRnJpIE1heSAzMCAwMDo1MzozNyAyMDA4ICswOTAwCgogICAgbWlwczogSWYgQ09ORklHX0NNRF9TUEkgaXMgZGVmaW5lZCwgY2FsbCBzcGlfaW5pdCgpCgogICAgVGhlIG1pcHMgYXJjaGl0ZWN0dXJlIGN1cnJlbnRseSBkb2VzIG5vdCBjYWxsICdzcGlfaW5pdCgpJyBpbiB0aGUgZ2VuZXJpYwogICAgYm9hcmQgaW5pdGlhbGl6YXRpb24gcm91dGluZSBpcyBDT05GSUdfQ01EX1NQSSBpcyBkZWZpbmVkLgoKICAgIFRoaXMgcGF0Y2ggcmVjdGlmaWVzIHRoYXQgcHJvYmxlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBNY011bGxhbiA8bWNtdWxsYW5AbmV0YXBwLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgZTk5NmJjMzM5YjBmMzlmNmMwYjI5YjE0NTViYTdlYjMxOGIwMjNkMwpBdXRob3I6IEphc29uIE1jTXVsbGFuIDxtY211bGxhbkBuZXRhcHAuY29tPgpEYXRlOglGcmkgTWF5IDMwIDAwOjUzOjM3IDIwMDggKzA5MDAKCiAgICBbTUlQU10gbGliX21pcHMvYm9hcmQuYzogQWRkIG5hbmRfaW5pdAoKICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgc3RhbmRhcmQgJ25hbmRfaW5pdCgpJyBjYWxsIHRvIHRoZSBtaXBzIGdlbmVyaWMKICAgICdib2FyZF9pbml0X3IoKScgY2FsbCwgYnJpbmdpbmcgTUlQUyBpbiBsaW5lIHdpdGggdGhlIG90aGVyIGFyY2hpdGVjdHVyZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gTWNNdWxsYW4gPG1jbXVsbGFuQG5ldGFwcC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IGQ2YWMyZWQ4OTNjMjE2ODczOGFlZTAxNTc5ZDYyODNhZjhkMzcwNDUKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE1heSAyMiAxMDo0OTo0NiAyMDA4IC0wNTAwCgogICAgUmVtb3ZlIHByb3RvdHlwZXMgb2YgbmFuZF9pbml0KCkgaW4gZmF2b3Igb2YgaW5jbHVkaW5nIG5hbmQuaC4KCiAgICBMaWtld2lzZSB3aXRoIG9uZW5hbmRfaW5pdCgpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDIyOWM1NmYwN2E4MmVhY2RhOGM4NzIwY2IxNDZmYzliZTBmNmRiNTQKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE1heSAyMiAxMDo0OTowMCAyMDA4IC0wNTAwCgogICAgTWFrZSBvbmVuYW5kX3Vib290Lmggc2VsZi1zdWZmaWNpZW50LgoKICAgIERvbid0IGFzc3VtZSB0eXBlcyBhcmUgcHJvdmlkZWQgYnkgcHJldmlvdXNseSBpbmNsdWRlZCBoZWFkZXJzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk3MjNiYmI0NmFiYjdiMmNhMjRlZWFkNTExNGEzZmFhNTgwNjBjMjAKQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdtYWlsLmNvbT4KRGF0ZToJV2VkIEphbiAxNiAxNDoyNjo1OSAyMDA4ICswMTAwCgogICAgbmFuZDogQ29ycmVjdCBOQU5EIGVyYXNlIHBlcmNlbnRhZ2Ugb3V0cHV0CgogICAgRm9yIE5BTkQgZXJhc2Ugc2l6ZXMgc21hbGxlciB0aGFuIG9uZSBOQU5EIGVyYXNlIGJsb2NrLCBlcmFzZQogICAgcGVyY2VudGFnZSBvdXRwdXQgYmVjb21lcyBncmF0ZXIgdGhhbiAxMDAlIGUuZy4KCiAgICAtLSBjdXQgLS0KICAgICAgPiBuYW5kIGluZm8KICAgIERldmljZSAwOiBOQU5EIDY0TWlCIDEsOFYgOC1iaXQsIHNlY3RvciBzaXplIDE2IEtpQgogICAgICA+IG5hbmQgZXJhc2UgMHgxMDAwMDAgMHgyMDAwCiAgICBOQU5EIGVyYXNlOiBkZXZpY2UgMCBvZmZzZXQgMHgxMDAwMDAsIHNpemUgMHgyMDAwCiAgICBFcmFzaW5nIGF0IDB4MTAwMDAwIC0tIDIwMCUgY29tcGxldGUuCiAgICBPSwogICAgICA+CiAgICAtLSBjdXQgLS0KCiAgICBDb3JyZWN0IHRoaXMgYW5kIGdpdmUgdXNlciBhIHdhcm5pbmcgdGhhdCBtb3JlIGlzIGVyYXNlZCB0aGFuIHNwZWNpZmllZDoKCiAgICAtLSBjdXQgLS0KICAgICAgPiBuYW5kIGVyYXNlIDB4MTAwMDAwIDB4MjAwMAogICAgTkFORCBlcmFzZTogZGV2aWNlIDAgb2Zmc2V0IDB4MTAwMDAwLCBzaXplIDB4MjAwMAogICAgV2FybmluZzogRXJhc2Ugc2l6ZSAweDAwMDAyMDAwIHNtYWxsZXIgdGhhbiBvbmUgZXJhc2UgYmxvY2sgMHgwMDAwNDAwMAoJICAgICAgIEVyYXNpbmcgMHgwMDAwNDAwMCBpbnN0ZWFkCiAgICBFcmFzaW5nIGF0IDB4MTAwMDAwIC0tIDEwMCUgY29tcGxldGUuCiAgICBPSwogICAgICA+CiAgICAtLSBjdXQgLS0KCiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdtYWlsLmNvbT4KCmNvbW1pdCA1OTIyZGI2YzA5NDg1MDZiZTkxZTBkZTQ0ZTdhNjg2M2ExOGE0MTdmCkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJVHVlIE1heSAxMyAxNzozMToyNCAyMDA4ICswMjAwCgogICAgQ2xlYW51cCBuYW5kX2luZm9bXSBkZWNsYXJhdGlvbi4KCiAgICBUaGUgbmFuZF9pbmZvIGFycmF5IGlzIGRlY2xhcmVkIGFzIGV4dGVybiBpbiBzZXZlcmFsIC5jIGZpbGVzLgogICAgVGhvc2UgZGF5cywgbmFuZC5oIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBhcnJheSwgc28gdGhlcmUgaXMKICAgIG5vIG5lZWQgdG8gZGVjbGFyZSBpdCBlbHNld2hlcmUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDEzNWYwYTc0ODhhZjI5NDdhZGJlNGI0MGI3OTI4MGJkZmU1ZTk4ODYKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIE1heSAxOSAwOTozMDo0MyAyMDA4IC0wNTAwCgogICAgTkFORDogUHJvdmlkZSBhIHNhbmUgZGVmYXVsdCBmb3IgTkFORF9NQVhfQ0hJUFMuCgogICAgVGhpcyBhbGxvd3MgdGhlIGhlYWRlciB0byBiZSBpbmNsdWRlZCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgYSBib2FyZCdzCiAgICBjb25maWcgZmlsZSBwcm92aWRlcyBOQU5ELXJlbGF0ZWQgZGVmaW5pbml0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhODA5MmMwMjFkMjdmMjdmNGIzMjNiN2Q0OTk3OWNhMDFiM2ZjMTlkCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglNb24gTWF5IDI2IDEyOjE5OjEwIDIwMDggKzAyMDAKCiAgICBhdnIzMjogRml4IHRoZW9yZXRpY2FsIHJhY2UgaW4gdWRlbGF5KCkKCiAgICBJZiB0aGUgc3BlY2lmaWVkIGRlbGF5IGlzIHZlcnkgc2hvcnQsIHRoZSBjeWNsZSBjb3VudGVyIG1heSBnbyBwYXN0IHRoZQogICAgImVuZCIgdGltZSB3ZSBhcmUgd2FpdGluZyBmb3IgYmVmb3JlIHdlIGdldCBhcm91bmQgdG8gcmVhZGluZyBpdC4KCiAgICBGaXggaXQgYnkgY2hlY2tpbmcgdGhlIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSBjeWNsZSBjb3VudCAibm93IiBhbmQgdGhlCiAgICBjeWNsZSBjb3VudCBhdCB0aGUgYmVnaW5uaW5nLiBUaGlzIHdpbGwgd29yayBhcyBsb25nIGFzIHRoZSBkZWxheQogICAgbWVhc3VyZWQgaW4gbnVtYmVyIG9mIGN5Y2xlcyBpcyBiZWxvdyAyXjMxLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCA0OGVhNjIzZWFlODY3NDc5MzM3MmUzZTdjOTVlNzJlNWE0NGQ3YTk1CkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglXZWQgTWF5IDIxIDEzOjAxOjA5IDIwMDggKzAyMDAKCiAgICBhdnIzMjogQ29tcGlsZSBhdG1lbF9tY2kubyBjb25kaXRpb25hbGx5CgogICAgUmVtb3ZlICNpZmRlZiBDT05GSUdfTU1DIGZyb20gdGhlIHNvdXJjZSBmaWxlIGFuZCB1c2UgY29uZGl0aW9uYWwKICAgIGNvbXBpbGF0aW9uIGluIHRoZSBNYWtlZmlsZSBpbnN0ZWFkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBlOTJhNWJmODMzMDY1NGUzM2FjMTNmNmIzMDU4NjM0ZTU4ZjVkMWMwCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglUaHUgTWF5IDIyIDEyOjI4OjI1IDIwMDggKzAyMDAKCiAgICBhdnIzMjogRml4IHdyb25nIGVycm9yIGZsYWdzIGluIGF0bWVsX21jaSBkcml2ZXIKCiAgICBNYWtlIHN1cmUgd2UgY2hlY2sgZm9yIENSQyBlcnJvcnMgd2hlbiBzZW5kaW5nIGNvbW1hbmRzIHRoYXQgdXNlIENSQwogICAgY2hlY2tpbmcuCgogICAgUmVwb3J0ZWQtYnk6IEd1cnVyYWphIEhlYmJhciBLIFIgPGd1cnVyYWpha3JAc2FueW8uY28uaW4+CiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgN2E5NmRkYWRkMTNlNmFjOWE4MjlhZmZjZTliNmY4ODIzZjU4MGU0OQpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJV2VkIE1heSAyMSAxMToxMDo1OSAyMDA4ICswMjAwCgogICAgYXZyMzI6IEZpeCB0d28gd2FybmluZ3MgaW4gYXRtZWxfbWNpLmMKCiAgICBUaGUgd2FybmluZ3MgYXJlIGhhcm1sZXNzIGJ1dCBhbm5veWluZy4gTGV0J3MgZml4IHRoZW0uCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGEyM2UyNzdjNGEzYTJiYmM0MmQyMzdhYWUyOWRhM2E4OTcxZTc1N2YKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CU1vbiBNYXkgMTkgMTE6MzY6MjggMjAwOCArMDIwMAoKICAgIGF2cjMyOiBSZXdvcmsgU0RSQU0gaW5pdGlhbGl6YXRpb24gY29kZQoKICAgIFRoaXMgY2xlYW5zIHVwIHRoZSBTRFJBTSBpbml0aWFsaXphdGlvbiBhbmQgcmVsYXRlZCBjb2RlIGEgYml0LCBhbmQKICAgIGFsbG93cyBmYXN0ZXIgYm9vdGluZy4KCiAgICAgICogQWRkIGRlZmluaXRpb25zIGZvciBFQkkgYW5kIGludGVybmFsIFNSQU0gdG8gYXNtL2FyY2gvbWVtb3J5LW1hcC5oCiAgICAgICogUmVtb3ZlIG1lbW9yeSB0ZXN0IGZyb20gc2RyYW1faW5pdCgpIGFuZCBtYWtlIGNhbGxlciByZXNwb25zaWJsZQoJZm9yIHZlcmlmeWluZyB0aGUgU0RSQU0gYW5kIGRldGVybWluaW5nIGl0cyBzaXplLgogICAgICAqIFJlbW92ZSBiYXNlX2FkZHJlc3MgbWVtYmVyIGZyb20gc3RydWN0IHNkcmFtX2NvbmZpZyAod2FzIHNkcmFtX2luZm8pCiAgICAgICogQWRkIGRhdGFfYml0cyBtZW1iZXIgdG8gc3RydWN0IHNkcmFtX2NvbmZpZyBhbmQga2lsbCBDRkdfU0RSQU1fMTZCSVQKICAgICAgKiBBZGQgc3VwcG9ydCBmb3IgYSBjb21tb24gU1RLMTAwMCBoYWNrOiAxNk1CIFNEUkFNIGluc3RlYWQgb2YgOC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgOTUxMDdiN2MwMjg4MDY5MTk2MzBiZjAyYzY1M2FhOGY0Zjg2N2M5NApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJTW9uIE1heSAxOSAxMToyNzozNyAyMDA4ICswMjAwCgogICAgYXZyMzI6IERvIHN0cmljdGVyIHN0YWNrIGNoZWNraW5nIGluIHRoZSBleGNlcHRpb24gaGFuZGxlcgoKICAgIERvbid0IGRvIGEgc3RhY2sgZHVtcCBpZiB0aGUgc3RhY2sgcG9pbnRlciBpcyBvdXRzaWRlIHRoZSBtZW1vcnkgYXJlYQogICAgcmVzZXJ2ZWQgZm9yIHN0YWNrLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBjYWY4M2VhODg4YTAyMjBmNDE3NDdkMGI3NzQ4ZmE0M2I0YTRiZDQ5CkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglGcmkgTWF5IDIgMTU6MzI6NTcgMjAwOCArMDIwMAoKICAgIGF2cjMyOiBVc2UgdGhlIHNhbWUgZW50cnkgcG9pbnQgZm9yIHJlc2V0IGFuZCBleGNlcHRpb24gaGFuZGxpbmcKCiAgICBTaW5jZSB0aGUgcmVzZXQgdmVjdG9yIGlzIGFsd2F5cyBhbGlnbmVkIHRvIGEgdmVyeSBsYXJnZSBib3VuZGFyeSwgd2UKICAgIGNhbiBzYXZlIGEgY291cGxlIG9mIEtCIHdvcnRoIG9mIGFsaWdubWVudCBwYWRkaW5nIGJ5IHBsYWNpbmcgdGhlCiAgICBleGNlcHRpb24gdmVjdG9ycyBhdCB0aGUgc2FtZSBhZGRyZXNzLgoKICAgIERlY2lkaW5nIHdoaWNoIG9uZSBpdCBpcyBpcyBlYXN5OiBJZiB3ZSdyZSBoYW5kbGluZyBhbiBleGNlcHRpb24sIHRoZQogICAgQ1BVIGlzIGluIEV4Y2VwdGlvbiBtb2RlLiBJZiB3ZSdyZSBzdGFydGluZyB1cCBhZnRlciByZXNldCwgdGhlIENQVSBpcwogICAgaW4gU3VwZXJ2aXNvciBtb2RlLiBTbyB0aGlzIGFkZHMgYSB2ZXJ5IG1pbmltYWwgb3ZlcmhlYWQgdG8gdGhlIHJlc2V0CiAgICBwYXRoIChvbmx5IGV4ZWN1dGVkIG9uY2UpIGFuZCB0aGUgZXhjZXB0aW9uIGhhbmRsaW5nIHBhdGggKG5vcm1hbGx5CiAgICBuZXZlciBleGVjdXRlZCBhdCBhbGwuKQoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCAwYzE2ZWVkMjE4OWExOTBiZDU2NTViMzNjMDI5ZjgwOWE5YjMxMTI4CkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglGcmkgTWF5IDIgMTU6MjQ6MjIgMjAwOCArMDIwMAoKICAgIGF2cjMyOiBQdXQgbWVtc2V0IGluIGl0cyBvd24gc2VjdGlvbgoKICAgIEFsbCBDIGNvZGUgaXMgY29tcGlsZWQgd2l0aCAtZmZ1bmN0aW9uLXNlY3Rpb25zIC1mZGF0YS1zZWN0aW9ucy4KICAgIEFzc2VtYmx5IGZ1bmN0aW9ucyBzaG91bGQgZ2V0IHRoZWlyIG93biBzZWN0aW9ucyBhcyB3ZWxsIHNvIHRoYXQKICAgIGV2ZXJ5dGhpbmcgbG9va3MgY29uc2lzdGVudC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgM2FjZTI1MjdiYTgwYmQyZmUxYmNlYWFiNTBkMGIzYzRmYjVkZDAyMApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJRnJpIE1heSAyIDE1OjIxOjQwIDIwMDggKzAyMDAKCiAgICBhdnIzMjogUmVuYW1lIHBtX2luaXQoKSBhcyBjbGtfaW5pdCgpIGFuZCBtYWtlIFNvQy1zcGVjaWZpYwoKICAgIHBtX2luaXQoKSB3YXMgYWx3YXlzIG1vcmUgYWJvdXQgY2xvY2sgaW5pdGlhbGl6YXRpb24gdGhhbiBhbnl0aGluZwogICAgZWxzZS4gRGVhbGluZyB3aXRoIFBMTHMsIGNsb2NrIGdhdGluZyBhbmQgc3VjaCBpcyBhbHNvIGluaGVyZW50bHkKICAgIFNvQy1zcGVjaWZpYywgc28gbW92ZSBpdCBpbnRvIGEgU29DLXNwZWNpZmljIGRpcmVjdG9yeS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgNGY1OTcyYzNiMjQ1NGMyMjk1N2YyODQyY2ZlNjRlYzgxMThlMDE1YgpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJV2VkIEFwciAzMCAxNjoxNTo1NyAyMDA4ICswMjAwCgogICAgYXZyMzI6IFVzZSBuZXctc3R5bGUgTWFrZWZpbGUgZm9yIHRoZSBhdDMyYXAgcGxhdGZvcm0KCiAgICBUaGlzIG1ha2VzIGl0IGVhc2llciB0byBhdm9pZCBjb21waWxpbmcgY2VydGFpbiBmaWxlcyBsYXRlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgYTliMmJiNzhhMWJkOGViZGI2MzM1MDliZGQxYzgxMzRkNTI3YjIxMwpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJV2VkIEFwciAzMCAxNDozNjo0NyAyMDA4ICswMjAwCgogICAgYXZyMzI6IFJlbW92ZSB1bnVzZWQgZmlsZSBjcHUvYXQzMmFwL3BtLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgNDQ0NTNiMjViMDY0MjZlZWYwYjdiMmZhN2MwMjZmZGYxOWNlMzRmMgpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJV2VkIEFwciAzMCAxNDoxOToyOCAyMDA4ICswMjAwCgogICAgYXZyMzI6IENsZWFuIHVwIHRoZSBITUFUUklYIGNvZGUKCiAgICBSZXdvcmsgdGhlIEhNQVRSSVggY29uZmlndXJhdGlvbiBpbnRlcmZhY2Ugc28gdGhhdCBpdCBiZWNvbWVzIGVhc2llcgogICAgdG8gY29uZmlndXJlIHRoZSBITUFUUklYIGZvciBib2FyZHMgd2l0aCBzcGVjaWFsIG5lZWRzLCBhbmQgYWRkIG5ldwogICAgcGFydHMuCgogICAgVGhlIEhNQVRSSVggaGVhZGVyIGZpbGUgaGFzIGJlZW4gc3BsaXQgaW50byBhIGdlbmVyYWwsCiAgICBjaGlwLWluZGVwZW5kZW50IHBhcnQgd2l0aCByZWdpc3RlciBkZWZpbml0aW9ucywgZXRjLiBhbmQgYQogICAgY2hpcC1zcGVjaWZpYyBwYXJ0IHdpdGggU0ZSIGJpdGZpZWxkIGRlZmluaXRpb25zIGFuZCBtYXN0ZXIvc2xhdmUKICAgIGlkZW50aWZpZXJzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCAwYTJlNDg3OTJkZDM3MmM5MGI4MDA1OWYzMjM1ZTY3YTU2N2UxNmZjCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglUaHUgTm92IDIyIDEyOjE0OjExIDIwMDcgKzAxMDAKCiAgICBhdnIzMjogQWRkIHN1cHBvcnQgZm9yIHRoZSBBVFNUSzEwMDYgYm9hcmQKCiAgICBUaGlzIGlzIGEgcmVwbGFjZW1lbnQgZm9yIEFUU1RLMTAwMiB3aXRoIDY0TUIgU0RSQU0gYW5kIE5BTkQgZmxhc2ggb24KICAgIGJvYXJkLiBJdCdzIGN1cnJlbnRseSBpbiBwcm9kdWN0aW9uIGFuZCB3aWxsIGJlIGF2YWlsYWJsZSBzb29uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCA3ODFlYjlhMWU0YWY0YmQzNGMxMzhlNjEyNmVjNWNjNmRkNGI1NDQwCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglUdWUgQXByIDI5IDEyOjUzOjA1IDIwMDggKzAyMDAKCiAgICBhdnIzMjogR2V0IHJpZCBvZiB0aGUgLmZsYXNocHJvZyBzZWN0aW9uCgogICAgVGhlIC5mbGFzaHByb2cgc2VjdGlvbiB3YXMgb25seSBuZWVkZWQgYmFjayB3aGVuIHdlIHdlcmUgcnVubmluZwogICAgZGlyZWN0bHkgZnJvbSBmbGFzaCwgYW5kIGl0J3MgZXZlbiBtb3JlIHVzZWxlc3Mgb24gTkdXMTAwIHNpbmNlIGl0CiAgICB1c2VzIHRoZSBDRkkgZmxhc2ggZHJpdmVyIHdoaWNoIG5ldmVyIHVzZWQgdGhpcyB3b3JrYXJvdW5kIGluIHRoZQogICAgZmlyc3QgcGxhY2UuCgogICAgUmVtb3ZlIGl0IG9uIFNUSzEwMDAgYXMgd2VsbCwgYW5kIGdldCByaWQgb2YgYWxsIHRoZSBhc3NvY2lhdGVkIGNvZGUgYW5kCiAgICBhbm5vdGF0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgY2RkNDJjMGM3YTUyMDVmYzM4MDkxMmQ4MzIyOTA2OWE3MWVhM2FiZgpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJV2VkIEFwciAzMCAxMzowOTo1NiAyMDA4ICswMjAwCgogICAgYXZyMzI6IFVzZSBjb3JyZWN0IGNvbmRpdGlvbiBhcm91bmQgbWFjYiBjbG9jayBhY2Nlc3NvcnMKCiAgICBnZXRfbWFjYl9wY2xrX3JhdGUoKSBhbmQgZ2V0X21hY2JfaGNsa19yYXRlKCkgc2hvdWxkIGJlIGF2YWlsYWJsZSB3aGVuCiAgICB0aGUgY2hpcCBoYXMgYSBNQUNCIGNvbnRyb2xsZXIsIG5vdCB3aGVuIGl0IGhhcyBhIFVTQVJULgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBmNzkzYTM1ODE5MDFmZjM5YzJhYmI5NDAxMmQ5YmJjODU3M2NjZjAyCkF1dGhvcjogRGF2aWQgQnJvd25lbGwgPGRhdmlkLWJAcGFjYmVsbC5uZXQ+CkRhdGU6CVdlZCBBcHIgMTYgMjI6NTc6NTggMjAwOCAtMDcwMAoKICAgIGF2cjMyOiBEaXNhYmxlIHRoZSBBUDcwMDAgaW50ZXJuYWwgd2F0Y2hkb2cgb24gc3RhcnR1cAoKICAgIFRoaXMgcGF0Y2ggZm9yY2VzIHRoZSB3YXRjaGRvZyBvZmYgaW4gYWxsIGNhc2VzLiAgVGhhdCB3aWxsIGF0IGxlYXN0CiAgICBnZXQgcmlkIG9mIHRoZSBjb25zdGFudCByZWJvb3QgY3ljbGUsIHRob3VnaCBpdCB3b24ndCBsZXQgdGhlIHdhdGNoZG9nCiAgICBhY3R1YWxseSBydW4gaW4gdGhlIG5ldyBrZXJuZWxzOiAgaXRzIHByb2JlKCkgY29tZXMgdXAgd2l0aCBhIHBvbGl0ZQogICAgd2FybmluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgNTVhYzdhNzQ5MGI1NWRhNTY2NTlmOTVkODJhMGM4M2I5NzU2ZGYyNwpBdXRob3I6IERhdmlkIEJyb3duZWxsIDxkYXZpZC1iQHBhY2JlbGwubmV0PgpEYXRlOglGcmkgRmViIDIyIDEyOjU0OjM5IDIwMDggLTA4MDAKCiAgICBhdnIzMjogc3RrMTAwMiBhbmQgbmd3MTAwIGNvbnZlcmdlbmNlCgogICAgTWFrZSBTVEsxMDAyIGFuZCBOR1cxMDAgYm9hcmRzIGFjdCBtb3JlIGFsaWtlOgogICAgICAtIFNUSyBib2FyZHMgY2FuIHVzZSBhcyBtYW55IGFyZ3VtZW50cyBhcyBOR1cKICAgICAgLSBTVEsgYm9hcmRzIGRvbid0IG5lZWQgdG8gbWFuYWdlIEZQR0FzIGVpdGhlcgogICAgICAtIE5HVyBjb21tYW5kcyBzaG91bGQgbWF0Y2ggU1RLIG9uZXMKCiAgICBBbHNvIHNwZWxsIFUtQm9vdCByaWdodCBpbiBwcm9tcHRzIGZvciBTVEsxMDAyIGFuZCBOR1cxMDAuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiAgICBbaGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbTogdXBkYXRlIFNUSzEwMFszNF0gYXMgd2VsbF0KICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCA1ZTE4ODJkZjZhM2VmYzdkZTU1MjRkMjhjZWE0ZWNkZTdkMTYzZDU0CkF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KRGF0ZToJVHVlIE1heSAyNyAxMzo0NzowMCAyMDA4ICswMjAwCgogICAgU29jcmF0ZXM6IEZpeCBQQ0kgYnVzIGZyZXF1ZW5jeSByZXBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgoKY29tbWl0IDc5MWUxZGJhOGRlNzZhZDhlNzYyYTdiYWRiODY5ZjIyNGExZjhiODIKQXV0aG9yOiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgpEYXRlOglUdWUgTWF5IDI3IDExOjQ5OjEzIDIwMDggKzAyMDAKCiAgICBTb2NyYXRlczogQWRkZWQgVVNCIHN1cHBvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KCmNvbW1pdCA1YTkwNGU1NjM3Y2ZmMWQ3MDhkYzY3MDk4MDA0ZjgzYmE5ZTg0YzU0CkF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KRGF0ZToJVHVlIE1heSAyNyAxMTozNTowMiAyMDA4ICswMjAwCgogICAgVVNCOiBhZGQgbmV3IGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgQ09ORklHX1BDSV9PSENJX0RFVk5PCgogICAgSW4gY2FzZSBvZiBzZXZlcmFsIFBDSSBVU0IgY29udHJvbGxlcnMgb24gYSBib2FyZCB0aGlzIHZhcmlhYmxlCiAgICBzcGVjaWZ5cyB3aGljaCBjb250cm9sbGVyIHRvIHVzZS4KICAgIFNlZSBkb2MvUkVBRE1FLmdlbmVyaWNfdXNiX29oY2kgZm9yIGRldGFpbHMuCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KCmNvbW1pdCAyZjc0NjhhZWJhNjBlMTI4ODAzMGE4ZDAwN2M0ZTYzYmQzZjEzMjIxCkF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KRGF0ZToJVHVlIE1heSAyNyAxMDozNjowNyAyMDA4ICswMjAwCgogICAgU29jcmF0ZXM6IGFkZCBzdXBwb3J0IGZvciBEUzc1IERpZ2l0YWwgVGhlcm1vIFNlbnNvciBvbiBJMkMgYnVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Cgpjb21taXQgODNlOWQ3YTI2MTRkNDAwNmI5MjY5MGFmYTMzOTBjMjkxNzM0MjY3ZQpBdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CkRhdGU6CU1vbiBNYXkgMjYgMTg6MTY6MDQgMjAwOCArMDIwMAoKICAgIFNvY3JhdGVzOiBDb25maWcgZmlsZSBjbGVhbnVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Cgpjb21taXQgNjAyY2FjMTM4OWI3NTViMjIzMjcyZjIzMjhhNDdlNmY4YzI0MDg0OApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBNYXkgMjQgMTI6NDc6NDYgMjAwOCArMDIwMAoKICAgIE1BS0VBTEw6IGFkZCBhdDkxIGxpc3QKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDI5MGVmNjQzNjgzOGIxY2MwMTNiZDY3ZTBlMDQ5NWM5ZWIzZTIzYzAKQXV0aG9yOiBSb24gTWFkcmlkIDxyb25fbWFkcmlkQHNiY2dsb2JhbC5uZXQ+CkRhdGU6CUZyaSBNYXkgMjMgMTU6Mzc6MDUgMjAwOCAtMDcwMAoKICAgIEFkZCBNYXJ2ZWxsIDg4RTExMTggc3VwcG9ydCBmb3IgVFNFQwoKICAgIFNpZ25lZC1vZmYtYnk6IFJvbiBNYWRyaWQgPHJvbl9tYWRyaWRAc2JjZ2xvYmFsLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNTU3YjM3N2Q4YmZjOGI4MzNiNmU3NDk0NTdiY2RmYTI5ODMzMWEyNApBdXRob3I6IEplbnMgR2VocmxlaW4gPHNld19zQHRxcy5kZT4KRGF0ZToJTW9uIE1heSA1IDE0OjA2OjExIDIwMDggKzAyMDAKCiAgICBzbWM5MTF4OiBhZGQgMTYgYml0IHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZW5zIEdlaHJsZWluIDxzZXdfc0B0cXMuZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDYzMjRlNWJlYzg4MjVmN2ZlZTMwMjZmZmJkMzk0NDU0YWU4YjUzZmIKQXV0aG9yOiBDaHJpc3RpYW4gRWdnZXJzIDxjZWdnZXJzQGdteC5kZT4KRGF0ZToJV2VkIE1heSAyMSAyMToyOToxMCAyMDA4ICswMjAwCgogICAgRml4IGVuZGlhbmVzcyBjb252ZXJzaW9uIGluIHVzYl9vaGNpLmMKCiAgICBTb3JyeSwgSSBmb3Jnb3QgdGhpcyBsaW5lOgoKICAgIFNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBFZ2dlcnMgPGNlZ2dlcnNAZ214LmRlPgoKICAgIEkgdGhpbmsgdGhpcyBtdXN0IGJlIHN3YXBwZWQgKHJlc3VsdCBtYXkgYmUgZXF1YWwpLgoKY29tbWl0IGM5MTgyNjFjNmQ5ZjI2NWY4OGJhZjcwZjhhNzNkZmU2ZjBjYjk1OTYKQXV0aG9yOiBDaHJpc3RpYW4gRWdnZXJzIDxjZWdnZXJzQGdteC5kZT4KRGF0ZToJV2VkIE1heSAyMSAyMjoxMjowMCAyMDA4ICswMjAwCgogICAgVVNCOiByZXBsYWNlIG9sZCBzd2FwXyB3aXRoIHByb3BlciBlbmRpYW5lc3MgY29udmVyc2lvbiBtYWNyb3MKCiAgICBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gRWdnZXJzIDxjZWdnZXJzQGdteC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgZmI2MzkzOWI0ZmUxNDA4NDljZGJhNjlmOWU2NGEzZTBlMmYzY2UxYwpBdXRob3I6IENocmlzdGlhbiBFZ2dlcnMgPGNlZ2dlcnNAZ214LmRlPgpEYXRlOglXZWQgTWF5IDIxIDIxOjI5OjEwIDIwMDggKzAyMDAKCiAgICBGaXggZW5kaWFuZXNzIGNvbnZlcnNpb24gaW4gdXNiX29oY2kuYwoKICAgIFNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBFZ2dlcnMgPGNlZ2dlcnNAZ214LmRlPgogICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KCmNvbW1pdCA0Nzc0MzRjNjNjMmVhNWJhYTVjNmM0ZTQzNTAwNzg2ZjQzNjUxMWZmCkF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KRGF0ZToJVGh1IE1heSAyMiAwMToxNTo1MyAyMDA4ICswMjAwCgogICAgVVNCOiBhZGQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgUENJIE9IQ0kgY29udHJvbGxlcnMKCiAgICBBZGQgbmV3IGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgQ09ORklHX1BDSV9PSENJX0RFVk5PLgogICAgSW4gY2FzZSBvZiBzZXZlcmFsIFBDSSBVU0IgY29udHJvbGxlcnMgb24gYSBib2FyZCB0aGlzIHZhcmlhYmxlCiAgICBzcGVjaWZ5cyB3aGljaCBjb250cm9sbGVyIHRvIHVzZS4KCiAgICBBbHNvIGFkZCBVU0Igc3VwcG9ydCBmb3Igc29rcmF0ZXMgYm9hcmQuCgogICAgU2VlIGRvYy9SRUFETUUuZ2VuZXJpY191c2Jfb2hjaSBmb3IgZGV0YWlscy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KCmNvbW1pdCBjZTY3NTRkZjYxY2JlMjNiNWI3M2QwOTVhMDBhYzlhODUwNGIzZDc3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIE1heSAyMSAxNjo1NjowOCAyMDA4ICswMjAwCgogICAgRml4IHNvbWUgd2hpdGVzcGFjZSBpc3N1ZXMKCiAgICBpbnRyb2R1Y2VkIGJ5IDUzNjc3ZWYxOCAiQmlnIHdoaXRlLXNwYWNlIGNsZWFudXAuIgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNDQxNjYwM2FlYjA2ODYxYjQ2OGIwNmE5ODFlNTJjM2ZmODA1ZGI3YgpBdXRob3I6IFlvcmsgU3VuIDx5b3Jrc3VuQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBNYXkgMTIgMTQ6MzY6MzkgMjAwOCAtMDUwMAoKICAgIE1ha2UgYWRzNTEyMSBvdXQtb2YtdHJlZSBjb21waWxpbmcgc2FmZQoKICAgIFJldXNlIHRoZSBleGlzdGluZyBESVUgZHJpdmVyIGluIGJvYXJkL2ZyZWVzY2FsZS9jb21tb24uCgogICAgU2lnbmVkLW9mZi1ieTogWW9yayBTdW4gPHlvcmtzdW5AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwZTFiYWQ0N2NkMzQ1Yzc2YzkxYTY0Y2FmNDEwMTFlNDMxYjYyNTk5CkF1dGhvcjogWW9yayBTdW4gPHlvcmtzdW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIE1heSA1IDEwOjIwOjAxIDIwMDggLTA1MDAKCiAgICBBZGRpbmcgRElVIHN1cHBvcnQgZm9yIEZyZWVzY2FsZSA1MTIxQURTCgogICAgQWRkIERJVSBhbmQgY2ZiIGNvbnNvbGUgc3VwcG9ydCB0byBGU0wgNTEyMUFEUyBib2FyZC4KCiAgICBVc2UgI2RlZmluZSBDT05GSUdfVklERU8gaW4gY29uZmlnIGZpbGUgdG8gZW5hYmxlIGZiIGNvbnNvbGUuCgogICAgU2lnbmVkLW9mZi1ieTogWW9yayBTdW4gPHlvcmtzdW5AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhNDhmZjY4ZDIzNWU2NzExNzZmNmI0OTZjNDQyNDZkYmU1ZTBhOTNmCkF1dGhvcjogWW9yayBTdW4gPHlvcmtzdW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIE1heSA1IDEwOjIwOjAwIDIwMDggLTA1MDAKCiAgICBSZXBsYWNlIERQUklOVEYgd2l0aCBkZWJ1ZwoKICAgIFJlbW92ZSBEUFJJTlRGIG1hY3JvIGFuZCByZXBsYWNlIGl0IHdpdGggZ2VuZXJpYyBkZWJ1ZyBtYWNyby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZb3JrIFN1biA8eW9ya3N1bkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDNiODBjNWY1NzRhZDdmNmUxYzU1YTY4ZjQyNzUyYjQyN2ZkZjc3OGQKQXV0aG9yOiBZb3JrIFN1biA8eW9ya3N1bkBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gTWF5IDUgMTA6MTk6NTkgMjAwOCAtMDUwMAoKICAgIE1vdmUgcGl4ZWwgY2xvY2sgc2V0dGluZyB0byBib2FyZCBmaWxlCgogICAgVGhlIGNsb2NrIGRpdmlkZXIgaGFzIGRpZmZlcmVudCBmb3JtYXQgaW4gNTEyMSBhbmQgODYxMC4gVGhpcyBwYXRjaCBtb3ZlcyBpdCB0bwogICAgYm9hcmQgc3BlY2lmaWMgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZb3JrIFN1biA8eW9ya3N1bkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDUzNjc3ZWYxOGUyNWM5N2FjNjEzMzQ5MDg3YzVjYjMzYWU1YTI3NDEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgTWF5IDIwIDE2OjAwOjI5IDIwMDggKzAyMDAKCiAgICBCaWcgd2hpdGUtc3BhY2UgY2xlYW51cC4KCiAgICBUaGlzIGNvbW1pdCBnZXRzIHJpZCBvZiBhIGh1Z2UgYW1vdW50IG9mIHNpbGx5IHdoaXRlLXNwYWNlIGlzc3Vlcy4KICAgIEVzcGVjaWFsbHksIGFsbCBzZXF1ZW5jZXMgb2YgU1BBQ0VzIGZvbGxvd2VkIGJ5IFRBQiBjaGFyYWN0ZXJzIGdldAogICAgcmVtb3ZlZCAodW5sZXNzIHRoZXkgYXBwZWFyIGluIHByaW50IHN0YXRlbWVudHMpLgoKICAgIEFsc28gcmVtb3ZlIGFsbCBlbWJlZGRlZCAidmltOiIgYW5kICJ2aToiIHN0YXRlbWVudHMgd2hpY2ggaGlkZQogICAgaW5kZW50YXRpb24gcHJvYmxlbXMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAyZjg0NWRjMmJkZjQ2MWJmZWU5ZmEyNTgyM2Y3NjlmNWRiOWViYTBiCkF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KRGF0ZToJVGh1IE1heSA4IDE3OjQ2OjIzIDIwMDggKzAyMDAKCiAgICBzb2NyYXRlczogZml4IHNlY29uZCBUU0VDIGNvbmZpZ3VyYXRpb24gKGl0IGlzIGFjdHVhbGx5IFRTRUMzKQoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Cgpjb21taXQgNzkzNjcwYzNjMGYwZjcyY2FlYWQ2MmYwYmU5ZmMzZDlmYmM2MDYwZgpBdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CkRhdGU6CVRodSBNYXkgOCAxNDoxNzowOCAyMDA4ICswMjAwCgogICAgRml4ZWQgcmVzZXQgZm9yIHNvY3JhdGVzCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KCmNvbW1pdCBlMTg1NzVkNWY1ODlhNjJlMTljNzBkNDcxZDRiNGUyN2NhZDNhZjU2CkF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KRGF0ZToJV2VkIE1heSA3IDE1OjEwOjQ5IDIwMDggKzAyMDAKCiAgICBzb2NyYXRlczogY2hhbmdlcyB0byBzdXBwb3J0IEZEVAoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDVkMTA4YWM4ZjQzNTkyNGM2MjRjZDZhYWFjZDQ0ZjM1ZjVjZjk0YzAKQXV0aG9yOiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgpEYXRlOglXZWQgQXByIDMwIDExOjQyOjUwIDIwMDggKzAyMDAKCiAgICBJbml0aWFsIHN1cHBvcnQgZm9yICJTb2NyYXRlcyIgYm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgoKY29tbWl0IDBlMTVkZGQxMWYxYTg0YzQ2NWU0MzRlYjA1MWQyZWYwOGVmMDJiOWIKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CkRhdGU6CVRodSBNYXkgOCAxNTo0Njo0MiAyMDA4ICswMjAwCgogICAgUE9TVDogcmVwbGFjZSB0aGUgTE9HQlVGRl9JTklUSUFMSVpFRCBmbGFnIGluIGdkLT5wb3N0X2xvZ193b3JkICgxIDw8IDMxKSB3aXRoIHRoZSBHRF9GTEdfTE9HSU5JVCBmbGFnIGluIGdkLT5mbGFncy4KCiAgICBUaGlzIHdheSB3ZSBiZWNvbWUgYWJsZSB0byB1dGlsaXplIHRoZSBmdWxsIHBvc3RfbG9nX3dvcmQgZm9yIFBPU1QKICAgIGFjdGl2aXRpZXMgKG92ZXJ3aXNlLCBQT1NUIEVDQywgd2hpY2ggaGFzIDB4ODAwMCBJRCwgY291bGQgYmUKICAgIGVycm9uZW91c2x5IHRyZWF0ZWQgYXMgc3RhcnRlZCBpbiBwb3N0X291dHB1dF9iYWNrbG9nKCkgZXZlbiBpZiB0aGVyZQogICAgd2FzIGFjdHVhbGx5IG5vIFBPU1QgRUNDIHJ1biAoYmVjYXVzZSBvZiBPQ00gUE9TVCBmYWlsdXJlLCBmb3IKICAgIGV4YW1wbGUpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KCmNvbW1pdCA3ODQ1ZDQ5MDk0YzgxMzIxMDIxYjUwYTRkYmI4ODY0ZDJmMzc3N2U0CkF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgpEYXRlOglUaHUgTWF5IDggMTU6NDY6MDIgMjAwOCArMDIwMAoKICAgIFBPU1Q6IG1hcmsgT0NNIHRlc3QgYXMgUE9TVF9TVE9QCgogICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Cgpjb21taXQgMjhhMzg1MDY1ODgyZDZjYjZhYzVmNDQzMzExZmY4Nzg4N2VkN2MxMwpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KRGF0ZToJVGh1IE1heSA4IDE1OjQ1OjI2IDIwMDggKzAyMDAKCiAgICBQT1NUOiBhZGQgUE9TVF9TVE9QIGZsYWcKCiAgICBEb24ndCBydW4gZnV0aGVyIHRlc3RzIGluIGNhc2Ugb2YgYSB0ZXN0IGZhaWxzIHRoYXQgaXMgbWFya2VkIGFzCiAgICBQT1NUX1NUT1AuCgogICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgYTUyNTE0NWQ4MTEwZDE1YjQzODlkMjNjM2VhOGE3OGYyMjUwOWQzZgpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KRGF0ZToJVGh1IE1heSA4IDE1OjQ0OjE2IDIwMDggKzAyMDAKCiAgICBQT1NUOiBzd2l0Y2ggQ0ZHX1BPU1RfT0NNIHdpdGggQ0ZHX1BPU1RfQ09ERUMgKHdvcmthcm91bmQpCgogICAgU3dpdGNoIHRoZSBPQ00gdGVzdGlkIHdpdGggdGhlIGNvZGVjIG9uZS4gVGhlIHJlYXNvbiBpcyB0aGF0IGN1cnJlbnQKICAgIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIHRoZSBQT1NUX1JPTSB0ZXN0aWQgdG8gZml0IGludG8gbG93ZXIgMTYKICAgIGJpdHMsIGFuZCB0aGUgY29kZWMgdGVzdCB3aWxsIG5ldmVyIHJ1biB3aXRoIFBPU1RfUk9NIGhvcGVmdWxseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KCmNvbW1pdCA4Yjk2Yzc4OGQ1OGY3Y2I4NWE4OWVlM2YxOWM5YjMzNWQyMjQ0M2NkCkF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgpEYXRlOglUaHUgTWF5IDggMTU6NDM6MjggMjAwOCArMDIwMAoKICAgIGx3bW9uNTogZW5hYmxlIE9DTSBwb3N0IHRlc3Qgb24gbHdtb241IGJvYXJkCgogICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Cgpjb21taXQgNmU4ZWM2ODIyNjg0OTNiOGQwOThmOTllMTdiMWNlNzFiNDQ0ODk3NwpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KRGF0ZToJVGh1IE1heSA4IDE1OjQyOjQ3IDIwMDggKzAyMDAKCiAgICBQT1NUOiBPQ00gdGVzdCBhZGRlZC4KCiAgICBBZGRlZCBPQ00gdGVzdCB0byBQT1NUIGxheWVyLiBUaGlzIHZlcnNpb24gcnVucyBiZWZvcmUgYWxsIG90aGVyIHRlc3RzCiAgICBidXQgZG9lc24ndCB5ZXQgaW50ZXJydXB0IHBvc3Qgc2VxdWVuY2Ugb24gZmFpbHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KCmNvbW1pdCA2ODkxMjYwYmRkOTM1YTM4MmM5NWQ5ZmEzMzM5MjJiMGRmZGVkNjhhCkF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgpEYXRlOglUaHUgTWF5IDggMTU6NDA6MzkgMjAwOCArMDIwMAoKICAgIFBPU1Q6IHR5cG8gZml4CgogICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Cgpjb21taXQgNzI3ZjYzMzM0Njc2ZTc2MDg3N2Q0M2JmYjhmMGU5MzMxYWM4YjEwMQpBdXRob3I6IEhlYmJhciA8Z3VydXJhamFrckBzYW55by5jby5pbj4KRGF0ZToJVHVlIE1heSAyMCAwMjoxNjozNiAyMDA4IC0wNzAwCgogICAgY29tbW9uL3VzYi5jOiBmaXggaW5jb3JyZWN0IGVzY2FwZSBzZXF1ZW5jZQoKICAgIFNpZ25lZCBvZmYgYnk6IEd1cnVyYWphIEhlYmJhciA8Z3VydXJhamFrckBzYW55by5jby5pbj4KCmNvbW1pdCA0Y2UxZTIzYjVlMTIyODM1Nzk4MjhiM2QyM2U4ZmQ2ZTEzMjhhN2FhCkF1dGhvcjogWW9yayBTdW4gPHlvcmtzdW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE1heSAxNSAxNToyNjoyNyAyMDA4IC0wNTAwCgogICAgRml4IDgzMTNFUkRCIGJvYXJkIGNvbmZpZ3VyYXRpb24KCiAgICBDaGFuZ2UgTENSUiBjbG9jayByYXRpbyBmcm9tIDIgdG8gNCB0byBjb21tb2RhdGUgVlNDNzM4NS4KICAgIENvcnJlY3QgVFNFQzEgdnMgVFNFQzIgYXNzaWdubWVudC4KICAgIERlZmluZSBFVEhBRERSIGFuZCBFVEgxQUREUiBhbHdheXMuCgogICAgU2lnbmVkLW9mZi1ieTogWW9yayBTdW4gPHlvcmtzdW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMmMyODllMzIwZGNmYjM3NjBlOTljZjFkNzY1Y2IwNjcxOTRhMTIwMgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBNYXkgMTkgMDk6NDc6MjUgMjAwOCAtMDUwMAoKICAgIG1wYzg2eHg6IFJlbW92ZWQgdW51c2VkIGFuZCB1bmNvbmZpZ3VyZWQgbWVtb3J5IHRlc3QgY29kZS4KCiAgICBCZXNpZGVzLCBvdGhlciBjb21tb24gY29kZSBleGlzdHMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxODBhOTBhYmRhZTcyNTg3YzBmNjc5ZWRmODk5MTQ1NWU1NTk0NDBkCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIE1heSAxOSAxMjo0NzoxMSAyMDA4ICswMjAwCgogICAgUmVsZWFzZSB2MS4zLjMKCiAgICBVcGRhdGUgQ0hBTkdFTE9HIGZvciByZWxlYXNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMTZiZWRjNjYxZGUwZGFlNzY3YjEzNzdkODQxMzM3M2EzZmJjZmE3OQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE1heSAxOSAwNzoxNDozOCAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBDYW55b25sYW5kczogRGlzYWJsZSBQQ0llMC9TQVRBIGluIGRldi10cmVlIGRlcGVuZGluZyBvbiBzZWxlY3Rpb24KCiAgICBXaGVuIFNBVEEgaXMgc2VsZWN0ZWQgKHZpYSBqdW1wZXIgSjYpIHdlIG5lZWQgdG8gZGlzYWJsZSB0aGUgZmlyc3QgUENJZQogICAgbm9kZSBpbiB0aGUgZGV2aWNlIHRyZWUsIHNvIHRoYXQgTGludXggZG9lc24ndCBpbml0aWFsaXplIGl0LiBPdGhlcndpc2UKICAgIHRoZSBMaW51eCBTQVRBIGRyaXZlciB3aWxsIGZhaWwgdG8gZGV0ZWN0IHRoZSBkZXZpY2VzLgoKICAgIFRoZSBzYW1lIGdvZXMgdGhlIG90aGVyIHdheSBhcm91bmQgdG9vLiBTbyBpZiBQQ0llIGlzIHNlbGVjdGVkIHdlIG5lZWQKICAgIHRvIGRpc2FibGUgdGhlIFNBVEEgbm9kZSBpbiB0aGUgZGV2aWNlIHRyZWUuCgogICAgVGhpcyBpcyBiZWNhdXNlIFBDSWUgcG9ydCAwIGFuZCBTQVRBIG9uIDQ2MEVYIHNoYXJlIHRoZSBzYW1lIHBpbnMKICAgIChtdWx0aXBsZXhlZCkgYW5kIHdlIGhhdmUgdG8gY29uZmlndXJlIGluIFUtQm9vdCB3aGljaCBwZXJpcGhlcmFsIGlzCiAgICBlbmFibGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzY2MyN2I0MjZhZWVmZTI5MzBmOTExNjkyZTlkZjMxNDNmYjI1NjVmCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIE1heSAxOCAxOTowOTo1OCAyMDA4ICswMjAwCgogICAgaTM4NjogRml4IG11bHRpcGxlIGRlZmluaXRpb25zIG9mIF9fc2hvd19ib290X3Byb2dyZXNzCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAzMTFmMzQ0NjkzMGMxZTY0YzEyMDI2YzFjZmQwMDUwMGIwNWJlNTJkCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIE1heSAxOCAxOTowOTo1NyAyMDA4ICswMjAwCgogICAgc2M1MzBfc3B1bms6IGFkZCBtaXNzaW5nIFNPQkpTIGVudHJ5CgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBhNTU5MzE3MTQzYjRmOTU5MjdiMDhjZDM4ODcwN2U2ZjA3N2U5NWZhCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIE1heSAxOCAxOTowOTo1NiAyMDA4ICswMjAwCgogICAgc2M1MjBfc3B1bms6IEZpeCBmbGFzaAoKICAgIGZsYXNoLmM6NTkzOiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKICAgIGZsYXNoLmM6Mzk4OiBlcnJvcjogbGFiZWwgYXQgZW5kIG9mIGNvbXBvdW5kIHN0YXRlbWVudAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgOTFmMjIxMzE3YWY2NDE5MWVlOGNhZjMwM2VhOTMwNTk0MzE1ODY5MQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBNYXkgMTggMTk6MDk6NDkgMjAwOCArMDIwMAoKICAgIGRyaXZlcnMvcGNtY2lhOiBhZGQgbWlzc2luZyBpODIzNjUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGRkMjIzOTQ0MTMyZjk3ZmZhNTI5NzdlYTk1ZTVhNTI0MjhmNWNjMmYKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gTWF5IDE4IDE5OjA5OjQ3IDIwMDggKzAyMDAKCiAgICBpMzg2L2Jvb3RtOiByZW1vdmUgdW51c2VkIHZhcgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYTlkYTM0MWRmMTliMzJhZDJlY2I1OGNlNTI5ZjdlNGZhZGE3ODE0ZQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBNYXkgMTggMTk6MDk6NDUgMjAwOCArMDIwMAoKICAgIGV4YW1wbGUvZ2l0aWdub3JlOiB1cGRhdGUgd2l0aCBhbGwgZ2VuZXJhdGVkIGV4YW1wbGVzCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBhMzhkYzNlYTg2MTRmOGIwYzQxZTQzMmI0NDVhOTk1OWI5NzExMjk1CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IE1heSAxNSAwMDo0Mjo0NSAyMDA4ICswMjAwCgogICAgVFFNODI3MjogZml4IG91dC1vZi10cmVlIGJ1aWxkaW5nCgogICAgLi4uYW5kIGFkZCB0byBNQUtFQUxMIHNjcmlwdAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNGY4MDVjMWUzYTYwYjkyNjNkYThlYzNiY2QxZjQ1ZWRjZWZhN2RjZgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBNYXkgMTQgMjM6MzQ6NTMgMjAwOCArMDIwMAoKICAgIGVudmlyb25tZW50OiBmaXggYnVnIGludHJvZHVjZWQgYnkgY29tbWl0IGE4NDA5ZjRmMWFjOAoKICAgIGVudl9nZXRfY2hhciBpcyBub3QgYSBmdW5jdGlvbiwgYnV0IGEgcG9pbnRlciB0byBvbmUuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAwYzExOTM1Y2Q2MmNhMWY2NWVlYjIyOGZmNGM4NDg0NDBkNDU1M2JmCkF1dGhvcjogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+CkRhdGU6CVdlZCBNYXkgMTQgMTM6Mzk6MjIgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogUVVBRDEwMEhEOiBBbGxvdyB0aGUgZW52aXJvbm1lbnQgdG8gYmUgcHV0IGludG8gZmxhc2guCgogICAgQWZ0ZXIgbW92aW5nIFRFWFRfQkFTRSB0aGUgdmFsdWUgZm9yIENGR19FTlZfQUREUiB3YXMgaW5jb3JyZWN0LiAgQWxzbwogICAgdXNlIGEgcmVkdW5kYW50IGVudmlyb25tZW50LgoKICAgIFNpZ25lZC1vZmYtYnk6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgoKY29tbWl0IGNkYTJhNGE5OTYxZmQ0MzQxYjdkYjMwNWNiMjJmYzA1OTU3ZThiNzcKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgTWF5IDE0IDEzOjU1OjMwIDIwMDggKzAyMDAKCiAgICBGaXggY29uZmlnIGZpbGVzIGZvciBvdXQtb2YtdHJlZSBidWlsZGluZwoKICAgIFNldmVyYWwgYm9hcmQvPC4uLj4vY29uZmlnLm1rIGZpbGVzIGluY2x1ZGUgZHluYW1pY2FsbHkgYnVpbHQgKGJ5CiAgICB0aGUgTWFrZWZpbGUpIGNvbmZpZyBmaWxlcyBidXQgdXNlZCB0aGUgd3JvbmcgZmlsZSBuYW1lIG9mCgkkKFRPUERJUikvYm9hcmQvJChCT0FSRERJUikvY29uZmlnLnRtcAogICAgaW5zdGVhZCBpZiB0aGUgY29ycmVjdAoJJChPQkpUUkVFKS9ib2FyZC8kKEJPQVJERElSKS9jb25maWcudG1wCgogICAgVGhlIGJ1ZyBpcyBuYXN0eSBiZWNhdXNlIHRoZSBidWlsZCByZXN1bHQgaXMgY29ycmVjdCBmb3IgdGhlIChub3JtYWwpCiAgICBpbi10cmVlIGJ1aWxkcywgYW5kIGJlY2F1c2UgJ3NpbmNsdWRlJyBpcyB1c2VkIG5vIGVycm9ycyBnZXQgcmFpc2VkCiAgICBldmVuIGZvciBvdXQtb2YtdHJlZSBidWlsZCB0ZXN0cy4gQnV0IG91dC1vZi10cmVlIGJ1aWxkcyB1c2UgYW4KICAgIGluY29tcGxldGUgYW5kIHRodXMgdXN1YWxseSBpbmNvcnJlY3QgY29uZmlndXJhdGlvbi4uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMmRkNzA4MmUwNmQ1ODA0MDQwMTBiMDZmZTRlMGU4YjcwMzhhMDBjOApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE1heSAxNCAxMzo0MDowMyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBGaXggYm9ndXMgQ2FueW9ubGFuZHMgY29uZmlnLm1rCgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgY2FueW9ubGFuZHMgY29uZmlnLm1rIGZpbGUgdG8gZW5hYmxlIGNvcnJlY3QKICAgIG91dC1vZi10cmVlIGJ1aWxkcy4gVGhhbmtzIHRvIFdvbGZnYW5nIERlbmsgZm9yIHNwb3R0aW5nIHRoaXMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGZkZDEyNDdhNjZkNzg4YTM0NDYyNDRmNmZkZTk5NTVhOTNjMjYzMjIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBNYXkgMTQgMTA6MzI6MzIgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogSW5kaXZpZHVhbCBoYW5kbGluZyBvZiBkZHIyX2ZpeGVkLmMgZm9yIGNhbnlvbmxhbmRzX25hbmQgYnVpbGQKCiAgICBDYW55b25sYW5kcyBoYXMgYSBmaWxlIGRkcjJfZml4ZWQuYyB3aGljaCBuZWVkcyBzcGVjaWFsIHRyZWF0bWVudCB3aGVuCiAgICBidWlsZGluZyBpbiBzZXBhcmF0ZSBkaXJlY3RvcnkuIEl0IGhhcyB0byBiZSBsaW5rZWQgdG8gYnVpbGQgZGlyZWN0b3J5CiAgICBvdGhlcndpc2UgaXQgaXMgbm90IHNlZW4uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGE4NDA5ZjRmMWFjODRjMzYyNzNjMWExZTM0MTE4OTY2MjUyMWJjZmIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgTWF5IDE0IDEyOjIyOjQ5IDIwMDggKzAyMDAKCiAgICBlbnZpcm9ubWVudDogY2xlYW51cCBwcm90b3R5cGUgZGVjbGFyYXRpb25zIG9mIGVudiBmdW5jdGlvbnMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjZjM5YjA3OTQ4MDE1YzQ4MGI3MmE2ZTczMmNmN2Q4MzlhYTkzYTllCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIE1heSAxNCAxMjoyMTo0OCAyMDA4ICswMjAwCgogICAgbGlua3N0YXRpb25fSEdMQU46IEZpeCBvdXQgb2YgdHJlZSBidWlsZGluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDA4NTU1MWMwNWNhMDllNmM0OTFlYTExYTFjNjcyN2EzNjc3NmE1NDUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBNYXkgMTQgMTA6MzI6MzIgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogSW5kaXZpZHVhbCBoYW5kbGluZyBvZiBkZHIyX2ZpeGVkLmMgZm9yIGNhbnlvbmxhbmRzX25hbmQgYnVpbGQKCiAgICBDYW55b25sYW5kcyBoYXMgYSBmaWxlIGRkcjJfZml4ZWQuYyB3aGljaCBuZWVkcyBzcGVjaWFsIHRyZWF0bWVudCB3aGVuCiAgICBidWlsZGluZyBpbiBzZXBhcmF0ZSBkaXJlY3RvcnkuIEl0IGhhcyB0byBiZSBsaW5rZWQgdG8gYnVpbGQgZGlyZWN0b3J5CiAgICBvdGhlcndpc2UgaXQgaXMgbm90IHNlZW4uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDE1MTBiODJkNTA2MTVmMzQ0ZTg5ZDQyNTMzZTgyMjRjY2UwNjdkYzAKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgTWF5IDEzIDIzOjE1OjUyIDIwMDggKzAyMDAKCiAgICBNYWtlZmlsZTogZml4ICJlcnJvcjogdmVyc2lvbl9hdXRvZ2VuZXJhdGVkLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkiCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1NDY5NGE5MTQyOGY2YzMyODBmZTFlZTA5MjM0ODhhMWU3ZThkYmM0CkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJVHVlIE1heSAxMyAxNzozMToyNCAyMDA4ICswMjAwCgogICAgQ2xlYW51cCBuYW5kX2luZm9bXSBkZWNsYXJhdGlvbi4KCiAgICBUaGUgbmFuZF9pbmZvIGFycmF5IGlzIGRlY2xhcmVkIGFzIGV4dGVybiBpbiBzZXZlcmFsIC5jIGZpbGVzLgogICAgVGhvc2UgZGF5cywgbmFuZC5oIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBhcnJheSwgc28gdGhlcmUgaXMKICAgIG5vIG5lZWQgdG8gZGVjbGFyZSBpdCBlbHNld2hlcmUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNzBmYWIxOTA4ZmMxNzM0YTQwMzcxMWVhYWJiZWY1NDZiYzRiNzdkYwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIE1heSAxMyAyMDoyMjowMSAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBBZGQgNDA1RVgocikgcmV2aXNpb24gQyBQVlIgZGVmaW5pdGlvbnMgYW5kIGRldGVjdGlvbiBjb2RlCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDY1ZGNmYTc5MjA0ZjQ3NTBiOTA1YTE3M2E1MzY1ZTBiMmViNmMyZjYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gTWF5IDEyIDAxOjExOjIxIDIwMDggKzAyMDAKCiAgICBSZXZlcnQgInBjaTogQWRkIENPTkZJR19QQ0lfU0tJUF9IT1NUX0JSSURHRSBjb25maWcgb3B0aW9uIgoKICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgNTU3NzRiNTEyZmRmNjNjMDUxNmQ0NDFjYzVkYTdjNTRiYmZmYjdmMgogICAgd2hpY2ggYnJva2UgbWFueSBQb3dlclBDIGJvYXJkcy4KCmNvbW1pdCBlZTBjZmE3MDgwM2EzZTYyOWVhNTgxYTliMjE2ZjhlY2VmNDAyYmZjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIE1heSAxMiAwMDo1NjoyOCAyMDA4ICswMjAwCgogICAgUmV2ZXJ0ICJBdm9pZCBpbml0cmQgYW5kIGxvZ2J1ZmZlciBhcmVhIG92ZXJsYXBzIgoKICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgMWI1NjA1Y2E1N2ZiYjM2NGY0ZDc4ZWVlZTI4Yjk3NGVkODc1ZTg4OAogICAgd2hpY2ggYnJlYWtzIGJ1aWxkaW5nIG9uIGFsbCBQUEMgYm9hcmRzIHRoYXQgZG9uJ3QgdXNlIGEgbG9nIGJ1ZmZlci4KCmNvbW1pdCAwMmI5YjIyNDQ2ZTNkN2FkNmE2MzgyYmUxN2ExY2U3OWE3ZGU1ODliCkF1dGhvcjogTmljayBTcGVuY2UgPG5pY2suc3BlbmNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CVNhdCBNYXkgMTAgMTQ6MDI6MDQgMjAwOCAtMDcwMAoKICAgIEZpeCBvZmZzZXQgY2FsY3VsYXRpb24gZm9yIG11bHRpLXR5cGUgbGVnYWN5IGltYWdlcy4KCiAgICBDYWxjdWxhdGlvbiBvZiB0YWlsIHdhcyBpbmNvcnJlY3Qgd2hlbiBzaXplICUgNCA9PSAwLgoKICAgIE5ldyBjb2RlIHJlbW92ZXMgdGhlIGNvbmRpdGlvbmFsIGFuZCBkb2VzIHRoZSBzYW1lIHRoaW5nIGJ1dCB3aXRoIGFyaXRobWV0aWMKCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjOWRjYTNjM2YzN2QyNjQ3YWVjNDUwOWIyNGIxNmQxNTg4MmFlM2U0CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIE1heSAxMiAwMDo0MDo1OCAyMDA4ICswMjAwCgogICAgUmV2ZXJ0ICJDaGFuZ2UgZW52X2dldF9jaGFyIGZyb20gYSBnbG9iYWwgZnVuY3Rpb24gcHRyIHRvIGEgZnVuY3Rpb24uIgoKICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgYzA1NTliZTM3MWIyYTY0YjFhODE3MDg4YzMzMDg2ODhlMjE4MmY5MwogICAgd2hpY2ggaXMga25vd24gdG8gYnJlYWsgYm9vdGluZyBmcm9tIGRhdGFmbGFzaCBhbmQgTkFORC4KCmNvbW1pdCAyMGU1ZWQxMzc0ODM4MjNhYWVhNTE3ODE2OWYzYjE0NGM3YTRkOWUwCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIE1heSAxMSAyMzoxMzo1NyAyMDA4ICswMjAwCgogICAgQVBJOiByZW1vdmUgZHVwbGljYXRlIHN5c2NhbGwgY2hlY2sKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDY3ZTNiZWI1MmMzMjBiMGEzMWNmMDMwNzE2Yzk5MzkyY2RlMmQ1MzIKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglGcmkgTWF5IDkgMjE6NDY6NTEgMjAwOCArMDIwMAoKICAgIEFUOTE6IENsZWFudXAgdW51c2VkIGNvbmZpZyBoZWFkZXIgZmlsZSBkZWZpbml0aW9ucy4KCiAgICBDT05GSUdfRU5WX09WRVJXUklURSBpcyBjb21tZW50ZWQgb3V0IGluIHRoZSBjb25maWcgaGVhZGVyIGZpbGVzLAogICAgc28gbGV0J3MgY2xlYW51cCB0aGUgZmlsZXMgYnkgcmVtb3ZpbmcgdGhlIHdob2xlIGRlZmluaXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMTk4ODNhZWRlMmFjMGE1MjI0OTNiZmIyYjM1YTdkYmIyMDAwNzFiMQpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVRodSBNYXkgOCAxNDo1MjozNCAyMDA4ICswMjAwCgogICAgU3VwcG9ydCBBVDkxQ0FQOSByZXZDIENQVXMKCiAgICBUaGUgQVQ5MUNBUDkgcmV2QyBDUFUgaGFzIGEgZmV3IGRpZmZlcmVuY2VzIG92ZXIgdGhlIHByZXZpb3VzLAogICAgcmV2QiBDUFUgd2hpY2ggd2FzIGRpc3RyaWJ1dGVkIGluIHNtYWxsIHF1YW50aXRpZXMgb25seSAocmV2QSB3YXMKICAgIGFuIGludGVybmFsIEF0bWVsIHByb2R1Y3Qgb25seSkuCgogICAgVGhlIHJldkMgc2lsaWNvbiBuZWVkcyBhIHNwZWNpYWwgaW5pdGlhbGlzYXRpb24gc2VxdWVuY2UgdG8KICAgIHN3aXRjaCBmcm9tIHRoZSBpbnRlcm5hbCAoaW1wcmVjaXNlKSBSQyBvc2NpbGxhdG9yIHRvIHRoZQogICAgZXh0ZXJuYWwgMzJrIGNsb2NrLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDA5OGI3YjRiNDQxYjEyYzJhNjRkZDUxNzkzMGY0M2M3OTM1NDI3NTkKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglUaHUgTWF5IDggMTQ6NTI6MzMgMjAwOCArMDIwMAoKICAgIFVzZSBjdXN0b20gbG9nbyBmb3IgQXRtZWwgYm9hcmRzCgogICAgVGhpcyBwYXRjaCBhZGRzIGEgY3VzdG9tIHZlbmRvciBsb2dvIGZvciB0aGUgQXRtZWwgQVQ5MSBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNzYxYzcwYjgwY2RkM2JlYWQ0MDE0NmI5NmE4ZTcxM2Q2YWUwMTYzMgpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVRodSBNYXkgOCAxNDo1MjozMiAyMDA4ICswMjAwCgogICAgQVQ5MVNBTTlSTEVLOiBob29rIHVwIHRoZSBBVE1FTCBMQ0QgZHJpdmVyCgogICAgVGhpcyBwYXRjaCBtYWtlcyB0aGUgbmVjZXNzYXJ5IGFkYXB0YXRpb25zIChQSU8gY29uZmlndXJhdGlvbnMgYW5kCiAgICBkZWZpbmVzIGluIGNvbmZpZyBoZWFkZXIgZmlsZSkgdG8gaG9vayB1cCB0aGUgQXRtZWwgTENEIGRyaXZlciB0byB0aGUKICAgIEFUOTFTQU05UkxFSyBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA1NmEyNDc5Y2Q3ZmVjYWJkZDkxMzQ4YTc3NWIyODAxZGQyZTY1YzdmCkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJVGh1IE1heSA4IDE0OjUyOjMxIDIwMDggKzAyMDAKCiAgICBBVDkxU0FNOTI2M0VLOiBob29rIHVwIHRoZSBBVE1FTCBMQ0QgZHJpdmVyCgogICAgVGhpcyBwYXRjaCBtYWtlcyB0aGUgbmVjZXNzYXJ5IGFkYXB0YXRpb25zIChQSU8gY29uZmlndXJhdGlvbnMgYW5kCiAgICBkZWZpbmVzIGluIGNvbmZpZyBoZWFkZXIgZmlsZSkgdG8gaG9vayB1cCB0aGUgQXRtZWwgTENEIGRyaXZlciB0byB0aGUKICAgIEFUOTFTQU05MjYzRUsgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgODIwZjJhOTU4MzI1MDYxYTQ0NjExNWYzMDM1ZTQ4ZTQ3MjZiMzM5MApBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVRodSBNYXkgOCAxNDo1MjozMCAyMDA4ICswMjAwCgogICAgQVQ5MVNBTTkyNjFFSzogaG9vayB1cCB0aGUgQVRNRUwgTENEIGRyaXZlcgoKICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIG5lY2Vzc2FyeSBhZGFwdGF0aW9ucyAoUElPIGNvbmZpZ3VyYXRpb25zIGFuZAogICAgZGVmaW5lcyBpbiBjb25maWcgaGVhZGVyIGZpbGUpIHRvIGhvb2sgdXAgdGhlIEF0bWVsIExDRCBkcml2ZXIgdG8gdGhlCiAgICBBVDkxU0FNOTI2MUVLIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGMxMzliMTdkMjBjODM3MWMxZTBhOGQ3ZmIyN2MxMTA1MGNmODYzMDQKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglUaHUgTWF5IDggMTQ6NTI6MjkgMjAwOCArMDIwMAoKICAgIEFUOTFDQVA5QURLOiBob29rIHVwIHRoZSBBVE1FTCBMQ0QgZHJpdmVyCgogICAgVGhpcyBwYXRjaCBtYWtlcyB0aGUgbmVjZXNzYXJ5IGFkYXB0YXRpb25zIChQSU8gY29uZmlndXJhdGlvbnMgYW5kCiAgICBkZWZpbmVzIGluIGNvbmZpZyBoZWFkZXIgZmlsZSkgdG8gaG9vayB1cCB0aGUgQXRtZWwgTENEIGRyaXZlciB0byB0aGUKICAgIEFUOTFDQVA5QURLIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDM5Y2Y0ODA0ODRmY2NlNWMwNGE1OTBlZTFjMzBiZTBjMTdiMDJjMzQKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglGcmkgTWF5IDkgMjE6NTc6MTggMjAwOCArMDIwMAoKICAgIEFkZCBBVE1FTCBMQ0QgZHJpdmVyCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBBVE1FTCBMQ0RDIGRyaXZlciB3aGljaCBpcyB1c2VkIG9uIHNvbWUKICAgIEFUOTEgYW5kIEFWUiBwbGF0Zm9ybXMuCgogICAgSXMgaGFzIGJlZW4gdGVzdGVkIHdpdGggdGhlIEFUOTFDQVA5QURLLCBBVDkxU0FNOTI2MUVLLCBBVDkxU0FNOTI2M0VLIGFuZAogICAgQVQ5MVNBTTlSTEVLIGJvYXJkcy4gQWRhcHRhdGlvbiBmb3IgQVZSMzIgc2hvdWxkIHByb2JhYmx5IGJlIGVhc3kuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMjExOGViYjQ0ZGM0MGY4MTE3Yzk0OTUwZmQ5NTc5OWE5ZWY4MjFiMgpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVRodSBNYXkgOCAxODo1MjoyNSAyMDA4ICswMjAwCgogICAgQVQ5MVNBTTlSTEVLIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEFUOTFTQU05UkwgY2hpcCBhbmQgdGhlIEFUOTFTQU05UkxFSwogICAgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgOGU0MjliM2VlZTIzOTI3YzEyMjI2NzlmNmI2ZjUzNjY3YjIxNTk1YwpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVRodSBNYXkgOCAxODo1MjoyMyAyMDA4ICswMjAwCgogICAgQVQ5MVNBTTkyNjNFSyBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBBVDkxU0FNOTI2MyBjaGlwIGFuZCB0aGUgQVQ5MVNBTTkyNjNFSwogICAgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZDk5YThmZjY2ZDhhZTg3ZTVjODc1OTBlZDJlNGVhZDYyOTU0MDYwNwpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVRodSBNYXkgOCAyMDo1MjoyMiAyMDA4ICswMjAwCgogICAgQVQ5MVNBTTkyNjFFSyBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBBVDkxU0FNOTI2MSBjaGlwIGFuZCB0aGUgQVQ5MVNBTTkyNjFFSwogICAgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgODZjOGM4YTQxNDk4OGM1MDEwNGEzYjAyYzI5ZjUwYWYyYmU3MzhjMApBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVRodSBNYXkgOCAyMDo1MjoyMSAyMDA4ICswMjAwCgogICAgQVQ5MVNBTTkyNjBFSzogRml4IGRhdGFmbGFzaCBvZmZzZXRzIGluIENPTkZJR19CT09UQ09NTUFORAoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIGRhdGFmbGFzaCBvZmZzZXRzIHVzZWQgaW4gQ09ORklHX0JPT1RDT01NQU5ECiAgICBpbiBvcmRlciB0byBjb3BlIHdpdGggdGhlIGNoYW5nZXMgaW4gRGF0YUZsYXNoIHBhcnRpdGlvbm5pbmcgc2NoZW1lCiAgICAoY3NldCBjM2E2MGNiMykuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgOTY5OTZhYzI1ZDUyMjI2MTFhODg4ODk2OGRiNmU1M2E2ZDM3MjZkYQpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVRodSBNYXkgOCAyMDo1MjoyMCAyMDA4ICswMjAwCgogICAgQVQ5MVNBTTkyNjBFSzogTm9ybWFsaXplIEJPT1RBUkdTCgogICAgVGhpcyBwYXRjaCBhZGFwdHMgQ09ORklHX0JPT1RBUkdTIHRvIHRoZSBjaG9zZW4gYm9vdCBtZXRob2QgKGJvb3QgZnJvbQogICAgRGF0YUZsYXNoIG9yIGZyb20gTkFORCksIGFuZCBnaXZlcyB0byBMaW51eCBhIGZ1bGx5IHNwZWNpZmllZCBtdGRwYXJ0cwogICAgdmFyaWFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNzlmMGNiNmU5YzU0ZDMxYTFkOWUzZjVlMjI2YTliZWJjM2MzYTQ3YQpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVRodSBNYXkgOCAyMDo1MjoxOSAyMDA4ICswMjAwCgogICAgQVQ5MVNBTTkyNjBFSzogTm9ybWFsaXplIFNQSSB0aW1pbmdzCgogICAgVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBTUEkgdGltaW5ncyB0byBjbG9zZWx5IG1hdGNoIHRoZSBvbmVzCiAgICB1c2VkIGJ5IHRoZSBMaW51eCBrZXJuZWwgYW5kIHRoZSBBdG1lbCdzIG93biBib290c3RyYXAgcHJvamVjdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBjMTIxMmIyZjVjNWVkNDQwYmY4ZTllYmM4ZTRmZDc0ODg4NThiOTM1CkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJVGh1IE1heSA4IDIwOjUyOjE4IDIwMDggKzAyMDAKCiAgICBBVDkxU0FNOTI2MEVLOiBIYW5kbGUgOCBvciAxNiBiaXQgTkFORAoKICAgIFRoZSBBdG1lbCBib2FyZHMgY2FuIGhhbmRsZSA4IG9yIDE2IGJpdCBOQU5EIG1lbW9yaWVzLiBUaGlzIHBhdGNoCiAgICBtYWtlcyB0aGUgc3VwcG9ydCBjb25maWd1cmFibGUgaW4gdGhlIGJvYXJkIGNvbmZpZyBoZWFkZXIgZmlsZQogICAgKENGR19OQU5EX0RCV184IG9yIENGR19OQU5EX0RCV18xNikuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYWI1MjY0MGZjMDE2MjRlMjA4NDI0ZTUyN2FmMGI3YjNhNWE2NWExMgpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVRodSBNYXkgOCAyMDo1MjoxNyAyMDA4ICswMjAwCgogICAgQVQ5MUNBUDlBREs6IEZpeCBkYXRhZmxhc2ggb2Zmc2V0cyBpbiBDT05GSUdfQk9PVENPTU1BTkQKCiAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBkYXRhZmxhc2ggb2Zmc2V0cyB1c2VkIGluIENPTkZJR19CT09UQ09NTUFORAogICAgaW4gb3JkZXIgdG8gY29wZSB3aXRoIHRoZSBjaGFuZ2VzIGluIERhdGFGbGFzaCBwYXJ0aXRpb25uaW5nIHNjaGVtZQogICAgKGNzZXQgYzNhNjBjYjMpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDMyNjc1MDhlYzRjOWU3NGMzOWVlNDFjOWFlNjk1MWFkMTg1ZmUyNzAKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglUaHUgTWF5IDggMjA6NTI6MTYgMjAwOCArMDIwMAoKICAgIEFUOTFDQVA5QURLOiBOb3JtYWxpemUgQk9PVEFSR1MKCiAgICBUaGlzIHBhdGNoIGFkYXB0cyBDT05GSUdfQk9PVEFSR1MgdG8gdGhlIGNob3NlbiBib290IG1ldGhvZCAoYm9vdCBmcm9tCiAgICBEYXRhRmxhc2ggb3IgZnJvbSBOQU5EKSwgYW5kIGdpdmVzIHRvIExpbnV4IGEgZnVsbHkgc3BlY2lmaWVkIG10ZHBhcnRzCiAgICB2YXJpYWJsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA5M2RhNDhiOTEwNTExOTExY2UxMTA2NTZlMTdlZDczM2M4YWM0YzQ1CkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJVGh1IE1heSA4IDIwOjUyOjE1IDIwMDggKzAyMDAKCiAgICBBVDkxQ0FQOUFESzogTm9ybWFsaXplIFNQSSB0aW1pbmdzCgogICAgVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBTUEkgdGltaW5ncyB0byBjbG9zZWx5IG1hdGNoIHRoZSBvbmVzCiAgICB1c2VkIGJ5IHRoZSBMaW51eCBrZXJuZWwgYW5kIHRoZSBBdG1lbCdzIG93biBib290c3RyYXAgcHJvamVjdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAxYzkwZGYzZTE0OGNlMGEzZTJjODZjNjNiMzhiMTlkNDc3NzJmMmEwCkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJVGh1IE1heSA4IDIwOjUyOjE0IDIwMDggKzAyMDAKCiAgICBBVDkxQ0FQOUFESzogSGFuZGxlIDggb3IgMTYgYml0IE5BTkQKCiAgICBUaGUgQXRtZWwgYm9hcmRzIGNhbiBoYW5kbGUgOCBvciAxNiBiaXQgTkFORCBtZW1vcmllcy4gVGhpcyBwYXRjaAogICAgbWFrZXMgdGhlIHN1cHBvcnQgY29uZmlndXJhYmxlIGluIHRoZSBib2FyZCBjb25maWcgaGVhZGVyIGZpbGUKICAgIChDRkdfTkFORF9EQldfOCBvciBDRkdfTkFORF9EQldfMTYpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDExYjE2MmJhZTA1OGU5NmM3OTI5ZTM1OGQ0YWRmZjJiZWU2YzJjYzQKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglUaHUgTWF5IDggMjA6NTI6MTMgMjAwOCArMDIwMAoKICAgIFVzZSBhIGNvbW1vbiB1LWJvb3QubGRzIGZpbGUgYWNyb3NzIGFsbCBBVDkxQ0FQOS9BVDkxU0FNOSBwbGF0Zm9ybXMKCiAgICBBbGwgdGhlIEFUOTFDQVA5L0FUOTFTQU05IGJvYXJkcyBoYXZlIHRoZSBzYW1lIGxpbmtlciBzY3JpcHQuIFRoZSBwYXRjaAogICAgYmVsb3cgYXZvaWRzIHRoZSBkdXBsaWNhdGlvbiBvZiB1LWJvb3QubGRzIGJ5IHB1dHRpbmcgdGhlIGZpbGUgaW4gdGhlCiAgICBjcHUgZGlyZWN0b3J5IGluc3RlYWQgb2YgdGhlIGJvYXJkIG9uZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBkNDhhYmVhNGI4OWFkYWY1ZTQ1ZWE3NWI1ZTM4YzBkOGRlMTc5ZWNlCkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJVGh1IE1heSA4IDIwOjUyOjEyIDIwMDggKzAyMDAKCiAgICBBZGQgcHJvcGVyIGNvcHlyaWdodCBub3RpY2VzIGluIEF0bWVsIGJvYXJkcyBNYWtlZmlsZXMKCiAgICBUaGUgTWFrZWZpbGVzIGZvciB0aGUgQVQ5MUNBUDkvQVQ5MVNBTTkgYm9hcmRzIGhhdmUgYW4gaW5jb21wbGV0ZQogICAgY29weXJpZ2h0IG5vdGljZS4gVGhpcyBwYXRjaCBhZGRzIHRoZSBtaXNzaW5nIHBpZWNlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBlODE3YTA0MmNlZjYxNjRiZjI2ZmVlODZmOTAzMjZmMmVjOWU2NzQ1CkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJVGh1IE1heSA4IDIwOjUyOjExIDIwMDggKzAyMDAKCiAgICBBZGQgY29weXJpZ2h0IGluZm9ybWF0aW9uIGluIEF0bWVsIGJvYXJkcyBwYXJ0aXRpb24uYwoKICAgIFdoZW4gVWxmIGRpZCB0aGUgZGF0YWZsYXNoLmMgY2xlYW51cCwgaGUgZGlkbid0IGFkZCBoaXMgY29weXJpZ2h0IG9uCiAgICB0aGUgbmV3IGNyZWF0ZWQgZmlsZXMuIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIHByb2JsZW0uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNGY2YzgxMDEwNmY0Zjc2ZDgzY2ZjNTdkOThmNDU0MGNkNDVmOWExOQpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVRodSBNYXkgOCAyMDo1MjoxMCAyMDA4ICswMjAwCgogICAgVXBkYXRlIG9yaWdpbiBhbmQgY29weXJpZ2h0IGluZm9ybWF0aW9uIGluIGFyY2gtYXQ5MXNhbTkgaGVhZGVyIGZpbGVzCgogICAgV2hlbiBkb2luZyB0aGUgQVQ5MUNBUDkvQVQ5MVNBTTkgcG9ydCwgYSBudW1iZXIgb2YgaGVhZGVyIGZpbGVzIHdlcmUKICAgIGNvcGllZCBmcm9tIHRoZSBMaW51eCBrZXJuZWwgc291cmNlcy4gVGhpcyBwYXRjaCBleHBsaWNpdGx5IHNwZWNpZmllcwogICAgdGhpcyBvcmlnaW4gZm9yIGFsbCB0aGUgY29waWVkIGhlYWRlcnMsIGFuZCBmb3IgdGhvc2UgbWlzc2luZyBjb3B5cmlnaHQKICAgIGluZm9ybWF0aW9uLCBhZGRzIGl0LgoKICAgIEFkZGl0aW9uYWx5LCB0aGUgaGVhZGVyIGZpbGUgJ2F0OTFzYW05MjZ4X21jLmgnIGhhcyBiZWVuIHN1cGVyY2VlZGVkCiAgICBpbiB0aGUgbGF0ZXN0IGtlcm5lbCBzb3VyY2VzIGJ5ICdhdDkxc2FtOV9zbWMuaCcuCgogICAgVGhlIGNvcHlyaWdodCBpbmZvcm1hdGlvbiBoYXMgYmVlbiBjb25maXJtZWQgYnkgdGhlIEFUOTEgTGludXgga2VybmVsCiAgICBtYWludGFpbmVyLCBBbmRyZXcgVmljdG9yIDxhdmljdG9yLnphQGdtYWlsLmNvbT4uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNzlkZDE3MTI2ODlkNmE1MDMxZDdjYmZmNTQ5NTcwNDk2ODA3NTFjNwpBdXRob3I6IE1hcmt1cyBLbG90emLDvGNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CVRodSBNYXkgOCAxNjowMDo1NSAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBLaWxhdWVhOiBBZGQgQ09ORklHX0JPT1RQX1NVQk5FVE1BU0sgdG8gS2lsYXVlYSBib2FyZCBjb25maWcKCiAgICBXaGVuIHVzaW5nIGRoY3AvYm9vdHAgdGhlICJuZXRtYXNrIiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3Qgc2V0CiAgICBiZWNhdXNlIENPTkZJR19CT09UUF9TVUJORVRNQVNLIGlzIG5vdCBkZWZpbmVkLiBCdXQgdXN1YWxseSB0aGlzIGlzCiAgICBkZXNpcmVhYmxlLCBzbyB0aGUgZm9sbG93aW5nIHBhdGNoIGFkZHMgdGhpcyB0aGlzIG9wdGlvbiB0byB0aGUgYm9hcmQKICAgIGNvbmZpZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDg2OWQxNGI0Y2MyZTQ3ZGUyZGRjYjExN2JhZDA0MDdhNDQ0MzY2ODQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVNhdCBNYXkgMTAgMTA6MzA6MzYgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogVXBkYXRlIE1ha2FsdSBkZWZjb25maWcgdG8gdXNlIGRldmljZS10cmVlIGJvb3RpbmcgYXMgZGVmYXVsdAoKICAgIFRoaXMgcGF0Y2ggcmV3b3JrcyB0aGUgZGVmYXVsdCBlbnZpcm9ubWVudCBvbiBNYWthbHUuIE5vdyAibmV0X25mcyIgZm9yCiAgICBleGFtcGxlIHVzZXMgdGhlIGRldmljZS10cmVlIHN0eWxlIGJvb3RpbmcgZm9ybWVybHkga25vdyBhcyAibmV0X25mc19mZHQiLgogICAgQWxzbyB0aGUgYWRkcmVzc2VzIGluIFJBTSB3ZXJlIGNoYW5nZWQgYmVjYXVzZSBvZiB0aGUgbmV3IGltYWdlIGJvb3RpbmcKICAgIHN1cHBvcnQsIHdoaWNoIGNoZWNrIGZvciBpbWFnZSBvdmVyd3JpdGluZy4gU28gdGhlIGFkZHJlc3NlcyBuZWVkZWQgdG8KICAgIGdldCBhZGp1c3RlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZjM2MTJhN2IxOTljYWIzOTQyZjYwZDljMTM5MmViMzlkNThjYzY5OQpBdXRob3I6IEJlY2t5IEJydWNlIDxiZ2lsbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTWF5IDcgMTM6Mjg6MTYgMjAwOCAtMDUwMAoKICAgIFBQQzogZml4IG1hcF9waHlzbWVtIGJ1aWxkIHdhcm5pbmcKCiAgICBtYXBfcGh5c21lbSBjdXJyZW50bHkgZ2VuZXJhdGVzIGEgd2FybmluZyB3aGVuIENPTkZJR19QSFlTXzY0QklUIGlzCiAgICBlbmFibGVkLiAgVGhpcyBxdWlldHMgdGhlIHdhcm5pbmcuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPEJlY2t5LkJydWNlQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzZmMzI2NzVmNDAyOTIwMDJlZTFmZWQyNTJjMTgwYTQzMDIyZDJkNApBdXRob3I6IEJlY2t5IEJydWNlIDxiZ2lsbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTWF5IDcgMTM6MjQ6NTcgMjAwOCAtMDUwMAoKICAgIFVwZGF0ZSBwY2kgY29kZSB0byB1c2UgcGh5c19hZGRyX3QKCiAgICBQaHlzaWNhbCBhZGRycyBuZWVkIHRvIGJlIHJlcHJlc2VudGVkIGJ5IHBoeXNfYWRkcl90LCBub3QKICAgIHVuc2lnbmVkIGxvbmcuICBPdGhlcndpc2UsIHN5c3RlbXMgdGhhdCB1c2UgQ09ORklHX1BIWVNfNjRCSVQKICAgIGFyZSBnb2luZyB0byBmYWlsIG1pZ2h0aWx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDkxYTYxNjc0MWZjMTI4Y2RiODhmMzliZGRjZDRkNzJmZTE3NDY2ZDAKQXV0aG9yOiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE1heSA4IDIyOjMyOjIyIDIwMDggLTA3MDAKCiAgICBTdXBwb3J0IGxlZ2FjeSBtdWx0aS10eXBlIGltYWdlcyB3aXRob3V0IEZEVCBzZWN0aW9uLgoKICAgIFRoaXMgcGF0Y2ggZW5hYmxlcyBsZWdhY3kgbXVsdGktdHlwZSBpbWFnZXMgY29udGFpbmluZyBvbmx5IGEgTGludXgga2VybmVsCiAgICBhbmQgcm9vdCBmaWxlIHN5c3RlbSB0byBiZSBsb2FkZWQsIG1haW50YWluaW5nIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cwogICAgdmVyc2lvbnMgb2YgdS1ib290LgoKICAgIFRoaXMgaXMgcmVxdWlyZWQgd2hlbiB1c2luZyBvbGQgaW1hZ2UgZmlsZXMgc3VjaCBhcyBhIExpbnV4IDIuNCBrZXJuZWwgLwogICAgZmlsZXN5c3RlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDg4MTAzMWQ5NzMyNzgzYjdhZWFlMjE5OGZjN2ViNDgwYWU4OTc0YTYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgTWF5IDEwIDAwOjM4OjAyIDIwMDggKzAyMDAKCiAgICBVcGRhdGUgQ0hBTkdFTE9HLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZTVlOWQ2YzljMDgxNjBiZTdlNWEzNmUwNGQxMjVjY2NlOTliODc3NApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBNYXkgMTAgMDA6MzY6MDkgMjAwOCArMDIwMAoKICAgIHBvc3QvY3B1L3BwYzR4eC9NYWtlZmlsZTogbGluZSBsZW5ndGggY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgY2NlOWNmZGFiY2Y0MTZlY2QyYWFjYzM2ODFjOTFlNTM3OGM3NWEzZApBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVRodSBNYXkgOCAyMjo1MjowOSAyMDA4ICswMjAwCgogICAgRml4IEAgLT4gPGF0PiBzdWJzdGl0dXRpb24KCiAgICBXaGVuIGFwcGx5aW5nIHRoZSBBVDkxQ0FQOSBwYXRjaGVzIHVwc3RyZWFtLCBzb21ldGhpbmcgdHJhbnNmb3JtZWQKICAgIHRoZSAnQCcgY2hhcmFjdGVyIGludG8gdGhlICcgPGF0PiAnIHNlcXVlbmNlLgoKICAgIFRoZSBwYXRjaCBiZWxvdyByZXN0b3JlcyB0aGUgb3JpZ2luYWwgZm9ybSBpbiBhbGwgdGhlIHBsYWNlcyB3aGVyZQogICAgaXQgaGFzIGJlZW4gbW9kaWZpZWQgKHRoZSBBVDkxQ0FQOSBmaWxlcywgdGhlIEFUOTFTQU05MjYwIGZpbGVzIHdoaWNoCiAgICB3ZXJlIGNvcGllZCBmcm9tIEFUOTFDQVA5LCBhbmQgYSBjb3VwbGUgb2Ygb3RoZXIgZmlsZXMgd2hlcmUgdGhlCiAgICAnIDxhdD4gJyBzZXF1ZW5jZSB3YXMgcHJlc2VudCkuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KCmNvbW1pdCA5NjA2YjNjODFiM2M0N2ExZDU4NTE0ZTlhMjMyYzZmNDYxYTE3NTk3CkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJVGh1IE1heSA4IDIyOjUyOjEwIDIwMDggKzAyMDAKCiAgICBVcGRhdGUgb3JpZ2luIGFuZCBjb3B5cmlnaHQgaW5mb3JtYXRpb24gaW4gYXJjaC1hdDkxc2FtOSBoZWFkZXIgZmlsZXMKCiAgICBXaGVuIGRvaW5nIHRoZSBBVDkxQ0FQOS9BVDkxU0FNOSBwb3J0LCBhIG51bWJlciBvZiBoZWFkZXIgZmlsZXMgd2VyZQogICAgY29waWVkIGZyb20gdGhlIExpbnV4IGtlcm5lbCBzb3VyY2VzLiBUaGlzIHBhdGNoIGV4cGxpY2l0bHkgc3BlY2lmaWVzCiAgICB0aGlzIG9yaWdpbiBmb3IgYWxsIHRoZSBjb3BpZWQgaGVhZGVycywgYW5kIGZvciB0aG9zZSBtaXNzaW5nIGNvcHlyaWdodAogICAgaW5mb3JtYXRpb24sIGFkZHMgaXQuCgogICAgQWRkaXRpb25hbHksIHRoZSBoZWFkZXIgZmlsZSAnYXQ5MXNhbTkyNnhfbWMuaCcgaGFzIGJlZW4gc3VwZXJjZWVkZWQKICAgIGluIHRoZSBsYXRlc3Qga2VybmVsIHNvdXJjZXMgYnkgJ2F0OTFzYW05X3NtYy5oJy4KCiAgICBUaGUgY29weXJpZ2h0IGluZm9ybWF0aW9uIGhhcyBiZWVuIGNvbmZpcm1lZCBieSB0aGUgQVQ5MSBMaW51eCBrZXJuZWwKICAgIG1haW50YWluZXIsIEFuZHJldyBWaWN0b3IgPGF2aWN0b3IuemFAZ21haWwuY29tPi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgoKY29tbWl0IGNlYjZiNGZiZTFkY2M0MGJiNjcyZWY4MTMzZGRmNDgxM2U5N2NiYjEKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglUaHUgTWF5IDggMjI6NTI6MTEgMjAwOCArMDIwMAoKICAgIEFkZCBjb3B5cmlnaHQgaW5mb3JtYXRpb24gaW4gQXRtZWwgYm9hcmRzIHBhcnRpdGlvbi5jCgogICAgV2hlbiBVbGYgZGlkIHRoZSBkYXRhZmxhc2guYyBjbGVhbnVwLCBoZSBkaWRuJ3QgYWRkIGhpcyBjb3B5cmlnaHQgb24KICAgIHRoZSBuZXcgY3JlYXRlZCBmaWxlcy4gVGhpcyBwYXRjaCBmaXhlcyB0aGUgcHJvYmxlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgoKY29tbWl0IDJhYjAyZmQ0NTZkOGVmOTJhZTlmNTQzOTYxOGQxZmE3Y2ExNmU1ZjMKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CkRhdGU6CVRodSBNYXkgOCAxMDowOToyNyAyMDA4ICswMjAwCgogICAgbXgzMWFkczogZml4IDMya0h6IGNsb2NrIGhhbmRsaW5nCgogICAgQWNjb3JkaW5nIHRvIHNjaGVtYXRpY3MgYW5kIHRvIFJlZEJvb3Qgc291cmNlcywgdGhlIE1YMzFBRFMgdXNlcyBhIDMyNzY4SHoKICAgIG9zY2lsbGF0b3IgYXMgYSBTS0lMIHNvdXJjZS4gRml4IHByZXZpb3VzbHkgd3JvbmdseSBhc3N1bWVkIDMyMDAwSHogdmFsdWUuCiAgICBBbHNvIGZpeCBhIHR5cG8gd2hlbiB2ZXJpZnlpbmcgYSBqdW1wZXIgY29uZmlndXJhdGlvbi4gV2hpbGUgYXQgaXQsIG1ha2UKICAgIHR3byBuZWVkbGVzc2x5IGdsb2JhbCBmdW5jdGlvbnMgc3RhdGljLgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCAxYjU2MDVjYTU3ZmJiMzY0ZjRkNzhlZWVlMjhiOTc0ZWQ4NzVlODg4CkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIE1heSA3IDEzOjEwOjA0IDIwMDggKzAyMDAKCiAgICBBdm9pZCBpbml0cmQgYW5kIGxvZ2J1ZmZlciBhcmVhIG92ZXJsYXBzCgogICAgQWRkIGxvZ2J1ZmZlciB0byByZXNlcnZlZCBMTUIgYXJlYXMgdG8gcHJldmVudCBpbml0cmQgYWxsb2NhdGlvbgogICAgZnJvbSBvdmVybGFwaW5nIHdpdGggaXQuCgogICAgTWFrZSBzdXJlIHRvIHVzZSBjb3JyZWN0IGxvZ2J1ZmZlciBiYXNlIGFkZHJlc3MuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBjNTk1MThlMTU5NDliMzQwM2RmNWM1YjBjMmM0OGVhMGU1YmVhMjRiCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIE1heSA3IDEzOjA4OjU0IDIwMDggKzAyMDAKCiAgICBwcGM6IENsZWFudXAgZ2V0X2VmZmVjdGl2ZV9tZW1zaXplKCkgdXNlCgogICAgUmVtb3ZlZCBkdXBsaWNhdGVkIGVmZmVjdGl2ZSBtZW1vcnkgc2l6ZSBjYWxjdWxhdGlvbiBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgMjczYzM3ZDg0M2Q1YjU4MTA5MDM3ODAxNmNkMTJkZDljNTg2OTA3YgpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBNYXkgNyAwOTowMzo1MyAyMDA4ICswMjAwCgogICAgRml4IGJ1aWxkIGVycm9ycyB3aGVuIENPTkZJR19MT0dCVUZGRVIgYW5kIENPTkZJR19GSVQgYXJlIGVuYWJsZWQKCiAgICBSZWNlbnQgbW9kaWZjYXRpb25zIHRvIExPR0JVRkZFUiBoYW5kbGluZyBjb2RlIHdlcmUgaW5jb3JyZWNseQogICAgaW50cm9kdWNlZCB0byBmaXRfY2hlY2tfa2VybmVsKCkgcm91dGluZSBkdXJpbmcKICAgICJNZXJnZSBicmFuY2ggJ25ldy1pbWFnZScgb2YgZ2l0Oi8vd3d3LmRlbnguZGUvZ2l0L3UtYm9vdC10ZXN0aW5nIiwKICAgIGNvbW1pdCAyN2YzM2U5ZjQ1ZWY3Zjk2ODVjYmRjNjUwNjZhMTgyOGU4NWRkZTRmLgoKICAgIFRoaXMgcGF0Y2ggY2xlYW5zIHVwIHRoaXMgbWVyZ2UgaXNzdWUuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBiYzExNzU2ZGFmZjg5YTNkZTA5Y2E4MGFkYWM5NjJiODhjZjA2ZTZlCkF1dGhvcjogR3JhbnQgRXJpY2tzb24gPGdlcmlja3NvbkBudW92YXRpb25zLmNvbT4KRGF0ZToJVHVlIE1heSA2IDIwOjE2OjE1IDIwMDggLTA3MDAKCiAgICBQcm9wYWdhdGUgRXJyb3IgU3RhdHVzIHRvIHRoZSBTaGVsbCBvbiBmd19wcmludGVudiBFcnJvcnMKCiAgICBDaGFuZ2VkIGltcGxlbWVudGF0aW9uIHN1Y2ggdGhhdCBmd19wcmludGVudiByZXR1cm5zIGZhaWx1cmUgc3RhdHVzCiAgICB3aGVuIG9uZSBvciBtb3JlIHNwZWNpZmllZCB2YXJpYWJsZXMgZG8gbm90IGV4aXN0IG9yIHdoZW4gaW5jb3JyZWN0CiAgICBjb21tYW5kIHN5bnRheCBpcyB1c2VkLgoKICAgIFRoaXMgYWlkcyBzY3JpcHRpbmcgZndfcHJpbnRlbnYgc3VjaCB0aGF0IHRoZSBzY3JpcHQgY2FuIGtleSBvZiB0aGUKICAgIHJldHVybiBzdGF0dXMgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBzdGFuZGFyZCBlcnJvciAic2NyYXBpbmciLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IEVyaWNrc29uIDxnZXJpY2tzb25AbnVvdmF0aW9ucy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGYzYjZkNTI4ZTRkZDcxOTY0MGE0YmZjZDk1NGY0ZTRjN2Y1ZGIwZDYKQXV0aG9yOiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgpEYXRlOglUdWUgTWF5IDYgMTY6MTg6MDAgMjAwOCAtMDcwMAoKICAgIEZpeCBDb21waWxhdGlvbiBFcnJvcnMgd2l0aCAndG9vbHMvZW52L2Z3X3ByaW50ZW52JwoKICAgIEluIHRoZSBjdXJyZW50IHRvcC1vZi10cmVlLCAxLjMuMy4tcmMyLCB0aGUgb3B0aW9uYWwgdG9vbAogICAgJ3Rvb2xzL2Vudi9md19wcmludGVudicgZmFpbHMgdG8gY29tcGlsZSBmb3IgdHdvIHJlYXNvbnM6CgogICAgMSkgVGhlIGhlYWRlciB3YXRjaGRvZy5oIGNhbm5vdCBiZSBmb3VuZC4KICAgIDIpIFRoZSBoZWFkZXIgemxpYi5oIGlzIHBpY2tlZCB1cCBmcm9tIHRoZSB0b29sIGNoYWluIHJhdGhlciB0aGFuIHRoZQogICAgICAgcHJvamVjdCBjYXVzaW5nIGEgcHJvdG90eXBlIGNvbmZsaWN0IGZvciBjcmMzMi4KCiAgICBUaGlzIHBhdGNoIGFkZHJlc3NlcyBib3RoIG9mIHRoZXNlIGlzc3Vlcy4KCiAgICBQbGF0Zm9ybXMgVGVzdGVkIE9uOgogICAgLSBBTUNDICJLaWxhdWVhIgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IEVyaWNrc29uIDxnZXJpY2tzb25AbnVvdmF0aW9ucy5jb20+Cgpjb21taXQgNTk3ZjZjMjZhMThiMzg5OTAzYTY0NjkyYmFjYmY5YTFjYTY5MzU1YgpBdXRob3I6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIE1heSA1IDEwOjIyOjUzIDIwMDggLTA1MDAKCiAgICBGaXggcmVhZGxpbmVfaW50b19idWZmZXIoKSB3aXRoIENPTkZJR19DTURMSU5FX0VESVRJTkcgYmVmb3JlIHJlbG9jYXRpbmcKCiAgICBXaGVuIENPTkZJR19DTURMSU5FX0VESVRJTkcgaXMgZW5hYmxlZCwgcmVhZGxpbmVfaW50b19idWZmZXIoKSBkb2Vzbid0CiAgICB3b3JrIGJlZm9yZSByZWxvY2F0aW5nIHRvIFJBTSBiZWNhdXNlIGNvbW1hbmQgaGlzdG9yeSBpcyB3cml0dGVuIGludG8KICAgIGEgZ2xvYmFsIGFycmF5IHRoYXQgaXMgbm90IHdyaXRhYmxlIGJlZm9yZSByZWxvY2F0aW9uLiAgVGhpcyBwYXRjaAogICAgZGVmZXJzIHRvIHRoZSBuby1lZGl0aW5nIGFuZCBuby1oaXN0b3J5IGNvZGUgaW4gcmVhZGxpbmVfaW50b19idWZmZXIoKQogICAgaWYgaXQgaXMgY2FsbGVkIGJlZm9yZSByZWxvY2F0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNzI2YzBmMWU1ZjEwOGRjY2VhMDUyOTY1MTIzYjk1ODM3ZDJiZDQwMgpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglNb24gTWF5IDUgMTY6MTE6MjIgMjAwOCArMDIwMAoKICAgIGNvc21ldGljOiBBZGp1c3QgY29kaW5nIHN0eWxlIGZvciBzd2l0Y2ggc3RhdGVtZW50cyB0byBiZSBjb25zaXN0ZW50CgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgNTc0YjMxOTUxMmIxM2UxMDgwMGYwMDQ1ZTM5Yjk5M2Y0Y2EyNWU0MgpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglNb24gTWF5IDUgMTY6MTE6MjEgMjAwOCArMDIwMAoKICAgIEZpeCBkaXNrIHR5cGUgb3V0cHV0IGluIGRpc2svcGFydC5jCgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgMDQ1YjRkMmQ3MTY4ZWYwOWM3MzQ5ZGNmNmVjZWJlNzQzMmI3NDE3MQpBdXRob3I6IFZsYWQgTHVuZ3UgPHZsYWQubHVuZ3VAd2luZHJpdmVyLmNvbT4KRGF0ZToJTW9uIE1heSA1IDE0OjIwOjAzIDIwMDggKzAzMDAKCiAgICBNYWlsIGFkZHJlc3MgY2hhbmdlLCBkb2N1bWVudGF0aW9uIG1vZGlmaWVkCgogICAgU2lnbmVkLW9mZi1ieTogVmxhZCBMdW5ndSA8dmxhZC5sdW5ndUB3aW5kcnZpZXIuY29tPgoKY29tbWl0IDRkNDliMjgwMzhlMjgxOTA4OGU4MzU2YTc3MjEyZmM5NWE4OWNlNWEKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CVN1biBNYXkgNCAxNTo0Mjo0MSAyMDA4ICswMjAwCgogICAgbWljcm9ibGF6ZTogUmVwYXJlIGludGMgaGFuZGxpbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Cgpjb21taXQgODc4YjNiMWUxOTNlNTcwY2FmM2U5NmFkOGUzMWU1NjFmNjhkMDI4NwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBNYXkgNCAxNToxNzo1MiAyMDA4ICswMjAwCgogICAgaW5jbHVkZS9naXRpZ25vcmU6IHVwZGF0ZSB0byBhbGwgYXJjaGl0ZWN0dXJlcwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMWRmMzY4YWVkM2I4YmMyNDBmZTE1OTVkMjkwYjBlOTFiMjI5NjFkYQpBdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KRGF0ZToJTW9uIE1heSA1IDAyOjEyOjA2IDIwMDggKzAyMDAKCiAgICBpZGU6IFJlbW92ZSBzcHVyaW91cyBzZWNvbmQgaW5jbHVkZSBvZiBpby5oCgogICAgUmVtb3ZlZCB0aGUgc2Vjb25kIGluY2x1ZGUsIHdpdGggYWxsIHRoZSAjaWZkZWYgYXJvdW5kIGFzIHN1Z2dlc3RlZCBieSBXb2xmZ2FuZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+Cgpjb21taXQgOGZiYzk4NWJkYWQwOWIyM2I3ZWI0ZGYxZDJlYTU4OTYxOWQ4ZGI0YwpBdXRob3I6IEFkcmlhbiBGaWxpcGkgPGFkcmlhbi5maWxpcGlAZXVyb3RlY2guY29tPgpEYXRlOglUdWUgTWF5IDYgMTY6NDY6MzcgMjAwOCAtMDQwMAoKICAgIEZpeCBzb21lIHR5cG9zCgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aHJlZSB0eXBvcy4KICAgIFRoZSBmaXJzdCBpcyBhIHJlcGV0aXRpb24gb2YgQ09ORklHX0NNRF9CU1AuCiAgICBUaGUgc2Vjb25kIG1ha2VzIHRoZSAjZW5kaWYgY29tbWVudCBtYXRjaCBpdHMgI2lmLgogICAgVGhlIHRoaXJkIGlzIGEgc3BlbGxpbmcgZXJyb3IuCgogICAgU2lnbmVkLW9mZi1ieTogQWRyaWFuIEZpbGlwaSA8YWRyaWFuLmZpbGlwaUBldXJvdGVjaC5jb20+Cgpjb21taXQgZTQxOWUxMmQwNGFlM2IyODBjOTlhODdhMmVhNGFkN2E0MDYyOGJjYgpBdXRob3I6IEdyYW50IEVyaWNrc29uIDxnZXJpY2tzb25AbnVvdmF0aW9ucy5jb20+CkRhdGU6CVN1biBNYXkgNCAxNjo0NTowMSAyMDA4IC0wNzAwCgogICAgUmVjb2duaXplICdwb3dlcnBjJyBBcyBhbiBBbGlhcyBmb3IgSUhfQVJDSF9QUEMKCiAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIHJlY29nbml0aW9uIG9mICdwb3dlcnBjJyBhcyBhbiBhbGlhcyBmb3IgdGhlIFBvd2VyUEMKICAgIGFyY2hpdGVjdHVyZSB0eXBlIHNpbmNlIExpbnV4IGlzIGFscmVhZHkgdHJlbmRpbmcgaW4gdGhhdCBkaXJlY3Rpb24sCiAgICBwcmVmZXJyaW5nICdwb3dlcnBjJyB0byAncHBjJy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgoKY29tbWl0IGY1YTI0MjU5MTkwYzM4OGMyNTI3YmRjNDlmZWUzNDU3N2Q4NjJjYzcKQXV0aG9yOiBXaGVhdGxleSBUcmF2aXMgPFRyYXZpcy5XaGVhdGxleUBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgTWF5IDIgMTM6MzU6MTUgMjAwOCAtMDcwMAoKICAgIDc0NTAgYW5kIDg2eHggTDIgY2FjaGUgaW52YWxpZGF0ZSBidWcgY29ycmVjdGlvbnMKCiAgICBUaGUgNzYxMCBhbmQgcmVsYXRlZCBwYXJ0cyBoYXZlIGFuIEwySVAgYml0IGluIHRoZSBMMkNSIHRoYXQgaXMKICAgIG1vbml0b3JlZCB0byBzaWduYWwgd2hlbiB0aGUgTDIgY2FjaGUgaW52YWxpZGF0ZSBpcyBjb21wbGV0ZSB3aGVyZWFzIHRoZQogICAgNzQ1MCBhbmQgcmVsYXRlZCBwYXJ0cyB1dGlsaXplIEwySSBmb3IgdGhpcyBwdXJwb3NlLiBIb3dldmVyLCB0aGUKICAgIGN1cnJlbnQgY29kZSBkb2VzIG5vdCBhY2NvdW50IGZvciB0aGlzIGRpZmZlcmVuY2UuIEFkZGl0aW9uYWxseSB0aGUgODZ4eAogICAgTDIgY2FjaGUgaW52YWxpZGF0ZSBjb2RlIHVzZWQgYW4gImFuZGkiIGluc3RydWN0aW9uIHdoZXJlIGFuICJhbmRpcyIKICAgIGluc3RydWN0aW9uIHNob3VsZCBoYXZlIGJlZW4gdXNlZC4KCiAgICBUaGlzIHBhdGNoIGFkZHJlc3NlcyBib3RoIG9mIHRoZXNlIGJ1Z3MuCgogICAgU2lnbmVkLW9mZi1ieTogVHJhdmlzIFdoZWF0bGV5IDx0cmF2aXMud2hlYXRsZXlAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLUJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRkMzFjZGM0NWQzNTkyYTU1NDVhNjQ5ZmI1YTI0YjQ1OGE0ZTRiNzIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgTWF5IDkgMTA6MTY6MTMgMjAwOCArMDIwMAoKICAgIEF2b2lkIGluZmluaXRlIGxvb3AgIkdlbmVyYXRpbmcgaW5jbHVkZS9hdXRvY29uZi5tayIKCiAgICBGaXggYSBib2d1cyBjaXJjdWxhciBkZXBlbmRlbmN5IHRoYXQgY2F1c2VkIGFuIGluZmluaXRlIGxvb3Agb2YKICAgICJHZW5lcmF0aW5nIGluY2x1ZGUvYXV0b2NvbmYubWsiIGFnYWluIGFuZCBhZ2Fpbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDU2N2ZiODUyMTc4ZGJmNTk1MjlkNzMwMTYyMGEzZjM3MzJhNGIwMmQKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglUaHUgTWF5IDggMjI6NTI6MDkgMjAwOCArMDIwMAoKICAgIEZpeCBAIC0+IDxhdD4gc3Vic3RpdHV0aW9uCgogICAgV2hlbiBhcHBseWluZyB0aGUgQVQ5MUNBUDkgcGF0Y2hlcyB1cHN0cmVhbSwgc29tZXRoaW5nIHRyYW5zZm9ybWVkCiAgICB0aGUgJ0AnIGNoYXJhY3RlciBpbnRvIHRoZSAnIDxhdD4gJyBzZXF1ZW5jZS4KCiAgICBUaGUgcGF0Y2ggYmVsb3cgcmVzdG9yZXMgdGhlIG9yaWdpbmFsIGZvcm0gaW4gYWxsIHRoZSBwbGFjZXMgd2hlcmUKICAgIGl0IGhhcyBiZWVuIG1vZGlmaWVkICh0aGUgQVQ5MUNBUDkgZmlsZXMsIHRoZSBBVDkxU0FNOTI2MCBmaWxlcyB3aGljaAogICAgd2VyZSBjb3BpZWQgZnJvbSBBVDkxQ0FQOSwgYW5kIGEgY291cGxlIG9mIG90aGVyIGZpbGVzIHdoZXJlIHRoZQogICAgJyA8YXQ+ICcgc2VxdWVuY2Ugd2FzIHByZXNlbnQpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDczY2NiMzQxMGEwNzg1NTkzY2RhN2FlZTQ1NWRmYzUxZjc5MGUyODEKQXV0aG9yOiBHYXJ5IEplbm5lam9obiA8Z2FyeS5qZW5uZWpvaG5AZnJlZW5ldC5kZT4KRGF0ZToJTW9uIEFwciAyOCAxNDowNDozMiAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBBZGQgdGhlIEhhcnJpcyBRVUFEMTAwSEQgQU1DQyA0MDVFUC1iYXNlZCBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGVmMjY0MjYyNWNiZmIxYzM2OTVlMzQ3OGQwOGFlNTE1MDUyYTQ5NTAKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBNYXkgOCAxMToxMDo0NiAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBLaWxhdWVhOiBGaXggaW5jb3JyZWN0IEZQR0EgRklGTyBhZGRyZXNzCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGEwMGVjY2ZlYmM5NTRhZDk0ODUxNjFlZmVjYTdkOWFhZjYyNmQ1MzAKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBNYXkgOCAxMTowNToxNSAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBBZGQgZmR0IHN1cHBvcnQgdG8gYWxsIHJlbWFpbmluZyBBTUNDIFBQQzR4eCBldmFsIGJvYXJkcwoKICAgIFRoaXMgcGF0Y2ggYWRkcyBmZHQgKGZsYXR0ZW5lZCBkZXZpY2UgdHJlZSkgc3VwcG9ydCB0byBhbGwgcmVtYWluaW5nIEFNQ0MKICAgIGV2YWwgYm9hcmRzLiBNb3N0IG5ld2VyIGJvYXJkcyBhbHJlYWR5IHN1cHBvcnQgZGV2aWNlIHRyZWUuIFdpdGggdGhpcyBwYXRjaCwKICAgIGFsbCBBTUNDIGJvYXJkcyBub3cgZW5hYmxlIGRldmljZSB0cmVlIHBhc3NpbmcgZnJvbSBVLUJvb3QgdG8gTGludXgKICAgIGFyY2gvcG93ZXJwYyBrZXJuZWxzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjYjVkODhiOTYxMWUwYzM1YzUzNTQzYWQzYjRhYjk5ZmE4MjIwM2UzCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgTWF5IDggMTE6MDE6MDkgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogQWRkIHdlYWsgZGVmYXVsdCBmdF9ib2FyZF9zZXR1cCgpIHJvdXRpbmUKCiAgICBUaGlzIHBhdGNoIGFkZHMgYSBkZWZhdWx0IGZ0X2JvYXJkX3NldHVwKCkgcm91dGluZSB0byB0aGUgNHh4IGZkdCBjb2RlLgogICAgVGhpcyByb3V0aW5lIGlzIGRlZmluZWQgYXMgd2VhayBhbmQgY2FuIGJlIG92ZXJ3cml0dGVuIGJ5IGEgYm9hcmQgc3BlY2lmaWMKICAgIG9uZSBpZiBuZWVkZWQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGQxYzFiYTg1Yzc5MTUwNTNhZGY2YThkMTRhMDhhYzZmY2I3NTBkMDEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBNYXkgOCAxMDo0ODo1OCAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBhY2FkaWE6IEFkZCBmZHQgc3VwcG9ydCBhbmQgZml4IHNlY3Rpb24gb3ZlcmxhcCBwcm9ibGVtCgogICAgVGhpcyBwYXRjaCBhZGRzIGZkdCAoZmxhdHRlbmVkIGRldmljZSB0cmVlKSBzdXBwb3J0IHRvIHRoZSBBTUNDCiAgICBBY2FkaWEgZXZhbCBib2FyZC4gVGhpcyBpbmNyZWFzZXMgdGhlIGltYWdlIHNpemUgYW5kIGl0IGRvZXNuJ3QKICAgIGZpdCBhbnltb3JlIGludG8gMjU2a0J5dGUuIFNpbmNlIHdlIGRpZG4ndCB3YW50IHRvIHJlbW92ZSBmZWF0dXJlcwogICAgZnJvbSB0aGUgY29uZmlndXJhdGlvbiwgd2UgZGVjaWRlZCB0byBpbmNyZWFzZSB0aGUgVS1Cb290IGltYWdlIHNpemUKICAgIChhZGQgb25lIGZsYXNoIHNlY3RvcikuCgogICAgQWxzbyBjaGFuZ2VkIHRoZSBkZWZhdWx0IGVudmlyb25tZW50IGRlZmluaXRpb24gdG8gbWFrZSBpdAogICAgaW5kZXBlbmRlbnQgb2Ygc3VjaCBjaGFuZ2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0YWRiMzAyM2RlNzViYzE1MGYwODhjODkzNWRiMzQwOTMwYWQzOGM4CkF1dGhvcjogSXJhIFNueWRlciA8aXdzQG92cm8uY2FsdGVjaC5lZHU+CkRhdGU6CVR1ZSBBcHIgMjkgMTE6MTg6NTQgMjAwOCAtMDcwMAoKICAgIHBwYzR4eDogQWRkIGRldmljZSB0cmVlIHN1cHBvcnQgdG8gQU1DQyBZb3NlbWl0ZQoKICAgIEFkZCBzdXBwb3J0IGZvciBib290aW5nIHdpdGggYSBkZXZpY2UgdHJlZSBibG9iLiBUaGlzIGlzIG5lZWRlZCB0byBib290CiAgICBBUkNIPXBvd2VycGMga2VybmVscy4gQWxzbyBhZGQgc3VwcG9ydCBmb3Igc2V0dGluZyB0aGUgZXRoMCBtYWMgYWRkcmVzcwogICAgdmlhIHRoZSBldGhhZGRyIHZhcmlhYmxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IElyYSBXLiBTbnlkZXIgPGl3c0BvdnJvLmNhbHRlY2guZWR1PgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGI5YmJlZmNlMWE2NTNlYTM1Zjc0YTY2ZWMxMTdjZGRhMmUwNDNhNGIKQXV0aG9yOiBEYXZlIE1pdGNoZWxsIDxkbWl0Y2hlbGxAYW1jYy5jb20+CkRhdGU6CVdlZCBNYXkgNyAwOTowMDoyMyAyMDA4IC0wNzAwCgogICAgcHBjNHh4OiBGaXggdHlwb3MgaW4gNDYwR1QvRVggRkJEViBhcnJheQoKICAgIENvcnJlY3RlZCB0d28gdHlwb3MgaW4gdGhlIDQ2MEdUL0VYIEZCRFYgYXJyYXkuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBNaXRjaGVsbCA8ZG1pdGNoZWxsQGFtY2MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDY2ZjVmYTkyNjM2MjkyNzFlZGM4NjE3OGIxZjIyNGUzYzlhYWIyYjMKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXkgNyAxNjo1NDozMSAyMDA4IC0wNTAwCgogICAgODV4eDogTGltaXQgQ1BVMiB3b3JrYXJvdW5kIHRvIHBhcnRzIHRoYXQgaGF2ZSB0aGUgZXJyYXRhCgogICAgU2lnbmVkLW9mZi1ieTogRWJvbnkgWmh1IDxlYm9ueS56aHVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhNWZlNTE0ZThhY2U1NjQzMDBkMmMxZDczODQ2ZGRmZjQ5NjU0MjQzCkF1dGhvcjogTGVlIE5pcHBlciA8bGVlLm5pcHBlckBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgQXByIDI1IDE1OjQ0OjQ1IDIwMDggLTA1MDAKCiAgICBtcGM4M3h4OiBzeXN0ZW0gcGVyZm9ybWFuY2Ugc2V0dGluZ3MgZm9yIE1QQzgzNDlFTURTLgoKICAgIFRoZXNlIHNhbWUgc2V0dGluZ3MgYXJlIHVzZWQgb24gTVBDODM0OUlUWCwgYW5kCiAgICBpbXByb3ZlIHBlcmZvcm1hbmNlIG9uIE1QQzgzNDlFTURTLgoKICAgIFNpZ25lZC1vZmYtYnk6IExlZSBOaXBwZXIgPGxlZS5uaXBwZXJAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNDkzODdkYmE5MTBlNDg1NjQwYjU3NWU5MjBlZTQ2M2I3ZTYxMWRjMwpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVR1ZSBNYXkgNiAxMzoyMjo1MiAyMDA4ICswOTAwCgogICAgW01JUFNdIGNwdS9taXBzL2NhY2hlLlM6IEZpeCBidWlsZCB3YXJuaW5nCgogICAgU29tZSBvbGQgR05VIGFzc2VtYmxlcnMsIHN1Y2ggYXMgdjIuMTQgKEVMREsgMy4xLjEpLCB2Mi4xNiAoRUxESyA0LjEuMCksCiAgICB3YXJucyBpbGxlZ2FsIGdsb2JhbCBzeW1ib2wgcmVmZXJlbmNlcyBieSBiYWwgKGFuZCBqYWwgYWxzbykgaW5zdHJ1Y3Rpb24uCiAgICBUaGlzIGRvZXMgbm90IGhhcHBlbiB3aXRoIHRoZSBsYXRlc3QgYmludXRpbHMgdjIuMTguCgogICAgSGVyZSdzIGFuIGV4YW1wbGUgb24gZ3RoMl9jb25maWc6CgogICAgbWlwc180S0MtZ2NjICAtRF9fQVNTRU1CTFlfXyAtZyAgLU9zICAgLURfX0tFUk5FTF9fIC1EVEVYVF9CQVNFPTB4OTAwMDAwMDAgLUkvaG9tZS9za3VyaWJheS9kZXZlbC91LWJvb3QuZ2l0L2luY2x1ZGUgLWZuby1idWlsdGluIC1mZnJlZXN0YW5kaW5nIC1ub3N0ZGluYyAtaXN5CiAgICBzdGVtIC9vcHQvZWxkazMxMS91c3IvYmluLy4uL2xpYi9nY2MtbGliL21pcHMtbGludXgvMy4zLjMvaW5jbHVkZSAtcGlwZSAgLURDT05GSUdfTUlQUyAtRF9fTUlQU19fIC1HIDAgLW1hYmljYWxscyAtZnBpYyAtcGlwZSAtbXNvZnQtZmxvYXQgLW1hcmNoPTRrYyAtbXR1bmU9NGsKICAgIGMgLUVCIC1jIC1vIGNhY2hlLm8gY2FjaGUuUwogICAgY2FjaGUuUzogQXNzZW1ibGVyIG1lc3NhZ2VzOgogICAgY2FjaGUuUzoyNDM6IFdhcm5pbmc6IFByZXRlbmRpbmcgZ2xvYmFsIHN5bWJvbCB1c2VkIGFzIGJyYW5jaCB0YXJnZXQgaXMgbG9jYWwuCiAgICBjYWNoZS5TOjI1MDogV2FybmluZzogUHJldGVuZGluZyBnbG9iYWwgc3ltYm9sIHVzZWQgYXMgYnJhbmNoIHRhcmdldCBpcyBsb2NhbC4KCiAgICBJbiBwcmluY2lwbGUsIGdhcyBtaWdodCBiZSBzZW5zaXRpdmUgdG8gZ2xvYmFsIHN5bWJvbCByZWZlcmVuY2VzIGluIFBJQwogICAgY29kZSBiZWNhdXNlIHRoZXkgc2hvdWxkIGJlIHByb2Nlc3NlZCB0aHJvdWdoIEdPVCAoZ2xvYmFsIG9mZnNldCB0YWJsZSkuCiAgICBCdXQgaWYgYGJhbCcgaW5zdHJ1Y3Rpb24gaXMgdXNlZCwgaXQgcmVzdWx0cyBpbiBQQy1iYXNlZCBvZmZzZXQganVtcC4KICAgIFRoaXMgaXMgdGhlIGNhdXNlIG9mIHRoaXMgd2FybmluZy4KCiAgICBJbiBwcmFjdGljZSwgd2Uga25vdyBpdCBkb2Vzbid0IG1hdHRlciB3aGV0aGVyIFBDLWJhc2VkIHJlZmVyZW5jZSBvciBHT1QtCiAgICBiYXNlZC4gQXMgZm9yIHRoaXMgY2FzZSwgYm90aCB3aWxsIHdvcmsgYmVmb3JlL2FmdGVyIHJlbG9jYXRpb24uIEJ1dCBsZXQncwogICAgZml4IHRoZSBjb2RlLgoKICAgIFRoaXMgcGF0Y2ggZXhwbGljaXRseSBzZXRzIHVwIGEgdGFyZ2V0IGFkZHJlc3MsIHRoZW4ganVtcCB0aGVyZS4KICAgIEhlcmUncyBhbiBleGFtcGxlIG9mIGRpc2Fzc2VtYmxlZCBjb2RlIHdpdGgvd2l0aG91dCB0aGlzIHBhdGNoLgoKICAgICA5MDAwMDY2ODoJICAgICAxNDg1ZmZlZgkgICAgIGJuZSAgICAgYTAsYTEsOTAwMDA2MjggPG1pcHNfY2FjaGVfcmVzZXQrMHgyMD4KICAgICA5MDAwMDY2YzoJICAgICBhYzgwZmZmYwkgICAgIHN3ICAgICAgemVybywtNChhMCkKICAgICA5MDAwMDY3MDoJICAgICAwMTQwMjgyMQkgICAgIG1vdmUgICAgYTEsdDIKICAgIC05MDAwMDY3NDoJICAgICAwNDExZmZiYQkgICAgIGJhbCAgICAgOTAwMDA1NjAgPG1pcHNfaW5pdF9pY2FjaGU+CiAgICAtOTAwMDA2Nzg6CSAgICAgMDE4MDMwMjEJICAgICBtb3ZlICAgIGEyLHQ0CiAgICAtOTAwMDA2N2M6CSAgICAgMDE2MDI4MjEJICAgICBtb3ZlICAgIGExLHQzCiAgICAtOTAwMDA2ODA6CSAgICAgMDQxMWZmY2MJICAgICBiYWwgICAgIDkwMDAwNWI0IDxtaXBzX2luaXRfZGNhY2hlPgogICAgLTkwMDAwNjg0OgkgICAgIDAxYTAzMDIxCSAgICAgbW92ZSAgICBhMix0NQogICAgLTkwMDAwNjg4OgkgICAgIDAzMDAwMDA4CSAgICAganIgICAgICB0OAogICAgLTkwMDAwNjhjOgkgICAgIDAwMDAwMDAwCSAgICAgbm9wCiAgICArOTAwMDA2NzQ6CSAgICAgMDE4MDMwMjEJICAgICBtb3ZlICAgIGEyLHQ0CiAgICArOTAwMDA2Nzg6CSAgICAgOGY4ZjgzZWMJICAgICBsdyAgICAgIHQ3LC0zMTc2NChncCkKICAgICs5MDAwMDY3YzoJICAgICAwMWUwZjgwOQkgICAgIGphbHIgICAgdDcKICAgICs5MDAwMDY4MDoJICAgICAwMDAwMDAwMAkgICAgIG5vcAogICAgKzkwMDAwNjg0OgkgICAgIDAxNjAyODIxCSAgICAgbW92ZSAgICBhMSx0MwogICAgKzkwMDAwNjg4OgkgICAgIDAxYTAzMDIxCSAgICAgbW92ZSAgICBhMix0NQogICAgKzkwMDAwNjhjOgkgICAgIDhmOGY4MWUwCSAgICAgbHcgICAgICB0NywtMzIyODgoZ3ApCiAgICArOTAwMDA2OTA6CSAgICAgMDFlMGY4MDkJICAgICBqYWxyICAgIHQ3CiAgICArOTAwMDA2OTQ6CSAgICAgMDAwMDAwMDAJICAgICBub3AKICAgICs5MDAwMDY5ODoJICAgICAwMzAwMDAwOAkgICAgIGpyICAgICAgdDgKICAgICs5MDAwMDY5YzoJICAgICAwMDAwMDAwMAkgICAgIG5vcAoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgMGY4YzYyYTE0YjUyM2M1Njg3NGViY2I2N2MxYTE2Yzk5YWFkNDhiMwpBdXRob3I6IFZsYWQgTHVuZ3UgPHZsYWQubHVuZ3VAd2luZHJpdmVyLmNvbT4KRGF0ZToJTW9uIE1heSA1IDE0OjA0OjAwIDIwMDggKzAzMDAKCiAgICBBbGxvdyBidWlsZGluZyBtaXBzIHZlcnNpb25zIHdpdGggRUxESyAzLjEuMQoKICAgIC5ncHdvcmQgd29ya3Mgb25seSB3aXRoIGxvY2FsIHN5bWJvbHMgb24gY2VydGFpbiBiaW51dGlscyB2ZXJzaW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IFZsYWQgTHVuZ3UgPHZsYWQubHVuZ3VAd2luZHJ2aWVyLmNvbT4KCmNvbW1pdCAxMmE2N2E5ZTUxZjZiM2VjMjZjYjBmMDc3ZmI1Njg1YTQ0N2MzNTlkCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIE1heSA1IDEyOjUyOjM2IDIwMDggKzAyMDAKCiAgICBNQUtFQUxMOiBhZGQgaW5rYTR4MCBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYjgzZGNjMTNhZTdiMmRhYjM5NGJmZWY2ZjY5OTc1MGQxMTQ5MGVlMgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBNYXkgNCAyMTozNDoyMyAyMDA4ICswMjAwCgogICAga2I5MjAyIGJvYXJkOiBmaXggYnVpbGQgcHJvYmxlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDZhZGY2MWRjNGNiNWM1M2EyZGY5OTBjYmM4ZGYyYmNlYWNiZmQ4NjkKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gTWF5IDQgMTI6MTA6MzMgMjAwOCArMDIwMAoKICAgIFByZXBhcmUgZm9yIHYxLjMuMy1yYzMKCiAgICBVcGRhdGUgQ2hOQUdFTE9HLCBtaW5vciB3aGl0ZSBzcGFjZSBjbGVhbnVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgN2MwNzczZmRlNjEwMGI2MWJlMjU1OGNiNWQ4YzQ0MmEzMTk0YWVjYgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBNYXkgNCAwMDozNToxNSAyMDA4ICswMjAwCgogICAgZHJpdmVycy9uZXQvdHNlYy5jOiBGaXggdHlwby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGFhNzM3OTQ1ZTZmMzdhNWRlNWRiYWQ1NTBhNzY5NGUwY2IyYTgxMjAKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CUZyaSBNYXkgMiAyMTo0NToxMiAyMDA4IC0wNDAwCgogICAgdmVyc2lvbl9hdXRvZ2VuZXJhdGVkLmg6IHVzZSBwcmludGYgcmF0aGVyIHRoYW4gZWNobyAtbgoKICAgIFNvbWUgc3lzdGVtcyBhcmUgZHVtYiBhbmQgZG8gbm90IGltcGxlbWVudCB0aGUgLW4gZmxhZyB0byBlY2hvIChsaWtlIE9TIFgpLgogICAgQ29udmVydCB0aGUgTWFrZWZpbGUgdG8gdXNlIHByaW50ZiBhcyB0aGlzIHNob3VsZCB3b3JrIGV2ZXJ5d2hlcmUuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0YWNjMmExMDhhZDBhNjY5MTY1OTI0NzA0YTZjYjA4M2Y5MTM4MjQyCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglGcmkgTWF5IDIgMTg6MTc6NTAgMjAwOCAtMDQwMAoKICAgIGZpeCBidWlsZGluZyB3aGVuIHNhdmVlbnYgaXMgZGlzYWJsZWQgaW4gc29tZSBzZXR1cHMKCiAgICBJZiB5b3UgZW5hYmxlIGVudmlyb25tZW50IGluIHRoZSBmbGFzaCwgYnV0IGRpc2FibGUgdGhlIGVtYmVkZGVkCiAgICBvcHRpb24sIGFuZCB5b3UgZGlzYWJsZSB0aGUgc2F2ZWVudiBjb21tYW5kLCB0aGVuIHRoZSAjaWYgbmVzdGVkCiAgICBsb2dpYyB3aWxsIHRyaWdnZXIgYSBjb21waWxlIGZhaWx1cmU6CiAgICBlbnZfZmxhc2guYzogSW4gZnVuY3Rpb24gJ2Vudl9yZWxvY2F0ZV9zcGVjJzoKICAgIGVudl9mbGFzaC5jOjM5OTogZXJyb3I6ICdmbGFzaF9hZGRyJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKICAgIFRoZSBmaXggaXMgdG8gYWRkIENNRF9TQVZFRU5WIGlmZGVmIHByb3RlY3Rpb24gbGlrZSBldmVyeXdoZXJlIGVsc2UuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGNjZjFhZDUzNWFlMWMwZGMyZDQ2NjIzNWM2NjhhZGJkZmUzYTU1YjcKQXV0aG9yOiBKZXJlbXkgTWNOaWNvbGwgPGplcmVteS5tY25pY29sbEB3aW5kcml2ZXIuY29tPgpEYXRlOglGcmkgTWF5IDIgMTY6MTA6MDQgMjAwOCAtMDQwMAoKICAgIFNCQzg1NDg6IGZpeCBhZGRyZXNzIG1hc2sgdG8gYWxsb3cgNjRNIGZsYXNoCgogICAgRml4IGluY29ycmVjdCBtYXNrIHRvIGVuYWJsZSBhbGwgNjRNQiBvZiBvbmJvYXJkIGZsYXNoLgogICAgUHJldmlvdXNseSBVLUJvb3QgaW5jb3JyZWN0bHkgbWFwcGVkIG9ubHkgOE1CIG9mIGZsYXNoLCB0aGlzCiAgICBwYXRjaCBjb3JyZWN0bHkgbWFwcyBhbGwgdGhlIGF2YWlsYWJsZSBmbGFzaC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZXJlbXkgTWNOaWNvbGwgPGplcmVteS5tY25pY29sbEB3aW5kcml2ZXIuY29tPgoKY29tbWl0IDM2NDgwODVjNDY0YzhjMjJlZjc2ZmFiMDA2Y2E0MzQ0ZDM3OTYxMjQKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglGcmkgTWF5IDIgMTk6NDg6NTYgMjAwOCArMDIwMAoKICAgIHFlbXVfbWlwczogYWRkIFJFQURNRQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNmZkZDAwMjY4OTE5MGEwMDIyYzdiM2RiYWIzN2ZjYmE3MjQ1ODBjZQpBdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KRGF0ZToJRnJpIE1heSAyIDAyOjM1OjU5IDIwMDggKzAyMDAKCiAgICBGaXggbWlzc3BlbGxlZCBjb21tZW50CgogICAgU2lnbmVkLW9mZi1ieTogTWFyY2VsIFppc3dpbGVyIDxtYXJjZWxAemlzd2lsZXIuY29tPgoKY29tbWl0IGZhOTU2ZmRlNjBiN2VjNGRkNjZiZDYyZjk5MTBmZDM0MWI1MDQ5YTEKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBNYXkgMSAwNDoxMzowNSAyMDA4IC0wNDAwCgogICAgbWtpbWFnZTogbWFrZSBtbWFwKCkgY2hlY2tzIGNvbnNpc3RlbnQKCiAgICBUaGUgbW1hcCgpIHJlbGF0ZWQgY29kZSBpcyBmdWxsIG9mIGluY29uc2lzdGVudCBjYXN0cy9jb25zdGFudHMgd2hlbgogICAgaXQgY29tZXMgdG8gZXJyb3IgY2hlY2tpbmcsIGFuZCBtYXkgYnJlYWsgd2hlbiBidWlsZGluZyBvbiBzb21lCiAgICBzeXN0ZW1zIChsaWtlIG9uZXMgdGhhdCBkbyBub3QgaW1wbGljaXRseSBkZWZpbmUgdGhlIGNhZGRyX3QgdHlwZSkuCiAgICBMZXQncyBqdXN0IGF2b2lkIHRoZSB3aG9sZSBtZXNzIGJ5IHdyaXRpbmcgdGhlIGNvZGUgbmljZSBhbmQgY2xlYW4gaW4KICAgIHRoZSBmaXJzdCBwbGFjZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgOGU5MGNkMDQ0N2EwZjBjY2Y1MjllZjg2ZjBlNmI1NjE4N2QzYjgyYQpBdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KRGF0ZToJVGh1IE1heSAxIDA5OjA1OjM0IDIwMDggKzAyMDAKCiAgICBGaXggZGVmaW5lZCBidXQgbm90IHVzZWQgYnVpbGQgd2FybmluZwoKICAgIC0gd2FybmluZzogJ3Nyb20nIGRlZmluZWQgYnV0IG5vdCB1c2VkCgogICAgU2lnbmVkLW9mZi1ieTogTWFyY2VsIFppc3dpbGVyIDxtYXJjZWxAemlzd2lsZXIuY29tPgoKY29tbWl0IGI3MTE5MGYzMjUwYWFmZmNjODFjMzVmNmNmZDM0OThjYjdjNDgwMTMKQXV0aG9yOiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+CkRhdGU6CVRodSBNYXkgMSAwOTowNToyNiAyMDA4ICswMjAwCgogICAgRml4IGltcGxpY2l0IGRlY2xhcmF0aW9uIGJ1aWxkIHdhcm5pbmdzCgogICAgLSB3YXJuaW5nOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiDigJhzZXJpYWxfaW5pdGlhbGl6ZeKAmQoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KCmNvbW1pdCA5YWNkZTEyOWNjM2Y5YzFiM2JjMTFhODIxNDgwZGQ0NDY3NzRkNjE4CkF1dGhvcjogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgpEYXRlOglUdWUgQXByIDI5IDE5OjE4OjMyIDIwMDggKzAyMDAKCiAgICBUU0VDOiBhZGQgY29uZmlnIG9wdGlvbnMgZm9yIFZTQzg2MDEgUkdNSUkgUEhZCgogICAgVGhlIFZpdGVzc2UgVlNDODYwMSBSR01JSSBQSFkgaGFzIGludGVybmFsIGRlbGF5IGZvciBib3RoIFJ4CiAgICBhbmQgVHggY2xvY2sgbGluZXMuIFRoZXkgYXJlIGNvbmZpZ3VyZWQgdXNpbmcgMiBiaXRzIGluIGV4dGVuZGVkCiAgICByZWdpc3RlciAweDE3LgogICAgVGhlcmVmb3JlIENGR19WU0M4NjAxX1NLRVdfVFggYW5kIENGR19WU0M4NjAxX1NLRVdfUlggaGF2ZQogICAgYmVlbiBpbnRyb2R1Y2VkIHdpdGggdmFsaWQgdmFsdWVzIDAtMyBnaXZpbmcgMC4wLCAxLjQsMS43IGFuZCAyLjBucyBkZWxheS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CiAgICAtLQoKICAgICBkcml2ZXJzL25ldC90c2VjLmMgfCAgICA2ICsrKysrKwogICAgIGRyaXZlcnMvbmV0L3RzZWMuaCB8ICAgIDMgKysrCiAgICAgMiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCgpjb21taXQgYmQ5OGVlNjBkZjQzZWU2ZGQ2ZjVlYmUzMmM2N2QwM2U5MDUxM2ZmOApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBNYXkgMyAyMzowNzoxNSAyMDA4ICswMjAwCgogICAgUmV2ZXJ0ICJDb2xkRmlyZTogR2V0IGluZm9ybWF0aW9uIGZyb20gdGhlIGNvcnJlY3QgR0NDIgoKICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgYjcxNjZlMDVhNTEzYzA4MDZiNjNiOWRmYjZmMWQ3NzY0NWNlZGUyYQogICAgKHJlcGxhY2VkIGJ5IGNvbW1pdCBjNGU1ZjUyYTU4ZDI3OGVlYmI4N2Y0NzZlMzUzOTcyYzVkYWNlYTQwKS4KCmNvbW1pdCBjNGU1ZjUyYTU4ZDI3OGVlYmI4N2Y0NzZlMzUzOTcyYzVkYWNlYTQwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IE1heSAzIDIyOjI1OjAwIDIwMDggKzAyMDAKCiAgICBjb25maWcubWs6IHVzZSBjb3JyZWN0IChjcm9zcykgY29tcGlsZXIKCiAgICBTb21lIGNvbmZpZy5tayBmaWxlcyByZWZlcmVuY2UgJChDQykgdG8gdGVzdCBmb3Igc3BlY2lmaWMgdG9vbCBjaGFpbgogICAgZmVhdHVyZXMsIHNvIG1ha2Ugc3VyZSAkKENDKSBnZXRzIHNldCBiZWZvcmUgaW5jbHVkaW5nIGFueSBzdWNoCiAgICBjb25maWcgZmlsZXMuCgogICAgVGhpcyBwYXRjaCByZXBsYWNlcyBjb21taXQgYjcxNjZlMDVhNSAoIkNvbGRGaXJlOiBHZXQgaW5mb3JtYXRpb24gZnJvbQogICAgdGhlIGNvcnJlY3QgR0NDIikuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAyN2MzODY4OWQwY2ZkZTBlNDQ0MjM5MzQ1Zjk3YjVlZWNjOWY0MDY3CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVGh1IE1heSAxIDAyOjEzOjQ0IDIwMDggKzAyMDAKCiAgICBweGE6IGZpeCBwcmV2aW91cyBkZWZpbml0aW9uIG9uIGNwdSBpbml0CgogICAgc3RhcnQuUzoxODM6MTogd2FybmluZzogIklDTVIiIHJlZGVmaW5lZAogICAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHN0YXJ0LlM6MzM6CiAgICBpbmNsdWRlL2FzbS9hcmNoL3B4YS1yZWdzLmg6OTM1OjE6IHdhcm5pbmc6IHRoaXMgaXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBwcmV2aW91cyBkZWZpbml0aW9uCiAgICBzdGFydC5TOjE4NzoxOiB3YXJuaW5nOiAiUkNTUiIgcmVkZWZpbmVkCiAgICAuLi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDZkMTJlNjk3ZGU3OTRkNzAwNzY3ZjIyZjk1MGUzMDI2Y2NmNGRhZjYKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUaHUgTWF5IDEgMDI6MTM6NDMgMjAwOCArMDIwMAoKICAgIHB4YTogZml4IHBjbWNpYSBvcGVyYXRpb24gb24gJ2knIG1heSBiZSB1bmRlZmluZWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0ZDc3ZjUxMDJkZmVhYTM2Y2Q1OGQ5YTlmMDgzYmQyY2M0OTE1MjZmCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEFwciAzMCAxNjoyNDozNSAyMDA4IC0wNTAwCgogICAgTVBDODYxMEhQQ0Q6IERyb3AgLU8yIGZyb20gdGhlIGJ1aWxkIGZsYWdzCgogICAgTWFrZSB0aGUgZmxhZ3MgdXNlIC1PcyBsaWtlIGFsbCBvdGhlciBib2FyZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDAwNzJiNzhiZTJiNDFlNWEwY2EzZGRjMzkzMzU1NzRkYzJlODU1YmQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBBcHIgMzAgMTU6NTA6MzkgMjAwOCArMDIwMAoKICAgIFJUQzogRml4IG1vbnRoIG9mZnNldCBieSBvbmUgcHJvYmxlbSBpbiBNNDFUNjIgUlRDIGRyaXZlcgoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBwcm9ibGVtIHdpdGggdGhlIG1vbnRoIGJlaW5nIHJlYWQgYW5kIHdyaXR0ZW4KICAgIGluY29ycmVjdGx5IChvZmZzZXQgYnkgb25lKS4gVGhpcyBvbmx5IGdldHMgdmlzaWJsZSBieSBhbHNvIHVzaW5nCiAgICB0aGUgTGludXggZHJpdmVyIChydGMtbTQxdDgwKS4KCiAgICBUZXN0ZWQgb24gQU1DQyBDYW55b25sYW5kcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMTQxYmExY2FkOGU2NTk4YTI0NjZlN2UyOTc2YzZhMTIyODVkZjYxOQpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVNhdCBNYXkgMyAxMzo1MTo0NCAyMDA4ICswOTAwCgogICAgW01JUFNdIGNwdS9taXBzL2NvbmZpZy5tazogRml4IEdOVSBhc3NlbWJsZXIgbWlub3IgdmVyc2lvbiBwaWNrZXIKCiAgICBDdXJyZW50IHRyaWNrIHRvIHBpY2sgdXAgR05VIGFzc2VtYmxlciBtaW5vciB2ZXJzaW9uIHVzZXMgYSBkb3QoLikgYXMgYQogICAgZGVsaW1pdGVyLCBhbmQgdGFrZSB0aGUgc2Vjb25kIGZpZWxkIHRvIG9idGFpbiBtaW5vciB2ZXJzaW9uIG51bWJlci4gQnV0CiAgICBhcyBjYW4gYmUgZXhwZWN0ZWQsIHRoaXMgZG9lc24ndCB3b3JrIHdpdGggYSB2ZXJzaW9uIHN0cmluZyB3aGljaCBoYXMKICAgIGRvdHMgbW9yZSB0aGFuIG5lZWRzLgoKICAgIEhlcmUncyBhbiBleGFtcGxlOgoKICAgICQgbWlwcy1saW51eC1nbnUtYXMgLS12ZXJzaW9uIHwgZ3JlcCAnR05VIGFzc2VtYmxlcicKICAgIEdOVSBhc3NlbWJsZXIgKFNvdXJjZXJ5IEcrKyBMaXRlIDQuMi0xMjkpIDIuMTguNTAuMjAwODAyMTUKICAgICQgbWlwcy1saW51eC1nbnUtYXMgLS12ZXJzaW9uIHwgZ3JlcCAnR05VIGFzc2VtYmxlcicgfCBjdXQgLWQuIC1mMgogICAgMi0xMjkpIDIKICAgICQKCiAgICBUaGlzIHBhdGNoIHJlc3RyaWN0cyB0aGUgdmVyc2lvbiBmb3JtYXQgdG8gMi5YWC5YWC4uLiBUaGlzIHdpbGwgd29yawogICAgaW4gbW9zdCBjYXNlcy4KCiAgICAkIG1pcHMtbGludXgtZ251LWFzIC0tdmVyc2lvbiB8IGdyZXAgJ0dOVSBhc3NlbWJsZXInIHwgZWdyZXAgLW8gJzJcLlswLTlcLl0rJwogICAgMi4xOC41MC4yMDA4MDIxNQogICAgJCBtaXBzLWxpbnV4LWdudS1hcyAtLXZlcnNpb24gfCBncmVwICdHTlUgYXNzZW1ibGVyJyB8IGVncmVwIC1vICcyXC5bMC05XC5dKycgfCBjdXQgLWQuIC1mMgogICAgMTgKICAgICQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IGVhNjM4OTUxYWNlYWQ3ZjEwODZjOTA4YzBiOWYwODZiZWFiODJhMjIKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglTYXQgTWF5IDMgMTM6NTE6MjggMjAwOCArMDkwMAoKICAgIFtNSVBTXSBjcHUvbWlwcy9jYWNoZS5TOiBBZGQgZGNhY2hlX2VuYWJsZQoKICAgIFJlY2VudCBib290ZWxmIGNvbW1hbmQgZml4ZXMgKDAxN2U5Yjc5MjVmNzQ4NzhkMGU5NDc1Mzg4Y2NhOWJkYTVlZjk0ODIsCiAgICAiYWxsb3cgcG9ydHMgdG8gb3ZlcnJpZGUgYm9vdGVsZiBiZWhhdmlvciIpIHJlcXVpcmVzIHBvcnRzIHRvIGhhdmUgdGhpcwogICAgZnVuY3Rpb24uCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KICAgIEFja2VkLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGQyYzZmYmVjNDM5N2M5MzZiMThjZDQyNDgyYjY5NzNjZDY3ODFiZGYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgTWF5IDEgMjE6MzA6MTYgMjAwOCArMDIwMAoKICAgIG9uZW5hbmQ6IHJlbmFtZSAxNiBiaXQgbWVtb3J5IGNvcHkgaW50byBtZW1jcHlfMTYoKSB0byBhdm9pZCBjb25mbGljdHMKCiAgICBPbmVuYW5kIG5lZWRzIGEgdmVyc2lvbiBvZiBtZW1jcHkoKSB3aGljaCBwZXJmb3JtcyAxNiBiaXQgYWNjZXNzZXMKICAgIG9ubHk7IG1ha2Ugc3VyZSB0aGUgbmFtZSBkb2VzIG5vdCBjb25mbGljdCB3aXRoIHRoZSBzdGFuZGFyZAogICAgZnVuY3Rpb24uCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAxMmJjNGU5NDI1MWMzNjljNTI5ZmZhNTA1Y2Y1OGIxNDhjMzcyZjdmCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIEFwciAzMCAyMjozODoxNyAyMDA4ICswMjAwCgogICAgY21kX25hbmQ6IGZpeCB3YXJuaW5nOiBzdHIybG9uZyBuY29tcGF0aWJsZSBwb2ludGVyIHR5cGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDFiOWVkMjU3NGEzOGM5M2NiMDNkYWQ0MTg4NWZjMDZiZTRiZmM5ZGQKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgQXByIDQgMTE6MTY6MTEgMjAwOCAtMDUwMAoKICAgIEZpeCBjYWxjdWxhdGlvbiBvZiBJMkMgY2xvY2sgZm9yIHNvbWUgODZ4eCBjaGlwcwoKICAgIFNvbWUgODZ4eCBjaGlwcyB1c2UgQ0NCIGFzIHRoZSBiYXNlIGNsb2NrIGZvciB0aGUgSTJDLCBhbmQgb3RoZXJzIHVzZWQgQ0NCLzIuCiAgICBUaGVyZSBpcyBubyBwYXR0ZXJuIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHdoaWNoIGNoaXBzIHVzZSB3aGljaAogICAgZnJlcXVlbmN5LCBzbyB0aGUgb25seSB3YXkgdG8gZGV0ZXJtaW5lIGlzIHRvIGxvb2sgdXAgdGhlIGFjdHVhbCBTT0MKICAgIGRlc2lnbmF0aW9uIGFuZCB1c2UgdGhlIHJpZ2h0IHZhbHVlIGZvciB0aGF0IFNPQy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGYzMmY3ZmU3YmQzYTViZGEzYTQ3NjUyMGYwMGUxYWNhN2MyMTAzYTkKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXByIDMwIDEyOjExOjE5IDIwMDggLTA1MDAKCiAgICBDb2xkRmlyZTogRml4IGV0aGVybmV0IGhhbmcgaXNzdWUgZm9yIG1jZjU0N3hfOHgKCiAgICBUaGUgZXRoZXJuZXQgaGFuZyBpcyBjYXVzZWQgYnkgcmVjZWl2aW5nIGJ1ZmZlciBpbiBEUkFNIGlzIG5vdAogICAgeWV0IHJlYWR5IGR1ZSB0byBhY2Nlc3MgY3ljbGVzIHJlcXVpcmUgbG9uZ2VyIHRpbWUgaW4gRFJBTS4KICAgIFJlbG9jYXRlIERNQSBidWZmZXIgZGVzY3JpcHRvcnMgZnJvbSBEUkFNIHRvIGludGVybmFsIFNSQU0uCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4ODZkOTAxNzZmYzI1N2UwYWI0ZDBkYjA1ZDExZDA3NDliYmVkM2NhCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEFwciAzMCAxMjoxMDo0NyAyMDA4IC0wNTAwCgogICAgQ29sZEZpcmU6IEZpeCBjb21waWxhdGlvbiBpc3N1ZSBjYXVzZWQgYnkgbmV3IGNoYW5nZXMgaW4gZnNsX2kyYy5jCgogICAgU2lnbmVkLW9mZi1ieTogTHVpZ2kgQ29taW8gTWFudGVsbGluaSA8bHVpZ2kubWFudGVsbGluaUBpZGYtaGl0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjcxNjZlMDVhNTEzYzA4MDZiNjNiOWRmYjZmMWQ3NzY0NWNlZGUyYQpBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBcHIgMzAgMTI6MTA6MjMgMjAwOCAtMDUwMAoKICAgIENvbGRGaXJlOiBHZXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgY29ycmVjdCBHQ0MKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdXJ0IE1haGFuIDxrbWFoYW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzc4ZTdlYzk1ZGE0NzUxZWM4ZmU0NjFiYWFjYWIyYmY3ZDI1MTJhOQpBdXRob3I6IGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20gPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVdlZCBBcHIgMzAgMTg6MDI6NTkgMjAwOCArMDIwMAoKICAgIEZpeCB3YXJuaW5nIGluIGVudl9uYW5kLmMgaWYgY29tcGlsZWQgZm9yIERhVmluY2kgU2NobW9vZ2llCgogICAgRml4IHdhcm5pbmdzCgogICAgbnZfbmFuZC5jOiBJbiBmdW5jdGlvbiAnc2F2ZWVudic6CiAgICBlbnZfbmFuZC5jOjIwMDogd2FybmluZzogcGFzc2luZyBhcmd1bWVudCAzIG9mICduYW5kX3dyaXRlJyBmcm9tIGluY29tcGF0aWJsZSBwb2ludGVyIHR5cGUKICAgIGVudl9uYW5kLmM6IEluIGZ1bmN0aW9uICdlbnZfcmVsb2NhdGVfc3BlYyc6CiAgICBlbnZfbmFuZC5jOjI3NTogd2FybmluZzogcGFzc2luZyBhcmd1bWVudCAzIG9mICduYW5kX3JlYWQnIGZyb20gaW5jb21wYXRpYmxlIHBvaW50ZXIgdHlwZQoKICAgIGlmIGNvbXBpbGVkIGZvciBkYXZpbmNpX3NjaG1vb2dpZV9jb25maWcuCgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnbWFpbC5jb20+CiAgICBBY2sgYnk6IFNlcmdleSBLdWJ1c2h5biA8a3NpQGtvaTgubmV0PgoKY29tbWl0IDMzYTRhNzBkNDhkNjIyY2M0OTUwYzYwYTg0ZmVjMjNiOTQyMWYyM2UKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CVdlZCBBcHIgMzAgMTM6MzQ6NDAgMjAwOCArMDIwMAoKICAgIEZpeCB3YXJuaW5ncyB3aGlsZSBjb21waWxpbmcgbmV0L25ldC5jIGZvciBNUEM4NjEwSFBDRCBib2FyZAoKICAgIE1QQzg2MTBIUENEIGJvYXJkIGFkZHMgLU8yIGdjYyBvcHRpb24gdG8gUExBVEZPUk1fQ1BQRkxBR1MKICAgIGNhdXNpbmcgb3ZlcnJpZGluZyBkZWZhdWx0IC1PcyBvcHRpb24uIE5ldyBnY2MgKHZlci4gNC4yLjIpCiAgICBwcm9kdWNlcyB3YXJuaW5ncyB3aGlsZSBjb21waWxpbmcgbmV0L25ldC5jIGZpbGUgd2l0aCAtTzIKICAgIG9wdGlvbi4gVGhlIHBhdGNoIGlzIGFuIGF0dGVtcHQgdG8gZml4IHRoaXMuCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IDU4YjU3NWU1NzVjMjVmZGY4Yzg4MTQxZTE0NWRiMjAxZjMwOTIxNDkKQXV0aG9yOiBTYXNjaGEgTGF1ZSA8U2FzY2hhLkxhdWVAZ214LmJpej4KRGF0ZToJV2VkIEFwciAzMCAxNToyMzozOCAyMDA4ICswMjAwCgogICAgbHdtb241OiBmaXggb2Zmc2V0IGVycm9yIGluIHN5c21vbjAgUE9TVAoKICAgIFNpZ25lZC1vZmYtYnk6IFNhc2NoYSBMYXVlIDxzYXNjaGEubGF1ZUBsaWViaGVyci5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGU3NDE5YjI0M2EzNzNkZTRlZTA0MmY3ZDRmNDVmNjZkZTc4NzI0MGQKQXV0aG9yOiBTYXNjaGEgTGF1ZSA8U2FzY2hhLkxhdWVAZ214LmJpej4KRGF0ZToJV2VkIEFwciAzMCAxNToxNjozNSAyMDA4ICswMjAwCgogICAgbHdtb241OiBmaXggbWFudWFsIG1lcmdlIGVycm9yIGluIFBPU1QKCiAgICBTaWduZWQtb2ZmLWJ5OiBTYXNjaGEgTGF1ZSA8c2FzY2hhLmxhdWVAbGllYmhlcnIuY29tPgoKY29tbWl0IDQyZmZjZWMzZjllYmEwMTBhNjYyZDViNDI5ODE4MTJiNmJlYmZiOWEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgQXByIDMwIDE3OjQ2OjI2IDIwMDggKzAyMDAKCiAgICBjbWRfbmFuZC5jOiBmaXggYW5vdGhlciAnaW5jb21wYXRpYmxlIHBvaW50ZXIgdHlwZScgd2FybmluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGRlMTA5ZDkwOTcwN2UyZGZlODA2YmU1ZWZjM2NkYjEwM2I0N2M4YWQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgQXByIDMwIDE3OjI1OjA3IDIwMDggKzAyMDAKCiAgICBNYWtlZmlsZTogZml4IHBhcmFsbGVsIGJ1aWxkcwoKICAgIFRoaXMgcHJvYmxlbSBzaG93cyB1cCB3aXRoIHBhcmFsbGVsIGJ1aWxkcyBvbmx5OyBpdCByZXN1bHRzIGluCiAgICBzb21ld2hhdCBjcnlwdGljIGVycm9yIG1lc3NhZ2VzIGxpa2UKCgkkIEpPQlM9LWo2IE1BS0VBTEwgbmV0c3RhcgoJQ29uZmlndXJpbmcgZm9yIG5ldHN0YXIgYm9hcmQuLi4KCWFybS1saW51eC1sZDogY2Fubm90IGZpbmQgLWxnZW5lcmljCgltYWtlWzFdOiAqKiogW2VlcHJvbS5zcmVjXSBFcnJvciAxCgogICAgQSBmZXcgYm9hcmRzIChsaWtlIG5ldHN0YXIgYW5kIHZvaWNlYmx1ZSkgbmVlZCBzb21lIGxpYnJhcmllcyBmb3IKICAgIGJ1aWxkaW5nOyBob3dldmVyLCB0aGUgYm9hcmQgTWFrZWZpbGUgZG9lcyBub3QgY29udGFpbiBhbnkgc3VjaAogICAgZGVwZW5kZW5jaWVzIHdoaWNoIG1heSBjYXVzZSBwcm9ibGVtcyB3aXRoIHBhcmFsbGVsIGJ1aWxkcy4gQWRkaW5nCiAgICBzdWNoIGRlcGVuZGVuY2llcyBpcyBkaWZmaWN1bHQgYXMgd2Ugd291bGQgYWxzbyBoYXZlIHRvIHByb3ZpZGUgYnVpbGQKICAgIHJ1bGVzLCB3aGljaCBhbHJlYWR5IGV4aXN0IGluIHRoZSByZXNwZWN0aXZlIGxpYnJhcnkgTWFrZWZpbGVzLgoKICAgIFRvIHNvbHZlIHRoaXMsIHdlIG1ha2Ugc3VyZSB0aGF0IGFsbCBsaWJyYXJpZXMgZ2V0IGJ1aWx0IGJlZm9yZSB0aGUKICAgIGJvYXJkIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0ZjI3MDk4ZTViMDczNjk4OWIxM2NkNjFkN2JjYTk0YjM1NzRjZjVmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgQXByIDMwIDE0OjUxOjM2IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEFkYXB0IENhbnlvbmxhbmRzIGZpeGVkIEREUjIgc2V0dXAgdG8gbmV3IERJTU0gbW9kdWxlCgogICAgVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBDYW55b25sYW5kcy9HbGFjaWVyIGZpeGVkIEREUjIgY29udHJvbGxlciBzZXR1cAogICAgdXNlZCBmb3IgTkFORCBib290aW5nIHRvIG1hdGNoIHRoZSB2YWx1ZXMgbmVlZGVkIGZvciB0aGUgbmV3IDUxMk1CCiAgICBESU1NIG1vZHVsZXMgc2hpcHBlZCB3aXRoIHRoZSBwcm9kdWN0aW9ucyBib2FyZHM6CgogICAgQ3J1Y2lhbDogQ1Q2NDY0QUM2NjcuOEZCCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGVhOTIwMmE2NTlkYzc1OTk2ZmFjZjE0NzVmMTg2NmExOWE5ZDMxMjkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBBcHIgMzAgMTA6NDk6NDMgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRml4IHByb2JsZW0gd2l0aCBESU1NcyB3aXRoIDggYmFua3MgaW4gNDR4X3NwZF9kZHIyLmMKCiAgICBUaGlzIHBhdGNoIGZpeGVzIGEgcHJvYmxlbSB3aXRoIERJTU1zIHRoYXQgaGF2ZSA4IGJhbmtzLiBOb3cgdGhlCiAgICBNQ0lGMF9NQnhDRiByZWdpc3RlciB3aWxsIGJlIHNldHVwIGNvcnJlY3RseSBmb3IgdGhpcyBzZXR1cCB0b28uCgogICAgVGhpcyB3YXMgbm90aWNlZCB3aXRoIHRoZSA1MTJNQiBESU1NIG9uIENhbnlvbmxhbmRzL0dsYWNpZXIuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDc2NjE3Mjk5MzU4ZWJiYTI2MGVjYzAyZDMzZThlNzVkOGQxM2RkM2IKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgQXByIDI5IDIzOjQxOjA2IDIwMDggKzAyMDAKCiAgICBQcmVwYXJlIHYxLjMuMy1yYzIsIGFnYWluLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYjdmY2M0YzEzOTkzNzgyMzQyY2Y1Y2QyMGQyMzdhNjI4MTY0OGEwYgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBBcHIgMjkgMjM6MzU6MjQgMjAwOCArMDIwMAoKICAgIFByZXBhcmUgdjEuMy4zLXJjMgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZjdiMTZhMGE0ZDU3MWRkMzNiMmI1MTg1YTU0ZjdkZGMzMTFmODlkNApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBBcHIgMjkgMjM6MzI6MjAgMjAwOCArMDIwMAoKICAgIGNvbW1vbi9lbnZfbmFuZC5jOiBmaXggb25lIG1vcmUgaW5jb21wYXRpYmxlIHBvaW50ZXIgdHlwZSBpc3N1ZQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZWE2ZjY2ODk0Zjk1MjIyOWVlYmZjNGFkMDNjZDIxZmU1YzhiM2YwZgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBBcHIgMjkgMjE6MzM6MDggMjAwOCArMDIwMAoKICAgIHBvc3QvYm9hcmQvbHdtb241L3N5c21vbi5jOiBmaXggbWFudWFsIG1lcmdlIGVycm9yLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNzBhMGY4MTQxMmIwYjE4YTZmZDBiZWE5NjA0NTFiYzZjMmNjYTQ5YQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBcHIgMjkgMTI6NTQ6NTkgMjAwOCAtMDUwMAoKICAgIDg1eHg6IEFkZCAtbW5vLXNwZSB0byBlNTAwLzg1eHggYnVpbGRzCgogICAgTmV3ZXIgZ2NjJ3MgbWlnaHQgYmUgY29uZmlndXJlZCB0byBlbmFibGUgYXV0b3ZlY3Rvcml6YXRpb24gYnkgZGVmYXVsdC4KICAgIElmIHdlIGhhcHBlbiB0byBidWlsZCB3aXRoIG9uZSBvZiB0aG9zZSBjb21waWxlcnMgd2Ugd2lsbCBnZXQgU1BFCiAgICBpbnN0cnVjdGlvbnMgaW4gcmFuZG9tIGNvZGUuCgogICAgLW1uby1zcGUgZGlzYWJsZXMgdGhlIGNvbXBpbGVyIGZvciBhdXRvbWF0aWNhbGx5IGdlbmVyYXRpbmcgU1BFCiAgICBpbnN0cnVjdGlvbnMgd2l0aG91dCBvdXIga25vd2xlZGdlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgOGVhMDhlNWJlNjk0MzZhYmNjOTVkM2RhMTE0ZGU0YTJmZjhhNmFiNQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBcHIgMjkgMTA6MTg6MzQgMjAwOCAtMDUwMAoKICAgIFVwZGF0ZSAuZ2l0aWdub3JlIGZvciB6bGliLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDQ1MjM5Y2Y0MTUyMTA5Y2FhOTI1MTQ1Y2NkNDMzNTI5OTAyZGY4ODcKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgQXByIDI5IDEwOjI3OjA4IDIwMDggLTA1MDAKCiAgICA4NXh4Lzg2eHg6IFJlbmFtZSBleHRfcmVmcmVjIHRvIHRpbWluZ19jZmdfMyB0byBtYXRjaCBkb2NzCgogICAgQWxsIHRoZSA4NXh4IGFuZCA4Nnh4IFVNIGRlc2NyaWJlIHRoZSByZWdpc3RlciBhcyB0aW1pbmdfY2ZnXzMKICAgIG5vdCBhcyBleHRfcmVmcmVjLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZWY3ZDMwYjE0Mzk0ZTRjNGExNTMxMThmNTg0NTc2MGNhZGFkYTAyYQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBcHIgMjkgMTA6Mjg6MzQgMjAwOCAtMDUwMAoKICAgIDg1eHgvODZ4eDogUmVuYW1lIEREUiBpbml0IGFkZHJlc3MgYW5kIGluaXQgZXh0ZW5kZWQgYWRkcmVzcyByZWdpc3RlcgoKICAgIFJlbmFtZSBpbml0X2FkZHIgYW5kIGluaXRfZXh0X2FkZHIgdG8gbWF0Y2ggdGhlIGRvY3MgYmV0d2VlbgogICAgODV4eCBhbmQgODZ4eC4gIEJvdGggbm93IHVzZSAnaW5pdF9hZGRyJyBhbmQgJ2luaXRfZXh0X2FkZHInLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgY2Y2Y2MwMTQyNzA1NDk2ODQ4NzNhNTk3MmQyNTk1MDUyYzQ2OGNiNgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBBcHIgMjggMDI6MjQ6MDQgMjAwOCAtMDUwMAoKICAgIDg1eHg6IEFkZGl0aW9uYWwgZml4ZXMgYW5kIGNsZWFudXAgb2YgTVAgY29kZQoKICAgICogYWRqdXN0IF9fc3Bpbl90YWJsZSBhbGlnbm1lbnQgdG8gbWF0Y2ggZVBBUFIgdjAuOTQgc3BlYwogICAgKiBsb29wIG92ZXIgYWxsIGNwdXMgd2hlbiBkZXRlcm1pbmcgd2hvIGlzIHVwLiAgVGhpcyBmaXhlcyBhbiBpc3N1ZSBpZgogICAgICB0aGUgImJvb3QgY3B1IiBpc24ndCBjb3JlMC4gIFRoZSAiYm9vdCBjcHUiIHdpbGwgYWxyZWFkeSBiZSBpbiB0aGUKICAgICAgY3B1X3VwX21hc2sgc28gdGhlcmUgaXMgbm8gaGFybQogICAgKiBBZGRlZCBzb21lIHByb3RlY3Rpb24gaW4gdGhlIGNvZGUgdG8gZW5zdXJlIHByb3BlciBiZWhhdmlvci4gIFRoZXNlCiAgICAgIGNoYW5nZXMgYXJlIGV4cGxpY2l0bHkgbmVlZGVkIGJ1dCBkb24ndCBodXJ0OgogICAgICAtIEFkZGVkIGVpZWlvIHRvIGVuc3VyZSB0aGUgImhvdCB3b3JkIiBvZiB0aGUgdGFibGUgaXMgd3JpdHRlbiBhZnRlcgoJYWxsIG90aGVyIHRhYmxlIHVwZGF0ZXMgaGF2ZSBvY2N1cnJlZC4KICAgICAgLSBBZGRlZCBpc3luYyB0byBlbnN1cmUgd2UgZG9uJ3QgcHJlZmV0Y2ggbG9hZGluZyBvZiB0YWJsZSBlbnRyaWVzCgl1bnRpbCB3ZSBhIHJlbGVhc2VkCgogICAgVGhlc2UgaXNzdWVzIHdlIHJhaXNlZCBieSBEYXZlIExpdS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGIyZDUyN2E4YjlmYjUwYWZjY2JhZjc5YjU1NDA5NTI1ODVjZGM3NjAKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CkRhdGU6CVR1ZSBBcHIgMjkgMTU6MDY6NDEgMjAwOCArMDIwMAoKICAgIGx3bW9uNTogbWlub3IgY2xlYW4tdXAgdG8gaW5jbHVkZS9jb25maWdzL2x3bW9uNS5oCgogICAgTFdNT041IERTUElDIFBPU1QgdXNlcyB0aGUgd2F0Y2gtZG9nIHNjcmF0Y2ggcmVnaXN0ZXIuIFNvLCBtYWtlCiAgICB0aGUgQ0ZHX0RTUElDX1RFU1RfQUREUiBkZWZpbml0aW9uIG1vcmUgcmVhZGFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgoKY29tbWl0IGY0YzRkMjFhODg1Y2NjMjIyZmQwYWNkZjY1M2I2ODMyNDllODUxMTcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBBcHIgMjkgMTY6MDg6MDUgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRml4IENGR19NT05JVE9SX0xFTiBvbiBLYXRtYWkgZmFpbHNhdmUgdGhpcyB0aW1lCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDEzODEwNWVmZTFkMmIxYTQwYTNhOTdiNGMxZjg1YzIxMTFiZWEyZDgKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CkRhdGU6CVR1ZSBBcHIgMjkgMTM6MzI6NDUgMjAwOCArMDIwMAoKICAgIHBwYyBmbHVzaF9jYWNoZTogYWRkIHdhdGNoLWRvZyB0cmlnZ2VyaW5nIGludG8gdGhlIGxvb3BzLgoKICAgIFNvbWUgYm9hcmRzIChlLmcuIGx3bW9uNSkgbmVlZCByYXRoZXIgYSBmcmVxdWVudCB3YXRjaC1kb2cKICAgIGtpY2tpbmcuIFNpbmNlIHRoZSB0aW1lIGl0IHRha2VzIGZvciB0aGUgZmx1c2hfY2FjaGUoKSBmdW5jdGlvbgogICAgdG8gY29tcGxldGUgaXRzIGpvYiBkZXBlbmRzIG9uIHRoZSBzaXplIG9mIGRhdGEgYmVpbmcgZmx1c2hlZCwgb25lCiAgICBtYXkgZW5jb3VudGVyIHdhdGNoLWRvZyByZXNldHMgb24gc3VjaCBib2FyZHMgd2hlbiwgZm9yIGV4YW1wbGUsCiAgICBkb3dubG9hZCBiaWcgZmlsZXMgb3ZlciBldGhlcm5ldC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgY2FiOTlkNmYzMjgxYWI2Nzg0ZmVjY2Y5OGI5YjQyNWRhYTU4NDE4YQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEFwciAyOSAxNDo0NDo1NCAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBGaXggY29tcGlsYXRpb24gd2FybmluZyBpbiBkZW5hbGlfc3BkX2RkcjIuYwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0ZWM5ZDc4ZmU1Y2Q1ODVkMjg2ODczMWZhMTA4Y2ExZTYyNzMwZTcwCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgQXByIDI5IDE0OjEyOjA3IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBLYXRtYWkgQ0ZHX01PTklUT1JfTEVOCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDg1YWQxODRiM2IyYjBmOGFmOTIyODQ3NzMwM2M1NWRjYTFiNTJlZDcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBBcHIgMjkgMTM6NTc6MDcgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogQ29tcGxldGUgcmVtb3ZlIGJvZ3VzIGRmbHVzaCgpCgogICAgU2luY2UgdGhlIGN1cnJlbnQgZGZsdXNoKCkgaW1wbGVtZW50YXRpb24gaXMga25vdyB0byBoYXZlIHNvbWUgcHJvYmxlbXMKICAgIChhcyBzZWVtIG9uIGx3bW9uNSBFQ0MgaW5pdCkgdGhpcyBwYXRjaCByZW1vdmVzIGl0IGNvbXBsZXRlbHkgYW5kIHJlcGxhY2VzCiAgICBpdCBieSB1c2luZyBjbGVhbl9kY2FjaGVfcmFuZ2UoKS4KCiAgICBUZXN0ZWQgb24gS2F0bWFpIHdpdGggRUNDIERJTU0uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDEzNTg0NmQ2ZWNhYWQyNTVhZDI4ZDkzZWJiYjc4YjNkNWRhNjhjZGMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBBcHIgMjkgMTM6MzY6NTEgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogQ2hhbmdlIEVDQyBpbml0aWFsaXphdGlvbiBvbiBsd21vbjUgdG8gdXNlIGNsZWFuX2RjYWNoZV9yYW5nZSgpCgogICAgQXMgaXQgc2VlbXMgdGhlICJvbGQiIEVDQyBpbml0aWFsaXphdGlvbiByb3V0aW5lIGJ5IHVzaW5nIGRmbHVzaCgpIGRpZG4ndAogICAgd3JpdGUgYWxsIGxpbmVzIGluIHRoZSBkY2FjaGUgYmFjayB0byBtZW1vcnkgb24gbHdtb241LiBUaGlzIGNvdWxkIGxlYWQKICAgIHRvIEVDQyBlcnJvciB1cG9uIExpbnV4IGJvb3RpbmcuIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgcHJvZ3JhbV9lY2MoKQogICAgcm91dGluZSB0byBub3cgdXNlIGNsZWFuX2RjYWNoZV9yYW5nZSgpIGluc3RlYWQgb2YgZGZsdXNoKCkuCiAgICBjbGVhbl9kY2FjaGVfcmFuZ2UoKSB1c2VzIGRjYnN0IHdoaWNoIGlzIGV4YWN0bHkgd2hhdCB3ZSB3YW50IGluIHRoaXMKICAgIGNhc2UuCgogICAgU2luY2UgZGZsdXNoKCkgaXMga25vd24gaXMgY2F1c2UgcHJvYmxlbXMsIHRoaXMgcm91dGluZSB3aWxsIGJlCiAgICByZW1vdmVkIGNvbXBsZXRlbHkgYW5kIHJlcGxhY2VkIGJ5IGNsZWFuX2RjYWNoZV9yYW5nZSgpIHdpdGggYW4KICAgIGFkZGl0aW9uYWwgcGF0Y2guCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDE4ZWMxOWU0YWExYTA0NWRmYmYyYzdjMmUzMzk2MzQ4OGU5MmQ3NTcKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CkRhdGU6CU1vbiBBcHIgMjggMTg6MTk6MzQgMjAwOCArMDIwMAoKICAgIFBPU1Q6IGZpeCBNYWtlZmlsZXMgZm9yIG1wYzh4eCwgbHdtb24sIGFuZCBuZXR0YSBQT1NUcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgZWVhNWE3NDNhMjE5M2VmMmEwNWI5YmM2ZGM0NDdiYTI0MTQxNmYzNQpBdXRob3I6IE1hcmt1cyBCcnVubmVyIDxzdXBlci5maXJldHdpc3RlckBnb29nbGVtYWlsLmNvbT4KRGF0ZToJTW9uIEFwciAyOCAwODo0Nzo0NyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBGaXh1cCBlYmMgY2xvY2sgaW4gRkRUIGZvciA0MDVHUC9FUAoKICAgIE9uIHBwYzQwNUVQIGFuZCBwcGM0MDVHUCAoYXQgbGVhc3QpIHRoZSBlYmMgaXMgZGlyZWN0bHkgYXR0YWNoZWQgdG8gdGhlIHBsYgogICAgYW5kIG5vdCB0byB0aGUgb3BiLiBUaGlzIHBhdGNoIHdpbGwgdHJ5IHRvIGZpeHVwIC9wbGIvZWJjIGlmIC9wbGIvb3BiL2ViYwogICAgZG9lc24ndCBleGlzdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgQnJ1bm5lciA8c3VwZXIuZmlyZXR3aXN0ZXJAZ21haWwuY29tPgoKY29tbWl0IDJlZjc1MDNhNTkzYzc3YTgwYzJhMDU0MDExOTcwMjI3YzRiNjI3NzQKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUaHUgQXByIDI0IDA3OjU3OjE3IDIwMDggKzAyMDAKCiAgICBORTIwMDA6IEZpeCByZWdyZXNzc2lvbiBpbnRyb2R1Y2VkIGJ5IGU3MTAxODVhYWU5MCBvbiBub24gQVg4ODc5NgoKICAgIE1vdmUgbm9uLWlubGllZCBmdW5jdGlvbnMgaW50byBzcGVjaWZpYyBkcml2ZXJzIGZpbGUKICAgIFNldCBnZXRfcHJvbSBhcyB3ZWFrCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFZsYWQgTHVuZ3UgPHZsYWRAY29tc3lzLnJvPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA0MGNiOTBlZTJiOTdkYjFmNjk3ZTFiNTRmMTlhNTQ4ZmZjOTZkNzFiCkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglUaHUgQXByIDMgMTc6MDQ6MTkgMjAwOCArMDIwMAoKICAgIG5ldDogbWFrZSBBUlAgdGltZW91dCBjb25maWd1cmFibGUKCiAgICBDdXJyZW50bHkgdGhlIHRpbWVvdXQgd2FpdGluZyBmb3IgYW4gQVJQIHJlcGx5IGlzIGhhcmQgc2V0IHRvIDUgc2Vjb25kcy4KICAgIE9uIGkuTVgzMUFEUyBkdWUgdG8gYSBoYXJkd2FyZSAic3RyYW5nZW5lc3MiIHVwIHRvIGZvdXIgZmlyc3QgSVAgcGFja2V0cwogICAgdG8gdGhlIGJvYXJkcyBnZXQgbG9zdCwgd2hpY2ggdHlwaWNhbGx5IGFyZSBBUlAgcmVwbGllcy4gQnkgY29uZmlndXJpbmcKICAgIHRoZSB0aW1lb3V0IHRvIGEgbG93ZXIgdmFsdWUgd2Ugc2lnbmlmaWNhbnRseSBpbXByb3ZlIHRoZSBmaXJzdCBuZXR3b3JrCiAgICB0cmFuc2ZlciB0aW1lIG9uIHRoaXMgYm9hcmQuIFRoZSB0aW1lb3V0IGlzIHNwZWNpZmllZCBpbiBtaWxsaXNlY29uZHMsCiAgICBsYXRlciBpbnRlcm5hbGx5IGl0IGlzIGNvbnZlcnRlZCB0byBkZWNpc2Vjb25kcywgYmVjYXVzZSBpdCBoYXMgdG8gYmUKICAgIGNvbnZlcnRlZCB0byBoYXJkd2FyZSB0aWNrcywgYW5kIENGR19IWiByYW5nZXMgZnJvbSA5MDAgdG8gMjcwMDAwMDAgb24KICAgIGRpZmZlcmVudCBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAxM2UwYjhmN2NhOWQyOTI2N2JmMDFkN2EwMWU1MjFhMDUxN2FkY2UxCkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglUaHUgQXByIDMgMTM6MzY6MTggMjAwOCArMDIwMAoKICAgIG1pbm9yIGNzODkwMCBkcml2ZXIgY2xlYW4gdXAKCiAgICBSZW1vdmUgYSByZWR1bmRhbnQgcmVnaXN0ZXIgZGVmaW5pdGlvbiwgY2xlYW4gdXAgc29tZSBjb2Rpbmcgc3R5bGUKICAgIHZpb2xhdGlvbnMuCgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA3MDdmYTkxN2NjYTI0YzBmMjI3NzZmNDhhYzRhNmZhNWU1MTg5YjEwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIEFwciAyOCAyMjowMTowNCAyMDA4ICswMjAwCgogICAgamZmczJfMXBhc3MuYzogZml4IGluY29tcGF0aWJsZSBwb2ludGVyIHR5cGUgd2FybmluZwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNmFlZTAwZjVlNmExY2YyOWQ4ZmU4ZmRjOWI3MjUyZmJkMzExMTVkOQpBdXRob3I6IFNhc2NoYSBMYXVlIDxTYXNjaGEuTGF1ZUBnbXguYml6PgpEYXRlOglUdWUgQXByIDEgMTA6MTA6MTggMjAwOCArMDIwMAoKICAgIGx3bW9uNTogdXBkYXRlIGRzUElDIFBPU1Qgc3BlemlmaWNhdGlvbgoKICAgIFRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgbHdtb241IGJvYXJkIGRzUElDIFBPU1QgZ290IGNoYW5nZWQuCiAgICBBbHNvIGFkZCBkZWZpbmVzIGZvciB0aGUgdGVtcGVyYXR1cmVzICBhbmQgdm9sdGFnZXMuCgogICAgU2lnbmVkLW9mZi1ieTogU2FzY2hhIExhdWUgPHNhc2NoYS5sYXVlQGxpZWJoZXJyLmNvbT4KCmNvbW1pdCAzZTQ2MTVhYjdmZjM4NzgxYTVkZDgwZDBmNDliOWFmNTViNGZlMGI3CkF1dGhvcjogU2FzY2hhIExhdWUgPFNhc2NoYS5MYXVlQGdteC5iaXo+CkRhdGU6CVR1ZSBBcHIgMSAxNToxMzowMyAyMDA4ICswMjAwCgogICAgRml4IHdhdGNoZG9nIFBPU1QgZm9yIGx3bW9uNQoKICAgIElmIHRoZSBoYXJkd2FyZSB3YXRjaGRvZyBkZXRlY3RzIGEgdm9sdGFnZSBlcnJvciwgdGhlIHdhdGNoZG9nIHNldHMKICAgIEdQSU82MiB0byBsb3cuIFRoZSB3YXRjaGRvZyBQT1NUIGhhcyB0byBkZXRlY3QgdGhpcyBsb3cgbGV2ZWwuCgogICAgU2lnbmVkLW9mZi1ieTogU2FzY2hhIExhdWUgPGxlZ2xhczBAbGVncGMxODAubGVnLmxpZWJoZXJyLmk+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGRkNTc0OGJjZDY2OWY0NmFlYjY2ODZjMWIzNDEzMjM4NDM3MzhjY2MKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGcubGlha2hvdmV0c2tpQGdteC5kZT4KRGF0ZToJTW9uIEFwciAyOCAxNDozNzoxNCAyMDA4ICswMjAwCgogICAgcnRsODE2OTogZml4IGNvbXBpbGVyIHdhcm5pbmdzCgogICAgRml4IG11bHRpcGxlIGNvbXBpbGVyIHdhcm5pbmdzIHJlbGF0ZWQgdG8gYXJndW1lbnQgdHlwZSBtaXNtYXRjaC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGcubGlha2hvdmV0c2tpQGdteC5kZT4KCmNvbW1pdCA0MTNiZjU4NjI2NmY4NmM2YmRiYzZjNmQxNDBmNjdhMTVhZjRjNGYxCkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxnLmxpYWtob3ZldHNraUBnbXguZGU+CkRhdGU6CU1vbiBBcHIgMjggMTQ6MzY6MDYgMjAwOCArMDIwMAoKICAgIElERTogZml4IGNvbXBpbGVyIHdhcm5pbmdzCgogICAgVGhlIElERSBkcml2ZXIgY2FuIHVzZSAzMi1iaXQgYWRkcmVzc2VzIGluIExCQSBtb2RlLCBpbiB3aGljaCBjYXNlIGl0CiAgICBzcGl0cyBtdWx0aXBsZSB3YXJuaW5ncyBkdXJpbmcgY29tcGlsYXRpb24uIEZpeCB0aGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8Zy5saWFraG92ZXRza2lAZ214LmRlPgoKY29tbWl0IGRiOTA4NGRlMjhjNDZhYzgxYzhmNjgxNzIyY2IwZDc0MTFiZTRkN2YKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGcubGlha2hvdmV0c2tpQGdteC5kZT4KRGF0ZToJTW9uIEFwciAyOCAxNDozNTo1NyAyMDA4ICswMjAwCgogICAgTGlua1N0YXRpb246IGZpeCBjb21waWxlciB3YXJuaW5nLCBhZGQgYSBtYWludGFpbmVyCgogICAgb3V0Xzggd2FudHMgYSBwb2ludGVyIHRvIGFuIHVuc2lnbmVkIGFzIHRoZSBmaXJzdCBhcmd1bWVudC4gQWRkIGEKICAgIG1haW50YWluZXIgZm9yIExpbmtzdGF0aW9uIGJvYXJkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGcubGlha2hvdmV0c2tpQGdteC5kZT4KCmNvbW1pdCBjNzFhYmJhM2NiNjdiMDYzZjc4OWYxN2FiZjZjNzQ0NzcyN2MwY2Q1CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIEFwciAyOCAxNDo1NToxMiAyMDA4ICswMjAwCgogICAgY21kX25hbmQuYzogZml4ICJkaWZmZXIgaW4gc2lnbmVkbmVzcyIgcHJvYmxlbQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZjJjMjg4YTM1MzQxYWQwMmFjMDNiMTU2M2Q3ODY3NjNjOWM4ZjE1OQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBBcHIgMjggMTI6NDg6NDcgMjAwOCArMDIwMAoKICAgIHBjbmV0LmM6IGZpeCBhIG1lcmdlIGlzc3VlCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0Y2E3OWY0NzdlYmQyNWE2ODcyZTYxOTZkODBlMmY1ZWZmNDQxMzc2CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIEFwciAyOCAxMjowODoxOCAyMDA4ICswMjAwCgogICAgTkFORDogZml4IHNvbWUgc3RyaWN0LWFsaWFzaW5nIGNvbXBpbGVyIHdhcm5pbmdzCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1Y2QwMTMwZWNjNzlkNmRjZGUxYjFhYzI1M2FiYzQ1N2NhOGMzMTE1CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gQXByIDI4IDExOjM3OjE0IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBjb21waWxlIHdhcm5pbmcgb2YgaGN1NCBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1Mzc5Y2QxNWRkNmM3NGFjNTE0OTliY2UzNDU1YmY2ZTBjZGJlOWYxCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIEFwciAyOCAxMTozMToyMyAyMDA4ICswMjAwCgogICAgTVBDODMyM0VSREI6IGZpeCBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnbWFjX3JlYWRfZnJvbV9lZXByb20nCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA3NjAyZWQ1MGEyZjBlZjNkYzhkN2RhOTNmMTE2ZGU1MDI4OGY1YjU5CkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglNb24gQXByIDI4IDAwOjI1OjMyIDIwMDggKzAyMDAKCiAgICBteDMxYWRzOiBmaXggbG9hZGFkZHIgZW52aXJvbm1lbnQgdmFyaWFibGUgZGVmaW5lCgogICAgQXJpdGhtZXRpYyBleHByZXNzaW9ucyBkbyBub3QgZ2V0IGV2YWx1YXRlZCB1bmRlciBzdHJpbmdpZmljYXRpb24uIFJlbW92ZQogICAgZGVmYXVsdCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24sIGFkZCBESENQIGNvbW1hbmQgc3VwcG9ydC4gVGhhbmtzIHRvIEZlbGl4CiAgICBSYWRlbnNreSBmb3IgcmVwb3J0aW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCAxNDRlZWM3NzdhYzA3YmNiMTJiZDM4MjQ1YTVhMjg5ZjY5NGE3Zjk4CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIEFwciAyOCAxMDo1NToyNCAyMDA4ICswMjAwCgogICAga2F0bWFpOiBmaXggc2VjdGlvbiBvdmVybGFwIHByb2JsZW0KCiAgICBTaW5jZSB3ZSBkaWRuJ3Qgd2FudCB0byByZW1vdmUgZmVhdHVyZXMgZnJvbSB0aGUgY29uZmlndXJhdGlvbiwgd2UKICAgIGRlY2lkZWQgdG8gaW5jcmVhc2UgdGhlIFUtQm9vdCBpbWFnZSBzaXplIChhZGQgb25lIGZsYXNoIHNlY3RvcikuCgogICAgQWxzbyBjaGFuZ2VkIHRoZSBkZWZhdWx0IGVudmlyb25tZW50IGRlZmluaXRpb24gdG8gbWFrZSBpdAogICAgaW5kZXBlbmRlbnQgb2Ygc3VjaCBjaGFuZ2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDk0MWQ2OTZkMjU2MjRlM2NjNjVlYmY5MjQxOTk1NDFhY2Y1MmQ3NGUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gQXByIDI4IDEwOjU1OjI0IDIwMDggKzAyMDAKCiAgICBrYXRtYWk6IGZpeCBzZWN0aW9uIG92ZXJsYXAgcHJvYmxlbQoKICAgIFNpbmNlIHdlIGRpZG4ndCB3YW50IHRvIHJlbW92ZSBmZWF0dXJlcyBmcm9tIHRoZSBjb25maWd1cmF0aW9uLCB3ZQogICAgZGVjaWRlZCB0byBpbmNyZWFzZSB0aGUgVS1Cb290IGltYWdlIHNpemUgKGFkZCBvbmUgZmxhc2ggc2VjdG9yKS4KCiAgICBBbHNvIGNoYW5nZWQgdGhlIGRlZmF1bHQgZW52aXJvbm1lbnQgZGVmaW5pdGlvbiB0byBtYWtlIGl0CiAgICBpbmRlcGVuZGVudCBvZiBzdWNoIGNoYW5nZXMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDNjNmNkMzlmOTE4NDE0M2ZkOGM1Mzc4NzJiM2Q0YjJlMDNmMTQ2NgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVNhdCBBcHIgMjYgMTE6NDQ6NDQgMjAwOCAtMDUwMAoKICAgIHBvc3Q6IEZpeCBidWlsZGluZyB3aXRoIE89CgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmZDc1MzFjMWU5ZDU2YjllNWUwNmQyYzBlMDJiNzk4ZGFiNzJmNzBjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IEFwciAyNiAwMTo1NTowMCAyMDA4ICswMjAwCgogICAgUHJlcGFyZSB2MS4zLjMtcmMxCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAxOWNmMmVjOTBkOGNlNTJkYTYwYzE2OTM2OTNjNDA0OGNiODEwOTY3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IEFwciAyNiAwMToyNTozOSAyMDA4ICswMjAwCgogICAgcG9zdC9NYWtlZmlsZTogbWFrZSBzdXJlIHRvIHVzZSB0aGUgY29ycmVjdCBmbGFncwoKICAgIEFSRkxBR1Mgd2FzIG5vdCBzZXQsIHdoaWNoIGNhdXNlZCAicHBjXzh4eC1hcjogY3JlYXRpbmcgbGliZ2VucG9zdC5hIgogICAgbWVzc2FnZXMgdG8gYmUgcHJpbnRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDdlZDQwMTE3MzNlN2RjYThmNjRkMjEyOTFlNDI5NDY2MmY3ZGMzZTIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgQXByIDI2IDAwOjM0OjQyIDIwMDggKzAyMDAKCiAgICBDb2RpbmcgU3R5bGUgY2xlYW51cCwgdXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZjkyMDRlMTUxNzM4MzRmZjhkMTIzZTM2Mjc5Y2U0OWMzYzZjNzRmYwpBdXRob3I6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KRGF0ZToJU3VuIEFwciAyMCAxMDozODoxMiAyMDA4ICswMjAwCgogICAgaS5NWDMxOiBFbmFibGUgU1BJIGFuZCBNQzEzNzgzL1JUQyBzdXBwb3J0IGZvciB0aGUgTGl0ZWtpdCBib2FyZAoKICAgIFRoaXMgcGF0Y2ggZW5hYmxlcyBTUEkgYW5kIE1DMTM3ODMvUlRDIHN1cHBvcnQgZm9yIHRoZSBMaXRla2l0IGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KCmNvbW1pdCBmOTdhYmJmYjQ3ZDllNDA3MzU0ZTE1N2NhZTNmNjM2OWU0NjBjZDM3CkF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEFwciAyNSAwMTowODozMiAyMDA4IC0wNTAwCgogICAgTVBDODU0NERTOiBkZWNvZGUgcGNpZTMgZW5kLXBvaW50IGNvbmZpZ3VyYXRpb24gY29ycmVjdGx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDI5MjE4OGUxNTUyM2MxNjVjNDI2OTQwM2ZkY2QzM2MyNmQ4OTE3NmUKQXV0aG9yOiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBBcHIgMjUgMDA6NTU6MDkgMjAwOCAtMDUwMAoKICAgIE1QQzg1NDREUzogUmVtb3ZlcyB0aGUgdW5rbm93biBmbGFzaCBtZXNzYWdlIGluZm9ybWF0aW9uCgogICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSB1bmtub3duIGZsYXNoIG1lc3NhZ2UgaW5mb3JtYXRpb246CiAgICAnIyMgVW5rbm93biBGTEFTSCBvbiBCYW5rIDEgLSBTaXplID0gMHhkZWFkYmVlZiA9IC0yODYyNjEyNDggTUInCiAgICBUaGlzIHVua25vd24gZmxhc2ggbWVzc2FnZSBpcyBjYXVzZWQgYnkgUHJvbUpldC4KICAgIFNvbWUgb2YgdGhlIGJvYXJkIHVzZXIgaXMgdW5oYXBweSB3aXRoIHRoaXMgaW5mb3JtYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBiMjExNTc1NzQwM2JlZWYwYWM2YmMyYzZjM2IyNGYzMTI1NmE3NWQyCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEFwciAyNCAxNDowNzozOCAyMDA4IC0wNTAwCgogICAgbXBjODN4eDogYnVtcCBsb2FkYWRkciBvdmVyIGZkdGFkZHIgdG8gMHg1MDAwMDAKCiAgICB0aGlzIHNlZW1zIGFzIGEgZ29vZCBjb21wcm9taXNlIGJldHdlZW4gaHVtYW4gbWVtb3J5LCB0eXBpbmcsCiAgICBhbmQgbGFzdCBidXQgbm90IGxlYXN0LCB0byBhY2NvbW1vZGF0ZSBmb3IgY3VycmVudCBhbmQgZnV0dXJlIGtlcm5lbCBibG9hdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYmU1YTcxOTAyNjVhMzRkOTY4NTc4ZmYyNjY1NDljNjBmNmY1NzY1NApBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEFwciAxNSAxMzoxMjoyMyAyMDA4ICswODAwCgogICAgbXBjODN4eDogY2xlYW4gdXAgdGhlIHJlYWRtZSBmb3IgODN4eCBib2FyZHMKCiAgICAxLiBjb3JyZWN0IHRoZSB0eXBvCiAgICAyLiBjb3JyZWN0IHRoZSBtZW1vcnkgbWFwIGZvciA4Mzd4ZXJkYiBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYmNhZTUyYTY4MTllZTlkYWQ1ZDBkOTZjZDdkYWViMjAxMDhkNDVmZgpBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEFwciAxNSAxMzoxMToxMSAyMDA4ICswODAwCgogICAgbXBjODN4eDogcmVtb3ZlIHRoZSB1bnVzZWQgQ1BNJ3Mgc3R1ZmYKCiAgICBUaGUgTVBDODN4eCBmYW1pbHkgbmV2ZXIgaGF2ZSBDUE0gYmxvY2ssIHNvIHJlbW92ZSBpdCBmcm9tIDgzeHguCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjNjNhZDYzMjVhOGFjMDA5N2E1NGI0MThhMzI4ODkyNmIwNDg0YjE4CkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CUZyaSBBcHIgMTggMTY6Mjk6NDAgMjAwOCArMDIwMAoKICAgIGNmaS1mbGFzaDogQWRkIENGR19GTEFTSF9BVVRPUFJPVEVDVF9MSVNUCgogICAgVGhpcyBwYXRjaCBhZGRzIGEgY29uZmlndXJhYmxlIGZsYXNoIGF1dG8gcHJvdGVjdGlvbiBsaXN0IHRoYXQgY2FuIGJlIHVzZWQKICAgIHRvIG1ha2UgVS1Cb290IHByb3RlY3QgZmxhc2ggcmVnaW9ucyBpbiBmbGFzaF9pbml0KCkuCgogICAgVGhlIGlkZWEgaGFzIGJlZW4gZGlzY3Vzc2VkIG9uIHRoZSB1LWJvb3QgbWFpbGluZyBsaXN0IHN0YXJ0aW5nCiAgICBvbiBOb3YgMTh0aCwgMjAwNy4KCiAgICBFdmVuIHRoaXMgcGF0Y2ggYnJpbmdzIGEgbmV3IGZlYXR1cmUgaXQgaXMgdXNlZCBhcyBhIGJ1Z2ZpeCBmb3IgNHh4CiAgICBwbGF0Zm9ybXMgd2hlcmUgZmxhc2hfaW5pdCgpIGRvZXMgbm90IGNvbXBsZXRlbHkgcHJvdGVjdCB0aGUKICAgIG1vbml0b3IncyBmbGFzaCByYW5nZSBpbiBhbGwgc2l0dWF0aW9ucy4KCiAgICBVLUJvb3QgcHJvdGVjdHMgdGhlIGZsYXNoIHJhbmdlIGZyb20gQ0ZHX01PTklUT1JfQkFTRSB0bwogICAgKENGR19NT05JVE9SX0JBU0UgKyBtb25pdG9yX2ZsYXNoX2xlbiAgLSAxKSBieSBkZWZhdWx0LiBUaGlzIGRvZXMgbm90CiAgICBpbmNsdWRlIHRoZSByZXNldCB2ZWN0b3IgYXQgMHhmZmZmZmZmYy4KCiAgICBFeGFtcGxlOgogICAgI2RlZmluZSBDRkdfRkxBU0hfQVVUT1BST1RFQ1RfTElTVCB7ezB4ZmZmODAwMDAsIDB4ODAwMDB9fQoKICAgIFRoaXMgY29uZmlnIG9wdGlvbiB3aWxsIGF1dG8gcHJvdGVjdCB0aGUgbGFzdCA1MTJrIG9mIGZsYXNoIHRoYXQKICAgIGNvbnRhaW5zIHRoZSBib290bG9hZGVyIG9uIGJvYXJkIGxpa2UgQVBDNDA1IGFuZCBQTUM0MDUuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgZDBkOTFhZTNhY2I0ZjI5ZDFhMmEzYTc2Njc0NzQ3OGVkNTRlMjg0OApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEFwciAyNSAxMzo1OTowMyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBSZW1vdmUgZG91YmxlIGRlZmluZXMgaW4gbHdtb241LmgKCiAgICBpbnRyb2R1Y2VkIHdpdGggbGF0ZXN0IGx3bW9uNS9QT1NUIG1lcmdlCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDc1OTAzNzhmYjljNjg2NzA5NDkyY2ViMTQyODI1Y2QwNTgyNTU5NTYKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglGcmkgQXByIDI1IDEzOjU0OjAyIDIwMDggKzAyMDAKCiAgICBVc2Ugd2F0Y2hkb2ctYXdhcmUgZnVuY3Rpb25zIHdoZW4gY2FsY3VsYXRpbmcgaGFzaGVzIG9mIGltYWdlcyAtIHRha2UgdHdvCgogICAgU29tZSBmaWxlcyBkaWRuJ3QgZ2V0IHVwZGF0ZWQgcHJvcGVybHkgd2l0aCB0aGUgIlVzZSB3YXRjaGRvZy1hd2FyZQogICAgZnVuY3Rpb25zIHdoZW4gY2FsY3VsYXRpbmcgaGFzaGVzIG9mIGltYWdlcyIgY29tbWl0LCB0aGlzIGNvbW1pdAogICAgZml4ZXMgdGhpcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA4ZTA0OGM0MzhlMjBlYzg5YjQ5ZGE1ZjA4NWY4Zjc1NmViYTZlNTg3CkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CUZyaSBBcHIgMjUgMTI6MDE6MzkgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogQWRkIGJvb3Rjb3VudCBsaW1pdCBoYW5kbGluZyBmb3IgQVBDNDA1IGJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDFkZTZiMjhiZTVkMTA3YWU5MGFkN2E4YTQzNjUzYzQ5OTY2ZThhZmUKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglGcmkgQXByIDI1IDEyOjEwOjA5IDIwMDggKzAyMDAKCiAgICBVc2Ugd2F0Y2hkb2ctYXdhcmUgZnVuY3Rpb25zIHdoZW4gY2FsY3VsYXRpbmcgaGFzaGVzIG9mIGltYWdlcwoKICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgZDAwY2UwOTA0MGQzMTAwZTJjNzk5OGVmNTZkYjYyYzJkMjBkOWVlMwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBBcHIgMjUgMTI6NDQ6MDggMjAwOCArMDIwMAoKICAgIFVTQjogZml4IG1vcmUgR0NDIDQuMi54IGFsaWFzaW5nIHdhcm5pbmdzCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgoKY29tbWl0IGFmZjRmODY0NDhmNjU4NjkzMGYwYTNiZTdmYzRiMGRkY2Y0NTA5ODAKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgQXByIDI1IDEyOjQxOjUzIDIwMDggKzAyMDAKCiAgICBsaWJfZ2VuZXJpYy9jcmMzMi5jOiBhZGQgbWlzc2luZyAjaW5jbHVkZSA8d2F0Y2hkb2cuaD4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDAzY2NkYmNkNTYwMjYxMGNlYTRiZDBkYjdlNDhlMWVmODgxYTUxZWYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgQXByIDI1IDExOjUyOjIxIDIwMDggKzAyMDAKCiAgICBsaWJfZ2VuZXJpYy9jcmMzMi5jOiBmaXggY29tcGlsZSBwcm9ibGVtCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAyNGJmZWRiZDBiZTRkY2FhOTQ4NjE0MDc4MjBkNmE3MGZlYTdlMDNiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgQXByIDIyIDEyOjIwOjMyIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IFBhc3MgUENJZSByb290LWNvbXBsZXgvZW5kcG9pbnQgY29uZmlndXJhdGlvbiB0byBMaW51eCB2aWEgdGhlIGZkdAoKICAgIFRoZSBQQ0llIHJvb3QtY29tcGxleC9lbmRwb2ludCBzZXR1cCBhcyBjb25maWd1cmVkIHZpYSB0aGUgInBjaWVfbW9kZSIKICAgIGVudmlyb25tZW50IHZhcmlhYmxlIHdpbGwgbm93IGdldCBwYXNzZWQgdG8gdGhlIExpbnV4IGtlcm5lbCBieSBzZXR0aW5nCiAgICB0aGUgZGV2aWNlX3R5cGUgcHJvcGVydHkgb2YgdGhlIFBDSWUgZGV2aWNlIHRyZWUgbm9kZS4gRm9yIG5vcm1hbCByb290LQogICAgY29tcGxleCBjb25maWd1cmF0aW9uIGl0IHdpbGwga2VlcCBpdHMgZGVmYXVsdHMgdmFsdWUgb2YgInBjaSIgYW5kIGZvcgogICAgZW5kcG9pbnQgY29uZmlndXJhdGlvbiBpdCB3aWxsIGdldCBjaGFuZ2VkIHRvICJwY2ktZW5kcG9pbnQiLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlYjA2MTViZjYwMGQyY2FmNWFhMjk1OGY0N2Y1YmEzNjRjNTJkNWU3CkF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgpEYXRlOglUaHUgQXByIDI0IDEwOjMwOjUzIDIwMDggKzAyMDAKCiAgICBsd21vbjU6IHdhdGNoZG9nIFBPU1QgZml4CgogICAgVXNlIHRoZSBHUFQwX01BU0t4IHJlZ2lzdGVycyBhcyB0aGUgdGVtcG9yYXJ5IHN0b3JhZ2UgZm9yIHdhdGNoLWRvZwogICAgdGltZXIgUE9TVCB0ZXN0IGluc3RlYWQgb2YgR1BUMF9DT01QeC4gVGhlIGxhdHRlcgogICAgKEdQVDBfQ09NUDEuLkdQVDBfQ09NUDUpIGFyZSB1c2VkIGZvciB0aGUgbG9nLWJ1ZmZlciBoZWFkZXIuCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KCmNvbW1pdCA3OGU0ODgyOTg4MjRiYzE1MGI1ZjNlYmY3OTU4Y2Q3MWZhMmFmMWI5CkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEFwciAyMSAxODoxMDoxNCAyMDA4IC0wNTAwCgogICAgbGliX3BwYzogUmV2ZXJ0ICJNYWtlIE1QQzgzeHggb25lIHN0ZXAgY2xvc2VyIHRvIGZ1bGwgcmVsb2NhdGlvbi4iCgogICAgVGhpcyByZXZlcnRzIGNvbW1pdCA3MDQzMWU4YTczOTNiNmI3OTNmNzc5NTdmOTViOTk5ZmM5YTI2OWI4IHdoaWNoIGhhcwogICAgcHJvdmVuIHByb2JsZW1hdGljIGdldHRpbmcgcmlnaHQgZnJvbSB0aGUgc3RhcnQgYXQgbGVhc3Qgb24gODN4eCBhbmQKICAgIDR4eC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGE5OTcxNWI4ZWJmYzUwMGYzZjQwZTAxYjM2YjY0ZDQ3MzkzODQ0M2QKQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KRGF0ZToJRnJpIEFwciAxOCAxNDo1MDowMSAyMDA4ICswMjAwCgogICAgUmVhbGluaW5nIHNvbWUgaGVhZGVyIGRlZmluaXRpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgoKY29tbWl0IDRhY2JjNmM3Zjk5M2NhZTQwOWM0MjQ2MTU0MTVhM2U3NjgyMGYxM2QKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUaHUgQXByIDI0IDA3OjU3OjE2IDIwMDggKzAyMDAKCiAgICBORTIwMDA6IGNvZGluZyBzdHlsZSBjbGVhbnVwCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBiNGFmZjFmZmFmNzEyMDAzMmM2NTMzNTdjMDA3ZmFhMTRmNzRkMjlkCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIEFwciAyMyAwMDoxMTo0NyAyMDA4ICswOTAwCgogICAgcWVtdS1taXBzLmg6IEFkZCBDRkkgc3VwcG9ydAoKICAgIENPTkZJR19FTlZfT1ZFUldSSVRFIGlzIGFsc28gYWRkZWQuCgogICAgVGhpcyBwYXRjaCBpcyBvcmlnaW5hbGx5IGNyZWF0ZWQgYnkgSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQuCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgNGExZjExYjQ1YTgyOTA4ZTViMGRmNjAyZDcwMzA4MjQxM2E2YjdlZApBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVR1ZSBBcHIgMjIgMjI6NDc6MjcgMjAwOCArMDkwMAoKICAgIGRvYy9SRUFETUUubWlwczogQWRkIE1JUFMgbm90ZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IDIxNWIwMWJiYThiYzY2MmQzNWY3MmIwODQ3MDBiMTkyZDM2N2RmYjQKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgQXByIDIyIDEyOjI3OjU2IDIwMDggKzAyMDAKCiAgICBBZGQgc3VwcG9ydCBmb3IgY2FsY3VsYXRpbmcgaGFzaGVzIHdpdGggd2F0Y2hkb2cgdHJpZ2dlcmluZwoKICAgIEltcGxlbWVudCB3YXRjaG9kZy1hd2FyZSB2YXJpYW50cyBvZiBoYXNoIGNhbGN1bGF0aW9uIGZ1bmN0aW9uczoKICAgIC0gY3JjMzJfd2QoKQogICAgLSBtZDVfd2QoKQogICAgLSBzaGExX2NzdW1fd2QoKQogICAgVGhlIGFib3ZlIGZ1bmN0aW9ucyBjYWxjdWxhdGUgdGhlIGhhc2ggb2YgdGhlIGlucHV0IGJ1ZmZlciBpbiBjaHVua3MsCiAgICB0cmlnZ2VyaW5nIHRoZSB3YXRjaGRvZyBhZnRlciBwcm9jZXNzaW5nIGVhY2ggY2h1bmsuIFRoZSBjaHVuayBzaXplCiAgICBpcyBnaXZlbiBhcyBhIGZ1bmN0aW9uIGNhbGwgcGFyYW1ldGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgODg3NWUzYWJhYjk4NmRmOTMwMTY3Y2U1YzFhYzRmOTVkY2FjYzgxYwpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KRGF0ZToJV2VkIEFwciAyMyAxMTowMjoxMiAyMDA4ICswOTAwCgogICAgcWVtdS1taXBzOiBDbGVhbnVwIHdoaXRlc3BhY2UsIGluZGVudGF0aW9uLCBldGMuCgogICAgTm8gZnVuY3Rpb25hbCBjaGFuZ2UuCgogICAgVGhpcyBwYXRjaCB3YXMgb3JpZ2luYWxseSBzdWJtaXR0ZWQgYnkgSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQuCiAgICBUaGVuIEkgcmUtY3JlYXRlZCBmcm9tIHNjcmF0Y2gsIGFuZCBjaGFuZ2VkIG1vcmUgbGluZXMgdGhhbiB0aGUgb3JpZ2luYWwuCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgMzg2NTYzMTk3ZTNhNTBiMGU5N2FkOWFhZTg3ZjU3ZDlhYWI5MDlhYgpBdXRob3I6IFZsYWQgTHVuZ3UgPHZsYWRAY29tc3lzLnJvPgpEYXRlOglXZWQgT2N0IDEwIDIzOjAyOjA5IDIwMDcgKzAzMDAKCiAgICBGaXhlZCBwY25ldCBpb19iYXNlCgogICAgQnVzIGFuZCBwaHlzIGFkZHJlc3MgYXJlIG5vdCBhbHdheXMgdGhlIHNhbWUKCiAgICBTaWduZWQtb2ZmLWJ5OiBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4KCmNvbW1pdCAxMWVhMjZmZDFjYjYzYzkxNDAzZmUwNGE2ZWVhOTc1Y2Q0MTg2MDNmCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IEFwciAyNCAyMzo0NDoyNiAyMDA4ICswMjAwCgogICAgZHJpdmVycy9uZXQvcGNuZXQuYzogQ29kaW5nIFN0eWxlIGNsZWFudXAuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA4OTllZjdiODQ1NzhiN2NhZmFkZmQ3ODQ4OGMyZmQyYWFjOTNmNjM2CkF1dGhvcjogVmxhZCBMdW5ndSA8dmxhZEBjb21zeXMucm8+CkRhdGU6CVdlZCBPY3QgMTAgMjM6MDQ6MjMgMjAwNyArMDMwMAoKICAgIEFkZGVkIEFtNzlDOTcwQSBjaGlwIGlkIHRvIHBjbmV0CgogICAgU2lnbmVkLW9mZi1ieTogVmxhZCBMdW5ndSA8dmxhZEBjb21zeXMucm8+Cgpjb21taXQgMTdjOWRlNmJiMzNmNjc2ZWI3NzZkY2JmYzQ2ZmMxYjE0YzM4NzFhNQpBdXRob3I6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KRGF0ZToJU3VuIEFwciAyMCAxMDozNTowMyAyMDA4ICswMjAwCgogICAgaS5NWDMxOiBGaXggYXJjaGl0ZWN0dXJlIG51bWJlcnMgZm9yIEFEUyBhbmQgTGl0ZWtpdCBib2FyZHMKCiAgICBDb3JyZWN0IHRoZSBMaW51eCBhcmNoaXRlY3R1cmUgbnVtYmVyIGZvciBpLk1YMzEgTGl0ZWtpdCBhbmQgQURTIGJvYXJkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Cgpjb21taXQgZTdhZTg0ZDZjNzI4ODc5MGU4ODYzOWY1N2NiNjBkYWY4OWMxMTM2OQpBdXRob3I6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KRGF0ZToJU3VuIEFwciAyMCAxMDozNjozNiAyMDA4ICswMjAwCgogICAgaS5NWDMxOiBVc2Ugc3ltYm9saWMgbmFtZXMgZm9yIExpdGVraXQgbWVtYmFzZXMuCgogICAgVXNlIHN5bWJvbGljIG5hbWVzIGluc3RlYWQgb2YgaGFyZCBjb2RlZCBhZGRyZXNzZXMgZm9yIExpdGVraXQgbWVtYmFzZXMuCgogICAgU2lnbmVkLW9mZi1ieTogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgoKY29tbWl0IDJlZjFkOWI2MDMwZDAyZjU3NmIxYmNkOWZlYzk0OGU2MDI1MjIwMTIKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgQXByIDE5IDE3OjU5OjIwIDIwMDggKzAyMDAKCiAgICBGaXggc2hvd19ib290X3Byb2dyZXNzIHByb3RvdHlwZQoKICAgIGluIGNvbW1pdCBmYWQ2MzQwNzEgIm1ha2Ugc2hvd19ib290X3Byb2dyZXNzICgpIHdlYWsuIgogICAgc2hvd19ib290X3Byb2dyZXNzIGlzIHN1cHBvc2VkIHRvIGJlIGRlY2xhcmVkIGFzIHdlYWsgYnV0IGRlY2xhcmVkIGFzCiAgICBpbmxpbmUgaW5zdGVhZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGVkYmVkMjQ3YTE0ZDcwYjk0OTU4MDEwZjczNjYyMTIxMjI4NWRlOTEKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglGcmkgQXByIDE4IDEyOjM5OjIzIDIwMDggKzAyMDAKCiAgICBNZW1vcnkgZm9vdHByaW50IG9wdGltaXphdGlvbnMKCiAgICBBcyBzdWdnZXN0ZWQgYnkgV29sZmdhbmcgRGVuazoKICAgIC0gaW1hZ2UgcHJpbnRpbmcgZnVuY3Rpb25zOgogICAgICAtIHJlbW92ZSB3cmFwcGVycwogICAgICAtIHJlbW92ZSBpbmRlbnRhdGlvbiBwcmVmaXggZnJvbSBmdW5jdGlvbnMnIHNpZ25hdHVyZXMKICAgIC0gbWVyZ2UgZ2V0ZW52X3ZlcmlmeSBhbmQgZ2V0ZW52X2F1dG9zdGFydCBpbnRvIG9uZSBwYXJhbWV0cml6ZWQgZnVuY3Rpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDBhMGI2MDZmYWFlYzRhZmIzZjc1MGIwOWFhNGRmMWU0MGEzOWRjYjgKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CkRhdGU6CVR1ZSBBcHIgMTUgMTM6MzM6MTEgMjAwOCArMDIwMAoKICAgIE1YMzFBRFMgZW52aXJvbm1lbnQgdmFyaWFibGUgdXBkYXRlLCBzcGkgYW5kIHJ0YyBzdXBwb3J0CgogICAgVXBkYXRlIE1YMzFBRFMgZGVmYXVsdCBlbnZpcm9ubWVudCB0byBiZXR0ZXIgbWF0Y2ggdGhlIGZsYXNoIGxheW91dCBhbmQKICAgIHRoZSBtZW1vcnkgbWFwLCBzdXBwb3J0IFNQSSBhbmQgUlRDLgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCAwMjJmMTIxNjM1OTViOWE1NTM4MGM2ZDc3YzMxMTliOTNkNmE5YTRiCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIEFwciAyMSAwOToyODozNiAyMDA4IC0wNTAwCgogICAgODV4eDogUm91bmQgdXAgZnJlcXVlbmN5IGNhbGN1bGF0aW9ucyB0byBnZXQgcmVhc29uYWJsZSBvdXRwdXQKCiAgICBlZy4gYmVjYXVzZSBvZiByb3VuZGluZyBlcnJvciB3ZSBjYW4gZ2V0IDc5OU1oeiBpbnN0ZWFkIG9mIDgwME1oei4KCiAgICBJbnRyb2R1Y2VkIERJVl9ST1VORF9VUCBhbmQgcm91bmR1cCB0YWtlbiBmcm9tIGxpbnV4IGtlcm5lbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEZWphbiBNaW5pYyA8bWluaWNAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNyaWthbnRoIFNyaW5pdmFzYW4gPHNyaWthbnRoLnNyaW5pdmFzYW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDg3NmI4Zjk3ODk4MjIxNmFiNGEyMmRjZDllZmRkZmNkOWIwZTA0ZTYKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgQXByIDIzIDE2OjU4OjA0IDIwMDggLTA1MDAKCiAgICBmc2xfcGNpOiBPbmx5IG1vZGlmeSByZWdpc3RlcnMgaWYgd2UgaGF2ZSB0aGVtCgogICAgcG1lX21zZ19kZXQgZXhpc3RzIG9ubHkgb24gUENJZSBjb250cm9sbGVycyBvbmx5IHNldCBpdCBpZiB3ZSBhcmUgYSAiYnJpZGdlIi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDgzZmUzMjMzNDMzN2RlZjE2MGIzMDJhYTlkMTUyZDgwOGJmY2M2OGUKQXV0aG9yOiBNYXJrdXMgS2xvdHpiw7xjaGVyIDxta0BkZW54LmRlPgpEYXRlOglXZWQgQXByIDIzIDEwOjU3OjMzIDIwMDggKzAyMDAKCiAgICBVU0I6IHJlbW92ZSBhIGNwdSBidWcgd29ya2Fyb3VuZCBmb3IgYW4gdW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgZjk1NzU3NmNiNTNlNmNmYWI0MTI3MDljZmM4ZGIxYWZkMzlkMjFjMwpBdXRob3I6IE1hcmt1cyBLbG90emLDvGNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CVdlZCBBcHIgMjMgMTA6NTM6MjMgMjAwOCArMDIwMAoKICAgIFVTQjogZml4IHRob3NlIHBlc2t5IGFsaWFzaW5nIHdhcm5pbmdzIGlzc3VlZCBieSBnY2MtNC4yCgogICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgoKY29tbWl0IDg5Y2RhYjc4OGYzNzE2YjMzNWZlZmI2MGI4MzZlYmNmOTc1YWNlYWIKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBNYXIgMzEgMTE6MDI6MDEgMjAwOCAtMDQwMAoKICAgIGNyYzMyOiB1c2UgdWludDMyX3QgcmF0aGVyIHRoYW4gdW5zaWduZWQgbG9uZwoKICAgIFRoZSBlbnZjcmMuYyBkb2VzIHNpemVvZih1bnNpZ25lZCBsb25nKSB3aGVuIGNhbGN1bGF0aW5nIHRoZSBjcmMsIGJ1dAogICAgdGhpcyBpcyBkb25lIHdpdGggdGhlIGJ1aWxkIHRvb2xjaGFpbiBpbnN0ZWFkIG9mIHRoZSB0YXJnZXQgdG9vbAogICAgY2hhaW4sIHNvIGlmIHRoZSBidWlsZCBpcyBhIDY0Yml0IHN5c3RlbSBidXQgdGhlIHRhcmdldCBpcyAzMmJpdHMsCiAgICB0aGUgc2l6ZSB3aWxsIG9idmlvdXNseSBiZSB3cm9uZy4gVGhpcyBjb252ZXJ0cyBhbGwgdW5zaWduZWQgbG9uZwogICAgc3R1ZmYgcmVsYXRlZCB0byBjcmMzMiB0byB1aW50MzJfdCB0eXBlcy4gQ29tcGlsZSB0ZXN0ZWQgb25seTogb3V0cHV0CiAgICBvZiAuL3Rvb2xzL2VudmNyYyB3aGVuIHJ1biBvbiBhIDMyYml0IGJ1aWxkIHN5c3RlbSBtYXRjaGVzIHRoYXQgb2YgYQogICAgNjRiaXQgYnVpbGQgc3lzdGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIEFja2VkLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDgwYzQwYjc2NWIzNjQyZGRiOWYzMzkyYjc4OTg3MTVhYWI0NGEyOWMKQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgpEYXRlOglXZWQgTWFyIDI2IDA5OjUzOjI5IDIwMDggKzAxMDAKCiAgICBBUk06IERhdmluY2k6IEZpeCBETTY0NHggdGltZXIgb3ZlcmZsb3cgaGFuZGxpbmcgYW5kIGNsZWFudXAKCiAgICBGaXggQVJNIGJhc2VkIERhVmluY2kgRE02NDR4IHRpbWVyIG92ZXJmbG93IGhhbmRsaW5nIGFuZCBjbGVhbnVwIHRpbWVyIGNvZGUuCgogICAgQ2hhbmdlczoKCiAgICAtIFJlbW92ZSAqX21hc2tlZCgpIGZ1bmN0aW9ucyBhcyBub3RlZCBieSBXb2xmZ2FuZwoKICAgIC0gQWRhcHQgcmVnaXN0ZXIgbmFtaW5nIHRvIHJlY2VudCBUSSBzcGVjIChzcHJ1ZTI2LCBNYXJjaCAyMDA3KQoKICAgIC0gRml4IHJlc2V0X3RpbWVyKCkgaGFuZGxpbmcKCiAgICAtIEFzIHJlcG9ydGVkIGJ5IFBpZXRlciBbMV0gdGhlIG92ZXJmbG93IGZpeCBpbnRyb2R1Y2VkIGEgZGVsYXkgb2YgZmFjdG9yIDE2IChlLmcgMiBzZWNvbmRzIGJlY2FtZSAzMikuIFdoaWxlIHRoZSBvdmVyZmxvdyBmaXggaXMgYmFzaWNhbGx5IG9rYXksIGl0IG1pc3NlZCB0byBkaXZpZGUgdWRlbGF5IGJ5IDE2LCB0b28uIEZpeCB0aGlzLgoKICAgIFsxXSBodHRwOi8vYXJ0aWNsZS5nbWFuZS5vcmcvZ21hbmUuY29tcC5ib290LWxvYWRlcnMudS1ib290LzM4MTc5CgogICAgLSBSZW1vdmUgc29mdHdhcmUgZGl2aXNpb24gb2YgdGltZXIgY291bnQgdmFsdWUgKERJVih4KSBtYWNybykgYW5kIGRvIGl0IGluIGhhcmR3YXJlIChUSU1fQ0xLX0RJVikuCgogICAgTWFueSB0aGFua3MgdG8gVHJveSBLaXNreSA8dHJveS5raXNreUBib3VuZGFyeWRldmljZXMuY29tPiBhbmQgUGlldGVyIFZvb3J0aHVpanNlbiA8cGlldGVyLnZvb3J0aHVpanNlbkBQcm9kcml2ZS5ubD4gZm9yIHRoZSBoaW50cyAmIHRlc3RpbmchCgogICAgUGF0Y2ggaXMgY29tcGlsZSB0ZXN0ZWQgd2l0aCBkYXZpbmNpX2R2ZXZtICYgc29uYXRhICYgc2NobW9vZ2llIGNvbmZpZ3VyYXRpb24gYW5kIHRlc3RlZCBieSBQaWV0ZXIgb24gRGFWaW5jaSBFVk0gaGFyZHdhcmUuCgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnbWFpbC5jb20+CiAgICBBY2tlZC1ieTogUGlldGVyIFZvb3J0aHVpanNlbiA8cGlldGVyLnZvb3J0aHVpanNlbkBQcm9kcml2ZS5ubD4KCmNvbW1pdCBhNmU2ZmM2MTBlMzlkZWM0MWI3OTY4MDQxM2Q0ZWQzODE0NWJkM2M4CkF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KRGF0ZToJV2VkIEFwciA5IDE2OjA5OjQxIDIwMDggKzAyMDAKCiAgICBBZGRlZCB3YXRjaGRvZyB0cmlnZ2VyaW5nIGNhbGxzIGluIHRoZSAibXRlc3QiIHRlc3QgZnVuY3Rpb24uCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KCmNvbW1pdCBkMzJhODc0YjliNGMxZTk0OWVlMzhiZTc3OTBmNmJmNmQ2MTQzNDUxCkF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgpEYXRlOglTdW4gQXByIDYgMTk6MTk6MTQgMjAwOCArMDIwMAoKICAgIGx3bW9uNSB3YXRjaGRvZzogbGltaXQgdHJpZ2dlciByYXRlCgogICAgTGltaXQgdGhlIHJhdGUgb2YgaC93IHdhdGNoLWRvZyB0cmlnZ2VyaW5nIG9uIHRoZSBMV01PTjUgYm9hcmQgYnkKICAgIHRoZSBDT05GSUdfV0RfTUFYX1JBVEUgdmFsdWUuCgogICAgTm90ZSB0aGF0IGFuIGVhcmxpZXIgdmVyc2lvbiBvZiB0aGlzIHBhdGNoIHdoaWNoIHVzZWQgbWljcm9zZWNvbmRzCiAgICBpbnN0ZWFkIG9mIHRpY2tzIGRpcyBub3Qgd29yay4gVGhlIHByb2JsZW0gd2FzIHRoYXQgd2UgdXNlZAogICAgdXNlYzJ0aWNrcygpIHRvIGNvbnZlcnQgbWljcm9zZWNvbmRzIGludG8gdGlja3MuIHVzZWMydGlja3MoKSB1c2VzCiAgICBnZXRfdGJjbGsoKSwgd2hpY2ggaW4gdHVybiBjYWxscyBnZXRfc3lzX2luZm8oKS4gSXQgdHVybnMgb3V0IHRoYXQKICAgIHRoaXMgZnVuY3Rpb24gZG9lcyBhIGxvdCBvZiBwcm9sb25nZWQgb3BlcmF0aW9ucyAobGlrZSBkaXZpc2lvbnMpCiAgICB3aGljaCB0YWtlIHRvbyBtdWNoIHRpbWUgc28gd2UgZG8gbm90IHRyaWdnZXIgdGhlIHdhdGNoZG9nIGluIHRpbWUsCiAgICBhbmQgaXQgcmVzZXRzIHRoZSBzeXN0ZW0uCgogICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgoKY29tbWl0IDJkMmI5OTRhMzBiYjEwMDc3NGRjNzQ3YWU5ODY1YjdmOTUyODVhODgKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CkRhdGU6CU1vbiBNYXIgMzEgMTA6NTE6MzcgMjAwOCArMDIwMAoKICAgIFBPU1Q6IG1vdmUgQ09ORklHX1BPU1QgdG8gTWFrZWZpbGVzCgogICAgSW50cm9kdWNlIHRoZSBuZXcgbG9naWNhbCBvcHRpb24gQ09ORklHX0hBU19QT1NUIHdoaWNoIGlzIHNldCB3aGVuIHRoZQogICAgcGxhdGZvcm0gaGFzIENPTkZJR19QT1NUIHNldC4gVXNlIENPTkZJR19IQVNfUE9TVCBpbiB0aGUgcG9zdC8gTWFrZWZpbGVzCiAgICB0byBkZXRlcm1pbmUgc2hvdWxkIHRoZSBQT1NUIGxpYnMgYmUgY29tcGlsZWQgZm9yIHRoZSBzZWxlY3RlZCB0YXJnZXQKICAgIHBsYXRmb3JtLCBvciBub3QuCgogICAgVG8gYXZvaWQgYnJlYWtpbmcgdS1ib290IGxpbmtpbmcgcHJvY2VzcywgdGhlIGVtcHR5IHBvc3QvbGlicG9zdC5hIGZpbGUgaXMKICAgIGNyZWF0ZWQgZm9yIHBsYXRmb3JtcyB3aGljaCBkbyBub3QgaGF2ZSBQT1NUcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDBhNTFlOTI0OGUyZDI3ZTBhMDJlZjFlNzQwYzU3NmNlOTBhMzllZTEKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CkRhdGU6CU1vbiBNYXIgMzEgMTA6NDk6MzQgMjAwOCArMDIwMAoKICAgIFBPU1Q6IHByZXBhcmF0aW9ucyBmb3IgbW92aW5nIENPTkZJR19QT1NUIHRvIE1ha2VmaWxlcwoKICAgIFJlbW92ZSBDT05GSUdfUE9TVCBpZmRlZnMgZnJvbSB0aGUgcG9zdC8gc291cmNlIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNWQ0MGQ0NDMwZDllYmM4NDM0YzZmMDc5ODU5NDgzNmUxZWZhN2ExZQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEFwciAyMiAxNDoxNDoyMCAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBGaXggQ2FueW9ubGFuZHMgYW5kIEdsYWNpZXIgZGVmYXVsdCBlbnZpcm9ubWVudCBmb3IgZmR0IHVzYWdlCgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgQ2FueW9ubGFuZHMgYW5kIEdsYWNpZXIgZGVmYXVsdCBlbnZpcm9ubWVudCB0byBiZXR0ZXIKICAgIGZpdCB0byB0aGUgYXJjaC9wb3dlcnBjIGRldmljZS10cmVlIGtlcm5lbHMuIFRoZSB2YXJpYWJsZXMgZGVhbGluZyB3aXRoCiAgICBhcmNoL3BwYyBib290aW5nIGFyZSByZW1vdmVkLCBzaW5jZSB0aGVzZSBib2FyZHMgYXJlIHN1cHBvcnRlZCBvbmx5IGluCiAgICBhcmNoL3Bvd2VycGMuIEdsYWNpZXIgdXNlcyB0aGUgc2FtZSBjb25maWcgZmlsZSBhcyBDYW55b25sYW5kcy4KCiAgICBBbHNvLCB0aGUgR2xhY2llciBub3cgdXNlcyBub24tRlBVIHJvb3RwYXRoLCBzaW5jZSA0NjBHVCBoYXMgbm8gRlBVLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBiNzg5Y2I0YTRjMGMxZGVmZjgyMDUzNTM5Y2ZlMjlhOWM2ZTIzZjhiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgQXByIDIyIDE0OjA2OjQyIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IFNtYWxsIGNvZGluZyBzdHlsZSBjbGVhbnVwIGZvciB0aGUgbGF0ZXN0IGVzZCBwYXRjaGVzCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDc5OTQxZDYzYmMwM2FlZDhjNDhkNzYwMmYxODIxN2NjMjAwZWU5MzEKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJTW9uIEFwciAyMSAxODowMTowNyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgQ1BVIHN0cmFwcGluZyBmb3IgUE1DNDQwIGJvYXJkcwoKICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgdGVtcG9yYXJ5ICd0ZXN0JyBzdHJhcHBpbmcgb3B0aW9uCiAgICBvZiB0aGUgc2JlIGNvbW1hbmQuIFRoZSAnNjY3JyBzdHJhcHBpbmcgb3B0aW9uIG5vdyB1c2VzCiAgICBhIFBMQi9QQ0kgZGl2aWRlciBvZiAzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IGYwMGNmMzE5M2E2NjM1MzU1YjEyMWU5MGRlYmIyZjU0ZTc3N2U3ZGEKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJTW9uIEFwciAyMSAxNDo0MjoyMSAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBSZW1vdmUgdW51c2VkIEFQQzQwNSBzdHJhdGFmbGFzaCBkcml2ZXIKCiAgICBUaGUgQVBDNDA1IGJvYXJkIHN1cHBvcnQgaGFzIGJlZW4gbWlncmF0ZWQgdG8gdXNlIHRoZSBjb21tb24KICAgIENGSSBmbGFzaCBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgMWM2ODY2NzZhODY0NzNiYmQ5MjE1MWYwNTQ0ZTEwOTQxM2Y2ZWQwNgpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglNb24gQXByIDIxIDE0OjQyOjE3IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBBUEM0MDUgY29uZmlndXJhdGlvbgoKICAgIC0gZW5hYmxlIGVzZCdzIGF1dG9fdXBkYXRlIG1lY2hhbmlzbQogICAgLSBzdXBwb3J0IGFsdGVybmF0aXZlIGZsYXNoIGxheW91dCBvbiByZXYuIDEuOCBib2FyZHMKICAgIC0gdXBkYXRlIGRlZmF1bHQgZW52aXJvbm1lbnQKICAgIC0gdXNlIGNvbW1vbiBDRkkgZmxhc2ggZHJpdmVyCiAgICAtIGNvZGluZyBzdHlsZSBjbGVhbnVwCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgMGI5ODcyNTE1YTUyMWJmNzg2NmRjMjRiODVkZGNlNzA4ZTYwZDcwMgpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglNb24gQXByIDIxIDE0OjQyOjExIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBBUEM0MDUgYm9hcmQgc3VwcG9ydAoKICAgIC0gZW5hYmxlIGVzZCdzIGF1dG9fdXBkYXRlIG1lY2hhbmlzbQogICAgLSBmaXggTENEIHN1cHBvcnQgb24gbGF0ZXN0IGhhcmR3YXJlIHJldmlzaW9uICh1c2VzIG90aGVyIExDRCBjb250cm9sbGVyKQogICAgLSBzdXBwb3J0IGFsdGVybmF0aXZlIGZsYXNoIGxheW91dCBvbiByZXYuIDEuOCBib2FyZHMKICAgIC0gY29kaW5nIHN0eWxlIGNsZWFudXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCA4Mzk3NWQwMmUyMjVlMjMxOTYwNzg0OTcyZTc4MjBhOGIzMDM3NTZiCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CU1vbiBBcHIgMjEgMTQ6NDI6MDYgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogdXBkYXRlIGVzZCdzIGNvbW1vbiBhdXRvX3VwZGF0ZSBjb2RlIGZvciA0MDUgYm9hcmRzCgogICAgLSBDb2Rpbmcgc3R5bGUgY2xlYW51cCAobG9uZyBsaW5lcykKICAgIC0gaW1wcm92ZSBoYW5kbGluZyBvZiBwcm90ZWN0ZWQgZmxhc2ggcmVnaW9ucwogICAgLSByZW1vdmUgZGVhZCBjb2RlCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgYjkyMzNmZTVkNTljYjI1ZDk3NTA3MTYxNmJkMTAzNWQ2ZjRjMjI4NQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglNb24gQXByIDIxIDE0OjQxOjU5IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBlc2QncyBjb21tb24gTENEIGNvZGUgZm9yIDQwNSBib2FyZHMKCiAgICAtIENvZGluZyBzdHlsZSBjbGVhbnVwIChsb25nIGxpbmVzKQogICAgLSBBZGQgczFkMTM1MDUgc3VwcG9ydAogICAgLSBNYWtlIHNvbWUgZnVuY3Rpb25zIHJldHVybiBhIHJlc3VsdCBjb2RlIGluc3RlYWQgb2Ygdm9pZAoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IGRlYTY4MTg5NDI0YzNmMTI0MjQyN2E4MTQ2YTM4NjFiZjA5MzE3M2MKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJTW9uIEFwciAyMSAxMTozNjo1NSAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgRlBHQSBpbWFnZSBmb3IgQVBDNDA1IGJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDJhMDViMTUyOTI0YWNmY2VjM2IwMzc2OTMzMjllNTE3ZTZkMzU3OGYKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJTW9uIEFwciAyMSAxMTozNjowOCAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgYm9vdGxvZ28gZm9yIEFQQzQwNSBib2FyZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCA4ZGVhZmRjNmFkMzY4MzY4Y2YwM2I1OGNhYjRiZDM5ZjQ1ZDY0YjVjCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgQXByIDE4IDE2OjQxOjMxIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBkY2FjaGVfZW5hYmxlKCkgZm9yIDQ0MAoKICAgIGRjYWNoZV9lbmFibGUoKSB3YXMgbWlzc2luZyBmb3IgNDQwIGFuZCB0aGUgcGF0Y2gKICAgIDAxN2U5Yjc5MjVmNzQ4NzhkMGU5NDc1Mzg4Y2NhOWJkYTVlZjk0ODIgWyJhbGxvdyBwb3J0cyB0byBvdmVycmlkZSBib290ZWxmCiAgICAiXSBiZWhhdmlvciB1c2VzIHRoaXMgZnVuY3Rpb24uCgogICAgTm90ZTogQ3VycmVudGx5IHRoZSBjYWNoZSBoYW5kbGluZyBmdW5jdGlvbnMgbGlrZQogICAgZC9pY2FjaGVfZGlzYWJsZS9lbmFibGUoKSBhcmUgTk9QJ3Mgb24gNDQwLiBUaGlzIG1heSBiZSBjaGFuZ2VkIGluIHRoZQogICAgZnV0dXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhNDllMGQxNzdhMDc0OTYxNGIzMTZlYzg0N2ZiNjIzZjA5YzgyYzA3CkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CU1vbiBBcHIgMjEgMTE6MTk6MDQgMjAwOCArMDIwMAoKICAgIHZpZGVvOiBBZGQgbWlzc2luZyBmcmVlIGZvciBsb2dvIG1lbW9yeQoKICAgIFRoaXMgcGF0Y2ggYWRkcyB0d28gbWlzc2luZyBmcmVlKClzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDg0YzAxZDNhMDVhZTNhY2E1ZjdjMGMxM2EzMWNhNzJiYTExOTlhNDIKQXV0aG9yOiBUcm95IEtpc2t5IDx0cm95Lmtpc2t5QGJvdW5kYXJ5ZGV2aWNlcy5jb20+CkRhdGU6CU1vbiBTZXAgMjQgMTY6NDE6NDMgMjAwNyAtMDcwMAoKICAgIFBBVENIIC0gRml4IG9vYiBkYXRhIGNvcGllZCBpbnRvIHN1cHBsaWVkIGJ1ZmZlcgoKICAgIFRoaXMgcGF0Y2ggY29ycmVjdGx5IHNldHMgdGhlIG9vYmF2YWlsIHZhcmlhYmxlCiAgICBhbmQgZml4ZXMgYSBidWcgd2hlcmUgdGhlIG9vYiBkYXRhIHdhcyBub3QgdmFsaWQgd2hlbgogICAgdGhlcmUgd2hlcmUgbXVsdGlwbGUgZ3JvdXBzIGluIG9vYmZyZWUuCgogICAgRmlyc3Qgc2VnbWVudCBmaXhlcyBhIHR5cG8KICAgIFNlY29uZCBzZWdtZW50IGZpeGVzIGEgYnVnIHdoZXJlIG9vYiBkYXRhIG1heSBiZSBjb3BpZWQgaW5jb3JyZWN0bHkuCiAgICBUaGlyZCBzZWdtZW50IGFkZHMgYW4gZXJyb3IgbWVzc2FnZSB3aGVuIGV4aXRpbmcgZHVlIHRvIHdyaXRlIHByb3RlY3QuCiAgICBGb3J0aCBzZWdtZW50IGZpeGVzIGEgYnVnIHdoZXJlIG9vYmF2YWlsIG1heSBiZSBzZXQgaW5jb3JyZWN0bHkuCgogICAgU2lnbmVkLW9mZi1ieTogVHJveSBLaXNreSA8dHJveS5raXNreUBib3VuZGFyeWRldmljZXMuY29tPgoKY29tbWl0IGUxZDA5NjgwZjY0YjQ1MmFkZGU4OWVkOWZlMjhhNzdjNTZiZWRjOWEKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJRnJpIEFwciAxOCAxNzoyNDozMiAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBGaXggc3lzX2dldF9pbmZvKCkgZm9yIDQwNUdQKHIpCgogICAgVGhpcyBwYXRjaCBhc3NpZ25zIHRoZSBjb3JyZWN0IEVCQyBjbG9jayBmb3IgNDA1R1AocikgQ1BVcwogICAgdG8gUFBDNHh4X1NZU19JTkZPIHN0cnVjdHVyZS4gV2l0aG91dCB0aGlzIHBhdGNoIFUtQm9vdAogICAgdXNlcyBhbiB1bmluaXRpYWxpemVkIEVCQyBjbG9jayBpbiBpdHMgc3RhcnR1cCBtZXNzYWdlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IGRjNzc0NmQ4NmQyYTNkZmUwMWFiOWE3MGNiNDI3ZjkyYWRjMzAzYzcKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gQXByIDIwIDE1OjM5OjM4IDIwMDggLTA3MDAKCiAgICBNYWtlZmlsZTogcmVtb3ZlIG5hbmRfc3BsL1N5c3RlbS5tYXAgd2hlbiBjbGVhbmluZyB1cC4KCmNvbW1pdCBkOWE0MmMwYWNlNGQ0ZjljYjA2MWQ2MmE3MjY1ZDE3ODBmOTA0NDdiCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEFwciAyMCAxNTozNTo1MiAyMDA4IC0wNzAwCgogICAgTUFLRUFMTDogc29ydCBlbnRyaWVzIC8gbGlzdHMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAwODc4YWYxNjliMTgxODY4YTEwNWI1YzMzZjNhNjQyM2UyYzlmZDYwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEFwciAxOCAxMToyOTowMSAyMDA4IC0wNTAwCgogICAgODV4eDogRml4IHNpemUgb2YgY3B1LXJlbGVhc2UtYWRkciBwcm9wZXJ0eQoKICAgIFRoZSBjcHUtcmVsZWFzZS1hZGRyIGlzIGRlZmluZWQgYXMgYWx3YXlzIGJlaW5nIGEgNjQtYml0IHF1YW5pdHkgcmVnYXJkbGVzcwogICAgaWYgd2UgYXJlIHJ1bm5pbmcgb24gYSAzMi1iaXQgb3IgNjQtYml0IG1hY2hpbmUuCgpjb21taXQgODgzNTNhOTg1MTA5NTYyYTYzOWIyZjhhMGM5MGQ3NzAxMWJmZTM3NApBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBBcHIgNCAxMToxNTo1OCAyMDA4IC0wNTAwCgogICAgRml4IGNhbGN1bGF0aW9uIG9mIEkyQyBjbG9jayBmb3Igc29tZSA4NXh4IGNoaXBzCgogICAgU29tZSA4NXh4IGNoaXBzIHVzZSBDQ0IgYXMgdGhlIGJhc2UgY2xvY2sgZm9yIHRoZSBJMkMuICBTb21lIHVzZSBDQ0IvMiwgYW5kCiAgICBzb21lIHVzZSBDQ0IvMy4gIFRoZXJlIGlzIG5vIHBhdHRlcm4gdGhhdCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hpY2gKICAgIGNoaXBzIHVzZSB3aGljaCBmcmVxdWVuY3ksIHNvIHRoZSBvbmx5IHdheSB0byBkZXRlcm1pbmUgaXMgdG8gbG9vayB1cCB0aGUKICAgIGFjdHVhbCBTT0MgZGVzaWduYXRpb24gYW5kIHVzZSB0aGUgcmlnaHQgdmFsdWUgZm9yIHRoYXQgU09DLgoKICAgIFVwZGF0ZSBpbW1hcF84NXh4LmggdG8gaW5jbHVkZSB0aGUgR1VUUyBQT1JERVZTUjIgcmVnaXN0ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxZTAxNDc3YWVhZjQwOWRkYjk3ZTI2MzNhYWI5Y2Y4YzljNjA2MTJlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIEFwciAxOCAxMTo0NDoyNyAyMDA4IC0wNzAwCgogICAgRml4IGJ1aWxkIGJyZWFrYWdlIGNhc3VlZCBieSBjb21taXQgYzA1NTliZTM3MWIyCgoJQ2hhbmdlIGVudl9nZXRfY2hhciBmcm9tIGEgZ2xvYmFsIGZ1bmN0aW9uIHB0ciB0byBhIGZ1bmN0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMjY4YTgwNGQ3ZTJmYTA3YjY0MjExZmQyZjlhOTYxNWRiNDUzOWYyMwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBBcHIgMTggMTA6NTM6NDEgMjAwOCAtMDcwMAoKICAgIENvZGluZyBTdHlsZSBjbGVhbnVwLCB1cGRhdGUgQ0hBTkdFTE9HLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgOTJiYWQyMGFkNzRiNzBhZGYzODM5ZGY5YTBhNDdjY2UwMDBhYzNkNwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIEFwciA4IDE0OjAwOjU3IDIwMDggLTA0MDAKCiAgICBBZGQgc3VwcG9ydCBmb3IgdS1ib290IGluIHN2biBhbmQgbG9jYWx2ZXJzaW9uLSogZmlsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZDIzZmY2ODI3ZGVjZjEyMTQ2MWZiYzU2MjI2MTJmZDdlZmZlMjA3ZQpBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KRGF0ZToJVGh1IEFwciAzIDE3OjA0OjIyIDIwMDggKzAyMDAKCiAgICBNWDMxQURTIG5ldHdvcmsgYW5kIGZsYXNoIHVwZGF0ZXMKCiAgICBUaGlzIHBhdGNoIGFsbG93cyBVLUJvb3QgdG8gdXNlIGJ1ZmZlcmVkIHdyaXRlcyB0byB0aGUgU3BhbnNpb24gTk9SCiAgICBmbGFzaCBpbnN0YWxsZWQgb24gdGhpcyBib2FyZCwgYW5kIGVsaW1pbmF0ZXMgbG9uZyBkZWxheXMgaW4gbmV0d29yawogICAgdHJhbnNmZXJzIGFmdGVyIHRoZSBib2FyZCBzdGFydHVwLgoKICAgIEFsc28gbW9kaWZ5IGZsYXNoIGxheW91dCB0byBlbWJlZCBtYWluIGFuZCByZWR1bmRhbnQgZW52aXJvbm1lbnQKICAgIGJsb2NrcyBpbiB0aGUgVS1Cb290IGltYWdlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCBiNWRjOWIzMDRkMjg5ODMxZjI5MTg0M2ZmODhhNDVjYmRmMWE2MjkwCkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglNb24gQXByIDE0IDEwOjUzOjEyIDIwMDggKzAyMDAKCiAgICBTdXBwb3J0IGZvciB0aGUgTVgzMUFEUyBldmFsdWF0aW9uIGJvYXJkIGZyb20gRnJlZXNjYWxlCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBNWDMxQURTIGV2YWx1YXRpb24gYm9hcmQgZnJvbSBGcmVlc2NhbGUsCiAgICBpbml0aWFsaXphdGlvbiBjb2RlIGlzIGNvcGllZCBmcm9tIFJlZEJvb3Qgc291cmNlcywgYWxzbyBwcm92aWRlZCBieQogICAgRnJlZXNjYWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCA0OTllNzgzMWUxYmFhYWM2YmZiOTU5MjEzZjE5NTBjMjE2ZmJjNWJhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgQXByIDggMTA6MzM6MjkgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogQ2hhbmdlIENhbnlvbmxhbmRzIHRvIHN1cHBvcnQgYm9vdGluZyBmcm9tIDJrIHBhZ2UgTkFORCBkZXZpY2VzCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDVlMTgyZGNlMDRkNjhjYzk0NDA3YTFiMWZhMDkzMDdmMmJiOTY3MTkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBBcHIgOCAxMDozMzoyOCAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBBZGp1c3QgQ2FueW9ubGFuZHMgZml4ZWQgRERSMiBzZXR1cCAoTkFORCBib290aW5nKSB0byA1MTJNQiBTT0RJTU0KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZmU3YzBkYjZiMmE5MDA0Zjk2YzJhMmQ0ZmZmMjg0OWUxOWMyZDgyNQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEFwciA4IDEwOjMzOjI3IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBHbGFjaWVyIE5BTkQgYm9vdGluZyB0YXJnZXQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNDZmMzczODM4ZTM4NGE0YzIzZDEzNTgxYjFkZmE1YWNiNjZiNTgxMApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEFwciA4IDEwOjMxOjAwIDIwMDggKzAyMDAKCiAgICBuYW5kX3NwbDogVXBkYXRlIG5hbmRfc3BsIHRvIHN1cHBvcnQgMmsgcGFnZSBzaXplIE5BTkQgZGV2aWNlcwoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBib290aW5nIGZyb20gMmsgcGFnZSBzaXplZCBOQU5EIGRldmljZQogICAgKGUuZy4gTWljcm9uIDI5RjJHMDhBQUMpLgoKICAgIFRlc3RlZCBvbiBBTUNDIENhbnlvbmxhbmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1ZTNkY2E1NzdiN2MxYmY1OGJkMmI0ODQ0OWIxOGI3ZTdkY2Q4ZTA0CkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglUaHUgQXByIDE3IDE4OjE4OjAwIDIwMDggKzAyMDAKCiAgICBGaXggY3Jhc2ggb24gc2VxdW9pYSBpbiBwcGNfNHh4X2V0aF9pbml0CgogICAgQ3VycmVudGx5IFUtQm9vdCBjcmFzaGVzIGluIHBwY180eHhfZXRoX2luaXQgb24gc2VxdW9pYQogICAgd2l0aCBjYWNoZSBlbmFibGVkIChUTEIgUGFyaXR5IGV4ZXB0aW9uKS4gVGhpcyBwYXRjaAogICAgZml4ZXMgdGhlIHByb2JsZW0uCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IGFjY2Y3MzU1NzY3ZGM3ZjZiODVkODhiYjFjNzVjOWQ5NWU4NGJhNWIKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CVRodSBBcHIgMTcgMTg6MTU6MjcgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRml4IGNyYXNoIG9uIHNlcXVvaWEgd2l0aCBjYWNoZSBlbmFibGVkCgogICAgQ3VycmVudGx5IFUtQm9vdCBjcmFzaGVzIG9uIHNlcXVvaWEgYm9hcmQgaW4gQ1BVIFBPU1QgaWYKICAgIGNhY2hlIGlzIGVuYWJsZWQgKENPTkZJR180eHhfRENBQ0hFIGRlZmluZWQpLiBUaGUgY2FjaGUKICAgIHdvbid0IGJlIGRpc2FibGVkIGJ5IGNoYW5nZV90bGIgYmVmb3JlIENQVSBQT1NUIGJlY2F1c2UKICAgIHRoZXJlIGlzIGFuIGluc3VmZmljaWVudCBhZHJlc3MgcmFuZ2UgY2hlY2sgc2luY2UKICAgIENGR19NRU1fVE9QX0hJREUgd2FzIGludHJvZHVjZWQuIFRoaXMgcGF0Y2ggdHJpZXMgdG8gZml4CiAgICB0aGlzIHByb2JsZW0uCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IDQzYzUwOTI1NGZhYjM3NWM0OTkzNjQ5OGRhOTQ0NjU4MTE3ZWQwN2MKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglUaHUgQXByIDE3IDIzOjM1OjEzIDIwMDggKzA5MDAKCiAgICBVc2UganIgYXMgcmVnaXN0ZXIganVtcCBpbnN0cnVjdGlvbgoKICAgIEN1cnJlbnQgYXNzZW1ibGVyIGNvZGVzIGFyZSBpbmNvbnNpc3RlbnQgaW4gdGhlIHdheSBvZiByZWdpc3RlciBqdW1wCiAgICBpbnN0cnVjdGlvbiB1c2FnZTsgc29tZSB1c2UganIsIHNvbWUgdXNlIGouIE9mIGNvdXJzZSBHTlUgYXMgYWxsb3dzIGJvdGgKICAgIHVzYWdlcywgYnV0IGFzIGNhbiBiZSBleHBlY3RlZCBmcm9tIGBKdW1wIFJlZ2lzdGVyJyB0aGUgbW5lbW9uaWMgYGpyJyBpcwogICAgbW9yZSBpbnR1aXRpdmUgdGhhbiBgaicuIEZvciBleGFtcGxlLCBMaW51eCBkb2Vzbid0IGhhdmUgYGogPHJlZz4nIHVzYWdlCiAgICBhdCBhbGwuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCA3Y2U2MzcwOTgyOGQzN2IwODg2NmU1MzczMzlhMTY5YmQwZGIyYmQzCkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglUdWUgQXByIDE1IDE0OjE1OjMwIDIwMDggKzAyMDAKCiAgICBSVEMgZHJpdmVyIGZvciBNQzEzNzgzCgogICAgTUMxMzc4MyBpcyBhIG11bHRpZnVuY3Rpb24gSVMgd2l0aCBhbiBTUEkgaW50ZXJmYWNlIHRvIHRoZSBob3N0LiBUaGlzCiAgICBkcml2ZXIgaGFuZGxlcyB0aGUgUlRDIGNvbnRyb2xsZXIgaW4gdGhpcyBjaGlwLgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCAzODI1NGY0NWIwYjQxMjMzMjcyNmM5MGQzMTg0YWQ0NzQ3OWZjZmZiCkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglUdWUgQXByIDE1IDE0OjE0OjI1IDIwMDggKzAyMDAKCiAgICBOZXcgaS5NWDMxIFNQSSBkcml2ZXIKCiAgICBUaGlzIGlzIGFuIFNQSSBkcml2ZXIgZm9yIGkuTVggYW5kIE1YQyBiYXNlZCBTb0NzIGZyb20gRnJlZXNjYWxlLiBTbyBmYXIKICAgIG9ubHkgaW1wbGVtZW50ZWQgYW5kIHRlc3RlZCBvbiBpLk1YMzEsIGNhbiB3aXRoIGEgbW9kaWZpZWQgcmVnaXN0ZXIgbGF5b3V0CiAgICBhbmQgZGVmaW5pdGlvbnMgYmUgdXNlZCBmb3IgaS5NWDI3LCBJIHRoaW5rLCBNWEMgQ1BVcyBoYXZlIHNpbWlsYXIgU1BJCiAgICBjb250cm9sbGVycyB0b28uCgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgoKY29tbWl0IDcwNjQxMjJjMmVlZjkyZjAyYTAzZWYzN2ExYTFjMDdlNzBjZDRlMzgKQXV0aG9yOiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+CkRhdGU6CVR1ZSBBcHIgMTUgMTk6MDk6MTAgMjAwOCArMDIwMAoKICAgIEZpeCBuYW1lIG9mIGkuTVgzMSBib2FyZHMgaW4gY29uZmlnIGZpbGUgaGVhZGVyCgogICAgQ29ycmVjdCB0aGUgbmFtZSBvZiB0aGUgaS5NWDMxIExpdGVraXQgYW5kIHBoeUNPUkUgYm9hcmRzIGluIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Cgpjb21taXQgYTQ5ODY0NTkzZTA4M2E1ZDA3NzlmYjljYTk4ZTVhMGYyMDUzMTgzZApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU3VuIEFwciAxMyAxOTo0MjoxOSAyMDA4IC0wNDAwCgogICAgYWxsb3cgcG9ydHMgdG8gb3ZlcnJpZGUgZ28gYmVoYXZpb3IKCiAgICBTcGxpdCB0aGUgYXJjaC1zcGVjaWZpYyBsb2dpYyBvdXQgb2YgdGhlIGNvbW1vbiBnbyBjb2RlIGFuZCBpbnRvIGEgZGVkaWNhdGVkCiAgICB3ZWFrIGZ1bmN0aW9uIGNhbGxlZCBkb19nb19leGVjKCkgdGhhdCBsaXZlcyBpbiBjcHUgZGlyZWN0b3JpZXMuICBUaGlzIHdpbGwKICAgIG5lZWQgcmV2aWV3IGZyb20gaTM4Ni9uaW9zIHBlb3BsZSB0byBtYWtlIHN1cmUgSSBkaWRuJ3QgYnJlYWsgdGhlbS4KCmNvbW1pdCAwMTdlOWI3OTI1Zjc0ODc4ZDBlOTQ3NTM4OGNjYTliZGE1ZWY5NDgyCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gQXByIDEzIDE5OjQyOjE4IDIwMDggLTA0MDAKCiAgICBhbGxvdyBwb3J0cyB0byBvdmVycmlkZSBib290ZWxmIGJlaGF2aW9yCgogICAgQ2hhbmdlIHRoZSBib290ZWxmIHNldHVwIGZ1bmN0aW9uIGludG8gYSBkZWRpY2F0ZWQgd2VhayBmdW5jdGlvbiBjYWxsZWQKICAgIGRvX2Jvb3RlbGZfZXhlYy4gIFRoaXMgd2F5IHBvcnRzIGNhbiBjb250cm9sIHRoZSBiZWhhdmlvciBob3dldmVyIHRoZXkKICAgIGxpa2UgYmVmb3JlL2FmdGVyIGNhbGxpbmcgdGhlIEVMRiBlbnRyeSBwb2ludC4KCmNvbW1pdCBhNGI0NmVkNmIzNTAyMzM1YzNmM2E1ZDY3MmFiZTBiY2I0NGYyMGI3CkF1dGhvcjogVWxmIFNhbXVlbHNzb24gPHVsZkBhdG1lbC5jb20+CkRhdGU6CVNhdCBBcHIgMTIgMjA6NTY6MDMgMjAwOCArMDIwMAoKICAgIFJlb3JkZXIgQVJNIGJvYXJkcyBpbiBNYWtlZmlsZQoKICAgIFJlYXJyYW5nZSBBUk0gYm9hcmRzIGluIE1ha2VmaWxlIHNvIHRoYXQgQVJNOTI2RUotUyBib2FyZHMKICAgIGFyZSBubyBsb25nZXIgdW5kZXIgQVJNOTJ4VCBoZWFkZXIuCgogICAgU2lnbmVkLW9mZi1ieTogVWxmIFNhbXVlbHNzb24gPHVsZkBhdG1lbC5jb20+CiAgICBBY2stQnkgSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBjM2E2MGNiM2JkNjdlMTIwZmM5OWI2YmE4OGQ5Mjk1YzNjMDdmNjg4CkF1dGhvcjogVWxmIFNhbXVlbHNzb24gPHVsZkBhdG1lbC5jb20+CkRhdGU6CVNhdCBBcHIgMTIgMjA6Mjk6NDQgMjAwOCArMDIwMAoKICAgIENsZWFuIHVwIGRhdGFmbGFzaCBwYXJ0aXRpb25pbmcKCiAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGJvYXJkIGRlcGVuZGVudCBwYXJ0cyBmcm9tCiAgICAiZHJpdmVycy9tdGQvZGF0YWZsYXNoLmMiLgogICAgRWFjaCBib2FyZCByZWx5aW5nIG9uIHRoaXMsIHdpbGwgaGF2ZSB0aGUgYXBwcm9wcmlhdGUKICAgIGNvZGUgaW4gYSBuZXcgZmlsZSwgInBhcnRpdGlvbi5jIiBpbiB0aGUgYm9hcmQgZGlyZWN0b3J5LgogICAgYm9hcmQgTWFrZWZpbGVzIHVwZGF0ZWQgdG8gdXNlIHRoZSBmaWxlLgoKICAgIFRoZSBkYXRhZmxhc2ggcGFydGl0aW9ucyBhcmUgYWxpZ25lZCBvbiBzZWN0b3IvcGFnZSBib3VuZGFyaWVzLgoKICAgIFRoZSBDT05GSUdfTkVXX0RGX1BBUlRJVElPTiB3YXMgdXNlZCB0byBjcmVhdGUgbmFtZWQgcGFydGl0aW9ucwogICAgVGhpcyBpcyBub3cgdGhlIGRlZmF1bHQgb3BlcmF0aW9uLCBhbmQgdGhlIENPTkZJRyB2YXJpYWJsZSBpcyByZW1vdmVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFVsZiBTYW11ZWxzc29uIDx1bGZAYXRtZWwuY29tPgoKY29tbWl0IDUxZWNkZTk0NmZlYzUxMWExNjM0NmU0OTgyMDRjYTEwYWQ3MTA4MGQKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgQXByIDEyIDE0OjA4OjQ1IDIwMDggKzAyMDAKCiAgICBnaXRpZ25vcmU6IHVkcGF0ZSBzdGdpdCBnZW5lcmF0ZWQgYW5kIC5wYXRjaCBmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA2NmUzOTgxOGU5NWY1MWVlMWMxZGQyMDk0NDA3YTg5Mjk1NDNmYTZkCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIEFwciAxOCAwMDoxNTozNiAyMDA4IC0wNzAwCgogICAgR2V0IHJpZCBvZiByZWR1bmRhbnQgY29weSBvZiByZW5hbWVkIGhlYWRlciBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYzNhYWZkOGNmODE0ZTMzYTc3ZGU4MWMyZjIyYjhjNzcyMjE2YTNjYwpBdXRob3I6IFZsYWQgTHVuZ3UgPHZsYWRAY29tc3lzLnJvPgpEYXRlOglGcmkgQXByIDExIDIxOjIwOjE0IDIwMDggKzAzMDAKCiAgICBGaXggZGVwZW5kZW5jeSBnZW5lcmF0aW9uIGZvciBvbGRlciBnY2MgdmVyc2lvbnMKCiAgICAgV2l0aCBnY2MgMy4zLjMgYXQgbGVhc3QsIGNvbXBpbGF0aW9uIGZhaWxzIHdpdGgKCiAgICBHZW5lcmF0aW5nIGluY2x1ZGUvYXV0b2NvbmYubWsKICAgIGdjYzogY29tcGlsYXRpb24gb2YgaGVhZGVyIGZpbGUgcmVxdWVzdGVkCiAgICBtYWtlOiAqKiogW2luY2x1ZGUvYXV0b2NvbmYubWtdIEVycm9yIDEKCiAgICBzaW5jZSBjb21taXQgMTZmZTc3NzUyZWVlMDk5YjlmYjYxZWQ3MzQ2MGU1MWNjOTRiMzdiYS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4KCmNvbW1pdCBjYjFjNDg5NjkwNWFiMjJmY2Q5ODJlNmE4YTUzOWYwMDMxOTQyZTcxCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJRnJpIEFwciAxMSAxMTowNzo0OSAyMDA4ICswMjAwCgogICAgUmVzdG9yZSB0aGUgYWJpbGl0eSB0byBjb250aW51ZSBib290aW5nIGFmdGVyIGxlZ2FjeSBpbWFnZSBvdmVyd3JpdGUKCiAgICBCZWZvcmUgbmV3IHVJbWFnZSBjb2RlIHdhcyBtZXJnZWQsIGJvb3RtIGNvZGUgYWxsb3dlZCBmb3IgdGhlIGtlcm5lbCBpbWFnZSB0bwogICAgZ2V0IG92ZXJ3cml0dGVuIGR1cmluZyBkZWNvbXByZXNpb24uIG5ldyB1SW1hZ2UgaW50cm9kdWNlZCBhIGNoZWNrIGZvciBpbWFnZQogICAgb3ZlcndyaXRlcyBhbmQgcmVmdXNlZCB0byBib290IHRoZSBpbWFnZSB0aGF0IGdvdCBvdmVyd3JpdHRlbi4gVGhpcyBwYXRjaAogICAgcmVzdG9yZXMgdGhlIG9sZCBiZWhhdmlvci4gSXQgYWxzbyBhZGRzIGEgd2FybmluZyB3aGVuIHRoZSBpbWFnZSBvdmVyd3JpdGVuIGlzCiAgICBhIG11bHRpLWltYWdlIGZpbGUsIGJlY2F1c2UgaW4gc3VjaCBjYXNlIGFjY2Vzc2luZyBjb21wb25lbnRlcyBvdGhlciB0aGFuIHRoZQogICAgZmlyc3Qgb25lIHdpbGwgZmFpbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IGRlMmIzMjE2ZTZiNGYzYjJmZTkzNzU5YzA1YjE3NTA0ZjlkZmUwMzYKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglGcmkgQXByIDExIDExOjA3OjQzIDIwMDggKzAyMDAKCiAgICBwcGM6IEZpeCBmdGRfYmxvYiB2YXJpYWJsZSBpbml0IHdoZW4gcHJvY2Vzc2luZyByYXcgYmxvYgoKICAgIFNldCBmZHRfYmxvYiB2YXJpYWJsZSBiZWZvcmUgaXRzIHZhbHVlIGlzIHByaW50ZWQgb3V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgM2QzNmJlMDMwMDQzY2Q4NDFhMjU1MWQwMGEzOTUxMzVlMzYzYTY0YgpBdXRob3I6IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CkRhdGU6CVRodSBBcHIgMTAgMTQ6MzA6MTYgMjAwOCAtMDUwMAoKICAgIFJlbW92ZSBhbGwgdGhlIHNlYXJjaCBwYXRocyBmcm9tIHRoZSAubGRzIGZpbGVzLgoKICAgIFRoZSBjcm9zcyBjb21waWxlciBpcyByZXNwb25zaWJsZSBmb3IgcHJvdmlkaW5nIHRoZSBjb3JyZWN0IGxpYnJhcmllcwogICAgYW5kIHRoZSBsb2dpYyB0byBmaW5kIHRoZSBsaW5raW5nIGxpYnJhcmllcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBXZXNzZWwgPGphc29uLndlc3NlbEB3aW5kcml2ZXIuY29tPgoKY29tbWl0IDdkNzIxZTM0YWU2YmU3ZDdkYjYzZThkMDYwYTI0NjI3OGJiN2FlNTgKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglNb24gQXByIDE0IDE1OjQ0OjE2IDIwMDggKzAyMDAKCiAgICBCb290LXJlbGF0ZWQgZG9jdW1lbnRhdGlvbiB1cGRhdGUKCiAgICAtIGRvY3VtZW50ICdib290bV9sb3cnIGFuZCAnYm9vdG1fc2l6ZScgZW52aXJvbm1lbnQgdmFyaWFibGVzCiAgICAtIHVwZGF0ZSBpbmFjY3VyYXRlIENGR19CT09UTUFQU1ogZW50cnkKCiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IGE2ZjBiZDlmMmIxOTcxZTJhNjFhYzBmZDFmYzJjOTZjYjdhNGI2N2EKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CkRhdGU6CVdlZCBBcHIgOSAxNzozNDowOCAyMDA4ICswMjAwCgogICAgRml4IHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBieSBhIHR5cG8gaW4gIlRpZGllZCBvdGhlciBjcHUvYXJtOTIwdC9zdGFydC5TIGNvZGUiCgogICAgUmVzdG9yZSBsb2dpYyByZXZlcnRlZCBieSBjb21taXQKCiAgICBjb21taXQgODA3NjdhNmNlYWQ5OTkwZDllNzdlNjJiZTk0Nzg0M2MyYzcyZjQ2OQogICAgQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgogICAgRGF0ZTogICBXZWQgU2VwIDUgMTY6MDQ6NDEgMjAwNyArMDEwMAoKCUNoYW5nZWQgQVBJIG5hbWUgdG8gY29sb3VyZWRfbGVkLmgKCVJlbW92ZWQgY29kZSB1c2luZyBkZXByZWNhdGVkIGlmZGVmIENPTkZJR19CT09UQklORlVOQwoJVGlkaWVkIG90aGVyIGNwdS9hcm05MjB0L3N0YXJ0LlMgY29kZQoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCBlMjVjYjhkM2Y0ZmNjMjY1YTljZGY4ZTlkNTc3YjU5YmRiNjRiYmFmCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgQXByIDggMTA6MjQ6MjQgMjAwOCAtMDQwMAoKICAgIFJlbW92ZSBjb25mbGljdGluZyBOQU5EIElECgogICAgVGhlcmUgYXJlIHR3byBOQU5EIGVudHJpZXMgd2l0aCBJRCAweERDIGFuZCB0aGlzIG9idmlvdXNseSBjYXVzZXMgcHJvYmxlbXMuCiAgICBJbiB0aGUga2VybmVsLCB0aGV5IHB1bnRlZCB0aGUgZmlyc3QgZW50cnksIHNvIHdlIHNob3VsZCBkbyB0aGUgc2FtZS4KCiAgICBTZWUgdGhpcyB1cHN0cmVhbSBlLW1haWwgZm9yIG1vcmUgaW5mbzoKICAgIGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL3BpcGVybWFpbC9saW51eC1tdGQvMjAwNy1KdWx5LzAxODc5NS5odG1sCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBIZW5uZXJpY2ggPG1pY2hhZWwuaGVubmVyaWNoQGFuYWxvZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMTg4ZTk0YzM3MDYyMTcwOGQxMzU0N2Q1OGRiYzZlZDNjNTYwMmFhOApBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KRGF0ZToJVHVlIEFwciA4IDE2OjIwOjM1IDIwMDggKzA5MDAKCiAgICBjcHUvbWlwcy9jcHUuYzogRml4IGZsdXNoX2NhY2hlIGJ1ZwoKICAgIENhY2hlIG9wZXJhdGlvbnMgaGF2ZSB0byB0YWtlIGxpbmUgYWRkcmVzcyAoYWRkciksIG5vdCBzdGFydF9hZGRyLgogICAgSSBub3RpY2VkIHRoaXMgYnVnIHdoZW4gZGVidWdnaW5nIHBpbmcgZmFpbHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+Cgpjb21taXQgOGYyYTY4YTA3YzA1OGZjYTFkNDEzZTU0ZjcxYzJlN2U3OGE3NGVkNApBdXRob3I6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgpEYXRlOglUaHUgQXByIDMgMTQ6Mjk6MDEgMjAwOCArMDIwMAoKICAgIFRRTTUyMDA6IGZpeCBkZWZhdWx0IElERSByZXNldCBsZXZlbAoKICAgIEJlZm9yZSB0aGUgZmlyc3QgY2FsbCBvZiBpZGVfcmVzZXQoKSwgdGhlIGxldmVsIG9mIHRoZSBJREUgcmVzZXQKICAgIHNpZ25hbCBvbiB0aGUgVFFNNTIwMCBpcyBsb3cgKHJlc2V0IGFzc2VydGVkKS4gVGhpcyBwYXRjaCBzZXRzIHRoZQogICAgZGVmYXVsdCB2YWx1ZSB0byBoaWdoIChyZXNldCBub3QgYXNzZXJ0ZWQpLgoKICAgIEN1cnJlbnRseSB0aGlzIHBhdGNoIGZpeGVzIG5vIHJlYWwgcHJvYmxlbSwgYnV0IGl0IGlzIGNsZWFuZXIgdG8KICAgIGFzc2VydCB0aGUgcmVzZXQgc2lnbmFsIG9ubHkgb24gZGVtYW5kLCBhbmQgbm90IHBlcm1hbmVudGx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgoKY29tbWl0IGM2MWUwMzNkNmU4YWJiN2I0MDYwZWUzNjA2MDk2MWUxMzk5ZjYwNzkKQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KRGF0ZToJVGh1IEFwciAzIDE0OjE4OjQ4IDIwMDggKzAyMDAKCiAgICBtZ2NvZ2UsIG1nc3V2OiByZWFsaWduIENPTkZJR19FWFRSQV9FTlZfU0VUVElORwoKICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgoKY29tbWl0IGYzMDg1NzJlMTllYjdmZTYzYWEzZDQxZjIxNGNkZTRjMjNjOTgwMGYKQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KRGF0ZToJVGh1IEFwciAzIDE0OjE4OjQ3IDIwMDggKzAyMDAKCiAgICBtZ2NvZ2UsIG1nc3V2OiByZW5hbWUgJ2FkZGNvbicgdG8gJ2FkZGNvbnMnCgogICAgVGhlIGxhdHRlciBuYW1lIHdpdGggMTMgdXNlcnMgaXMgYWxyZWFkeSBlc3RhYmxpc2hlZCwgc28gd2Ugd2lsbCB1c2UKICAgIHRoYXQuCgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgZTE3NWVhY2M4N2MzYTllNGRhZDA3OTlmZWUwZTk1NzMyNTIwYWZjNwpBdXRob3I6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgpEYXRlOglUaHUgQXByIDMgMTM6Mzc6NTYgMjAwOCArMDIwMAoKICAgIElERTogZml4IGJ1ZyBpbiByZXNldCBzZXF1ZW5jZQoKICAgIEFjY29yZGluZyB0byB0aGUgYXRhIChhdGE1KSBzcGVjaWZpY2F0aW9uIHRoZSBSRVNFVC0gc2lnbmFsCiAgICBzaGFsbCBiZSBhc3NlcnRlZCBmb3IgYXQgbGVhc3QgMjUgdXMuIFdpdGhvdXQgdGhpcyBwYXRjaCwKICAgIHRoZSBSRVNFVC0gc2lnbmFsIGlzIGFzc2VydGVkIG9uIHNvbWUgYm9hcmRzIGZvciBvbmx5IDwgMSB1cwogICAgKGUuIGcuIG9uIHRoZSBUUU01MjAwKS4gVGhpcyBwYXRjaCBhZGRzIGEgZ2VuZXJhbCBkZWxheSBvZgogICAgMjUgdXMgdG8gdGhlIFJFU0VULSBzaWduYWwuCgogICAgV2l0aG91dCB0aGlzIHBhdGNoIGEgUGxhdGludW0gNCBHaUIgQ0YgY2FyZCBpcyBub3QgcmVjb2duaXNlZAogICAgcHJvcGVybHkgb24gYm9hcmRzIHdpdGggYSBUUU01MjAwIChTVEs1Mnh4LCBUQjUyMDApLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgoKY29tbWl0IDgxM2JlYTk2YTk2MDkxNmM3MmI0YTNhN2RmODQwMTUxNTI5YzI2Y2UKQXV0aG9yOiBTYXNjaGEgTGF1ZSA8U2FzY2hhLkxhdWVAZ214LmJpej4KRGF0ZToJVGh1IEFwciAzIDE0OjQzOjExIDIwMDggKzAyMDAKCiAgICBsd21vbjU6IGRpc2FibGUgQ09ORklHX1pFUk9fQk9PVERFTEFZCgogICAgU2lnbmVkLW9mZi1ieTogU2FzY2hhIExhdWUgPHNhc2NoYS5sYXVlQGxpZWJoZXJyLmNvbT4KCmNvbW1pdCA1M2VlYzZmMWQyNTkzMmU3NmQ2M2NjYjE0MDgyNzkyYjBiOTZiZjQxCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIEFwciAyIDA4OjAzOjU4IDIwMDggKzAyMDAKCiAgICBkczE3NHg6IEZpeCB3YXJuaW5nIG9uIHJldHVybiBpbiBydGNfZ2V0IGFuZCBydGNfc2V0IGZ1bmN0aW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYTI1M2IzOGJmNTBjODUyMjdjMzNjYTBmZWJjODcwZWU0OWQxNTg4ZQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBBcHIgMiAwODowMzo1NyAyMDA4ICswMjAwCgogICAgY21kX2xvZy5jOiBGaXggYXNzaWdubWVudCBkaWZmZXIgaW4gc2lnbmVkbmVzcwoKICAgIEluIGZ1bmN0aW9uICdsb2didWZmX2luaXRfcHRycyc6CiAgICBjbWRfbG9nLmM6Nzk6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBhc3NpZ25tZW50IGRpZmZlciBpbiBzaWduZWRuZXNzCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA2YzBlOWE4ZjFjYzA5MGZiZmJjNmY4NmI2YjRmZDE3YTE2MjhmM2RmCkF1dGhvcjogR3VydXJhamEgSGViYmFyIEsgUiA8Z3VydXJhamFrckBzYW55by5jby5pbj4KRGF0ZToJV2VkIEFwciAyIDExOjA0OjQzIDIwMDggKzA1MzAKCiAgICBSZW1vdmUgZHVwbGljYXRlICN1bmRlZiBTSE9XX0lORk8gaW4gZHJpdmVycy91c2IvdXNiX29oY2kuYwoKICAgIFNpZ25lZC1vZmYtYnk6IGd1cnVyYWphIGhlYmJhciA8Z3VydXJhamFrckBzYW55by5jby5pbj4KCmNvbW1pdCA0NzhkNWVjOWFlM2NiY2M2MDQwMjQxZDJkNzNkYmJjNjFmZTliNDlkCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVHVlIEFwciAxIDE0OjA3OjEwIDIwMDggKzAyMDAKCiAgICBzM2M0NTEwYl9ldGg6IGZpeCAncGFja2VkJyBhdHRyaWJ1dGUgaWdub3JlZCBmb3IgZmllbGRzIG9mIE1BQ0ZyYW1lCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBjMDhmYjNlYTM2ZDE5YjE2NDBiNzkwNjI2NDU4MWU5MTA1NTM0Mzk5CkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxnLmxpYWtob3ZldHNraUBnbXguZGU+CkRhdGU6CVR1ZSBBcHIgMTUgMTA6MjQ6MTQgMjAwOCArMDIwMAoKICAgIEFkZGl0aW9uYWwgUENJIElEcyBmb3IgSURFIGFuZCBuZXR3b3JrIGNvbnRyb2xsZXJzCgogICAgVGhlc2UgUENJIElEcyBhcmUgcmVxdWlyZWQgYnkgdGhlIExpbmtzdGF0aW9uIHBsYXRmb3Jtcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGcubGlha2hvdmV0c2tpQGdteC5kZT4KCmNvbW1pdCBjMDU1OWJlMzcxYjJhNjRiMWE4MTcwODhjMzMwODY4OGUyMTgyZjkzCkF1dGhvcjogSm9ha2ltIFRqZXJubHVuZCA8am9ha2ltLnRqZXJubHVuZEB0cmFuc21vZGUuc2U+CkRhdGU6CU1vbiBBcHIgMTQgMjM6MDE6NTAgMjAwOCArMDIwMAoKICAgIENoYW5nZSBlbnZfZ2V0X2NoYXIgZnJvbSBhIGdsb2JhbCBmdW5jdGlvbiBwdHIgdG8gYSBmdW5jdGlvbi4KCiAgICBUaGlzIGF2b2lkcyBhbiBlYXJseSBnbG9iYWwgZGF0YSByZWZlcmVuY2UuCgogICAgU2lnbmVkLW9mZi1ieTogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+Cgpjb21taXQgM2UwZjMzMWMwNWQ3MmYxNDA3MTVjMWU5ZmNhOTkxOTI3ZTQ0ZDQyMgpBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KRGF0ZToJVHVlIEFwciAyOSAxMjozNTowOCAyMDA4ICswMDAwCgogICAgQ2xlYW4gdXAgc21zYzkxMXggZHJpdmVyCgogICAgUmVwbGFjZSBkaXJlY3QgcmVnaXN0ZXIgYWRkcmVzcyBkZXJlZmVuY2luZyB3aXRoIGFjY2Vzc29yIGZ1bmN0aW9ucy4KICAgIFJlc3RyaWN0IGV4cGxpY2l0bHkgMzItYml0IGJ1cy13aWR0aCwgZXh0ZW5kIGFmZmVjdGVkIGNvbmZpZ3VyYXRpb25zCiAgICByZXNwZWN0aXZlbHkuCgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBkZTFiNjg2Yjc2M2FhOGI4N2E4NmY2NzQ4Y2U5MTY5ZTdmYzBlNGNkCkF1dGhvcjogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgpEYXRlOglUdWUgQXByIDE1IDAwOjA4OjIwIDIwMDggLTA0MDAKCiAgICBUaGlzIHBhdGNoIGFkZHMgYSBkcml2ZXIgZm9yIHRoZSBmb2xsb3dpbmcgc21zYyBuZXR3b3JrIGNvbnRyb2xsZXJzOgogICAgTEFOOTExNQogICAgTEFOOTExNgogICAgTEFOOTExNwogICAgTEFOOTIxNQogICAgTEFOOTIxNgogICAgTEFOOTIxNwoKICAgIFNpZ25lZC1vZmYtYnk6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraTxsZ0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAzZGZkNGFhYjkyOWNjY2RkYjYzZDllYTUwOTk2Nzg2MWUxMzMzYjUyCkF1dGhvcjogU2FzY2hhIExhdWUgPFNhc2NoYS5MYXVlQGdteC5iaXo+CkRhdGU6CVR1ZSBBcHIgMSAxNToxMzowMyAyMDA4ICswMjAwCgogICAgRml4IHdhdGNoZG9nIFBPU1QgZm9yIGx3bW9uNQoKICAgIElmIHRoZSBoYXJkd2FyZSB3YXRjaGRvZyBkZXRlY3RzIGEgdm9sdGFnZSBlcnJvciwgdGhlIHdhdGNoZG9nIHNldHMKICAgIEdQSU82MiB0byBsb3cuIFRoZSB3YXRjaGRvZyBQT1NUIGhhcyB0byBkZXRlY3QgdGhpcyBsb3cgbGV2ZWwuCgogICAgU2lnbmVkLW9mZi1ieTogU2FzY2hhIExhdWUgPGxlZ2xhczBAbGVncGMxODAubGVnLmxpZWJoZXJyLmk+Cgpjb21taXQgMjRiNDQ4NDQ4YTkxN2U1MjgwNmY4MjY2MGE1YzlkNDc2MDg4OTRmYgpBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEFwciAxIDE1OjIyOjExIDIwMDggKzA4MDAKCiAgICBhdGE6IHVwZGF0ZSB0aGUgbGliYXRhLmggZnJvbSBhdGEuaCBvZiBsaW51eCBrZXJuZWwKCiAgICBDdXJyZW50IGxpYmF0YS5oIG9mIHUtYm9vdCBpcyBvdXQgb2Ygc3luYyBmcm9tIGxpbnV4IGtlcm5lbCwKICAgIHRoaXMgcGF0Y2ggbWFrZSBpdCBiZSBjb25zaXN0ZW50IHdpdGggbGludXgga2VybmVsLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBUb3IgS3JpbGwgPHRvckBleGNpdG8uY29tPgoKY29tbWl0IGY4ZjlkYzk4ODgzZjY2ZjU5ZWIwNjAxZGE2NTgwOGU2YjEzOWM4N2MKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gTWFyIDMxIDExOjU5OjI3IDIwMDggLTA1MDAKCiAgICBBbGxvdyB1c2Ugb2YgQVJDSD1wb3dlcnBjIHdoZW4gYnVpbGRpbmcKCiAgICBUaGUgbGludXgga2VybmVsIGlzIG5vdyBtb3N0bHkgQVJDSD1wb3dlcnBjLCBzbyB0byBtYWtlIGxpZmUgZWFzaWVyCiAgICBhbGxvdyB1c2UgdG8gdXNlIEFSQ0g9cG93ZXJwYyBhbmQgY29udmVydCBpdCB0byBBUkNIPXBwYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDhhZjY1N2QyYzZkMWNhNGYyZjc2OTczNTMxMzk0ZDQ1NzhiYTJlZjAKQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxrbXBhcmtAaW5mcmFkZWFkLm9yZz4KRGF0ZToJTW9uIE1hciAzMSAxMDo0MDo1NCAyMDA4ICswOTAwCgogICAgQWRkIGFwb2xsb24gYm9hcmQgTUFJTlRBSU5FUlMgZW50cnkKCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgoKY29tbWl0IDc3ZTQ3NWNjMGVkMTgzMjE2MDAxN2QzNjRiZTMyYTBiZTlmZjAyYTkKQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxrbXBhcmtAaW5mcmFkZWFkLm9yZz4KRGF0ZToJTW9uIE1hciAzMSAxMDo0MDozNiAyMDA4ICswOTAwCgogICAgRml4IE9uZU5BTkQgcmVhZAoKICAgIEl0IHNob3VsZCBhY2Nlc3Mgd2l0aCAxNi1iaXQgaW5zdGVhZCBvZiA4LWJpdAoKICAgIE5vdyBpdCB1c2VzIHRoZSBnZW5lcmljIG1lbWNweSB3aXRoIDgtYml0IGFjY2Vzcy4gSXQgbWVhbnMgaXQgcmVhZHMgd3JvbmcgZGF0YSBmcm9tIE9uZU5BTkQuCgogICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KCmNvbW1pdCBhOWRhMmI0MTA3OWQyMzBkYjNhNTY0MTYyNTMxMTk4M2Y4NWNlMWZiCkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+CkRhdGU6CU1vbiBNYXIgMzEgMTA6NDA6MTkgMjAwOCArMDkwMAoKICAgIEZpeCBPbmVOQU5EIGVyYXNlIGNvbW1hbmQKCiAgICBJdCBtaXMtY2FsY3VsYXRlcyB0aGUgYmxvY2sgYWRkcmVzcy4KICAgIEFsc28gZml4IERFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSIGluIGVudl9vbmVuYW5kLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Cgpjb21taXQgNjE1MjVmMmZmYTE1NjY2NWE2NjkwOGZkYTQ3ZGJmMjlkNjVlYTU3OQpBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8Zy5saWFraG92ZXRza2lAZ214LmRlPgpEYXRlOglNb24gTWFyIDMxIDAxOjMyOjE1IDIwMDggKzAyMDAKCiAgICBTdXBwb3J0IGZvciBMaW5rU3RhdGlvbiAvIEt1cm9Cb3ggSEQgYW5kIEhHIFBQQyBtb2RlbHMKCiAgICBUaGlzIHBhdGNoIGlzIGJhc2VkIG9uIHRoZSBwb3J0IGJ5IE1paGFpIEdlb3JnaWFuIChzZWUgbGlua3N0YXRpb24uYyBmb3IKICAgIENvcHlyaWdodCBpbmZvcm1hdGlvbikgYW5kIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgTGlua1N0YXRpb24gLyBLdXJvQm94IEhECiAgICBhbmQgSEcgUFBDIG1vZGVscyBmcm9tIEJ1ZmZhbG8gVGVjaG5vbG9neSwgd2hlcmVieSBIRCBpcyBkZWFjdGl2YXRlZCBhdAogICAgdGhlIG1vbWVudCwgcGVuZGluZyBuZXR3b3JrIGRyaXZlciBmaXhpbmcuCgogICAgTm90aWNlIHRvIHVzZXJzOiB0aGlzIGlzIHByZXR0eSBtdWNoIGEgYmFyZWJvbmUgcG9ydC4gU3VwcG9ydCBmb3IgbmV0d29yawogICAgb24gSEcgbW9kZWxzIGlzIGFscmVhZHkgaW4gdGhlIFUtQm9vdCBtYWlubGluZSwgYnV0IHlvdSBtaWdodCBhbHNvIHdhbnQKICAgIHBhdGNoZXMgdG8gc3dpdGNoIGZhbiAvIHBoeSBtb2RlcyBkZXBlbmRpbmcgb24gdGhlIG5lZ290aWF0ZWQgZXRoZXJuZXQKICAgIHBhcmFtZXRlcnMuIFRoaXMgcGF0Y2ggYWxzbyBkb2Vzbid0IHN1cHBvcnQgY29uc29sZSBzd2l0Y2hpbmcsIGJvb3RpbmcgRU0KICAgIG1vZGUsIEJ1ZmZhbG8gc3BlY2lmaWMgZXh0MiBtYWdpYyBudW1iZXIuIFNvLCBpZiB5b3Ugd2FudCB0byB1c2UgYW55IG9mCiAgICB0aG9zZSwgeW91IG5lZWQgYWRkaXRpb25hbCBwYXRjaGVzLiBPdGhlcndpc2UgdGhpcyBwYXRjaGUgcHJvdmlkZXMgYSBmdWxseQogICAgZnVuY3Rpb25hbCB1LWJvb3Qgd2l0aCBhIG5ldHdvcmsgY29uc29sZSBvbiB5b3VyIHN5c3RlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgMGYzYmE3ZTk3ODNmMzUyMzE4ZjE5N2EzMTQ4ZjZkNWNjM2Q3NWJlYQpBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVN1biBNYXIgMzAgMDE6MjI6MTMgMjAwOCAtMDUwMAoKICAgIEFkZCBDT05GSUdfTUlJX0lOSVQgc3VwcG9ydCB0byByZWxhdGVkIGJvYXJkcwoKICAgIFJlcGxhY2UgQ09ORklHXzh4eCBhbmQgQ09ORklHX01DRjUzMnggdG8gQ09ORklHX01JSV9JTklUIGluCiAgICBjbWRfaW5pdC5jLiBBZGQgQ09ORklHX01JSV9JTklUIHRvIGJvYXJkIGNvbmZpZ3VyYXRpb24gZmlsZXMKICAgIHRoYXQgdXNlIG1paV9pbml0KCkgaW4gY21kX2luaXQuYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZjMzZmNhMjJlNzZmMjBlNGU0NzkzODEwY2E3YTA2YTQ4MDVhNmNmNApBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVN1biBNYXIgMzAgMDE6MTk6MDYgMjAwOCAtMDUwMAoKICAgIFVwZGF0ZSBDT05GSUdfUENJQVVUT19TS0lQX0hPU1RfQlJJREdFIHRvIHJlbGF0ZWQgYm9hcmRzCgogICAgUmVtb3ZlIHRlc3QgZm9yIENPTkZJR19NUEM1MjAwIGluIGRyaXZlcnMvcGNpL3BjaV9hdXRvLmMgYW5kIGRlZmluZQogICAgQ09ORklHX1BDSUFVVE9fU0tJUF9IT1NUX0JSSURHRSBpbiByZWxhdGVkIGJvYXJkIGNvbmZpZ3VyYXRpb24gZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlOTljY2I0ODgxODFkMDEyMjQ4YzZiZTMwYjIwOTNlOTUwMzE5ZmM1CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IE1hciAyNyAxMTo0NjozOCAyMDA4IC0wNTAwCgogICAgSW50cm9kdWNlIHBoeXNfc2l6ZV90IGFuZCBtb3ZlIHBoeXNfYWRkcl90IGludG8gYXNtL3R5cGVzLmgKCiAgICBBbHNvIGFkZCBDT05GSUdfUEhZU182NEJJVCBvbiBwb3dlcnBjIHRvIGRlYWwgd2l0aCAzMi1iaXQgcHBjJ3MKICAgIHRoYXQgaGF2ZSBsYXJnZXIgcGh5c2ljYWwgYWRkcmVzc2VzIGxpa2UgNDR4LCA4NXh4LCBhbmQgODZ4eC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDIwYTE0YTQyYTI1ZjcyZTM3OWYzODQ2MGI4YTg0ODQ2Njc1MzY3OTUKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBcHIgMiAxNjoxOTowNyAyMDA4IC0wNTAwCgogICAgUmVuYW1lIGluY2x1ZGUvbWQ1LmggdG8gaW5jbHVkZS91LWJvb3QvbWQ1LmgKCiAgICBTb21lIHN5c3RlbXMgaGF2ZSBtZDUuaCBpbnN0YWxsZWQgaW4gL3Vzci9pbmNsdWRlLy4gVGhpcyBpc24ndCB0aGUKICAgIGRlc2lyZWQgZmlsZSAod2Ugd2FudCB0aGUgb25lIGluIGluY2x1ZGUvbWQ1LmgpLiBUaGlzIHdpbGwgYXZvaWQgdGhlCiAgICBjb25mbGljdC4gVGhpcyBmaXhlcyB0aGUgaG9zdCB0b29scyBidWlsZGluZyBwcm9ibGVtIGJ5IGNyZWF0aW5nIGEgbmV3CiAgICBkaXJlY3RvcnkgZm9yIFUtQm9vdCBzcGVjaWZpYyBoZWFkZXIgZmlsZXMuCgogICAgW1BhdGNoIGJ5IEFuZHkgRmxlbWluZywgbW9kaWZpZWQgdG8gdXNlIHNlcGFyYXRlIGRpcmVjdG9yeSBieSBXb2xmZ2FuZwogICAgRGVua10KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjI5N2I3YTFlYzg3NDMzZjY2MzIwZDg5ZDk5M2UxYmM3MzhjNjZiOApBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE1hciAyNyAxODo1MToxNyAyMDA4ICswODAwCgogICAgZHJpdmVyczogY29kZSBjbGVhbiB1cAoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMGZmN2NiYTRhMmU1MWM5MDgyN2Y2ZDIxYTBiMjhiNGQ2NzEwOTU5NwpBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE1hciAyNyAxODo1MDo0MSAyMDA4ICswODAwCgogICAgZHJpdmVyczogY2xlYW4gdXAgdGhlIGF0YV9waWl4LmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGU4ZjdiYTQwNGYxNDA5NjA2OTYyODE1ZWNjOTU1YTA2OTg0YjA4YjMKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBNYXIgMjcgMTg6NDk6NTYgMjAwOCArMDgwMAoKICAgIGRvYzogZW5nbGlzaCBwb2xpc2hpbmcgZm9yIFJFQURNRS5zYXRhCgogICAgYWNjb3JkaW5nIHRvIGd2YidzIHN1Z2dlc3Rpb24sIHBvbGlzaGluZyBmb3IgdGhlIGRvYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZXJyeSBWYW4gQmFyZW4gPGdlcmFsZC52YW5iYXJlbkBnZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDNlM2Y3NjZhNTI3NGQyMDQ3ODA0NjBlMTg3OTcyM2I1NjUyOTZkMzQKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgTWFyIDI2IDE4OjUzOjI4IDIwMDggLTA1MDAKCiAgICBGaXggd2FybmluZ3MgaW50cm9kdWNlZCBieSBJMkMgYnVzIHNwZWVkIHNldHRpbmcgcGF0Y2gKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDNjNzM1ZTc0MzcxNTBlODYxNWYyNjkzMGM3ODE5ZGI4NTYzNDI3NmQKQXV0aG9yOiBlcmFuIGxpYmVydHkgPGVyYW4ubGliZXJ0eUBnbWFpbC5jb20+CkRhdGU6CVRodSBNYXIgMjcgMDA6NTA6NDkgMjAwOCArMDEwMAoKICAgIEFsdGVyYSBTdHJhdGl4IElJIHN1cHBvcnQKCiAgICBBZGRzIFN1cHBvcnQgZm9yIEFsdGVyYSdzIFN0cmF0aXggSUkuCgogICAgV2l0aGluIHlvdXIgYm9hcmQgc3BlY2lmaWMgaW5pdCBmaWxlIHlvdSB3aWxsIGhhdmUgdG8gY2FsbAoKICAgIDEuIGZwZ2FfaW5pdCAoLyogcmVsb2NhdGVkIGNvZGUgb2Zmc2V0LiB1c3VhbGx5ID0+ICovIGdkLT5yZWxvY19vZmYpOwogICAgMi4gZnBnYV9hZGQgKGZwZ2FfYWx0ZXJhLCAoQWx0ZXJhX2Rlc2MqKSZhbHRlcmFfZGVzYyk7CgogICAgQWx0ZXJhX2Rlc2MqIGNvbnRpbmVzIChmb3IgZXhhbXBsZSk6Cgl7CgkgQWx0ZXJhX1N0cmF0aXhJSSwJLyogcGFydCB0eXBlICovCgkgcGFzc2l2ZV9zZXJpYWwsCS8qIGludGVyZmFjZSB0eXBlICovCgkgMSwJCQkvKiBieXRlcyBvZiBkYXRhIHBhcnQgY2FuIGFjY2VwdCAqLwoJICh2b2lkICopKCZmdW5jcyksCS8qIGludGVyZmFjZSBmdW5jdGlvbiB0YWJsZSAqLwoJIDBMLAkJCS8qIGJhc2UgaW50ZXJmYWNlIGFkZHJlc3MgKi8KCSAwCQkJLyogaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgY29va2llICovCgkgfQoKICAgIGZ1bmNzIGlzIHRoZSBpbnRlcmZhY2UuIEl0IGlzIG9mIHR5cGUgYWx0ZXJhX2JvYXJkX3NwZWNpZmljX2Z1bmMuCiAgICBJdCBsb29rcyBsaWtlIHRoaXM6CiAgICBhbHRlcmFfYm9hcmRfc3BlY2lmaWNfZnVuYyBmdW5jID0gewoJcHJlX2ZuLAoJY29uZmlnX2ZuLAoJc3RhdHVzX2ZuLAoJZG9uZV9mbiwKCWNsa19mbiwKCWRhdGFfZm4sCglhYm9ydF9mbiwKCXBvc3RfZm4sCiAgICB9OwoKICAgIHlvdSB3aWxsIGhhdmUgdG8gaW1wbGVtZW50IHRoZXNlIGZ1bmN0aW9ucywgd2hpY2ggaXMgdXN1YWxseSBiaXQKICAgIGJhbmdpbmcgc29tZSBncGlvLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVyYW4gTGliZXJ0eSA8bGliZXJ0eUBleHRyaWNvbS5jb20+Cgpjb21taXQgNWVjZTllYzlmNmNkNTI5NTBhYjg0OGUyZmU0MjJkYWNmMWQzYTMzNQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBBcHIgMTMgMTQ6MzI6NTQgMjAwOCAtMDcwMAoKICAgIFVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDVhZDg2MjE2NmFhMjRkNjJhNjlhYTljNzA4ZjZiMmY1YzBkMjhmYjcKQXV0aG9yOiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+CkRhdGU6CVdlZCBNYXIgMjYgMjA6NDE6MTcgMjAwOCArMDEwMAoKICAgIFBoeXRlYyBQaHljb3JlLWkuTVgzMSBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBQaHl0ZWMgUGh5Y29yZS1pLk1YMzEgYm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgY2FlYmM5NWJlM2I0MmU1MTQ3YjVmYWM3NjcyYWM0YjI2OTNlZjdlMQpBdXRob3I6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KRGF0ZToJV2VkIE1hciAyNiAyMDo0MTowOSAyMDA4ICswMTAwCgogICAgbXgzMSBsaXRla2l0IHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIG14MzEgbGl0ZWtpdCBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCBjZGFjZTA2NjEyMDg3NTRhNTMwMTllYTBkYzdiODAzYTA0MGUwOTM5CkF1dGhvcjogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgpEYXRlOglXZWQgTWFyIDI2IDIwOjQwOjQ5IDIwMDggKzAxMDAKCiAgICBhZGQgYW4gaTJjIGRyaXZlciBmb3IgbXgzMQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBhbiBpMmMgZHJpdmVyIGZvciBGcmVlc2NhbGUgaS5NWCBwcm9jZXNzb3JzCgogICAgU2lnbmVkLW9mZi1ieTogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgoKY29tbWl0IDliNTZmNGYwMzA2ZjM5NDBiMGFhZmQ4MjNlZDZlY2ZjMmQ3NWQ2YzYKQXV0aG9yOiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+CkRhdGU6CVdlZCBNYXIgMjYgMjA6NDA6NDIgMjAwOCArMDEwMAoKICAgIGNvcmUgc3VwcG9ydCBmb3IgRnJlZXNjYWxlIG14MzEKCiAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGNvcmUgc3VwcG9ydCBmb3IgRnJlZXNjYWxlIG14MzEKCiAgICBTaWduZWQtb2ZmLWJ5OiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgN2VjNjg4NjJhMjdjOGY2ZjZkNTY2MjI4ZGU4ZjY3MjRkOTY0YTkzOQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBBcHIgMTMgMTQ6MTk6MjMgMjAwOCAtMDcwMAoKICAgIEZpeCBjb21waWxlIGVycm9yCgogICAgLi4uYXMgc3VnZ2VzdGVkIGJ5IFBldGVyIFBlYXJzZQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNTI1MmVkOTUyMDRiZGY1NWJlYzVhOTBlYTY5ODYwYmYyZjc4YzY0MwpBdXRob3I6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KRGF0ZToJV2VkIE1hciAyNiAyMDo0MDozNiAyMDA4ICswMTAwCgogICAgU2VwYXJhdGUgb21hcDI0eHggc3BlY2lmaWMgY29kZSBmcm9tIGFybTExMzYKCiAgICBNb3ZlIG9tYXAyNHh4IGNvZGUgdG8gY3B1L2FybTExMzYvb21hcDI0eHgsIHJlbmFtZSBpbmNsdWRlL2FzbS1hcm0vYXJjaC1hcm0xMTM2CiAgICB0byBjcHUvYXJtMTEzNi9vbWFwMjR4eC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgMWYxZDg4ZGQ0MDgxNTMzMmRmMzI5ODJlNzM5ZjJkZGQyZGE2ZmUxYQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIEphbiAyOSAxODoyMTowNSAyMDA4IC0wNTAwCgogICAgZGlzYWJsZSBjYWNoZXMgYmVmb3JlIGJvb3RpbmcgYW4gYXBwIGZvciBCbGFja2ZpbiBhcHBzCgogICAgSXQgaXNuJ3QgZ2VuZXJhbGx5IHNhdmUgdG8gZXhlY3V0ZSBhcHBsaWNhdGlvbnMgb3V0c2lkZSBvZiBVLUJvb3Qgd2l0aCBjYWNoZXMKICAgIGVuYWJsZWQgZHVlIHRvIHRoZSB3YXkgdGhlIEJsYWNrZmluIHByb2Nlc3NvciBoYW5kbGVzIGNhY2hlcyAocmVxdWlyZXMKICAgIHNvZnR3YXJlIGFzc2lzdGFuY2UpLiAgVGhpcyBwYXRjaCBkaXNhYmxlcyBjYWNoZXMgYmVmb3JlIGJvb3RpbmcgYW4gRUxGIG9yCiAgICBqdXN0IGJvb3RpbmcgcmF3IGNvZGUuICBUaGUgcHJldmlvdXMgZGlzY3Vzc2lvbiBvbiB0aGUgcGF0Y2ggd2FzIHRoYXQgd2UKICAgIHdhbnRlZCB0byB1c2Ugd2Vha3MgaW5zdGVhZCwgYnV0IHRoYXQgcHJvdmVkIHRvIG5vdCBiZSBmZWFzaWJsZSB3aGVuIG11bHRpcGxlCiAgICBzeW1ib2xzIGFyZSBpbnZvbHZlZCwgd2hpY2ggcHV0cyB1cyBiYWNrIGF0IHRoZSBpZmRlZiBzb2x1dGlvbi4gIEkndmUKICAgIG1pbmltaXplZCB0aGUgdWdsaW5lc3MgYnkgbW92aW5nIHRoZSBzZXR1cCBzdGVwIG91dHNpZGUgb2YgdGhlIG1haW4gZnVuY3Rpb24uCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGU2ZGZlZDcwNWVmYTQ0ZWJmMDBkMjFiYjE1ODhjNmNjYzhmM2FkMzIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gQXByIDEzIDEwOjAzOjU0IDIwMDggLTA3MDAKCiAgICBwcGM6IEdldCByaWQgb2YgdW51c2VkIG1hY2hpbmUgdHlwZSBkZWZpbml0aW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMWFlZWQ4ZDcxYWNiMzI5MGNmMjQ0NmYzMTZkNmJhNDM3ZTc4ODFjNApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBBcHIgMTMgMDk6NTk6MjYgMjAwOCAtMDcwMAoKICAgIENvZGluZyBTdHlsZSBjbGVhbnVwOyB1cGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA3NzU0ZjMzYzZmYjdhMmMwNTAzODhkMjBiZjM4NDcwMzg1NThiZGNmCkF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CkRhdGU6CVRodSBGZWIgMjEgMTM6NTg6MTEgMjAwOCAtMDUwMAoKICAgIExNNzMgYnVnIGZpeCBmb3IgbmVnYXRpdmUgdGVtcGVyYXR1cmVzIGFuZCBjbGVhbnVwCgogICAgV2hlbiB0aGUgTE03MyB0ZW1wZXJhdHVyZSBzZW5zb3IgbWVhc3VyZXMgYSB0ZW1wZXJhdHVyZSBiZWxvdyAwIEMsIHRoZQogICAgY3VycmVudCBkcml2ZXIgZG9lcyBub3QgcGVyZm9ybSBzaWduIGV4dGVuc2lvbiwgc28gdGhlIHJlc3VsdCByZXR1cm5lZCBpcwogICAgNTEyIEMgdG9vIGhpZ2guICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBwcm9ibGVtLCBhbmQgZG9lcyBnZW5lcmFsIGNsZWFudXAKICAgIG9mIHRoZSBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgoKY29tbWl0IDk2ZWY4MzFmNzEzMjg5YWZiYTE5ZGEwYzhmOTA1ZTk5ZGEyYjIzZTAKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CkRhdGU6CVRodSBBcHIgMyAxMzozNjowMiAyMDA4ICswMjAwCgogICAgY2ZpX2ZsYXNoOiBTdXBwb3J0IGJ1ZmZlcmVkIHdyaXRlcyBvbiBub24tc3RhbmRhcmQgU3BhbnNpb24gTk9SIGZsYXNoCgogICAgU29tZSBOT1IgZmxhc2ggY2hpcCBmcm9tIFNwYW5zaW9uLCBmb3IgZXhhbXBsZSwgdGhlIHMyOXdzLW4gTWlycm9yQml0CiAgICBzZXJpZXMgcmVxdWlyZSBkaWZmZXJlbnQgYWRkcmVzc2VzIGZvciBidWZmZXJlZCB3cml0ZSBjb21tYW5kcy4gRGVmaW5lIGEKICAgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIHN1cHBvcnQgYnVmZmVyZWQgd3JpdGVzIG9uIHRob3NlIGNoaXBzLiBBIG1vcmUKICAgIGVsZWdhbnQgc29sdXRpb24gd291bGQgYmUgdG8gYXV0b21hdGljYWxseSBkZXRlY3QgdGhvc2UgY2hpcHMgYnkgcGFyc2luZwogICAgdGhlaXIgQ0ZJIHJlY29yZHMsIGJ1dCB0aGF0IHdvdWxkIHJlcXVpcmUgaW50cm9kdWN0aW9uIG9mIGEgZml4dXAgdGFibGUKICAgIGludG8gdGhlIGNmaV9mbGFzaCBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgoKY29tbWl0IDNmOWM1NDJkM2Q2OWIxYTEwYTVlMTkzZTc3OTEzM2EwNDU0ZDFmNDQKQXV0aG9yOiBMZWUgTmlwcGVyIDxsZWUubmlwcGVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBBcHIgMTAgMDk6MzU6MDYgMjAwOCAtMDUwMAoKICAgIG1wYzgzeHg6IFVwZGF0ZSBESU1NIGRhdGEgYnVzIHdpZHRoIHRlc3QgdG8gc3VwcG9ydCA0MC1iaXQgd2lkdGgKCiAgICAzMi1iaXQgd2lkZSBFQ0MgbWVtb3J5IG1vZHVsZXMgcmVwb3J0IDQwLWJpdCB3aWR0aC4KICAgIENoYW5nZWQgdGhlIERJTU0gZGF0YSBidXMgd2lkdGggdGVzdCB0byAnbGVzcyB0aGFuIDY0JyBpbnN0ZWFkIG9mICdlcXVhbCAzMicuCgogICAgU2lnbmVkLW9mZi1ieTogTGVlIE5pcHBlciA8bGVlLm5pcHBlckBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1ZmI1YTY4OWQ4MjJjYTYxZTgxNGJkNTIzZmM5MzBhZjMzNTI0MmZhCkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gTWFyIDMxIDE3OjA1OjEyIDIwMDggKzA4MDAKCiAgICBtcGM4M3h4OiBGaXggdGhlIGJ1ZyBvZiBzZXJkZXMgaW5pdGlhbGl6YXRpb24KCiAgICBDdXJyZW50bHkgdGhlIHNlcmRlcyB3aWxsIG5vdCBiZSBpbml0aWFsaXphdGVkIGR1ZSB0byB0aGUKICAgIHBhcnRpZCdzIGVycm9yLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDIwMDA3ODQ4MThmMDQzZGI3Y2E2MGUyODQ2YTcyZDA5Nzc2NmI4OTQKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBBcHIgMyAxNjoyODoyOSAyMDA4ICswODAwCgogICAgbXBjODN4eDogRml4IHRoZSBTQVRBIGNsb2NrIHNldHRpbmcgb2YgODM3eCB0YXJnZXRzCgogICAgQ3VycmVudGx5IHRoZSBTQVRBIGNvbnRyb2xsZXIgY2xvY2sgaXMgY29uZmlndXJlZCBhcyBDU0IgY2xvY2ssCiAgICB1c3VhbGx5IHRoZSBDU0IgY2xvY2sgaXMgNDAwLzMzMy8yNjZNSHouCgogICAgSG93ZXZlciwgVGhlIFNBVEEgSVAgYmxvY2sgaXMgb25seSBndWFyYW50ZWVkIHRvIG9wZXJhdGUgdXAgdG8KICAgIDIwMCBNSHogYXMgc3RhdGVkIGluIHRoZSBIVyBzcGVjLgoKICAgIFRoZSBidWcgaXMgcmVwb3J0ZWQgYnkgSm9lIEQnQWJicmFjY2lvIDxsamQwMTVAZnJlZXNjYWxlLmNvbT4KCiAgICBUaGlzIHBhdGNoIG1ha2VzIHRoZSBTQVRBIGNsb2NrIGFzIGhhbGYgb2YgQ1NCIGNsb2NrLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFhYzRmMzIwYmYwYjU5M2FhMGE3NDFmMmQ2NDlhOGVjZTg4Mzg2NzIKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglXZWQgQXByIDIgMTM6NDE6MjEgMjAwOCArMDIwMAoKICAgIG1wYzgzN3hlcmRiOiBGaXggd2FybmluZzogaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ2ZkdF9maXh1cF9kcl91c2InCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTdiM2VjYjU3NWE5MmZhMzRjMTc2NTIyOWRiYzA2ZjJiNjYyZjEzOQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBBcHIgOSAwNDoyMDo1NyAyMDA4IC0wNTAwCgogICAgODV4eDogRml4IGRldGVjdGlvbiBvZiBNUCBjcHUgc3BpbiB1cAoKICAgIFdlIHdlcmUgbG9va2luZyBhdCB0aGUgd3JvbmcgbWVtb3J5IG9mZnNldCB0byBkZXRlcm1pbmUgb2YgYSBzZWNvbmRhcnkKICAgIGNwdSBoYWQgYmVlbiBzcHVuIHVwIG9yIG5vdC4gIEFsc28gYWRkZWQgYSB3YXJuaW5nIG1lc3NhZ2UgaWYgdGhlCiAgICBhbGwgdGhlIHNlY29uZGFyeSBjcHVzIHdlIGV4cGVjdCBkb24ndCBzcGluIHVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZjNlMDRiZGMzZjM2MGM2NjgwMWE5MDQ4OTU2ZTYxZTQxYTE2ZWRiYQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBcHIgOCAxMDo0NTo1MCAyMDA4IC0wNTAwCgogICAgODV4eDogVXNlIFNWUl9TT0NfVkVSIGluc3RlYWQgb2YgU1ZSX1ZFUgoKICAgIFRoZSByZWNlbnQgY2hhbmdlIGludHJvZHVjZWQgYnkgJ1VwZGF0ZSBTVlIgbnVtYmVycyB0byBleHBhbmQgc3VwcG9ydCcKICAgIG5vdyByZXF1aXJlcyB0aGF0IHdlIHVzZSBTVlJfU09DX1ZFUiBpbnN0ZWFkIG9mIFNWUl9WRVIgaWYgd2Ugd2FudAogICAgdG8gY29tcGFyZSBhZ2FpbnN0IGEgcGFydGljdWxhciBwcm9jZXNzb3IgaWQuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA1YjIwNTJlNWY1ZmNjZTVkYmQ0ZDI3NTBhMjljMGU0NWJjZTgwNmU3CkF1dGhvcjogRXVnZW5lIE8nQnJpZW4gPGV1Z2VuZS5vYnJpZW5AYWR2YW50ZWNoYW10LmNvbT4KRGF0ZToJRnJpIEFwciAxMSAxMDowMDozNSAyMDA4IC0wNDAwCgogICAgcHBjNHh4OiBGaXggcG93ZXIgbWd0IGRlZmluaXRpb25zIGZvciBQUEM0NDAKCiAgICBDb3JyZWN0ZWQgRENSIGFkZHJlc3NlcyBvZiBQUEM0NDBFUCBwb3dlciBtYW5hZ2VtZW50IHJlZ2lzdGVycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBFdWdlbmUgTydCcmllbiA8ZXVnZW5lLm9icmllbkBhZHZhbnRlY2hhbXQuY29tPgoKY29tbWl0IDk1MGEzOTI0NjRlNjE2YjQ1OTBiYzQ1MDFiZTQ2ZTJkN2QxNjJkZWEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgQXByIDExIDE1OjExOjI2IDIwMDggKzAyMDAKCiAgICBSZXZlcnQgbWVyZ2Ugb2YgZ2l0Oi8vd3d3LmRlbnguZGUvZ2l0L3UtYm9vdC1hcm0sIGNvbW1pdCA2MjQ3OWIxODoKCiAgICBSZXZlcnRpbmcgYmVjYW1lIG5lY2Vzc2FyeSBhZnRlciBpdCB0dXJuZWQgb3V0IHRoYXQgdGhlIHBhdGNoZXMgaW4KICAgIHRoZSB1LWJvb3QtYXJtIHJlcG8gd2VyZSBtb2RpZmllZCwgYW5kIGluIHNvbWUgY2FzZXMgY29ycnVwdGVkLgoKICAgIFRoaXMgcmV2ZXJ0cyB0aGUgZm9sbG93aW5nIGNvbW1pdHM6CgoJMDY2YmViZDYzNTNlMzNhZjNhZGVmYzM0MDQ1NjA4NzE2OTllOTk2MQoJN2E4MzdiNzMxMDE2NmFlOGZjOGI4ZDY2ZDdlZjAxYjYwYTgwZjlkNgoJYzg4YWUyMDU4MGIyYjAxNDg3YjRjZGNjOGIyYTExM2Y1NTFhZWUzNgoJYTE0N2U1NmYwMzg3MWJiYTRmMDUwNThkNWUwNGNlN2RlYjAxMGIwNAoJZDY2NzRlMGUyYTZhMWYwMzM5NDVmNzg4Mzg1NjYyMTBkM2YyOGM5NQoJOGM4NDYzY2NlNDRkODQ5ZTM3NzQ0NzQ5YjMyZDM4ZTFkZmIxMmU1MAoJYzk4YjQ3YWQyNGIyZDkxZjQxYzA5YTNkNjJkN2Y3MGFkODRmNGI3ZAoJOGJmNjlkODE3ODI2MTkxODc5MzNhNjA1ZjFhOTVlZTFkMDY5NDc4ZAoJOGMxNmNiMGQzYjk3MWY0NmZiZTc3YzA3MjY2NGMwZjJkY2Q0NDcxZAoJYTU3NGE3Mzg1MmE1Mjc3NzkyMzRlNzNlMTdlNzU5N2ZkODEyODg4MgoJMTM3N2I1NTgzYTQ4MDIxZDk4M2UxZmQ1NjVmN2Q0MGM4OWU4NGQ2MwoJMTcwNGRjMjA5MTdiNGY3MWUzNzNlMmM4ODg0OTdlZTY2NmQ0MDM4MAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNjRlNTQxZjRjMWI0MTNkZDg0YzdlNDA5ZjVjMmJmMzI4ZGIyYWMxMwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEFwciAxMSAwNzowMjoyOSAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgS2lsYXVlYSBkZWZjb25maWcgdG8gdXNlIGRldmljZS10cmVlIGJvb3RpbmcgYXMgZGVmYXVsdAoKICAgIFRoaXMgcGF0Y2ggcmV3b3JrcyB0aGUgZGVmYXVsdCBlbnZpcm9ubWVudCBvbiBLaWxhdWVhL0hhbGVha2FsYS4gTm93CiAgICAibmV0X25mcyIgZm9yIGV4bWFwbGUgdXNlcyB0aGUgZGV2aWNlLXRyZWUgc3R5bGUgYm9vdGluZyBmb3JtZXJseSBrbm93CiAgICBhcyAibmV0X25mc19mZHQiLiBBbHNvIHRoZSBhZGRyZXNzZXMgaW4gUkFNIHdlcmUgY2hhbmdlZCBiZWNhdXNlIG9mIHRoZQogICAgbmV3IGltYWdlIGJvb3Rpbmcgc3VwcG9ydCwgd2hpY2ggY2hlY2sgZm9yIGltYWdlIG92ZXJ3cml0aW5nLiBTbyB0aGUKICAgIGFkZHJlc3NlcyBuZWVkZWQgdG9nZWV0IGFkanVzdGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3NTZmNWRhY2RhMzgxMGIwOTRiOTRiY2NlZmZkM2NlNmM3ZmY5YTI4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgQXByIDkgMTE6NTg6MDIgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRml4IENhbnlvbmxhbmRzIGRlZmF1bHQgZW52aXJvbm1lbnQgdG8gd29yayB3aXRoIG5ldyBpbWFnZSBzdXBwb3J0CgogICAgU2luY2UgdGhlIG5ldyBpbWFnZSBzdXBwb3J0IGNoZWNrcyBmb3IgaW1hZ2Ugb3ZlcndyaXRpbmcsIHRoZSBkZWZhdWx0CiAgICBlbnZpcm9ubWVudCBuZWVkcyB0byBnZXQgYWRqdXN0ZWQgdG8gdXNlIGNvcnJlY3QgYWRkcmVzc2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkZmM2YzdiNjQ3ZGJhN2FiODY3NDk2MTZmMGU5ZTU3NDBkZWVkNDIyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgQXByIDkgMTE6NTQ6MTEgMjAwOCArMDIwMAoKICAgIHBwYzogUmV2ZXJ0IHBhdGNoIDcwNDMxZThhIHRoYXQgdXNlZCBfc3RhcnQgaW5zdGVhZCBvZiBDRkdfTU9OSVRPUl9CQVNFCgogICAgVGhlIHBhdGNoIDcwNDMxZThhNzM5M2I2Yjc5M2Y3Nzk1N2Y5NWI5OTlmYzlhMjY5YjggKE1ha2UgTVBDODN4eCBvbmUgc3RlcAogICAgY2xvc2VyIHRvIGZ1bGwgcmVsb2NhdGlvbi4pIGRvZXNuJ3QgdXNlIENGR19NT05JVE9SX0JBU0UgYW55bW9yZS4gQnV0CiAgICBvbiA0eHggc3lzdGVtcyBfc3RhcnQgY3VycmVudGx5IGNhbm5vdCBiZSB1c2VkIGZvciB0aGlzIGNhbGN1bGF0aW9uLgogICAgU28gcmV2ZXJ0IGJhY2sgdG8gdGhlIG9yaWdpbmFsIHZlcnNpb24gZm9yIG5vdy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZjkxMzc0ZjY1ZWFlOGI0MmNhYzMyOWUwNmJhMWM1NDcyODI3OGVmYgpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJRnJpIE1hciAyOCAxMjo0OTo1MiAyMDA4ICswMTAwCgogICAgbWljcm9ibGF6ZTogU29ydCBtaWNyb2JsYXplIGJvYXJkcyBpbiBNQUtFQUxMIHNjcmlwdAoKY29tbWl0IDYyMDMyZGViNzIxNGM2ZDliNDM5NjI5N2UyYWFhNTU5YmMyZjg0OTUKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CUZyaSBNYXIgMjggMTE6NTg6NDUgMjAwOCArMDEwMAoKICAgIG1pY3JvYmxhemU6IGNsZWFuIG1pY3JvYmxhemVfY29uZmlnLm1rCgogICAgRkxBR1MgYXJlIGdlbmVyYXRlZCBieSBVLUJPT1QgZ2VuZXJhdG9yLgogICAgQm9hcmQgc3BlY2lmaWMgRkxBR1MgYXJlIGluIGJvYXJkIGRpcmVjdG9yeQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KCmNvbW1pdCBjZjVjNjc5Y2EwNGE2YjU0YmY1M2E1NWI4YjljMjkzMzViMzg3Mjg3CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglGcmkgTWFyIDI4IDEyOjQ3OjE5IDIwMDggKzAxMDAKCiAgICBtaWNyb2JsYXplOiB4dXB2MnAgZml4IGNvbmZpZyBmaWxlIGZvciBzdXBwb3J0aW5nIEZEVAoKY29tbWl0IDE4OGRjMTZiMTg5MTQzNTczYjFlZDkwZTU4NGJmODY2ZDc1Y2RkMTIKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CUZyaSBNYXIgMjggMTE6NTM6MDIgMjAwOCArMDEwMAoKICAgIG1pY3JvYmxhemU6IG1sNDAxIGZpeCBjb25maWcgZmlsZSBmb3Igc3VwcG9ydGluZyBGRFQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Cgpjb21taXQgNGM2YTZmMDJlMjM5MjM2MjYxMzMzNzU5OTk3ZWVhZjg2YjMwYjU0YwpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJRnJpIE1hciAyOCAxMToyMjo0OCAyMDA4ICswMTAwCgogICAgbWljcm9ibGF6ZTogbWw0MDEgLSBhZGQgaWZkZWYgZm9yIEdQSU8KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Cgpjb21taXQgYWY3YWUxYTQxMWM2N2VlOWQxN2E2NmQxN2NlNTBiMzc0ZjNkZDRlNwpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJRnJpIE1hciAyOCAxMjoxMzowMyAyMDA4ICswMTAwCgogICAgbWljcm9ibGF6ZTogY2xlYW4gdWFydDE2NTUwIGFuZCB1YXJ0bGl0ZSBoYW5kbGluZwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KCmNvbW1pdCAwYjIwZjI1MDg3NzQ0MTQ2MGZiNzlkNzIxOTI5NTRhYmU4NDk4ODM0CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglGcmkgTWFyIDI4IDExOjA4OjMxIDIwMDggKzAxMDAKCiAgICBtaWNyb2JsYXplOiBBZGQgRW1hY2xpdGUgZHJpdmVyIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgoKY29tbWl0IDg2OGNkZTUzMTBmODgyMzRiNzc0ODc4ZTRmMDZlNzlkZjEwYTg4YjMKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CUZyaSBNYXIgMjggMTE6MDg6MDEgMjAwOCArMDEwMAoKICAgIG1pY3JvYmxhemU6IEFkZCBFbWFjIGRyaXZlciB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KCmNvbW1pdCA2Zjk2MWI0ZjQ2MWY2Y2JiODNhNDY3ZDQ2OGEwMmU2MDc4YzJiMzI3CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglGcmkgTWFyIDI4IDEyOjQyOjI5IDIwMDggKzAxMDAKCiAgICBtaWNyb2JsYXplOiBhZGQgRW1hYyBldGhlcm5ldCBkcml2ZXIKCmNvbW1pdCA4OWM1Mzg5MWIxOGNiYWZkMjlhYjg5MzFiNDBlMjdhZDIzMWI2MDg1CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglGcmkgTWFyIDI4IDEyOjQxOjU2IDIwMDggKzAxMDAKCiAgICBtaWNyb2JsYXplOiBhZGQgRW1hY2xpdGUgZXRoZXJuZXQgZHJpdmVyCgpjb21taXQgZTU4NDVlMjEyMjRkYmUyZmU0N2IxMWYxY2RmOTVkZTdmODRiZTdjYgpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJRnJpIE1hciAyOCAxMTowNDowMSAyMDA4ICswMTAwCgogICAgbWljcm9ibGF6ZTogTUw0MDEgYW5kIFhVUFYyUCByZW1vdmUgZW1hYyBhbmQgZW1hY2xpdGUgcmVmZXJlbmNlCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgoKY29tbWl0IDZiZjNlOTgyYWVmZGIxZGFmOWY1NDYyZDQ4MmM4ZjlkMWNjOTBhNTcKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CUZyaSBNYXIgMjggMTA6NTk6MzIgMjAwOCArMDEwMAoKICAgIG1pY3JvYmxhemU6IHJlbW92ZSBvbGQgc2V0dGluZyBmb3IgZW1hYyBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Cgpjb21taXQgY2QyYjc1ZWZiOWNjMDM3Yzc0ZWNlZTliMzU4NmY5YmY5ZTFkNGU1NwpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJRnJpIE1hciAyOCAxMDo1ODoxNSAyMDA4ICswMTAwCgogICAgbWljcm9ibGF6ZTogQ2xlYW4gTWFrZWZpbGUgZnJvbSBhbmNpZW50IGVtYWMgZHJpdmVyCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgoKY29tbWl0IGFiNjhmOTIxZDljNzQxODMwZjcyMWMzZDg3OWMxM2EwYzU1OTcxODMKQXV0aG9yOiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+CkRhdGU6CUZyaSBNYXIgMjggMTA6MjA6NDMgMjAwOCArMDEwMAoKICAgIFNQQVJDL0xFT04yOiBhZGRlZCBzdXBwb3J0IGZvciBHYWlzbGVyIHNpbXVsYXRvciBHUlNJTS9UU0lNIGZvciBTUEFSQy9MRU9OMiB0YXJnZXRzLiBTZWUgd3d3LmdhaXNsZXIuY29tIGZvciBpbmZvcm1hdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+Cgpjb21taXQgNmVkOGE0M2ExOWJiMDI3NTUwMWJjMjg2MDA3ZGFhZmE5MjM1NTJjZgpBdXRob3I6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KRGF0ZToJV2VkIE1hciAyNiAyMzozODo0OCAyMDA4ICswMTAwCgogICAgU1BBUkMvTEVPTjM6IGFkZGVkIHN1cHBvcnQgZm9yIEdSLUNQQ0ktQVgyMDAwIEZQR0EgQVggYm9hcmQuIFRoZSBGUEdBIGlzIGV4Y2hhbmdlYWJsZSBidXQgYSBzdGFuZGFyZCBMRU9OMyBkZXNpZ24gaXMgYXNzdW1lZC4gU2VlIHd3dy5nYWlzbGVyLmNvbSBmb3IgaW5mb3JtYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgoKY29tbWl0IDY5NDAzODNkOWVjMWJmZTJmMTNlMzM5ZTZmNzIzZThkMzRhZjJiMTIKQXV0aG9yOiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+CkRhdGU6CVdlZCBNYXIgMjYgMjM6MzQ6NDcgMjAwOCArMDEwMAoKICAgIFNQQVJDL0xFT04zOiBhZGRlZCBzdXBwb3J0IGZvciBBbHRlcmEgTklPUyBEZXZlbG9wbWVudCBraXQgKFNUUkFUSVggSUkgRWRpdGlvbikgd2l0aCBHUkxJQiB0ZW1wbGF0ZSBkZXNpZ24uIFNlZSB3d3cuZ2Fpc2xlci5jb20gZm9yIGluZm9ybWF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KCmNvbW1pdCA4MjNlZGQ4YTY2ZWQ1MGFmNWFhYmEwYzc5NTY3ZjY3MDYxZTRkNzlhCkF1dGhvcjogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgpEYXRlOglGcmkgTWFyIDI4IDEwOjA2OjUyIDIwMDggKzAxMDAKCiAgICBTUEFSQy9MRU9OMzogYWRkZWQgc3VwcG9ydCBmb3IgR2Fpc2xlciBHUlNJTS9UU0lNMiBTUEFSQy9MRU9OMyBzaW11bGF0b3JuLiBTZWUgd3d3LmdhaXNsZXIuY29tIGZvciBpbmZvcm1hdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+Cgpjb21taXQgNzFkN2U0YzA0ODllNWVkOGZjNjkzODIyMzZhYWEyYTFlNTEwYzEzNQpBdXRob3I6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KRGF0ZToJV2VkIE1hciAyNiAyMzoyNjo0OCAyMDA4ICswMTAwCgogICAgU1BBUkMvTEVPTjM6IGFkZGVkIHN1cHBvcnQgZm9yIEdSLVhDM1MtMTUwMCBib2FyZCB3aXRoIEdSTElCIHRlbXBsYXRlIGRlc2lnbi4gU2VlIHd3dy5nYWlzbGVyLmNvbSBmb3IgYm9hcmQgaW5mb3JtYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgoKY29tbWl0IGIzMzA5OTBjMmYzNmVlNGE4YmIzMTgzNjBlMWM4YmE5NjUyNjlhYjYKQXV0aG9yOiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+CkRhdGU6CUZyaSBNYXIgMjggMTA6MDA6MzMgMjAwOCArMDEwMAoKICAgIFNQQVJDOiBBZGRlZCBzdXBwb3J0IGZvciBTUEFSQyBMRU9OMiBTT0MgUHJvY2Vzc29yLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KCmNvbW1pdCAyYTJmYTc5N2U2M2IxZTNjZDRkNTcwMzE4Y2E1ZmJmODcyM2VmNTNhCkF1dGhvcjogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgpEYXRlOglXZWQgTWFyIDI2IDIzOjAwOjM4IDIwMDggKzAxMDAKCiAgICBTUEFSQy9MRU9OMzogQWRkZWQgQU1CQSBCdXMgUGx1ZyZQbGF5IGluZm9ybWF0aW9uIHByaW50IGNvbW1hbmQgKGFtYmFwcCkuIEl0IGNhbiBwcmludCBhdmFpbGFibGUgY29yZXMgKHR5cGU6IEFIQiBNYXN0ZXIsIEFIQiBTbGF2ZSwgQVBCIFNsYXZlKSwgdGhlaXIgYWRkcmVzcyByYW5nZXMsIElSUSBudW1iZXIgYW5kIHZlcnNpb24uCgogICAgU2lnbmVkLW9mZi1ieTogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgoKY29tbWl0IDFlOWExNjRlMjI5NzY5MzMwMDJjNWU0YjBiNzliMDlmY2VkZTljZDQKQXV0aG9yOiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+CkRhdGU6CVdlZCBNYXIgMjYgMjI6NTE6MjkgMjAwOCArMDEwMAoKICAgIFNQQVJDOiBBZGRlZCBzdXBwb3J0IGZvciBTUEFSQyBMRU9OMyBTT0MgcHJvY2Vzc29yLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KCmNvbW1pdCBiZjNkOGIzMTE2OTU0NmZjZGRiNDczNzM5MWUxODkzZmIxMmQwMzNhCkF1dGhvcjogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgpEYXRlOglGcmkgTWFyIDI4IDA4OjI5OjI2IDIwMDggKzAxMDAKCiAgICBTUEFSQzogYWRkZWQgU1BBUkMgc3VwcG9ydCBmb3IgbmV3IHVpbWFnZSBpbiBjb21tb24gY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+Cgpjb21taXQgMDBhYjMyYzg1NDA1YTRmZTY1ZmQ0MTI4MjQzMDg2MjEwZmM5MGEyMQpBdXRob3I6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KRGF0ZToJV2VkIE1hciAyNiAyMjozNjowMyAyMDA4ICswMTAwCgogICAgU1BBUkM6IGFkZGVkIFNQQVJDIGJvYXJkIGluZm9ybWF0aW9uIHRvIHRoZSBjb21tYW5kIGJkaW5mby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+Cgpjb21taXQgYzJmMDJkYTIxYTNmMzdmMDg3ODU1NGVlYmM3ODVlMDRmZGM0ZTEyOApBdXRob3I6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KRGF0ZToJRnJpIE1hciAyOCAwOTo0NzowMCAyMDA4ICswMTAwCgogICAgU1BBUkM6IEFkZGVkIGdlbmVyaWMgc3VwcG9ydCBmb3IgU1BBUkMgYXJjaGl0ZWN0dXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KCmNvbW1pdCBlNTRlYzBmMDE2ODAzZTRkOTUyNGZmNzFmNzk3MWJkYTBjNTFiMjg3CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgQXByIDMgMTQ6NTA6MzQgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRml4IDR4eCBlbmV0IGRyaXZlciB0byBzdXBwb3J0IDQ2MEdUIEVNQUMyKzMKCiAgICBUaGlzIHBhdGNoIGZpeGVzIGEgcHJvYmxlbSB3aXRoIHRoZSBSR01JSSBzZXR1cCBvZiB0aGUgNDYwR1QuIFRoZSA0NjBHVAogICAgaGFzIDIgUkdNSUkgaW5zdGFuY2VzIGFuZCB3ZSBuZWVkIHRvIGNvbmZpZ3VyZSB0aGUgMm5kIFJHTUlJIGluc3RhbmNlCiAgICBmb3IgdGhlIEVNQUMyKzMgY2hhbm5lbHMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGMyYTU0NWNlMzNiMjZkODAzMzdmODBiNTMzODI4ODM5MjQ5ZmIxYzkKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglXZWQgQXByIDIgMDg6MDM6NTYgMjAwOCArMDIwMAoKICAgIE1QQzh4eDogRml4IGxpYmZkdCBzdXBwb3J0IGludHJvZHVjZWQgaW4gY29tbWl0IDc3ZmY3Yjc0CgogICAgZmR0LmM6IEluIGZ1bmN0aW9uICdmdF9jcHVfc2V0dXAnOgogICAgZmR0LmM6MzM6IHdhcm5pbmc6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdkb19maXh1cF9ieV9wcm9wX3UzMicKICAgIGZkdC5jOjM5OiB3YXJuaW5nOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnZG9fZml4dXBfYnlfY29tcGF0X3UzMicKICAgIGZkdC5jOjQzOiB3YXJuaW5nOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnZmR0X2ZpeHVwX2V0aGVybmV0JwogICAgZmR0LmM6NDU6IHdhcm5pbmc6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdmZHRfZml4dXBfbWVtb3J5JwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNGFiZDg0NGQ4ZWIxMDg3MzZlMWNmOGZiZjNkYmY2MWYyZDVmYzExYgpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIE1hciAzMSAyMDo0NTo1NiAyMDA4IC0wNTAwCgogICAgRml4IGZkdCBzZXQgY29tbWFuZCB0byBjb25mb3JtIHRvIGR0cyBzcGVjCgogICAgVGhlIGZkdCBzZXQgY29tbWFuZCB3YXMgdHJlYXRpbmcgcHJvcGVydGllcyBzcGVjaWZpZWQgYXMgPDAwPiBhbmQgPDAwMTE+CiAgICBhcyBieXRlIHN0cmVhbXMsIHJhdGhlciB0aGFuIGFzIGFuIGFycmF5IG9mIGNlbGxzLglBcyB3ZSBhbHJlYWR5IGhhdmUKICAgIHN5bnRheCBmb3IgZXhwcmVzc2luZyB0aGUgZGVzaXJlIGZvciBhIHN0cmVhbSBvZiBieXRlcyAoWyB4eCB4eCAuLi5dKSwKICAgIHdlIHNob3VsZCB1c2UgdGhlIDw+IHN5bnRheCB0byBkZXNjcmliZSBhcnJheXMgb2YgY2VsbHMsIHdoaWNoIGFyZSBhbHdheXMKICAgIDMyLWJpdHMgcGVyIGVsZW1lbnQuICBJZiB3ZSBpbWFnaW5lIHRoaXMgbGlrZWx5IChJTUhPKSBzY2VuYXJpbzoKCiAgICA+IGZkdCBzZXQgL2V0aGVybmV0LXBoeUAxIHJlZyA8MT4KCiAgICBXaXRoIHRoZSBvbGQgY29kZSwgdGhpcyB3b3VsZCBjcmVhdGUgYSBiYWQgZmR0LCBzaW5jZSB0aGUgcmVnIGNlbGwgd291bGQgYmUKICAgIG1hZGUgdG8gYmUgb25lIGJ5dGUgaW4gbGVuZ3RoLiAgQnV0IHRoZSBjZWxsIG11c3QgYmUgNCBieXRlcywgc28gdGhpcyB3b3VsZAogICAgYnJlYWsgbXlzdGVyaW91c2x5LgoKICAgIEFsc28sIHRoZSBkdHMgc3BlYyBjYWxscyBmb3IgY29uc3RhbnRzIGluc2lkZSB0aGUgYW5nbGUgYnJhY2tldHMgKDw+KQogICAgdG8gY29uZm9ybSB0byBDIGNvbnN0YW50IHN0YW5kYXJkcyBhcyB0aGV5IHBlcnRhaW4gdG8gYmFzZS4KICAgIFRha2UgdGhpcyBzY2VuYXJpbzoKCiAgICA+IGZkdCBzZXQgL2V0aGVybmV0QGYwMCByZWcgPDB4ZTI1MDAwMFwgMHgxMDAwPgoKICAgIFRoZSBvbGQgZmR0IGNvbW1hbmQgd291bGQgY29tcGxhaW4gdGhhdCBpdCBjb3VsZG4ndCBwYXJzZSB0aGF0LiAgT3IsIGlmIHlvdQogICAgd2FudGVkIHRvIHNwZWNpZnkgdGhhdCBhIGNlcnRhaW4gY2xvY2sgcmFuIGF0IDMzIE1IeiwgeW91J2QgYmUgcmVxdWlyZWQgdG8KICAgIGRvIHRoaXM6CgogICAgPiBmZHQgc2V0IC9teWRldiBjbG9jayA8MWY3OGE0MD4KCiAgICBXaGVyZWFzIHRoZSBuZXcgY29kZSB3aWxsIGFjY2VwdCBkZWNpbWFsIG51bWJlcnMuCgogICAgV2hpbGUgSSB3YXMgaW4gdGhlcmUsIEkgZXh0ZW5kZWQgdGhlIGZkdCBjb21tYW5kIHBhcnNlciB0byBoYW5kbGUgcHJvcGVydHkKICAgIHN0cmluZ3Mgd2hpY2ggYXJlIHNwbGl0IGFjcm9zcyBtdWx0aXBsZSBhcmd1bWVudHM6CgogICAgPiBmZHQgc2V0IC9ldGhlcm5ldEBmMDAgaW50ZXJydXB0cyA8IDMzIDIgMzQgMiAzNiAyID4KICAgID4gZmR0IHAgL2V0aGVybmV0QGYwMAogICAgZXRoZXJuZXRAZjAwIHsKCWludGVycnVwdHMgPSA8MHgyMSAweDIgMHgyMiAweDIgMHgyNCAweDI+OwogICAgfTsKCiAgICBMYXN0bHksIHRoZSBmZHQgcHJpbnQgY29kZSB3YXMgcmVhcnJhbmdlZCBzbGlnaHRseSB0byBwcmludCBhcnJheXMgb2YgY2VsbHMKICAgIGlmIHRoZSBsZW5ndGggb2YgdGhlIHByb3BlcnR5IGlzIGEgbXVsdGlwbGUgb2YgNCBieXRlcywgYW5kIHRvIG5vdCBwcmludAogICAgbGVhZGluZyB6ZXJvcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMWMyOTI2YWJkZDdkYjg5Mjk2YThjYzdmMjI0ZGQ5ZDVkNGUzN2E1NgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEFwciAyIDA4OjM5OjMzIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IENhbnlvbmxhbmRzOiBJbml0IFNBVEEvUENJZSBwb3J0IGNvcnJlY3RseQoKICAgIENhbnlvbmxhbmRzICg0NjBFWCkgc2hhcmVzIHRoZSBmaXJzdCBQQ0llIGludGVyZmFjZSB3aXRoIHRoZSBTb0MgU0FUQQogICAgaW50ZXJmYWNlLiBUaGlzIHVzYWdlIGNhbiBiZSBjb25maWd1cmVkIHdpdGggdGhlIGp1bXBlciBKNi4gVGhpcyBwYXRjaAogICAgY29ycmVjdGx5IGNvbmZpZ3VyZXMgdGhlIFNBVEEvUENJZSBQSFkgZm9yIFNBVEEgdXNhZ2Ugd2hlbiB0aGlzIGp1bXBlcgogICAgaXMgaW5zdGFsbGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2ZmUyOTQ2ZjE5ODQ4MTI1NGE2ZWU5NjAwZDc0NTZiODMxNmE0MDgzCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE1hciAyOCAxNzozNzo0OSAyMDA4IC0wNTAwCgogICAgcmVtb3ZlIHJlbWFpbmluZyBDT05GSUdfT0ZfSEFTX3tVQk9PVF9FTlYsQkRfVH0gY29kZQoKICAgIGZpbmlzaCBvZmYgd2hhdCBjb21taXQgNDNkZGQ5YzgyMGZlYzQ0ODE2MTg4ZjUzMzQ2YjQ2NGUyMGIzMTQyZCwKICAgICJSZW1vdmUgZGVwcmVjYXRlZCBDT05GSUdfT0ZfSEFTX1VCT09UX0VOViBhbmQgQ09ORklHX09GX0hBU19CRF9UIgogICAgc3RhcnRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGI1ODczZjE3MzJiOTJhMjU2OTBlMTUxM2I5MGRmYjBkNjQ0ZjY2OTcKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUdWUgQXByIDEgMDc6MzA6NTEgMjAwOCArMDIwMAoKICAgIGRhdGFmbGFzaDogTW92ZSBDT05GSUdfSEFTX0RBVEFGTEFTSCB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMmQ5MzRlYTUxZjI3NjUyMmI1MzJmODcwYTgyMGU4NDRmZjQ4MGI1YgpBdXRob3I6IFRvciBLcmlsbCA8dG9yQGV4Y2l0by5jb20+CkRhdGU6CUZyaSBNYXIgMjggMTU6Mjk6NDUgMjAwOCArMDEwMAoKICAgIEFkZCBWaXRlc3NlIDg2MDEgc3VwcG9ydCB0byBUU0VDIGRyaXZlcgoKICAgIEFkZCBwaHlfaW5mbyBmb3IgVml0ZXNzZSBWU0M4NjAxLgogICAgQWRkIGNvbmZpZyBvcHRpb24sIENGR19WU0M4NjAxX1NLRVdGSVgsIHRvIGVuYWJsZSBSR01JSSBza2V3IHRpbWluZyBjb21wZW5zYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogVG9yIEtyaWxsIDx0b3JAZXhjaXRvLmNvbT4KICAgIFJldmlld2VkLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAzZWFjNjQwMmE1MDhiMGY2OGEyMWNjOWNiYzJjYzQ5MzQ3ZGUwYzMxCkF1dGhvcjogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgpEYXRlOglNb24gTWFyIDMxIDE0OjI1OjAwIDIwMDggKzAwMDAKCiAgICBTUEFSQzogYWRkZWQgU01DOTExMTEgZHJpdmVyIGluIGFuZCBvdXQgbWFjcm9zIGZvciBMRU9OIHByb2Nlc3NvcnMuCgogICAgVGhpcyBwYXRjaCBtYWtlcyBTUEFSQy9MRU9OIHByb2Nlc3NvcnMgYWJsZSB0byByZWFkIGFuZCB3cml0ZQogICAgdG8gdGhlIFNNQzkxMTExIGNoaXAgdXNpbmcgdGhlIGNoaXAgZXh0ZXJuYWwgSS9PIGJ1cyBvZiB0aGUgbWVtb3J5CiAgICBjb250cm9sbGVyLiBUaGlzIHBhdGNocyBkZWZpbmVzIHRoZSBzdGFuZGFyZCBpbiBhbmQgb3V0IG1hY3JvcwogICAgZXhwZWN0ZWQgYnkgdGhlIFNNQzkxMTEgZHJpdmVyLgoKICAgIFRvIGFjY2VzcyB0aGF0IEkvTyBidXMgb25lIG11c3Qgc2V0IHVwIHRoZSBtZW1vcnkgY29udHJvbGxlcgogICAgKE1DVFJMIG9yIEZUTUNUUkwpIGNvcnJlY3RseS4gSXQgaXMgYXNzdW1lZCB0aGF0IHRoZSB1c2VyIHNldHMKICAgIHVwIHRoaXMgY29ycmVjdGx5IHdoZW4gdGhlIG90aGVyIE1DVFJMIHBhcmFtZXRlcnMgYXJlIHNldCB1cC4gSXQKICAgIGNhbiBiZSBzZXQgdXAgZnJvbSB0aGUgYm9hcmQgY29uZmlndXJhdGlvbiBoZWFkZXIgZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDNjYTdjNTU4ZWJhMzYzMzI1NTZiYzQ3MGQ0NWUyZjVkNDJiZDBjYTYKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglXZWQgTWFyIDI2IDE4OjUyOjM0IDIwMDggKzAxMDAKCiAgICBBZGQgbWFpbnRhaW5lcnNoaXAgaW5mb3JtYXRpb24gZm9yIEFUOTFDQVA5QURLIGFuZCBBVDkxU0FNOTI2MEVLIGJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Cgpjb21taXQgNGUwM2RkZTg0ZGQyYzkxZTMyN2NkYzIzYWUxMTlkNDMyNTU5YTdhMwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CU1vbiBNYXIgMzEgMjE6MzE6MDQgMjAwOCArMDIwMAoKICAgIEFUOTFTQU05MjYwRUs6IE1vdmUgQ09ORklHX0NNRF9OQU5EIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAwMTc2ZDQzZTc1OWE2ZTAwY2FjYzg1ZWZmMjZmZDYwZjc0YjRmNmI3CkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJV2VkIE1hciAyNiAxODo1MjozMyAyMDA4ICswMTAwCgogICAgQWRkIHN1cHBvcnQgZm9yIEFUOTFTQU05MjYwRUsKCiAgICBTdXBwb3J0IGZvciBib290aW5nIGZyb20gaW50ZXJuYWwgRGF0YUZsYXNoLCBleHRlcm5hbCBEYXRhRmxhc2ggY2FyZAogICAgb3IgTkFORCBmbGFzaCBpcyBhdmFpbGFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KCmNvbW1pdCAxNzYyZjEzYjRhYWI4OGI2ODViMTcyMmYxN2RhZGEyNDc5NDU2MjRiCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJTW9uIE1hciAzMSAyMToyMDo0OSAyMDA4ICswMjAwCgogICAgQVQ5MVNBTTk6IE1vdmUgQ09ORklHX0hBU19EQVRBRkxBU0ggdG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDc2MTcxMjE4OGIzNTM0OTRkZWZiMmI2NDQ0OTFmZjczZDBkYWFhNmYKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglNb24gTWFyIDMxIDIxOjEyOjE3IDIwMDggKzAyMDAKCiAgICBBVDkxQ0FQOUFESzogTW92ZSBDT05GSUdfQ01EX05BTkQgdG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDk4M2MxZGIwNGMxZGQwZjkyZTAyZjA2ZDI5ZjBjNjVhM2Q5YTI2ODcKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglXZWQgTWFyIDI2IDIwOjUyOjMyIDIwMDggKzAxMDAKCiAgICBQb3J0IEFUOTFDQVA5IHRvIHRoZSBuZXcgaGVhZGVycwoKICAgIEFkYXB0IHRoZSBleGlzdGluZyBBVDkxQ0FQOSBjb2RlIHRvIHRoZSBuZXcgaGVhZGVycyBhbmQgQVBJcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgoKY29tbWl0IDE3N2U4YTVhYzgxYmJjNTMxYTFkNTRhYmRiNDdmMjg2MDI2NmMzYWEKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglXZWQgTWFyIDI2IDE5OjUyOjMxIDIwMDggKzAxMDAKCiAgICBGaW5pc2ggaGVhZGVyIGZpbGVzIHJld29ya2luZwoKICAgIFJlcGxhY2UgQVQ5MUNBUDkuaCBmaWxlIHdpdGggc2V2ZXJhbCBzcGxpdHRlZCBoZWFkZXIgZmlsZXMgY29taW5nCiAgICBmcm9tIHRoZSBMaW51eCBrZXJuZWwuCgogICAgVGhpcyBpcyBwYXJ0IDIgb2YgdGhlIHJlcGxhY2VtZW50OiBtb3JlIGhlYWRlciBpbXBvcnRzIGFuZCBlZGl0cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgoKY29tbWl0IDZkMWRiYmJmOWZkZjcyNzM4NDAwMmU1NTNlNjE1YzE1ZDhiOTY3ZjQKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglXZWQgTWFyIDI2IDE5OjUyOjMwIDIwMDggKzAxMDAKCiAgICBJbXBvcnQgc2V2ZXJhbCBoZWFkZXIgZmlsZXMgZnJvbSBMaW51eAoKICAgIFJlcGxhY2UgQVQ5MUNBUDkuaCBmaWxlIHdpdGggc2V2ZXJhbCBzcGxpdHRlZCBoZWFkZXIgZmlsZXMgY29taW5nCiAgICBmcm9tIHRoZSBMaW51eCBrZXJuZWwuCgogICAgVGhpcyBpcyBwYXJ0IDEgb2YgdGhlIHJlcGxhY2VtZW50OiBwcmlzdGluZSBoZWFkZXIgZmlsZXMgaW1wb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Cgpjb21taXQgYThhNzhmMmQ5OWRjMWJkMzBkYzM1OTVkYTExODUzOWI1MDZjNjExOApBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVdlZCBNYXIgMjYgMjA6NTI6MjggMjAwOCArMDEwMAoKICAgIE1vdmUgYXQ5MWNhcDkgc3BlY2lmaWMgZmlsZXMgdG8gYXQ5MXNhbTkgZGlyZWN0b3J5CgogICAgQVQ5MUNBUDkgYW5kIEFUOTFTQU05IFNvQ3MgYXJlIHZlcnkgY2xvc2UgaGFyZHdhcmUgd2lzZSwgc28gYQogICAgY29tbW9uIGluZnJhc3RydWN0dXJlIGNhbiBiZSB1c2VkLiBMZXQgdGhpcyBpbmZyYXN0cnVjdHVyZSBiZQogICAgbmFtZWQgYWZ0ZXIgdGhlIEFUOTFTQU05IGZhbWlseSwgYW5kIG1vdmUgdGhlIGV4aXN0aW5nIEFUOTFDQVA5CiAgICBmaWxlcyB0byB0aGUgbmV3IHBsYWNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Cgpjb21taXQgNjExMDZhNTY1ODcwZmY1MDNmOTJiMjUxYjk0YmQ3YWZlZjg4OWEwNApBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVdlZCBNYXIgMjYgMjE6NTI6MjcgMjAwOCArMDEwMAoKICAgIFVzZSB0aW1lcl9pbml0KCkgaW5zdGVhZCBvZiBib2FyZCBzdXBwbGllZCBpbnRlcnJ1cHRfaW5pdCgpCgogICAgVGhlIHRpbWVyIG9uIEFUOTFDQVA5L0FUOTFTQU05IGlzIHN1cHBsaWVkIGJ5IHRoZSBTb0MsIGFuZCBub3QgYnkKICAgIHRoZSBib2FyZCwgc28gdXNlIHRpbWVyX2luaXQoKSBpbnN0ZWFkIG9mIGludGVycnVwdF9pbml0KCkuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KCmNvbW1pdCA1NjA0ZTIxNzhjNTIxOGZiZmRiYTJlNDI5M2NhNzY1MmU4MjlhYzI1CkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJV2VkIE1hciAyNiAyMTo1MjozNiAyMDA4ICswMTAwCgogICAgQ2xlYW51cCBEYXRhRmxhc2ggcGFydGl0aW9uIGhhbmRsaW5nCgogICAgRGF0YUZsYXNoIHBhcnRpdGlvbiBpbmZvcm1hdGlvbiBoYXMgYmVjb21lIGEgbWVzcy4gVGhpcyBwYXRjaAogICAgZGVmaW5lcyBhIHNpbmdsZSBwYXJ0aXRpb24gc2NoZW1lIGZvciBBdG1lbCBEYXRhRmxhc2hlcy4gVGhpcyBwYXJ0aXRpb24KICAgIHNjaGVtZSB3aWxsIGJlIHVzZWQgYnkgYWxsIEFUOTFDQVA5IGFuZCBBVDkxU0FNOSBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KCmNvbW1pdCA5YjQ2NDMyZmM2NWNlMGYwODI2YjMyZTRmMTVjMTViMzNjY2I4ZDQyCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE1hciAyOCAwODo0Nzo0NSAyMDA4IC0wNTAwCgogICAgQ29sZEZpcmU6IEZpeCBhbGlnbm1lbnQgaXNzdWUgYWZ0ZXIgQ09ORklHX0lERU5UX1NUUklORyBpbiBzdGFydC5TCgogICAgV2hlbiB0aGUgdmVyc2lvbl9zdHJpbmcgZnVuY3Rpb24gaW4gc3RhcnQuUyBpcyBub3QgNC1ieXRlIGFsaWduLAogICAgaXQgd2lsbCBjYXVzZSB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzICJ1bmFsaWduZWQgb3Bjb2RlcyBkZXRlY3RlZAogICAgaW4gZXhlY3V0YWJsZSBzZWdtZW50Ii4gVGhpcyBpc3N1ZSBhZmZlY3RzIGFsbCBDb2xkRmlyZSBDUFVzLgogICAgQnkgYWRkaW5nIC5hbGlnbiA0IGFmdGVyIENPTkZJR19JREVOVF9TVFJJTkcsIGl0IHdpbGwgcGFkIDAncyBpZgogICAgaXQgaXMgbm90IGFsaWduZWQuCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiYWU2MWVlZmUxNWI0ZDQ1NDA2MGE3MTQwZTQ5YWU1ODMyMmJlODAzCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE1hciAyNSAxNTo0MToxNSAyMDA4IC0wNTAwCgogICAgQ29sZEZpcmU6IEFkZCBkc3BpIGFuZCBzZXJpYWwgZmxhc2ggc3VwcG9ydCBmb3IgTUNGNTQ0NXgKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ4ZWFkN2E3YTkyMmZjZWFmNDk0ZTM1MmFiZmFiODIxNmE0MWI0MTcKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgTWFyIDE4IDE3OjM3OjAxIDIwMDggLTA1MDAKCiAgICBDb2xkRmlyZTogUmVtb3ZlIFI1MjAwIGJvYXJkCgogICAgVGhpcyBib2FyZCBuZXZlciB3ZW50IGludG8gcHJvZHVjdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IFphY2hhcnkgUC4gTGFuZGF1IDx6YWNoYXJ5LmxhbmRhdUBsYWJ4dGVjaG5vbG9naWVzLmNvbT4KICAgIEFja2VkLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDU0NWM4ZTBhN2NkM2NhOWQzODQ2NjY4ZjY5YjBkMjAxMjUwYWJlYTgKQXV0aG9yOiBNYXR0aGV3IEZldHRrZSA8W21hdHRoZXcuZmV0dGtlQGdtYWlsLmNvbV0+CkRhdGU6CVRodSBKYW4gMjQgMTQ6MDI6MzIgMjAwOCAtMDYwMAoKICAgIENvbGRGaXJlOiBBZGRlZCBNNTI3NUVWQiBzdXBwb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoZXcgRmV0dGtlIDxtZmV0dGtlQHZpZGVvbi1jZW50cmFsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjcxZDlkOTFhMmNkOWMzMGIyYjYzNjlmMTVjMWE0NmMxMTUzN2MyYgpBdXRob3I6IE1hdHRoZXcgRmV0dGtlIDxbbWF0dGhldy5mZXR0a2VAZ21haWwuY29tXT4KRGF0ZToJTW9uIEZlYiA0IDE1OjM4OjIwIDIwMDggLTA2MDAKCiAgICBDb2xkRmlyZTogQWRkZWQgTUNGNTI3NSBjcHUgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IEZldHRrZSA8bWZldHRrZUB2aWRlb24tY2VudHJhbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ0ZTViOWVkYWIwNzdhYmE2ZTliODQ5YWZhNGI3ZmJkOGZkN2IwMmIKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gTWFyIDE3IDEyOjE0OjExIDIwMDggLTA1MDAKCiAgICBDb2xkRmlyZTogRGVmaW5lIGJvb3RkZWxheSBpbiBjb25maWd1cmF0aW9uIGZpbGUgZm9yIE01MjI3N0VWQgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHQgV2FkZWwgPE1hdHQuV2FkZGVsQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3Nzg3OGYxNmNlZGVlMTcxNjFmZjIzMzY5OTA5NzBmZmZjNmNlYTM1CkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIE1hciAxNyAxMjowOTowNyAyMDA4IC0wNTAwCgogICAgQ29sZEZpcmU6IEZpeCBzZWNvbmQgbWVtb3J5IENoaXBzZWxlY3QgZm9yIE01NDc1RVZCCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0M2Q2MDY0MjM5NWE1NTA5NTZjYjIxZDI4N2M4Y2ZhNTYzOTEzZDI4CkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE1hciAxMyAxNDoyNjozMiAyMDA4IC0wNTAwCgogICAgQ29sZEZpcmU6IFVwZGF0ZSBjb3JyZWN0IEZMQVNIQkFSIGFuZCBSQU1CQVIxIGZvciBNQ0Y1MjgyCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlYjE0ZWJlODEzYTBjYjVkNDc5MDUyMjhkYTQ0NmE1YWQ2OTI0NzNiCkF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CkRhdGU6CVN1biBNYXIgMzAgMjA6MzM6MDQgMjAwOCAtMDUwMAoKICAgIHBwYzR4eDogQWRkIENGR19NRU1fVE9QX0hJREUgdG8gRGVuYWxpIFNQRC1iYXNlZCBTRFJBTSBzZXR1cAoKICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgoKY29tbWl0IDAyZTM4OTIwMjExMTJmMjEwNjdkOWVkMWQwNGFlNDE4MjcyNWJhNTIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBNYXIgMzEgMTI6MjA6NDggMjAwOCArMDIwMAoKICAgIHBwYzR4eDogU21hbGwgd2hpdGVzcGFjZSBmaXggb2YgZXNkIHBhdGNoZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDM0Mzk0YWJiNTI0Nzg1MDQ3YzgxNWYwMGRkZThjZGJkYzE1OTNjNQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglTdW4gTWFyIDMwIDE4OjUyOjQ0IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IENsZWFudXAgUE1DNDQwIGJvYXJkIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCBhNmNjNmMzNzE4OGQ4NWMyNWQxNjdhNDUxNWRhODZmNDhkOWE1ODNlCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVN1biBNYXIgMzAgMTg6NTI6MDYgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogQWRkIHB0bSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgUE1DNDQwCgogICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBwdG0xbGEsIHB0bTFtcywgcHRtMmxhIGFuZCBwdG0ybXMKICAgIGVudmlyb25tZW50IHZhcmlhYmxlcy4KCiAgICBDbGVhbnVwIHBjaV90YXJnZXRfaW5pdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCA3YzkxZjUxYTJmZTI5NjkwOTE0N2YxNjQ2YTE0MTI3MjlkZDEwYjFkCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVN1biBNYXIgMzAgMTg6MDE6MTUgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogTWlub3IgdXBkYXRlcyBmb3IgRFU0NDAgYm9hcmRzCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgZDViZmZlYjg2OGQ2YjRkNDYyZjU1OGRhYzQzMDExMDI3YjY2NDRiNwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIEZlYiAxOSAwMDo1NDoyMCAyMDA4IC0wNTAwCgogICAgQmxhY2tmaW46IGNsZWFudXAgYW5kIG92ZXJoYXVsIGNvbW1vbiBib2FyZCBpbml0IGZ1bmN0aW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBiODZiMzQxNmY4NzQzNThhY2FmMDc1MTllNzYyMGNkYjIxNDVmNzViCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgRmViIDE5IDAwOjUwOjU4IDIwMDggLTA1MDAKCiAgICBCbGFja2ZpbjogY2xlYW51cCBsaWJfYmxhY2tmaW4vY2FjaGUuYwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA5MTcxZmM4MTcyMmMyMGZkYjVhODI5YTU4YjE3YzllYWFkZDVmYjQ0CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gTWFyIDMwIDE1OjQ2OjEzIDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogdW5pZnkgY3B1IGFuZCBib290IG1vZGVzCgogICAgQWxsIG9mIHRoZSBkdXBsaWNhdGVkIGNvZGUgZm9yIEJsYWNrZmluIHByb2Nlc3NvcnMgYW5kIGJvb3QgbW9kZXMgaGF2ZSBiZWVuCiAgICB1bmlmaWVkLiAgQWZ0ZXIgYWxsLCB0aGUgY29yZSBpcyB0aGUgc2FtZSBmb3IgYWxsIHByb2Nlc3NvcnMsIGp1c3QgdGhlCiAgICBwZXJpcGhlcmFsIHNldCBkaWZmZXJzICh3aGljaCBnZXRzIGhhbmRsZWQgaW4gdGhlIGRyaXZlcnMpLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA4ODBjYzQzODFlYTgzNjAyNDhjZGRjZGY4N2E2NDU2Njc0NWE1NzI0CkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJV2VkIE1hciAyNiAyMjo1MjozNSAyMDA4ICswMTAwCgogICAgRml4IENGR19OT19GTEFTSCBjb21waWxhdGlvbi4KCiAgICBNYW55IEF0bWVsIGJvYXJkcyBoYXZlIG5vICJyZWFsIiAoTk9SKSBmbGFzaCBvbiBib2FyZCwgYW5kIHJlbHkgb25seQogICAgb24gRGF0YUZsYXNoIGFuZCBOQU5EIG1lbW9yaWVzLiBUaGlzIHBhdGNoIGVuYWJsZXMgQ0ZHX05PX0ZMQVNIIHRvCiAgICBiZSBwcmVzZW50IGluIGEgYm9hcmQgY29uZmlndXJhdGlvbiBmaWxlLCB3aGlsZSBzdGlsbCBlbmFibGluZyBmbGFzaAogICAgY29tbWFuZHMgbGlrZSAnZmxpbmZvJywgJ3Byb3RlY3QnLCBldGMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KCmNvbW1pdCA5Y2U3ZTUzYWJkMDM5ZGVjZWExYWY2N2FlYzgxYmJkNWRmN2EyNTkzCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgRmViIDE5IDAwOjU4OjEzIDIwMDggLTA1MDAKCiAgICBCbGFja2ZpbjogQkY1Mzctc3RhbXA6IGNsZWFudXAgc3BpIGZsYXNoIGRyaXZlcgoKICAgIFRoaXMgcHVudHMgdGhlIG9sZCBzcGkgZmxhc2ggZHJpdmVyIGZvciBhIG5ldy9nZW5lcmFsaXplZCBvbmUgdW50aWwgdGhlCiAgICBjb21tb24gb25lIGNhbiBiZSBpbnRlZ3JhdGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBiYjhlM2NmMjViYzBiMDQ5MzZjMGMxYTA3NTk4NWRkODcwMGEyNDRiCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJU3VuIE1hciAzMCAxMTozNDozNCAyMDA4IC0wNDAwCgogICAgRml4IG1hY3JvIHR5cG8gaW4gY29tbW9uL2NtZF9taWkuYwoKICAgIFRoaXMgdHlwbyB3YXMgaW50cm9kdWNlZCBpbiBjb21taXQgMjMzYThiY2Q5NDk5N2YzZjM0NTgzM2EzYjgyZTgzNjIyMmYyYTIwNi4gIEkKICAgIGFjdHVhbGx5IGFwcGxpZWQgdGhlIHdyb25nIHBhdGNoLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZjFiOTg1ZjJkNzI0Y2NhYTRkM2RlZjA3OTE3ZjBjYWFmMThmYTc3ZApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBNYXIgMzAgMTY6Mzk6NTMgMjAwOCArMDIwMAoKICAgIHVzZSBjb3JyZWN0IGF0OTFybTkyMDAgcmVnaXN0ZXIgbmFtZSBpbiBtNTAxc2sgYm9hcmQKCiAgICBUaGlzIGZpeGVzIGEgbmFtaW5nIGJ1ZyBmb3IgYXQ5MXJtOTIwMCBsb3dsZXZlbCBpbml0IGNvZGU6CiAgICBOT1IgYm9vdCBmbGFzaCBpcyBvbiBjaGlwc2VsZWN0IDAsIG5vdCBjaGlwc2VsZWN0IDIuICBUaGlzCiAgICBtYWtlcyBjb2RlIHVzZSB0aGUgcmVnaXN0ZXIgbmFtZSBmcm9tIGNoaXAgZGF0YXNoZWV0cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDQ4MGVkMWRlYTEwM2ExYzhmNDU5MWFmYzc3ZDJkZTNjNzg2OGQ5ODMKQXV0aG9yOiBEYXZpZCBCcm93bmVsbCA8ZGF2aWQtYkBwYWNiZWxsLm5ldD4KRGF0ZToJRnJpIEphbiAxOCAxMjo1NTowMCAyMDA4IC0wODAwCgogICAgdXNlIGNvcnJlY3QgYXQ5MXJtOTIwMCByZWdpc3RlciBuYW1lCgogICAgVGhpcyBmaXhlcyBhIG5hbWluZyBidWcgZm9yIGF0OTFybTkyMDAgbG93bGV2ZWwgaW5pdCBjb2RlOgogICAgTk9SIGJvb3QgZmxhc2ggaXMgb24gY2hpcHNlbGVjdCAwLCBub3QgY2hpcHNlbGVjdCAyLiAgVGhpcwogICAgbWFrZXMgY29kZSB1c2UgdGhlIHJlZ2lzdGVyIG5hbWUgZnJvbSBjaGlwIGRhdGFzaGVldHMuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Cgpjb21taXQgYTM1NDNkNmRjNTJiMGJhOWM2NDAxNjY4N2NmMzJkNjAwYjMxYTQ3NgpBdXRob3I6IERhdmlkIEJyb3duZWxsIDxkYXZpZC1iQHBhY2JlbGwubmV0PgpEYXRlOglGcmkgSmFuIDE4IDEyOjQ1OjQ1IDIwMDggLTA4MDAKCiAgICBhZGQgbWlzc2luZyBBUk0gYm9hcmRzIHRvIE1BS0VBTEwKCiAgICBBZGQgc29tZSBtaXNzaW5nIEFSTSBib2FyZHMgdG8gTUFLRUFMTC4gIFRoZXNlIGJ1aWxkIGNvcnJlY3RseSwKICAgIHVubGlrZSBzZXZlcmFsIG9mIHRoZSBib2FyZHMgYWxyZWFkeSBsaXN0ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Cgpjb21taXQgMDY2YmViZDYzNTNlMzNhZjNhZGVmYzM0MDQ1NjA4NzE2OTllOTk2MQpBdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+CkRhdGU6CVN1biBNYXIgMzAgMTE6MzQ6MDkgMjAwOCArMDEwMAoKICAgIEJyYWNrZXQgUkVBRF9USU1FUiBtYWNybyBpbiBjcHUvYXJtMTEzNi9vbWFwMjR4eC9pbnRlcnJ1cHRzLmMKICAgIHRvIHByZXZlbnQgY29tcGlsYXRpb24gZXJyb3IuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KCmNvbW1pdCA3YTgzN2I3MzEwMTY2YWU4ZmM4YjhkNjZkN2VmMDFiNjBhODBmOWQ2CkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxbbGdAZGVueC5kZV0+CkRhdGU6CVN1biBNYXIgMzAgMTE6MzI6MzAgMjAwOCArMDEwMAoKICAgIFN1cHBvcnQgZm9yIHRoZSBNWDMxQURTIGV2YWx1YXRpb24gYm9hcmQgZnJvbSBGcmVlc2NhbGUKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIE1YMzFBRFMgZXZhbHVhdGlvbiBib2FyZCBmcm9tIEZyZWVzY2FsZSwKICAgIGluaXRpYWxpemF0aW9uIGNvZGUgaXMgY29waWVkIGZyb20gUmVkQm9vdCBzb3VyY2VzLCBhbHNvIHByb3ZpZGVkIGJ5IEZyZWVzY2FsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgYzg4YWUyMDU4MGIyYjAxNDg3YjRjZGNjOGIyYTExM2Y1NTFhZWUzNgpBdXRob3I6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KRGF0ZToJU3VuIE1hciAzMCAxMTozMjoyNyAyMDA4ICswMTAwCgogICAgUGh5dGVjIFBoeWNvcmUtaS5NWDMxIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFBoeXRlYyBQaHljb3JlLWkuTVgzMSBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCBhMTQ3ZTU2ZjAzODcxYmJhNGYwNTA1OGQ1ZTA0Y2U3ZGViMDEwYjA0CkF1dGhvcjogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgpEYXRlOglTdW4gTWFyIDMwIDExOjMyOjI0IDIwMDggKzAxMDAKCiAgICBteDMxIGxpdGVraXQgc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgbXgzMSBsaXRla2l0IGJvYXJkCgogICAgU2lnbmVkLW9mZi1ieTogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgoKY29tbWl0IGQ2Njc0ZTBlMmE2YTFmMDMzOTQ1Zjc4ODM4NTY2MjEwZDNmMjhjOTUKQXV0aG9yOiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+CkRhdGU6CVN1biBNYXIgMzAgMTE6MzI6MjEgMjAwOCArMDEwMAoKICAgIGFkZCBTTVNDIExBTjl4MXggTmV0d29yayBkcml2ZXIKCiAgICBUaGlzIHBhdGNoIGFkZHMgYSBkcml2ZXIgZm9yIHRoZSBmb2xsb3dpbmcgc21zYyBuZXR3b3JrIGNvbnRyb2xsZXJzOgogICAgTEFOOTExNQogICAgTEFOOTExNgogICAgTEFOOTExNwogICAgTEFOOTIxNQogICAgTEFOOTIxNgogICAgTEFOOTIxNwoKICAgIFNpZ25lZC1vZmYtYnk6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCA4Yzg0NjNjY2U0NGQ4NDllMzc3NDQ3NDliMzJkMzhlMWRmYjEyZTUwCkF1dGhvcjogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgpEYXRlOglTdW4gTWFyIDMwIDExOjMyOjE2IDIwMDggKzAxMDAKCiAgICBhZGQgYW4gaTJjIGRyaXZlciBmb3IgbXgzMQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBhbiBpMmMgZHJpdmVyIGZvciBGcmVlc2NhbGUgaS5NWCBwcm9jZXNzb3JzCgogICAgU2lnbmVkLW9mZi1ieTogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgoKY29tbWl0IGM5OGI0N2FkMjRiMmQ5MWY0MWMwOWEzZDYyZDdmNzBhZDg0ZjRiN2QKQXV0aG9yOiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+CkRhdGU6CVN1biBNYXIgMzAgMTE6MzA6NDMgMjAwOCArMDEwMAoKICAgIGNvcmUgc3VwcG9ydCBmb3IgRnJlZXNjYWxlIG14MzEKCiAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGNvcmUgc3VwcG9ydCBmb3IgRnJlZXNjYWxlIG14MzEKCiAgICBTaWduZWQtb2ZmLWJ5OiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgOGJmNjlkODE3ODI2MTkxODc5MzNhNjA1ZjFhOTVlZTFkMDY5NDc4ZApBdXRob3I6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KRGF0ZToJU3VuIE1hciAzMCAxMToyODo0NiAyMDA4ICswMTAwCgogICAgU2VwYXJhdGUgb21hcDI0eHggc3BlY2lmaWMgY29kZSBmcm9tIGFybTExMzYKCiAgICBNb3ZlIG9tYXAyNHh4IGNvZGUgdG8gY3B1L2FybTExMzYvb21hcDI0eHgsIHJlbmFtZSBpbmNsdWRlL2FzbS1hcm0vYXJjaC1hcm0xMTM2IHRvIGNwdS9hcm0xMTM2L29tYXAyNHh4LgoKICAgIFNpZ25lZC1vZmYtYnk6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCA4YzE2Y2IwZDNiOTcxZjQ2ZmJlNzdjMDcyNjY0YzBmMmRjZDQ0NzFkCkF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KRGF0ZToJU3VuIE1hciAzMCAxMToyMzowNSAyMDA4ICswMTAwCgogICAgQWRkIHBtZHJhIGludG8gTUFLRUFMTAoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+Cgpjb21taXQgYTU3NGE3Mzg1MmE1Mjc3NzkyMzRlNzNlMTdlNzU5N2ZkODEyODg4MgpBdXRob3I6IFBpZXRlciBWb29ydGh1aWpzZW4gPFtwaWV0ZXIudm9vcnRodWlqc2VuQFByb2RyaXZlLm5sXT4KRGF0ZToJU3VuIE1hciAzMCAxMToyMTo1OCAyMDA4ICswMTAwCgogICAgQWRkcyBzdXBwb3J0IGZvciB0aGUgUHJvZHJpdmUgUE1EUkEgYm9hcmQsIGJhc2VkIG9uIGEgRE02NDQxCgogICAgU2lnbmVkLW9mZi1ieTogUGlldGVyIFZvb3J0aHVpanNlbiA8cHZAcHJvZHJpdmUubmw+Cgpjb21taXQgMTM3N2I1NTgzYTQ4MDIxZDk4M2UxZmQ1NjVmN2Q0MGM4OWU4NGQ2MwpBdXRob3I6IFBpZXRlciBWb29ydGh1aWpzZW4gPFtwaWV0ZXIudm9vcnRodWlqc2VuQFByb2RyaXZlLm5sXT4KRGF0ZToJU3VuIE1hciAzMCAxMToxMTozNCAyMDA4ICswMTAwCgogICAgUmVtb3ZlcyBhbGwgYm9hcmQgc3BlY2lmaWMgY29kZSBmcm9tIHRoZSBhcmNoLiBwYXJ0IGZvciBETTY0NHggKERhVmluY2kpIGJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IFBpZXRlciBWb29ydGh1aWpzZW4gPHB2QHByb2RyaXZlLm5sPgoKY29tbWl0IDE3MDRkYzIwOTE3YjRmNzFlMzczZTJjODg4NDk3ZWU2NjZkNDAzODAKQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdtYWlsLmNvbT4KRGF0ZToJU3VuIE1hciAzMCAxMTowOTowMSAyMDA4ICswMTAwCgogICAgLSBSZW1vdmUgKl9tYXNrZWQoKSBmdW5jdGlvbnMgYXMgbm90ZWQgYnkgV29sZmdhbmcKICAgIC0gQWRhcHQgcmVnaXN0ZXIgbmFtaW5nIHRvIHJlY2VudCBUSSBzcGVjIChzcHJ1ZTI2LCBNYXJjaCAyMDA3KQogICAgLSBGaXggcmVzZXRfdGltZXIoKSBoYW5kbGluZwogICAgLSBBcyByZXBvcnRlZCBieSBQaWV0ZXIgWzFdIHRoZSBvdmVyZmxvdyBmaXggaW50cm9kdWNlZCBhCiAgICBkZWxheSBvZiBmYWN0b3IgMTYgKGUuZyAyIHNlY29uZHMgYmVjYW1lIDMyKS4gV2hpbGUgdGhlCiAgICBvdmVyZmxvdyBmaXggaXMgYmFzaWNhbGx5IG9rYXksIGl0IG1pc3NlZCB0byBkaXZpZGUgdWRlbGF5IGJ5CiAgICAxNiwgdG9vLiBGaXggdGhpcy4KICAgIFsxXSBodHRwOi8vYXJ0aWNsZS5nbWFuZS5vcmcvZ21hbmUuY29tcC5ib290LWxvYWRlcnMudS1ib290LzM4MTc5CiAgICAtIFJlbW92ZSBzb2Z0d2FyZSBkaXZpc2lvbiBvZiB0aW1lciBjb3VudCB2YWx1ZSAoRElWKHgpCiAgICBtYWNybykgYW5kIGRvIGl0IGluIGhhcmR3YXJlIChUSU1fQ0xLX0RJVikuCiAgICBNYW55IHRoYW5rcyB0byBUcm95IEtpc2t5IDx0cm95Lmtpc2t5QGJvdW5kYXJ5ZGV2aWNlcy5jb20+CiAgICBhbmQgUGlldGVyIFZvb3J0aHVpanNlbiA8cGlldGVyLnZvb3J0aHVpanNlbkBQcm9kcml2ZS5ubD4gZm9yCiAgICB0aGUgaGludHMgJiB0ZXN0aW5nIQoKICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ21haWwuY29tPgoKICAgIEFja2VkLWJ5OiBQaWV0ZXIgVm9vcnRodWlqc2VuIDxwaWV0ZXIudm9vcnRodWlqc2VuQFByb2RyaXZlLm5sPgoKY29tbWl0IGFjMzMxNWMyNmUxNDNjMzE2ODA3NTBjOWMxM2YwMjdlZmJjYzg4N2UKQXV0aG9yOiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+CkRhdGU6CVRodSBNYXIgNiAxNjo0NTo0NCAyMDA4ICswMTAwCgogICAgbmV3IFBIWSBAIGUxMDAwIC0gMm5kIHRyeQoKICAgIEFkZCA4MjU0MUVSIGRldmljZSB3aXRoIGxhdGVzdCBpbnRlZ3JhdGVkIElHUDIgUEhZLgogICAgSW50cm9kdWNlZCBDT05GSUdfRTEwMDBfRkFMTEJBQ0tfTUFDIGZvciBOSUMgYnJpbmctdXAgd2l0aCBlbXB0eSBlZXByb20uCgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBjMmI3ZGE1NTIyOTNiNTBjOWM5ZTQ2ZWQ3MTI2N2IwMmMyZGU5ZWE4CkF1dGhvcjogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgpEYXRlOglGcmkgTWFyIDI4IDIwOjIyOjUzIDIwMDggKzAxMDAKCiAgICBTUEFSQy9MRU9OMzogQWRkZWQgR1JFVEggRXRoZXJuZXQgMTAvMTAwLzEwMDAgZHJpdmVyLgoKICAgIEdSRVRIIGlzIGFuIEV0aGVybmV0IDEwLzEwMCBvciAxMC8xMDAvMTAwMCBNQUMgd2l0aCBvdXQgd2l0aG91dAogICAgYSBkZWJ1ZyBsaW5rIChFRENMKS4gVGhlIEdSRVRIIGNvcmUgaXMgZG9jdW1lbnRlZCBpbiBHUklQLnBkZgogICAgYXZhaWxhYmxlIGF0IHd3dy5nYWlzbGVyLmNvbS4KCiAgICBJZiB0aGUgR1JFVEggaGFzIEdpZ2FCaXQgc3VwcG9ydCAoR0JJVCwgU2NhdHRlciBnYXRoZXIsIGNoZWNrc3VtCiAgICBvZmZsb2FkaW5nIGV0Yy4pIGNhbiBiZSBkZXRlcm1pbmVkIGJ5IGEgYml0IGluIHRoZSBjb250cm9sIHJlZ2lzdGVyLgogICAgVGhlIEdCSVQgTUFDIGlzIHN1cHBvcnRlZCBieSBvcGVyYXRpbmcgaW4gR1JURUggMTAvMTAwIGxlZ2FjeSBtb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMjMzYThiY2Q5NDk5N2YzZjM0NTgzM2EzYjgyZTgzNjIyMmYyYTIwNgpBdXRob3I6IFRzaS1DaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gTWFyIDE3IDE3OjA4OjIyIDIwMDggLTA1MDAKCiAgICBBZGQgQ09ORklHX01JSV9JTklUIGluIGNtZF9taWkuYwoKICAgIFByb3ZpZGUgY29tbW9uIGNvbmZpZ3VyYXRpb24gaW4gZG9fbWlpKCkgdG8gZXhlY3V0ZSBtaWlfaW5pdCgpCiAgICBmb3IgYWxsIGNwdSBhcmNoaXRlY3R1cmVzCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZjYwNTQ3OWRlMmRlYjExZTgzNGYzMWRmZGIwYWYxMDdjODZhY2VkNgpBdXRob3I6IFRzaS1DaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gTWFyIDE3IDE3OjA4OjE2IDIwMDggLTA1MDAKCiAgICBDb2xkRmlyZTogRml4IEZFQyB0cmFuc21pdCBpc3N1ZSBmb3IgTUNGNTI3NQoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGQ5YTJmNDE2ZDZhYzYwNThjZDc4NDUwMzNhZTRkYzMyZWYxYzA3NDYKQXV0aG9yOiBBcmFzIFZhaWNoYXMgPGFyYXN2QG1hZ3RlY2guY29tLmF1PgpEYXRlOglXZWQgTWFyIDI2IDA5OjQzOjU3IDIwMDggKzExMDAKCiAgICBESENQIHJlcXVlc3QgZml4IGZvciBXaW5kb3dzIFNlcnZlciAyMDAzCgogICAgQWRkZWQgb3B0aW9uIENPTkZJR19CT09UUF9ESENQX1JFUVVFU1RfREVMQVkuIFRoaXMgcHJvdmlkZXMgYW4gb3B0aW9uYWwKICAgIGRlbGF5IGJlZm9yZSBzZW5kaW5nICJESENQIFJlcXVlc3QiIGluIG5ldC9ib290cC5jLiBSZXF1aXJlZCB0byBvdmVyY29tZQogICAgaW50ZXJvcGVyYWJpbGl0eSBwcm9ibGVtcyB3aXRoIFdpbmRvd3MgU2VydmVyIDIwMHggREhDUCBzZXJ2ZXIgd2hlbiBVLUJvb3QKICAgIGNsaWVudCByZXNwb25kcyB0b28gZmFzdCBmb3Igc2VydmVyIHRvIGhhbmRsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBcmFzIFZhaWNoYXMgPGFyYXN2QG1hZ3RlY2guY29tLmF1PgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA5N2JmODVkNzg0ZmJlZDQ4NWU2NTJlYjkwNzU4OWFkMGQ1Y2I3MjYyCkF1dGhvcjogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgpEYXRlOglGcmkgTWFyIDI4IDIwOjQwOjE5IDIwMDggKzAxMDAKCiAgICBNVEQvQ0ZJOiBmbGFzaF9yZWFkNjQgaXMgZGVmaW5lZCBhIHdlYWsgZnVuY3Rpb24gKGZvciBTUEFSQykKCiAgICBTUEFSQyBoYXMgaW1wbGVtZW50ZWQgX19yYXdfcmVhZHEsIGl0IHJlYWRzIDY0LWJpdCBmcm9tIGFueSAzMi1iaXQgYWRkcmVzcy4KICAgIFNQQVJDIENQVXMgaW1wbGVtZW50IGZsYXNoX3JlYWQ2NCB3aGljaCBjYWxscyBfX3Jhd19yZWFkcS4KCiAgICBGb3IgY3VycmVudCBTUEFSQyBhcmNoaXRlY3R1cmVzIChMRU9OMiBhbmQgTEVPTjMpIGVhY2ggcmVhZCBmcm9tIHRoZQogICAgRkxBU0ggbXVzdCBsZWFkIHRvIGEgY2FjaGUgbWlzcy4gVGhpcyBpcyBiZWNhdXNlIEZMQVNIIGNhbiBub3QgYmUgc2V0CiAgICBub24tY2FjaGVhYmxlIHNpbmNlIHByb2dyYW0gY29kZSByZXNpZGVzIHRoZXJlLCBhbmQgYWx0ZXJuYXRpdmVseSBkaXNhYmxpbmcKICAgIGNhY2hlIGlzIHBvb3IgZnJvbSBwZXJmb3JtYW5jZSB2aWV3LCBvciBkb2luZyBhIGNhY2hlIGZsdXNoIGJldHdlZW4gZWFjaAogICAgcmVhZCBpcyBldmVuIHBvb3Jlci4KCiAgICBGb3JjaW5nIGEgY2FjaGUgbWlzcyBvbiBhIFNQQVJDIGlzIGRvbmUgYnkgYSBzcGVjaWFsIGluc3RydWN0aW9uICJsZGEiIC0KICAgIGxvYWQgYWx0ZXJuYXRpdmUgc3BhY2UsIHRoZSBhbHRlcm5hdGl2ZSBzcGFjZSBudW1iZXIgKEFTSSkgaXMgcHJvY2Vzc29yCiAgICBpbXBsZW1lbnRhdGlvbiBzcGNpZmljIGFuZCBjYW4gYmUgZm91bmQgYnkgaW5jbHVkaW5nIDxhc20vcHJvY2Vzc29yLmg+LgoKICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KCmNvbW1pdCA3MDQzMWU4YTczOTNiNmI3OTNmNzc5NTdmOTViOTk5ZmM5YTI2OWI4CkF1dGhvcjogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+CkRhdGU6CUZyaSBNYXIgMjggMTU6NDE6MjUgMjAwOCArMDEwMAoKICAgIE1ha2UgTVBDODN4eCBvbmUgc3RlcCBjbG9zZXIgdG8gZnVsbCByZWxvY2F0aW9uLgoKICAgIFJlbW92ZSBhIGZldyBhYnNvbHV0ZSByZWZlcmVuY2VzIHRvIENGR19NT05JVE9SX0JBU0UgZm9yIHBwYy9tcGM4M3h4CiAgICBhbmQgdXNlIEdPVCByZWxhdGl2ZSByZWZlcmVuY2UuCgogICAgU2lnbmVkLW9mZi1ieTogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDViMjc5M2EzZjNkZTM0ZDQzOTIzMmIwNWFjYzhhZjY3YTAyOGZkMzUKQXV0aG9yOiBNaWNoYWVsIEJhcmtvd3NraSA8bWljaGFlbC5iYXJrb3dza2lAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE1hciAyNyAxNDozNDo0MyAyMDA4IC0wNDAwCgogICAgbXBjODMyM2VyZGI6IGZpeCBFRVBST00gcGFnZSBzaXplIGFuZCBnZXQgTUFDIGZyb20gRUVQUk9NCgogICAgVGhpcyBwYXRjaCBmaXhlcyBlZXByb20gcGFnZSBzaXplIHNvIHRoYXQgeW91IGNhbiBub3cgd3JpdGUgbW9yZSB0aGFuCiAgICA2NCBieXRlcyBhdCBhIHRpbWUuCgogICAgSXQgYWxzbyBtYWtlcyB0aGUgYm9hcmQgdGFrZSBNQUMgYWRkcmVzc2VzLCBpZiBmb3VuZCwgZnJvbSBFRVBST00uCgogICAgVXNlciBzaG91bGQgcGxhY2UgdXAgdG8gNCBhZGRyZXNzZXMgYXQgb2Zmc2V0IDB4N2YwMCwgZm9yCiAgICBldGh7LDEsMiwzfWFkZHIuICBBbnkgdW51c2VkIGFkZHJlc3NlcyBzaG91bGQgYmUgemVyby4gIFRoaXMgZ3JvdXAgb2YKICAgIGZvdXIgc2l4LWJ5dGUgdmFsdWVzIHNob3VsZCBoYXZlIGl0J3MgQ1JDIGF0IHRoZSBlbmQuICBjcmMzMiBhbmQKICAgIGVlcHJvbSBjb21tYW5kcyBjYW4gYmUgdXNlZCB0byBhY2NvbXBsaXNoIHRoaXMuCgogICAgSWYgQ1JDIGZhaWxzLCBNQUMgYWRkcmVzc2VzIGNvbWUgZnJvbSB0aGUgZW52aXJvbm1lbnQuICBJZiBDUkMKICAgIHN1Y2NlZWRzLCB0aGUgZW52aXJvbm1lbnQgaXMgb3ZlcndyaXR0ZW4gYXQgc3RhcnR1cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEJhcmtvd3NraSA8bWljaGFlbC5iYXJrb3dza2lAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOGYzMjVjZmYzMWY2ZTc0NWU2NTQwMDE0YjEzMWI5YTk3ZjYxOTQ0YwpBdXRob3I6IE1pY2hhZWwgQmFya293c2tpIDxtaWNoYWVsLmJhcmtvd3NraUBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgTWFyIDI4IDE1OjE1OjM4IDIwMDggLTA0MDAKCiAgICBtcGM4MzIzZXJkYjogZGVmaW5lIENPTkZJR19QQ0lfU0tJUF9IT1NUX0JSSURHRQoKICAgIENvbW1pdCA1NTc3NGI1MTJmZGY2M2MwNTE2ZDQ0MWNjNWRhN2M1NGJiZmZiN2YyIGJyb2tlIHRoZSBvbmJvYXJkIFVTQgogICAgY29udHJvbGxlciBvbiB0aGUgUENJIGJ1cyBpbiBMaW51eCBvbiB0aGUgTVBDODMyM0VSREIuCgogICAgVGhpcyBmaXhlcyBpdCBieSBkZWZpbmluZyBDT05GSUdfUENJX1NLSVBfSE9TVF9CUklER0UgaW4gdGhlIGJvYXJkJ3MKICAgIGNvbmZpZyBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgQmFya293c2tpIDxtaWNoYWVsLmJhcmtvd3NraUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlNWM0YWRlNGRiMWUxNmQzZTVkNGE3ODg3ZjM0ZTEwZTUxNmVkM2E5CkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE1hciAyOCAxMDoxOTowNyAyMDA4IC0wNTAwCgogICAgbXBjODN4eDogY2xlYW51cCBTeXN0ZW0gUGFydCBhbmQgUmV2aXNpb24gSUQgUmVnaXN0ZXIgKFNQUklEUikgY29kZQoKICAgIGluIHRoZSBzcGlyaXQgb2YgY29tbWl0IDFjZWQxMjE2MDBiMjA2MGFiMmZmOWYwZmRkZDk0MjFmZDcwYTBkYzYsCiAgICA4NXh4J3MgIlVwZGF0ZSBTVlIgbnVtYmVycyB0byBleHBhbmQgc3VwcG9ydCIsIHNpbXBsaWZ5IFNQUklEUiBwcm9jZXNzaW5nCiAgICBhbmQgcHJvY2Vzc29yIElEIGRpc3BsYXkuICBBZGQgUkVWSURfe01BSixNSU59T1IgbWFjcm9zIHRvIG1ha2UKICAgIFJFVklEIGRlcGVuZGVudCBjb2RlIHNpbXBsZXIuICBBbHNvIGFkZGVkIFBBUlRJRF9OT19FIGFuZCBJU19FX1BST0NFU1NPUgogICAgY29udmVuaWVuY2UgbWFjcm9zLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgODFmZDUyYzZjOGZkMTlmMGI3ODU2Yjk4MjE3Y2UzN2M0NmM1MjFhZgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBNYXIgMjggMTA6MTg6NTMgMjAwOCAtMDUwMAoKICAgIG1wYzgzeHg6IGRpc3BsYXkgZGRyIGZyZXF1ZW5jeSBpbiBib2FyZF9hZGRfcmFtX2luZm8gYmFubmVyCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzNWNmMTU1YzVlYzFjZWFiMjg0OWZhNWI2YWEzZDlhM2U5ZTZmNDgyCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE1hciAyOCAxMDoxODo0MCAyMDA4IC0wNTAwCgogICAgbXBjODN4eDogdW5yZWludmVudCBtZW1fY2xrCgogICAgZGVsZXRlIGRkcl9jbGsgYW5kIHVzZSBtZW1fY2xrIGluc3RlYWQuICBSZW5hbWUgb3RoZXIgZGRyXypfY2xrIHRvCiAgICBtZW1fKl9jbGsgZm9yIGNvbnNpc3RlbmN5J3Mgc2FrZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDczMGU3OTI5MjZjYTNmZTRkZDFiNzM0YTNiZjQ0ZTU1YWZhNmY1MzYKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgTWFyIDI4IDE0OjMxOjIzIDIwMDggLTA1MDAKCiAgICBtcGM4M3h4OiBlbmFibGUgdGhlIFNBVEEgaW50ZXJmYWNlIG9uIG1wYzgzMTUgcmRiIGFuZCBtcGM4Mzd4IHJkYiBib2FyZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDJlZWIzZTRmYzU0ZWYyZjVkNTc0ZGFmZDQyYzZjZTkzYWZhMzAzOTMKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXIgMjYgMjI6NTc6MTkgMjAwOCArMDgwMAoKICAgIG1wYzgzeHg6IGVuYWJsZSB0aGUgU0FUQSBpbnRlcmZhY2Ugb24gbXBjODM3eGVtZHMgYm9hcmQKCiAgICBFbmFibGUgdGhlIGZpcnN0IHR3byBTQVRBIGludGVyZmFjZXMgb24gTVBDODM3eEVNRFMgYm9hcmQsCiAgICBUaGUgdHdvIFNBVEEgcG9ydHMgYXJlIG9uIExZTlgxLiAoU0FUQTAvMSBvbiBKNC81KQoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDZmOGM4NWU4ZDE4NjU3MzBjMTU4ZDllZjVhMDZjNzBjM2ExMDYwMGEKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXIgMjYgMjI6NTY6MzYgMjAwOCArMDgwMAoKICAgIG1wYzgzeHg6IGluaXRpYWxpemUgc2VyZGVzIGZvciBNUEM4Mzd4RU1EUyBib2FyZHMKCiAgICBUaGlzIHBhdGNoIGlzIHN0b2xlbiBmcm9tIEFudG9uIFZvcm9udHNvdidzIHBhdGNoCiAgICBmb3IgbXBjODM3eGVyZGIgYm9hcmRzLgoKICAgIFRoZSByZWZlcmVuY2UgY2xrIGFuZCB4Y29yZXZkZCB2b2x0YWdlIG9mIHNlcmRlczEvMgogICAgaXMgc2FtZSBiZXR3ZWVuIG1wYzgzN3hlbWRzIGFuZCBtcGM4Mzd4ZXJkYi4KCiAgICA4Mzc3RTogTFlOWDEtIDIgU0FUQQlMWU5YMi0gMiBQQ0lFCiAgICA4Mzc4RTogTFlOWDEtIDIgU0dNSUkJTFlOWDItIDIgUENJRQogICAgODM3OUU6IExZTlgxLSAyIFNBVEEJTFlOWDItIDIgU0FUQQoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGNjOGU4MzlhYmM4MDg4N2FlODMyNzY3YjU5MzBkNDBlZGQ2ZDdlYjcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBNYXIgMjggMTQ6MDk6MDQgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQ2FueW9ubGFuZHM6IFByaW50IFNBVEEvUENJZSBjb25maWd1cmF0aW9uIGFuZCBib2FyZCByZXZpc2lvbgoKICAgIENhbnlvbmxhbmRzICg0NjBFWCkgc2hhcmVzIHRoZSBmaXJzdCBQQ0llIGludGVyZmFjZSB3aXRoIHRoZSBTb0MgU0FUQQogICAgaW50ZXJmYWNlLiBUaGlzIHVzYWdlIGNhbiBiZSBjb25maWd1cmVkIHdpdGggdGhlIGp1bXBlciBKNi4gVGhpcyBwYXRjaAogICAgZGlzcGxheXMgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiB1cG9uIGJvb3R1cCBhbmQgY2hhbmdlcyB0aGUgUENJZQogICAgaW5pdCBsb29wLCB0byBvbmx5IGluaXRpYWxpemUgdGhlIGF2YWlsYWJlbCBQQ0llIHNsb3RzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5MDQ0N2VjYmJhYzg1NzI0NTdiNmQ4OTAzMDczYWMzZjEyMDk5NWJhCkF1dGhvcjogVG9yIEtyaWxsIDx0b3JAZXhjaXRvLmNvbT4KRGF0ZToJRnJpIE1hciAyOCAxMToyOToxMCAyMDA4ICswMTAwCgogICAgTVREL0NGSTogQWRkIHN1cHBvcnQgZm9yIDE2Yml0IGxlZ2FjeSBBTUQgZmxhc2gKCiAgICBBZGQgZW50cnkgZm9yIDUxMkt4MTYgQU1EIGZsYXNoIHRvIGplZGVjX3RhYmxlLgogICAgUmVhZCBvdXQgMTZiaXQgZGV2aWNlIGlkIGlmIGNoaXB3aWR0aCBpcyAxNmJpdC4KICAgIEZpeGVkIGNvZGluZyBzdHlsZSBhZnRlciBTdGVmYW5zIGZlZWRiYWNrCgogICAgU2lnbmVkLW9mZi1ieTogVG9yIEtyaWxsIDx0b3JAZXhjaXRvLmNvbT4KCmNvbW1pdCA1ZTEyZTc1ZDE3YzRiMTVhMzEwYTQ1Y2Q3OGZlNzFiNzY5OGE4YThlCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgTWFyIDI4IDExOjAyOjUzIDIwMDggKzAxMDAKCiAgICBwcGM6IFNtYWxsIGNoYW5nZSB0byBDRkdfTUVNX1RPUF9ISURFIGRlc2NyaXB0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDI4MGRmNTlhOGQ2MmM2ZTc0YzI4MWIxY2I3ZTIwNTJkZjRkNmNiMDAKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVRodSBNYXIgMjcgMTU6NDQ6MTIgMjAwOCArMDkwMAoKICAgIHNoOiBBZGQgc3VwcG9ydCBzdGF0IHN0cnVjdHVyZSBhbmQgc3RhdC5oCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDRiZTllYjc4OWU3MmI4NDVkNjY5M2NjMzZiNzBhMGIzNTI5YjNmMDkKQXV0aG9yOiBNYXJrIEpvbmFzIDx0b2VydGVsQGdtYWlsLmNvbT4KRGF0ZToJU2F0IE1hciAyMiAxOToyNzo1MiAyMDA4ICswMTAwCgogICAgc2g6IFJlbW92ZWQgd2FybmluZyB3aGVuIGNvbXBpbGluZyBkcml2ZXJzL3NlcmlhbC9zZXJpYWxfc2guYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrIEpvbmFzIDxtYXJrLmpvbmFzQGRlLmJvc2NoLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBmMzA5ZmEzODkyOWZmYmE3MTIzMGMwMjMzMGZmYTQyZjRiYmE2MzMzCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglXZWQgTWFyIDEyIDE4OjAyOjU3IDIwMDggKzA5MDAKCiAgICBzaDogUmVtb3ZlIGRpc2FibGVfY3RybGMgZnVuY3Rpb24gZnJvbSBSNzc4ME1QCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDZmNGIyNjZmZjJhNGZjYzJiZmY5ODVkNmEyMTc4NTI0NjlhZmRkYjMKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVdlZCBNYXIgMTIgMTc6NTU6MTUgMjAwOCArMDkwMAoKICAgIHNoOiBBZGQgbWFpbnRhaW5lciBvZiBSNzc4ME1QIHRvIE1BSU5UQUlORVIgZmlsZQoKICAgIFVwZGF0ZSBNQUlOVEFJTkVSIGVudHJ5IGZvciBSNzc4ME1QLiBBbmQgZml4IG1haW50YWluZXIncyBuYW1lLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBmNWUyNDY2ZjdiYWE4ODdhN2RmMGM1MzYzMzNlZWE4MjMxMzMzNDk3CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglUdWUgTWFyIDI1IDE3OjExOjI0IDIwMDggKzA5MDAKCiAgICBzaDogQWRkIHN1cHBvcnQgUmVuZXNhcyBTb2x1dGlvbnMgUjJEIHBsdXMgYm9hcmQKCiAgICBSMkQgcGx1cyBpcyBTSCByZWZlcmVuY2UgYm9hcmQgdXNlZCB3aXRoIFNINzc1MVIuCiAgICBUaGlzIGJvYXJkIGhhcyAyNjZNaHogQ1BVLCA2NE1CIFNEUkFNLCBDYXJkYnVzLCBDRiBpbnRlcmZhY2UsCiAgICBvbmUgUENJIGJ1cywgVkdBLCBhbmQgdHdvIEV0aGVybmV0IGNvbnRyb2xsZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGU5MmM5NTE4MGJiNWJjNWZkNDA1MTU5OGE5ZDYwYmVhYmE0ODk4OGQKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVdlZCBNYXIgMTIgMTI6MTU6MjkgMjAwOCArMDkwMAoKICAgIHNoOiBBZGQgc3VwcG9ydCBTSDQgY2FjaGUgY29udHJvbAoKICAgIEFkZCBzdXBwb3J0IFNINCBjYWNoZSBjb250cm9sIGFuZCBmbGFzaF9jYWNoZSBmdW5jdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCAyOGU1ZWZkZTRkOTI1ZmNiMzQ5MDFkMDAzMGQwNjQ4ZGUyZGE3ZTg5CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglNb24gTWFyIDI0IDAxOjUzOjAxIDIwMDggKzA5MDAKCiAgICBzaDogQWRkIHN1cHBvcnQgUENJIGhvc3QgZHJpdmVyIGZvciBTSDc3NTEvU0g3NzUxUgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBhYjhmNGQ0MGQwNjljZDNjYmU3NTYzZGRmZTNlNWYwM2IwYzdjNzIxCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglNb24gTWFyIDI0IDAyOjExOjI2IDIwMDggKzA5MDAKCiAgICBzaDogTW92ZSBTdXBlckggUENJIGRyaXZlciBmcm9tIGNwdS9zaDQgdG8gZHJpdmVycy9wY2kKCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgNTY2OTMzMjc4MTAxYzE0NGQ3NTM2MWVhNjgyNjc4YTMyNmMxMjkwZApBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJV2VkIE1hciAxMiAxMjoxMDoyOCAyMDA4ICswOTAwCgogICAgc2g6IEFkZCBzdXBwb3J0IFN1cGVySCBTSDc3NTEvU0g3NzUxUgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCAzMzEzZTBlMjYyMjRmYzlhMGM0NDUxMjRmMzQ1NTA1OGM2OTZkZjg0CkF1dGhvcjogTWFyayBKb25hcyA8dG9lcnRlbEBnbWFpbC5jb20+CkRhdGU6CU1vbiBNYXIgMTAgMTE6Mzc6MTAgMjAwOCArMDEwMAoKICAgIHNoOiBBZGRlZCBzdXBwb3J0IGZvciBTSDc3MjAgYmFzZWQgYm9hcmQgTVBSMi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrIEpvbmFzIDxtYXJrLmpvbmFzQGRlLmJvc2NoLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCAzZWNmZjFkNzBhZTkzZTYyOGZlNjViM2ZlMWZjN2M5Yzc2Y2RmOTlmCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglUaHUgTWFyIDYgMTQ6MDU6NTMgMjAwOCArMDkwMAoKICAgIHNoOiBGaXggcmVjZWl2ZSBGSUZPIGxldmVsIHJlZ2lzdGVyIG9mIFNINEEKCiAgICBSZWNlaXZlIEZJRk8gbGV2ZWwgcmVnaXN0ZXIgaXMgZGlmZmVyZW50IGluIFNINEEuCiAgICBCZWNhdXNlIHJlZ2lzdGVyIGlzIGRpZmZlcmVudCwgY2Fubm90IG9jY2FzaW9uYWxseSByZWNlaXZlIGRhdGEuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGMxMzNjMWZiMGI1OTA2NjIyMDZiMGViYTcwZjQ0NzhlZTAzMDBhOWEKQXV0aG9yOiBZdXN1a2UgR29kYSA8Z29kYS55dXN1a2VAcmVuZXNhcy5jb20+CkRhdGU6CVR1ZSBNYXIgMTEgMTI6NTU6MTIgMjAwOCArMDkwMAoKICAgIHNoOiBBZGQgc3VwcG9ydCBSZW5lc2FzIFNvbHV0aW9ucyBSNzc4ME1QCgogICAgUmVuZXNhcyBTb2x1dGlvbnMgUjc3ODBNUCBpcyBhIHJlZmVyZW5jZSBib2FyZCBvbiBTSDc3ODAuCiAgICBUaGlzIGJvYXJkIGhhcyBzZXJpYWwsIDEwLzEwMCBiYXNlIEV0aGVybmV0IGRlaXZpY2UsIENGIHNsb3QKICAgIGFuZCBWR0EgZGV2aWNlcy4gVGhpcyBib2FyZCBjYW4gc2V0IGV4dGVuc2lvbiBib2FyZC4KICAgIEV4dGVuc2lvbiBib2FyZCBoYXMgMTAvMTAwLzEwMDAgYmFzZSBFdGhlcm5ldCBkZXZpY2UsIFBDSSBzbG90LAogICAgUy1BVEEsIGlEVlIgc2xvdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZdXN1a2UgR29kYSA8Z29kYS55dXN1a2VAcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgMWEyMzM0YTRlYjYzODZkN2NkMzVkOWRlNWZhMzlhZjJjNzY0YWQyOApBdXRob3I6IFl1c3VrZSBHb2RhIDxnb2RhLnl1c3VrZUByZW5lc2FzLmNvbT4KRGF0ZToJV2VkIE1hciA1IDE0OjMwOjAyIDIwMDggKzA5MDAKCiAgICBzaDogQWRkIHN1cHBvcnQgUENJIG9mIFN1cGVySCBhbmQgU0g3NzgwCgogICAgVGhpcyBwYXRjaCBhZGQgc3VwcG9ydCBQQ0kgb2YgU3VwZXJIIGJhc2UgY29kZSBhbmQgU0g3NzgwIHNwZWNpZmljIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogWXVzdWtlIEdvZGEgPGdvZGEueXVzdWtlQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGI1NTUyM2VmZmYyYWUxMWYwYjlhZTNjYzQwNTg5M2MzMmViNzgxNTYKQXV0aG9yOiBZdXN1a2UgR29kYSA8Z29kYS55dXN1a2VAcmVuZXNhcy5jb20+CkRhdGU6CVdlZCBNYXIgNSAxNDoyMzoyNiAyMDA4ICswOTAwCgogICAgc2g6IEFkZCBzdXBwb3J0IFNINzc4MAoKICAgIFNINzc4MCBpcyBDUFUgb2YgUmVuZXNhcyBUZWNobm9sb2d5LgogICAgVGhpcyBDUFUgaGFzCiAgICAgLSBDUFUgY2xvY2sgNDAwTUh6CiAgICAgLSBQQ0kgc3VwcG9ydAogICAgIC0gRERSLVNEUkFNIGNvbnRyb2xsZXIKICAgICAtIGV0YyAuLi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZdXN1a2UgR29kYSA8Z29kYS55dXN1a2VAcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgYzIwNDJmNTk1MmE2ODZjNDE0MDMxMzA5YjhmMjQ0NTEzYmY1NzhmMApBdXRob3I6IGdvZGEueXVzdWtlIDxnb2RhLnl1c3VrZUByZW5lc2FzLmNvbT4KRGF0ZToJRnJpIEphbiAyNSAyMDo0NjozNiAyMDA4ICswOTAwCgogICAgc2g6IEFkZCBzdXBwb3J0IFJlbmVzYXMgU29sdXRpb25zIE1pZ28tUiBib2FyZAoKICAgIE1pZ28tUiBpcyBhIGJvYXJkIGJhc2VkIG9uIFNINzcyMiBhbmQgaGFzIG1heSBkZXZpY2VzLgogICAgSW4gdGhpcyBwYXRjaCwgc3VwcG9ydGVkIFNDSUYsIE5PUiBmbGFzaCBhbmQgRXRoZXJuZXQuCgogICAgU2lnbmVkLW9mZi1ieTogWXVzdWtlIEdvZGEgPGdvZGEueXVzdWtlQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDc0ZDFlNjZkMjJkYWM5MTM4OGJjNTM4YjJmZTE5ZjczNWVkYzViODIKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgTWFyIDI3IDE1OjA2OjQwIDIwMDggKzAxMDAKCiAgICBGaXggaG9zdCB0b29sIGJ1aWxkIGJyZWFrYWdlLCB0YWtlIHR3bwoKICAgIFJldmVydCBjb21taXQgODdjODQzMWYgYW5kIGZpeCBidWlsZCBicmVha2FnZSBzbyB0aGF0IHRoZSBidWlsZCBjb250aW51ZXMKICAgIHRvIHdvcmsgb24gRkMgc3lzdGVtcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDdlNGEwZDI1ZWQxOGY2NDM3YmRmNTllYmZhNDliYjBlZGMyZjI0ZTYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBNYXIgMTkgMDk6MzY6NDcgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogRW5hYmxlIEVDQyBvbiBMV01PTjUKCiAgICBTaW5jZSBhbGwgRUNDIHJlbGF0ZWQgcHJvYmxlbXMgc2VlbSB0byBiZSByZXNvbHZlZCBvbiBMV01PTjUsIHRoaXMgcGF0Y2gKICAgIG5vdyBlbmFibGVzIEVDQyBzdXBwb3J0LgoKICAgIFdlIGhhdmUgdG8gd3JpdGUgdGhlIEVDQyBieXRlcyBieSB6ZXJvaW5nIGFuZCBmbHVzaGluZyBpbiBzbWFsbGVyCiAgICBzdGVwcywgc2luY2UgdGhlIHdob2xlIDI1Nk1CeXRlIHRha2VzIHRvbyBsb25nIGZvciB0aGUgZXh0ZXJuYWwKICAgIHdhdGNoZG9nLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2NDMzZmEyMDJhOTFhNjU5NGRkNDhmMDY4MDdhYzM4YmEyN2ZhMGJiCkF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CkRhdGU6CU1vbiBNYXIgMTcgMTE6MTA6MzUgMjAwOCAtMDUwMAoKICAgIHBwYzR4eDogVXBkYXRlcyB0byBLb3JhdC1zcGVjaWZpYyBjb2RlCgogICAgVGhpcyBwYXRjaCBjb250YWlucyB1cGRhdGVzIGZvciBjaGFuZ2VzIGZvciB0aGUgS29yYXQgUFBDNDQwRVB4IGJvYXJkLgogICAgVGhlc2UgY2hhbmdlcyBpbmNsdWRlOgoKICAgICgxKSBTdXBwb3J0IGZvciAicGVybWFuZW50IiBhbmQgInVwZ3JhZGFibGUiIGNvcGllcyBvZiBVLUJvb3QsIGFzCiAgICBkZXNjcmliZWQgaW4gdGhlIG5ldyAiZG9jL1JFQURNRS5rb3JhdCIgZmlsZTsKCiAgICAoMikgYSBuZXcgbWVtb3J5IG1hcCBmb3IgdGhlIHJlZ2lzdGVycyBpbiB0aGUgYm9hcmQncyBDUExEOwoKICAgICgzKSBhIHJldmlzZWQgZm9ybWF0IGZvciBtYW51ZmFjdHVyZXIncyBkYXRhIGluIHNlcmlhbCBFRVBST007IGFuZAoKICAgICg0KSBjaGFuZ2VzIHRvIHRyYWNrIHVwZGF0ZXMgdG8gVS1Cb290IGZvciB0aGUgU2VxdW9pYSBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KCmNvbW1pdCBmNzY2Y2RmODliM2EyYTc2MzRiOGM1ODY5ZjYwNjE1MGUzMzIwMzZjCkF1dGhvcjogTWFya3VzIEJydW5uZXIgPHN1cGVyLmZpcmV0d2lzdGVyQGdtYWlsLmNvbT4KRGF0ZToJVGh1IE1hciAyNyAxMDo0NjoyNSAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBQUEM0MDVFUCBTZXQgRU1BQyBub2lzZSBmaWx0ZXIgYml0cwoKICAgIFRoaXMgYnVnIHdhcyBpbnRyb2R1Y2VkIHdpdGggY29tbWl0IGFlZTc0N2YxOWI0NjBhMGU5ZGEyMGZmMjFlOTBmZGFhYzFjZWMzNTkKICAgIHdoaWNoIGVuYWJsZWQgQ0ZHXzR4eF9HUElPX1RBQkxFIGZvciBQUEM0MDUgYW5kIHVuaW50ZW50aW9uYWxseQogICAgZGlzYWJsZWQgdGhlIHNldHRpbmcgb2YgdGhlIGVtYWMgbm9pc2UgZmlsdGVyIGJpdHMgZm9yIFBQQzQwNUVQIHdoZW4gQ0ZHXzR4eF9HUElPX1RBQkxFIGlzIHNldC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgQnJ1bm5lciA8c3VwZXIuZmlyZXR3aXN0ZXJAZ21haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGY2NmUyYzhiMjVjMDRiNzllNWZiMzg1YmM4OTg5YzJkZTdmNjM5OTEKQXV0aG9yOiBNaWtlIE51c3MgPG1pa2VAdGVyYXNjYWxhLmNvbT4KRGF0ZToJV2VkIEZlYiAyMCAxMTo1NDoyMCAyMDA4IC0wNTAwCgogICAgcHBjNHh4OiBSZWNvbmZpZ3VyZSBQTEwgZm9yIDY2N01IeiBwcm9jZXNzb3IgZm9yIFBQQzQ0MEVQeAoKICAgIE9uIFBQQzQ0MEVQeCB3aXRob3V0IGEgYm9vdHN0cmFwIEkyQyBFRVBST00sIHRoZSBQTEwgY2FuIGJlIHJlY29uZmlndXJlZAogICAgYWZ0ZXIgc3RhcnR1cCB0byBjaGFuZ2UgdGhlIHNwZWVkIG9mIHRoZSBjbG9ja3MuIFRoaXMgcGF0Y2ggYWRkcyB0aGUKICAgIG9wdGlvbiBDRkdfUExMX1JFQ09ORklHLiBJZiB0aGlzIG9wdGlvbiBpcyBzZXQgdG8gNjY3LCB0aGUgQ1BVCiAgICBpbml0aWFsaXphdGlvbiBjb2RlIHdpbGwgcmVjb25maWd1cmUgdGhlIFBMTCB0byBydW4gdGhlIHN5c3RlbSB3aXRoIGEgQ1BVCiAgICBmcmVxdWVuY3kgb2YgNjY3TUh6IGFuZCBQTEIgZnJlcXVlbmN5IG9mIDE2Nk1Ieiwgd2l0aG91dCB0aGUgbmVlZCBmb3IgYW4KICAgIGV4dGVybmFsIEVFUFJPTS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIE51c3MgPG1pa2VAdGVyYXNjYWxhLmNvbT4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODdjODQzMWZlMjRkNDgxMjFmMDUzZmU2N2NmZjRjY2ZlMDk3ZDRkMQpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJVGh1IE1hciAyNyAwOToxMjo0MCAyMDA4ICswMTAwCgogICAgbmV3LWltYWdlOiBGaXggaG9zdCB0b29sIGJ1aWxkIGJyZWFrYWdlCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDZmYjRiNjQwNTYyYTEwZGFmZjBkYmU1Mzc2MzhkNTExYjViNDg2NTAKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBNYXIgMjcgMTA6MjQ6MDMgMjAwOCArMDEwMAoKICAgIHBwYzogU2V0IENGR19NRU1fVE9QX0hJREUgdG8gMCBpZiBub3QgYWxyZWFkeSBkZWZpbmVkCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDk0NjI3MzJhM2VjNTUxYzExODYyNDUwOTAyY2Q4ZWUxYmVkZWE2ZDkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBNYXIgMTkgMTA6MjM6NDMgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQWRkIGZkdCBzdXBwb3J0IHRvIFByb2RyaXZlIGFscHIKCiAgICBTaW5jZSB0aGlzIGJvYXJkIHdpbGwgcHJvYmFibHkgYmUgcG9ydGVkIHRvIGFyY2gvcG93ZXJwYyBpbiB0aGUKICAgIG5lYXIgZnV0dXJlLCB3ZSBhZGQgZGV2aWNlIHRyZWUgc3VwcG9ydCBub3cuIFRoaXMgd2F5IHdlIGFyZQogICAgInJlYWR5IiBmb3IgYXJjaC9wb3dlcnBjIGZyb20gbm93IG9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1MTFlNGY5ZTdmN2I2NzE5ZTRkOTFkN2YwZmM4OTQxMmIxM2I1MTUwCkF1dGhvcjogUGlldGVyIFZvb3J0aHVpanNlbiA8cGlldGVyLnZvb3J0aHVpanNlbkBwcm9kcml2ZS5ubD4KRGF0ZToJTW9uIE1hciAxNyAwOToyNzo1NiAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBFbmFibGUgY2FjaGUgc3VwcG9ydCBvbiB0aGUgQUxQUiBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IFBpZXRlciBWb29ydGh1aWpzZW4gPHB2QHByb2RyaXZlLm5sPgoKY29tbWl0IDE0ZjczY2E2NzlmNmZkYjQ0Y2ZmMGI3MzA0ZDQxOWRiNDFhMGFiNjkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBNYXIgMjYgMTA6MTQ6MTEgMjAwOCArMDEwMAoKICAgIHBwYzogQWRkIENGR19NRU1fVE9QX0hJREUgb3B0aW9uIHRvIGhpZGUgbWVtb3J5IGFyZWEgdGhhdCBkb2Vzbid0IGdldCAidG91Y2hlZCIKCiAgICBJZiBDRkdfTUVNX1RPUF9ISURFIGlzIGRlZmluZWQgaW4gdGhlIGJvYXJkIGNvbmZpZyBoZWFkZXIsIHRoaXMgc3BlY2lmaWVkCiAgICBtZW1vcnkgYXJlYSB3aWxsIGdldCBzdWJ0cmFjdGVkIGZyb20gdGhlIHRvcCAoZW5kKSBvZiByYW0gYW5kIHdvbid0IGdldAogICAgInRvdWNoZWQiIGF0IGFsbCBieSBVLUJvb3QuIEJ5IGZpeGluZyB1cCBnZC0+cmFtX3NpemUgdGhlIExpbnV4IGtlcm5lbAogICAgc2hvdWxkIGdldHMgcGFzc2VkIHRoZSBub3cgImNvcnJlY3RlZCIgbWVtb3J5IHNpemUgYW5kIHdvbid0IHRvdWNoIGl0CiAgICBlaXRoZXIuIFRoaXMgc2hvdWxkIHdvcmsgZm9yIGFyY2gvcHBjIGFuZCBhcmNoL3Bvd2VycGMuIE9ubHkgTGludXggYm9hcmQKICAgIHBvcnRzIGluIGFyY2gvcG93ZXJwYyB3aXRoIGJvb3R3cmFwcGVyIHN1cHBvcnQsIHdoaWNoIHJlY2FsY3VsYXRlIHRoZQogICAgbWVtb3J5IHNpemUgZnJvbSB0aGUgU0RSQU0gY29udHJvbGxlciBzZXR1cCwgd2lsbCBoYXZlIHRvIGdldCBmaXhlZAogICAgaW4gTGludXggYWRkaXRpb25hbGx5LgoKICAgIFRoaXMgcGF0Y2ggZW5hYmxlcyB0aGlzIGNvbmZpZyBvcHRpb24gb24gc29tZSBQUEM0NDBFUHggYm9hcmRzIGFzIGEgd29ya2Fyb3VuZAogICAgZm9yIHRoZSBDSElQIDExIGVycmF0YS4gSGVyZSB0aGUgZGVzY3JpcHRpb24gZnJvbSB0aGUgQU1DQyBkb2N1bWVudGF0aW9uOgoKICAgIENISVBfMTE6IEVuZCBvZiBtZW1vcnkgcmFuZ2UgYXJlYSByZXN0cmljdGVkIGFjY2Vzcy4KICAgIENhdGVnb3J5OiAzCgogICAgT3ZlcnZpZXc6CiAgICBUaGUgNDQwRVB4IEREUiBjb250cm9sbGVyIGRvZXMgbm90IGFja25vd2xlZGdlIGFueQogICAgdHJhbnNhY3Rpb24gd2hpY2ggaXMgZGV0ZXJtaW5lZCB0byBiZSBjcm9zc2luZyBvdmVyIHRoZQogICAgZW5kLW9mLW1lbW9yeS1yYW5nZSBib3VuZGFyeSwgZXZlbiBpZiB0aGUgc3RhcnRpbmcgYWRkcmVzcyBpcwogICAgd2l0aGluIHZhbGlkIG1lbW9yeSBzcGFjZS4gQW55IHN1Y2ggdHJhbnNhY3Rpb24gZnJvbSBhbnkgUExCNAogICAgbWFzdGVyIHdpbGwgcmVzdWx0IGluIGEgUExCIHRpbWUtb3V0IG9uIFBMQjQgYnVzLgoKICAgIEltcGFjdDoKICAgIEluIGNhc2Ugb2Ygc3VjaCBtaXNhbGlnbmVkIGJ1cnN0cywgUExCNCBtYXN0ZXJzIHdpbGwgbm90CiAgICByZXRyaWV2ZSBhbnkgZGF0YSBhdCBhbGwsIGp1c3QgdGhlIGF2YWlsYWJsZSBkYXRhIHVwIHRvIHRoZQogICAgZW5kIG9mIG1lbW9yeSwgZXNwZWNpYWxseSB0aGUgNDQwIENQVS4gRm9yIGV4YW1wbGUsIGlmIGEgQ1BVCiAgICBpbnN0cnVjdGlvbiByZXF1aXJlZCBhbiBvcGVyYW5kIGxvY2F0ZWQgaW4gbWVtb3J5IHdpdGhpbiB0aGUKICAgIGxhc3QgNyB3b3JkcyBvZiBtZW1vcnksIHRoZSBEQ1UgbWFzdGVyIHdvdWxkIGJ1cnN0IHJlYWQgOAogICAgd29yZHMgdG8gdXBkYXRlIHRoZSBkYXRhIGNhY2hlIGFuZCBjcm9zcyBvdmVyIHRoZQogICAgZW5kLW9mLW1lbW9yeS1yYW5nZSBib3VuZGFyeS4gU3VjaCBhIERDVSByZWFkIHdvdWxkIG5vdCBiZQogICAgYW5zd2VyZWQgYnkgdGhlIEREUiBjb250cm9sbGVyLCByZXN1bHRpbmcgaW4gYSBQTEI0IHRpbWUtb3V0CiAgICBhbmQgdWx0aW1hdGVseSBpbiBhIE1hY2hpbmUgQ2hlY2sgaW50ZXJydXB0LiBUaGUgZGF0YSB3b3VsZAogICAgYmUgaW5hY2Nlc3NpYmxlIHRvIHRoZSBDUFUuCgogICAgV29ya2Fyb3VuZDoKICAgIEZvcmJpZCBhbnkgYXBwbGljYXRpb24gdG8gYWNjZXNzIHRoZSBsYXN0IDI1NiBieXRlcyBvZiBERFIKICAgIG1lbW9yeS4gRm9yIGV4YW1wbGUsIG1ha2UgeW91ciBvcGVyYXRpbmcgc3lzdGVtIGJlbGlldmUgdGhhdAogICAgdGhlIGxhc3QgMjU2IGJ5dGVzIG9mIEREUiBtZW1vcnkgYXJlIGFic2VudC4gQU1DQyBoYXMgYSBwYXRjaAogICAgdGhhdCBkb2VzIHRoaXMsIGF2YWlsYWJsZSBmb3IgTGludXguCgogICAgVGhpcyBwYXRjaCBzZXRzIENGR19NRU1fVE9QX0hJREUgZm9yIHRoZSBmb2xsb3dpbmcgNDQwRVB4IGJvYXJkczoKICAgIGx3bW9uNSwga29yYXQsIHNlcXVvaWEKCiAgICBUaGUgb3RoZXIgcmVtYWluaW5nIDQ0MEVQeCBib2FyZCB3ZXJlIGludGVudGlvbmFsbHkgbm90IGluY2x1ZGVkCiAgICBzaW5jZSBpdCBpcyBub3QgY2xlYXIgdG8gbWUsIGlmIHRoZXkgdXNlIHRoZSBlbmQgb2YgcmFtIGZvciBzb21lCiAgICBvdGhlciBwdXJwb3NlLiBUaGlzIGlzIHVuY2xlYXIsIHNpbmNlIHRoZXNlIGJvYXJkcyBoYXZlIENPTkZJR19QUkFNCiAgICBkZWZpbmVkIGFuZCBldmVuIGNvbW1lbnRzIGxpa2UgdGhpczoKCiAgICBQTUM0NDAuaDoKICAgIC8qIGVzZCBleHBlY3RzIHByYW0gYXQgZW5kIG9mIHBoeXNpY2FsIG1lbW9yeS4KICAgICAqIFNvIG5vIGxvZ2J1ZmZlciBhdCB0aGUgbW9tZW50LgogICAgICovCgogICAgSXQgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdG8gbm90IHVzZSB0aGUgbGFzdCAyNTYgYnl0ZXMgb24gdGhvc2UKICAgIGJvYXJkcyB0b28uIFBhdGNoZXMgZnJvbSB0aGUgYm9hcmQgbWFpbnRhaW5lcnMgYXJlIHdlbGNvbWUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGM2NjRiZjhjM2M5YmI5ZTIzNjg5MWYwZDhkZmRhODgzZTg2ZDE1OWIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBNYXIgMjcgMTA6MDk6MDUgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogRml4IENhbnlvbmxhbmRzIGxpbmtlciBzY3JpcHQgKHJlbW92ZSBib2d1cyBBU1NFUlQpCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGQ1NmEzY2UxNzk2ODhjZGU2MTA3M2EzNjkwZTIxNzAzZDY4ZmFmZDcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXIgMjUgMTc6NTE6MTMgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQ29ycmVjdGx5IHBhc3MgcGh5aXNjYWwgRkxBU0ggYmFzZSBhZGRyZXNzIGludG8gZHRiCgogICAgVGhlIHJvdXRpbmUgZnRfYm9hcmRfc2V0dXAoKSBjb25maWd1cmVzIHRoZSBFQkMgTk9SIG1hcHBpbmdzIGZvciB0aGUKICAgIExpbnV4IHBoeXNtYXBfb2YgZHJpdmVyLiBTaW5jZSBvbiA0NjBFWC9HVCB3ZSByZW1hcCB0aGUgRkxBU0ggZnJvbQogICAgMHg0LmZjMDAuMDAwMCB0byAweDQuY2MwMC4wMDAwIGJlY2F1c2Ugb2YgdGhlIG1heC4gMTZNQnl0ZSBib290LUNTCiAgICBwcm9ibGVtLCB3ZSBuZWVkIHRvIHBhc3MgdGhlIGNvcnJlY3RlZCBhZGRyZXNzIGhlcmUgdG9vLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5YWQzMTk4OWRlMTJjZTVjNjdiMDdjNDg2N2VhZDQ3NDY1NjU1YzRiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDE5IDE2OjM1OjEyIDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IEZpeCBjb21waWxhdGlvbiB3YXJuaW5nIGluIDR4eF9lbmV0LmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNGM5ZTg1NTczNGM1MjM5MDAzMjJhN2MzY2RkOTA5OWI0ZjUxYjUxZApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE1hciAxOSAxNjoyMDo0OSAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBBZGQgQU1DQyBHbGFjaWVyIDQwNkdUIGV2YWwgYm9hcmQgc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgQU1DQyBHbGFjaWVyIDQ2MEdUIGV2YWwgYm9hcmQuCiAgICBUaGUgbWFpbiBkaWZmZXJlbmNlIHRvIHRoZSBDYW55b25sYW5kcyBib2FyZCBhcmUgbGlzdGVkIGhlcmU6CgogICAgLSA0IGV0aGVybmV0IHBvcnRzIGluc3RlYWQgb2YgMgogICAgLSBubyBTQVRBIHBvcnQKICAgIC0gbm8gVVNCIHBvcnQKCiAgICBDdXJyZW50bHkgRU1BQzIrMyBhcmUgbm90IHdvcmtpbmcuIFRoaXMgd2lsbCBiZSBmaXhlZCBpbiBhIGxhdGVyCiAgICByZWxlYXNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkOGJkNjQzMTQxYWY0NzEwZDdmMWI2OWJiYWI2Yjc2MGRlMGFmMGExCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgTWFyIDI3IDA4OjQ3OjI2IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IE1hc2sgJ3ZlYycgd2l0aCAweDFmIGluIHVpY19pbnRlcnJ1cHQoKSBmb3IgYml0IHNldC9jbGVhcgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBiOTY3MGRkODViZTZlMDQ5NmVmMmUyMzEwNDNjMjNjYWQ5YjFkOTAzCkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDI2IDIxOjA1OjQzIDIwMDggKzAxMDAKCiAgICBGaXggb3V0IG9mIHRyZWUgYnVpbGRpbmcgaXNzdWUKCiAgICBDdXJyZW50bHkgVS1Cb290IGJ1aWxkaW5nIGluIHNvbWUgZXh0ZXJuYWwgZGlyZWN0b3J5CiAgICBkb2Vzbid0IHdvcmsuIFRoaXMgcGF0Y2ggdHJpZXMgdG8gZml4IHRoZSBwcm9ibGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCBkNGVlNzExZDhhNWMzNjZlZTNmODU3YzI2YjkyN2QxMmU2NjYxNGZmCkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDI2IDE4OjEzOjMzIDIwMDggKzAxMDAKCiAgICBSRUFETUU6IHVwZGF0ZSBkb2N1bWVudGF0aW9uIChhdmFpbGFiaWxpdHksIGxpbmtzLCBldGMuKQoKICAgIEZpeCB0eXBvIGluIFJFQURNRQoKICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCBlODEzZWFlM2JmZWJhOWMwYmRhOWQxYmY5ZmMzZDA4MWY3OTA5NzJmCkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDI2IDE3OjQ3OjQ0IDIwMDggKzAxMDAKCiAgICBGaXggY29tcGlsYXRpb24gZXJyb3IgaW4gY21kX3VzYi5jCgogICAgVGhpcyBwYXRjaCBmaXhlcyBjb21waWxhdGlvbiBlcnJvcgogICAgY21kX3VzYi5jOiBJbiBmdW5jdGlvbiAnZG9fdXNiJzoKICAgIGNtZF91c2IuYzo1NTI6IGVycm9yOiB2b2lkIHZhbHVlIG5vdCBpZ25vcmVkIGFzIGl0IG91Z2h0IHRvIGJlCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IGQ4YzgyZGI0ODJkNmI1MzVkMTJiNDE5ZDY0NDBiODhiZjcwOTFjOWIKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgTWFyIDE0IDE3OjQ1OjI5IDIwMDggLTA1MDAKCiAgICBBZGQgc3VwcG9ydCBmb3Igc2V0dGluZyB0aGUgSTJDIGJ1cyBzcGVlZCBpbiBmc2xfaTJjLmMKCiAgICBBZGQgc3VwcG9ydCB0byB0aGUgRnJlZXNjYWxlIEkyQyBkcml2ZXIgKGZzbF9pMmMuYykgZm9yIHNldHRpbmcgYW5kIHF1ZXJ5aW5nCiAgICB0aGUgSTJDIGJ1cyBzcGVlZC4JQ3VycmVudCA4WzM1Nl14eCBib2FyZHMgZGVmaW5lIHRoZSBDRkdfSTJDX1NQRUVEIG1hY3JvLAogICAgYnV0IGZzbF9pMmMuYyBpZ25vcmVzIGl0IGFuZCB1c2VzIGNvbnNlcnZhdGl2ZSB2YWx1ZSB3aGVuIHByb2dyYW1taW5nIHRoZQogICAgSTJDIGJ1cyBzcGVlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkMDQ5Y2M3ZjcxYzBkODc1ZThmNTA5OWQxZWQyMzY2NmE4MmI4ZjhlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IE1hciAyNyAwMDowMzo1NyAyMDA4ICswMTAwCgogICAgQ29kaW5nIHN0eWxlIGNsZWFudXAsIHVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGZkMGIxZmUzYzM4OGE3N2U4ZmUwMGNkZDkzMGNhMzE3YTkxMTk4ZDQKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXIgMjYgMjI6NTU6MzIgMjAwOCArMDgwMAoKICAgIGRyaXZlcnM6IGFkZCB0aGUgc3VwcG9ydCBmb3IgRnJlZXNjYWxlIFNBVEEgY29udHJvbGxlcgoKICAgIEFkZCB0aGUgRnJlZXNjYWxlIG9uLWNoaXAgU0FUQSBjb250cm9sbGVyIGRyaXZlciB0byB1LWJvb3QsCiAgICBUaGUgU0FUQSBjb250cm9sbGVyIGlzIHVzZWQgb24gdGhlIDgzN3ggYW5kIDgzMTUgdGFyZ2V0cywKICAgIFRoZSBkcml2ZXIgY2FuIGJlIHVzZWQgdG8gbG9hZCBrZXJuZWwsIGZzIGFuZCBkdGIuCgogICAgVGhlIGZlYXR1cmVzIGxpc3Q6CiAgICAtIDEuNS8zIEdicHMgbGluayBzcGVlZAogICAgLSBMQkE0OCwgTEJBMjggc3VwcG9ydAogICAgLSBETUEgYW5kIEZQRE1BIHN1cHBvcnQKICAgIC0gVHdvIHBvcnRzIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGJlZGU4N2Y0Yzg3YzNjY2Q4NjhjYzYwZWJmNzkyZTA1NjBjNmQwMjQKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXIgMjYgMjI6NTQ6NDQgMjAwOCArMDgwMAoKICAgIGF0YTogYWRkIHRoZSByZWFkbWUgZm9yIFNBVEEgY29tbWFuZCBsaW5lCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjZDU0MDgxY2Q0NzllNTQyZmMzOTliOGE0MDY1MWZmMTFhMWFkODQ5CkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTWFyIDI2IDIyOjUzOjI0IDIwMDggKzA4MDAKCiAgICBhdGE6IGVuYWJsZSB0aGUgc2F0YSBpbml0aWFsaXplIG9uIGJvb3QgdXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDY5Mzg2MzgzYzVjMmIzMjNjNjY0OTViMGIwY2VmNmE5NzE0ZDgzYmYKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXIgMjYgMjI6NTI6MzYgMjAwOCArMDgwMAoKICAgIGF0YTogYWRkIHRoZSBmaXMgc3RydWN0IGZvciBTQVRBCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmZmM2NjRlODBkZmIyZTE3ZGUwZGY1YWQzOWU5MWEwMmU5YzM2MWJjCkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTWFyIDI2IDIyOjUxOjQ0IDIwMDggKzA4MDAKCiAgICBhdGE6IGFkZCB0aGUgbGliYXRhIHN1cHBvcnQKCiAgICBhZGQgc2ltcGxlIGxpYmF0YSBzdXBwb3J0IGluIHUtYm9vdAoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOGU5YmI0MzQyOWU1MGRmNTVmYTQxOTMyY2JlNjU4NDFmZjU3OTIyMApBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE1hciAyNiAyMjo1MDo0NSAyMDA4ICswODAwCgogICAgYXRhOiBtYWtlIHRoZSBhdGFfcGlpeCBkcml2ZXIgdXNpbmcgbmV3IFNBVEEgZnJhbWV3b3JrCgogICAgb3JpZ2luYWwgYXRhX3BpaXggZHJpdmVyIGlzIHVzaW5nIElERSBmcmFtZXdvcmssIG5vdCByZWFsCiAgICBTQVRBIGZyYW1ld29yay4gRm9yIG5vdywgdGhlIGF0YV9waWl4IGRyaXZlciBpcyBvbmx5IHVzZWQKICAgIGJ5IHg4NiBzYzUyMF9jZHAgYm9hcmQuIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIGF0YV9waWl4IGRyaXZlcgogICAgdXNlIHRoZSBuZXcgU0FUQSBmcmFtZXdvcmssIHNvCgogICAgLSByZW1vdmUgdGhlIGR1cGxpY2F0ZWQgY29tbWFuZCBzdHVmZgogICAgLSByZW1vdmUgdGhlIENPTkZJR19DTURfSURFIGRlZmluZSBpbiB0aGUgc2M1MjBfY2RwLmgKICAgIC0gYWRkIHRoZSBDT05GSUdfQ01EX1NBVEEgZGVmaW5lIHRvIHNjNTIwX2NkcC5oCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjNzA1N2I1MjljM2MzY2I5YzBhYzkwNjA2ODZhNDA2OGYxNDkxYmJlCkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTWFyIDI2IDIyOjQ5OjQ0IDIwMDggKzA4MDAKCiAgICBhdGE6IGFkZCB0aGUgc3VwcG9ydCBmb3IgU0FUQSBmcmFtZXdvcmsKCiAgICAtIGFkZCB0aGUgU0FUQSBmcmFtZXdvcmsKICAgIC0gYWRkIHRoZSBTQVRBIGNvbW1hbmQgbGluZQoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgODNjN2Y0NzBhNGNlOTRmMzM2MDBmMTFhZTg1Y2U0ZGNmMDBhYTkwYwpBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE1hciAyNiAyMjo0ODoxOCAyMDA4ICswODAwCgogICAgYXRhOiBtZXJnZSB0aGUgaGVhZGVyIG9mIGF0YV9waWl4IGRyaXZlcgoKICAgIG1vdmUgdGhlIHNhdGEuaCBmcm9tIGluY2x1ZGUvIHRvIGRyaXZlcnMvYmxvY2svYXRhX3BpaXguaAoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOWVlZjYyODA0ZDk2OTU0MjViMjRjODdiNDZhNjFhN2ZhNzRhZmVlMApBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE1hciAyNiAyMjo0NzowNiAyMDA4ICswODAwCgogICAgYXRhOiBtZXJnZSB0aGUgYXRhX3BpaXggZHJpdmVyCgogICAgbW92ZSB0aGUgY21kX3NhdGEuYyBmcm9tIGNvbW1vbi8gdG8gZHJpdmVycy9hdGFfcGlpeC5jLAogICAgdGhlIGNtZF9zYXRhLmMgaGF2ZSBzb21lIHBhcnQgb2YgYXRhX3BpaXggY29udHJvbGxlciBkcml2ZXJzLgogICAgY29uc29saWRhdGUgdGhlIGRyaXZlciB0byBoYXZlIGJldHRlciBmcmFtZXdvcmsuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiOWU3NDllOTUzNTRmMzNlYjVkYzY2NTNjNmRiN2Q1MDJhZGI5NWZlCkF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KRGF0ZToJV2VkIE1hciAyNiAxODoyNjo0MyAyMDA4ICswMTAwCgogICAgVVNCLCBTdG9yYWdlOiBmaXggYSBidWcgaW50cm9kdWNlZCBpbiBjb21taXQKICAgIGY2YjQ0ZTBlNGQxOGZlNTA3ODMzYTBmNzZkMjRhOWFhNzJjMTIzZjEgdGhhdCB3aWxsIGNhdXNlIHVzYl9zdG9yX2luZm8KICAgIHRvIG9ubHkgcHJpbnQgb25seSBpbmZvcm1hdGlvbiBvbiBvbmUgc3RvcmFnZSBkZXZpY2UsIGJ1dCBub3QgZm9yCiAgICBtdWx0aXBsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgoKY29tbWl0IDg0MWU1ZWRkMTYyM2YzZmVjYjZiZmZjNWMyZjkzOGVkN2E5NDczNjAKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CVdlZCBNYXIgMjYgMTc6NDc6NDQgMjAwOCArMDEwMAoKICAgIEZpeCBjb21waWxhdGlvbiBlcnJvciBpbiBjbWRfdXNiLmMKCiAgICBUaGlzIHBhdGNoIGZpeGVzIGNvbXBpbGF0aW9uIGVycm9yCiAgICBjbWRfdXNiLmM6IEluIGZ1bmN0aW9uICdkb191c2InOgogICAgY21kX3VzYi5jOjU1MjogZXJyb3I6IHZvaWQgdmFsdWUgbm90IGlnbm9yZWQgYXMgaXQgb3VnaHQgdG8gYmUKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgoKY29tbWl0IGRkNmM5MTBhYWRmMjdjODIyZjE3Yjg3ZWFlMWE5YmQwYjJlM2FhMTUKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgTWFyIDI2IDA4OjUzOjUzIDIwMDggLTA1MDAKCiAgICA4NXh4OiBBZGQgY3B1X21wX2xtYl9yZXNlcnZlIGhlbHBlciB0byByZXNlcnZlIGJvb3QgcGFnZQoKICAgIFByb3ZpZGUgYSBib2FyZF9sbWJfcmVzZXJ2ZSBoZWxwZXIgZnVuY3Rpb24gdG8gZW5zdXJlIHdlIHJlc2VydmUKICAgIHRoZSBwYWdlIG9mIG1lbW9yeSB3ZSBhcmUgdXNpbmcgZm9yIHRoZSBib290IHBhZ2UgdHJhbnNsYXRpb24gY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDc5Njc5ZDgwMDIxYWIwOTVlNjM5ZTI1MGNhNDcyZmU1MjZkYTAyZTIKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgTWFyIDI2IDA4OjM0OjI1IDIwMDggLTA1MDAKCiAgICA4NXh4OiBVcGRhdGUgbXVsdGljb3JlIGJvb3QgbWVjaGFuaXNtIHRvIGVQQVBSIHYwLjgxIHNwZWMKCiAgICBUaGUgZm9sbG93aW5nIGNoYW5nZXMgYXJlIG5lZWRlZCB0byBiZSBpbmxpbmUgd2l0aCBlUEFQUiB2MC44MToKCiAgICAqIHI0LCByNSBhbmQgbm93IGFsd2F5cyBzZXQgdG8gMCBvbiBib290IHJlbGVhc2UKICAgICogcjcgaXMgdXNlZCB0byBwYXNzIHRoZSBzaXplIG9mIHRoZSBpbml0aWFsIG1hcCBhcmVhIChJTUEpCiAgICAqIEVQQVBSX01BR0lDIHZhbHVlIGNoYW5nZWQgZm9yIGJvb2stZSBwcm9jZXNzb3JzCiAgICAqIGNoYW5nZXMgaW4gdGhlIHNwaW4gdGFibGUgbGF5b3V0CiAgICAqIHNwaW4gdGFibGUgc3VwcG9ydHMgYSA2NC1iaXQgcGh5c2ljYWwgcmVsZWFzZSBhZGRyZXNzCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAyNWVlZGIyYzE5NThhMTMxMTBjN2RlMWZjODA5YjYyNDA1M2NjNjljCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE1hciAxOSAxNTowMjowNyAyMDA4IC0wNTAwCgogICAgRlNMOiBDbGVhbiB1cCBib2FyZC9mcmVlc2NhbGUvY29tbW9uL01ha2VmaWxlCgogICAgRWFjaCBmaWxlIHRoYXQgY2FuIGJlIGJ1aWx0IGhlcmUgbm93IGZvbGxvd3Mgc29tZQogICAgQ09ORklHXyBvcHRpb24gc28gdGhhdCB0aGV5IGFyZSBhcHByb3ByaWF0ZWx5IGJ1aWx0CiAgICBvciBub3QsIGFzIG5lZWRlZC4JQW5kIENPTkZJR18gZGVmaW5lcyB3ZXJlIGFkZGVkCiAgICB0byB2YXJpb3VzIGJvYXJkIGNvbmZpZyBmaWxlcyB0byBtYWtlIHN1cmUgdGhhdCBoYXBwZW5zLgoKICAgIFRoZSBvdGhlciBib2FyZC9mcmVlc2NhbGUvKi9NYWtlZmlsZXMgbm8gbG9uZ2VyIG5lZWQKICAgIHRvIHJlYWNoIHVwIGFuZCBvdmVyIGludG8gLi4vY29tbW9uIHRvIGJ1aWxkIHRoZWlyCiAgICBpbmRpdmlkdWFsbHkgbmVlZGVkIGZpbGVzIGFueSBtb3JlLgoKICAgIEJvYXJkcyB0aGF0IGFyZSBDRFMgc3BlY2lmaWMgd2VyZSByZW5hbWVkIHdpdGggY2RzXyBwcmVmaXguCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhNWFmNGIzNThhN2NhYTljMGFhMzc0ZDRkODk0YmY3NjJlYzM3NjY5CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEZlYiAyNyAyMjowMDoyNyAyMDA4IC0wNjAwCgogICAgODV4eDogRml4IG1lcmdlIGR1cGxpY2F0aW9uCgogICAgZnRfZml4dXBfY3B1KCkgZ290IGR1cGxpY2F0ZWQgaW4gc29tZSBtZXJnZSBzbmFmdS4JUmVtb3ZlIHRoZSBkdXBsaWNhdGUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA1ODkzYjNkMGE0MDg0Zjg3YTA2YTVkM2RjMDNkYjkxMjA2ODE4OTQxCkF1dGhvcjogSmFtZXMgWWFuZyA8SmFtZXMuWWFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgRmViIDEyIDE2OjM1OjA3IDIwMDggLTA2MDAKCiAgICA4NXh4OiBFeHBhbmQgQ0NTUiBzcGFjZSB3aXRoIG1vcmUgRERSIGNvbnRyb2xsZXIgcmVnaXN0ZXJzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGEzZTc3ZmE1MzU5YjNmOWY1OWU0ZTk0NmI0NmQ1N2E1MzA1N2NjODUKQXV0aG9yOiBKYW1lcyBZYW5nIDxKYW1lcy5ZYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBGZWIgOCAxODowNTowOCAyMDA4IC0wNjAwCgogICAgODV4eDogU3BlZWQgdXAgZ2V0X2Rkcl9mcmVxKCkgYW5kIGdldF9idXNfZnJlcSgpCgogICAgZ2V0X2Rkcl9mcmVxKCkgYW5kIGdldF9idXNfZnJlcSgpIHVzZWQgZ2V0X3N5c19pbmZvKCkgZWFjaCB0aW1lIHRoZXkgd2VyZQogICAgY2FsbGVkLiAgSG93ZXZlciwgZ2V0X3N5c19pbmZvKCkgcmVjYWxjdWxhdGVzIGV4dHJhbmVvdXMgaW5mb3JtYXRpb24gd2hlbgogICAgY2FsbGVkIGVhY2ggdGltZS4gIEhhdmUgZ2V0X2Rkcl9mcmVxKCkgYW5kIGdldF9idXNfZnJlcSgpIHJldHVybiBtZW1vaXplZAogICAgdmFsdWVzIGZyb20gZ2xvYmFsX2RhdGEgaW5zdGVhZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYW1lcyBZYW5nIDxKYW1lcy5ZYW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGU5ZWE2Nzk5MThmYmM5YTUzZmEyZjJhOTA0YWFjODc0ZWE3MzYwMzYKQXV0aG9yOiBKYW1lcyBZYW5nIDxKYW1lcy5ZYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBGZWIgOCAxNjo0NjoyNyAyMDA4IC0wNjAwCgogICAgODV4eDogU2hvdyBERFIgbWVtb3J5IGRhdGEgcmF0ZSBpbiBhZGRpdGlvbiB0byB0aGUgbWVtb3J5IGNsb2NrIGZyZXF1ZW5jeS4KCiAgICBTaG93IHRoZSBERFIgbWVtb3J5IGRhdGEgcmF0ZSBpbiBhZGRpdGlvbiB0byB0aGUgbWVtb3J5IGNsb2NrCiAgICBmcmVxdWVuY3kuCUZvciBERFIvRERSMiBtZW1vcmllcyB0aGUgbWVtb3J5IGRhdGEgcmF0ZSBpcyAyeCB0aGUKICAgIG1lbW9yeSBjbG9jay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYW1lcyBZYW5nIDxKYW1lcy5ZYW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDU5MTkzM2NhNmVhYmM0NDBlNmVkNjk2NzIzM2FhZjU2ZmNlNDY0YTMKQXV0aG9yOiBKYW1lcyBZYW5nIDxKYW1lcy5ZYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBGZWIgOCAxNjo0NDo1MyAyMDA4IC0wNjAwCgogICAgODV4eDogZ2V0X3RiY2xrKCkgc3BlZWQgdXAgYW5kIHJvdW5kaW5nIGZpeAoKICAgIFNwZWVkIHVwIGdldF90YmNsaygpIGJ5IHJlZmVyZW5jaW5nIHByZS1jb21wdXRlZCBidXMgY2xvY2sKICAgIGZyZXF1ZW5jeSB2YWx1ZSBmcm9tIGdsb2JhbCBkYXRhIGluc3RlYWQgb2Ygc3lzX2luZm9fdC4gIEZpeAogICAgcm91bmRpbmcgb2YgcmVzdWx0IHRvIG5lYXJlc3Q7IHByZXZpb3VzbHkgaXQgd2FzIHJvdW5kaW5nCiAgICB1cHdhcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMWNlZDEyMTYwMGIyMDYwYWIyZmY5ZjBmZGRkOTQyMWZkNzBhMGRjNgpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEZlYiA2IDAxOjE5OjQwIDIwMDggLTA2MDAKCiAgICBVcGRhdGUgU1ZSIG51bWJlcnMgdG8gZXhwYW5kIHN1cHBvcnQKCiAgICBGU0wgaGFzIHRha2VuIHRvIHVzaW5nIFNWUlsxNjoyM10gYXMgYW4gU09DIHN1Yi12ZXJzaW9uIGZpZWxkLiAgVGhpcwogICAgaXMgdXNlZCB0byBkaXN0aW5ndWlzaCBjZXJ0YWluIHZhcmlhbnRzIHdpdGhpbiBhbiBTT0MgZmFtaWx5LiAgVG8KICAgIGFjY291bnQgZm9yIHRoaXMsIHdlIGFkZCB0aGUgU1ZSX1NPQ19WRVIoKSBtYWNybywgYW5kIHVwZGF0ZSB0aGUgU1ZSXyoKICAgIGNvbnN0YW50cyB0byByZWZsZWN0IHRoZSBsYXJnZXIgdmFsdWUuICBXZSBhbHNvIGFkZCBTVlIgbnVtYmVycyBmb3IgYWxsCiAgICBvZiB0aGUgY3VycmVudCB2YXJpYW50cy4gIEZpbmFsbHksIHRvIG1ha2UgdGhpbmdzIG5lYXRlciwgcmF0aGVyIHRoYW4KICAgIHVzZSBhbiBlbm9ybW91cyBzd2l0Y2ggc3RhdGVtZW50IHRvIHByaW50IG91dCB0aGUgQ1BVIHR5cGUsIHdlIGNyZWF0ZQogICAgYW5kIGFycmF5IG9mIFNWUi9uYW1lIHBhaXJzICh1c2luZyBhIG1hY3JvKSwgYW5kIHByaW50IG91dCB0aGUgQ1BVIG5hbWUKICAgIHRoYXQgbWF0Y2hlcyB0aGUgU1ZSIFNPQyB2ZXJzaW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiODNlZWY0NDBjZjNjZWY4MTYxNzJjY2JiNTg5N2NjZDhlNDAzY2YzCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgRmViIDYgMDE6MTI6NTcgMjAwOCAtMDYwMAoKICAgIEFkZCB0aGUgRnJlZXNjYWxlIFBDSSBkZXZpY2UgSURzCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDdhZmYwYzA1MWFkMDYxMzE3MWNmMmI5OTQxZWU0ODY3NWM2MmU3Y2QKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgRmViIDE0IDExOjA0OjIzIDIwMDggLTA2MDAKCiAgICA4NXh4OiBBZGRlZCBzdXBwb3J0IGZvciBtdWx0aWNvcmUgYm9vdCBtZWNoYW5pc20KCiAgICBBZGRlZCB0aGUgY3B1IGNvbW1hbmQgdGhhdCBwcm92aWRlcyBhIGdlbmVyaWMgbWVjaGFuaXNtIHRvIGdldCBzdGF0dXMsCiAgICByZXNldCwgYW5kIHJlbGVhc2Ugc2Vjb25kYXJ5IGNvcmVzIGluIG11bHRpY29yZSBwcm9jZXNzb3JzLgoKICAgIEFkZGVkIHN1cHBvcnQgZm9yIHVzaW5nIHRoZSBlUEFQUiBkZWZpbmVkIHNwaW4tdGFibGUgbWVjaGFuaXNtIG9uIDg1eHguCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlYzJiNzRmZmQzNmYwMmM2MTIzNzI1ZTdjMjUzM2RkMmRlYWY0YjY0CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEphbiAxNyAxNjo0ODozMyAyMDA4IC0wNjAwCgogICAgODV4eDogQWRkZWQgc3VwcG9ydCBmb3IgbXVsdGljb3JlIGJvb3QgbWVjaGFuaXNtCgogICAgQWRkZWQgdGhlIGNwdSBjb21tYW5kIHRoYXQgcHJvdmlkZXMgYSBnZW5lcmljIG1lY2hhbmlzbSB0byBnZXQgc3RhdHVzLAogICAgcmVzZXQsIGFuZCByZWxlYXNlIHNlY29uZGFyeSBjb3JlcyBpbiBtdWx0aWNvcmUgcHJvY2Vzc29ycy4KCiAgICBBZGRlZCBzdXBwb3J0IGZvciB1c2luZyB0aGUgZVBBUFIgZGVmaW5lZCBzcGluLXRhYmxlIG1lY2hhbmlzbSBvbiA4NXh4LgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZjY5NzY2ZTRiNWQ0N2VjZDNhYTU4Njc3YThkYTg3NTY5NGYzNjRmMgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBKYW4gMzAgMTQ6NTU6MTQgMjAwOCAtMDYwMAoKICAgIDg1eHg6IEFkZCB0aGUgY29uY2VwdCBvZiBDRkdfQ0NTUkJBUl9QSFlTCgogICAgV2hlbiB3ZSBnbyB0byAzNi1iaXQgcGh5c2ljYWwgYWRkcmVzc2VzIHdlIG5lZWQgdG8ga2VlcCB0aGUgY29uY2VwdCBvZgogICAgdGhlIHBoeXNpY2FsIENDU1JCQVIgYWRkcmVzcyBzZXBlcmF0ZSBmcm9tIHRoZSB2aXJ0dWFsIG9uZS4KCiAgICBGb3IgdGhlIG1ham9yaXR5IG9mIGJvYXJkcyBDRkdfQ0NTQkFSX1BIWVMgPT0gQ0ZHX0NDU1JCQVIKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDViNWViOWNhNWI3NzhmNzYzYmNmMzMyNjk3YjM1Y2MxZTc0NzYyNmUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDI2IDE1OjM4OjQ3IDIwMDggKzAxMDAKCiAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGRhODgwOGRmN2E5Y2VmNWEzZDJlZTI4NmVmOWViZjlkZTE3ODA2NjAKQXV0aG9yOiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KRGF0ZToJV2VkIE1hciAyNiAxMzowMjoxMyAyMDA4ICswMTAwCgogICAgQWRkIENGR19SVENfRFMxMzM3X05PT1NDIHRvIHR1cm4gb2ZmIE9TQyBvdXRwdXQKCiAgICBUaGUgZGVmYXVsdCBzZXR0aW5ncyBmb3IgUlRDIERTMTMzNyBrZWVwcyB0aGUgT1NDCiAgICBvdXRwdXQsIDMyLDc2OCBIeiwgb24uIFRoaXMgYWRkIENGR19SVENfRFMxMzM3X05PT1NDIHRvCiAgICB0dXJuIGl0IG9mZi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KCmNvbW1pdCA0MzhhNGMxMTI2MGI0ZWE5ODA1MDM5YjBiNGY5MmY5ZGY1MzA2YjAyCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIE1hciAyNiAxMTo0ODo0NiAyMDA4ICswMTAwCgogICAgQ2xlYW51cCBjb2Rpbmcgc3R5bGUsIHVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDIxOGNhNzI0YzA4Y2E4YTY0OWYwOTE3Y2YyMDFjZjIzZDRiMzNmMzkKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDI2IDEwOjQwOjEyIDIwMDggKzAxMDAKCiAgICBSRUFETUU6IHVwZGF0ZSBkb2N1bWVudGF0aW9uIChhdmFpbGFiaWxpdHksIGxpbmtzLCBldGMuKQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZjZiNDRlMGU0ZDE4ZmU1MDc4MzNhMGY3NmQyNGE5YWE3MmMxMjNmMQpBdXRob3I6IEFyYXMgVmFpY2hhcyA8YXJhc3ZAbWFndGVjaC5jb20uYXU+CkRhdGU6CVR1ZSBNYXIgMjUgMTI6MDk6MDcgMjAwOCArMTEwMAoKICAgIFVTQiBTdG9yYWdlLCBhZGQgbWVhbmluZ2Z1bCByZXR1cm4gdmFsdWUKCiAgICBUaGlzIHBhdGNoIGNoYW5nZXMgdGhlICJ1c2Igc3RvcmFnZSIgY29tbWFuZCB0byByZXR1cm4gc3VjY2VzcyBpZiBpdAogICAgZmluZHMgYSBVU0Igc3RvcmFnZSBkZXZpY2UsIG90aGVyd2lzZSBpdCByZXR1cm5zIGVycm9yLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgMThlNjlhMzVlZmJiMDc4NDAzZGIwYzAwNjM5ODY0NzBkYWQ3ZDA4MgpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglGcmkgTWFyIDE0IDIzOjIwOjE4IDIwMDggKzAzMDAKCiAgICA4M3h4L2ZkdF9zdXBwb3J0OiBsZXQgdXNlciBzcGVjaWZpeSBGU0wgVVNCIER1YWwtUm9sZSBjb250cm9sbGVyIHJvbGUKCiAgICBMaW51eCB1bmRlcnN0YW5kcyAiaG9zdCIgKGRlZmF1bHQpLCAicGVyaXBoZXJhbCIgYW5kICJvdGciIChicm9rZW4pLgogICAgVGhvdWdoLCBVLUJvb3QgZG9lc24ndCByZXN0cmljdCBkcl9tb2RlIHZhcmlhYmxlIHRvIHRoZXNlIHZhbHVlcyAodGhpbmsKICAgIG9mIHJlbmFtZXMgaW4gZnV0dXJlKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYzc2MDQ3ODNiMjM2ZTM2OGYyMjVlZmI3YjNlZmI0MThmZTIwYjQwNApBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglGcmkgTWFyIDE0IDIzOjIwOjMwIDIwMDggKzAzMDAKCiAgICB0c2VjOiBmaXggbGluayBkZXRlY3Rpb24gZm9yIHRoZSBSVEw4MjExQiBQSFkKCiAgICBSVEw4MjExQiBzZXRzIGxpbmsgc3RhdGUgcmVnaXN0ZXIgYWZ0ZXIgYXV0b25lZ290aWF0aW9uIGNvbXBsZXRlLAogICAgc28gd2l0aCBib290ZGVsYXk9MCBSVEw4MjExQiB3aWxsIHJlcG9ydCBsYWNrIG9mIHRoZSBsaW5rLgoKICAgIFRvIGZpeCB0aGlzLCB3ZSBzaG91bGQgd2FpdCBmb3IgYW5lZyB0byBjb21wbGV0ZSwgZXZlbiBpZiB0aGUKICAgIGxpbmsgaXMgY3VycmVudGx5IGRvd24uCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDdmYTljYmIwMGRjODNmY2YxNzUwNDJiNmYyMGMyYzliY2U5YTE1ZjQKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJTW9uIE1hciAyNCAyMDo0NzowOSAyMDA4ICswMzAwCgogICAgbXBjODN4eDogYWRkICJmc2wsc29jIiBhbmQgImZzbCxpbW1yIiBjb21wYXRpYmxlIGZpeHVwcwoKICAgIGRldmljZV90eXBlID0gInNvYyIgaXMgYmVpbmcgZGVwcmVjYXRlZCwgbmV3ZXIgZGV2aWNlIHRyZWVzIHdpbGwgdXNlCiAgICAiZnNsLHNvYyIgYW5kL29yICJmc2wsaW1tciIgZm9yIHRoZSBzb2Mgbm9kZXMuCgogICAgVGhpcyBwYXRjaCBhbHNvIGFkZHMgY2xvY2stZnJlcXVlbmN5IHByb3BlcnR5IGZvciBzb2Mgbm9kZXMgKHRoZSBzYW1lCiAgICB2YWx1ZSBhcyBidXMtZnJlcXVlbmN5KS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KCmNvbW1pdCA1MDdlMmQ3OWM5MTQ0MWEwYmIyY2QzZDBjMzFjOGJmZTNmOGNlYzA3CkF1dGhvcjogSm9lIEQnQWJicmFjY2lvIDxsamQwMTVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIE1hciAyNCAxMzowMDo1OSAyMDA4IC0wNDAwCgogICAgTW9kaWZpZWQgdGhlIEREUiBTRFJBTSBjbG9jayBjb250cm9sIHJlZ2lzdGVyIHRvIGRlbGF5IE1DSy9NQ0tfQiAzLzQgY2xvY2sKCiAgICBXaXRoIHRoZSBvcmlnaW5hbCB2YWx1ZSBvZiAxLzIgY2xvY2sgY3ljbGUgZGVsYXksIHRoZSBzeXN0ZW0gcmFuIHJlbGF0aXZlbHkKICAgIHN0YWJsZSBleGNlcHQgd2hlbiB3ZSBydW4gYmVuY2htYXJrcyB0aGF0IGFyZSBpbnRlbnNpdmUgdXNlcnMgb2YgbWVtb3J5LgogICAgV2hlbiBJIHJ1biBzYW1iYSBjb25uZWN0ZWQgZGlzayB3aXRoIGEgSERCRU5DSCB0ZXN0LCB0aGUgc3lzdGVtIGxvY2tzLXVwCiAgICBvciByZWJvb3RzIHNwb3JhZGljYWxseS4KCiAgICBTaWduZWQtb2ZmIGJ5OiBKb2UgRCdBYmJyYWNjaW8gPEpvZS5EJ2FiYnJhY2Npb0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGE3YmEzMmQ0ODBhODZkYjVkYjhkY2Q4Y2E2NmIyMWI0Y2FkZGE5MjMKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIE1hciAyNCAxMjo0NDoxMyAyMDA4IC0wNTAwCgogICAgbXBjODN4eDogU2V0IFBDSSBJL08gYnVzLWFkZHJlc3MgYmFzZSB0byB6ZXJvLgoKICAgIFRoZSBkZXZpY2UgdHJlZXMgZm9yIHRoZXNlIGJvYXJkcyBkZXNjcmliZSBQQ0kgSS9PIGFzIHN0YXJ0aW5nIGZyb20KICAgIGFkZHJlc3MgemVybyBmcm9tIHRoZSBkZXZpY2UncyBwZXJzcGVjdGl2ZS4KCiAgICBQbGFjaW5nIEkvTyBlbHNld2hlcmUgbWF5IGNhdXNlIHByb2JsZW1zIHdpdGggY2VydGFpbiBQQ0kgYm9hcmRzLCBhbmQgbWF5CiAgICBjYXVzZSBwcm9ibGVtcyB3aXRoIExpbnV4LgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGY3MDBlN2RmN2ZlY2YyZDM3NjVhZTU2OGNlNzdjZTc4OGNkZTRmM2UKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJTW9uIE1hciAyNCAyMDo0NzowNSAyMDA4ICswMzAwCgogICAgbXBjODN4eDogTVBDODM2MEUtUkRLOiB1c2UgMzMuMygzKU1IeiBDTEtJTi9TWVNfQ0xLCgogICAgQXQgbGVhc3Qgb24gdGhlICIzM01IeiBQaWxvdCIgYm9hcmQgY3J5c3RhbCBpcyBhY3R1YWxseSAzMy4zTUh6LgogICAgVGhpcyBwYXRjaCBmaXhlcyAic3lzdGVtIHRpbWUgZHJpZnRpbmciIHByb2JsZW0uCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Cgpjb21taXQgM2EwY2ZkZDU3NmRjOWIxNmQxNDY4ZDM3MzM5MTgyNjA3YzY5N2ZiNwpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglNb24gTWFyIDI0IDIwOjQ3OjAyIDIwMDggKzAzMDAKCiAgICBtcGM4M3h4OiBNUEM4MzYwRS1SREs6IGRlZmluZSBDT05GSUdfT0ZfU1RET1VUX1ZJQV9BTElBUwoKICAgIFRoaXMgaXMgbmVlZGVkIHRvIHVwZGF0ZSAvY2hvb3Nlbi9saW51eCxzdGRvdXQtcGF0aCBwcm9wZXJseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KCmNvbW1pdCAzNDE5ZWI2MmYwODhkN2EyMmYxZDJhM2NlYmY3NmI3N2U0MDhiNWI5CkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CU1vbiBNYXIgMjQgMjA6NDc6MDAgMjAwOCArMDMwMAoKICAgIG1wYzgzeHg6IE1QQzgzNjBFLVJESzogYWRkIGRoY3AgY29tbWFuZAoKICAgIFBsdXMgbW9kaWZ5IGVudmlyb25tZW50IHRvIHVzZSBpdCBhbmQgcmVtb3ZlIGJvb3RmaWxlIGVudiB2YXJpYWJsZSwKICAgIGl0IGlzIGludGVybmFsIGFuZCBDT05GSUdfQk9PVEZJTEUgaXMgdXNlZCBmb3IgdGhlc2UgcHVycG9zZXMuCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Cgpjb21taXQgZDg5MmIyZGJiNDA4N2EyNjc3OGJmZDQyNDcwYzNlYTdkMGUyYjZhYQpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglNb24gTWFyIDI0IDIwOjQ2OjU3IDIwMDggKzAzMDAKCiAgICBtcGM4M3h4OiBNUEM4MzYwRS1SREs6IHJld29yayBkZHIgc2V0dXAsIGVuYWJsZSBlY2MKCiAgICBDdXJyZW50IEREUiBzZXR1cCBlYXNpbHkgY2F1c2VzIG1lbW9yeSBjb3JydXB0aW9uLCB0aGlzIHBhdGNoIGZpeGVzIGl0LgoKICAgIEFsc28gZml4IFRJTUlOR19DRkcwX01SU19DWUMgZGVmaW5pdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KCmNvbW1pdCBkNDdkNDljYzM3YTM4ZjI3MTlhM2UxYjliYmUwOGFjODEwY2YyZDlhCkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CU1vbiBNYXIgMjQgMjA6NDY6NTMgMjAwOCArMDMwMAoKICAgIG1wYzgzeHg6IE1QQzgzNjBFLVJESzogY29uZmlndXJlIHBhcmlvIHBpbnMgZm9yIEFENzg0MyBhbmQgRkhDSQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBxZSBwYXJpbyBwaW5zIGNvbmZpZ3VyYXRpb24gZm9yIEFENzg0MyBBREMvVG91Y2hzY3JlZW4KICAgIGNvbnRyb2xsZXIgYW5kIEZIQ0kgKFFFIFVTQikuCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Cgpjb21taXQgN2FkOTU5NDkwOTYyZTY4NDI2NDhkODdkNGJkNzk1ZWE2Y2RjY2U2NwpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglNb24gTWFyIDI0IDIwOjQ2OjUxIDIwMDggKzAzMDAKCiAgICBtcGM4M3h4OiBNUEM4MzYwRS1SREs6IGFkZCBzdXBwb3J0IGZvciBOQU5ECgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Cgpjb21taXQgOWEzZTgzMmFlYjQ5MTg2MWQwMjk5OTEyNDE1NzJlYmRmNGI1YjYxYgpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglNb24gTWFyIDI0IDIwOjQ2OjQ2IDIwMDggKzAzMDAKCiAgICBtcGM4M3h4OiBNUEM4MzYwRS1SREs6IHVzZSBSR01JSV9SWElEIGludGVyZmFjZSBtb2RlCgogICAgVGhpcyBpcyBuZWVkZWQgZm9yIEJDTSBQSFlzIHRvIHdvcmsgb24gdGhpcyBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KCmNvbW1pdCAzMDA2MTVkYzVkOWIwYTIwMjJmYmM2YWYwYzEzMTU5ZTMzZmQ3NTJlCkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CU1vbiBNYXIgMjQgMjA6NDY6MzQgMjAwOCArMDMwMAoKICAgIHVlYzogYWRkIHN1cHBvcnQgZm9yIEJyb2FkY29tIEJDTTU0ODEgR2lnYWJpdCBQSFkKCiAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgc3VwcG9ydCBmb3IgQnJvYWRjb20gQkNNNTQ4MSBQSFkuCgogICAgUlhELVJYQyBkZWxheSBxdWlyayBjb21lcyBmcm9tIE1QQzgzNjBFLVJESyBCU1Agc291cmNlLCBhdXRob3IgaXMKICAgIFBldGVyIEJhcmFkYSA8cGV0ZXJiQGxvZ2ljcGQuY29tPi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KCmNvbW1pdCA2YTYwMGMzYTE4NzZiYzIwMzQ0NWRmNGYwZmQ2YjEyNjQ4MjU5NjY2CkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CU1vbiBNYXIgMjQgMjA6NDY6MjggMjAwOCArMDMwMAoKICAgIHVlYzogYWRkIHN1cHBvcnQgZm9yIFJHTUlJX1JYSUQgaW50ZXJmYWNlIG1vZGUKCiAgICBQSFkgZHJpdmVycyB3aWxsIHVzZSBpdCB0byBzZXR1cCBzb2Z0d2FyZSBkZWxheSBiZXR3ZWVuIFJYRCBhbmQgUlhDCiAgICBzaWduYWxzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgoKY29tbWl0IDkxY2RhYTNhOWQ3NTYyYjg2OWQ5Njc3NGU5YzlkZGYxNDJjMDg0OGQKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJTW9uIE1hciAyNCAyMDo0NjoyNCAyMDA4ICswMzAwCgogICAgdWVjOiBhZGQgc3VwcG9ydCBmb3IgZ2JpdCBtaWkgc3RhdHVzIHJlYWRpbmdzCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Cgpjb21taXQgYWFiY2U3ZmI1MDVmZmU1NWViZjNiZjRkY2FmZGFlOTdhNTgxNTU4ZApBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglNb24gTWFyIDI0IDE3OjQwOjQ3IDIwMDggKzAzMDAKCiAgICA4M3h4OiBkZWZpbmUgQ09ORklHX09GX1NURE9VVF9WSUFfQUxJQVMgZm9yIHRoZSBNUEM4MzdYRVJEQiBib2FyZHMKCiAgICBUaGlzIGlzIHByaW1hcmlseSBmb3IgdGhlIGVhcmx5IGNvbnNvbGUgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KCmNvbW1pdCAyYmQ3NDYwZTkyODNlYzk4NTY1MTg5YjNjZGJjZmIyYmNkY2RkNjM1CkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CU1vbiBNYXIgMjQgMTc6NDA6NDMgMjAwOCArMDMwMAoKICAgIDgzeHg6IGluaXRpYWxpemUgc2VyZGVzIGZvciBNUEM4MzdYUkRCIGJvYXJkcwoKICAgIE9uIHRoZSBNUEM4Mzc3RVJEQjogMiBTQVRBIGFuZCAyIFBDSS1FLgogICAgT24gdGhlIE1QQzgzNzhFUkRCOiAyIFBDSS1FCiAgICBPbiB0aGUgTVBDODM3OUVSREI6IDQgU0FUQQoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgoKY29tbWl0IDQ1MzMxNmEyYTE5NjQyZDhhZmNiY2E3NDUyZTQwYTZiNDRhMTk3YjEKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJTW9uIE1hciAyNCAxNzo0MDozMiAyMDA4ICswMzAwCgogICAgODN4eDogc2VyZGVzIHNldHVwIHJvdXRpbmVzCgogICAgVGhpcyBwYXRjaCBhZGRzIGZldyByb3V0aW5lcyB0byBjb25maWd1cmUgc2VyZGVzIG9uIDgzN3ggdGFyZ2V0cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KCmNvbW1pdCBhNzk2Y2RmOWMzNzdjYjRlNWQ2MWQxMDc5YTI5NjYwOGY4ZmJkOTAzCkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CU1vbiBNYXIgMjQgMTc6NDA6MjcgMjAwOCArMDMwMAoKICAgIDgzeHg6IHNwbGl0IENPQkpTIG9udG8gc2VwYXJhdGUgbGluZXMKCiAgICAuLnBsdXMgZ2V0IHJpZCBvZiBzb21lICNpZmRlZnMgaW4gdGhlIC5jIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgoKY29tbWl0IDQ2YTNhZWVhNzNjMTNhYjA0ZWJmN2E4NzM5YWZiODdhYzVkYTk0YTMKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJTW9uIE1hciAyNCAxNzo0MDoyMyAyMDA4ICswMzAwCgogICAgODN4eDogbmFuZCBzdXBwb3J0IGZvciBNUEM4MzdYUkRCIGJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgoKY29tbWl0IDgyZTQ1YTIwNDE5MDU5M2U4NjEzMTQ1YTkyOGY5OThmYjhjOTA5YzQKQXV0aG9yOiBKZXJyeSBWYW4gQmFyZW4gPGd2Yi51Ym9vdEBnbWFpbC5jb20+CkRhdGU6CVR1ZSBNYXIgMTggMjE6NDQ6NDEgMjAwOCAtMDQwMAoKICAgIEVuYWJsZSBDT05GSUdfRkxBU0hfU0hPV19QUk9HUkVTUyBvbiB0aGUgTVBDODM2MEVNRFMuCgogICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMGZhN2ExYjQ3MTllMzI1ZmNlMzMyNjg5ZmI4NzU0ZWMxNjYxOTFmZgpBdXRob3I6IE1pY2hhZWwgQmFya293c2tpIDxtaWNoYWVsLmJhcmtvd3NraUBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTWFyIDIwIDEzOjE1OjM5IDIwMDggLTA0MDAKCiAgICBtcGM4MzIzZXJkYjogcmVtb3ZlIFJUQyBhbmQgYWRkIEVFUFJPTQoKICAgIFRoZXJlJ3Mgbm8gb24tYm9hcmQgUlRDIG9uIHRoZSBNUEM4MzIzRVJEQiwgYnV0IHRoZXJlIGlzIGFuIEVFUFJPTS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEJhcmtvd3NraSA8bWljaGFlbC5iYXJrb3dza2lAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDViYmVlYTg2ZWI2YWZiODcyMzc0Y2QyMzIxN2NiM2MxMDE4NDQzZWQKQXV0aG9yOiBNaWNoYWVsIEJhcmtvd3NraSA8bWljaGFlbC5iYXJrb3dza2lAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE1hciAyMCAxMzoxNTozNCAyMDA4IC0wNDAwCgogICAgbXBjODMyM2VyZGI6IEltcHJvdmUgdGhlIHN5c3RlbSBwZXJmb3JtYW5jZQoKICAgIFRoZSBmb2xsb3dpbmcgY2hhbmdlcyBhcmUgYmFzZWQgb24ga2VybmVsIFVDQyBldGhlcm5ldCBwZXJmb3JtYW5jZToKCiAgICAxLglNYWtlIHRoZSBDU0IgYnVzIHBpcGVsaW5lIGRlcHRoIGFzIDQsIGFuZCBlbmFibGUgdGhlIHJlcGVhdCBtb2RlCiAgICAyLglPcHRpbWl6ZSB0cmFuc2FjdGlvbnMgYmV0d2VlbiBRRSBhbmQgQ1NCLiAgQWRkZWQgQ0ZHX1NQQ1JfT1BUCglzd2l0Y2ggdG8gZW5hYmxlIHRoaXMgc2V0dGluZy4KCiAgICBUaGUgZm9sbG93aW5nIGNoYW5nZXMgYXJlIGJhc2VkIG9uIHRoZSBBcHAgTm90ZSBBTjMzNjkgYW5kCiAgICB2ZXJpZmllZCB0byBpbXByb3ZlIG1lbW9yeSBsYXRlbmN5IHVzaW5nIExNYmVuY2g6CgogICAgMy4JQ1MwX0NPTkZJR1tBUF9uX0VOXSBpcyBjaGFuZ2VkIGZyb20gMSB0byAwCiAgICA0LglDUzBfQ09ORklHW09EVF9XUl9DT05GSUddIHNldCB0byAxLiAgV2FzIGEgcmVzZXJ2ZWQgc2V0dGluZwoJcHJldmlvdXNseS4KICAgIDUuCVRJTUlOR19DRkdfMVtXUlJFQ10gaXMgY2hhbmdlZCBmcm9tIDNjbGtzIHRvIDJjbGtzICAoYmFzZWQgb24KCVR3cj0xNW5zLCBhbmQgdGhpcyB3YXMgYWxyZWFkeSB0aGUgc2V0dGluZyBpbiBERFJfTU9ERSkKICAgIDYuCVRJTUlOR19DRkdfMVtQUkVUT0FDVF0gaXMgY2hhbmdlZCBmcm9tIDNjbGtzIHRvIDJjbGtzLiAoYmFzZWQgb24KCVRycD0xNW5zKQogICAgNy4JVElNSU5HX0NGR18xW0FDVFRPUFJFXSBpcyBjaGFuZ2VkIGZyb20gOWNsa3MgdG8gNmNsa3MuIChiYXNlZCBvbgoJVHJhcz00MG5zKQogICAgOC4JVElNSU5HX0NGR18xW0FDVFRPUlddIGlzIGNoYW5nZWQgZnJvbSAzY2xrcyB0byAyY2xrcy4gKGJhc2VkIG9uCglUcmNkPTE1bnMpCiAgICA5LglUSU1JTkdfQ0ZHXzFbUkVGUkVDXSBjaGFuZ2VkIGZyb20gMjEgY2xrcyB0byAxMWNsa3MuICAoYmFzZWQgb24KCVRyZmM9NzVucykKICAgIDEwLiBUSU1JTkdfQ0ZHXzJbRk9VUl9BQ1RdIGlzIGNoYW5nZWQgZnJvbSAxMCBjbGtzIHRvIDdjbGtzLiAgKGJhc2VkCglvbiBUZmF3PTUwbnMpCiAgICAxMS4gVElNSU5HX0NGR18yW0FERF9MQVRdIGFuZCBERFJfTU9ERVtBTF0gY2hhbmdlZCBmcm9tIDAgdG8gMSAoYmFzZWQKCW9uIENMPTMgYW5kIFdMPTIpLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgQmFya293c2tpIDxtaWNoYWVsLmJhcmtvd3NraUBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZmM1NDljODcxZjQzOTMzMzk2YTViM2UyMWQ4OTcwMjNkNGIzMWI4ZApBdXRob3I6IE1pY2hhZWwgQmFya293c2tpIDxtaWNoYWVsLmJhcmtvd3NraUBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTWFyIDIwIDEzOjE1OjI4IDIwMDggLTA0MDAKCiAgICBtcGM4MzIzZXJkYjogdXNlIHJlYWRhYmxlIEREUiBjb25maWcgbWFjcm9zCgogICAgVXNlIGF2YWlsYWJsZSBzaGlmdC9tYXNrIG1hY3JvcyB0byBkZWZpbmUgRERSIGNvbmZpZ3VyYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBCYXJrb3dza2kgPG1pY2hhZWwuYmFya293c2tpQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4OWM3Nzg0ZWQ5MGJhNTAzMDFlZWM1MjExNDRmOTUxMTFlNDcyOTA2CkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEZlYiA4IDEzOjE1OjU1IDIwMDggLTA2MDAKCiAgICA4M3h4OiBBZGQgVml0ZXNzZSBWU0M3Mzg1IGZpcm13YXJlIHVwbG9hZGluZwoKICAgIFVwZGF0ZSB0aGUgTVBDODM0OUUtbUlUWCwgTVBDODMxM0UtUkRCLCBhbmQgTVBDODM3WEUtUkRCIGJvYXJkIGZpbGVzIHRvIHVwbG9hZAogICAgdGhlIFZpdGVzc2UgVlNDNzM4NSBmaXJtd2FyZS4gIENoYW5nZWQgQ09ORklHX1ZTQzczODUgdG8gQ09ORklHX1ZTQzczODVfRU5FVC4KICAgIENsZWFuZWQgdXAgdGhlIGJvYXJkIGhlYWRlciBmaWxlcyB0byBtYWtlIHNlbGVjdGluZyB0aGUgVlNDNzM4NSBlYXNpZXIgdG8KICAgIGNvbnRyb2wuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjU1ZDk4YzZkNWI4Njk0ZTU2MGEwZTcyN2IxNGNiNjkyMWQ3Y2ZjYwpBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBGZWIgOCAxMzoxNTo1NCAyMDA4IC0wNjAwCgogICAgTkVUOiBBZGQgVml0ZXNzZSBWU0M3Mzg1IGZpcm13YXJlIHVwbG9hZGluZwoKICAgIFRoZSBWaXRlc3NlIFZTQzczODUgaXMgYSA1LXBvcnQgc3dpdGNoIGZvdW5kIG9uIHRoZSBGcmVlc2NhbGUgTVBDODM0OUUtbUlUWAogICAgYW5kIG90aGVyIGJvYXJkcy4gIEEgc21hbGwgZmlyd21hcmUgbXVzdCBiZSB1cGxvYWRlZCB0byBpdHMgb24tYm9hcmQgbWVtb3J5CiAgICBiZWZvcmUgaXQgY2FuIGJlIGVuYWJsZWQuICBUaGlzIHBhdGNoIGFkZHMgdGhlIGNvZGUgd2hpY2ggdXBsb2FkcyBmaXJtd2FyZQogICAgKGJ1dCBub3QgdGhlIGZpcm13YXJlIGl0c2VsZikuCgogICAgUHJldmlvdXNseSwgdGhpcyBmZWF0dXJlIHdhcyBwcm92aWRlZCBieSBhIFUtQm9vdCBhcHBsaWNhdGlvbiB0aGF0IHdhcwogICAgbWFkZSBhdmFpbGFibGUgb25seSBvbiBGcmVlc2NhbGUgQlNQcy4gIFRoZSBWU0M3Mzg1IGZpcm13YXJlIG11c3Qgc3RpbGwKICAgIGJlIG9idGFpbmVkIHNlcGFyYXRlbHksIGJ1dCBhdCBsZWFzdCB0aGVyZSBpcyBubyBsb25nZXIgYSBuZWVkIGZvciBhIHNlcGFyYXRlCiAgICBhcHBsaWNhdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYWE2ZjZkMTcxYTFmOWY0NmVlNGYwM2FkNmFjYjk3YTZiZmI3MTg1NQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBNYXIgMjYgMDA6NTI6MTAgMjAwOCArMDEwMAoKICAgIENvZGluZyBTdHlsZSBjbGVhbnlwOyB1cGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0M2RkZDljODIwZmVjNDQ4MTYxODhmNTMzNDZiNDY0ZTIwYjMxNDJkCkF1dGhvcjogSmVycnkgVmFuIEJhcmVuIDxndmIudWJvb3RAZ21haWwuY29tPgpEYXRlOglTYXQgTWFyIDIyIDE0OjIzOjQ5IDIwMDggLTA0MDAKCiAgICBSZW1vdmUgZGVwcmVjYXRlZCBDT05GSUdfT0ZfSEFTX1VCT09UX0VOViBhbmQgQ09ORklHX09GX0hBU19CRF9UCgogICAgVGhlc2UgZGVmaW5lcyBlbWJlZGRlZCB0aGUgdS1ib290IGVudiB2YXJpYWJsZXMgYW5kL29yIHRoZSBiZF90IHN0cnVjdHVyZQogICAgaW4gdGhlIGZkdCBibG9iLiAgVGhlIGNvbmNsdXNpb24gb2YgZGlzY3Vzc2lvbiBvbiB0aGUgdS1ib290IGVtYWlsIGxpc3QKICAgIHdhcyB0aGF0IGVtYmVkZGluZyB0aGVzZSBpbiB0aGUgZmR0IGJsb2IgaXMgbm90IHVzZWZ1bDogdGhlcmUgYXJlIGJldHRlcgogICAgd2F5cyBvZiBwYXNzaW5nIHRoZSBkYXRhIChpbiBmYWN0LCB0aGUgZmR0IGJsb2IgaXRzZWxmIHJlcGxhY2VzIHRoZQogICAgYmRfdCBzdHJ1Y3QpLgoKICAgIFRoZSBvbmx5IGJvYXJkIHRoYXQgZW5hYmxlcyB0aGVzZSBpcyB0aGUgc3R4eHRjIGFuZCB0aGV5IGRvbid0IGFwcGVhcgogICAgdG8gYmUgdXNlZCBieSBsaW51eC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgogICAgQWNrZWQtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjJlZDIyODU3NDMzNTlmZDFmZTczZTQxMWRmZjkxNGIyMjU2ZTY4ZgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE1hciAxNyAxMDo0OToyNSAyMDA4ICswMTAwCgogICAgcnRjOiBSZW1vdmUgMm5kIHJlZmVyZW5jZSB0byBtYXg2OTAwLm8gaW4gZHJpdmVycy9ydGMvTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMWJiNzA3YzM5YTA4MzNlOTFkOWY3OTdkZDg2MmFhYWFmNGFmMjY0ZApBdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgpEYXRlOglNb24gTWFyIDE3IDA4OjU0OjA2IDIwMDggKzA5MDAKCiAgICBBZGQgRmxleC1PbmVOQU5EIGJvb3Rpbmcgc3VwcG9ydAoKICAgIEZsZXgtT25lTkFORCBpcyBhIG1vbm9saXRoaWMgaW50ZWdyYXRlZCBjaXJjdWl0IHdpdGggYSBOQU5EIEZsYXNoIGFycmF5CiAgICB1c2luZyBhIE5PUiBGbGFzaCBpbnRlcmZhY2UuIFRoaXMgb24tY2hpcCBpbnRlZ3JhdGlvbiBlbmFibGVzIHN5c3RlbSBkZXNpZ25lcnMKICAgIHRvIHJlZHVjZSBleHRlcm5hbCBzeXN0ZW0gbG9naWMgYW5kIHVzZSBoaWdoLWRlbnNpdHkgTkFORCBGbGFzaAogICAgaW4gYXBwbGljYXRpb25zIHRoYXQgd291bGQgb3RoZXJ3aXNlIGhhdmUgdG8gdXNlIG1vcmUgTk9SIGNvbXBvbmVudHMuCgogICAgRmxleC1PbmVOQU5EIGVuYWJsZXMgdXNlcnMgdG8gY29uZmlndXJlIHRvIHBhcnRpdGlvbiBpdCBpbnRvIFNMQyBhbmQgTUxDIGFyZWFzCiAgICBpbiBtb3JlIGZsZXhpYmxlIHdheS4gV2hpbGUgTUxDIGFyZWEgb2YgRmxleC1PbmVOQU5EIGNhbiBiZSB1c2VkIHRvIHN0b3JlIGRhdGEKICAgIHRoYXQgcmVxdWlyZSBsb3cgcmVsaWFiaWxpdHkgYW5kIGhpZ2ggZGVuc2l0eSwgU0xDIGFyZWEgb2YgRmxleC1PbmVOQU5ECiAgICB0byBzdG9yZSBkYXRhIHRoYXQgbmVlZCBoaWdoIHJlbGlhYmlsaXR5IGFuZCBoaWdoIHBlcmZvcm1hbmNlLiBGbGV4LU9uZU5BTkQKICAgIGNhbiBsZXQgdXNlcnMgdGFrZSBhZHZhbnRhZ2Ugb2Ygc3RvcmluZyB0aGVzZSB0d28gZGlmZmVyZW50IHR5cGVzIG9mIGRhdGEKICAgIGludG8gb25lIGNoaXAsIHdoaWNoIGlzIG1ha2luZyBGbGV4LU9uZU5BTkQgbW9yZSBjb3N0LSBhbmQgc3BhY2UtZWZmZWN0aXZlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Cgpjb21taXQgYzUxMjM4OWNjNGExMDI1MzI0OTI3MWZmNmM4ODdjNmRhYjFmMGRiMgpBdXRob3I6IEFuZHLDqSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+CkRhdGU6CVRodSBNYXIgMTMgMTM6NTA6NTIgMjAwOCArMDEwMAoKICAgIE1QQzUyMDA6IHN1cHBvcnQgc2V0dXAgd2l0aG91dCBGRUMKCiAgICBJbmNsdWRlIEZFQyBzcGVjaWZpYyBub2RlcyBpbiBmdF9jcHVfc2V0dXAgb25seSBpZiBDT05GSUdfTVBDNXh4eF9GRUMgaXMKICAgIGRlZmluZWQuIFN5c3RlbXMgd2l0aG91dCBGRUMsIGkuZS4gbm8gRkVDIG5vZGUgaW4gRFRCLCBzaG91bGQgYmUgcG9zc2libGUuCgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgogICAgQWNrZWQtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCBhYTM1MTFlNDIyOTQ2MDQxZWY2MjZmODBhMDVhZTVlOGJmYzcwMGU2CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE1hciA1IDE4OjA1OjQ2IDIwMDggLTA2MDAKCiAgICBGU0w6IE1vdmUgYm9hcmQvbXBjODI2NmFkcyB1bmRlciBib2FyZC9mcmVlc2NhbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDdmMWQ4NDZlNWM1NzU0NDQ5YzI4NjU4N2QwOTlkODUyNDYwNjI3NzIKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTWFyIDUgMTg6MDU6NDcgMjAwOCAtMDYwMAoKICAgIEZTTDogTW92ZSBib2FyZC9tcGM3NDQ4aHBjMiB1bmRlciBib2FyZC9mcmVlc2NhbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGI3ZTI0ZDI4M2UzNDcyN2MyYTZjZGZkYWMyZTA5YTQyNmM1NzliNzMKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTWFyIDUgMTg6MDU6NDUgMjAwOCAtMDYwMAoKICAgIEZTTDogTW92ZSBib2FyZC9tcGM4MjYwYWRzIHVuZGVyIGJvYXJkL2ZyZWVzY2FsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNmE4YTVkYzQ3NTk4NjdjNDVhYTk1NTgwZGViOGJmMjY2NjlhNWQ5NwpBdXRob3I6IGdvZGEueXVzdWtlIDxnb2RhLnl1c3VrZUByZW5lc2FzLmNvbT4KRGF0ZToJV2VkIE1hciA1IDE3OjA4OjMzIDIwMDggKzA5MDAKCiAgICBuZXQ6IEFkZCBzdXBwb3J0IEFYODg3OTZMIGV0aGVybmV0IGRldmljZQoKICAgIEFYODg3OTZMIGlzIGRldmljZSBvZiBORTIwMDAgY29tcGF0aWJsZS4KICAgIFRoaXMgcGF0Y2ggc3VwcG9ydCBBWDg4Nzk2TCBldGhlcm5ldCBkZXZpY2UuCgogICAgU2lnbmVkLW9mZi1ieTogWXVzdWtlIEdvZGEgPGdvZGEueXVzdWtlQHJlbmVzYXMuY29tPgogICAgQWNrZWQtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBlMGE2MTQwZGQzODFlMWVlZDFhZGEyMjkxMTY2ZWYyNjE2ZDg4MjJiCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIE1hciAyNSAyMjo1MDo0MSAyMDA4ICswMTAwCgogICAgbmUyMDAwIGRyaXZlcjogY2hhbmdlICNpZmRlZiB0byBNYWtlZmlsZSBjb25kaXRpb25hbCBjb21waWxhdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZTcxMDE4NWFhZTkwYzY0ZDM5YzJkNDUzZTQwZTU4Y2VlZmU0ZjI1MApBdXRob3I6IGdvZGEueXVzdWtlIDxnb2RhLnl1c3VrZUByZW5lc2FzLmNvbT4KRGF0ZToJV2VkIE1hciA1IDE3OjA4OjIwIDIwMDggKzA5MDAKCiAgICBuZXQ6IERpdmlkZWQgY29kZSBvZiBORTIwMDAgZXRoZXJuZXQgZHJpdmVyCgogICAgVGhlcmUgYXJlIG1vcmUgZGV2aWNlcyBvZiB0aGUgTkUyMDAwIGJhc2UuCiAgICBBIHByZXNlbnQgY29kZSBpcyBkaWZmaWN1bHQgZm9yIHVzIHRvIHN1cHBvcnQgbW9yZSBkZXZpY2VzLgogICAgVG8gc3VwcG9ydCBtb3JlIE5FMjAwMCBjbG9uZSBkZXZpY2VzLCBzZXBhcmF0ZWQgdGhlIGZ1bmN0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFl1c3VrZSBHb2RhIDxnb2RhLnl1c3VrZUByZW5lc2FzLmNvbT4KICAgIEFja2VkLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgMzk1YmNlNGY1OWE1MDdhNjBhNDc1ZjdlZTQ2YmVkNDdkZTk0ODJkZgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU3VuIEZlYiAyNCAyMzo1ODoxMyAyMDA4IC0wNTAwCgogICAgbmV0L0JsYWNrZmluOiBtb3ZlIG9uLWNoaXAgTUFDIGRyaXZlciBpbnRvIGRyaXZlcnMvbmV0LwoKICAgIFRoZSBCbGFja2ZpbiBvbi1jaGlwIE1BQyBkcml2ZXIgd2FzIGJlaW5nIG1hbmFnZWQgaW4gdGhlIEJGNTM3LVNUQU1QIGJvYXJkCiAgICBkaXJlY3RvcnksIGJ1dCBpdCBpcyBub3QgYm9hcmQgc3BlY2lmaWMsIHNvIHJlbG9jYXRlIGl0IHRvIHRoZSBkcml2ZXJzIGRpcgogICAgc28gdGhhdCBvdGhlciBCbGFja2ZpbiBwb3J0cyBjYW4gdXRpbGl6ZSBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgOGEzMGI0NzAwOTQyZjM3NDk1ZDJlNjdmNTk5OGNkZmZiNmUzYmE4YQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU3VuIEZlYiAyNCAyMzo1MjozNSAyMDA4IC0wNTAwCgogICAgc21jOTExMTE6IHVzZSBTU1lOQygpIHJhdGhlciB0aGFuIGFzbShzc3luYykgZm9yIEJsYWNrZmluCgogICAgU2luY2UgdGhlICJzc3luYyIgaW5zdHJ1Y3Rpb24gbWF5IGhhdmUgaGFyZHdhcmUgYW5vbWFsaWVzIGFzc29jaWF0ZWQgd2l0aAogICAgaXQsIGhhdmUgdGhlIHNtYzkxMTExIGRyaXZlciB1c2UgdGhlIFNTWU5DIG1hY3JvIHJhdGhlciB0aGFuIGludm9raW5nIGl0CiAgICBkaXJlY3RseS4gIFdlIHdvcmthcm91bmQgYWxsIHRoZSBhbm9tYWxpZXMgdmlhIHRoaXMgbWFjcm8uCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDc3ZmY3Yjc0NDRjZWI4MDIyYjQ2MTE0ZjNkMGI2ZDE4ZTJmZDExMzgKQXV0aG9yOiBCcnlhbiBPJ0Rvbm9naHVlIDxib2Rvbm9naHVlQGNvZGVoZXJtaXQuaWU+CkRhdGU6CVN1biBGZWIgMTcgMjI6NTc6NDcgMjAwOCArMDAwMAoKICAgIDh4eDogVXBkYXRlIE9GIHN1cHBvcnQgb24gOHh4CgogICAgVGhpcyBwYXRjaCBkb2VzIHNvbWUgc2hpZnRpbmcgYXJvdW5kIG9mIE9GIHN1cHBvcnQgb24gOHh4LgoKICAgIFNpZ25lZC1vZmYtYnk6IEJyeWFuIE8nRG9ub2dodWUgPGJvZG9ub2dodWVAY29kZWhlcm1pdC5pZT4KCmNvbW1pdCA5YzY2NmE3ZGIwYjIyODVhMjcwYzY4ODEwODg5Y2U3ZDVkYmEzMDRiCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEZlYiAxNSAxNToxNjoxOCAyMDA4IC0wNjAwCgogICAgcHBjOiBBbGxvdyBib2FyZHMgdG8gc3BlY2lmeSBob3cgbXVjaCBtZW1vcnkgdGhleSBjYW4gbWFwCgogICAgRm9yIGhpc3RvcmljYWwgcmVhc29ucyB3ZSBsaW1pdGVkIHRoZSBzdGFjayB0byAyNTZNIGJlY2F1c2Ugc29tZSBib2FyZHMKICAgIGNvdWxkIG9ubHkgbWFwIHRoYXQgbXVjaCB2aWEgQkFUUy4JSG93ZXZlciBuZXdlciBib2FyZHMgYXJlIGNhcGFibGUgb2YKICAgIG1hcHBpbmcgbW9yZSBtZW1vcnkgKGZvciBleGFtcGxlIDg1eHggaXMgY2FwYmxlIG9mIGRvaW5nIHVwIHRvIDJHKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGE2ZjVmMzE3Y2QwNzRiYmJmYTJhYWI0ZmNhMDU5MDRjODExYzE5ZmIKQXV0aG9yOiBCcnlhbiBPJ0Rvbm9naHVlIDxib2Rvbm9naHVlQGNvZGVoZXJtaXQuaWU+CkRhdGU6CUZyaSBGZWIgMTUgMDE6MDU6NTggMjAwOCArMDAwMAoKICAgIDh4eCA6IEFkZCBPRiBzdXBwb3J0IHRvIEFkZGVyODc1IGJvYXJkIHBvcnQgLSByZXN1Ym1pdAoKICAgIFNpZ25lZC1vZmYtYnk6IEJyeWFuIE8nRG9ub2dodWUgPGJvZG9ub2dodWVAY29kZWhlcm1pdC5pZT4KCmNvbW1pdCBkMDU4Njk4ZmQyZDlmNzY5ZmYzOGFjNTNjODcwOGIzZmRkMzE0ZjJkCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEZlYiAxNCAyMDo0NDo0MiAyMDA4IC0wNjAwCgogICAgQWRkIHNldGV4cHIgY29tbWFuZAoKICAgIEFkZCBhIHNpbXBsZSBleHByIHN0eWxlIGNvbW1hbmQgdGhhdCB3aWxsIHNldCBhbiBlbnYgdmFyaWFibGUgYXMgdGhlIHJlc3VsdAogICAgb2YgdGhlIGNvbW1hbmQuICBUaGlzIGFsbG93cyB1cyB0byBkbyBzaW1wbGUgbWF0aCBpbiBzaGVsbC4gIFRoZSBmb2xsb3dpbmcKICAgIG9wZXJhdGlvbnMgYXJlIHN1cHBvcnRlZDogJiwgfCwgXiwgKywgLSwgKiwgLy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDNmMTA1ZmFhNjRiOTgyNmUwODg3MTFmZGZjYWE3MGNiMTIzMDM5N2EKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTWFyIDUgMTc6Mjc6NDggMjAwOCAtMDYwMAoKICAgIEZTTDogTW92ZSBib2FyZC9tcGM3NDQ4aHBjMiB1bmRlciBib2FyZC9mcmVlc2NhbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ0OWM3MDMzNzRhODg2ODQ1MzQyNWUxNWRhN2UyZjc2MjIxYjcyZTQKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTWFyIDUgMTc6MjE6NDMgMjAwOCAtMDYwMAoKICAgIEZTTDogTW92ZSBib2FyZC9tcGM4MjY2YWRzIHVuZGVyIGJvYXJkL2ZyZWVzY2FsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNTg2MzU3Nzk4OWFkNjg5NDI3YmI3NTAxMDdlOWE3NWYxYzE2NDVkMgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXIgNSAxNjo0MTo0MSAyMDA4IC0wNjAwCgogICAgRlNMOiBNb3ZlIGJvYXJkL21wYzgyNjBhZHMgdW5kZXIgYm9hcmQvZnJlZXNjYWxlCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4YTc3Mzk4Mzk1N2VlNmM0YWEzNDQ0NjliNzQyZjI5YzdkMjZhZmJkCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJVHVlIE1hciAyNSAyMTozMDowOCAyMDA4ICswOTAwCgogICAgW01JUFNdIE1vdmUgZ3RoMl9jb25maWcgZnJvbSBBUk0gc2VjdGlvbiB0byBNSVBTCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCAzNzNiMTZmYzBjNWFlMzRkMjhiOTAyN2Y4MDlhZTNjYmY0NWNkZDE1CkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJVHVlIE1hciAyNSAyMTozMDowNyAyMDA4ICswOTAwCgogICAgW01JUFNdIEV4dGVuZCBNSVBTX01BWF9DQUNIRV9TSVpFIHVwdG8gNjRrQgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgZDk4ZTM0OGUyZWQ1YWFiOGY3YTY0NzFmZjYyOGFiMDY4OGI4YTQ1OQpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVR1ZSBNYXIgMjUgMjE6MzA6MDcgMjAwOCArMDkwMAoKICAgIFtNSVBTXSBGaXggZGNhY2hlX3N0YXR1cygpCgogICAgWW91IGNhbid0IGp1ZGdlIFVOQ0FDSEVEIGJ5IENvbmZpZy5LMCBMU0IuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCBiMGM2NmFmNTNlYzkzODVhYzJkMWNjMmU1ZDdkMWVjZGM4MWNhZjM0CkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJVHVlIE1hciAyNSAyMTozMDowNyAyMDA4ICswOTAwCgogICAgW01JUFNdIEludHJvZHVjZSBfbWFjaGluZV9yZXN0YXJ0CgogICAgSGFuZGxlcyBtYWNoaW5lIHNwZWNpZmljIGZ1bmN0aW9ucyBieSB1c2luZyB3ZWFrIGZ1bmN0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IGRlY2FiYTZmNWNmMzg2ZDU2OWFjMzk5N2JlYmI4NzFiOTY2YzZiMTgKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglUdWUgTWFyIDI1IDIxOjMwOjA3IDIwMDggKzA5MDAKCiAgICBbTUlQU10gQ2xlYW51cCBDUDAgU3RhdHVzIGluaXRpYWxpemF0aW9uCgogICAgQWRkIHNldHVwX2MwX3N0YXR1cyBmcm9tIExpbnV4LiBGb3IgdGhlIG1vbWVudCB3ZSBkaXNhYmxlIGludGVycnVwdHMsIHNldAogICAgQ1UwLCBtYXJrIHRoZSBrZXJuZWwgbW9kZSwgYW5kIGNsZWFyIEVSTCBhbmQgRVhMLiBUaGlzIGlzIGdvb2QgZW5vdWdoIGZvcgogICAgcmVzZXQtdGltZSBjb25maWd1cmF0aW9uIGFuZCB3aWxsIHdvcmsgd2VsbCBhY3Jvc3MgbW9zdCBwcm9jZXNzb3JzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgZDQzZDQzZWYyODQ1YWYzMDljMjVhNjRiYjljMmM1ZmIzMjYxYmMyMwpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVR1ZSBNYXIgMjUgMjE6MzA6MDcgMjAwOCArMDkwMAoKICAgIFtNSVBTXSBJbml0aWFsaXplIENQMCBDYXVzZSBiZWZvcmUgc2V0dGluZyB1cCBDUDAgU3RhdHVzIHJlZ2lzdGVyCgogICAgV2l0aG91dCB0aGlzIGNoYW5nZSwgd2UnbGwgYmUgc3VmZmVyaW5nIGZyb20gZGVmZmVyZWQgV0FUQ0ggZXhjZXB0aW9uCiAgICBvbmNlIFN0YXR1cy5FWEwgaXMgY2xlYXJlZC4gTWFrZSBzdXJlIENhdXNlLldQIGlzIGNsZWFyZWQuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCAyNjEzODYyMzIzMGNhMmJhZDNjNzhlMDVhNjU1MjdlYTcwYzhiNjg4CkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJVHVlIE1hciAyNSAyMTozMDowNyAyMDA4ICswOTAwCgogICAgW01JUFNdIElOQ0EtSVA6IE1vdmUgd2F0Y2hkb2cgaW5pdCBjb2RlIGZyb20gc3RhcnQuUyB0byBsb3dsZXZlbF9pbml0KCkKCiAgICBNb3ZlIHRoaW5ncyB0byBhcHByb3ByaWF0ZSBwbGFjZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IGNjZjhmODI0ZWY2N2RmMDI4ZGVkYjI5ZjhlYTVkNzFhNWE4OGQ4OTUKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglUdWUgTWFyIDI1IDIxOjMwOjA2IDIwMDggKzA5MDAKCiAgICBbTUlQU10gSW1wbGVtZW50IGZsdXNoX2NhY2hlKCkKCiAgICBXZSBkbyBIaXRfV3JpdGViYWNrX0ludl9EIGFuZCBIaXRfSW52YWxpZGF0ZV9JLiBZb3UgbWlnaHQgdGhpbmsgdGhhdCB5b3UKICAgIGRvbid0IG5lZWQgdG8gZG8gSGl0X0ludmFsaWRhdGVfSSwgYnV0IGZsdXNoX2NhY2hlKCkgbmVlZHMgaXQgc2luY2UgdGhpcwogICAgZnVuY3Rpb24gaXMgdXNlZCBub3Qgb25seSBpbiBVLUJvb3Qgc3BlY2ZpYyBwcm9ncmFtcyBidXQgYWxzbyBhdCBsb2FkaW5nCiAgICB0YXJnZXQgYmluYXJpZXMuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCAyZTBlNTI3MWFhYzkxNzgxMmE3NmM3MjAzMGEyYjJjNmYxZDMzODdkCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJVHVlIE1hciAyNSAyMTozMDowNiAyMDA4ICswOTAwCgogICAgW01JUFNdIEZpeCBJLS9ELWNhY2hlIGluaXRpYWxpemF0aW9uIGxvb3BzCgogICAgQ3VycmVudGx5IHdlIGRvIDEpIEluZGV4X1N0b3JlX1RhZ19JLCAyKSBGaWxsIGFuZCAzKSBJbmRleF9TdG9yZV9UYWdfSQogICAgYWdhaW4gcGVyIGEgbG9vcCBmb3IgSS1jYWNoZSBpbml0aWFsaXphdGlvbi4gQnV0IGFjY29yZGluZyB0byAnU2VlIE1JUFMKICAgIFJ1bicsIHdlJ3JlIGVuY291cmFnZWQgdG8gdXNlIHRocmVlIHNlcGFyYXRlIGxvb3BzIHJhdGhlciB0aGFuIGNvbWJpbmluZwogICAgdGhlbSAqZm9yIGJvdGggSS0gYW5kIEQtY2FjaGUqLiBUaGlzIHBhdGNoIHRyaWVzIHRvIGZpeCB0aGlzLgoKICAgIEluIGFjY29yZGFuY2Ugd2l0aCBmaXhpbmcgYWJvdmUsIG1pcHNfaW5pdF9baWRdY2FjaGUgYXJlIHNlcGFyYXRlZCBmcm9tCiAgICBtaXBzX2NhY2hlX3Jlc2V0KCksIGFuZCByZXdyaXRlIGNhY2hlIGxvb3BzIGFyZSBjb21wbGV0ZWx5IHJld3JpdHRlbiB3aXRoCiAgICB1c2VmdWwgbWFjcm9zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgMTg5ODg0MDc5N2M3ZjUwNzk5Mzc3YmQ1YjI4NWE4YTkzYTgyYzQxOQpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVR1ZSBNYXIgMjUgMjE6MzA6MDYgMjAwOCArMDkwMAoKICAgIFtNSVBTXSBSZXBsYWNlIG1lbW9yeSBjbGVhcmFuY2UgY29kZSB3aXRoIGZfZmlsbDY0CgogICAgVGhpcyByb3V0aW5lIGZpbGxzIG1lbW9yeSB3aXRoIHplcm8gYnkgNjQgYnl0ZXMsIGFuZCBpcyA2NC1iaXQgY2FwYWJsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IDJmNWQ0MTRjY2I0MDI0ZGQwOTkyZmY2YjIyNTYxNzMyZGJjNzM1OTAKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglUdWUgTWFyIDI1IDIxOjMwOjA2IDIwMDggKzA5MDAKCiAgICBbTUlQU10gY3B1L21pcHMvY2FjaGUuUzogSW50cm9kdWNlIE5FU1RFRC9MRUFGL0VORCBtYWNyb3MKCiAgICBUaGlzIHBhdGNoIHJlcGxhY2VzIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGRlZmluaXRpb25zIHdpdGggTkVTVEVELCBMRUFGCiAgICBhbmQgRU5EIG1hY3JvLiBUaGV5IHNwZWNpZnkgc29tZSBtb3JlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlCiAgICBmdW5jdGlvbjsgYW4gYWxpZ25tZW50IG9mIHN5bWJvbCwgdHlwZSBvZiBzeW1ib2wsIHN0YWNrIGZyYW1lIHVzYWdlLCBldGMuCiAgICBUaGVzZSBpbmZvcm1hdGlvbiBleHBsaWNpdGx5IHRlbGxzIHRoZSBhc3NlbWJsZXIgYW5kIHRoZSBkZWJ1Z2dlciBhYm91dAogICAgdGhlIHR5cGVzIG9mIGNvZGUgd2Ugd2FudCB0byBnZW5lcmF0ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IDI4MjIyM2E2MDdjNjExNDI1ZmEzM2Y1NDI4ZjhlYWU2NjM2OTcyYmIKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglUdWUgTWFyIDI1IDExOjQzOjE3IDIwMDggKzA5MDAKCiAgICBbTUlQU10gYXNtIGhlYWRlcnMnIHVwZGF0ZXMKCiAgICBNYWtlIHNvbWUgYXNtIGhlYWRlcnMgYWRqdXN0ZWQgdG8gdGhlIGxhdGVzdCBMaW51eCBrZXJuZWwuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCBlMTM5MDgwMWEzYzFhMmI2ZDEyZmE5MGJlMzY4ZWZjMTlmNWI5YmZkCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJVHVlIE1hciAyNSAxMTozOToyOSAyMDA4ICswOTAwCgogICAgW01JUFNdIFJlcXVlc3QgZm9yIHRoZSAnbWlwc19jYWNoZV9sb2NrKCknIHJlbW92YWwKCiAgICBUaGUgaW5pdGlhbCBpbnRlbnNpb24gb2YgaGF2aW5nIG1pcHNfY2FjaGVfbG9jaygpIHdhcyB0byB1c2UgdGhlIGNhY2hlCiAgICBhcyBtZW1vcnkgZm9yIHRlbXBvcmFyeSBzdGFjayB1c2Ugc28gdGhhdCBhIEMgZW52aXJvbm1lbnQgY2FuIGJlIHNldCB1cAogICAgYXMgZWFybHkgYXMgcG9zc2libGUuCgogICAgQnV0IG5vdyBtaXBzX2NhY2hlX2xvY2soKSBmb2xsb3cgbG93bGV2ZWxfaW5pdCgpLiBXZSd2ZSBhbHJlYWR5IGhhdmUgdGhlCiAgICByZWFsIG1lbW9yeSBpbml0aWxhaXplZCBhdCB0aGlzIHBvaW50LCB0aGVyZWZvcmUgd2UgY291bGQvc2hvdWxkIHVzZSBpdC4KICAgIE5vIHJlYXNvbiB0byBsb2NrIGF0IGFsbC4KCiAgICBPdGhlciBwcm9ibGVtczoKCiAgICBDYWNoZSBsb2NraW5nIGlzIG5vdCBjb25zaXN0ZW50IGFjcm9zcyBNSVBTIGltcGxlbWVudGFpb25zLiBTb21lIGltcGxlLQogICAgbWVudGF0aW9ucyBkb24ndCBzdXBwb3J0IGxvY2tpbmcgYXQgYWxsLiBUaGUgc3R5bGUgb2YgbG9ja2luZyB2YXJpZXMgLQogICAgc29tZSBzdXBwb3J0IHBlciBsaW5lIGxvY2tpbmcsIG90aGVycyBwZXIgd2F5LCBldGMuIFNvbWUgcGFydHMgdXNlIGJpdHMKICAgIGluIHN0YXR1cyByZWdpc3RlcnMgaW5zdGVhZCBvZiBjYWNoZSBvcHMuIEN1cnJlbnQgbWlwc19jYWNoZV9sb2NrKCkgaXMKICAgIG5vdCBuZWNlc3NhcmlseSBnZW5lcmFsLXB1cnBvc2UuCgogICAgQW5kIHRoaXMgaXMgd29ydGh5IG9mIHNwZWNpYWwgbWVudGlvbjsgb25jZSBVLUJvb3QvTUlQUyBsb2NrcyB0aGUgbGluZXMsCiAgICB0aGV5IGFyZSBuZXZlciBnZXQgdW5sb2NrZWQsIHNvIHRoZSBjb2RlIHJlbGllcyBvbiB3aGF0ZXZlciBnZXRzIGxvYWRlZAogICAgYWZ0ZXIgVS1Cb290IHRvIHJlLWluaXRpYWxpemUgdGhlIGNhY2hlIGFuZCBjbGVhciB0aGUgbG9ja3MuIFdlJ3JlIHN1cC0KICAgIHBvc2VkIHRvIGhhdmUgQ0ZHX0lOSVRfUkFNX0xPQ0sgYW5kIHVubG9ja19yYW1faW5fY2FjaGUoKSBpbXBsZW1lbnRlZCwKICAgIGJ1dCBsZWF2ZSB0aGUgc2l0dWF0aW9uIGFzIGl0IGlzIGZvciBhIGxvbmcgdGltZS4KCiAgICBGb3IgdGhlc2UgcmVhc29ucywgSSBwcm9wb3NlZCB0aGUgcmVtb3ZhbCBvZiBtaXBzX2NhY2hlX2xvY2soKSBmcm9tIHRoZQogICAgZ2xvYmFsIHN0YXJ0LXVwIGNvZGUuCgogICAgVGhpcyBwYXRjaCBhZGRzIENGR19JTklUX1JBTV9MT0NLX01JUFMgdG8gbWFrZSBleGlzdGluZyB1c2VycyBhd2FyZSB0aGF0CiAgICAqdGhpbmdzIGhhdmUgY2hhbmdlZCouIElmIGhlIHdhbnRzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIGJlZm9yZSwgaGUgbmVlZHMKICAgIHRvIGhhdmUgQ0ZHX0lOSVRfUkFNX0xPQ0tfTUlQUyBpbiBoaXMgY29uZmlnIGZpbGUuCgogICAgSWYgd2UgZG9uJ3QgaGF2ZSBhbnkgcmVncmVzc2lvbiByZXBvcnQgdGhyb3VnaCBzZXZlcmFsIHJlbGVhc2VzLCB0aGVuCiAgICB3ZSdsbCByZW1vdmUgY29kZXMgZW50aXJlbHkuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KICAgIEFja2VkLWJ5OiBBbmRyZXcgRHllciA8YW1keWVyQGdtYWlsLmNvbT4KCmNvbW1pdCAwZDQ4OTI2Yzg3ZWM5NmY5NzRhNmFjNDAzNGY0YTJmMmVhYjMyNTVmCkF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgpEYXRlOglNb24gTWFyIDI0IDExOjMwOjU0IDIwMDggKzAxMDAKCiAgICBsd21vbjUgU1lTTU9OIFBPU1Q6IGZpeCBiYWNrbGlnaHQgY29udHJvbAoKICAgIElmIHRoZSBMV01PTjUgY29uZmlnIGhhcyBTWVNNT04gUE9TVCBhbW9uZyBDT05GSUdfUE9TVHMgd2hpY2ggbWF5IGJlCiAgICBydW4gb24gdGhlIGJvYXJkLCB0aGVuIHRoZSBTWVNNT04gUE9TVCBjb250cm9scyB0aGUgZGlzcGxheSBiYWNrbGlnaHQKICAgIChkb2Vzbid0IHN3aXRjaCBiYWNrbGlnaHQgT04gaWYgUE9TVCBGQUlMRUQsIGFuZCBkb2VzIHN3aXRjaCB0aGUKICAgIGJhY2tsaWdodCBPTiBpZiBQQVNTRUQpLgoKICAgIElmIG5vdCwgdGhlbiB0aGUgdmlkZW8gZHJpdmVyIGNvbnRyb2xzIHRoZSBkaXNwbGF5IGJhY2tsaWdodCAoanVzdAogICAgc3dpdGNoIE9OIHRoZSBiYWNrbGlnaHQgdXBvbiBpbml0aWFsaXphdGlvbikuCgogICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgoKY29tbWl0IGZmMmJkZmIyYzFlMDczZjY1YzA2NTAxMWYxZTE4ZDBhMTMwYmQzZDgKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CkRhdGU6CU1vbiBNYXIgMjQgMTE6Mjk6MTQgMjAwOCArMDEwMAoKICAgIGx3bW9uNSBTWVNNT04gUE9TVDogZml4IGhhbmRsaW5nIG9mIG5lZ2F0aXZlIHRlbXBlcmF0dXJlcwoKICAgIEZpeCBlcnJvcnMgaW4gdGhlIExXTU9ONSBTeXNtb24gUE9TVCBmb3IgbmVnYXRpdmUgdGVtcGVyYXR1cmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KCmNvbW1pdCA1NTc3NGI1MTJmZGY2M2MwNTE2ZDQ0MWNjNWRhN2M1NGJiZmZiN2YyCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglGcmkgTWFyIDcgMTY6MDQ6MjUgMjAwOCArMDkwMAoKICAgIHBjaTogQWRkIENPTkZJR19QQ0lfU0tJUF9IT1NUX0JSSURHRSBjb25maWcgb3B0aW9uCgogICAgSW4gY3VycmVudCBzb3VyY2UgY29kZSwgd2hlbiB0aGUgZGV2aWNlIG51bWJlciBvZiBQQ0kgaXMgMCwgcHJvY2VzcyBQQ0kKICAgIGJyaWRnZSB3aXRob3V0IGZhaWwuIEhvd2V2ZXIsIHdoZW4gdGhlIGRldmljZSBudW1iZXIgaXMgMCwgaXQgaXMgbm90IFBDSQogICAgYWx3YXlzIGJyaWRnZS4gVGhlcmUgYXJlIHRpbWVzIHdoZW4gZGV2aWNlIG9mIFBDSSBhbGxvY2F0ZXMuCgogICAgV2hlbiBDT05GSUdfUENJX1NLSVBfSE9TVF9CUklER0UgaXMgZW5hYmxlLCB0aGlzIHByb2JsZW0gaXMgc29sdmVkIHdoZW4KICAgIHVzZSB0aGlzIHBhdGNoLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODZhZWEzZWFlZmEyNDhmZmI5MzI4ZTJiNTBjNjQ3MjA0ODljZGJlYgpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KRGF0ZToJRnJpIE1hciAyMSAwOToxODo0MCAyMDA4ICswMTAwCgogICAgTFdNT041OiBmaXggZHNQSUMgUE9TVAoKICAgIEFkZCB0ZXN0IGZvciBEUElDX1NZU19FUlJPUl9SRUcgdG8gYmUgemVybyBpbiB0aGUgTFdNT041IGRzUElDIFBPU1QuCgogICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPiAtLS0KCmNvbW1pdCAzODhiODJmZGRjN2MwNTU5NmYzZjYxNWYxOTBkYTA0NDgyMjdkYzgyCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IE1hciAyMCAyMzoyMzoxMyAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIEVuYWJsZSBuZXcgdUltYWdlIHN1cHBvcnQgZm9yIHRoZSBwY3M0NDBlcCBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDk1ZjRlYzJiOWM5MTBjNzI2MWU2ZjA2MGVhNTMwZDU4YjAzOTY5MmQKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgTWFyIDIwIDIzOjIzOjEzIDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gRG8gbm90IGNvbXBpbGUgbmV3IHVJbWFnZSBmb3JtYXQgc3VwcG9ydCBieSBkZWZhdWx0CgogICAgRGlzYWJsZSBkZWZhdWx0IGJ1aWxkaW5nIG9mIG5ldyB1SW1hZ2UgZm9ybWF0IHN1cHBvcnQgaW4gcHJlcGFyYXRpb24KICAgIGZvciBtZXJnZSB3aXRoIHRoZSBtYXN0ZXIuIFN1cHBvcnQgZm9yIG5ldyBmb3JtYXQgY2FuIGJlIGVuYWJsZWQgb24KICAgIGEgcGVyLWJvYXJkIGJhc2lzLCBieSBkZWZpbmluZyB0aGUgZm9sbG93aW5nIGluIHRoZSBib2FyZCdzIGNvbmZpZyBmaWxlOgoKICAgICNkZWZpbmUgQ09ORklHX0ZJVAkJICAgMQogICAgI2RlZmluZSBDT05GSUdfT0ZfTElCRkRUCSAgIDEKCiAgICBUaGlzIGNhbiBiZSBvcHRpb25hbGx5IGRlZmluZWQgdG8gZ2l2ZSBtb3JlIHZlcmJvc2Ugb3V0cHV0OgoKICAgICNkZWZpbmUgQ09ORklHX0ZJVF9WRVJCT1NFCSAgIDEgLyogZW5hYmxlIGZpdF9mb3JtYXRfe2Vycm9yLHdhcm5pbmd9KCkgKi8KCiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IGRhZmFlZGU4YTQ2YzcxNTkzMTAyMzllMDM2YzkzZTMxYzYzNzQ0ODcKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgTWFyIDIwIDIzOjIwOjMxIDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gRGlzYWJsZSBkZWJ1Z2luZyBvdXRwdXQgaW4gcHJlcGFyYXRpb24gZm9yIG1lcmdlIHdpdGggbWFzdGVyCgogICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KCmNvbW1pdCBmYmU3YTE1NTAyN2JlYWNlYmFlZTliMzJlMWFkYTc4MWZlOTI0YmNhCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IE1hciAyMCAxOTozODo0NSAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIENvbXBpbGF0aW9uIGFuZCBuZXcgdUltYWdlIGhhbmRsaW5nIGZpeGVzIGZvciBpbXh0cmFjdAoKICAgIEZpeCBpbXh0cmFjdCBjb21tYW5kIG5vdCBiZWluZyBjb21waWxlZC1pbiBkZXNwaXRlIENPTkZJR19DTURfWElNRyBiZWluZyBpbgogICAgaW5jbHVkZS9jb25maWdfY21kX2RlZmF1bHQuaC4gRml4IGZldyB3YXJuaW5ncyBhbmQgaGFuZGxpbmcgb2YgbmV3IGZvcm1hdAogICAgaW1hZ2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgMzZjYzhjYmIzMzc5ZDUxNjZmODgyNjQxMTIzNTIxNzM1YzQ2OWY5MgpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVRodSBNYXIgMjAgMjM6MTA6MTkgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBGaXggYXV0b3NjciBjb21tYW5kIHVzZWQgd2l0aCBuZXcgdUltYWdlIGZvcm1hdAoKICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgNDMxNDJlODE3ZjA1OTdiZTQxMmU3Y2JlMTk0MTNmNTUzMmVhZmE1ZApBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVRodSBNYXIgMjAgMjM6MTA6MTkgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBGaXggKi5pdHMgZmlsZXMgbG9jYXRpb24gaW4gZG9jdW1lbnRhdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgODFhMGFjNjJlYTI5ZjgyNTJkMGE3MTQ3MDlkMGVjZmRiYmEyYTE1ZQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVRodSBNYXIgMjAgMjI6MDE6MzggMjAwOCArMDEwMAoKICAgIGx3bW9uNSBQT1NUOiByZW1vdmUgdW5yZWFjaGFibGUgY29kZQoKICAgIHBsdXMgc29tZSBjb2Rpbmcgc3R5bGUgY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYjczYTE5ZTE2MDlkMGY3MDVjYmFiODAxNGNhMTdhZWZlODllNGM3NgpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KRGF0ZToJVGh1IE1hciAyMCAxNzo1NjowNCAyMDA4ICswMzAwCgogICAgTFdNT041OiBQT1NUIFJUQyBmaXgKCiAgICBNb2RpZnkgdGhlIFJUQyBBUEkgdG8gcHJvdmlkZSBvbmUgYSBzdGF0dXMgZm9yIHRoZSB0aW1lIHJlcG9ydGVkIGJ5CiAgICB0aGUgcnRjX2dldCgpIGZ1bmN0aW9uOgogICAgICAwIC0gYSByZWxpYWJsZSB0aW1lIGlzIGd1YXJhbnRlZWQsCiAgICA8IDAgLSBhIHJlbGlhYmxlIHRpbWUgaXNuJ3QgZ3VhcmFudGVlZCAocG93ZXIgZmF1bHQsIGNsb2NrIGlzc3VlcywKCSAgYW5kIHNvIG9uKS4KCiAgICBUaGUgUlRDIGNoaXAgZHJpdmVycyBhcmUgcmVzcG9uc2libGUgZm9yIHByb3ZpZGluZyB0aGlzIGluZm8gaWYgdGhlCiAgICBjb3JyZXNwb25kaW5nIGNoaXAgc3VwcG9ydHMgc3VjaCBmdW5jdGlvbmFsaXR5LiBJZiBub3QgLSBhbHdheXMKICAgIHJlcG9ydCB0aGF0IHRoZSB0aW1lIGlzIHJlbGlhYmxlLgoKICAgIFRoZSBQT1NUIFJUQyB0ZXN0IHdhcyBtb2RpZmllZCB0byBkZXRlY3QgdGhlIFJUQyBmYXVsdHMgdXRpbGl6aW5nCiAgICB0aGlzIG5ldyBydGNfZ2V0KCkgZmVhdHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgYTVjYzU1NTVjY2VlNTk2OTA4YTdkOGNmMjJhMTA0ZjZiOTkzYmZkNQpBdXRob3I6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgpEYXRlOglXZWQgTWFyIDE5IDE0OjI1OjE0IDIwMDggKzAxMDAKCiAgICBUUU01MjAwQjogdXBkYXRlIE1URCBwYXJ0aXRpb24gbGF5b3V0CgogICAgLSBpbnNlcnQgcGFydGl0aW9uIGZvciBkdGIgYmxvYiB0byBUUU01MjAwQiBNVEQgbGF5b3V0CiAgICAtIHNldCBlbnYgdmFyaWFibGVzIGRlcGVuZGVudCBvbiB0aGUgY29uZmlndXJlZCBib2FyZAogICAgICAoVFFNNTIwMCBvciBUUU01MjAwQikKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KCmNvbW1pdCBmMDEwNTcyN2QxMzJmNTZhMjFmYTNlZDhiMTYyMzA5Y2NhNmNhYzQ0CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDE5IDA3OjA5OjI2IDIwMDggKzAxMDAKCiAgICBDRkk6IFNtYWxsIGNsZWFudXAgZm9yIEZMQVNIX1NIT1dfUFJPR1JFU1MKCiAgICBXaXRoIHRoaXMgcGF0Y2ggd2UgZG9uJ3QgbmVlZCB0aGF0IG1hbnkgI2lmZGVmJ3MgaW4gdGhlIGNvZGUuIEl0IG1vdmVzCiAgICB0aGUgc3VidHJhY3Rpb24gaW50byB0aGUgbWFjcm8gYW5kIGRlZmluZXMgYSBOT1AtbWFjcm8gd2hlbgogICAgQ09ORklHX0ZMQVNIX1NIT1dfUFJPR1JFU1MgaXMgbm90IGRlZmluZWQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQWNrZWQtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgOWEwNDJlOWNhNTEyYmVhYWEyY2I0NTAyNzQzMTNmYzQ3NzE0MTI0MQpBdXRob3I6IEplcnJ5IFZhbiBCYXJlbiA8Z3ZiLnVib290QGdtYWlsLmNvbT4KRGF0ZToJU2F0IE1hciA4IDEzOjQ4OjAxIDIwMDggLTA1MDAKCiAgICBGbGFzaCBwcm9ncmFtbWluZyBwcm9ncmVzcyBjb3VudGRvd24uCgogICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCA1ZTMzOWZkOWVkNTM5YTdkN2ZlYzU5Y2ZjODhmMDg1N2FiMjZhNTNmCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIE1hciAxOSAxMDowMDowNiAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIEZpeCBzdHlsZSBpc3N1ZSBzcG90dGVkIGJ5IFdvbGZnYW5nIERlbmsgPHdkQGRlbngub3JnPgoKICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgMTFhYmU0NWM0OGVjMzQ4NWE2YzFhNTE2OGNlOGQ3OWMzMjg4YWRjMQpBdXRob3I6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgpEYXRlOglNb24gRmViIDE4IDE4OjA5OjA0IDIwMDggKzExMDAKCiAgICBsaWJmZHQ6IFJlbW92ZSBubyBsb25nZXIgdXNlZCBjb2RlIGZyb20gZmR0X25vZGVfb2Zmc2V0X2J5X2NvbXBhdGlibGUoKQoKICAgIFNpbmNlIGZkdF9ub2RlX29mZnNldF9ieV9jb21wYXRpYmxlKCkgd2FzIGNvbnZlcnRlZCB0byB0aGUgbmV3CiAgICBmZHRfbmV4dF9ub2RlKCkgaXRlcmF0b3IsIGEgY2h1bmsgb2YgaW5pdGlhbGl6YXRpb24gY29kZSBiZWNhbWUKICAgIHJlZHVuZGFudCwgYnV0IHdhcyBub3QgcmVtb3ZlZCBieSBvdmVyc2lnaHQuICBUaGlzIHBhdGNoIGNsZWFucyBpdCB1cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KCmNvbW1pdCBkMGNjYjliMTQwYjQ3MjAzOTczMmRlMTAyZmMxNDU5N2VlZGIxNGRmCkF1dGhvcjogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+CkRhdGU6CU1vbiBGZWIgMTggMTg6MDY6MzEgMjAwOCArMTEwMAoKICAgIGxpYmZkdDogVHJpdmlhbCBjbGVhbnVwIGZvciBDSEVDS19IRUFERVIpCgogICAgQ3VycmVudGx5IHRoZSBDSEVDS19IRUFERVIoKSBtYWNybyBpcyBkZWZpbmVkIGxvY2FsIHRvIGZkdF9yby5jLgogICAgSG93ZXZlciwgdGhlcmUgYXJlIGEgaGFuZGZ1bCBvZiBmdW5jdGlvbnMgKGZkdF9tb3ZlLCByd19jaGVja19oZWFkZXIsCiAgICBmZHRfb3Blbl9pbnRvKSBmcm9tIG90aGVyIGZpbGVzIHdoaWNoIGNvdWxkIGFsc28gdXNlIGl0IChjdXJyZW50bHkKICAgIHRoZXkgb3Blbi1jb2RlIHNvbWV0aGluZyBtb3JlLW9yLWxlc3MgaWRlbnRpY2FsKS4gIFRoZXJlZm9yZSwgdGhpcwogICAgcGF0Y2ggbW92ZXMgQ0hFQ0tfSEVBREVSKCkgdG8gbGliZmR0X2ludGVybmFsLmggYW5kIHVzZXMgaXQgaW4gdGhvc2UKICAgIHBsYWNlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KCmNvbW1pdCBmZTMwYTM1NGNkYmI4MDhiNWYxNTM2NmE5MzViMTUxYTRjY2VlNzRmCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEZlYiAyMCAxNDozMjozNiAyMDA4IC0wNjAwCgogICAgRml4IGZkdCBib2FyZHNldHVwIGNvbW1hbmQgcGFyc2luZwoKICAgIFRoZSBpbnRyb2R1Y2l0b24gb2YgdGhlICdmZHQgYm9vdGNwdScgYnJva2UgcGFyc2luZyBmb3IgJ2ZkdCBib2FyZHNldHVwJy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDgwNDg4N2U2MDAxZTJmMDBiZWExMTQzMWJmMzRkNmQ0NzI1MTJjZGEKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglGcmkgRmViIDE1IDAzOjM0OjM2IDIwMDggLTA2MDAKCiAgICBBZGQgc3ViLWNvbW1hbmRzIHRvIGZkdAoKICAgIGZkdCBoZWFkZXIJCQkJLSBEaXNwbGF5IGhlYWRlciBpbmZvCiAgICBmZHQgYm9vdGNwdSA8aWQ+CQkJLSBTZXQgYm9vdCBjcHVpZAogICAgZmR0IG1lbW9yeSA8YWRkcj4gPHNpemU+CQktIEFkZC9VcGRhdGUgbWVtb3J5IG5vZGUKICAgIGZkdCByc3ZtZW0gcHJpbnQJCQktIFNob3cgY3VycmVudCBtZW0gcmVzZXJ2ZXMKICAgIGZkdCByc3ZtZW0gYWRkIDxhZGRyPiA8c2l6ZT4JLSBBZGQgYSBtZW0gcmVzZXJ2ZQogICAgZmR0IHJzdm1lbSBkZWxldGUgPGluZGV4PgkJLSBEZWxldGUgYSBtZW0gcmVzZXJ2ZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGY4NGQ2NWY5YjA4NWZmYmVkNDY0ZDFkNThlOGFhYThmNWEyZWZjMDcKQXV0aG9yOiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KRGF0ZToJVGh1IEZlYiAxNCAxNjo1MDozNCAyMDA4ICsxMTAwCgogICAgbGliZmR0OiBGaXggTk9QIGhhbmRsaW5nIGJ1ZyBpbiBmZHRfYWRkX3N1Ym5vZGVfbmFtZWxlbigpCgogICAgZmR0X2FkZF9zdWJub2RlX25hbWVsZW4oKSBoYXMgYSBidWcgaWYgYXNrZWQgdG8gYWRkIGEgc3Vibm9kZSB0byBhCiAgICBub2RlIHdoaWNoIGhhcyBOT1AgdGFncyBpbnRlcnNwZXJzZWQgd2l0aCBpdHMgcHJvcGVydGllcy4gIEluIHRoaXMKICAgIGNhc2UgZmR0X2FkZF9zdWJub2RlX25hbWVsZW4oKSB3aWxsIHB1dCB0aGUgbmV3IHN1Ym5vZGUgYmVmb3JlIHRoZQogICAgZmlyc3QgTk9QIHRhZywgZXZlbiBpZiB0aGVyZSBhcmUgcHJvcGVydGllcyBhZnRlciBpdCwgd2hpY2ggd2lsbAogICAgcmVzdWx0IGluIGFuIGludmFsaWQgYmxvYi4KCiAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBidWcsIGFuZCBhZGRzIGEgdGVzdGNhc2UgZm9yIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgoKY29tbWl0IGFlMGI1OTA4ZGUzYjk4NTVmODkzMWJjOWIzMmM5ZmM0OTYyZGY1YTkKQXV0aG9yOiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KRGF0ZToJVHVlIEZlYiAxMiAxMTo1ODozMSAyMDA4ICsxMTAwCgogICAgbGliZmR0OiBBZGQgYW5kIHVzZSBhIG5vZGUgaXRlcmF0aW9uIGhlbHBlciBmdW5jdGlvbi4KCiAgICBUaGlzIHBhdGNoIGFkZHMgYW4gZmR0X25leHRfbm9kZSgpIGZ1bmN0aW9uIHdoaWNoIGNhbiBiZSB1c2VkIHRvCiAgICBpdGVyYXRlIHRocm91Z2ggbm9kZXMgb2YgdGhlIHRyZWUgd2hpbGUga2VlcGluZyB0cmFjayBvZiBkZXB0aC4gIFRoaXMKICAgIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc2ltcGxpZnkgdGhlIGl0ZXJhdGlvbiBjb2RlIGluIGEgbG90IG9mIG90aGVyCiAgICBmdW5jdGlvbnMsIGFuZCBpcyBhbHNvIGV4cG9ydGVkIGZvciB1c2UgYnkgbGlicmFyeSB1c2Vycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KCmNvbW1pdCA5ZWFlYjA3YTcxODVkODUyYzdhYTEwNzM1ZWNkNGU5ZWRmMjRmYjVkCkF1dGhvcjogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+CkRhdGU6CUZyaSBKYW4gMTEgMTQ6NTU6MDUgMjAwOCArMTEwMAoKICAgIGxpYmZkdDogQWRkIGZkdF9zZXRfbmFtZSgpIGZ1bmN0aW9uCgogICAgVGhpcyBwYXRjaCBhZGRzIGFuIGZkdF9zZXRfbmFtZSgpIGZ1bmN0aW9uIHRvIGxpYmZkdCwgbWlycm9yaW5nCiAgICBmZHRfZ2V0X25hbWUoKS4gIFRoaXMgaXMgYSByL3cgZnVuY3Rpb24gd2hpY2ggYWx0ZXJzIHRoZSBuYW1lIG9mIGEKICAgIGdpdmVuIGRldmljZSB0cmVlIG5vZGUuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+Cgpjb21taXQgMjNlMjBhYTY0ODhlNmMwNjIyNDk2NTQ5ODYxYmZkYzc0MTA4ZGViZQpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBwb2xsdXguZGVueC5kZT4KRGF0ZToJVHVlIE1hciAxOCAxMzozMzozMCAyMDA4ICswMTAwCgogICAgbHdtb241OiBGaXggcmVnaXN0ZXIgdGVzdCBsb2dpYyB0byBtYXRjaCB0aGUgc3BlY2lmaWMgR0RDIGgvdy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEbWl0cnkgUmFraGNoZXYgPHJkYUBlbWNyYWZ0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KCmNvbW1pdCA0NmJjMGE5Mzg3NzlhYTFkNjY0Yjg0N2QzNmIwOGFhMDBmMjJlNTM5CkF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQHBvbGx1eC5kZW54LmRlPgpEYXRlOglUdWUgTWFyIDE4IDEzOjI3OjU3IDIwMDggKzAxMDAKCiAgICBGaXggYmFja2xpZ2h0IGluIHRoZSBsd21vbjUgUE9TVC4KCiAgICBCYWNrbGlnaHQgd2FzIHN3aXRjaGVkIG9uIGV2ZW4gd2hlbiB0ZW1wZXJhdHVyZSB3YXMgdG9vIGxvdy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEbWl0cnkgUmFraGNoZXYgPHJkYUBlbWNyYWZ0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KCmNvbW1pdCAzZDYxMDE4NjQzYTJjZDM4YzE0NWFhNmRkZTUzZjNmNWYxYTBlOWNmCkF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQHBvbGx1eC5kZW54LmRlPgpEYXRlOglXZWQgRmViIDYgMTg6NDg6MzYgMjAwOCArMDEwMAoKICAgIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBhbHRlcm5hdGl2ZSBjb25maWd1cmF0aW9uIG9mIHRoZSBsb2cgYnVmZmVyIGZvciB0aGUgbHdtb241IGJvYXJkOiB0aGUgc3RvcmFnZSBmb3IgdGhlIGxvZy1idWZmZXIgaXRzZWxmIGlzIE9DTShvbi1jaGlwIG1lbW9yeSksIHRoZSBsb2ctYnVmZmVyIGhlYWRlciBpcyBtb3ZlZCB0byBzaXggR1BUIHJlZ2lzdGVycyAoUFBDNDQwRVBYX0dQVDBfQ09NUDEsIC4uLiwgUFBDNDQwRVBYX0dQVDBfQ09NUDUpLgoKICAgICBUbyBlbmFibGUgdGhpcywgYWx0ZXJuYXRpdmUsIGNvbmZpZ3VyYXRpb24gdGhlIFUtQm9vdCBib2FyZCBjb25maWd1cmF0aW9uCiAgICBmaWxlIGZvciBsd21vbjUgaW5jbHVkZXMgdGhlIGRlZmluaXRpb25zIG9mIGFsdGVybmF0aXZlIGFkZHJlc3NlcyBmb3IgaGVhZGVyCiAgICAoQ09ORklHX0FMVF9MSF9BRERSKSBhbmQgYnVmZmVyIChDT05GSUdfQUxUX0xCX0FERFIpLgoKICAgICBUaGUgTGludXggc2hhbGwgYmUgY29uZmlndXJlZCB3aXRoIHRoZSBDT05GSUdfQUxUX0xCX0xPQ0FUSU9OIG9wdGlvbiBzZXQsCiAgICBhbmQgaGFzIHRoZSBCT0FSRF9BTFRfTEhfQUREUiBhbmQgQk9BUkRfQUxUX0xCX0FERFIgY29uc3RhbnRzIGRlZmluZWQgaW4gdGhlCiAgICBsd21vbjUgYm9hcmQtc3BlY2lmaWMgaGVhZGVyIChhcmNoL3BwYy9wbGF0Zm9ybXMvNHh4L2x3bW9uNS5oKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgMGYwMDlmNzgxYjViODhmMjU3NjllMTU0ZWE0ZDQyZGIxM2JhZjBjNgpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBwb2xsdXguZGVueC5kZT4KRGF0ZToJTW9uIEZlYiA0IDE3OjExOjUzIDIwMDggKzAxMDAKCiAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIGx3bW9uNSBib2FyZCByZXNldCB2aWEgR1BJTzU4LgoKICAgIFNpZ25lZC1vZmYtYnk6IERtaXRyeSBSYWtoY2hldiA8cmRhQGVtY3JhZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgoKY29tbWl0IGY2OTRlMzJmOTM1NjVlYzFmYThkMDIyNmM1ODRkNmI4OWU5MzFlZDkKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAcG9sbHV4LmRlbnguZGU+CkRhdGU6CU1vbiBGZWIgNCAxNzowOTo1NSAyMDA4ICswMTAwCgogICAgU29tZSBmaXhlcyB0byBkc3BpYywgZnBnYSwgYW5kIGdkYyBwb3N0IHRlc3RzIGZvciBsd21vbjUuIERpc2FibGUgZXh0ZXJuYWwgd2F0Y2gtZG9nIGZvciBub3cuCgogICAgU2lnbmVkLW9mZi1ieTogRG1pdHJ5IFJha2hjaGV2IDxyZGFAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgYjQyOGY2YThjNjVjNTMwM2U1Zjk2ZGI4ZDI0ZjJmNjk5ZDk0YTk4YwpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBwb2xsdXguZGVueC5kZT4KRGF0ZToJTW9uIEZlYiA0IDE0OjExOjAzIDIwMDggKzAxMDAKCiAgICBUaGUgcGF0Y2ggaW50cm9kdWNlcyB0aGUgQ1JJVElDQUwgZmVhdHVyZSBvZiBQT1NUIHRlc3RzLiBJZiB0aGUgdGVzdCBtYXJrZWQgYXMgUE9TVF9DUklUSUNBTCBmYWlscyB0aGVuIHRoZSBhbHRlcm5hdGl2ZSwgcG9zdF9jcml0aWNhbCwgYm9vdC1jb21tYW5kIGlzIHVzZWQuIElmIHRoaXMgY29tbWFuZCBpcyBub3QgZGVmaW5lZCB0aGVuIFUtQm9vdCBlbnRlcnMgaW50byBpbnRlcmFjdGl2ZSBtb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IERtaXRyeSBSYWtoY2hldiA8cmRhQGVtY3JhZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgoKY29tbWl0IDhmMTVkNGFkZGQ0OWM5NTY0MTJlMWUzYmZjNzY0YTBjOGIxZjMxODQKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAcG9sbHV4LmRlbnguZGU+CkRhdGU6CU1vbiBGZWIgNCAxNDoxMDo0MiAyMDA4ICswMTAwCgogICAgVGhlIHBhdGNoIGFkZHMgbmV3IFBPU1QgdGVzdHMgZm9yIHRoZSBMd21vbjUgYm9hcmQuIFRoZXNlIGFyZToKCiAgICAqIEV4dGVybmFsIFdhdGNoZG9nIHRlc3Q7CiAgICAqIGRzUElDIHRlc3RzOwogICAgKiBGUEdBIHRlc3Q7CiAgICAqIEdEQyB0ZXN0OwogICAgKiBTeXNtb24gdGVzdHMuCgogICAgU2lnbmVkLW9mZi1ieTogRG1pdHJ5IFJha2hjaGV2IDxyZGFAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgYzJlZDMzZWZiZmZmNTc2N2JjYTIzNjgyOGUwMjFjNTVmZDU0N2I2YwpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBwb2xsdXguZGVueC5kZT4KRGF0ZToJTW9uIEZlYiA0IDE0OjEwOjAxIDIwMDggKzAxMDAKCiAgICBFbmFibGUgQ09ERUMgUE9TVCB3aXRoIENGR19QT1NUX0NPREVDIHJhdGhlciB0aGFuIHdpdGggQ0ZHX1BPU1RfRFNQLgoKICAgIFNpZ25lZC1vZmYtYnk6IERtaXRyeSBSYWtoY2hldiA8cmRhQGVtY3JhZnQuY29tPgoKY29tbWl0IDNhNWQxZTdmMTMwOTk5ODc5MTcwMmIyYTU1OWUzMTI2NzgxNzQ2YjkKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVR1ZSBNYXIgMTggMTM6MzM6MzAgMjAwOCArMDEwMAoKICAgIGx3bW9uNTogRml4IHJlZ2lzdGVyIHRlc3QgbG9naWMgdG8gbWF0Y2ggdGhlIHNwZWNpZmljIEdEQyBoL3cuCgogICAgU2lnbmVkLW9mZi1ieTogRG1pdHJ5IFJha2hjaGV2IDxyZGFAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgMGY4NTVhMWYwNTZhOGMyMjExNmEyMTAzYTM5MDBjYmZiNjY5ZGYwYgpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBwb2xsdXguZGVueC5kZT4KRGF0ZToJVHVlIE1hciAxOCAxMzoyNzo1NyAyMDA4ICswMTAwCgogICAgRml4IGJhY2tsaWdodCBpbiB0aGUgbHdtb241IFBPU1QuCgogICAgQmFja2xpZ2h0IHdhcyBzd2l0Y2VoZCBvbiBldmVuIHdoZW4gdGVtcGVyYXR1cmUgd2FzIHRvbyBsb3cuCgogICAgU2lnbmVkLW9mZi1ieTogRG1pdHJ5IFJha2hjaGV2IDxyZGFAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgMmQ5OTE5NThiMWU0MjBmYmZlMTdiMTI4YmQyNmFkZTc0YmU1ZWZjYwpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBwb2xsdXguZGVueC5kZT4KRGF0ZToJV2VkIEZlYiA2IDE4OjQ4OjM2IDIwMDggKzAxMDAKCiAgICAgVGhlIHBhdGNoIGludHJvZHVjZXMgdGhlIGFsdGVybmF0aXZlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGxvZyBidWZmZXIgZm9yCiAgICB0aGUgbHdtb241IGJvYXJkOiB0aGUgc3RvcmFnZSBmb3IgdGhlIGxvZy1idWZmZXIgaXRzZWxmIGlzIE9DTShvbi1jaGlwIG1lbW9yeSksCiAgICB0aGUgbG9nLWJ1ZmZlciBoZWFkZXIgaXMgbW92ZWQgdG8gc2l4IEdQVCByZWdpc3RlcnMgKFBQQzQ0MEVQWF9HUFQwX0NPTVAxLCAuLi4sCiAgICBQUEM0NDBFUFhfR1BUMF9DT01QNSkuCgogICAgIFRvIGVuYWJsZSB0aGlzLCBhbHRlcm5hdGl2ZSwgY29uZmlndXJhdGlvbiB0aGUgVS1Cb290IGJvYXJkIGNvbmZpZ3VyYXRpb24KICAgIGZpbGUgZm9yIGx3bW9uNSBpbmNsdWRlcyB0aGUgZGVmaW5pdGlvbnMgb2YgYWx0ZXJuYXRpdmUgYWRkcmVzc2VzIGZvciBoZWFkZXIKICAgIChDT05GSUdfQUxUX0xIX0FERFIpIGFuZCBidWZmZXIgKENPTkZJR19BTFRfTEJfQUREUikuCgogICAgIFRoZSBMaW51eCBzaGFsbCBiZSBjb25maWd1cmVkIHdpdGggdGhlIENPTkZJR19BTFRfTEJfTE9DQVRJT04gb3B0aW9uIHNldCwKICAgIGFuZCBoYXMgdGhlIEJPQVJEX0FMVF9MSF9BRERSIGFuZCBCT0FSRF9BTFRfTEJfQUREUiBjb25zdGFudHMgZGVmaW5lZCBpbiB0aGUKICAgIGx3bW9uNSBib2FyZC1zcGVjaWZpYyBoZWFkZXIgKGFyY2gvcHBjL3BsYXRmb3Jtcy80eHgvbHdtb241LmgpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KCmNvbW1pdCBmZjgxOGIyMWIwNjlmNGJjOWNiNzMzNzNjYzVhMTYwMTRiZTEwMWI3CkF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQHBvbGx1eC5kZW54LmRlPgpEYXRlOglNb24gRmViIDQgMTc6MTE6NTMgMjAwOCArMDEwMAoKICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgbHdtb241IGJvYXJkIHJlc2V0IHZpYSBHUElPNTguCgogICAgU2lnbmVkLW9mZi1ieTogRG1pdHJ5IFJha2hjaGV2IDxyZGFAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgNjAzZjE5NGU1YWQ4MWJiMmVmNDJkNmQ4YWFhNzRkZTE3NWJjYjQxMQpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBwb2xsdXguZGVueC5kZT4KRGF0ZToJTW9uIEZlYiA0IDE3OjA5OjU1IDIwMDggKzAxMDAKCiAgICBTb21lIGZpeGVzIHRvIGRzcGljLCBmcGdhLCBhbmQgZ2RjIHBvc3QgdGVzdHMgZm9yIGx3bW9uNS4KICAgIERpc2FibGUgZXh0ZXJuYWwgd2F0Y2gtZG9nIGZvciBub3cuCgogICAgU2lnbmVkLW9mZi1ieTogRG1pdHJ5IFJha2hjaGV2IDxyZGFAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgZTI2MmVmZTM1NzQyYzFhZDRiMDk2NmZmNTAxZWZjMjZmMzRhMGFlYwpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBwb2xsdXguZGVueC5kZT4KRGF0ZToJTW9uIEZlYiA0IDE0OjExOjAzIDIwMDggKzAxMDAKCiAgICBUaGUgcGF0Y2ggaW50cm9kdWNlcyB0aGUgQ1JJVElDQUwgZmVhdHVyZSBvZiBQT1NUIHRlc3RzLiBJZiB0aGUgdGVzdAogICAgbWFya2VkIGFzIFBPU1RfQ1JJVElDQUwgZmFpbHMgdGhlbiB0aGUgYWx0ZXJuYXRpdmUsIHBvc3RfY3JpdGljYWwsCiAgICBib290LWNvbW1hbmQgaXMgdXNlZC4gSWYgdGhpcyBjb21tYW5kIGlzIG5vdCBkZWZpbmVkIHRoZW4gVS1Cb290CiAgICBlbnRlcnMgaW50byBpbnRlcmFjdGl2ZSBtb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IERtaXRyeSBSYWtoY2hldiA8cmRhQGVtY3JhZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgoKY29tbWl0IDY1YjIwZGNlZmM4OTYxODE5M2ZhNTE5NDc5NjhkYWRhOTFlNGM3NzgKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAcG9sbHV4LmRlbnguZGU+CkRhdGU6CU1vbiBGZWIgNCAxNDoxMDo0MiAyMDA4ICswMTAwCgogICAgVGhlIHBhdGNoIGFkZHMgbmV3IFBPU1QgdGVzdHMgZm9yIHRoZSBMd21vbjUgYm9hcmQuCiAgICBUaGVzZSBhcmU6CgogICAgKiBFeHRlcm5hbCBXYXRjaGRvZyB0ZXN0OwogICAgKiBkc1BJQyB0ZXN0czsKICAgICogRlBHQSB0ZXN0OwogICAgKiBHREMgdGVzdDsKICAgICogU3lzbW9uIHRlc3RzLgoKICAgIFNpZ25lZC1vZmYtYnk6IERtaXRyeSBSYWtoY2hldiA8cmRhQGVtY3JhZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgoKY29tbWl0IDhkYzNiMjMwM2QyYjU3Yzc3NGI2MDljYTBlNzA0M2VkOGY5Yjg4YzEKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAcG9sbHV4LmRlbnguZGU+CkRhdGU6CU1vbiBGZWIgNCAxNDoxMDowMSAyMDA4ICswMTAwCgogICAgRW5hYmxlIENPREVDIFBPU1Qgd2l0aCBDRkdfUE9TVF9DT0RFQyByYXRoZXIgdGhhbiB3aXRoIENGR19QT1NUX0RTUC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEbWl0cnkgUmFraGNoZXYgPHJkYUBlbWNyYWZ0LmNvbT4KCmNvbW1pdCAzNTE1ZmQxOGQ0ZThlNDRmODYzYWM3MTQyYjU1ZTIyYjEwOWU5YWYyCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIE1hciAxOCAxNzozNTo1MSAyMDA4ICswMTAwCgogICAgSE1JMTAwMTogZml4IGNvbXBpbGUgcHJvYmxlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDFmMmE5OTcwMTA5Y2ViZjc0NDZlMDUwM2IxMGI3MWY4NjczMDQ1ZWUKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBGZWIgMTggMDU6MzI6MzAgMjAwOCAtMDUwMAoKICAgIEJsYWNrZmluOiBCRjUzNy1zdGFtcDogZHJvcCBib2FyZC1zcGVjaWZpYyBmbGFzaCBkcml2ZXIgZm9yIENGSQoKICAgIFRoZSBwYXJhbGxlbCBmbGFzaCBvbiB0aGUgQkY1MzctU1RBTVAgaXMgQ0ZJIGNvbXBsaWFudCwgc28gdGhlcmUgaXMgbm8gbmVlZAogICAgZm9yIHRoZSBib2FyZCBzcGVjaWZpYyBkcml2ZXIgYXQgYWxsLiAgSnVzdCB1c2UgdGhlIGNvbW1vbiBDRkkgZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA1YjIyMTYzZmVmODY1YWYyYjZiZmI2Yjc1ZjFiN2JmNDQzY2UxNzBjCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgRmViIDE5IDAwOjM2OjE0IDIwMDggLTA1MDAKCiAgICBCbGFja2ZpbjogYWRkIHByb3BlciBFTEYgbWFya2luZ3MgdG8gc29tZSBhc3NlbWJseSBmdW5jdGlvbnMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgY2Y2NzVkM2IyYjljMzUxMWMxZDk5YmM4ZjhmMzhmZDJmMDhiZmNhZgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIEZlYiAxOSAwMDozNToxNyAyMDA4IC0wNTAwCgogICAgQmxhY2tmaW46IG5ldyBjcGxiaW5mbyBjb21tYW5kIGZvciB2aWV3aW5nIGNwbGIgdGFibGVzCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGFhZGI3MjUwM2NkMTYwMjM0OWE1ZmU1MzM1NmQ1ZjU1ZWNjMWI5MDAKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBGZWIgMTggMDU6Mzc6NTEgMjAwOCAtMDUwMAoKICAgIEJsYWNrZmluOiB1cGRhdGUgTUFJTlRBSU5FUlMgbGlzdAoKICAgIEFkZCBtYWludGFpbmVyIGluZm9ybWF0aW9uIGZvciB0aGUgQmxhY2tmaW4gYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBmN2NlMTJjYjY1YTMwYzZlMTUyZWVjZjI2ZjAzMDRiN2Q3OGNmMzlkCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gRmViIDE4IDA1OjI2OjQ4IDIwMDggLTA1MDAKCiAgICBCbGFja2ZpbjogY29udmVydCBCRklOX0NQVSB0byBDT05GSUdfQkZJTl9DUFUKCiAgICBTdG9wIHR5aW5nIHRoaW5ncyB0byB0aGUgcHJvY2Vzc29yIHRoYXQgc2hvdWxkIGJlIHRpZWQgdG8gb3RoZXIgZGVmaW5lcyBhbmQKICAgIGNoYW5nZSBCRklOX0NQVSB0byBDT05GSUdfQkZJTl9DUFUgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiB0aGUgYnVpbGQKICAgIHN5c3RlbSB0byBzZWxlY3QgdGhlIC1tY3B1IG9wdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgODZhMjBmYjkyMGJkMTk4MTA1YWNmN2IxMTkxMTE3ZjU2NmQ2MzdlZApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IEZlYiAxNiAwNzo0MDozNiAyMDA4IC0wNTAwCgogICAgQmxhY2tmaW46IG1vdmUgYm9vdGxkciBjb21tYW5kIHRvIGNvbW1vbiBjb2RlCgogICAgVGhpcyBtb3ZlcyB0aGUgQmxhY2tmaW4tY29tbW9uIGJvb3RsZHIgY29tbWFuZCBvdXQgb2YgdGhlIEJGNTM3LVNUQU1QCiAgICBzcGVjaWZpYyBib2FyZCBkaXJlY3RvcnkgYW5kIGludG8gdGhlIGNvbW1vbiBkaXJlY3Rvcnkgc28gdGhhdCBhbGwgQmxhY2tmaW4KICAgIGJvYXJkcyBtYXkgdXRpbGl6ZSBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZGVjYmUwMjliMmE5ZDMzMzNkMDJjNDMzMzg5YjFjODIxZWVhOTZkNwpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglGcmkgTWFyIDE0IDExOjA1OjIwIDIwMDggKzAxMDAKCiAgICBtZ2NvZ2U6IHVwZGF0ZSBjb25maWd1cmF0aW9uCgogICAgRml4IGNvbmZpZ3VyYXRpb24gZm9yIG1nY29nZSBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IGMxMzY3MjRjZGEwMjE5YzQ5ZjFkNGIzNDZmMDBkYTI5YjE0ZmRmMTQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gTWFyIDE2IDAxOjIyOjU5IDIwMDggKzAxMDAKCiAgICBkcml2ZXJzL3J0Yy9NYWtlZmlsZToga2VlcCBsaXN0IHNvcnRlZAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgOTUzNmRmY2NlMDNlN2JlNGNjYmNlYjQ3YTA4ZDliYTA3YWRhMzYyZgpBdXRob3I6IFRvciBLcmlsbCA8dG9yQGV4Y2l0by5jb20+CkRhdGU6CVNhdCBNYXIgMTUgMTU6NDA6MjYgMjAwOCArMDEwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBJbnRlcnNpbCBpc2wxMjA4IFJUQwoKICAgIFNpZ25lZC1vZmYtYnk6IFRvciBLcmlsbCA8dG9yQGV4Y2l0by5jb20+Cgpjb21taXQgMDIxMGNmZjNkMDc5ZDk3YjIxNTZiMTM2ODVlZThkZTM2OGU2OGExYQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBNYXIgMTUgMTc6MzY6NDEgMjAwOCArMDEwMAoKICAgIGNyYW1mczogRml4IGlmZGVmCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAwYjhmMmEyNzg2MWE5ZmQwNmViNTVhMzRmODU1ZWM5YzUxMDJhYWI0CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIE1hciAxNiAwMToxMjo1OCAyMDA4ICswMTAwCgogICAgQ29uZGluZyBzdHlsZSBjbGVhbnVwCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0MTcxMmI0ZThjOTVkZmYyMzM1NGJjZDYyMGUxZjk0NzcxNjBjMTkwCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDUgMTI6MzE6NTMgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQWRkIFVTQiBPSENJIHN1cHBvcnQgdG8gQU1DQyBDYW55b25sYW5kcyA0NjBFWCBldmFsIGJvYXJkCgogICAgVGhpcyBwYXRjaCBhZGRzIFVTQiBPSENJIHN1cHBvcnQgdG8gdGhlIENhbnlvbmxhbmRzIGJvYXJkIHBvcnQuIEl0IGFsc28KICAgIGVuYWJsZXMgRVhUMiBzdXBwb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyNTk2ZjViOWQzNTNmZjNlNDM4N2EzMzI1ZDA1NzQwZjE2OTU4MDM4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDUgMTI6Mjk6MzIgMjAwOCArMDEwMAoKICAgIHVzYjogQWRkIENGR19PSENJX1VTRV9OUFMgdG8gY29tbW9uIFVTQi1PSENJIGRyaXZlcgoKICAgIFRoaXMgcGF0Y2ggYWRkcyBDRkdfT0hDSV9VU0VfTlBTIHRvIHRoZSBjb21tb24gVVNCLU9IQ0kgZHJpdmVyLiBUaGlzCiAgICB3YXkgYSBib2FyZCBqdXN0IG5lZWRzIHRvIGRlZmluZSB0aGlzIG5ldyBvcHRpb24gdG8gZW5hYmxlIHRoZSAiZm9yY2UKICAgIE5vUG93ZXJTd2l0Y2hpbmcgbW9kZSIgaW5zdGVhZCBvZiBhZGRpbmcgbmV3IENQVS9hcmNoaXRlY3R1cmUgZGVmaW5lcwogICAgdG8gdGhlIFVTQiBzb3VyY2UgaXRzZWxmLgoKICAgIFRoaXMgbmV3IG9wdGlvbiB3aWxsIGJlIHVzZWQgZmlyc3Qgd2l0aCB0aGUgbmV3IEFNQ0MgNDYwRVggQ2FueW9ubGFuZHMKICAgIGJvYXJkIHBvcnQsIHdoaWNoIHdpbGwgYmUgcG9zdGVkIGluIGEgZmV3IGRheXMuCgogICAgVGhpcyBwYXRjaCBhbHNvIGZpeGVzIGEgc21hbGwgY29tcGlsYXRpb24gcHJvYmxlbSB3aGVuIERFQlVHIGlzIGVuYWJsZWQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDcxNjY1ZWJmODg0MDhmZjJhY2I3NjJhZjQ3OTg5ZmQ0MzY1YjMyMWEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBNYXIgMyAxNzoyNzowMiAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBBZGQgQ2FueW9ubGFuZHMgTkFORCBib290aW5nIHN1cHBvcnQKCiAgICA0NjBFWCBkb2Vzbid0IHN1cHBvcnQgYSBmaXhlZCBib290c3RyYXAgb3B0aW9uIHRvIGJvb3QgZnJvbSA1MTIgYnl0ZSBwYWdlCiAgICBOQU5EIGRldmljZXMuIFRoZSBvbmx5IGJvb3RzdHJhcCBvcHRpb24gZm9yIE5BTkQgYm9vdGluZyBpcyBvcHRpb24gRiBmb3IKICAgIDJrIHBhZ2UgZGV2aWNlcy4gU28gdG8gYm9vdCBmcm9tIGEgNTEyIGJ5cGUgcGFnZSBkZXZpY2UsIHRoZSBJMkMgYm9vdHN0cmFwCiAgICBFRVBST00gbmVlZHMgdG8gYmUgcHJvZ3JhbW1lZCBhY2NvcmRpbmdseS4KCiAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgTkFORCBib290aW5nIHN1cHBvcnQgZm9yIHRoZSBBTUNDIENhbnlvbmxhbmRzIGF2YWwKICAgIGJvYXJkIGFuZCBhbHNvIGFkZHMgc3VwcG9ydCB0byB0aGUgImJvb3RzdHJhcCIgY29tbWFuZCwgdG8gZW5hYmxlIE5BTkQKICAgIGJvb3RpbmcgSTJDIHNldHRpbmcuCgogICAgVGVzdGVkIHdpdGggNTEyIGJ5dGUgcGFnZSBOQU5EIGRldmljZSAoMzJNQnl0ZSkgb24gQ2FueW9ubGFuZHMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGM4MTNmMWY4MzVhN2VkZmRiOTI5ZjI4NDNiMDlkYjcyY2Q1Y2QyZjIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXIgMTEgMTY6NTM6MDAgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQWRkIEFNQ0MgQ2FueW9ubGFuZHMgc3VwcG9ydCAoNDYwRVgpICgzLzMpCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBBTUNDIENhbnlvbmxhbmRzIDQ2MEVYIGV2YWx1YXRpb24KICAgIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2OTgzZmUyMWY3NzRhOTI0ZDNhZGIyNjNhMjcwYmMyZjMwMWYyYWEyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgTWFyIDExIDE2OjUyOjI0IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IEFkZCBBTUNDIENhbnlvbmxhbmRzIHN1cHBvcnQgKDQ2MEVYKSAoMi8zKQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgQU1DQyBDYW55b25sYW5kcyA0NjBFWCBldmFsdWF0aW9uCiAgICBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOGUxYTNmZTU0NWJiY2ZjZWFmZTE4MzM0NGViYzlmMWFkMDM4MTljMQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIE1hciAxMSAxNjo1MToxNyAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBBZGQgQU1DQyBDYW55b25sYW5kcyBzdXBwb3J0ICg0NjBFWCkgKDEvMykKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEFNQ0MgQ2FueW9ubGFuZHMgNDYwRVggZXZhbHVhdGlvbgogICAgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDQzYzYwOTkyY2RmNzI0OTZlN2VhYWEzZmJkMzdlYmJlNzU4MzVmNjkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXIgMTEgMTU6MTE6NDMgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQWRkIGJhc2ljIHN1cHBvcnQgZm9yIEFNQ0MgNDYwRVgvNDYwR1QgKDUvNSkKCiAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgc3VwcG9ydCBmb3IgdGhlIEFNQ0MgNDYwRVgvNDYwR1QgUFBDJ3MuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDZmMmViM2YzZDhlYTJkYmIyMjRkMGRhNWExMjAzODY5M2JhYjk5NDUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXIgMTEgMTU6MTE6MTggMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQWRkIGJhc2ljIHN1cHBvcnQgZm9yIEFNQ0MgNDYwRVgvNDYwR1QgKDQvNSkKCiAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgc3VwcG9ydCBmb3IgdGhlIEFNQ0MgNDYwRVgvNDYwR1QgUFBDJ3MuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDk5OWVjZDVhY2EzODE5ODRkOGViYmViMjA3ZWNlODJhMWMyNzU1NzcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXIgMTEgMTU6MDc6MTAgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQWRkIGJhc2ljIHN1cHBvcnQgZm9yIEFNQ0MgNDYwRVgvNDYwR1QgKDMvNSkKCiAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgc3VwcG9ydCBmb3IgdGhlIEFNQ0MgNDYwRVgvNDYwR1QgUFBDJ3MuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDI4MDFiMmQyYTk5MDZmMjA2YWI5ZWU4ZDBiNmU3NDZkMmI3ZmUwNWEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXIgMTEgMTU6MDU6NTAgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQWRkIGJhc2ljIHN1cHBvcnQgZm9yIEFNQ0MgNDYwRVgvNDYwR1QgKDIvNSkKCiAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgc3VwcG9ydCBmb3IgdGhlIEFNQ0MgNDYwRVgvNDYwR1QgUFBDJ3MuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDhhYzQxZTNlMzdjMzA4MGM2YjFkOTQ2MWQ2NTQxNjFjZmUyYWE0OTIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXIgMTEgMTU6MDU6MjYgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQWRkIGJhc2ljIHN1cHBvcnQgZm9yIEFNQ0MgNDYwRVgvNDYwR1QgKDEvNSkKCiAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgc3VwcG9ydCBmb3IgdGhlIEFNQ0MgNDYwRVgvNDYwR1QgUFBDJ3MuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDU2ZTQxMDE3ODM3NWQ5ZjIwYmUyNWZiMjRlMTgwOTc0ZjBhZTEyMGIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBGZWIgMTkgMjI6MDc6NTcgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogaW50ZXJydXB0LmMgcmV3b3JrZWQKCiAgICBUaGlzIHBhdGNoIGlzIGEgcmV3b3JrIG9mIHRoZSA0eHggaW50ZXJydXB0IGhhbmRsaW5nIGRvbmUgd2hpbGUKICAgIGFkZGluZyB0aGUgNDYwRVgvR1Qgc3VwcG9ydC4gSW50ZXJydXB0cyBhcmUgbmVlZGVkIG9uIDR4eCBmb3IgdGhlCiAgICBFTUFDIGRyaXZlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODRhOTk5YjZjZGQwYjAyZGM3ZGUyY2FjYzMwNmVhYTg0YWZlMmI0NgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEZlYiAxOSAyMjowMTo1NyAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBwcm9ncmFtX3RsYiBub3cgdXNlcyA2NGJpdCBwaHlzaWNhbCBhZGRlc3MKCiAgICBUaGlzIHBhdGNoIGNoYW5nZXMgdGhlIHBoeXNpY2FsIGFkZGVzcyBwYXJhbWV0ZXIgZnJvbSAzMmJpdCB0byA2NGJpdC4KICAgIFRoaXMgaXMgbmVlZGVkIGZvciAzNmJpdCA0eHggcGxhdGZvcm1zIHRvIGFjY2VzcyBhcmVhcyBsb2NhdGVkCiAgICBiZXlvbmQgdGhlIDRHQiBib3JkZXIsIGxpa2UgU29DIHBlcmlwaGVyYWxzIChFQkMgZXRjLikuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGMzMzA3ZmExODZhZjg1NzcxOTI0YzQzNDk5NzA4OWI4MTA0YzBhNDYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBGZWIgMTkgMjE6NTg6MjUgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogbWlpcGh5LmMgcmV3b3JrZWQKCiAgICBXaGlsZSBhZGRpbmcgdGhlIDQ2MEVYL0dUIHN1cHBvcnQgSSByZXdvcmtlZCB0aGUgNHh4IG1paXBoeSBjb2RlLiBJdAogICAgYmFkbHkgbmVlZGUgc29tZSBjbGVhbnVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4OGFmZjYyZGYzOWMwNzU2MjQxZWE5ZjliNWE3YjNhZGUyNmNiODJiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgRmViIDE5IDE2OjIxOjQ5IDIwMDggKzAxMDAKCiAgICBydGM6IEFkZCBNNDFUNjIgc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggYWRkIHN1cHBvcnQgZm9yIHRoZSBTVE0gTTQxVDYyIFJUQy4gSXQgaXMgdXNlZCBhbmQgdGVzdGVkCiAgICBvbiB0aGUgQU1DQyBDYW55b25sYW5kcyA0MDZFWCBwbGF0Zm9ybS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMjE3ZDM4M2UyMDFhZGM3ZjIyNzExNDVhZTM0NWVhNWVhZTJiNzE3MApBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+CkRhdGU6CU1vbiBGZWIgMjUgMTg6NDY6NDMgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQWRkIDQwNUdQciBiYXNlZCBNQ1UyNSBib2FyZCBzcGVjaWZpYyBmaWxlcwoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgNzVhNjZkY2RiMzgzODYzYWQzM2YwNTM0Y2ZjMjdiN2E4Njk0N2RhZApBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+CkRhdGU6CU1vbiBGZWIgMjUgMTg6NDY6NDIgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQWRkIDQwNUdQciBiYXNlZCBNQ1UyNSBib2FyZCBjb25maWcgZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgYjA1ZjM1NDM2YjczM2EyNDA1NTllNzdlNDZiZWQ4NDM5NjY1ZWNjNQpBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+CkRhdGU6CU1vbiBGZWIgMjUgMTg6NDY6NDEgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQWRkIDQwNUdQciBiYXNlZCBNQ1UyNSBib2FyZC4gR2xvYmFsIGZpbGVzCgogICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KCmNvbW1pdCAxNGMyN2IzNWFjODEyYTcxYWJjZTZlM2UyZjQxMjlkNWU5MzEzNjYwCkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KRGF0ZToJTW9uIEZlYiAyNSAxODozNzowMiAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBIQ1U0LzUuIHJlbW92ZSBvYnNvbGV0ZSBoY3VfZmxhc2guYwoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgYTA3OTQ5NDg1M2NjMmJmZWRkYjI2NjczMjE5ZGIwYjRiMmIzMTU2NgpBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+CkRhdGU6CU1vbiBGZWIgMjUgMTg6Mzc6MDEgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogSENVNC81LiBVc2UgRkxBU0hfQ0ZJX0xFR0FDWQoKICAgIENsZWFudXA6IFJlbW92ZSBjdXN0b20gZmxhc2ggZHJpdmVyIGZvciA4IGJpdCBib290LWVwcm9tIGFuZCByZXBsYWNlIGl0IHdpdGgKICAgIHRoZSBGTEFTSF9DRklfTEVHQUNZIGV0IGFsLiBjb25maWcgb3B0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgoKY29tbWl0IGU0MTcwZTVhNTBjODExMGY3OTJiYzM3NDcyODMzYWU2NjlkNjk5NTEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXIgMTEgMTM6NTI6MjUgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogRml4IGNvbW1lbnQgaW4gNDA1RVggRERSMiBpbml0IGNvZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNzY2NTI5ZmNjYzg2MGVjYjllOTU1YjQyMzlkZmY2OWNkOWU0ZWEwOQpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBNYXIgMTQgMTY6MjI6MzQgMjAwOCArMDEwMAoKICAgIEFkZCBNRDUgc3VwcG9ydCB0byB0aGUgbmV3IHVJbWFnZSBmb3JtYXQKCiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDBlZGUwYzM4MzUzMGE0MThjZjk4YmU5MTIyMzcxYTg2NTczY2QwZGIKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglGcmkgTWFyIDE0IDE2OjIyOjM0IDIwMDggKzAxMDAKCiAgICBBZGQgdGhlIE1ENSBhbGdvcml0aG0KCiAgICBNRDUgc3Vwb3BydCBpcyB0dXJuZWQgb24gYnkgZGVmaW5pbmcgQ09ORklHX01ENSwgdGhlIGRpZ2VzdCBjYW4gYmUgdGhlbgogICAgY2FsY3VsYXRlZCB1c2luZyB0aGUgbWQ1KCkgZnVuY3Rpb24gLS0gc2VlIGluY2x1ZGUvbWQ1LmggZm9yIGRldGFpbHMuCgogICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KCmNvbW1pdCBiOGFhNTdiNWQ0ZDY5ZThmMDgxMGE1ZTYzMmMwY2U0MWMwZjQ2ZWUwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIE1hciAxNCAxNjowNDo1NCAyMDA4ICswMTAwCgogICAgdG9vbHMvc2V0bG9jYWx2ZXJzaW9uOiB1c2UgYSBnaXQtZGVzY3JpYmUtaXNoIGZvcm1hdAoKICAgIENoYW5nZSB0aGUgYXV0b21hdGljIGxvY2FsIHZlcnNpb24gdG8gaGF2ZSB0aGUgZm9ybSAtbm5ubm4tZ1NIQTFTVU1JRCwKICAgIHdoZXJlICdubm5ubicgaXMgdGhlIG51bWJlciBvZiBjb21taXRzIHNpbmNlIHRoZSBsYXN0IHRhZyAoaS5lLiwKICAgIDEuMy4yLXJjMykuICBUaGlzIG1ha2VzIGl0IG11Y2ggZWFzaWVyIHRvIHJlY29nbml6ZSAibmV3ZXIiIHZlcnNpb25zCiAgICBhbmQgdG8gc2VlIGhvdyBtdWNoIGhhcyBiZWVuIGNoYW5nZWQgc2luY2UgdGhlIHJlZmVyZW5jZWQgdGFnLgoKICAgIFN0b2xlbiBmcm9tIExpbnV4IGtlcm5lbCdzIHNjcmlwdHMvc2V0bG9jYWx2ZXJzaW8sIHNlZSBjb21taXQgZDg4MjQyMWYuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjNmRjMjFjODRkZTBmMTU5YTE3NTJjNWViZDMzY2ZmODQzZjYzNjA5CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IE1hciAxMyAxNDozMjowMyAyMDA4ICswMTAwCgogICAgSE1JMTAwMTogYWRkIHN1cHBvcnQgZm9yIE1QQzUyMDAgUmV2LiBCIHByb2Nlc3NvcnMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA5MGYxM2RjZTdhN2E5YTg0ZDU3MzA1NzZjOWEyNGQwZGJiMDdjYjNhCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IE1hciAxMyAxNDoyOTo0OSAyMDA4ICswMTAwCgogICAgVFFNNTIwMDogcmVtb3ZlIGRlYWQgY29kZQoKICAgIFRoaXMgYm9hcmQgbmV2ZXIgdXNlZCBhIE1HVDUxMDAgcHJvY2Vzc29yLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYWZlNDVjODdlM2M1ZDc3YmFkNzZiMWE1N2RjY2QyMDc2NGQ0NWI1ZApBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBNYXIgMTIgMTI6MTQ6MTUgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBGaXggYnVpbGQgaXNzdWUgb24gQVJNCgogICAgQVJNIHBsYXRmb3JtcyBkb24ndCBoYXZlIGEgYmQtPmJpX21lbXNpemUgc28gdXNlIGJkLT5iaV9kcmFtWzBdLnNpemUgaW5zdGVhZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDMzMTBjNTQ5YTczYTk0OTQzMGJmZGE5MDg3NmRmNzU1MmExZGFiMGMKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgTWFyIDEyIDEyOjEzOjEzIDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gQWRkIG5ldyB1SW1hZ2UgZm9ybWF0IGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzCgogICAgQ3JlYXRlIGRvYy91SW1hZ2UuRklUIGRvY3VtZW50YXRpb24gZGlyZWN0b3J5IHdpdGggdGhlIGZvbGxvd2luZyBmaWxlczoKICAgIC0gY29tbWFuZF9zeW50YXhfZXh0ZW5zaW9ucy50eHQgOiBleHRlbmRlZCBjb21tYW5kIHN5bnRheCBkZXNjcmlwdGlvbgogICAgLSBob3d0by50eHQJCQkgICAgOiBzaG9ydCB1c2FnZSBob3d0bwogICAgLSBzb3VyY2VfZmlsZV9mb3JtYXQudHh0CSAgICA6IGludGVybmFsIG5ldyB1SW1hZ2UgZm9ybWF0IGRlc2NyaXB0aW9uCgogICAgQWRkIGV4YW1wbGUgaW1hZ2Ugc291cmNlIGZpbGVzOgogICAgLSBrZXJuZWwuaXRzCiAgICAtIGtlcm5lbF9mZHQuaXRzCiAgICAtIG11bHRpLml0cwoKICAgIFVwZGF0ZSBSRUFETUUgYXBwcm9wcmlhdGVseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KCmNvbW1pdCAxZWM3Mzc2MWQyZTI0NzA3OGY0NTIwYTI2NWQ0NjNlOGI3MzM5MWEyCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIE1hciAxMiAxMDozNTo1MiAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIEZpeCBkZWZpbml0aW9uIG9mIGNvbW1vbiBib290bV9oZWFkZXJzX3QgZmllbGRzCgogICAgdmVyaWZ5LCBhdXRvc3RhcnQgYW5kIGxtYiBmaWVsZHMgYXJlIHVzZWQgcmVnYXJkbGVzcyBvZiBDT05GSUdfRklUCiAgICBzZXR0aW5nLCBtb3ZlIHRoZWlyIGRlZmluaXRpb25zIHRvIGNvbW1vbiBzZWN0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgMWQxY2I0MjcwZWRjNmE5OTI3NjgzNDA2NDA2OTcxN2Y5NzgyYzQ5MQpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBNYXIgMTIgMTA6MzU6NTEgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBGaXggYnVpbGQgcHJvYmxlbXMgb24gdHJhYiBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgZjc3M2JlYThlMTFmNGExMWMzODhkY2VlOTU2YjI0NDQyMDNlNmI2NQpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBNYXIgMTIgMTA6MzU6NDYgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBBZGQgcHJvcGVyIHJhbWRpc2svRkRUIGhhbmRsaW5nIHdoZW4gRklUIGNvbmZpZ3VyYXRpb24gaXMgdXNlZAoKICAgIFNhdmUgRklUIGNvbmZpZ3VyYXRpb24gcHJvdmllZCBpbiB0aGUgZmlyc3QgYm9vdG0gYXJndW1lbnQgYW5kIHVzZSBpdAogICAgd2hlbiB0byBnZXQgcmFtZGlzay9GRFQgc3ViaW1hZ2VzIHdoZW4gc2Vjb25kIGFuZCB0aGlyZCAocmFtZGlzay9GRFQpCiAgICBhcmd1bWVudHMgYXJlIG5vdCBzcGVjaWZpZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCAyNjgyY2U4YTQyMjVmMjNkNzJiYjdmZWQwNjllOTI4ZGQzOWQzNGFlCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIE1hciAxMiAxMDozMzowMSAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIE1vcmUgdmVyYm9zZSBrZXJuZWwgaW1hZ2UgdW5jb21wcmVzcyBlcnJvciBtZXNzYWdlCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCAxMzcyY2NlMmI5MDQwZmI2NDBlNTAzMmI4NGUzYTAzM2EyMmQ2ZmYwCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIE1hciAxMiAxMDozMzowMSAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIFVzZSBzaG93X2Jvb3RfcHJvZ3Jlc3MoKSBmb3IgbmV3IHVJbWFnZSBmb3JtYXQKCiAgICBUaGlzIHBhdGNoIGFsbG9jYXRlcyBhIHNldCBvZiBzaG93X2Jvb3RfcHJvZ3Jlc3MoKSBJRHMgZm9yIG5ldyB1SW1hZ2UgZm9ybWF0CiAgICBhbmQgYWRkcyBzaG93X2Jvb3RfcHJvZ3Jlc3MoKSBjYWxscyBpbiBuZXcgdUltYWdlIGZvcm1hdCBoYW5kbGluZyBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgYzI4YzRkMTkzZGJmYjIwYjJkZDNhNTQ0NzY0MGZkNmRlN2ZkMDcyMApBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBNYXIgMTIgMTA6MzM6MDEgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBBZGQgbmV3IHVJbWFnZSBmcm9tYXQgc3VwcG9ydCB0byBmcGdhIGNvbW1hbmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IDA5NDc1Zjc1Mjc0NjBlNDI2YzBlMDYyOGZjNWI4ZjM3NTRmYmFhMjMKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgTWFyIDEyIDEwOjMzOjAxIDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gQWRkIG5ldyB1SW1hZ2UgZm9ybWF0IGhhbmRsaW5nIHRvIG90aGVyIGJvb3RtIHJlbGF0ZWQgY29tbWFuZHMKCiAgICBVcGRhdGVkIGNvbW1hbmRzOgoKICAgIGRvY2Jvb3QgIC0gY21kX2RvYy5jCiAgICBmZGNib290ICAtIGNtZF9mZGMuYwogICAgZGlza2Jvb3QgLSBjbWRfaWRlLmMKICAgIG5ib290ICAgIC0gY21kX25hbmQuYwogICAgc2NzaWJvb3QgLSBjbWRfc2NzaS5jCiAgICB1c2Jib290ICAtIGNtZF91c2IuYwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgMWI3ODk3ZjI4ZDQ5YTgwZDc4ZDc2MGVjNmY2ZjExZGMwZjkxNDMzOApBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBNYXIgMTIgMTA6MzM6MDAgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBBZGQgbmV3IHVJbWFnZSBmb3JtYXQgc3VwcG9ydCB0byBpbWdleHRyYWN0IGNvbW1hbmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IDQyNGM0YWJkZDE3NWQyYzQ3MDUxMGRmOGNlMGUzMmQzZjQ2M2VjMTYKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgTWFyIDEyIDEwOjMzOjAwIDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gQWRkIG5ldyB1SW1hZ2UgZm9ybWF0IHN1cHBvcnQgdG8gYXV0b3NjcmlwdCByb3V0aW5lCgogICAgYXV0b3NjcmlwdCgpIHJvdXRpbmUgaXMgdXBkYXRlZCB0byBhY2NlcHQgc2Vjb25kIGFyZ3VtZW50LCB3aGljaAogICAgaXMgb25seSB1c2VkIGZvciBGSVQgaW1hZ2VzIGFuZCBwcm92aWRlcyBhIEZJVCBzdWJpbWFnZSB1bml0IG5hbWUuCgogICAgYXV0b3NjcmlwdCgpIHJvdXRpbmUgY2FsbGVycyBtdXN0IG5vdyBwYXNzIHR3byBhcmd1bWVudHMuIEZvcgogICAgbm9uLWludGVyYWN0aXZlIHVzZSAobGlrZSBpbiBjbWRfbG9hZC5jLCBjbWRfbmV0LmMpLCBuZXcgZW52aXJvbm1lbnQKICAgIHZhcmlhYmxlICdhdXRvc2NyaXB0X3VuYW1lJyBpcyBpbnRyb2R1Y2VkIGFuZCB1c2VkIGFzIGEgRklUCiAgICBzdWJpbWFnZSB1bml0IG5hbWUgc291cmNlLgoKICAgIGF1dG9zY3JpcHQgY29tbWFuZCBhY2NlcHRzIGV4dGVuZGVkIHN5bnRheCBvZiB0aGUgYWRkciBhcmd1bWVudDoKICAgIGFkZHI6PHN1YmltZ191bmFtZT4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IGNkN2M1OTZlOWY1NjFkYmJjMTdiNzE3Mjc3NDM4YWVlNzhjZGUxNGYKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgTWFyIDEyIDEwOjMzOjAwIDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gQWRkIG5ldyB1SW1hZ2UgZm9ybWF0IHN1cHBvcnQgdG8gYXJjaCBzcGVjaWZpYyBkb19ib290bV9saW51eCgpIHJvdXRpbmVzCgogICAgVGhpcyBwYXRjaCB1cGRhdGVzIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgb2YKICAgIGRvX2Jvb3RtX2xpbnV4KCkgYWRkaW5nIG5ldyB1SW1hZ2UgZm9ybWF0IGhhbmRsaW5nIGZvcgogICAgb3BlcmF0aW9ucyBsaWtlIGdldCBrZXJuZWwgZW50cnkgcG9pbnQgYWRkcmVzcywgZ2V0IGtlcm5lbAogICAgaW1hZ2UgZGF0YSBzdGFydCBhZGRyZXNzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgM2RmZTExMDE0OTMxMTQyNTkxOWU2ZDZhMTRiNTYxYjQyMDc0OThmMQpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBNYXIgMTIgMTA6MzI6NTkgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBBZGQgbm9kZSBvZmZzZXRzIGZvciBGSVQgaW1hZ2VzIGxpc3RlZCBpbiBzdHJ1Y3QgYm9vdG1faGVhZGVycwoKICAgIFRoaXMgcGF0Y2ggYWRkcyBuZXcgbm9kZSBvZmZzZXQgZmllbGRzIHRvIHN0cnVjdCBib290bV9oZWFkZXJzCiAgICBhbmQgdXBkYXRlcyBib290bV9oZWFkZXJzIHByb2Nlc3NpbmcgY29kZSB0byBtYWtlIHVzZSBvZiB0aGVtLgogICAgU2F2ZWQgbm9kZSBvZmZzZXRzIGFsbG93IHRvIGF2b2lkIHJlcGVhdGluZyBmaXRfaW1hZ2VfZ2V0X25vZGUoKSBjYWxscy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IGJjOGVkNDg2YjEyNTQ1MmJhM2JkODM0NGYwNTJmNDM3MzI5MTUwYzUKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgTWFyIDEyIDEwOjMyOjUzIDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gcHBjOiBBZGQgbmV3IHVJbWFnZSBmb3JtYXQgc3VwcG9ydCB0byBGRFQgaGFuZGxpbmcgcm91dGluZXMKCiAgICBTdXBwb3J0IGZvciBuZXcgKEZJVCkgZm9ybWF0IHVJbWFnZXMgaXMgYWRkZWQgdG8gcG93ZXJwYyBzcGVjaWZpYwogICAgYm9vdF9nZXRfZmR0KCkgcm91dGluZSB3aGljaCBub3cgcmVjb2duaXplcywgc2FuaXR5IGNoZWNrcyBGSVQgaW1hZ2UKICAgIGFuZCBpcyBhYmxlIHRvIGFjY2VzcyBkYXRhIHNlY3Rpb25zIG9mIHRoZSByZXF1ZXN0ZWQgY29tcG9uZW50IGltYWdlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgYTQ0YTI2OWE5MDVmOTI0YjQyMDAyMDUwNmE0ZDdkN2VlZGNjMGVhZgpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBNYXIgMTIgMTA6MTQ6NTcgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBSZS1lbmFibGUgaW50ZXJydXB0cyBmb3Igbm9uIGF1dG9tYXRpYyBib290aW5nCgogICAgUmUtZW5hYmxlIGludGVycnVwdHMgaWYgd2UgcmV0dXJuIGZyb20gZG9fYm9vdG1fPG9zPiBhbmQgJ2F1dG9zdGFydCcKICAgIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBzZXQgdG8gJ3llcycuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBkOTg1Yzg0OThjNGU0NzA5NTgyMGRhOTdhYTcyMjM4MWQzOTE3MmM1CkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIE1hciAxMiAxMDoxNDozOCAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIFJlbW92ZSB1bm5lY2Vzc2FyeSBhcmd1bWVudHMgcGFzc2VkIHRvIHJhbWRpc2sgcm91dGluZXMKCiAgICBib290X2dldF9yYW1kaXNrKCkgYW5kIGltYWdlX2dldF9yYW1kaXNrKCkgZG8gbm90IG5lZWQgYWxsCiAgICBjbWR0cCwgZmxhZywgYXJnYyBhbmQgYXJndiBhcmd1bWVudHMuIFNpbXBsaWZ5IHJvdXRpbmVzIGRlZmluaXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBjODc3OTY0ODNiYzdjMjkwMDQ3MGRjNzQ3YzM2N2Y2MDI1Nzc2MDhkCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIE1hciAxMiAxMDoxMjozNyAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIEFkZCBuZXcgdUltYWdlIGZvcm1hdCBzdXBwb3J0IGZvciByYW1kaXNrIGhhbmRsaW5nCgogICAgVGhpcyBwYXRjaCB1cGRhdGVzIGJvb3RfZ2V0X3JhbWRpc2soKSByb3V0aW5lIGFkZGluZyBmb3JtYXQKICAgIHZlcmlmaWNhdGlvbiBhbmQgaGFuZGxpbmcgZm9yIG5ldyAoRklUKSB1SW1hZ2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgNjk4NmEzODU2NzE3NDllY2IzZjYwY2Y5OWU5Y2JhZThlNDdiYjUwZQpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBNYXIgMTIgMTA6MDE6MDUgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBBZGQgbmV3IHVJbWFnZSBmb3JtYXQgc3VwcG9ydCBmb3Iga2VybmVsIGJvb3RpbmcKCiAgICBOZXcgZm9ybWF0IHVJbWFnZXMgYXJlIHJlY29nbml6ZWQgYnkgdGhlIGJvb3RtIGNvbW1hbmQsCiAgICB2YWxpZGl0eSBvZiBzcGVjaWZpZWQga2VybmVsIGNvbXBvbmVudCBpbWFnZSBpcyBjaGVja2VkIGFuZAogICAgaXRzIGRhdGEgc2VjdGlvbiBsb2NhdGVkIGFuZCB1c2VkIGZvciBmdXJ0aGVyIHByb2Nlc3NpbmcKICAgICh1bmNvbXByZXNzLCBsb2FkLCBldGMuKQoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgZTMyZmVhNmFkYjYyMGVjZjJiZDcwYWNmMmRkMzdlNTNkZjlkMTU0NwpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVR1ZSBNYXIgMTEgMTI6MzU6MjAgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBBZGQgbmV3IHVJbWFnZSBmb3JtYXQgc3VwcG9ydCBmb3IgaW1scyBhbmQgaW1pbmZvIGNvbW1hbmRzCgogICAgaW1scyBhbmQgaW1pbmZvIGNhbiBub3cgcmVjb2duaXplIG5hZCBwcmludCBvdXQgY29udGVudHMgb2YgdGhlIG5ldyAoRklUKQogICAgZm9ybWF0IHVJbWFnZXMuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCA5ZDI1NDM4ZmU3ZDcwY2YzNWE4YTI5M2VhNWUzOTJmZWZjNjcyNjEzCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJVHVlIE1hciAxMSAxMjozNDo0NyAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIEFkZCBzdXBwb3J0IGZvciBuZXcgdUltYWdlIGZvcm1hdCB0byBta2ltYWdlIHRvb2wKCiAgICBTdXBwb3J0IGZvciB0aGUgbmV3IHVJbWFnZSBmb3JtYXQgKEZJVCkgaXMgYWRkZWQgdG8gbWtpbWFnZSB0b29sLgogICAgQ29tbWFuZGxpbmUgc3ludGF4IGlzIGFwcHJvcHJpYXRlbHkgZXh0ZW5kZWQ6CgogICAgbWtpbWFnZSBbLUQgZHRjX29wdGlvbnNdIC1mIGZpdC1pbWFnZS5pdHMgZml0LWltYWdlCgogICAgbWtpbWFnZSAodG9nZXRoZXIgd2l0aCBkdGMpIHRha2VzIGZpdC1pbWFnZS5pdHMgYW5kIHJlZmVyZW5jZWQgdGhlcmVpbgogICAgYmluYXJpZXMgKGxpa2Ugdm1saW51eC5iaW4uZ3opIGFzIGlucHV0cywgYW5kIHByb2R1Y2VzIGZpdC1pbWFnZSBmaWxlIC0tIHRoZQogICAgZmluYWwgaW1hZ2UgdGhhdCBjYW4gYmUgdHJhbnNmZXJyZWQgdG8gdGhlIHRhcmdldCAoZS5nLiwgdmlhIHRmdHApIGFuZCB0aGVuCiAgICBib290ZWQgdXNpbmcgdGhlIGJvb3RtIGNvbW1hbmQgaW4gVS1Cb290LgoKICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgZWI2MTc1ZWRkNmMxMjBkOGI4OTY3ODI0M2U1YTJiZTM2MmVlOGU0MApBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CU1vbiBNYXIgMTAgMTc6NTM6NDkgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBNYWtlIG5vZGUgdW5pdCBuYW1lcyBjb25zdCBpbiBzdHJ1Y3QgYm9vdG1faGVhZGVycwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgNWRmYjUyMTM4Njg4Y2NiZjAxNDZmNjI2ODNmZTYyMTdiM2NlMWIwNQpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBGZWIgMjkgMjE6MjQ6MDYgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBOZXcgdUltYWdlIGxvdy1sZXZlbCBBUEkKCiAgICBBZGQgRkRULWJhc2VkIGZ1bmN0aW9ucyBmb3IgaGFuZGxpbmcgbmV3IGZvcm1hdCBjb21wb25lbnQgaW1hZ2VzLAogICAgY29uZmlndXJhdGlvbnMsIG5vZGUgb3BlcmF0aW9ucywgcHJvcGVydHkgZ2V0L3NldCwgZXRjLgoKICAgIGZpdF8JLSByb3V0aW5lcyBoYW5kbGluZyBnbG9iYWwgbmV3IGZvcm1hdCB1SW1hZ2Ugb3BlcmF0aW9ucwoJCSAgbGlrZSBnZXQvc2V0IHRvcCBsZXZlbCBwcm9wZXJ0eSwgcHJvY2VzcyBhbGwgbm9kZXMsIGV0Yy4KICAgIGZpdF9pbWFnZV8JLSByb3V0aW5lcyBoYW5kbGluZyBjb21wb25lbnQgaW1hZ2VzIHN1Ym5vZGVzCiAgICBmaXRfY29uZl8JLSByb3V0aW5lcyBoYW5kbGluZyBjb25maWd1cmF0aW9ucyBub2RlCgogICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgMzBmMTgwNmY2MDk3OGQ3MDdiMGNmZjJkN2JmODlkMTQxZmMyNDI5MApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBNYXIgOSAxNjoyMDowMiAyMDA4ICswMTAwCgogICAgUmVsZWFzZSB2MS4zLjIKCiAgICBVcGRhdGUgQ0hBTkdFTE9HIGZvciByZWxlYXNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNWI0NjRjMjg5YmE3MTVkMDk3OWI2ZTFmOTQ5NDdiYjhmMTA2OGQxNgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBNYXIgOSAxNDo1MjoxMSAyMDA4ICswMTAwCgogICAgU0NNOiBmaXggJ3BhY2tlZCcgYXR0cmlidXRlIGlnbm9yZWQgZm9yIGZpZWxkIG9mIHR5cGUgJ2Nhbl9tc2dfdCcgd2FybmluZ3MKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBkYjY5NWI3ODUxNWRkYjg4YTJkNGYzMzU3YzEyMDM0NWVmYmY1OWVjCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIE1hciA5IDEwOjQ0OjAxIDIwMDggKzAxMDAKCiAgICBzY2I5MzI4OiBGaXggZmxhc2ggd2FybmluZzogdHlwZSBxdWFsaWZpZXJzIGlnbm9yZWQgb24gZnVuY3Rpb24gcmV0dXJuIHR5cGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDJiM2U3ZTYxZDZhNzJmMTZhZWU5M2Y4NzBiYzZhZjY3ZjMwNzU4YzQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gTWFyIDkgMTA6NTA6NDEgMjAwOCArMDEwMAoKICAgIGVzZC9jb21tb24vZnBnYS5jOiBmaXggaW5kZW50YXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjYzM4NDNlMzY0NTNlMmI4ZGI2NWQ3ZTU2ZGU5MzhiYTA0NTAxNmEwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIE1hciA5IDEwOjMzOjMxIDIwMDggKzAxMDAKCiAgICBjb21tb24va2dkYi5jOiBmaXggJ2RlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlcicgd2FybmluZwoKICAgIGFuZCBnZXQgcmlkIG9mIGEgY291cGxlIG9mIHVubmVlZGVkIGNhc3RzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgOGQ0ZjRhODM4ZDdkYzdjZjRkZTE3ZTNlOWE2N2UyZjIyMmI2YTFjOApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBNYXIgOSAxMDowOTo1MyAyMDA4ICswMTAwCgogICAgZXNkL2NvbW1vbi9mcGdhLmM6IGZpeCAnYXNzaWdubWVudCBvZiByZWFkLW9ubHkgbG9jYXRpb24nIGVycm9yCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjNmZlNGRhYmFjMDY2ZTg3NTgzNDVkMjQ5MDMyNzY4NDk2OTgzYTNlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIE1hciA5IDAyOjEzOjE5IDIwMDggKzAxMDAKCiAgICBNYWtlZmlsZTogbWFrZSBidWlsZCBzaWxlbnRseSBhZ2Fpbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDc2YmFiYzg2NTc2ZjA5MjU3MzU5OTMzNGM4NWVjNTQzZmRiYzYwMTUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gTWFyIDkgMDI6MDc6NDkgMjAwOCArMDEwMAoKICAgIG01MDFzazogRml4IG91dCBvZiB0cmVlIGJ1aWxkaW5nCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAyMTBlZDIwMDRlMDYyZmRkMDNmMjVhYjQ5MjU5OThhYTFiZDA4YTA3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIE1hciA5IDAwOjA2OjA5IDIwMDggKzAxMDAKCiAgICBBRFM1MTIxOiBmaXggb3V0IG9mIHRyZWUgYnVpbGQKCiAgICBhbmQgc2ltcGxpZnkgTWFrZWZpbGUgYSBiaXQuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0NmNiNTA3NGEzZjc0ZGU2NGViZDk3ZGQwYzRlYzdlYjNkNzY4YjkzCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IE1hciA4IDIyOjM1OjMxIDIwMDggKzAxMDAKCiAgICBSZWxlYXNlIHYxLjMuMgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNzhhOTBmODI3ZGY3NDUyMGU5MzljNzk0ZmM3NDEzZGFjZTIxYzRkYgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBNYXIgOCAyMjozNTowNCAyMDA4ICswMTAwCgogICAgVXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNThmM2M1N2M2MDA4YjQyZTAxZjU1MWQzYmU2ZWZkODhjMTRhYzg3ZgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBNYXIgOCAyMTozMDowNCAyMDA4ICswMTAwCgogICAgZXNkOiBGaXggd2FybmluZzogcGFzc2luZyBhcmd1bWVudCAxIG9mICdmcGdhX2Jvb3QnIGRpc2NhcmRzIHF1YWxpZmllcnMgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBkNzU0NjlkNDhjMDU3OTUxNDRmNGI4YmE3NmFkZGJiNDkyMGE3YmJhCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglTYXQgTWFyIDggMDk6MjU6NDkgMjAwOCArMDkwMAoKICAgIG5ldDogcnRsODE2OTogQWRkIHByb2Nlc3Npbmcgd2hlbiBPV05iaXQgZGlkJ3QgZW5hYmxlIGluIHJ0bF9yZWN2KCkKCiAgICBXaGVuIHJ0bF9yZWN2KCkgb2YgcnRsODE2OSBpcyBjYWxsZWQsIE9XTmJpdCBvZiBzdGF0dXMgcmVnaXN0ZXIKICAgIGlzIG5vdCBlbmFibGUgb2NjYXNpb25hbGx5LgogICAgcnRsX3JlY3YoKSBkb2Vzbid0IHdvcmsgbm9ybWFsbHkgd2hlbiB0aGUgZHJpdmVyIGRvZXNuJ3QgZG8KICAgIGFwcHJvcHJpYXRlIHByb2Nlc3NpbmcuCiAgICBUaGlzIHBhdGNoIGZpeCB0aGlzIHByb2JsZW0uCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDgyYWZhYmZlYjhhZTZhMjdjN2IzOTYwMTFlYTk5ZjQ3MTJhYTczZmEKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJRnJpIE1hciA3IDA4OjE1OjI4IDIwMDggKzAxMDAKCiAgICBtZ3N1dmQ6IHVwZGF0ZSBib2FyZCBjb25maWd1cmF0aW9uCgogICAgaW5pdGlhbGl6ZSB0aGUgVVBJT3ggY29udHJvbGxlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBlNDkyYzkwYzI2MjE1ZTQ1OWFlYzBmZGYwZjhlZjFmZDIwNDk4OGY1CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CUZyaSBNYXIgNyAwODoxMzo0MSAyMDA4ICswMTAwCgogICAgbWdjb2dlOiB1cGRhdGUgYm9hcmQgY29uZmlndXJhdGlvbgoKICAgIGFkZCBzdXBwb3J0IGZvciB0aGUgY29uZmlnIEZsYXNoLgogICAgaW5pdGlhbGl6ZSB0aGUgVVBJT3ggY29udHJvbGxlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAyNzBmZTI2MWI3ZjkyOTI4MDBiMmIzZDFiZjE5YWU3Y2JjODgwMjU4CkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE1hciA3IDEyOjI3OjMxIDIwMDggLTA2MDAKCiAgICBtcGM4M3h4OiBtYWtlIGR0YiBiYXNlbmFtZSBmaWxlIHJlZmVyZW5jZXMgZXF1YWwgdGhvc2Ugb2YgbGludXgKCiAgICB0aGUgZHRzIGZpbGUgYmFzZW5hbWVzIHdlcmUgdXBkYXRlZCBpbiBsaW51eCAtIHRoaXMgaGVscHMgYXZvaWQKICAgIGluYWR2ZXJ0ZW50bHkgbG9hZGluZyBhbnkgb2xkIGR0YnMgbGF5aW5nIGFyb3VuZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGYzMGI2MTU0ZjE2ZjVmZmE0YTlmNWJmY2E1ZTExNGQ3MmI2ZWY2NzUKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgRmViIDI3IDE2OjA4OjIyIDIwMDggLTA2MDAKCiAgICBuZXQ6IHVlY19waHk6IGFjdHVhbGx5IGluY3JlbWVudCB0aGUgdGltZW91dCBjb3VudGVyCgogICAgYWxsb3cgdS1ib290IHRvIHJlY292ZXIgKGFuZCwgZS5nLiwgc3dpdGNoIHRvIGFub3RoZXIgaW50ZXJmYWNlKSBpbiB0aGUKICAgIGNhc2Ugd2hlcmUgYSBQSFkgZG9lcyBub3QgcmVwb3J0IGF1dG9uZWdvdGlhdGlvbiBpcyBjb21wbGV0ZSB3aXRoaW4gaXRzCiAgICB0d28gc2Vjb25kIHRpbWVvdXQgdmFsdWUuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3NzIwMDNlNDM5NTdlZTBjODk1YWJlZDdjZDgyY2JlNzI4MjBjYmI4CkF1dGhvcjogTWFya3VzIEJydW5uZXIgPHN1cGVyLmZpcmV0d2lzdGVyQGdvb2dsZW1haWwuY29tPgpEYXRlOglXZWQgTWFyIDUgMjE6Mzg6MTIgMjAwOCArMDEwMAoKICAgIGZpeCB0YWlodSBzb2Z0IHNwaV9yZWFkCgogICAgVGhlIHRhaWh1IGJvYXJkIHVzZWQgZ3Bpb19yZWFkX291dF9iaXQgd2hpY2ggcmVhZHMgdGhlIG91dHB1dCByZWdpc3RlciBhbmQgbm90CiAgICB0aGUgcGluIHN0YXRlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBCcnVubmVyIDxzdXBlci5maXJldHdpc3RlckBnbWFpbC5jb20+Cgpjb21taXQgZmM4NGE4NDk1YWM3NTBmNmI0YWRhZTgxZjhjNGYxMDBmNjViNjM0MApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIE1hciA3IDA4OjAxOjQzIDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IFNlcXVvaWE6IEFkZCBkZXZpY2UgdHJlZSAoZmR0KSBMaW51eCBib290aW5nIGRlZmF1bHQgZW52IHZhcmlhYmxlcwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBiZDQ0NThjYjQ3YWJlY2FiZDQwNmIxMjEwNDU3YmU5NmM2OWZjNDlkCkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgTWFyIDQgMTY6NTk6MjIgMjAwOCArMDgwMAoKICAgIDgzN3hFTURTOiBJbXByb3ZlIHRoZSBzeXN0ZW0gcGVyZm9ybWFuY2UKCiAgICAxLiBNYWtlIHRoZSBDU0IgYnVzIHBpcGVsaW5lIGRlcHRoIGFzIDQsIGFuZCBlbmFibGUKICAgICAgIHRoZSByZXBlYXQgbW9kZTsKICAgIDIuIFJhaXNlIHRoZSBlVFNFQyBlbWVyZ2VuY3kgcHJpb3JpdHk7CiAgICAzLiBVc2UgdGhlIGhpZ2hlc3QgSVAgYmxvY2tzIGNsb2NrLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDhhYjU4YjIxMjQ4MWIxYzU3OTQ3ZWEyMWFhOTZjNGNlODAwZDBiNApBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglUaHUgTWFyIDYgMTY6NDU6NTMgMjAwOCArMDEwMAoKICAgIFJlcGxhY2UgInJ1biBsb2FkOyBydW4gdXBkYXRlIiB3aXRoIGNvbmRpdGlvbmFsaXplZCAicnVuIGxvYWQgdXBkYXRlIi4KCiAgICBUaGUgbGF0dGVyIHZlcnNpb24gc3RvcHMgd2hlbiAicnVuIGxvYWQiIGZhaWxzIGZvciB3aGF0ZXZlciByZWFzb25zCiAgICByZW5kZXJpbmcgdGhlIGNvbWJpbmF0aW9uICphIGxvdCogbW9yZSBzZWN1cmUuCgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgNmJjMTEzODg2ZDdkMzE2ZGYxYTRlNDU5YmVjOGJhZjAyNzUxODU1MQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIE1hciA0IDE3OjQwOjQxIDIwMDggKzAxMDAKCiAgICBuZXQ6IFByaW50IGVycm9yIG1lc3NhZ2UgdXBvbiBuZXQgdXNhZ2Ugd2hlbiBubyBldGhlcm5ldC1pbnRlcmZhY2UgaXMgZm91bmQKCiAgICBUaGlzIHBhdGNoIGZpeGVzIGEgcHJvYmxlbSBzZWVuIG9uIFBQQzR4eCBib2FyZHMsIHdoZW4gbm8gTUFDIGFkZHJlc3MgaXMKICAgIGRlZmluZWQuIFRoZW4gbm8gZXRoZXJuZXQgaW50ZXJmYWNlIGlzIGF2YWlsYWJsZSBidXQgYSBzaW1wbGUgInRmdHAiCiAgICBjb21tYW5kIHdpbGwgcmV0dXJuIHdpdGhvdXQgYW55IGVycm9yIG1lc3NhZ2Ugd2hpY2ggaXMgcXVpdGUgY29uZnVzaW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhMzBhNTQ5YTM1NTMwMzJkODA5ZTAzNTYzMDZiNjJkZTBiMTI1OTAxCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE1hciA0IDEwOjAzOjAzIDIwMDggLTA2MDAKCiAgICBSZW1vdmUgZXJyb25lb3VzIG9yIGV4dHJhIHNwZC5oICNpbmNsdWRlcnMuCgogICAgTWFueSBvZiB0aGUgc3BkLmggI2luY2x1ZGVycyBkb24ndCBuZWVkIGl0LAogICAgYW5kIHdhbnRlZCB0byBoYXZlIHNwZF9zZHJhbSgpIGRlY2xhcmVkIGluc3RlYWQuCiAgICBTaW5jZSB0aGV5IGRpZG4ndCBnZXQgdGhhdCwgc29tZSBhbHNvIGhhZCBvcGVuCiAgICBjb2RlZCBleHRlcm4gZGVjbGFyYXRpb25zIG9mIGl0IGluc3RlYWQgb3IgYXMgd2VsbC4KICAgIEZpeCBpdCBhbGwgdXAgYnkgdXNpbmcgc3BkX3NkcmFtLmggd2hlcmUgbmVlZGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYTQ0NzUzODZjZWYxNGFmM2ZkODhmMDUxOGI2ODhlNzU1NjY5NDg2ZApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXIgNCAxNzo0MToyOCAyMDA4ICswMTAwCgogICAgUENTNDQwRVA6IGZpeCBidWlsZCBwcm9ibGVtcyAocmVkdW5kYW50ICNkZWZpbmUpCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBlODVlMmZhODVlYzA5YTZmYWMyODQ2ZDFkODgxZDg3MzdlMmJiZGE5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgTWFyIDQgMTc6Mzk6MjUgMjAwOCArMDEwMAoKICAgIG5ldDogUHJpbnQgZXJyb3IgbWVzc2FnZSB1cG9uIG5ldCB1c2FnZSB3aGVuIG5vIGV0aGVybmV0LWludGVyZmFjZSBpcyBmb3VuZAoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBwcm9ibGVtIHNlZW4gb24gUFBDNHh4IGJvYXJkcywgd2hlbiBubyBNQUMgYWRkcmVzcyBpcwogICAgZGVmaW5lZC4gVGhlbiBubyBldGhlcm5ldCBpbnRlcmZhY2UgaXMgYXZhaWxhYmxlIGJ1dCBhIHNpbXBsZSAidGZ0cCIKICAgIGNvbW1hbmQgd2lsbCByZXR1cm4gd2l0aG91dCBhbnkgZXJyb3IgbWVzc2FnZSB3aGljaCBpcyBxdWl0ZSBjb25mdXNpbmcuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDM4NGZhYWFmYjk5OWNhZTNjZTQ0N2M5M2UyOGEwYjdlMmU1ZmVmNTMKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgTWFyIDQgMTc6Mzg6NTAgMjAwOCArMDEwMAoKICAgIFc3T0xNQy9XN09MTUc6IGZpeCBidWlsZCBwcm9ibGVtcyAocmVkdW5kYW50ICNkZWZpbmUpCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBmOTMwMWUxY2RhMjk2MjQ1YmEwNTJkN2IwODMyMTE5OWMzZDBhZjlkCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIE1hciA0IDE0OjU4OjMxIDIwMDggKzAxMDAKCiAgICBNYWtlZmlsZTogZml4IHByb2JsZW0gd2l0aCBvdXQtb2YtdHJlZSBidWlsZHMgaW50cm9kdWNlZCBieSA1MDEzYzA5ZgoKICAgIENvbW1pdCA1MDEzYzA5ZiAoTWFrZWZpbGU6IGNsZWFudXAgImNsZWFuIiB0YXJnZXQpIGludHJvZHVjZWQgYQogICAgcHJvYmxlbSBmb3Igb3V0LW9mLXRyZWUgYnVpbGRzIHdoaWNoIGNhdXNlZCAibWFrZSBjbGVhbiIgdG8gZmFpbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGRmZWNlOTUwMDU1NmJlZDVkODI0NGIxYzE1ZDk3M2NlYzdjMjViZmUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgTWFyIDQgMTE6NTg6MjYgMjAwOCArMDEwMAoKICAgIGV4YW1wbGVzL01ha2VmaWxlOiBidWlsZCAiaGVsbG9fd29ybGQiIG9uIDh4eCwgdG9vLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNzRlYjAyMjI1OTRmZDIzYWFmZGYxNjhlNjBlODcyODE0ZWVhOGI2MgpBdXRob3I6IE1pa2UgTnVzcyA8bWlrZUB0ZXJhc2NhbGEuY29tPgpEYXRlOglNb24gTWFyIDMgMTU6Mjc6MDUgMjAwOCAtMDUwMAoKICAgIFBQQzR4eCAoU2VxdW9pYSk6IEZpeCBFdGhlcm5ldCAicmVtb3RlIGZhdWx0IiBwcm9ibGVtcwoKICAgIEV2ZXJ5IG5vdyBhbmQgdGhlbiBhIFNlcXVvaWEgYm9hcmQgKG9yIGVxdWl2YWxlbnQgaGFyZHdhcmUpIGhhZAogICAgcHJvYmxlbXMgY29ubmVjdGluZyB0byBhIEdpZ2FiaXQgY2FwYWJsZSBuZXR3b3JrIGludGVyZmFjZS4KCiAgICBUaGVyZSB3ZXJlIGRpZmZlcmVuY2VzIGluIHRoZSBQSFkgc2V0dXAgYmV0d2VlbiBMaW51eCBhbmQgVS1Cb290LgoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIHByb2JsZW0uIEFwcGFyZW50bHkgInJlbW90ZSBmYXVsdCIgaXMgYmVpbmcgc2V0LAogICAgd2hpY2ggc2lnbmFscyB0byBzb21lIGRldmljZXMgKG9uIHRoZSBvdGhlciBlbmQgb2YgdGhlIGNhYmxlKSB0aGF0IGEKICAgIGZhdWx0IGhhcyBvY2N1cnJlZCwgd2hpbGUgb3RoZXIgZGV2aWNlcyBpZ25vcmUgaXQuIEkgYmVsaWV2ZSB0aGUgUkYgYml0CiAgICB3YXMgY2F1c2luZyB0aGUgaXNzdWUsIGJ1dCBJIHJlbW92ZWQgVDQgYWxzbywgdG8gbWF0Y2ggdXAgd2l0aCBMaW51eC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIE51c3MgPG1pa2VAdGVyYXNjYWxhLmNvbT4KCmNvbW1pdCA0OTFmYjZkZWE5ZjUyZmRiOWNiNTk5NmU4ZTk3OGI5ZTk2ODUxNzlmCkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIE1hciAzIDA5OjU4OjUyIDIwMDggLTA2MDAKCiAgICBmaXggUUUgZmlybXdhcmUgdXBsb2FkaW5nIGxpbWl0CgogICAgRml4IGEgdHlwbyBpbiBxZV91cGxvYWRfZmlybXdhcmUoKSB0aGF0IHByZXZlbnRlZCB1cGxvYWRpbmcgZmlybXdhcmUgb24KICAgIHN5c3RlbXMgd2l0aCBtb3JlIHRoYW4gb25lIFJJU0MgY29yZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQyYmE1OGUwYzMwMmIzMzlhM2MyZmFhNjAwNmEwMTNjNmYxODZiN2EKQXV0aG9yOiBCZXJuaGFyZCBOZW1lYyA8Ym5lbWVjQGdhbnNzbG9zZXIuY29tPgpEYXRlOglNb24gTWFyIDMgMTE6NTc6MjMgMjAwOCArMDAwMAoKICAgIEZpeCBlbmRpYW5lc3MgcHJvYmxlbSBpbiBjcmFtZnMgY29kZSAoY3JhbWZzIGlzIGFsd2F5cyBob3N0LWVuZGlhbiBpbiBMaW51eCkKCiAgICBPcmlnaW5hbGx5IHBvaW50ZWQgb3V0IGJ5IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAdGJveC5iaXo+LAogICAgc2VlIGh0dHA6Ly90aHJlYWQuZ21hbmUub3JnL2dtYW5lLmNvbXAuYm9vdC1sb2FkZXJzLnUtYm9vdC8yMjg0NgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlcm5oYXJkIE5lbWVjIDxibmVtZWMgPGF0PiBnYW5zc2xvc2VyLmNvbT4KCmNvbW1pdCA4NGQwYzJmMWUzOWNhZmY1OGJmNzY1YTdhYjdjNzJkYTIzYzI1ZWM4CkF1dGhvcjogS2ltIEIuIEhlaW5vIDxLaW0uSGVpbm9AYmx1ZWdpZ2EuY29tPgpEYXRlOglNb24gTWFyIDMgMTA6Mzk6MTMgMjAwOCArMDIwMAoKICAgIGZpeCBjb3B5IGZyb20gcmFtIHRvIGRhdGFmbGFzaAoKICAgIElmIEkgdHJ5IHRvICJjcC5iIDxyYW0+IDxkYXRhZmxhc2g+IiwgdS1ib290IHNlbGVjdHMgbm9ybWFsIGZsYXNoCiAgICByb3V0aW5lcyBpbnN0ZWFkIG9mIGRhdGFmbGFzaC4gVGhpcyBpcyBiZWNhdXNlIGl0IGNoZWNrcyAiaWYgc291cmNlCiAgICBhZGRyZXNzIGlzIG5vdCBkYXRhZmxhc2giIGluc3RlYWQgb2YgdGFyZ2V0IGFkZHJlc3MuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIEIuIEhlaW5vIDxLaW0uSGVpbm9AYmx1ZWdpZ2EuY29tPgoKY29tbWl0IDMyYmYzZDE0M2E4ODhmOGRlYWNmZGNjOTdlODk4ZjZjMDZkMGFlYTQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gTWFyIDMgMTI6MTY6NDQgMjAwOCArMDEwMAoKICAgIEZpeCBxdW90aW5nIHByb2JsZW0gKHByZWJvb3Qgc2V0dGluZykgaW4gbWFueSBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1YjBiMmI2ZmM5ZmUyMmUzODY0YzJhNTczMTZkOTFhMjUwN2VjMjE1CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIE1hciAzIDEyOjM2OjQ5IDIwMDggKzAxMDAKCiAgICBBRFM1MTIxOiBGaXggZGVmYXVsdCBlbnZpcm9ubWVudC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDkxYzgyMDc2YWU0OTJiYjFmOWQ5YzQ3YTQ4MTMxNDYzMWQzMmRjOGUKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gTWFyIDIgMTY6MTI6MzEgMjAwOCArMDEwMAoKICAgIE1ha2VmaWxlOiBGaXggbWlzc2luZyB1bmNvbmZpZyBhbmQgbWtjb25maWcgdXNlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA4Y2U0ZTVjMmMwMmNiN2U4YWRkZGY3YjY1MWQzMDUwZDgxY2U0YzFkCkF1dGhvcjogbWljaGFlbCA8dHJpbWFyY2hpQGdhbmRhbGYuc3NzdXAuaXQ+CkRhdGU6CVN1biBNYXIgMiAyMzozMzo0NiAyMDA4ICswMTAwCgogICAgRml4IGNoZWNraW5nIGZhdDMyIGNsdXN0ZXIgc2l6ZS4KCiAgICBUaGlzIGZpeGVzIHRoZSBjbHVzdGVyIHNpemUgdGVzdHMgaW4gdGhlIEZBVDMyIGZpbGUgc3lzdGVtLgogICAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgVkZBVCBzdXBwb3J0IGRvZXNuJ3Qgd29yayBpZiB0aGUKICAgIHJlZmVycmVkIGNsdXN0ZXIgaGFzIGFuIG9mZnNldCA+IDE2Yml0IHJlcHJlc2VudGF0aW9uLCBjYXVzaW5nCiAgICAiZmF0bG9hZCIgYW5kICJmYXRscyIgY29tbWFuZHMgZXRjLiB0byBmYWlsLgoKICAgIFNpZ25lZC1vZmYtYnk6IG1pY2hhZWwgdHJpbWFyY2hpIDx0cmltYXJjaGlAZ2FuZGFsZi5zc3N1cC5pdD4KCmNvbW1pdCA2NjFiYWQ2M2EwNzZhOTZjMzljNjRmMTM2OTE1ZjE0NjcyNWFmOTJiCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIE1hciAyIDIyOjU3OjIzIDIwMDggKzAxMDAKCiAgICBQcmVwYXJlIHYxLjMuMi1yYzIgcmVsZWFzZSBjYW5kaWRhdGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDc2OTU3Y2IzZDYyMWJmNjY0MzExOTA4ZTU5NjJlMTUxYzYzM2MyODUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVNhdCBNYXIgMSAxMjoxMTo0MCAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBFTUFDOiBGaXggNDA1RVogZmlmbyBzaXplIHNldHVwIGluIEVNQUNfTVIxCgogICAgVGhlIDQwNUVaIG9ubHkgc3VwcG9ydHMgNTEyIGJ5dGVzIG9mIHJ4LS90eC1maWZvIEVNQUMgc2l6ZXMuIEJ1dAogICAgY3VycmVudGx5IDRrLzJrIGlzIGNvbmZpZ3VyZWQuIFRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBpc3N1ZS4KCiAgICBUaGFua3MgdG8gVGhvbWFzIEtpbmRsZXIgPHRraW5kbGVyQGxlbm9yZC5kZT4gZm9yIHBvaW50aW5nIHRoaXMgb3V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxMTg5NzhjOGViNDM4MDNlMjc5NDIzMzkyMmRmNDI0OWZhMjc4YjgzCkF1dGhvcjogV29vZHJ1ZmYsIFJpY2hhcmQgPHItd29vZHJ1ZmYyQHRpLmNvbT4KRGF0ZToJRnJpIEZlYiAyOSAxNzozNDozNSAyMDA4IC0wNjAwCgogICAgRml4IGFsaWdubWVudCBlcnJvciBvbiBBUk0gZm9yIG1vZHVsZXMKCiAgICBGaXggYWxpZ25tZW50IGZhdWx0IG9uIEFSTSB3aGVuIHJ1bm5pbmcgbW9kdWxlcy4gIFdpdGggb3V0IGFuIGV4cGxpY2l0CiAgICBsaW5rZXIgZmlsZSBnY2M0LjIuMSB3aWxsIGhhbGYgd29yZCBhbGlnbiBfX2Jzc19zdGFydCdzIHZhbHVlLiAgVGhlIHdvcmQKICAgIGRlcmVmZXJlbmNlIHdpbGwgY3Jhc2ggaGVsbG9fd29ybGQuCgogICAgc2lnbmVkLW9mZi1ieSBSaWNoYXJkIFdvb2RydWZmIDxyLXdvb2RydWZmMkB0aS5jb20+Cgpjb21taXQgY2UxMTIwZGQ3MDNlNmYxMmM1OWU0ZWJhOTk2MjM1NmEwMzAwYjgzMgpBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEZlYiAyOSAxNzo0NTozMSAyMDA4ICswODAwCgogICAgZnM6IEZpeCBleHQyIHJlYWQgaXNzdWUKCiAgICBUaGUgZXh0MiBhbGlnbmVkIHByb2Nlc3Mgd2lsbCBjb3JydXB0IHRoZSBrZXkKICAgIGRhdGEgc3RydWN0LCB0aGUgcGF0Y2ggZml4IHRoaXMuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1MDEzYzA5ZjdhNTY3NTk1MmEzY2E4OGI2YmM2YzkyNGU2M2FmMzNlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIE1hciAyIDIyOjQ1OjMzIDIwMDggKzAxMDAKCiAgICBNYWtlZmlsZTogY2xlYW51cCAiY2xlYW4iIHRhcmdldAoKICAgIE1ha2Ugc3VyZSBDRFBBVEggc2V0dGluZ3MgY2Fubm90IGludGVyZmVyZS4KICAgIFVwZGF0ZSBDSEFOR0VMT0cuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBmZmRhNTg2ZmMxMzczMjQzYzk3OTRiYWJkZTY5NTAwZjYyOTNhOGQ4CkF1dGhvcjogTGkgWWFuZyA8bGVvbGlAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEZlYiAyOSAxMTo0NjowNSAyMDA4ICswODAwCgogICAgYWRkIGNzY29wZSBidWlsZCB0YXJnZXQKCiAgICBBZGQgY3Njb3BlIGJ1aWxkIHRhcmdldCB0byBnZW5lcmF0ZSBjc2NvcGUgZGF0YWJhc2UgZm9yIGNvZGUgYnJvd3NpbmcuCgogICAgU2lnbmVkLW9mZi1ieTogTGkgWWFuZyA8bGVvbGlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmNjU1YWRlZjY1ZTRjZjZiOTI5MDU0YjA0OWVlMTlhZTliNWNjYmUyCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEZlYiAyNyAxNTowNjozOSAyMDA4IC0wNjAwCgogICAgbmV0OiB1ZWNfcGh5OiBoYW5kbGUgODhlMTExMSByZXYuQjIgZXJyYXR1bSA1LjYKCiAgICBlcnJhdHVtIDUuNiBzdGF0ZXMgdGhlIGF1dG9uZWcgY29tcGxldGlvbiBiaXQgaXMgZnVuY3Rpb25hbCBvbmx5IGlmIHRoZQogICAgYXV0b25lZyBiaXQgaXMgYXNzZXJ0ZWQuCgogICAgVGhpcyBmaXhlcyBhbnkgc2Vjb25kYXJpbHktaXNzdWVkIG5ldHdvcmtpbmcgY29tbWFuZHMgb24gbm9uLWdpZ2FiaXQKICAgIGxpbmtzIG9uIHRoZSBtcGM4MzYwIG1kcyBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDVmOTFkYjdmNTgyY2ExN2IxZjE5ZjEwMTg5YzAyNTY5NmYzMzNkMmUKQXV0aG9yOiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEZlYiAyNiAwOTozODoxNCAyMDA4IC0wNzAwCgogICAgTVBDNTEyMWUgQURTIFBDSSBzdXBwb3J0IHRha2UgMwoKICAgIEFkZHMgUENJIHN1cHBvcnQgZm9yIE1QQzUxMjEKCiAgICBUZXN0ZWQgd2l0aCBkcml2ZXJzL25ldC9ydGw4MTM5LmMKCiAgICBTdXBwb3J0IGlzIGNvbmRpdGlvbmFsIHNpbmNlIFBDSSBvbiBvbGQgc2lsaWNvbiBkb2VzIG5vdCB3b3JrLgoKICAgIGFkczUxMjFfUENJX2NvbmZpZyB0dXJucyBvbiBQQ0kKCiAgICBJbiB0aGlzIHZlcnNpb24sIGNvbmRpdGlvbiBjb21waWxhdGlvbiBvZiBQQ0kgY29kZSBoYXMgYmVlbiBtb3ZlZAogICAgZnJvbSBpZmRlZiBpbiBib2FyZC9hZHM1MTIxL3BjaS5jIHRvIGJvYXJkL2FkczUxMjEvTWFrZWZpbGUgYXMKICAgIHN1Z2dlc3RlZCBieSBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRAoKICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ0YjRkYmVkNDEzM2Y2NTc3MDViN2M1MTkzMjA5ZGE5OTc4MjQzYTcKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CU1vbiBGZWIgMjUgMjM6NTM6MDcgMjAwOCArMDEwMAoKICAgIEZpeCB3YXJuaW5ncyB3aGlsZSBjb21waWxhdGlvbiBvZiBwb3N0L2RyaXZlcnMvbWVtb3J5LmMKCiAgICBGaXggd2FybmluZ3Mgd2hpbGUgY29tcGlsYXRpb24gd2l0aCBuZXcgZ2NjIGluIGVsZGstNC4yCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IDRmYWUzNWE1M2IzZTk1ODI1NGQ2NTc0YTFjYzdlMTA4MTFmYzY3MjYKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CU1vbiBGZWIgMjUgMjA6NTQ6MDQgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogRml4IHByb2JsZW0gaW4gNHh4X2VuZXQuYyBkcml2ZXIKCiAgICBVLUJvb3QgY3Jhc2hlcyBpbiB0aGUgbmV0IGxvb3AgaWYgQ09ORklHXzR4eF9EQ0FDSEUgaXMKICAgIGVuYWJsZWQuIFRvIHJlcHJvZHVjZSB0aGUgcHJvYmxlbSBlbnN1cmUgdGhhdCAnZXRocm90YXRlJwogICAgZW52aXJvbm1lbnQgdmFyaWFibGUgaXNuJ3Qgc2V0IHRvICJubyIgYW5kIHRoZW4gcnVuCiAgICAidGZ0cCAyMDAwMDAgbm90X2V4aXN0ZW50X2ZpbGUiLgogICAgVGhpcyBwYXRjaCB0cmllcyB0byBmaXggdGhlIGlzc3VlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCA2MGVjNjU0YzVlYjgwZDBmZTBjMzhhM2JkNDIxNDAyMTViYzA2NDg0CkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglNb24gRmViIDI1IDIwOjA0OjIwIDIwMDggKzAxMDAKCiAgICBQT1NUOiBEaXNhYmxlIGNhY2hlIHdoaWxlIFNQUiBQT1NUCgogICAgQ3VycmVudGx5IChzaW5jZSBjb21taXQgYjJlMjE0MmMpIHUtYm9vdCBjcmFzaGVzIG9uCiAgICBzZXF1b2lhIGJvYXJkIHdoaWxlIFNQUiB0ZXN0IGlmIENPTkZJR180eHhfRENBQ0hFIGlzCiAgICBlbmFibGVkLiBUaGlzIHBhdGNoIGRpc2FibGVzIHRoZSBjYWNoZSB3aGlsZSBTUFIgdGVzdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgYzMxM2IyYzZjNTU1ZTdkODllYzU5YmQ1MWM1OWFiMTY0YWQwMTA1ZApBdXRob3I6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgpEYXRlOglNb24gRmViIDI1IDE3OjUyOjQwIDIwMDggKzAxMDAKCiAgICBUUU01MjAwOiB1c2UgYXV0b21hdGljIGZkdCBtZW1vcnkgZml4dXAgKHBhcnQgMikKCiAgICBDYWxsIGZkdF9maXh1cF9tZW1vcnkoKSBvbiB0aGUgYm9hcmRzIFRRTTUyMDAsIFRRTTUyMDBfQiwgVFFNNTIwMFMsCiAgICBUQjUyMDAgYW5kIFRCNTIwMF9CIHRvIGZpeHVwIHRoZSAvbWVtb3J5IG5vZGUgd2l0aCB0aGUgbWVtb3J5IHZhbHVlcwogICAgZGV0ZWN0ZWQgYnkgVS1Cb290LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgoKY29tbWl0IDQ0Y2VlYzI1M2VhOTQxYjMwMWFiZjRiMDc5ZDUyMzI0ZGVmNjlkOTIKQXV0aG9yOiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KRGF0ZToJTW9uIEZlYiAyNSAxNToxNzowNSAyMDA4ICswMTAwCgogICAgVFFNNTIwMDogdXNlIGF1dG9tYXRpYyBmZHQgbWVtb3J5IGZpeHVwCgogICAgQ2FsbCBmZHRfZml4dXBfbWVtb3J5KCkgb24gdGhlIGJvYXJkcyBUUU01MjAwLCBUUU01MjAwX0IsIFRRTTUyMDBTLAogICAgVEI1MjAwIGFuZCBUQjUyMDBfQiB0byBmaXh1cCB0aGUgL21lbW9yeSBub2RlIHdpdGggdGhlIG1lbW9yeSB2YWx1ZXMKICAgIGRldGVjdGVkIGJ5IFUtQm9vdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KCmNvbW1pdCBmM2EzMjlhY2IyNjAxN2Q4ZTEwZTljOTNlMWU3MjZjMmE1YWM2MzRhCkF1dGhvcjogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+CkRhdGU6CU1vbiBGZWIgMjUgMTM6Mjc6NTIgMjAwOCArMDEwMAoKICAgIFRRTTUyMDA6IGZpeCBidWcgaW4gU0RSQU0gaW5pdGlhbGl6YXRpb24gY29kZQoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIFNEUkFNIGluaXRpYWxpemF0aW9uIGNvZGUgZm9yIHRoZQogICAgVFFNNTIwMC4gVGhlIGhpX2FkZHIgYml0IGlzIG5vdyBzZXQgY29ycmVjdGx5LiBXaXRob3V0IHRoaXMgcGF0Y2gKICAgIHRoZSBoaV9hZGRyIGJpdCBpcyBhbHdheXMgc2V0IHRvIDEsIGlmIHRoZSBzZWNvbmQgU0RSQU0gYmFuayBpcwogICAgbm90IHBvcHVsYXRlZC4KCiAgICBGb3Igb3RoZXIgTVBDNTIwMCBib2FyZHMgYSBjb3JyZXNwb25kaWcgcGF0Y2ggaGFzIGFscmVhZHkgYmVlbiBhcHBsaWVkCiAgICBzb21lIHRpbWUgYWdvLCBzZWUgY29tbWl0IGE2MzEwOTI4MWFkNDFiMGZiNDg5ZmRjYjkwMTE3MWY3NmJjZGJjMmMuCgogICAgU2lnbmVkLW9mZi1ieTogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+CiAgICAtLQogICAgRm9yZ2V0IHRoZSBmaXJzdCBwYXRjaCBwbGVhc2UuIEkgY29uZnVzZWQgZmxhc2ggd2l0aCBTRFJBTSBpbgogICAgdGhlIGNvbW1lbnQgLi4uCgpjb21taXQgMjE3YmY2YjZhMzEzZDljY2I2MTlhNGRiYzA5ZjczZjc3Y2Q0OGRmMQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CU1vbiBGZWIgMjUgMDA6MDM6MTIgMjAwOCArMDEwMAoKICAgIG14MWZzMi9mbGFzaDogRml4IG11bHRpcGxlIGNvbXBpbGVyIHdhcm5pbmdzCgogICAgInBvaW50ZXIgdGFyZ2V0cyBpbiBhc3NpZ25tZW50IGRpZmZlciBpbiBzaWduZWRuZXNzIgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNTU5OWMyOGNlZjU1YmU0MmE4Y2E2ZmE4MDg2YjFhNDRlNTZhODVkMgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CU1vbiBGZWIgMjUgMDA6MDM6MTEgMjAwOCArMDEwMAoKICAgIGFybS1pbXg6IEZpeCByZWdpc3RlciBkZWZpbml0aW9ucwoKICAgIFN5bmMgcmVnaXN0ZXIgZGVmaW5pdGlvbnMgd2l0aCBsaW51eAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYzliY2Y3NWZlY2M1ODg4NmFmNzdkMmE1NzFjZmYyZWFiMzllYWI2ZgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CU1vbiBGZWIgMjUgMDA6MDM6MTAgMjAwOCArMDEwMAoKICAgIGFjdHVhMS9hY3R1YTIvYWN0dWEzOiBGaXggbXVsdGlwbGUgdW51c2VkIHZhcmlhYmxlIHdhcm5pbmdzCgogICAgLSBhY3R1YTE6CglhY3R1eDEuYzogSW4gZnVuY3Rpb24gJ2NoZWNrYm9hcmQnOgoJYWN0dXgxLmM6OTI6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAncmV2aXNpb24nCgogICAgLSBhY3R1YTI6CglhY3R1eDIuYzogSW4gZnVuY3Rpb24gJ2NoZWNrYm9hcmQnOgoJYWN0dXgyLmM6MTAwOiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ3MnCglhY3R1eDIuYzo5OTogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdyZXZpc2lvbicKCWFjdHV4Mi5jOiBJbiBmdW5jdGlvbiAncmVzZXRfcGh5JzoKCWFjdHV4Mi5jOjEzMDogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdpJwoKICAgIC0gYWN0dWEzOgoJYWN0dXgzLmM6IEluIGZ1bmN0aW9uICdjaGVja2JvYXJkJzoKCWFjdHV4My5jOjExNDogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdyZXZpc2lvbicKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGY4ZmE2MzY4YTZhMGMwMjE2NGRhOGUyZjUyZjE4ZDQ1N2M2OTc3YmQKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglTdW4gRmViIDI0IDExOjQ0OjI5IDIwMDggKzA5MDAKCiAgICBSZW1vdmUgdGhlIF9fU1RSSUNUX0FOU0lfXyBjaGVjayBmcm9tIHRoZSBfX3U2NC9fX3M2NCBkZWNsYXJhdGlvbiBvbiAzMmJpdCB0YXJnZXRzLgoKICAgIFRoZSBwcmV2aW91cyBwYXRjaCB3YXMgbGFja2luZyBvZiBpMzg2LCBtaWNyb2JsYXplLCBuaW9zIGFuZCBuaW9zMi4gVGhpcwogICAgcGF0Y2ggdHJpZXMgdG8gZml4IHRoZW0uCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCAwNWUwN2IxZWEyMjg0NGU5NDZjZmNmN2Q1ZThhMDE5OWQxOGQyYTk1CkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJRnJpIEZlYiAyOSAyMjoyMjo0NiAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIEZpeCBGRFQgYmxvYiB0b3RhbHNpemUgY2FsY3VsYXRpb24gaW4gYm9vdF9yZWxvY2F0ZV9mZHQoKQoKICAgIERvIG5vdCB1c2UgZ2xvYmFsIGZkdCBibG9iIHBvaW50ZXIsIGNhbGN1bGF0ZSBibG9iIHNpemUgZnJvbSByb3V0aW5lCiAgICBhcmd1bWVudCBibG9iIHBvaW50ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBkMWNjNTI4NzljODk2NjUwN2RhZDlmYjU3NTQ4MWU2ZDM5ODVlNjRlCkF1dGhvcjogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+CkRhdGU6CVR1ZSBGZWIgMTIgMDA6NTg6MzEgMjAwOCArMTEwMAoKICAgIGxpYmZkdDogQWRkIGFuZCB1c2UgYSBub2RlIGl0ZXJhdGlvbiBoZWxwZXIgZnVuY3Rpb24uCgogICAgVGhpcyBwYXRjaCBhZGRzIGFuIGZkdF9uZXh0X25vZGUoKSBmdW5jdGlvbiB3aGljaCBjYW4gYmUgdXNlZCB0bwogICAgaXRlcmF0ZSB0aHJvdWdoIG5vZGVzIG9mIHRoZSB0cmVlIHdoaWxlIGtlZXBpbmcgdHJhY2sgb2YgZGVwdGguICBUaGlzCiAgICBmdW5jdGlvbiBpcyB1c2VkIHRvIHNpbXBsaWZ5IHRoZSBpdGVyYXRpb24gY29kZSBpbiBhIGxvdCBvZiBvdGhlcgogICAgZnVuY3Rpb25zLCBhbmQgaXMgYWxzbyBleHBvcnRlZCBmb3IgdXNlIGJ5IGxpYnJhcnkgdXNlcnMuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+Cgpjb21taXQgOGNmMzA4MDlhODI5MDJhNDcxODY2ZDJmMDc3MjVjZTNiOGEyMjI5MQpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBGZWIgMjkgMTY6MDA6MjQgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBBZGQgbGliZmR0IHN1cHBvcnQgdG8gbWtpbWFnZQoKICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgYTZlNTMwZjAwZDMxYTg0OTRhMDQyMjc5OWIyYjlhNjkyYTljMGViOQpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBGZWIgMjkgMTY6MDA6MjMgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBBZGQgc2hhMS5vIG9iamVjdCB0byBta2ltYWdlIGJpbmFyeSBidWlsZAoKICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgZGY2ZjFiODk1Yzk5Nzk3OGYwM2FmZTA0NTAyZWU3NmI3YmEzNGFiOQpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBGZWIgMjkgMTY6MDA6MDYgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBGaXggY29tcG9uZW50IGhhbmRsaW5nIGZvciBsZWdhY3kgbXVsdGkgY29tcG9uZW50IGltYWdlcwoKICAgIFVzZSB1aW50MzJfdCB3aGVuIGFjY2Vzc2luZyBzaXplIHRhYmxlIGluIGltYWdlX211bHRpX2NvdW50KCkgYW5kCiAgICBpbWFnZV9tdWx0aV9nZXRpbWcoKSBmb3IgbXVsdGkgY29tcG9uZW50IGltYWdlcy4KCiAgICBBZGQgbWlzc2luZyB1aW1hZ2VfdG9fY3B1KCkgZW5kaWFubmVzcyBjb252ZXJzaW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgNTcwYWJiMGFkMTIwZjYwMDJiY2FhM2NmNmYzMmJkNGNhMmUxYjI0OApBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBGZWIgMjkgMTU6NTk6NTkgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBTaGFyZSBjb21tb24gdUltYWdlIGNvZGUgYmV0d2VlbiBta2ltYWdlIGFuZCBVLWJvb3QKCiAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGZvbGxvd2luZyBjb21tb24gcm91dGluZXM6CgogICAgMSkgRGVkaWNhdGVkIG1raW1hZ2UgcHJpbnRfaGVhZGVyKCkgaXMgcmVwbGFjZWQgd2l0aCBjb21tb24KICAgIGltYWdlX3ByaW50X2NvbnRlbnRzKCkKICAgIGltYWdlX3ByaW50X2NvbnRlbnRzX25vaW5kZW50KCkKCiAgICAyKSBDb21tb24gb3MvYXJjaC90eXBlL2NvbXAgZmllbGRzIG5hbWUgPC0tPiBpZCB0cmFuc2xhdGlvbiByb3V0aW5lcwogICAgZ2VuaW1nX2dldF9vc19uYW1lKCkKICAgIGdlbmltZ19nZXRfYXJjaF9uYW1lKCkKICAgIGdlbmltZ19nZXRfdHlwZV9uYW1lKCkKICAgIGdlbmltZ19nZXRfY29tcF9uYW1lKCkKICAgIGdlbmltZ19nZXRfb3NfaWQoKQogICAgZ2VuaW1nX2dldF9hcmNoX2lkKCkKICAgIGdlbmltZ19nZXRfdHlwZV9pZCgpCiAgICBnZW5pbWdfZ2V0X2NvbXBfaWQoKQoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgOWE0ZGFhZDBhMzVlYjUxNDMwMzdlZWE5Zjc4NmEzZTlkNjcyYmRkNgpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBGZWIgMjkgMTQ6NTg6MzQgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBVcGRhdGUgbmFtaW5nIGNvbnZlbnRpb24gZm9yIGJvb3RtL3VJbWFnZSByZWxhdGVkIGNvZGUKCiAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgdGhlIGZvbGxvd2luZyBwcmVmaXggY29udmVudGlvbiBmb3IgdGhlCiAgICBpbWFnZSBmb3JtYXQgaGFuZGxpbmcgYW5kIGJvb3RtIHJlbGF0ZWQgY29kZToKCiAgICBnZW5pbWdfCQktIGR1YWwgZm9ybWF0IHNoYXJlZCBjb2RlCiAgICBpbWFnZV8JCS0gbGVnYWN5IHVJbWFnZSBmb3JtYXQgc3BlY2lmaWMgY29kZQogICAgZml0XwkJLSBuZXcgdUltYWdlIGZvcm1hdCBzcGVjaWZpYyBjb2RlCiAgICBib290XwkJLSBib290aW5nIHByb2Nlc3MgcmVsYXRlZCBjb2RlCgogICAgUmVsYXRlZCByb3V0aW5lcyBhcmUgcmVuYW1lZCBhbmQgYSBmZXcgcGllY2VzIG9mIGNvZGUgYXJlIG1vdmVkIGFyb3VuZCBhbmQKICAgIHJlLWdyb3VwZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCA3NWZhMDAyYzQ3MTcxYjczZmI0YzFmMmMyZmU0ZDYzOTFjMTM2Mjc2CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEZlYiAyNyAyMTo1MTo1MSAyMDA4IC0wNjAwCgogICAgW25ldyB1SW1hZ2VdIFJlc3BlY3QgYXV0b3N0YXJ0IHNldHRpbmcgaW4gbGludXggYm9vdG0KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgQWNrZWQtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgZDNmMmZhMGQyNzg0NjdiMjIzMmU0ZWIyMzcyZjkwNWMzZmViZmJlYgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBGZWIgMjcgMjE6NTE6NTAgMjAwOCAtMDYwMAoKICAgIFtuZXcgdUltYWdlXSBQcm92aWRlIGFiaWxpdHkgdG8gcmVzdHJpY3QgcmVnaW9uIHVzZWQgZm9yIGJvb3QgaW1hZ2VzCgogICAgQWxsb3cgdGhlIHVzZXIgdG8gc2V0ICdib290bV9sb3cnIGFuZCAnYm9vdG1fc2l6ZScgZW52IHZhcnMgYXMgYSB3YXkKICAgIHRvIHJlc3RyaWN0IHdoYXQgbWVtb3J5IHJhbmdlIGlzIHVzZWQgZm9yIGJvb3RtLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBBY2tlZC1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBlODIyZDdmYzRkZDQ3NTVkNGQwYTIyZjA1ZTMzZjMzZDFhMDQ4MWRhCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEZlYiAyNyAyMTo1MTo0OSAyMDA4IC0wNjAwCgogICAgW25ldyB1SW1hZ2VdIFVzZSBsbWIgZm9yIGJvb3RtIGFsbG9jYXRpb25zCgogICAgQ29udmVydCBnZW5lcmljIHJhbWRpc2tfaGlnaCgpLCBnZXRfYm9vdF9jbWRsaW5lKCksIGdldF9ib290X2tiZCgpCiAgICBmdW5jdGlvbnMgb3ZlciB0byB1c2luZyBsbWIgZm9yIGFsbG9jYXRpb24gb2YgdGhlIHJhbWRpc2ssIGNvbW1hbmQgbGluZQogICAgYW5kIGtlcm5lbCBiZCBpbmZvLgoKICAgIENvbnZlcnQgUFBDIHNwZWNpZmljIGZkdF9yZWxvY2F0ZSgpIHRvIHVzZSBsbWIgZm9yIGFsbG9jYXRpb24gb2YgdGhlIGRldmljZQogICAgdHJlZS4KCiAgICBQcm92aWRlZCBhIHdlYWsgZnVuY3Rpb24gdGhhdCBib2FyZCBjb2RlIGNhbiBjYWxsIHRvIGRvIGFkZGl0aW9uYWwKICAgIGxtYiByZXNlcnZlcyBpZiBuZWVkZWQuCgogICAgQWxzbyBpbnRyb2R1Y2UgdGhlIGNvbmNlcHQgb2YgYm9vdG1hcF9iYXNlIHRvIHNwZWNpZnkgdGhlIG9mZnNldCBpbgogICAgcGh5c2ljYWwgbWVtb3J5IHRoYXQgdGhlIGJvb3RtYXAgaXMgbG9jYXRlZCBhdC4gIFRoaXMgaXMgdXNlZCBmb3IKICAgIGFsbG9jYXRpb25zIG9mIHRoZSBjbWRsaW5lLCBrZXJuZWwgYmQsIGFuZCBkZXZpY2UgdHJlZSBhcyB0aGV5IHNob3VsZAogICAgYmUgY29udGFpbmVkIHdpdGhpbiBib290bWFwX2Jhc2UgYW5kIGJvb3RtYXBfYmFzZSArIENGR19CT09UTUFQU1ouCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmNTYxNGU3OTI2ODYzYmYwMjI1ZWM4NjBkOWIzMTk3NDFhOWM0MDA0CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEZlYiAyNyAyMTo1MTo0OCAyMDA4IC0wNjAwCgogICAgW25ldyB1SW1hZ2VdIEFkZCBhdXRvc3RhcnQgZmxhZyB0byBib290bV9oZWFkZXJzIHN0cnVjdHVyZQoKICAgIFRoZSBhdXRvc3RhcnQgZW52IHZhcmlhYmxlIHdhcyBkcm9wcGVkIGFzIHBhcnQgb2YgdGhlIGluaXRpYWwgbmV3IHVJbWFnZQogICAgY2xlYW51cC4gIEFkZCBpdCBiYWNrIGhlcmUgc28gdGhlIGFyY2ggc3BlY2lmaWMgY29kZSBjYW4gZGVjaWRlIGlmIGl0CiAgICB3YW50cyB0byByZWFsbHkgYm9vdCBvciBub3QuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIEFja2VkLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IDRlZDY1NTJmNzE1OTgzYmZjN2QyMTJjMTE5OWExZjc5NmYxMTQ0YWQKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgRmViIDI3IDIxOjUxOjQ3IDIwMDggLTA2MDAKCiAgICBbbmV3IHVJbWFnZV0gSW50cm9kdWNlIGxtYiBmcm9tIGxpbnV4IGtlcm5lbCBmb3IgbWVtb3J5IG1nbXQgb2YgYm9vdCBpbWFnZXMKCiAgICBJbnRyb2R1Y2UgdGhlIExNQiBsaWIgdXNlZCBvbiBQUEMgaW4gdGhlIGtlcm5lbCBhcyBhIGNsZWFuIHdheSB0byBtYW5hZ2UKICAgIHRoZSBtZW1vcnkgc3BhY2VzIHVzZWQgYnkgdmFyaW91cyBib290IGltYWdlcyBhbmQgc3RydWN0dXJlcy4gIFRoaXMgY29kZQogICAgd2lsbCBhbGxvdyB1cyB0byBzaW1wbGlmeSB0aGUgY29kZSBpbiBib290bSBhbmQgaXRzIHN1cHBvcnQgZnVuY3Rpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNDY0OGMyZTdhMTczYjBkN2YxN2JlZjRhZGFhMDYyMzA5MGM5ZTkwNApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBGZWIgMTkgMjI6MDM6NDcgMjAwOCAtMDYwMAoKICAgIFtuZXcgdUltYWdlXSBwcGM6IEFsbG93IGJvYXJkcyB0byBzcGVjaWZ5IGVmZmVjdGl2ZSBhbW91bnQgb2YgbWVtb3J5CgogICAgRm9yIGhpc3RvcmljYWwgcmVhc29ucyB3ZSBsaW1pdGVkIHRoZSBzdGFjayB0byAyNTZNIGJlY2F1c2Ugc29tZSBib2FyZHMKICAgIGNvdWxkIG9ubHkgbWFwIHRoYXQgbXVjaCB2aWEgQkFUUy4JSG93ZXZlciBuZXdlciBib2FyZHMgYXJlIGNhcGFibGUgb2YKICAgIG1hcHBpbmcgbW9yZSBtZW1vcnkgKGZvciBleGFtcGxlIDg1eHggaXMgY2FwYWJsZSBvZiBkb2luZyB1cCB0byAyRykuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIEFja2VkLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IDI3NGNlYTJiZGRiY2ExMGNkYWQ3ZGFhNTE4OTUxYjc1YzQ0ZWY2YmMKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgRmViIDI3IDIxOjUxOjQ2IDIwMDggLTA2MDAKCiAgICBbbmV3IHVJbWFnZV0gcmV3b3JrIGVycm9yIGhhbmRsaW5nIHNvIGNvbW1vbiBmdW5jdGlvbnMgZG9uJ3QgcmVzZXQKCiAgICBDaGFuZ2VkIGltYWdlX2dldF9yYW1kaXNrKCkgdG8ganVzdCByZXR1cm4gTlVMTCBvbiBlcnJvciBhbmQgaGF2ZQogICAgZ2V0X3JhbWRpc2soKSBwcm9wb2dhdGUgdGhhdCBlcnJvciB0byB0aGUgY2FsbGVyLiAgSXQncyBsZWZ0IHRvIHRoZQogICAgY2FsbGVyIHRvIGNhbGwgZG9fcmVzZXQoKSBpZiBpdCB3YW50cyB0by4KCiAgICBBbHNvIG1vdmVkIGNhbGxpbmcgZG9fcmVzZXQoKSBpbiBnZXRfZmR0KCkgYW5kIGZkdF9yZWxvY2F0ZSgpIG9uIHBwYwogICAgdG8gYSBjb21tb24gbG9jYXRpb24uICBJbiB0aGUgZnV0dXJlIHdlIHdpbGwgY2hhbmdlIGdldF9mZHQoKSBhbmQKICAgIGZkdF9yZWxvY2F0ZSgpIHRvIHJldHVybiBzdWNjZXNzL2ZhaWx1cmUgYW5kIG5vdCBjYWxsIGRvX3Jlc2V0KCkgYXQgYWxsLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBBY2tlZC1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBkMmJjMDk1YTYzOTY3MmRlZjExZDVkMDQzYjU2ODhkMGRiZDY5MmVjCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEZlYiAyNyAyMTo1MTo0NSAyMDA4IC0wNjAwCgogICAgW25ldyB1SW1hZ2VdIHBwYzogUmUtb3JkZXIgcmFtZGlzay9mZHQgaGFuZGxpbmcgc2VxdWVuY2UKCiAgICBEb2luZyB0aGUgZmR0IGJlZm9yZSB0aGUgcmFtZGlzayBhbGxvd3MgdXMgdG8gZ3JvdyB0aGUgZmR0IHcvbyBjb25jZXJuCiAgICBob3dldmVyIGl0IGRvZXMgbWVhbiB3ZSBoYXZlIHRvIGdvIGluIGFuZCBmaXh1cCB0aGUgaW5pdHJkIGluZm8gc2luY2UKICAgIHdlIGRvbid0IGtub3cgd2hlcmUgaXQgd2lsbCBiZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDI3OTUzNDkzZWYwMjVmYjY5OGQ2OGM1ZGVlMzliMzZmMDFmNGQ1MzAKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgRmViIDI3IDIxOjUxOjQ0IDIwMDggLTA2MDAKCiAgICBbbmV3IHVJbWFnZV0gcHBjOiBEZXRlcm1pbmUgaWYgd2UgYXJlIGJvb3RpbmcgYW4gT0Ygc3R5bGUKCiAgICBJZiB3ZSBhcmUgYm9vdGluIE9GIHN0eWxlIHRoYW4gd2UgY2FuIHNraXAgc2V0dGluZyB1cCBzb21lIHRoaW5ncwogICAgdGhhdCBhcmUgdXNlZCBmb3IgdGhlIG9sZCBib290IG1ldGhvZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgQWNrZWQtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgYTY2MTJiZGZlN2VmMzdiOTc4N2I2NjgwMGNmMDJhYWRlZDA1ZmJlYgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBGZWIgMjcgMjE6NTE6NDMgMjAwOCAtMDYwMAoKICAgIFtuZXcgdUltYWdlXSBEb24ndCBwYXNzIGtkYiB0byByYW1kaXNrX2hpZ2ggc2luY2Ugd2UgbWF5IG5vdCBoYXZlIG9uZQoKICAgIFdlIGRvbid0IGFjdHVhbGx5IG5lZWQgdGhlIGtkYiBwYXJhbSBhcyB3ZSBhcmUganVzdCB1c2luZyBpdCB0byBnZXQKICAgIGJkLT5iaV9tZW1zaXplIHdoaWNoIHdlIGNhbiBnZXQgZnJvbSBnZC0+YmQtPmJpX21lbXNpemUuICBBbHNvLCBpZiB3ZQogICAgYm9vdCB2aWEgT0Ygd2UgbWlnaHQgbm90IGFjdHVhbGx5IGZpbGwgb3V0IGEga2RiLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBBY2tlZC1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCAyYjIyZmE0YmFlZTUxZTZiNDY3YzQ0ZWExYmUwZDFlY2Q4NmU4Nzc1CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEZlYiAyNyAxNjozMDo0NyAyMDA4IC0wNjAwCgogICAgODV4eDogRG9uJ3QgaWNiaSB3aGVuIHVubG9ja2luZyB0aGUgY2FjaGUKCiAgICBUaGVyZSBpcyBubyByZWFzb24gdG8gaWNiaSB3aGVuIGludmFsaWRhdGluZyB0aGUgdGVtcG9yYXJ5IHN0YWNrIGluCiAgICB0aGUgZC1jYWNoZS4gIEl0cyBpbXBvc3NpYmxlIG9uIGU1MDAgdG8gaGF2ZSB0aGUgaS1jYWNoZSBjb250YWluCiAgICBhbnkgYWRkcmVzc2VzIGluIHRoZSB0ZW1wIHN0YWNrIGFuZCBpdCBjYW4gYmUgcHJvYmxlbWF0aWMgaW4gZ2VuZXJhdGluZwogICAgdHJhbnNhY3Rpb25zIG9uIHRoZSBidXMgdG8gbm9uLXZhbGlkIGFkZHJlc3Nlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDUzNGVhNmI2Zjg2ZjhiNzVlZjJhYzA2MWVmMTEwYTk4ZjEwM2Q3ZDYKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBGZWIgMjcgMTU6NTA6NTAgMjAwOCAtMDYwMAoKICAgIEZpeCBzb3VyY2UgZm9yIEVDTSBlcnJvciBJVlBSCgogICAgVGhlIHNvdXJjZSB2ZWN0b3IgZm9yIHRoZSBFQ00gd2FzIGJlaW5nIHNldCB0byAyLAogICAgYnV0IHRoYXQncyB3aGF0IHRoZSBzb3VyY2UgdmVjdG9yIGZvciBERFIgd2FzIGJlaW5nCiAgICBzZXQgdG8uICBDaGFuZ2UgaXQgdG8gMS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjFmYWU4YjJiNGU0ZTZlNjQ4Nzk2ZTA3ZTIwYWIxM2U5Y2IxODkyMwpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEZlYiAyNyAxNDoyOTo1OCAyMDA4IC0wNjAwCgogICAgSW52YWxpZGF0ZSBJTklUX1JBTSBUTEIgbWFwcGluZ3MKCiAgICBDb21taXQgMGRiMzdkYy4uLiAgKGFuZCBzb21lIG90aGVycykgY2hhbmdlZCB0aGUgSU5JVF9SQU0gVExCCiAgICBtYXBwaW5ncyB0byBiZSB1bmd1YXJkZWQuICBUaGlzIGNvbGxpZGVkIHdpdGggYW4gZXhpc3RpbmcgImJ1ZyIKICAgIHdoZXJlIHRoZSBtYXBwaW5ncyBmb3IgdGhlIElOSVRfUkFNIHdlcmUgYmVpbmcga2VwdCBhcm91bmQuCiAgICBUaGlzIG1lYW50IHRoYXQgc3BlY3VsYXRpdmUgbG9hZHMgdG8gdGhvc2UgYWRkcmVzc2VzIHdlcmUKICAgIHN1Y2NlZWRpbmcgaW4gdGhlIFRMQiwgYW5kIGdvaW5nIG91dCB0byB0aGUgYnVzLCB3aGVyZSB0aGV5CiAgICB3ZXJlIGNhdXNpbmcgYW4gZXhjZXB0aW9uICh0aGVyZSdzIG5vdGhpbmcgYXQgdGhhdCBhZGRyZXNzKS4gVGhlCiAgICBGbGFzaCBjb2RlIHdhcyBjb2luY2lkZW50YWxseSBjYXVzaW5nIHN1Y2ggYSBzcGVjdWxhdGl2ZSBsb2FkLgogICAgUmF0aGVyIHRoYW4gZ28gYmFjayB0byBtYXBwaW5nIHRoZSBJTklUIFJBTSBhcyBndWFyZGVkLCB3ZSBmaXgKICAgIGl0IHNvIHRoYXQgdGhlIGVudHJpZXMgZm9yIHRoZSBJTklUX1JBTSBhcmUgaW52YWxpZGF0ZWQuICBUaHVzCiAgICB0aGUgc3BlY3VsYXRpdmUgbG9hZHMgd2lsbCBmYWlsIGluIHRoZSBUTEIsIGFuZCBoYXZlIG5vIGVmZmVjdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzQ3Yjc5MzhkM2U1NjFlYjIxNWFhMzg2YzM3ZmI1YWNiNWEzODNjNgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBGZWIgMTcgMjI6NTY6MTcgMjAwOCArMDEwMAoKICAgIHNiYzg1NDg6IEZpeCBSZXZpc2lvbiByZWFkaW5nIGFuZCB1bnVzZWQgdmFyaWFibGUgJ3BhdGgnCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA0OTVkMTYyMzc0YzQ3MmY0NjQ1NDQ1MzU1MzM4MmFkMDczNWRjNzI1CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIEZlYiAxNyAyMjo1NjoxNiAyMDA4ICswMTAwCgogICAgc2JjODU0ODogRml4IGNmaSBmbGFzaCBiYW5rIGRlY2xhcmF0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA0ZWZiZTlkYmIxMjlmODU3ZjI3ODU2OTM2MTEyYzhjMDJmMDE2YmU2CkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIEZlYiAyNyAxMTowMjoyNiAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIENvcnJlY3QgcmF3IEZEVCBibG9iIGhhbmRsaWcgd2hlbiBDT05GSUdfRklUIGlzIGRpc2FibGVkCgogICAgRHVhbCBmb3JtYXQgaW1hZ2UgY29kZSBtdXN0IHByb3Blcmx5IGhhbmRsZSBhbGwgdGhyZWUgRkRUIHBhc3NpbmcgbWV0aG9kczoKICAgIC0gcmF3IEZEVCBibG9iIHBhc3NlZAogICAgLSBGRFQgYmxvYiBlbWJlZGRlZCBpbiB0aGUgbGVnYWN5IHVJbWFnZQogICAgLSBGRFQgYmxvYiBlbWJlZGRlZCBpbiB0aGUgbmV3IHVJbWFnZQoKICAgIFRoaXMgcGF0Y2ggZW5hYmxlcyBwcm9wZXIgcmF3IEZEVCBoYW5kbGluZyB3aGVuIG5vIEZJVCBpbWFlZyBzdXBwb3J0CiAgICBpcyBjb21waWxlZCBpbi4gVGhpcyBpcyBhIGJpdCB0cmlja3kgYXMgd2UgbXVzdCBkZWN0ZWQgRklUIGZvcm1hdCBldmVuCiAgICB3aGVuIEZJVCB1SW1hZ2UgaGFuZGxpbmcgaXMgbm90IGVuYWJsZWQgYXMgYm90aCBGSVQgdUltYWdlcyBhbmQgcmF3IEZEVAogICAgYmxvYnMgdXNlIHRoYSBzYW1lIGxvdyBsZXZlbCBmb3JtYXQgKGxpYmZkdCkuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBmZjA3MzRjZmYwZmI1Mzk3Y2UyZjQ2MDJmNGYzZTVlYzljOGEzNmU4CkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIEZlYiAyNyAxMTowMjoyNiAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIFBPV0VSUEM6IEFkZCBpbWFnZV9nZXRfZmR0KCkgcm91dGluZQoKICAgIEZEVCBibG9iIG1heSBiZSBwYXNzZWQgZWl0aGVyOiAoMSkgcmF3ICgyKSBvciBlbWJlZGRlZCBpbiB0aGUgbGVnYWN5IHVJbWFnZQogICAgKDMpIG9yIGVtYmVkZGVkIGluIHRoZSBuZXcgdUltYWdlLiBGb3IgdGhlICgyKSBjYXNlIGVtYmVkZGluZyBpbWFnZSBtdXN0IGJlCiAgICB2ZXJpZmllZCBiZWZvcmUgd2UgZ2V0IEZEVCBmcm9tIGl0LiBUaGlzIHBhdGNoIGZhY3RvcnMgb3V0IGxlZ2FjeSBpbWFnZQogICAgc3BlY2lmaWMgdmVyaWZpY2F0aW9uIHJvdXRpbmUgdG8gdGhlIHNlcGFyYXRlIGhlbHBlciByb3V0aW5lLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CiAgICBBY2tlZC1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAxZWZkNDM2MDFmOTBkZTIxZWM2YzBlYmI5ODgwODIzZTgyMjkyN2IxCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIEZlYiAyNyAxMTowMjowNyAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIEFkZCBpbWFnZV9nZXRfa2VybmVsKCkgcm91dGluZQoKICAgIExlZ2FjeSBpbWFnZSBzcGVjaWZpYyB2ZXJpZmljYXRpb24gaXMgZmFjdG9yZWQgb3V0IHRvIGEgc2VwYXJhdGUgaGVscGVyCiAgICByb3V0aW5lIHRvIGtlZXAgZ2V0X2tlcm5lbCgpIGdlbmVyaWMgYW5kIHNpbXBsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgogICAgQWNrZWQtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgOGE1ZWEzZTYxNjhmZTZhMjc4MGVlYWYyNTdhM2IxOWYzMGRlYzY1OApBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBGZWIgMjcgMTE6MDE6MDQgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBNb3ZlIGltYWdlIHZlcmlmeSBmbGFnIHRvIGJvb3RtX2hlYWRlcnMgc3RydWN0dXJlCgogICAgRG8gbm90IHBhc3MgaW1hZ2UgdmVyaWZpY2F0aW9uIGZsYWcgZGlyZWN0bHkgdG8gcmVsYXRlZCByb3V0aW5lcy4KICAgIFNpbXBsaWZ5IGFyZ3VtZW50IHBhc3NpbmcgYW5kIG1vdmUgaXQgdG8gdGhlIGJvb3RtX2hlYWRlciBzdHJ1Y3R1cmUgd2hpY2gKICAgIGNvbnRhaW5zIGN1cmVudGx5IHByb2Nlc3NlZCBpbWFnZSBzcGVjaWZpYyBkYXRhIGFuZCBpcyBhbHJlYWR5IGJlaW5nIHBhc3NlZAogICAgb24gdGhlIGFyZ3VtZW50IGxpc3QuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KICAgIEFja2VkLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDgyM2FmZTdjZWZlMDBkYWZlZmM2Njk2YzFjYzdhYTgyOGMzOTQyMzQKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgRmViIDI3IDExOjAwOjQ3IDIwMDggKzAxMDAKCiAgICBbTWFrZWZpbGVdIFNvcnQgQ09CSlMgaW4gbGliXzxhcmNoPiBNYWtlZmlsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IDZmMGY5ZGZjNGVlODgwZmJmNDAwYTJlYmUxNDIzODE4MWE2YzNmOTEKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgRmViIDI3IDExOjAwOjQ3IDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gT3B0aW1pemUgZ2VuX2dldF9pbWFnZSgpIGZsb3cgY29udHJvbAoKICAgIFdoZW4gQ09ORklHX0hBU19EQVRBRkxBU0ggaXMgbm90IGRlZmluZWQgZ2VuX2dldF9pbWFnZSgpIHJvdXRpbmUgaGFzIG5vdGhpbmcKICAgIHRvIGRvLCB1cGRhdGUgaXRzIGNvbnRyb2wgZmxvdyB0byBiZXR0ZXIgcmVmbGVjdCB0aGF0IHNpbXBsZSBjYXNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CiAgICBBY2tlZC1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBkMmNlZDllYjE5ZWM3NGY0YTM1OTk0OWRiZTM1MzQyN2ZhNmQ1NWNhCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJTW9uIEZlYiA0IDA4OjI4OjE3IDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gUE9XRVJQQzogU3BsaXQgZ2V0X2ZkdCgpIGludG8gZ2V0IGFuZCByZWxvY2F0ZSByb3V0aW5lcwoKICAgIFBQQyBzcGVjaWZpYyBGRFQgYmxvYiBoYW5kbGluZyBjb2RlIGlzIGRpdmlkZWQgaW50byB0d28gc2VwYXJhdGUgcm91dGluZXM6CgogICAgZ2V0X2ZkdCgpCS0gZmluZCBhbmQgdmVyaWZ5IGEgRkRUIGJsb2IgKGVpdGhlciByYXcgb3IgaW1hZ2UgZW1iZWRkZWQpCiAgICBmZHRfcmVsb2NhdGUoKQktIG1vdmUgRkRUIGJsb2IgdG8gd2l0aGluIEJPT1RNQVAgaWYgbmVlZGVkCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KICAgIEFja2VkLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDMzZmE1YzBiZmFmNDY1ZGU4Y2ViMjNmY2Q2YjM5N2Y2OGIzNWE4MTcKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gRmViIDI1IDEzOjEzOjM3IDIwMDggLTA2MDAKCiAgICA4Nnh4OiBGaXggcmVuYW1lZCBHVVIgc3ltYm9scyBpbiBzYmM4NjQxZCBib2FyZC4KCiAgICBCYWNrIGluIGNvbW1pdCBhNTUxY2VlOTlhZDFkMWRhMjBmZDIzYWQyNjVkZTQ3NDQ4ODUyZjU2CiAgICAoODZ4eDogRml4IEdVUiBQQ0kgY29uZmlnIHJlZ2lzdGVycyBwcm9wZXJseSksIHdlIHNob3VsZCBoYXZlCiAgICBjaGFuZ2VkIHRoZSBNUEM4Nnh4X1BPUkJNU1JfSEEgYW5kIE1QQzg2eHhfUE9SREVWU1JfSU9fU0VMCiAgICBzeW1ib2xzIGluIHRoZSBzYmM4NjQxZCBib2FyZCBhcyB3ZWxsLiAgRml4IHRoaXMgb3ZlcnNpZ2h0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjRjZDU5NGU2MjNjMzlmNzM5NjRkMTg3ODc3NjNlNDUzM2Y3OTFmNwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIEZlYiAyNSAxNjo1MDo0OCAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBGaXggYWNhZGlhX25hbmQgYnVpbGQgcHJvYmxlbQoKICAgIERvbid0IGluY2x1ZGUgdGVzdGRyYW0oKSBvbiBOQU5ELWJvb3RpbmcgdGFyZ2V0IGFjYWRpYV9uYW5kLiBUaGlzIHNhdmVzCiAgICBhIGZldyBieXRlcyBhbmQgbWFrZXMgdGhlIHRhcmdldCBidWlsZCBjbGVhbiBhZ2Fpbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMTRlMDk5ZTY5OGQ0MWU4MTc5ZDA1YzJiMmRiY2Y3MDRhMjM2Zjc0OApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBGZWIgMjQgMjM6MDM6MTIgMjAwOCArMDAwMAoKICAgIG14MWZzMi9mbGFzaDogRml4IG11bHRpcGxlIHBvaW50ZXJ0YXJnZXRzIGluIGFzc2lnbm1lbnQgZGlmZmVyIGluIHNpZ25lZG5lc3MKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDcyNDkwMmM4NDY0ZTYxMDY0MmIzYTE3MDI3OGI5OTcxMDMyNTg4OGUKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gRmViIDI0IDIzOjAzOjExIDIwMDggKzAwMDAKCiAgICBhcm0taW14OiBGaXggcmVnaXN0ZXJzIGRlZmluaXRpb24KCiAgICBTeW5jIHJlZ2lzdGVycyBkZWZpbml0aW9uIHdpdGggbGludXgKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDRjZDI4OGI1ODllYTExNzg5NDdjNmUzNjQ0NTNjMzJiM2RlZGU2YjcKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gRmViIDI0IDIzOjAzOjEwIDIwMDggKzAwMDAKCiAgICBhY3R1YTEvYWN0dWEyL2FjdHVhMzogRml4IG11bHRpcGxldW51c2VkIHZhcmlhYmxlCgogICAgLSBhY3R1YTE6CglhY3R1eDEuYzogSW4gZnVuY3Rpb24gJ2NoZWNrYm9hcmQnOgoJYWN0dXgxLmM6OTI6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAncmV2aXNpb24nCgogICAgLSBhY3R1YTI6CglhY3R1eDIuYzogSW4gZnVuY3Rpb24gJ2NoZWNrYm9hcmQnOgoJYWN0dXgyLmM6MTAwOiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ3MnCglhY3R1eDIuYzo5OTogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdyZXZpc2lvbicKCWFjdHV4Mi5jOiBJbiBmdW5jdGlvbiAncmVzZXRfcGh5JzoKCWFjdHV4Mi5jOjEzMDogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdpJwoKICAgIC0gYWN0dWEzOgoJYWN0dXgzLmM6IEluIGZ1bmN0aW9uICdjaGVja2JvYXJkJzoKCWFjdHV4My5jOjExNDogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdyZXZpc2lvbicKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGQ1OTM0YWQ3NzU2ZjAzOGEzOTNhOWNmYWI3NmE0ZmUzMDZkOWQ5MzAKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglNb24gRmViIDQgMDg6Mjg6MDkgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBBZGQgZHVhbCBmb3JtYXQgdUltYWdlIHN1cHBvcnQgZnJhbWV3b3JrCgogICAgVGhpcyBwYXRjaCBhZGRzIGZyYW1ld29yayBmb3IgZHVhbCBmb3JtYXQgaW1hZ2VzLiBGb3JtYXQgZGV0ZWN0aW9uIGlzIGFkZGVkCiAgICBhbmQgdGhlIGJvb3RtIGNvbnRyb2xsIGZsb3cgaXMgdXBkYXRlZCB0byBpbmNsdWRlIGNhc2VzIGZvciBuZXcgRklUIGZvcm1hdAogICAgdUltYWdlcy4KCiAgICBXaGVuIHRoZSBsZWdhY3kgKGltYWdlX2hlYWRlciBiYXNlZCkgZm9ybWF0IGlzIGRldGVjdGVkIGFwcHJvcHJpYXRlCiAgICBsZWdhY3kgc3BlY2lmaWMgaGFuZGxpbmcgaXMgaW52b2tlZC4gRm9yIHRoZSBuZXcgKEZJVCBiYXNlZCkgZm9ybWF0IHVJbWFnZXMKICAgIGR1YWwgYm9vdCBmcmFtZXdvcmsgaGFzIGEgbWluaWFsIHN1cHBvcnQsIHRoYXQgd2lsbCBvbmx5IHByaW50IG91dCBhCiAgICBjb3JyZXNwb25kaW5nIGRlYnVnIG1lc3NhZ2VzLiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgRklUIHNwZWNpZmljIGhhbmRsaW5nIHdpbGwKICAgIGJlIGFkZGVkIGluIGZvbGxvd2luZyBwYXRjaGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgYjI5NjYxZmMxMTUxMDc3Nzc2NDU0Mjg4MDUxYmM5YTQ4ODM1MWNlOApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBGZWIgMjQgMTU6MjE6MzYgMjAwOCArMDEwMAoKICAgIENvZGluZyBzdHlsZSBjbGVhbnVwLiBQcmVwYXJlIHYxLjMuMi1yYzIgcmVsZWFzZSBjYW5kaWRhdGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDAwYjQ4YTQ4NDI0ODk0ZGFhNTg5ZDE2NmQ3MzI3NzgzMGIxYzZhYzQKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgRmViIDIzIDEyOjE1OjU2IDIwMDggKzAxMDAKCiAgICBFTlY6IHJlbW92ZSBzYXZlZW52IHdoZW4gQ0ZHX0VOVl9JU19OT1dIRVJFIGlzIHNlbGVjdGVkCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBiMDc1ZDc0ZWZiNzBmZjY4YzQ5YTI1MzJmMjZiNTZkNjcwM2I2OWMxCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJU2F0IEZlYiAyMyAxNzoyNDoxNiAyMDA4ICswOTAwCgogICAgUmVtb3ZlIHRoZSBfX1NUUklDVF9BTlNJX18gY2hlY2sgZnJvbSB0aGUgX191NjQvX19zNjQgZGVjbGFyYXRpb24gb24gMzJiaXQgdGFyZ2V0cy4KCiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBPbGFmIEhlcmluZyBbV2VkLCAxNyBPY3QgMjAwNyAwNjoyNzoxMyArMDAwMCAoMjM6MjcgLTA3MDApXQoKICAgIFJlbW92ZSB0aGUgX19TVFJJQ1RfQU5TSV9fIGNoZWNrIGZyb20gdGhlIF9fdTY0L19fczY0IGRlY2xhcmF0aW9uIG9uCiAgICAzMmJpdCB0YXJnZXRzLgoKICAgIEdDQyBjYW4gYmUgbWFkZSB0byB3YXJuIGFib3V0IHVzYWdlIG9mIGxvbmcgbG9uZyB0eXBlcyB3aXRoIElTTyBDOTAKICAgICgtYW5zaSksIGJ1dCBvbmx5IHdpdGggLXBlZGFudGljLiAgWW91IGNhbiB3cml0ZSB0aGlzIGluIGEgd2F5IHRoYXQgZXZlbgogICAgdGhlbiBpdCBkb2Vzbid0IGNhdXNlIHdhcm5pbmdzLCBuYW1lbHkgYnk6CgogICAgI2lmZGVmIF9fR05VQ19fCiAgICBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgX19zaWduZWRfXyBsb25nIGxvbmcgX19zNjQ7CiAgICBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fdTY0OwogICAgI2VuZGlmCgogICAgVGhlIF9fZXh0ZW5zaW9uX18ga2V5d29yZCBpbiBmcm9udCBvZiB0aGlzIHN3aXRjaGVzIG9mZiBhbnkgcGVkYW50aWMKICAgIHdhcm5pbmdzIGZvciB0aGlzIGV4cHJlc3Npb24uCgogICAgU2lnbmVkLW9mZi1ieTogT2xhZiBIZXJpbmcgPG9saEBzdXNlLmRlPgogICAgQ2M6IDxsaW51eC1hcmNoQHZnZXIua2VybmVsLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBNb3J0b24gPGFrcG1AbGludXgtZm91bmRhdGlvbi5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgtZm91bmRhdGlvbi5vcmc+CiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCAyMDhhY2QxMTJlNjUxN2IyMWZjMzBjNDIwMzk2OTAyYjEwMzU2M2FjCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJU2F0IEZlYiAyMyAxNzowNzo1NyAyMDA4ICswOTAwCgogICAgY3B1L21jZjUyeDIvY29uZmlnLm1rOiBNYWtlIG5lZWRsZXNzbHkgZGVmZmVyZWQgZXhwYW5zaW9ucyBpbW1lZGlhdGUuCgogICAgVGhpcyB3aWxsIHJlZHVjZSB0aGUgYnVpbGQgdGltZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IDQ5NWEwZGRlN2ZhMWIxNGNkYzE1NjA3ZDg2NTAzZWMyYmRjZDAyYzQKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglTYXQgRmViIDIzIDE3OjA1OjAwIDIwMDggKzA5MDAKCiAgICBjcHUvcHBjNHh4L2NvbmZpZy5tazogTWFrZSBhIG5lZWRsZXNzbHkgZGVmZmVyZWQgZXhwYW5zaW9uIGltbWVkaWF0ZS4KCiAgICBUaGlzIHdpbGwgcmVkdWNlIHRoZSBidWlsZCB0aW1lLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgZTY4MmJhMzk5YTFkNzZmMDlkOGNjN2FmMWU1NzA2NmYxZDM2MGQ5MQpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVNhdCBGZWIgMjMgMTY6NTg6NDEgMjAwOCArMDkwMAoKICAgIGNwdS9taXBzL2NvZmlnbC5tazogTWFrZSBhIG5lZWRsZXNzbHkgZGVmZmVyZWQgZXhwYW5zaW9uIGltbWVkaWF0ZS4KCiAgICBUaGlzIHJlZHVjZXMgdGhlIGJ1aWxkIHRpbWUgYnkgfjEwJS4gSGVyZSdzIHRoZSBndGgyX2NvbmZpZyBleGFtcGxlLgoKCSAgICBCRUZPUkUJIEFGVEVSCiAgICByZWFsICAgIDBtMzEuNDQxcwkgMG0yNy44MzNzCiAgICB1c2VyICAgIDBtMjQuNzY2cwkgMG0yMy4wNDVzCiAgICBzeXMgICAgIDBtMTAuNDI1cwkgMG03LjQ2OHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IDAyNDA5ZjhjZjU0YzdjZDkxOTgxZjBkZmVjMTM1ZGJmMzg1ODA5MGMKQXV0aG9yOiBNYXJjZWwgTW9vbGVuYWFyIDxtYXJjZWxtQGp1bmlwZXIubmV0PgpEYXRlOglGcmkgRmViIDIyIDEwOjQ4OjA3IDIwMDggLTA4MDAKCiAgICBtYWtlIGRlZmluZTJtay5zZWQgd29yayBvbiBGcmVlQlNECgogICAgSW4gdGhlIHRocmVhZCAiWzEuMy4yLXJjMV0gTVBDODU0OENEUy9NUEM4NTU1Q0RTIGNvbmZpZ3MgZmFpbHMgdG8gbGluayIsCiAgICB0aGUgZGVmaW5lMm1rLnNlZCBzY3JpcHQgd2FzIGlkZW50aWZpZWQgYXMgdGhlIHNvdXJjZSBvZiB0aGUgbGluawogICAgZmFpbHVyZSBvbiBGcmVlQlNELiBUaGUgcHJvYmxlbSBpcyB0aGF0IHNlZCgxKSBkb2VzIG5vdCBhbHdheXMgc3VwcG9ydAogICAgdGhlICcrJyBvcGVyYXRvci4gSXQgaXNuJ3Qgb24gRnJlZUJTRC4gVGhlIGF0dGFjaCBwYXRjaCBpbXBsZW1lbnRzIHRoZQogICAgZXF1aXZhbGVudCwgdXNpbmcgdGhlICcqJyBvcGVyYXRvciBpbnN0ZWFkIGFuZCBzaG91bGQgd29yayBldmVyeXdoZXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmNlbCBNb29sZW5hYXIgPG1hcmNlbG1AanVuaXBlci5uZXQ+Cgpjb21taXQgZTUwODRhZjhkZWQ1ODQ1M2NkMDdlYzFhZjhiMGYyOWYzNDEyMmJiYwpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglGcmkgRmViIDIyIDE3OjIxOjMyIDIwMDggKzAxMDAKCiAgICBSZXBsYWNlIGRlcHJlY2F0ZWQgInJhbWRpc2siIHdpdGggInJhbWRpc2tfc2l6ZSIga2VybmVsIHBhcmFtZXRlci4KCiAgICBUaGUgTGludXggY29tbWl0IGZhYzhiMjA5YjEwODRiYzg1NzQ4YmQ1NGUxM2QwMGMxMjYyYjIyMGYgKCJSZW1vdmUKICAgIGZpbmFsIHRyYWNlcyBvZiBsb25nLWRlcHJlY2F0ZWQgInJhbWRpc2siIGtlcm5lbCBwYXJtIikgbWFrZXMgdGhlc2UKICAgIGNoYW5nZXMgbmVjY2Vzc2FyeS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KCmNvbW1pdCBkMDFiODQ3YzVjZDA3MDg5NWM0YmExNzhjODVjZDA2OGE5NWNmN2NkCkF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CkRhdGU6CVRodSBGZWIgMjEgMTM6NTg6MTYgMjAwOCAtMDUwMAoKICAgIExNNzUgYnVnIGZpeCBmb3IgbmVnYXRpdmUgdGVtcGVyYXR1cmVzCgogICAgV2hlbiB0aGUgTE03NSB0ZW1wZXJhdHVyZSBzZW5zb3IgbWVhc3VyZXMgYSB0ZW1wZXJhdHVyZSBiZWxvdyAwIEMsIHRoZQogICAgY3VycmVudCBkcml2ZXIgZG9lcyBub3QgcGVyZm9ybSBzaWduIGV4dGVuc2lvbiwgc28gdGhlIHJlc3VsdCByZXR1cm5lZCBpcwogICAgMjU2IEMgdG9vIGhpZ2guICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBwcm9ibGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgoKY29tbWl0IDVhOTEwYzIyNGIxM2U0MTNiZGE0MTkyMjM3OWFkZDZkNzVjMzJkYTMKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVGh1IEZlYiAyMSAxODozMzo0NSAyMDA4ICswMTAwCgogICAgSURTODI0NzogdXBkYXRlIE1BSU5UQUlORVIgZW50cnkuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgNzllYWMyYmZiNTkxZjJiMDI4ZWMxNzM1MDQ5ZGM5MWU0MzIwZGU0YQpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglUaHUgRmViIDIxIDE4OjMxOjE1IDIwMDggKzAxMDAKCiAgICBGaXggZGV2aWNlIHRyZWUgZm9yIG1nc3V2ZCBib2FyZC4KCiAgICBSZW5hbWUgdGhlICJzY2MiIG5vZGUgaW4gImV0aGVybmV0IiBmb3IgdGhlIG1nc3V2ZCBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAyZTcyMTA5NGE3MGE1MjIwNmFmMmUxYmYxMjA4ZDlhNzEzMWY2ZGFkCkF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgpEYXRlOglUaHUgRmViIDIxIDE0OjIzOjQyIDIwMDggKzAxMDAKCiAgICBsd21vbjU6IGVuYWJsZSBoYXJkd2FyZSB3YXRjaGRvZwoKICAgIFNvbWUgYm9hcmRzIChlLmcuIGx3bW9uNSkgbWF5IHVzZSByYXRoZXIgc21hbGwgd2F0Y2hkb2cgaW50ZXJ2YWxzLCBzbwogICAgY2F1c2luZyBpdCB0byByZWJvb3QgdGhlIGJvYXJkIGlmIFUtQm9vdCBkb2VzIGEgbG9uZyBidXN5LXdhaXQgd2l0aAogICAgdWRlbGF5KCkuIFRodXMsIGZvciB0aGVzZSBib2FyZHMgd2UgaGF2ZSB0byByZXN0YXJ0IFdEIG1vcmUKICAgIGZyZXF1ZW50bHkuCgogICAgVGhpcyBwYXRjaCBzcGxpdHMgdGhlIGJ1c3ktd2FpdCB1ZGVsYXkoKSBpbnRvIHNtYWxsZXIsIHByZWRlZmluZWQsCiAgICBpbnRlcnZhbHMsIHNvIHRoYXQgdGhlIHdhdGNoZG9nIHRpbWVyIG1heSBiZSByZXNldHRlZCB3aXRoIHRoZQogICAgY29uZmlndXJhYmxlIChDT05GSUdfV0RfUEVSSU9EKSBpbnRlcnZhbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgYmM3Nzg4MTI0N2VlNmY5NWQ3YTllYmM0OTlkMjZiOTZiYWUzOGM5ZApBdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KRGF0ZToJVGh1IEZlYiAyMSAxMjo1MjoyOSAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBTdXBwb3J0IGZvciBBVEkgUmFkZW9uIDkyMDAgY2FyZCBvbiBzZXF1b2lhCgogICAgQWRkcyBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgQVRJIFJhZGVvbiA5MjAwIGNhcmQKICAgIHN1cHBvcnQgdG8gc2VxdW9pYSBjb25maWcgZmlsZS4gSWYgQ09ORklHX1ZJREVPCiAgICBpcyBlbmFibGVkLCBURVhUX0JBU0Ugc2hvdWxkIGJlIGNoYW5nZWQgdG8gMHhGRkY4MDAwMC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgNWE5YWJjYzMxN2NmM2M4YTY5NTU5ZmY4MzA4MWY0ZTVkNzE5ZWRiNwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBGZWIgMTggMDg6MTg6MDcgMjAwOCAtMDYwMAoKICAgIFJlbW92ZSBkdXBsaWNhdGUgZGVmaW5lcyBmb3IgQVJSQVlfU0laRQoKICAgIEEgZmV3IGR1cGxpY2F0ZSBvZiB0aGUgQVJSQVlfU0laRSBtYWNybyBzbmVha2VkIGluIHNpbmNlIHdlIHB1dAogICAgdGhlIGRlZmluZSBpbiBjb21tb24uaC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDgxZDkzZTVjNGI4M2Q4YjZkY2VlNjlkZTZmNGExNGNjZjZmNzExNGEKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gRmViIDE4IDA4OjA5OjM3IDIwMDggLTA2MDAKCiAgICBwcGM6IEFsbG93IGJvYXJkcyB0byBzcGVjaWZ5IGVmZmVjdGl2ZSBhbW91bnQgb2YgbWVtb3J5CgogICAgRm9yIGhpc3RvcmljYWwgcmVhc29ucyB3ZSBsaW1pdGVkIHRoZSBzdGFjayB0byAyNTZNIGJlY2F1c2Ugc29tZSBib2FyZHMKICAgIGNvdWxkIG9ubHkgbWFwIHRoYXQgbXVjaCB2aWEgQkFUUy4JSG93ZXZlciBuZXdlciBib2FyZHMgYXJlIGNhcGFibGUgb2YKICAgIG1hcHBpbmcgbW9yZSBtZW1vcnkgKGZvciBleGFtcGxlIDg1eHggaXMgY2FwYWJsZSBvZiBkb2luZyB1cCB0byAyRykuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA3NTVjMzVmNTRiYTdlYjc2ODdhYTc5MzVlMDRhMDJhMDFlZjFiMjdiCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gRmViIDE4IDA1OjI0OjEzIDIwMDggLTA1MDAKCiAgICBpbmNsdWRlIGF1dG9jb25mLm1rIGJlZm9yZSBhbnkgb3RoZXIgLm1rIGZpbGVzCgogICAgVGhpcyBidW1wcyB0aGUgYXV0b2NvbmYubWsgaW5jbHVkZSBzdGVwIGFib3ZlIGJvYXJkL2NwdS9hcmNoL2V0Yy4uLiBzbyB0aGF0CiAgICB0aG9zZSAubWsgZmlsZXMgY2FuIGhhdmUgbWFrZSBpZiBzdGF0ZW1lbnRzIGJhc2VkIG9uIHRoZSBjdXJyZW50IGNvbmZpZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMTZmZTc3NzUyZWVlMDk5YjlmYjYxZWQ3MzQ2MGU1MWNjOTRiMzdiYQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIEZlYiAxOCAwNToxMDowNyAyMDA4IC0wNTAwCgogICAgZXJyb3IgY2hlY2sgYXV0b2NvbmYubWsgZ2VuZXJhdGlvbgoKICAgIElmIGFueSBvZiB0aGUgc3RlcHMgZm9yIGdlbmVyYXRpbmcgYXV0b2NvbmYubWsgZmFpbCBjdXJyZW50bHksIHRoZXkgZ28KICAgIHVubm90aWNlZC4JVG8gZml4LCB3ZSBjYW4gc2ltcGx5IGFkZCAnc2V0IC1lJyB0byB0aGUgbG9uZyBsaXN0IG9mIGNvbW1hbmRzLgogICAgVGhpcyBpcyBzaW1wbGVyIGFuZCBtb3JlIHJvYnVzdCB0aGFuIHBsYWNpbmcgJ3x8IGV4aXQgJCQ/JyBhZnRlciBldmVyeSBsaW5lLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAwMTk4OTVhOGRlZTcxYTlmMDBkYTA1YzAzZTM3OWY0NWQ1ODFiMGZlCkF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CU1vbiBGZWIgMTggMDg6MDM6NTEgMjAwOCArMDEwMAoKICAgIEZpeCBidWcgaW4gZGVwZW5kZW5jeSBjaGVja2luZwoKICAgIEJ5IGFkZGluZyBWRVJTSU9OX0ZJTEUgdG8gdGhlIFBIT05ZIHRhcmdldHMgdGhlIHNjcmlwdAogICAgL3Rvb2xzL3NldGxvY2FsdmVyc2lvbiBpcyBhbHdheXMgY2FsbGVkIGFuZCB2ZXJzaW9uX2F1dG9nZW5lcmF0ZWQuaAogICAgaXMgcmVwbGFjZWQgb25seSBpZiB0aGUgc2NyaXB0IGZpbmQgYSBtb2RpZmllZCBzb3VyY2UgZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KCmNvbW1pdCA5OGJhMTQ0Y2NjOTEyZWVlOTBkZDQyNjk5ZjAyM2M0OTdjZTc3NGM2CkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+CkRhdGU6CU1vbiBGZWIgMTggMTQ6MzU6NDMgMjAwOCArMDkwMAoKICAgIEZpeCBHUE1DIENTMiBtZW1vcnkgc2V0dXAgYXQgYXBvbGxvbgoKICAgIEl0IGRpc2FibGVzIHRoZSBjdXJyZW50IG1hcCBmaXJzdAoKICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Cgpjb21taXQgZTg0NWUwN2UxZTZlNjRmNDBlMzU2ODg0MzlkM2NkY2YwMWNmZmY0ZgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBGZWIgMTcgMjM6NTI6NDYgMjAwOCArMDEwMAoKICAgIHVsaTUyNng6IEZpeCBtdWx0aXBsZSBkaWZmZXIgaW4gc2lnbmVkbmVzcyBhbmQgcGFyZW50aGVzZXMgYXJvdW5kIGNvbXBhcmlzb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGJlZWNjZjdhNWRjNTQxNWMyMDJlMDEzMmEzM2M1OGZjMzE2YzJhNjIKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gRmViIDE3IDE2OjU4OjA0IDIwMDggKzAxMDAKCiAgICBNSVBTOiBGaXggQ0ZHX05PX0ZMQVNIIHN1cHBvcnQKCiAgICAtIEZpeCBmbGFzaF9pbml0IGNhbGwgd2hlbiBDRkdfTk9fRkxBU0ggaXMgdXNlZAogICAgLSBSZW1vdmUgbm8gbW9yZSBuZWVkZWQgZmxhc2guYyBmb3IgcWVtdS1taXBzCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBlZGZlZDFkOTFkZjJiMjY3MGE4MTJjYTlkMWExZjlmYWFlN2RiYTQ3CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgRmViIDE2IDAyOjQwOjE4IDIwMDggLTA1MDAKCiAgICBlYXN5bG9nbzogY2xlYW4gdXAgc29tZSBtb3JlIGFuZCBhZGQgLXIgKHJnYikgc3VwcG9ydAoKICAgIE1pY2hhZWwgSGVubmVyaWNoIGFkZGVkIHN1cHBvcnQgZm9yIG91dHB1dHRpbmcgYW4gaW1hZ2UgaW4gUkdCIGZvcm1hdCByYXRoZXIKICAgIHRoYW4gZm9yY2luZyBZVVlWIGFsbCB0aGUgdGltZS4gIFRoaXMgbWFrZXMgb2J2aW91cyBzZW5zZSBpZiB0aGUgZGlzcGxheSB5b3UKICAgIGhhdmUgdGFrZXMgUkdCIGlucHV0IHJhdGhlciB0aGFuIFlVWVYuCgogICAgUmF0aGVyIHRoYW4gaGFjayBpbiBzdXBwb3J0IGZvciBvcHRpb25zLCBJJ3ZlIGNvbnZlcnRlZCBpdCB0byB1c2UgZ2V0b3B0IGFuZAogICAgY2xlYW5lZCB1cCB0aGUgYXJndW1lbnQgcGFyc2luZyBpbiB0aGUgcHJvY2Vzcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEhlbm5lcmljaCA8bWljaGFlbC5oZW5uZXJpY2hAYW5hbG9nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBmNjVjOTgxMjljY2FkYTNmN2NhZjk3ZDgwMzk1YTk1Yjg0ZTkxMWRlCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgRmViIDE2IDAyOjEyOjM3IDIwMDggLTA1MDAKCiAgICBNYWtlZmlsZTogYWRkIHRhcmdldCBmb3IgJChMRFNDUklQVCkKCiAgICBJZiB0aGUgJChMRFNDUklQVCkgZG9lcyBub3QgZXhpc3QgKG5vcm1hbGx5IGl0J3MgYm9hcmQvJChCT0FSRCkvdS1ib290LmxkcyksCiAgICB0aGVuIGNoYW5nZSBpbnRvIHRoZSBib2FyZCBkaXJlY3RvcnkgYW5kIHRyeSBhbmQgY3JlYXRlIGl0LiAgVGhpcyBhbGxvd3MgeW91CiAgICB0byBnZW5lcmF0ZSB0aGUgbGlua2VyIHNjcmlwdCBvbiB0aGUgZmx5IGJhc2VkIHVwb24gYm9hcmQgZGVmaW5lcyAobGlrZSB0aGUKICAgIEJsYWNrZmluIGJvYXJkcyBkbykuCgogICAgVGhlcmUgc2hvdWxkIGJlIG5vIHJlZ3Jlc3Npb25zIGR1ZSB0byB0aGlzIGNoYW5nZSBhcyB0aGUgbm9ybWFsIGNhc2UgaXMgdG8KICAgIGFscmVhZHkgaGF2ZSBhIHUtYm9vdC5sZHMgZmlsZS4gIElmIHRoYXQncyB0aGUgY2FzZSwgdGhlbiB0aGVyZSdzIG5vdGhpbmcgdG8KICAgIGdlbmVyYXRlLCBhbmQgc28gbWFrZSB3aWxsIGFsd2F5cyBleGl0LiAgVGhlIGZpeCBoZXJlIGlzIHRoYXQgaWYgdGhlIGxpbmtlcgogICAgc2NyaXB0IGRvZXMgbm90IGV4aXN0LCB0aGUgaW1wbGljaXQgcnVsZXMgdGFrZSBvdmVyIGFuZCBhdHRlbXB0IHRvIGd1ZXNzIGhvdwogICAgdG8gZ2VuZXJhdGUgdGhlIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDU1ODNjYmY3MzY0NzRlZjc1NGUxMjhhNTRmYjc4NjMyZjU3YjQ4ZmQKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgRmViIDIxIDE3OjI3OjQ5IDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gRml4IGVycm9uZW91cyB1c2Ugb2YgaW1hZ2VfZ2V0X21hZ2ljKCkgaW4gZmRjL3VzYiBjbWRzCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCAyMjQyZjUzNjk4MjJiYzc3ODBkYjk1YzQ3OTg1YmI0MDhlYTkxNTdiCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IEZlYiAyMSAxNzoyNzo0MSAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIFJlbmFtZSBhbmQgbW92ZSBwcmludF9pbWFnZV9oZHIoKSByb3V0aW5lCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBmNTA0MzNkNjcwZWMyZWU5ZTk2YWJhYzY3Y2RjNmU1ZTA2MWE4MTBkCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IEZlYiAyMSAxNzoyMDoyMCAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIEFkZCBmaXRfcGFyc2VfY29uZigpIGFuZCBmaXRfcGFyc2Vfc3ViaW1hZ2UoKSByb3V0aW5lcwoKICAgIEludHJvZHVjaW5nIHJvdXRpbmVzIGZvciBwYXJzaW5nIG5ldyB1SW1hZ2UgZm9ybWF0IGJvb3RtIGFyZ3VtZW50czoKICAgIFs8YWRkcj5dIzxjb25mPgkJLSBjb25maWd1cmF0aW9uIHNwZWNpZmljYXRpb24KICAgIFs8YWRkcj5dOjxzdWJpbWc+CS0gc3ViaW1hZ2Ugc3BlY2lmaWNhdGlvbgoKICAgIE5ldyBmb3JtYXQgaW1hZ2VzIGNhbiBjb250YWluIG11bHRpcGxlIHN1YmltYWdlcyBvZiB0aGUgc2FtZSB0eXBlLiBGb3IgZXhhbXBsZQogICAgYSBzaW5nbGUgbmV3IGZvcm1hdCBpbWFnZSBmaWxlIGNhbiBjb250YWluIHRocmVlIGtlcm5lbHMsIHR3byByYW1kaXNrcyBhbmQgYQogICAgY291cGxlIG9mIEZEVCBibG9icy4gU3ViaW1hZ2UgYW5kIGNvbmZpZ3VyYXRpb24gc3BlY2lmaWNhdGlvbnMgYXJlIGV4dGVuc2lvbnMKICAgIHRvIGJvb3RtIChhbmQgb3RoZXIgaW1hZ2UtcmVsYXRlZCBjb21tYW5kcykgYXJndW1lbnRzJyBzeW50YXggdGhhdCBhbGxvdyB0bwogICAgc3BlY2lmeSB3aGljaCBwYXJ0aWN1bGFyIHN1YmltYWdlIHNob3VsZCBiZSBvcGVyYXRlZCBvbi4KCiAgICBTdWJpbWFnZSBzcGVjaWZpY2F0aW9uIGlzIHVzZWQgdG8gZGVub3RlIGEgcGFydGljdWxhciBzdWJpbWFnZS4gQ29uZmlndXJhdGlvbnMKICAgIGFyZSBhIGJpdCBtb3JlIGNvbXBsZXggLS0gdGhleSBhcmUgdXNlZCB0byBkZWZpbmUgYSBwYXJ0aWN1YWxyIGJvb3Rpbmcgc2V0dXAsCiAgICBmb3IgZXhhbXBsZSBhIChrZXJuZWwsIGZkdCBibG9iKSBwYWlyLCBvciBhIChrZXJuZWwsIHJhbWRpc2ssIGZkdCBibG9iKSB0dXBsZSwKICAgIGV0Yy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IGZmZjg4OGExOTk3ZmY3ZGU5YjI5ZTI0MDUwZmM0YTBmZDQwM2JhMTYKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgRmViIDIxIDE3OjIwOjE5IDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gQWRkIGdlbl9nZXRfaW1hZ2UoKSByb3V0aW5lCgogICAgVGhpcyByb3V0aW5lIGFzc3VyZXMgdGhhdCBpbWFnZSAod2hldGhlciBsZWdhY3kgb3IgRklUKSBpcyBub3QKICAgIGluIGEgc3BlY2lhbCBkYXRhZmxhc2ggc3RvcmFnZS4KCiAgICBJZiBpbWFnZSBhZGRyZXNzIGlzIGEgZGF0YWZsYXNoIGFkZHJlc3MgaW1hZ2UgaXMgbW92ZWQgdG8gc3lzdGVtIFJBTS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IDc1ZDNlOGZiZDkzYzE0ZDk5MjlkMDI0Yzc1YWYyZDc0MmM3NmRiNzAKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgRmViIDIxIDE3OjIwOjE4IDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gUHVsbCBpbiBsaWJmZHQgaWYgQ09ORklHX0ZJVCBpcyBlbmFibGVkCgogICAgTmV3IHVJbWFnZSBmb3JtYXQgKEZsYXR0ZW5lZCBJbWFnZSBUcmVlKSByZXF1aXJlcyBsaWJmZHQKICAgIGZ1bmN0aW9uYWxpdHksIHByaW50IG91dCBlcnJvciBtZXNzYWdlIGlmIENPTkZJR19PRl9MSUJGRFQKICAgIGlzIG5vdCBkZWZpbmVkLgoKICAgIE5ldyB1SW1hZ2Ugc3VwcG9ydCBpcyBlbmFibGVkIGJ5IGRlZmluaW5nIENPTkZJR19GSVQgKGFuZCBDT05GSUdfT0ZfTElCRkRUKS4KICAgIFRoaXMgY29tbWl0IHR1cm5zIGl0IG9uIGJ5IGRlZmF1bHQuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCAxYmE2MzlkYTU2MDRhNjRiM2VkODg0YTJjYmIxYzU0MTRhOWZhNzI4CkF1dGhvcjogTWljaGFlbCBTY2h3aW5nZW4gPG1pY2hhZWxAc2Nod2luZ2VuLm9yZz4KRGF0ZToJTW9uIEZlYiAxOCAyMzoxNjozNSAyMDA4ICswMTAwCgogICAgQ0ZJOiBEbyBub3QgdXNlIHVuaW5pdGlhbGl6ZWQgY21kX3Jlc2V0CgogICAgRG8gbm90IHVzZSB1bmluaXRpYWxpemVkIGNtZF9yZXNldDsgaXNzdWUgYm90aCBBTUQgYW5kIEludGVsIHJlc2V0CiAgICBjb21tYW5kcyBpbnN0ZWFkCgogICAgRnJvbSBhIHNob3J0IHRlc3QsIGl0IGxvb2tzIGxpa2UgQU1ELXN0eWxlIGZsYXNoIHJvbXMgdHJlYXQgKmFueSogdW5rbm93bgogICAgY29tbWFuZCB3cml0ZSBhcyBhIHJlc2V0LCBhdCBsZWFzdCB3aGVuIGluIENGSSBRdWVyeSBtb2RlLCBzbyBpc3N1aW5nIHRoZQogICAgSW50ZWwgcmVzZXQgY29tbWFuZCB0byBBTUQtc3R5bGUgZmxhc2hzIHNlZW1zIHNhZmUgKGZyb20gdGhlIHNtYWxsIHNhbXBsZSBJCiAgICBoYXZlKSwgcGx1cyB0aGUgMy1jeWNsZSBtYWdpYyBzZXF1ZW5jZSBzaG91bGQga2ljayB0aGUgc3RhdGUgbWFjaGluZSBpbnRvCiAgICB0aGUgcmlnaHQgc3RhdGUgZXZlbiB3aXRob3V0IGEgcmVzZXQgY29tbWFuZC4gU2luY2UgdGhlIEFNRC1zdHlsZSBmbGFzaHMKICAgIHJlcXVpcmUgdGhlIHVubG9jayBzZXF1ZW5jZSBmb3IgcmVhbCBvcGVyYXRpb24sIEkgY2hvc2UgdG8gdHJ5IHRoZSBBTUQgcmVzZXQKICAgIGNvbW1hbmQgZmlyc3QsIHNvIHRoYXQgSW50ZWwgZmxhc2hzIGRvIG5vIHNlZSBhbiBpbnZhbGlkIGNvbW1hbmQgcHJpb3IgdG8KICAgIHRoZSBDRkkgcXVlcnkuCgogICAgSSBoYXZlIHRlc3RlZCB0aGUgcGF0Y2ggb24gQU0yOUxWMzIwLXN0eWxlIGZsYXNocyBmcm9tIEZ1aml0c3UgYW5kIE1hY3Jvbml4LAogICAgcGx1cyBJbnRlbCBTdHJhdGFGbGFzaC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFNjaHdpbmdlbiA8bWljaGFlbEBzY2h3aW5nZW4ub3JnPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGU3YTg1ZjI2ODMwYzlmMmU3ODUwNjQyMWMyZDUxOWEyOTY1YmM3YTEKQXV0aG9yOiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgRmViIDIxIDExOjU2OjQ0IDIwMDggKzAxMDAKCiAgICBBUEk6IEFkZCAoYykgYW5kIGxpY2Vuc2luZyBub3RpY2UgdG8gdGhlIHB1YmxpYyBBUEkgaGVhZGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Cgpjb21taXQgOTI4ZDFkNzdmODYyM2MxMjBkODc2M2UyMGUxY2E1OGRmOWM1YzRjNgpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KRGF0ZToJVGh1IEZlYiAyMSAxMTowNjowNyAyMDA4ICswMTAwCgogICAgRml4IENQVSBQT1NUIHRlc3QgZmFpbHVyZQoKICAgIFRoZSBDUFUgUE9TVCB0ZXN0IGNvZGUgKHJ1biBmcm9tIGNwdV9wb3N0X2V4ZWNfMzEoKSkgZG9lc24ndCBmb2xsb3cgdGhlCiAgICBBQkkgY2FyZWZ1bGx5LCBhdCBsZWFzdCB0aGUgQ1IzLCBDUjQsIGFuZCBDUjUgZmllbGRzIG9mIENSIGFyZSBjbG9iYmVyZWQKICAgIGJ5IGl0LiBUaGUgZ2NjLTQuMiB3aXRoIGl0cyBtb3JlIGFnZ3Jlc3NpdmUgb3B0aW1pemF0aW9uIGV4cG9zZXMgdGhpcyBmYWN0LgogICAgVGhpcyBwYXRjaCBqdXN0IHNhdmVzIHRoZSBDUiB2YWx1ZSBiZWZvcmUgcnVubmluZyB0aGUgdGVzdCBjb2RlLCBzbyBhbGxvd2luZwogICAgaXQgdG8gZG8gYW55dGhpbmcgaXQgd2FudHMgd2l0aCBDUi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEbWl0cnkgUmFraGNoZXYgPHJkYUBlbWNyYWZ0LmNvbT4KICAgIEFja2VkLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CiAgICAtLQoKY29tbWl0IGQ1OTA4YjA5Mzk1NTQxNWYzZDM0MDcwNjM3OGI5OTFmOTExYWY2NzEKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgRmViIDIwIDE1OjI2OjUxIDIwMDggLTA2MDAKCiAgICA4NjEwSFBDRDogRG9jdW1lbnQgdGhlIGZsYXNoYmFuayBzZWxlY3Rpb24gc3dpdGNoZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhNTUxY2VlOTlhZDFkMWRhMjBmZDIzYWQyNjVkZTQ3NDQ4ODUyZjU2CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEZlYiAyMCAxNDoyMjoyNiAyMDA4IC0wNjAwCgogICAgODZ4eDogRml4IEdVUiBQQ0kgY29uZmlnIHJlZ2lzdGVycyBwcm9wZXJseS4KCiAgICBCYWNrIGluIGNvbW1pdCA5NzVhMDgzYTVlZjc4NWM0MTRiMzVmOWM1YjhhZTI1YjI2YjQxNTI0IHdoZXJlCiAgICBJIHRyaWVkIHRvICI4NjEwSFBDRDogRml4IHR5cG9zIGluIHR3byBQQ0kgc2V0dXAgcmVnaXN0ZXJzIiwgSQogICAgYm90Y2hlZCBpdCBkdWUgdG8gbm90IHJlYWxpemluZyB0aGF0IDg2MTAgYW5kIDg2NDEgaGFkIGRpZmZlcmVudAogICAgR2xvYmFsIFV0aWxpdHkgUmVnaXN0ZXIgZGVmaW50aW9ucywgb25lIG9mIHdoaWNoIHdhcyBsaWtlIDg1eHgsCiAgICBhbmQgdGhlIG90aGVyIHdhc24ndC4gIENvcnJlY3QgdGhpcyBwcm9ibGVtIGJ5IGludHJvZHVjaW5nIHR3bwogICAgc3ltYm9scywgb25lIGZvciBlYWNoIDg2eHggU29DLCBidXQgbmVpdGhlciBvZiB3aGljaCBpcyBuYW1lZAogICAgYW55dGhpbmcgbGlrZSA4NXh4LgoKICAgIE15IGJhZC4gIExvdmVseSBXZWRuZXNkYXkgd2l0aCBnaXQgYmlzZWN0LglZb3Uga25vdy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGNiMDZlYjk2MWJkZmZjODcyOGIzOGMyNDI0NzNkODAyZTgzYWIyYjQKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgRmViIDIwIDEyOjI0OjExIDIwMDggLTA2MDAKCiAgICA4NjEwSFBDRDogRG9uJ3QgdXNlIFZJREVPL0NGQl9DT05TT0xFIGJ5IGRlZmF1bHQuCgogICAgV2l0aG91dCBhbiBhY3R1YWwgc3VwcG9ydGVkIHZpZGVvIGNhcmQgaG9va2VkIHVwLCBlbmFibGluZwogICAgdGhlIENPTkZJR19WSURFTyBieSBkZWZhdWx0IGp1c3QgbWFrZXMgaXQgbG9vayBicm9rZW4gYnkKICAgIHJvdXRpbmcgYWxsIGNvbnNvbGUgb3V0cHV0IHRvIHRoZSB2aWRlbyBjYXJkLiAgIERvbid0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNGQyNjRlZmY0MzEyZjIzMDc3NmI5MTNlZGFkZTdjZWI3NWYxYjFlMApBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEphbiAzMCAxNTowODoxNSAyMDA4IC0wNjAwCgogICAgQ29sZEZpcmU6IEZpeCBtaXNzaW5nIGNvZGUgZmxhc2ggc2l6ZSBmb3IgTTU0ODVFVkIKCiAgICBTaWduZWQtb2ZmLWJ5OiBKYW1lcyBNYWhhbiA8a21haGFuQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGM1NGY5MjYzZTRlMTFlMzRiMWU3MGMxNjBiYzQ2N2VmMWQ4ZWM1OWQKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKYW4gMzAgMTU6MDQ6NDIgMjAwOCAtMDYwMAoKICAgIENvbGRGaXJlOiBGaXggNTI4MiBhbmQgNTI3MSBpbnRlcnJ1cHQgbWFzayBiaXQKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk3NWEwODNhNWVmNzg1YzQxNGIzNWY5YzViOGFlMjViMjZiNDE1MjQKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgRmViIDE5IDEyOjMxOjA4IDIwMDggLTA2MDAKCiAgICA4NjEwSFBDRDogRml4IHR5cG9zIGluIHR3byBQQ0kgc2V0dXAgcmVnaXN0ZXJzLgoKICAgIFRoZSB0d28gc3ltYm9scyBNUEM4Nnh4X1BPUkRFVlNSX0lPX1NFTCBhbmQgTVBDODZ4eF9QT1JCTVNSX0hBCiAgICB3ZXJlIGVycm9uZW91c2x5IHByZXNlbnQgYXMgODV4eCBuYW1lcyBhbmQgdmFsdWVzLCBsZWZ0b3ZlciBmcm9tCiAgICB0aGUgY2xvbmUgd2Fycy4gIEZpeCB0aGlzIGJ5IHJlbW92aW5nIHRoZSA4NXh4IGNydWZ0IGZyb20gdGhlCiAgICA4Nnh4IGNvZGViYXNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTNmNTQzM2Y3MDBkNGRhOWY2ZmRmMmE0YmI4MDMxMDEzM2E3YzE3MApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBGZWIgMTggMTQ6MDE6NTYgMjAwOCAtMDYwMAoKICAgIDg2eHg6IENvbnZlcnQgc2JjODY0MWQgdG8gdXNlIGxpYmZkdC4KCiAgICBUaGlzIGlzIHRoZSBwcm9wZXIgZml4IGZvciBhIG1pc3NpbmcgY2xvc2luZyBicmFjZSBpbiB0aGUgZnVuY3Rpb24KICAgIGZ0X2NwdV9zZXR1cCgpIG5vdGljZWQgYnkgam9lLmhhbW1hbiA8YXQ+IGVtYmVkZGVkc3BlY2lhbHRpZXMuY29tLgogICAgVGhlIGZ0X2NwdV9zZXR1cCgpIGZ1bmN0aW9uIGluIG1wYzg2NDFocGNuLmMgc2hvdWxkIGhhdmUgYmVlbgogICAgcmVtb3ZlZCBlYXJsaWVyIGFzIGl0IHdhcyB1bmRlciB0aGUgb2Jzb2xldGUgQ09ORklHX09GX0ZMQVRfVFJFRSwKICAgIGJ1dCB3YXMgbWlzc2VkLiAgT25seSwgdGhlIHNiYzg2NDFkIHdhcyBub21pbmFsbHkgc3RpbGwgdXNpbmcgaXQuCiAgICBJdCBhbGwgZ290IHJpcHBlZCBvdXQsIGFuZCB0aGUgZnVuY2FsaXR5IHRoYXQgd2FzIGluIGZ0X2JvYXJkX3NldHVwKCkKICAgIHdhcyByZWZhY3RvcmVkIHRvIHJlbW92ZSB0aGUgQ1BVIHBvcnRpb25zIGludG8gdGhlIG5ldyBmaWxlCiAgICBjcHUvbXBjODZ4eC9mZHQuYyBpbnN0ZWFkLglNYWtlIHNiYzg2NDFkIHVzZSB0aGlzIG5vdy4KCiAgICBCYXNlZCBsb29zZWx5IG9uIGFuIG9yaWdpbmFsIHBhdGNoIGZyb20gam9lLmhhbW1hbkBlbWJlZGRlZHNwZWNpYWx0aWVzLmNvbQoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMDRlZmRkYzg3YzUwYzg0Zjg1ZGFkNWMzMzFjNjM0YTZjZTgzMGE4MwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBGZWIgMTcgMjM6MzU6MzEgMjAwOCArMDEwMAoKICAgIG1wYzg2eHg6IEZpeCB1bnVzZWQgdmFyaWFibGUgJ2NvbmZpZycgYW5kICdpbW1hcCcKCiAgICBhbmQgcmVtb3ZlIHVzZWxlc3MgQ09ORklHX0REUl9JTlRFUkxFQVZFCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA4M2QxYjM4NzY2OTVjNGYyMWZhZmYyYjczMWQ5ZWY4M2YzOGVkMjA4CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIEZlYiAxNyAyMzowMzozNiAyMDA4ICswMTAwCgogICAgbXBjODZ4eDogRml4IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9ucyAnaW5pdF9sYXdzJyBhbmQgJ2Rpc2FibGVfbGF3JwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYjZmMjljODRjMjA4YTA5MWY5NWExMGNiYzk4NTJkNzI5NjU5YmEyMApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBGZWIgMTcgMTQ6MTU6MzEgMjAwOCArMDEwMAoKICAgIHMzYzI0eDA6IEZpeCB1bnVzZWQgdmFyaWFibGUgJ2knIGluIGZ1bmN0aW9uICdzZXJpYWxfaW5pdF9kZXYnCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAwOTM3YjhkODY5ZmRiNDJkNmFkNGZlMzEyOTU4NjM5YmQ2MmM5NzNmCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIEZlYiAxNyAxNDoxNTozMiAyMDA4ICswMTAwCgogICAgcHhhOiBmaXggYXNzaWdubWVudCBmcm9tIGluY29tcGF0aWJsZSBwb2ludGVyIHR5cGUKCiAgICBmaXggbW1jX2JyZWFkIGZ1bmN0aW9uIHByb3RvdHlwZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNjRkNzkyMDYzZmZmOTBiODExODE3OWIwOTJmZWVlMDlmZTVjYWUxMwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBGZWIgMTcgMTQ6MTU6MzAgMjAwOCArMDEwMAoKICAgIGF0OTFjYXA5YWRrOiBmaXggaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ2V0aF9pbml0JwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMzc1YzQzNTNkYjhmOTAwZjdlYzc3MmUyNmZhYjExNmVjMDBmN2QzYQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBGZWIgMTcgMTU6NDM6NDQgMjAwOCArMDEwMAoKICAgIFJlbW92ZSBmaWxlcyBhZGRlZCBieSBtaXN0YWtlLCB1cGRhdGUgQ0hBTkdFTE9HLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYjczODY1NGQzYzg0YTMwZjJiZmQ5YThkNzY1MmZmMjA4MDdjODkwYwpBdXRob3I6IE1pa2UgTnVzcyA8bWlrZUB0ZXJhc2NhbGEuY29tPgpEYXRlOglXZWQgRmViIDYgMTE6MTA6MTEgMjAwOCAtMDUwMAoKICAgIFBQQzQ0MEVQeDogT3B0aW9uYWxseSBlbmFibGUgc2Vjb25kIEkyQyBidXMKCiAgICBUaGUgb3B0aW9uIENPTkZJR19JMkNfTVVMVElfQlVTIGRvZXMgbm90IGhhdmUgYW55IGVmZmVjdCBvbiBTZXF1b2lhLCB0aGUKICAgIFBQQzQ0MEVQeCByZWZlcmVuY2UgcGxhdGZvcm0sIGJlY2F1c2UgSUlDMSBpcyBuZXZlciBlbmFibGVkLiBBZGQgU2VxdW9pYSBib2FyZAogICAgY29kZSB0byB0dXJuIG9uIElJQzEgaWYgQ09ORklHX0kyQ19NVUxUSV9CVVMgaXMgc2VsZWN0ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBOdXNzIDxtaWtlQHRlcmFzY2FsYS5jb20+CiAgICBDYzogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGVmNWI0ZjIyMWMyMmQwNTc3MDg3ODUxMzk1MTc0NWYyMzZiNWI0M2YKQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgpEYXRlOglUdWUgRmViIDUgMTA6MjY6NDQgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogSENVNC81LiBDbGVhbnVwIGNvbmZpZ3MKCiAgICAtIGhjdTQuaDogUmVtb3ZlZCBkZWZpbmUgb2YgQ09ORklHX1BQQzQwNUdQcgogICAgLSBDb3JyZWN0ZWQgcGh5IGFkZHJlc3NlcwogICAgLSBGaXggYm9vdCB2YXJpYWJsZXMKICAgIC0gUmVzcGVjdCBsaW5lIGxlbmd0aCBvZiA4MCBjaGFycwoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgNzQ5NzMxMjZkMWJlNjNhYzc1YmRjMTkyZjQ2MjM0ZGNhM2E3YzQyMQpBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+CkRhdGU6CVR1ZSBGZWIgNSAxMTozMToyOCAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBIQ1U0LzUuIENsZWFudXBzCgogICAgLSBGaXggc29tZSBjb2Rpbmcgc3R5bGUgdmlvbGF0aW9ucy4KICAgIC0gVXNlIGluL291dF91MTYvMzIgd2hlcmUgYXBwcm9wcmlhdGUuCiAgICAtIFVzZSByZWdpc3RlciBuYW1lcyBmcm9tIHBwYzQwNS5oLgogICAgLSBGaXggdHJhY2UgdXNlYWdlIGZvciBMYXV0ZXJiYWNoLgogICAgLSBSZW1vdmUgb2Jzb2xldGUgZ2VuZXJhdGlvbiBIQ1UyLgogICAgLSBSZW5hbWVkIGZpeGVkX2hjdTRfc2RyYW0gdG8gaW5pdF9wcGM0MDVfc2RyYW0uCgogICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KCmNvbW1pdCA4Y2MxMGQwNmI4MzNlZDkxN2ExOWFkMzU4YzhlYmJlZDhiYzE5NTU1CkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KRGF0ZToJVHVlIEZlYiA1IDEwOjI2OjQxIDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IFBQQzQwNUdQciBmaXggbWlzc2luZyByZWdpc3RlciBkZWZpbml0aW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgMjE0Mzk4ZDljYjIyMjY4ZDlkNGY3NTYzMzU5ZWRjYTBmNzgyOTdhMgpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgpEYXRlOglGcmkgSmFuIDE4IDIxOjQ5OjA1IDIwMDggLTA1MDAKCiAgICBwcGM0eHg6IEJlYXV0aWZ5IGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIFNlcXVvaWEgYW5kIEtvcmF0IGJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgoKY29tbWl0IDMwYzZhMjQxZTg4NDk5ZjUzNmU4NmQzMjU3NTllMjliYTAwZmY2N2YKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CUZyaSBGZWIgMTUgMjA6MDk6MDEgMjAwOCArMDEwMAoKICAgIFdpcGUgb3V0IGFzc2VtYmxlciB3YXJuaW5ncyB3aGlsZSBjb21waWxpbmcgeDg2IGJpb3NlbXUKCiAgICBUaGlzIHBhdGNoIHRyaWVzIHRvIGdldCByaWQgb2Ygc29tZSBhc3NlbWJsZXIgd2FybmluZ3MgYWJvdXQKICAgIGNoYW5nZWQgLmdvdDIgc2VjdGlvbiB0eXBlIHdoaWxlIGNvbXBpbGluZyB4ODYgYmlvcyBlbXVsYXRvcgogICAgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgNjdhNDM4OWUzOWFkODUzZDY1YjcyZTJiN2NhZDE1YzdlODI5MTE0NwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBGZWIgMTUgMDA6NTc6MDkgMjAwOCArMDEwMAoKICAgIFByZXBhcmUgdjEuMy4yLXJjMSByZWxlYXNlIGNhbmRpZGF0ZQoKY29tbWl0IGYzM2U5NjUzYzljMDk4Njg5OTVkNzg4NTExZDU3Mzc3MWMyMDlmZTUKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CUZyaSBGZWIgMTUgMDA6MTM6MjAgMjAwOCArMDEwMAoKICAgIEZpeCBjb21waWxlIHdhcm5pbmcgb24gbGliX3BwYy9ib2FyZC5jCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IGU1YzZmOWY4YmVjNGRmZjk2MDM0MTkxNjFlM2ExNWNjOGFkNWQ1ZjQKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CVRodSBGZWIgMTQgMTg6MjI6MDQgMjAwOCArMDEwMAoKICAgIEFkZCBSYWRlb24gTW9iaWxpdHkgOTIwMCBwY2kgZGV2aWNlIGlkIHRvIHRoZSByYWRlb24gZHJpdmVyCgogICAgVGhpcyBwYXRjaCBleHRlbmRzIFBDSSBkZXZpY2UgaWQgdGFibGUgb2YgdGhlCiAgICByYWRlb24gZHJpdmVyIHNvIHRoYXQgdGhlIGRyaXZlciB3aWxsIGFsc28gc3VwcG9ydAogICAgUmFkZW9uIE1vYmlsaXR5IDkyMDAgKE05KykgYmFzZWQgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCAxYjg2MDdlMWY3MTQzNTQ4YzYwNjJjMjgzNzE0NDllYzY5NTg4YzAwCkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglUaHUgRmViIDE0IDE4OjE5OjUwIDIwMDggKzAxMDAKCiAgICBFeHRlbmQgQVRJIFJhZGVvbiBkcml2ZXIgdG8gc3VwcG9ydCBtb3JlIHZpZGVvIG1vZGVzCgogICAgQWRkcyBBVEkgUmFkZW9uIDkyMDAgc3VwcG9ydCBmb3IgMTI4MHgxMDI0LCAxMDI0eDc2OCwKICAgIDgwMHg2MDAsIDY0MHg0ODAgYXQgMjQsIDE2IGFuZCA4IGJwcC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgNDEyNDM4MmRlMDI5ZDM2MTE2MmE0YjhjZWNjNzczZWI4ZjI2ZTJhOApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBGZWIgMTAgMTc6MDU6MjAgMjAwOCArMDEwMAoKICAgIHhzZW5naW5lOiBmaXggdHlwbyBhbmQgZmV3IGNvZGluZyBzdHlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNmY0YWJlZTc4OWI2ZDliZTNlYzRiOTdhZDQ4ZjUwOTM1NTU1OWU5ZQpBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8Zy5saWFraG92ZXRza2lAZ214LmRlPgpEYXRlOglGcmkgRmViIDggMjE6MjU6NTggMjAwOCArMDEwMAoKICAgIEZpeCB3cm9uZyBtZW1vcnkgbGltaXQgY2FsY3VsYXRpb24gaW4gbWVtb3J5LXRlc3QKCiAgICBJZiB0aGUgbGVuZ3RoIG9mIHRoZSBtZW1vcnkgYWRkcmVzcyByYW5nZSBwYXNzZWQgdG8gdGhlICJtdGVzdCIgY29tbWFuZCBpcwogICAgbm90IG9mIHRoZSBmb3JtIDJeeCAtIDEsIG5vdCBhbGwgYWRkcmVzcyBsaW5lcyBhcmUgdGVzdGVkLiBUaGlzIGJ1ZyBpcwogICAgaW5oZXJpdGVkIGZyb20gdGhlIG9yaWdpbmFsIHNvZnR3YXJlIGF0CiAgICBodHRwOi8vd3d3Lm5ldHJpbm8uY29tL0VtYmVkZGVkLVN5c3RlbXMvSG93LVRvL01lbW9yeS1UZXN0LVN1aXRlLUMuIEZpeAogICAgdGhpcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGcubGlha2hvdmV0c2tpQGdteC5kZT4KCmNvbW1pdCA3ZTMwZjVlYWM3ZjA3MDgyYTdjYTc3YjdkOTFiOTQ0YThkMGFmNmRiCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIEZlYiAxNSAwMDoxMTozOSAyMDA4ICswMTAwCgogICAgQ29kaW5nIFNUeWxlIGNsZWFudXAuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBmNjkyMWUzZGMzMzEyOTNjODczZWM0ZDEwOWZkNTUxN2E0MmE5MGIzCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglUdWUgRmViIDUgMTM6MzA6NDMgMjAwOCArMDkwMAoKICAgIHNoOiBGaXggcmVnaXN0ZXIgYWRkcmVzcyBvZiBTSDc3MjIKCiAgICBUaGUgYWRkcmVzcyBvZiBTSDc3MjIgaXMgd3JvbmcgYnkgb2xkIGRvY3VtZW50LgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGlzIHByb2JsZW0uCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDBlYzdhMDYxZmIxYzI3N2Y2YWZkNzNkNjFkZDcxYmQyMWU3ZWY3YjIKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBGZWIgNCAxNzo0NDoyMyAyMDA4IC0wNTAwCgogICAgb25seSB1cGRhdGUgdmVyc2lvbiBoZWFkZXIgYXMgbmVlZGVkCgogICAgQ29uc3RhbnRseSByZWJ1aWxkaW5nIHRoZSB2ZXJzaW9uIGhlYWRlciB3aWxsIGZvcmNlIHVzZWxlc3MgcmVsaW5raW5nLCBzbyB3ZQogICAgc2ltcGx5IG5lZWQgdG8gY29tcGFyZSB0aGUgbmV3IGhlYWRlciB3aXRoIHRoZSBleGlzdGluZyBvbmUgYmVmb3JlIHVwZGF0aW5nCiAgICBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMjA4NDQ3ZjhlOTUzZjM0NzQyNWViOTJjOGUyOGQ1OWU2ZDkxMTM2MwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIEphbiAyOCAwNTo1NjoxOSAyMDA4IC0wNTAwCgogICAgRG8gbm90IHNwZWNpZnkgYSBDUk9TU19DT01QSUxFIGRlZmF1bHQgd2hlbiBleGVjdXRpbmcgc2l6ZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAxZjc4MGFhNmYxN2E1ZDc5NzkxZDY5ZWMxZDJmNjZkNzZhYzQ1ZDhlCkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxnLmxpYWtob3ZldHNraUBnbXguZGU+CkRhdGU6CVdlZCBGZWIgMTMgMTE6MTk6MTkgMjAwOCArMDEwMAoKICAgIEZpeCByZXR1cm4gdmFsdWUgb2YgbXRlc3Qgd2hlbiBDRkdfQUxUX01FTVRFU1Qgc2V0CgogICAgRml4IGEgbWlzc2luZyByZXR1cm4gc3RhdGVtZW50IGZyb20gYSBub24tdm9pZCBmdW5jdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGcubGlha2hvdmV0c2tpQGdteC5kZT4KCmNvbW1pdCA5NDNhZmEyMjljZjViZjcwZWY5MTdjN2ViNmJkMGRiNTlhMWJhNjAyCkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEphbiA5IDE0OjM1OjI2IDIwMDggLTA2MDAKCiAgICA4NXh4LCA4Nnh4OiBEZXRlcm1pbmUgSTJDIGNsb2NrIGZyZXF1ZW5jaWVzIGFuZCBzdG9yZSBpbiBnbG9iYWxfZGF0YQoKICAgIFVwZGF0ZSBnbG9iYWxfZGF0YSB0byBkZWZpbmUgaTJjMV9jbGsgYW5kIGkyYzJfY2xrIHRvIDg1eHggYW5kIDg2eHguCgogICAgVXBkYXRlIHRoZSBnZXRfY2xvY2tzKCkgZnVuY3Rpb24gaW4gODV4eCBhbmQgODZ4eCB0byBkZXRlcm1pbmUgdGhlIEkyQwogICAgY2xvY2sgZnJlcXVlbmN5IGFuZCBzdG9yZSBpdCBpbiBnZC0+aTJjMV9jbGsgYW5kIGdkLT5pMmMyX2Nsay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGI5MzFiM2E5YzNiZGZhYWVhYTcxZTU3YTYwMjZlZWM3MjYwMDViMDgKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgRmViIDE0IDIzOjE4OjAxIDIwMDggKzAxMDAKCiAgICBUUU04MzR4OiBjbGVhbiB1cCBjb25maWd1cmF0aW9uCgogICAgR2V0IGJvYXJkIG5hbWUgY29uc2lzdGVudCB3aXRoIExpbnV4IGFuZCBlbHNld2hlcmU7CiAgICBnZXQgcmlkIG9mIGxvY2FsIG5ldHdvcmsgZGVmaW5pdGlvbnMgZXRjLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMzhjYzA5YzU1YjFkN2YyMzM3ODkwNTJjNmZjNDYyZTUzNzc2NjlhOQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVRodSBGZWIgMTQgMDg6MDI6MTIgMjAwOCArMDEwMAoKICAgIFRGVFA6IGZpeCBzZWFyY2ggb2YgJzonIGluIEJvb3RGaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAwYmM5ZWZhZGExNzAwOTZjNmIyNzNmMTkxNjVlMzI5MzZkMzMwZDgwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IEZlYiAxNCAyMjo0Njo1NSAyMDA4ICswMTAwCgogICAgQ29kaW5nIHN0eWxlIGNsZWFudXA7IHVwZGF0ZSBDSEFOR0VMT0cuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBlNzY3MGY2YzFlNTJhZTZkMmE0M2ZmNzVhOGJjZmE3YTVjODZlNDdiCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IEZlYiAxNCAyMjo0MzoyMiAyMDA4ICswMTAwCgogICAgUFBDOiBVc2UgcjIgaW5zdGVhZCBvZiByMjkgYXMgZ2xvYmFsIGRhdGEgcG9pbnRlcgoKICAgIFIyOSB3YXMgYW4gdW5sdWNreSBjaG9pY2UgYXMgd2l0aCByZWNlbnQgdG9vbGNoYWlucyAoZ2NjLTQuMi54KSBnY2MKICAgIHdpbGwgcmVmdXNlIHRvIHVzZSBsb2FkL3N0b3JlIG11bHRpcGxlIGluc25zOyBpbnN0ZWFkLCBpdCBpc3N1ZXMgYQogICAgbGlzdCBvZiBzaW1wbGUgbG9hZC9zdG9yZSBpbnN0cnVjdGlvbnMgdXBvbiBmdW5jdGlvbiBlbnRyeSBhbmQgZXhpdCwKICAgIHJlc3VsdGluZyBpbiBiaWdnZXIgY29kZSBzaXplLCB3aGljaCBpbiB0dXJuIG1ha2VzIHRoZSBidWlsZCBmb3IgYQogICAgZmV3IGJvYXJkcyBmYWlsLgoKICAgIFVzZSByMiBpbnN0ZWFkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgM2MyMzRlZmE2OTNiYzU5OTA2YzJiZTU1Yzc5MThlY2JiNTUzOTJlYQpBdXRob3I6IFV3ZSBLbGVpbmUtS8O2bmlnIDxVd2UuS2xlaW5lLUtvZW5pZ0BkaWdpLmNvbT4KRGF0ZToJV2VkIEphbiAzMCAwOTowODo0OSAyMDA4ICswMTAwCgogICAgQVJNOiBtYWtlIHRoZSBtYWNoaWQgY29uZmlndXJhYmxlIHZpYSB0aGUgZW52aXJvbm1lbnQKCiAgICBJZiB0aGUgdmFyaWFibGUgIm1hY2hpZCIgZXhpc3RzLCBsZXQgZG9fYm9vdG1fbGludXggdXNlIHRoYXQgaW5zdGVhZAogICAgb2YgYmQtPmJpX2FyY2hfbnVtYmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFV3ZSBLbGVpbmUtS/ZuaWcgPFV3ZS5LbGVpbmUtS29lbmlnQGRpZ2kuY29tPgoKY29tbWl0IGRkMjQwNTg0MDdjNWFkZDQ1Y2M2MGFlYzZjNzU3ZGRjMWExN2UxYjAKQXV0aG9yOiBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4KRGF0ZToJV2VkIEphbiAyMyAxNjozNDo0NiAyMDA4ICswMjAwCgogICAgVXNlICNpZmRlZiBDT05GSUdfRlNMRE1BRkVDCgogICAgTUNEX3Rhc2tzLmMgbGFja3MgW3N1YmplY3RdIHNvIGNvbXBpbGF0aW9uIG9mIG1pcHMgdGFyZ2V0cyAoYW5kIG1vcmUsIHByb2JhYmx5KQogICAgZmFpbHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4KCmNvbW1pdCAyNmM3YmFiODFlMDhkYzdiZDY5NmM0OGY3NTM0MjhhODI5NjI5YmQ4CkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJU2F0IEphbiAxOSAxMDoyNTo1OSAyMDA4ICswOTAwCgogICAgY29tbW9uL21paXBoeXV0aWwuYzogQ2xlYW51cCBNSUlfREVCVUcgYW5kIGRlYnVnKCkKCiAgICBDdXJyZW50IE1JSV9ERUJVRyBpcyBjb25mdXNpbmcgaW4gdHdvIHdheXMuIE9uZSBpcyB1c2VsZXNzIGRlZmluZS10aGVuLQogICAgdW5kZWYgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZS4gVGhlIG90aGVyIGlzIHRoZXJlIGlzIG9ubHkgb25lIGRlYnVnKCkgaW4KICAgIHRoaXMgZmlsZSwgYW5kIHRoYXQgZG9lc24ndCBzZWVtIHdvcnRod2hpbGUgdG8gYm90aGVyIGhhdmluZyBNSUlfREVCVUcuCiAgICBXaGlsZSB0aGVyZSBhcmUgbWFueSB1c2VmdWwgcHJpbnRmKCkvcHV0cygpIGRlYnVnIGNvZGVzLCBidXQgdGhleSBhcmUgZm9yCiAgICBERUJVRywgbm90IGZvciBNSUlfREVCVUcuCgogICAgVGhpcyBwYXRjaCB0cmllcyB0byBwdXQgdGhlbSBhbGwgdG9nZXRoZXIgaW50byBNSUlfREVCVUcgYW5kIGRlYnVnKCkuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCA3NTFiOWI1MTg5ZjMyNzRiMDNjODA5MTcyNjMxMzE2ZDZiMDAyYzgyCkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+CkRhdGU6CVRodSBKYW4gMTcgMTY6NDM6MjUgMjAwOCArMDkwMAoKICAgIE9uZU5BTkQgSW5pdGlhbCBQcm9ncmFtIExvYWRlciAoSVBMKSBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBlbmFibGVzIHRoZSBPbmVOQU5EIGJvb3Qgd2l0aGluIFUtQm9vdC4KICAgIEJlZm9yZSB0aGlzIHdvcmssIHdlIHVzZWQgYW5vdGhlciBPbmVOQU5EIElQTCBjYWxsZWQgWC1Mb2FkZXIgYmFzZWQKICAgIG9uIG9wZW4gc291cmNlLiBXaXRoIHRoaXMgd29yaywgd2UgY2FuIGJ1aWxkIHRoZSBvbmVib290LmJpbiBpbWFnZQogICAgd2l0aG91dCBvdGhlciBwcm9ncmFtLgoKICAgIFRoZSBidWlsZCBzZXF1ZW5jZSBpcyBzaW1wbGUuCiAgICBGaXJzdCwgaXQgY29tcGlsZXMgdGhlIHUtYm9vdC5iaW4KICAgIFNlY29uZCwgaXQgY29tcGlsZXMgT25lTkFORCBJUEwKICAgIEZpbmFsbHksIGl0IGJlY29tZXMgdGhlIG9uZWJvb3QuYmluIGZyb20gT25lTkFORCBJUEwgYW5kIHUtYm9vdC5iaW4KICAgIFRoZSBtZWNoYW5pc20gaXMgc2ltaWxhciB3aXRoIE5BTkQgYm9vdCBleGNlcHQgaXQgYm9vdHMgZnJvbSBpdHNlbGYuCgogICAgQW5vdGhlciB0aGluZyBpcyB0aGF0IHlvdSBjYW4gb25seSB1c2UgdGhlIE9uZU5BTkQgSVBMIG9ubHkgdG8gd29yawogICAgb3RoZXIgYm9vdGxvYWRlciBzdWNoIGFzIFJlZEJvb3QgYW5kIHNvIG9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Cgpjb21taXQgMjFmNmY5NjM2ZjBlOTc4Mzk3NTQ4NzUxMzQ3NDI1ZmJmOGQ0MmJiMwpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEphbiAxNiAxMzowNjo1OSAyMDA4IC0wNjAwCgogICAgRml4IENPTkZJR19NTUMgdXNhZ2UgaW4gZmF0IGNvZGUKCiAgICBBICNpZiBzdGF0ZW1lbnQgaW4gZmF0LmMgZGVwZW5kZWQgb24gQ09ORklHX01NQywgaW5zdGVhZCBvZgogICAgZGVmaW5lZChDT05GSUdfTU1DKS4gIFRoaXMgbWVhbnQgQ09ORklHX01NQyBuZWVkZWQgdG8gYmUgZGVmaW5lZAogICAgYXMgIjEiIHJhdGhlciB0aGFuIGp1c3QgZGVmaW5lZC4gIE5vdyBpdCdzIGJldHRlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjU3ZDdkMzY0Y2UxODllMzliMGE2NDMzOGQyZjgwMTJjMDc0YTJiZApBdXRob3I6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+CkRhdGU6CVR1ZSBKYW4gMTUgMTI6NTI6MzEgMjAwOCArMDEwMAoKICAgIHBwYzogUmVmYWN0b3IgY2FjaGUgcm91dGluZXMsIHNvIHRoZXJlIGlzIG9ubHkgb25lIGNvbW1vbiBzZXQuCgogICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KCmNvbW1pdCAzZjJhYzhmOTI4Yzc2Y2JkMjM3NDQzN2IyZDA3OWY4YjQzMjRhYWJhCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJV2VkIEphbiAyMyAxNTo1NTowMiAyMDA4IC0wNjAwCgogICAgODZ4eDogRml4IGNvbXBpbGF0aW9uIHdhcm5pbmcgaW4gc3lzX2Vwcm9tLmMKCiAgICBzeXNfZWVwcm9tLmM6ODI6OTogd2FybmluZzogdW5rbm93biBlc2NhcGUgc2VxdWVuY2UgJ1wvJwoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjUyMzAxMDcwMjU3MzNlODllMjhmZDVlNWNmZDkxNmQ0OTUzYzI4YQpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW4gYXQ+CkRhdGU6CUZyaSBGZWIgMjIgMTE6NDA6NTAgMjAwOCArMDAwMAoKICAgIE1vdmUgQVQ5MVJNOTIwMERLIGJvYXJkIHN1cHBvcnQgdW5kZXIgYm9hcmQvYXRtZWwKCiAgICBXZSBhbHJlYWR5IGhhdmUgYSB2ZW5kb3Igc3ViZGlyIGZvciBBdG1lbCwgc28gd2Ugc2hvdWxkIHVzZSBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuIDxhdD4gYXRtZWwuY29tPgoKY29tbWl0IDZkMDk0M2E2YmU5OTk3N2Q2ZDg1M2Q1MTc0OWU5OTYzZDY4ZWIxOTIKQXV0aG9yOiBBbmRyZWFzIEVuZ2VsIDxhbmRyZWFzLmVuZ2VsQGVyaWNzc29uLmNvbT4KRGF0ZToJTW9uIEphbiAxNCAwOTowNjo1MiAyMDA4ICswMDAwCgogICAgQVJNOiBjbGVhbnVwIGR1cGxpY2F0ZWQgZXhjZXB0aW9uIGhhbmRsaW5nY29kZQoKICAgIE1vdmUgZHVwbGljYXRlZCBleGNlcHRpb24gaGFuZGxpbmcgY29kZSBpbnRvIGxpYl9hcm0uCgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBFbmdlbCA8YW5kcmVhcy5lbmdlbEBlcmljc3Nvbi5jb20+Cgpjb21taXQgZWE4ZDk4OWY0ZWY4MjAzZTFjMDI5MWU2MjQzNWE4YzYyZTNjZmIyOQpBdXRob3I6IFRpbW8gVHV1bmFpbmVuIDx0aW1vLnR1dW5haW5lbkBzeXNhcnQuZmk+CkRhdGU6CUZyaSBGZWIgMSAxMDowOTowMyAyMDA4ICswMDAwCgogICAgU3VwcG9ydCBmb3IgQXJ0aWxhIE0tNTAxIHN0YXJ0ZXIga2l0CgogICAgS2ltbW8gTGVwcGFsYSAvIFN5c2FydCBhbmQKICAgIFRpbW8gVHV1bmFpbmVuIC8gU3lzYXJ0Cgpjb21taXQgOTYwNGI2ZTUzZGRhZTRmZTAwYTQ4OGNiY2Q2YjBlNmNiMzQ0YmNjYwpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CU1vbiBGZWIgMTEgMTA6NTA6MTkgMjAwOCArMDAwMAoKICAgIEFUOTFDQVA5IHN1cHBvcnQKCiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICByZWFkX2RhdGFmbGFzaCgpIHRha2VzIGEgc2lnbmVkIGNoYXIgcG9pbnRlciBhcyBhIHBhcmFtZXRlci4gU2lsZW5jZSBhCiAgICBmZXcgd2FybmluZ3MgZHVlcyB0byBpbmNvcnJlY3QgcGFyYW1ldGVyIHR5cGVzIGluIGVudl9kYXRhZmxhc2guYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgoKY29tbWl0IDY0ZThhMDZhZjY4Y2RhMTc0YThhMDZkMGE2MWZjZTVlNWJiMTg5ZDcKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglUaHUgRmViIDcgMDk6NDI6NTcgMjAwOCArMDAwMAoKICAgIEFUOTFDQVA5IHN1cHBvcnQgOiBtb3ZlIGJvYXJkIGZpbGVzIHRvIEF0bWVsIHZlbmRvciBkaXJlY3RvcnkuCgogICAgQVQ5MUNBUDkgc3VwcG9ydCA6IG1vdmUgYXQ5MWNhcDlhZGsgYm9hcmQgZmlsZXMgdG8gQXRtZWwgdmVuZG9yIGRpcmVjdG9yeS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgoKY29tbWl0IDcyNjNlZjE5MWI4N2RhOTQ3NjhmNzYyYzcwOTNiZWRlYjcwZGI5OGYKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbiBhdD4KRGF0ZToJVGh1IEphbiAzIDIxOjE1OjU2IDIwMDggKzAwMDAKCiAgICBBVDkxQ0FQOSBzdXBwb3J0IDogTUFDQiBjaGFuZ2VzCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW4gPGF0PiBwb3BpZXMubmV0PgogICAgQWNrZWQtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW4gPGF0PiBhdG1lbC5jb20+Cgpjb21taXQgNmFmY2FiZjExZDczMjE4NTBmNGZlYWFkZmVlODQxNDg4YWNlNTRjNQpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVRodSBGZWIgNyAxNjozNzo1NCAyMDA4ICswMDAwCgogICAgQVQ5MUNBUDkgc3VwcG9ydCA6IGJvYXJkLyBmaWxlcwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Cgpjb21taXQgZmVmYjZjMTA5MjhjYWE5ZTcxMzM1Y2FkNjRkY2I2NWM4M2ZjZThhYgpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuIGF0PgpEYXRlOglXZWQgSmFuIDMwIDIxOjE1OjU0IDIwMDggKzAwMDAKCiAgICBBVDkxQ0FQOSBzdXBwb3J0IDogY3B1LyBmaWxlcwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuIDxhdD4gcG9waWVzLm5ldD4KCmNvbW1pdCBmYTUwNmE5MjZjZWMzNDg4MDUxNDM1NzZjOTQxZjhlNjFiMzMzY2MwCkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJVGh1IEphbiAzMSAyMToxNTo1MyAyMDA4ICswMDAwCgogICAgQVQ5MUNBUDkgc3VwcG9ydCA6IGluY2x1ZGUvIGZpbGVzCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KCmNvbW1pdCAyMGIxOTdjNmYyNzk5YWYzOTlhNjhmOTZhMWFmZjU0M2E3NTYyMWI4CkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJU3VuIEphbiAyMCAxOTo0OToyMSAyMDA4ICswMDAwCgogICAgQVQ5MUNBUDkgc3VwcG9ydCA6IGJ1aWxkIGludGVncmF0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KCmNvbW1pdCBkNDlmZTRiZWQ1YjY5ZWM5MTA5MDlkMWJkNjJkYTIzZWNkODgwMWZkCkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJU3VuIEphbiAyMCAyMTowNzowMCAyMDA4ICswMDAwCgogICAgSW1wcm92ZSBEYXRhRmxhc2ggQ1MgZGVmaW5pdGlvbi4KCiAgICBVc2UgYSBzdHJ1Y3R1cmUgaW5zdGVhZCBvZiB0aGUgZXJyb3IgcHJvbmUgdW5uYW1lZCBhcnJheSB0bwogICAgZGVmaW5lIHRoZSBwb3NzaWJsZSBkYXRhZmxhc2ggYmFua3MuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KCmNvbW1pdCBhNmNkZDIxYjU2MDE0MjA4NzA2MjM4NzEyYTg1M2E5ZTlhMGEyMjkwCkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJU2F0IEphbiAxOSAyMTowOTozNSAyMDA4ICswMDAwCgogICAgRml4IGFybTkyNmVqcyBjb21waWxlIHdoZW4gU0tJUF9MT1dMRVZFTF9JTklUIGlzIG9uCgogICAgRml4IGFybTkyNmVqcyBjb21waWxlIHdoZW4gU0tJUF9MT1dMRVZFTF9JTklUIGlzIG9uLgoKICAgIGNwdS9hcm05MjZlanMvc3RhcnQubzogSW4gZnVuY3Rpb24gYGNwdV9pbml0X2NyaXQnOgogICAgLi4uL2NwdS9hcm05MjZlanMvc3RhcnQuUzoyMjc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGxvd2xldmVsX2luaXQnCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KCmNvbW1pdCBlYTY4NmY1MmU0NWIzZGYyOTM4ODY2ZDNmNWE5OGJiMjU1NmRmZTJiCkF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KRGF0ZToJRnJpIEZlYiAxIDE2OjUwOjI0IDIwMDggKzAwMDAKCiAgICBGaXggdGltZXIgb3ZlcmZsb3cgaW4gRGFWaW5jaQogICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnbWFpbC5jb20+Cgpjb21taXQgZjRlN2NiZmNiMGZjYmMzMjVhMmJjZmVhN2UwMGUzZGQzN2Y5Mzg0NgpBdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+CkRhdGU6CUZyaSBGZWIgMSAxNjo0OTowOCAyMDA4ICswMDAwCgogICAgVXBkYXRlIGJvYXJkIE5ldFN0YXIKICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KCmNvbW1pdCBiN2Y2MTkzZTc2NjUxZTFmZDYwNmU0NmViMTE5MTViNTNjYjY2MThiCkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KRGF0ZToJVHVlIEZlYiA1IDEwOjI2OjQyIDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IEhDVTQvNS4gRml4IG1ha2UgTz0uLi94eAoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgMjllMzUwMGNiYzQzYzg5ZWZmNmU3MjBjYTgzZTM3NWRlZWVjZDliMwpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgpEYXRlOglUdWUgSmFuIDIyIDA4OjUxOjU5IDIwMDggLTA1MDAKCiAgICBwcGM0eHg6IEFkZCBDT05GSUdfNHh4X0RDQUNIRSBjb21waWxlIHN3aXRjaCB0byBEZW5hbGktY29yZSBTUEQgY29kZQoKICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgoKY29tbWl0IGZlODkxZWNmNGQxODdlOWQxMWRkZTg2OWVkNDYyM2FmNTJiNTQ0NTEKQXV0aG9yOiBIaXJvc2hpIEl0byA8aXRvQG1sYi5jby5qcD4KRGF0ZToJVGh1IEphbiAzMSAxODozNTowNCAyMDA4ICswOTAwCgogICAgTkZTIFRpbWVvdXQgd2l0aCBsYXJnZSBmaWxlcy4KCiAgICBSZXRyeSB0byBzZW5kIE5GUyBwYWNrZXQgYmVmb3JlIHJlYWNoaW5nIHRpbWVvdXQuCgogICAgU2lnbmVkLW9mZi1ieTogSGlyb3NoaSBJdG8gPGl0b0BtbGIuY28uanA+Cgpjb21taXQgODhmNzI1MjdmNWI4OWMwOTA1YWQ1YzM2Y2MyZWY4ZDI5ZGQ2YmJmMApBdXRob3I6IEpvaGFubmVzIFN0ZXplbmJhY2ggPGpzQHNpZzIxLm5ldD4KRGF0ZToJVHVlIEphbiAyOSAwMDoxMToyNSAyMDA4ICswMTAwCgogICAgQWRkIGRlcGVuZGVuY2llcyB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMgd2l0aCBwYXJhbGxlbCBtYWtlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvaGFubmVzIFN0ZXplbmJhY2ggPGpzQHNpZzIxLm5ldD4KCmNvbW1pdCA2ZDFiNmY5Zjg5YzgxNWVhY2E0NGFjZmY4ZTczZWNlNzE4MWY2MWI2CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gSmFuIDI4IDA1OjQ2OjAxIDIwMDggLTA1MDAKCiAgICBNYXJrIGJvYXJkX2luaXRfW2ZyXSBhcyBub3JldHVybgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAxNjFiMmFmNGQ3YjQ4ZmQ2MDJjZTMzM2MzNTVhNGRmMDMzNzg5MmJiCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gSmFuIDI4IDA1OjI4OjUwIDIwMDggLTA1MDAKCiAgICBPbmx5IHVzZSBURVhUX0JBU0UgaWYgZGVmaW5lZCBieSB0aGUgYm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMWI3Njk4ODE3NTAwMzBmMTA3NDM4MDhiOWQ2MDEzZTExZjU1OTM1MApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBKYW4gMjUgMDc6NTQ6NDcgMjAwOCArMDEwMAoKICAgIEZpeCByZW1haW5pbmcgQ09ORklHX0NPTU1BTkRTCgogICAgdXBkYXRlIGNvbW1lbnRzCiAgICBGaXggY29kaW5nIHN0eWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAwYzlkNDJlNmIwYjgzZDUwNzMzNWEyOTFlM2VhOTkyNDAwMzhmNGI5CkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KRGF0ZToJTW9uIEphbiAyMSAxNjo0NjowMCAyMDA4ICswMTAwCgogICAgQWRkICp+IHRvIC5naXRpZ25vcmUKCiAgICBPbmUgc2hvdWxkIG5ldmVyIGFkZCBhIGJhY2t1cCBmaWxlIGVuZGluZyBpbiB3aXRoIH4gdG8gdGhlIGdpdCByZXBvc2l0b3J5LgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgM2NmYjBjNTFiMmJiNWVkZTU0ZWNhODVhY2U1YjFiYTEyYmUzMTRiMApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBKYW4gMTcgMDA6MDI6MTAgMjAwOCAtMDYwMAoKICAgIFJlbW92ZSBkdXBsaWNhdGUgZGVmaW5lcyBmb3IgQVJSQVlfU0laRQoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYzc3Y2U0NzRiMWM1N2IxM2U5ZDM2ZDk4MzBmMTQ3OTY2YzE0MzY5NApBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CU1vbiBKYW4gMTQgMjI6MDg6MTQgMjAwOCArMDEwMAoKICAgIEZpeCBpbmNvcnJlY3QgYWRkcmVzcyB0ZXN0IGluIEFUOTFGX0RhdGFmbGFzaFNlbGVjdCgpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Cgpjb21taXQgZDlhZDExNWJiZjdiYjA4NDJkZTdkYmQyNTAyYjdlNDMwZjgzY2MzZApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBGZWIgMTMgMTU6MDk6NTggMjAwOCAtMDYwMAoKICAgIEZpeCBidWlsZGluZyBvZiBmZHRfc3VwcG9ydC5jIGlmIERFQlVHIHNldAoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgY2NkNmUxNDY0ZTUzOTZiYzFhOWFlYmY3MDc3ZGRmNDM0MmVhZmUwMwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBGZWIgMTIgMTQ6NTM6MjggMjAwOCAtMDYwMAoKICAgIEFkZCBDRkdfTVBDODZ4eF9ERFJfQUREUiBhbmQgQ0ZHX01QQzg2eHhfRERSMl9BRERSIHN5bWJvbHMKCiAgICBUaGVzZSByZXBsYWNlIGRpcmVjdCBzdHJ1Y3R1cmUgcmVmZXJlbmNlcyBmb3IgSU1NUiBzZWN0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGM2Mjc3NmJlOGRjYTQwOTdjYTAzZDRmOTQxNWYwOGQ0ODg3YjQ1ZDAKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgRmViIDEyIDAwOjQ1OjA2IDIwMDggKzAxMDAKCiAgICBHZXQgcmlkIG9mICIjdW5kZWYgREVCVUciIGZyb20gYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNzNiZjFlMmRlNzg2MmJjZGJkNWE5Zjk5M2IzZTg0YjY3YzhlYTljOApBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKYW4gMTUgMTc6MDk6NDEgMjAwOCAtMDYwMAoKICAgIFJlbW92ZSAjdW5kZWYgREVCVUcgZnJvbSBNUEM4M3h4IGJvYXJkIGhlYWRlciBmaWxlcwoKICAgIFJlbW92ZSB0aGUgIiN1bmRlZiBERUJVRyIgbGluZSBmcm9tIGFsbCBGcmVlc2NhbGUgODN4eCBib2FyZCBoZWFkZXIgZmlsZXMuCiAgICBUaGUgaW5jbHVzaW9uIG9mIHRoaXMgbGluZSBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIGVuYWJsZSBkZWJ1ZyBjb2RlIGluCiAgICBvdGhlciBzb3VyY2UgZmlsZXMsIGJlY2F1c2UgIiNkZWZpbmUgREVCVUciIHR5cGljYWxseSBuZWVkcyB0byBiZSBkZWZpbmVkCiAgICBiZWZvcmUgYW55IGhlYWRlciBmaWxlcyBhcmUgaW5jbHVkZWQuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2OTAxOGNlMmUwODZlOWNhZjM1YjkxNGQ2NzViODJiYzQ4ODhmMDc3CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEphbiAxNyAwODoyNTo0NSAyMDA4IC0wNjAwCgogICAgUUU6IE1vdmUgRkRUIHN1cHBvcnQgaW50byBhIGNvbW1vbiBmaWxlCgogICAgTW92ZSB0aGUgZmxhdCBkZXZpY2UgdHJlZSBzZXR1cCBmb3IgUUUgcmVsYXRlZCBkZXZpY2VzIGludG8KICAgIGEgY29tbW9uIGZpbGUgc2hhcmVkIGJldHdlZW4gODN4eCAmIDg1eHggcGxhdGZvcm1zIHRoYXQgaGF2ZSBRRSdzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNWNmNzQ2YzMwMzcxMDMyOWY4MDQwZDljNjJlZTM1NDMxM2UzZTkxZgpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVRodSBKYW4gMzEgMTM6NTk6MDkgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBNb3ZlIGtlcm5lbCBkYXRhIGZpbmQgY29kZSB0byBnZXRfa2VybmVsKCkgcm91dGluZQoKICAgIFZlcmlmaWNhdGlvbiBvZiB0aGUga2VybmVsIGltYWdlIChpbiBvbGQgZm9ybWF0KSBhbmQgZmluZGluZyBrZXJuZWwKICAgIGRhdGEgaXMgbW92ZWQgdG8gYSBkZWRpY2F0ZWQgcm91dGluZS4gVGhlIHJvdXRpbmUgd2lsbCBhbHNvIGhvbGQKICAgIHN1cHBvcnQgZm9yLCB0byBiZSBhZGRlZCwgbmV3IGltYWdlIGZvcm1hdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IDdiMzI1NDU0ZmQyMzFkNDI3M2RlM2ZlMzczODUwZjc3N2ZiMDg2YmYKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgSmFuIDMxIDEzOjU4OjIwIDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gQ2xlYW51cCBGRFQgaGFuZGxpbmcgaW4gUFBDIGRvX2Jvb3RfbGludXgoKQoKICAgIE1vdmUgRkRUIGJsb2IgZmluZGluZyBhbmQgcmVsb2NhdGlvbiB0byBhIGRlZGljYXRlZAogICAgZ2V0X2ZkdCgpIHJvdXRpbmUuIEl0IGluY3JlYXNlcyBjb2RlIHJlYWRhYmlsaXR5IGFuZAogICAgd2lsbCBtYWtlIGFkZGluZyBzdXBwb3J0IGZvciBuZXcgdUltYWdlIGZvcm1hdCBlYXNpZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBiNmIwZmU2NDYwYjcwNjNhYzYwYjlhMzUzMWVmMjEwYWVkYjMxNDUxCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IEphbiAzMSAxMzo1ODoxMyAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIENsZWFudXAgZG9fYm90bV9saW51eCgpIGJvb3QgYWxsb2NhdGlvbnMKCiAgICBUaGlzIHBhdGNoIG1vdmVzIGNvbW1vbiBwcmUtYm9vdCBhbGxvY2F0aW9uIHN0ZXBzIHNoYXJlZCBiZXR3ZWVuIFBQQwogICAgYW5kIE02OEsgdG8gYSBoZWxwZXIgcm91dGluZXM6CgogICAgY29tbW9uOgogICAgLSBnZXRfYm9vdF9zcF9saW1pdCgpCiAgICAtIGdldF9ib290X2NtbGluZSgpCiAgICAtIGdldF9ib290X2tiZCgpCgogICAgcGxhdGZvcm06CiAgICAtIHNldF9jbG9ja3NfaW5fbWh6KCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IGNlYWVkMmIxZTU0ZWJmMTRkNjAwZTAyZmVmMDE2YzhkZjVjYzRkNDAKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgSmFuIDMxIDEzOjU3OjE3IDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gTW92ZSByYW1kaXNrIGxvYWRpbmcgdG8gYSBjb21tb24gcm91dGluZQoKICAgIFJhbWRpc2sgbG9hZGluZyBjb2RlLCBpbmNsdWRpbmcgaW5pdHJkX2hpZ2ggdmFyaWFibGUgaGFuZGxpbmcsCiAgICB3YXMgZHVwbGljYXRlZCBmb3IgUFBDIGFuZCBNNjhLIHBsYXRmb3Jtcy4gVGhpcyBwYXRjaCBjcmVhdGVzCiAgICBjb21tb24gaGVscGVyIHJvdXRpbmUgdGhhdCBpcyBiZWluZyBjYWxsZWQgZnJvbSBib3RoIHBsYXRmb3JtCiAgICBkb19ib290bV9saW51eCgpIHJvdXRpbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgNjhkNGYwNWU2YjIzODNhNDQyZmI3MWY4MGYyYTlmYmIzZDhkZWY2OApBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVRodSBKYW4gMzEgMTM6NTU6NTMgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBSZW1vdmVkIGRlYWQgcmFtZGlzayBjb2RlIG9uIG1pY3JvYmxhemUgYXJjaGl0ZWN0dXJlcwoKICAgIE1pY3JvYmxhemUgZG9fYm9vdG1fbGludXgoKSBpbmNsdWRlcyByYW1kaXNrIHByb2Nlc3NpbmcgY29kZSBidXQKICAgIHRoZSByYW1kaXNrIGRvZXMgbm90IGdldCB1c2VkIGFueXdoZXJlIGxhdGVyIG9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgNWFkMDNlYjM4NTRjMTYyNjg0MjIyYTcxOGI0NGMwNzE2ZWEwZGIwMwpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVRodSBKYW4gMzEgMTM6NTU6MzkgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBGYWN0b3Igb3V0IGNvbW1vbiBpbWFnZV9nZXRfcmFtZGlzaygpIHJvdXRpbmUKCiAgICBBcmNoaXRlY3R1cmUgc3BlY2lmaWMgZG9fYm9vdG1fbGludXgoKSByb3V0aW5lcyBzaGFyZSBjb21tb24KICAgIHJhbWRpc2sgaW1hZ2UgcHJvY2Vzc2luZyBjb2RlLiBNb3ZlIHRoaXMgY29kZSB0byBhIGNvbW1vbgogICAgaGVscGVyIHJvdXRpbmUuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBkM2M1ZWI2ZGQxZjRlZDNjMzM4ODM4NmNmMWQxYmY4MmFhNTFkNTZiCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IEphbiAzMSAxMzoyMDowOCAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIE1vdmUgRkRUIGVycm9yIHByaW50aW5nIHRvIGNvbW1vbiBmZHRfZXJyb3IoKSByb3V0aW5lCgogICAgRkRUIGVycm9yIGhhbmRsaW5nIGluIFBQQyBkb19ib290bV9saW51eCgpIHNoYXJlcyB0aGUgc2FtZSBtZXNzYWdlIGZvcm1hdC4KICAgIFRoaXMgcGF0Y2ggbW92ZXMgZXJyb3IgbWVzc2FnZSBwcmludGluZyB0byBhIGhlbHBlciBmZHRfZXJyb3IoKSByb3V0aW5lLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CiAgICBBY2tlZC1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCA0MmI3M2U4ZWUwMGQ0ODAwNDc5MWRlYTY0YjgwOTNmYjk3NGM1N2UxCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IEphbiAzMSAxMzoyMDowNyAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIEZhY3RvciBvdXQgY29tbW9uIHJvdXRpbmVzIGZvciBnZXR0aW5nIG9zL2FyY2gvdHlwZS9jb21wIG5hbWVzCgogICAgTW92ZSBudW1lcmljLWlkIHRvIG5hbWUgdHJhbnNsYXRpb24gZm9yIGltYWdlIG9zL2FyY2gvdHlwZS9jb21wIGhlYWRlcgogICAgZmllbGRzIHRvIGEgaGVscGVyIHJvdXRpbmVzOiBpbWFnZV9nZXRfb3NfbmFtZSgpLCBpbWFnZV9nZXRfYXJjaF9uYW1lKCksCiAgICBpbWFnZV9nZXRfdHlwZV9uYW1lKCksIGltYWdlX2dldF9jb21wX25hbWUoKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IGU5OWMyNjY5NGEzODQyMjFkMzM2ZjY0NDhjMDZhNTc0NzljMGJhYTQKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgSmFuIDMxIDEzOjIwOjA3IDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gUmVtb3ZlIHN0YW5kYWxvbmUgYXBwbGljYXRpb25zIGhhbmRsaW5nIGZyb20gYm9vb3RtCgogICAgU3RhbmRhbG9uZSBhcHBsaWNhdGlvbnMgYXJlIHN1cHBvc2VkIHRvIGJlIHJ1biB1c2luZyB0aGUgImdvIiBjb21tYW5kLgogICAgVGhpcyBwYXRjaCByZW1vdmVzIHN0YW5kYWxvbmUgaW1hZ2VzIGhhbmRsaW5nIGZyb20gdGhlIGRvX2Jvb3RtKCkuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCA0YTJhZDVmZjY0MDA2OTg0MzNkZDcyMDNkMzQ5MzljM2M5Y2M5YmZmCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IEphbiAzMSAxMzoyMDowNyAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIFJlbW92ZSBPRl9GTEFUX1RSRUUgc3VwcG9ydCBmcm9tIFBQQyBib290bSBjb2RlCgogICAgU3VwcG9ydCBmb3IgT0ZfRkxBVF9UUkVFIGlzIHRvIGJlIG9ic29sZXRlZCBpbiB0aGUgbmVhciBmdXR1cmUsCiAgICByZW1vdmUgcmVsYXRlZCBjb2RlIGZyb20gdGhlIGJvb3RtIHJvdXRpbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgODI4NTBmM2QzMmEyNjYxODY4ZWM2ODc2YmVkN2EyMmM1NWNlZjcxOApBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVRodSBKYW4gMzEgMTM6MjA6MDYgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBVc2UgaW1hZ2UgQVBJIGluIFNIIGRvX2Jvb3RtX2xpbnV4KCkgcm91dGluZQoKICAgIEludHJvZHVjZSBpbWFnZSBoYW5kbGluZyBBUEkgZm9yIGxhdGVseSBhZGRlZCBIaXRhY2hpIFNIIGFyY2hpdGVjdHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IDRhOTk1ZWRlYzFhYzE2M2Q5MzI2ZDE0M2ZmZTJiNDdlNzU0MzQwN2YKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgSmFuIDMxIDEzOjIwOjA2IDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gUmVuYW1lIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBib290bSBjb2RlIGZpbGVzCgogICAgSW1wbGVtZW50YXRpb24gb2YgdGhlIGRvX2Jvb3RtX2xpbnV4KCkgYW5kIG90aGVyIGJvb3RtIGhlbHBlciByb3V0aW5lcyBpcwogICAgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGNvZGUuIEFzIHN1Y2ggaXQgcmVzaWRlcyBpbiBsaWJfPGFyY2g+IGRpcmVjdG9yaWVzCiAgICBpbiBmaWxlcyBuYW1lZCA8YXJjaD5fbGludXguYwoKICAgIFRoaXMgcGF0Y2ggcmVuYW1lcyB0aG9zZSBmaWxlcyB0byBhIG1vcmUgY2xlYXIgYW5kIGFjY3VyYXRlCiAgICBsaWJfPGFyY2g+L2Jvb3RtLmMgZm9ybS4KCiAgICBMaXN0IG9mIHRoZSByZW5hbWVkIGZpbGVzOgogICAgICAgbGliX2FybS9hcm1saW51eC5jIC0+IGxpYl9hcm0vYm9vdG0uYwogICAgICAgbGliX2F2cjMyL2F2cjMyX2xpbnV4LmMgLT4gbGliX2F2cjMyL2Jvb3RtLmMKICAgICAgIGxpYl9ibGFja2Zpbi9iZjUzM19saW51eC5jIC0+IGxpYl9ibGFja2Zpbi9ib290bS5jCiAgICAgICBsaWJfaTM4Ni9pMzg2X2xpbnV4LmMgLT4gbGliX2kzODYvYm9vdG0uYwogICAgICAgbGliX202OGsvbTY4a19saW51eC5jIC0+IGxpYl9tNjhrL2Jvb3RtLmMKICAgICAgIGxpYl9taWNyb2JsYXplL21pY3JvYmxhemVfbGludXguYyAtPiBsaWJfbWljcm9ibGF6ZS9ib290bS5jCiAgICAgICBsaWJfbWlwcy9taXBzX2xpbnV4LmMgLT4gbGliX21pcHMvYm9vdG0uYwogICAgICAgbGliX25pb3Mvbmlvc19saW51eC5jIC0+IGxpYl9uaW9zL2Jvb3RtLmMKICAgICAgIGxpYl9uaW9zMi9uaW9zX2xpbnV4LmMgLT4gbGliX25pb3MyL2Jvb3RtLmMKICAgICAgIGxpYl9wcGMvcHBjX2xpbnV4LmMgLT4gbGliX3BwYy9ib290bS5jCiAgICAgICBsaWJfc2gvc2hfbGludXguYyAtPiBsaWJfc2gvYm9vdG0uYwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgNzU4MjQzOGMyODViZjBjZWY4MjkwOWQwZjIzMmRlNjRlYzU2N2E4YQpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVRodSBKYW4gMzEgMTM6MjA6MDYgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBSZXR1cm4gZXJyb3Igb24gaW1hZ2UgbW92ZS91bmNvbXByZXNzIG92ZXJ3cml0ZXMKCiAgICBDaGVjayBmb3Igb3ZlcndyaXRlcyBkdXJpbmcgaW1hZ2UgbW92ZS91bmNvbXByZXNzLCByZXR1cm4gd2l0aCBlcnJvcgogICAgd2hlbiB0aGUgb3JpZ2luYWwgaW1hZ2UgZ2V0cyBjb3JydXB0ZWQuIFJlcG9ydCBjbGVhciBtZXNzYWdlIHRvIHRoZSB1c2VyCiAgICBhbmQgcHJldmVudCBmdXJ0aGVyIHRyb3VibGVzIHdoZW4gcG9pbnRlciB0byB0aGUgY29ycnVwdGVkIGltYWdlcyBpcyBwYXNzZWQKICAgIHRvIGRvX2Jvb3RtX2xpbnV4IHJvdXRpbmUuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBmMTNlN2IyZTk5M2M2MWZlZDFmNjA3OTYyNTAxZTA1MTk0MGQ2ZTgwCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJVHVlIEphbiA4IDE4OjEyOjE3IDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gQ2xlYW51cCBpbWFnZSBoZWFkZXIgcG9pbnRlciB1c2UgaW4gYm9vdG0gY29kZQoKICAgIC0gdXNlIHNpbmdsZSBpbWFnZSBoZWFkZXIgcG9pbnRlciBpbnN0ZWFkIG9mIGEgc2V0IG9mIGF1eGlsbGlhcnkgdmFyaWFibGVzLgogICAgLSBhZGQgbXVsdGkgY29tcG9uZW50IGltYWdlIGhlbHBlciByb3V0aW5lczogZ2V0IGNvbXBvbmVudCBzaXplL2RhdGEgYWRkcmVzcwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgMWVlMTE4MGI2ZTkzZTU2ZDAyODJhYzhkOTQzZTQ0OGU5ZDBlYWIyMApBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVR1ZSBKYW4gOCAxODoxNzoxMCAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIENsZWFudXAgY21kX2Jvb3RtLmMKCiAgICAtIHNvcnQgYW5kIGNsZWFudXAgaGVhZGVycywgZGVjbGFyYXRpb25zLCBldGMuCiAgICAtIGdyb3VwIHJlbGF0ZWQgcm91dGluZXMKICAgIC0gY2xlYW51cCBpbmRlbnRhdGlvbiwgd2hpdGUgc3BhY2VzCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBhZjEzY2RiYzAxZWFmODg4ODA5NzhiZmI0ZjYwM2UwMTI4MThiYTI0CkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJVHVlIEphbiA4IDE4OjExOjQ1IDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gQWRkIG1lbW1vdmVfd2QoKSBjb21tb24gcm91dGluZQoKICAgIE1vdmUgY29tbW9uLCB3YXRjaGRvZyBzZW5zaWJsZSBtZW1tb3ZlIGNvZGUgdG8gYSBoZWxwZXIgbWVtbW1vdmVfd2QoKSByb3V0aW5lLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgOTU4ZmM0OGFiZGRlYWI1MTNlYTQ4NDdlMzRmMjJhMmU5ZmU2N2ZlMQpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVR1ZSBKYW4gOCAxODoxMTo0NCAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIEZpeCBGRFQgaGVhZGVyIHZlcmlmaWNhdGlvbiBpbiBQUEMgZG9fYm9vdF9saW51eCgpIHJvdXRpbmUKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IDE1MTU4OTcxZjQ5MjU1Y2NlZjU0ZjA5NzlhOTQyY2ZkM2RlMmFlNTIKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgSmFuIDggMTg6MTE6NDQgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBGaXggdUltYWdlIGhlYWRlciBwb2ludGVyIHVzZSBpbiBpMzg2IGRvX2Jvb3RtX2xpbnV4KCkKCiAgICBVc2UgaW1hZ2UgaGVhZGVyIGNvcHkgaW5zdGVhZCBvZiBhIChwb3NzaWJseSBjb3JydXB0ZWQpIHBvaW50ZXIgdG8KICAgIGEgaW5pdGlhbCBpbWFnZSBsb2NhdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IDI2MWRjZjQ2MjRiMjVmM2M1NTFlZmNmODYzNGU5MTk0ZmFiYmE5YzMKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgSmFuIDggMTg6MTE6NDQgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBSZW1vdmUgSTM4NiB1SW1hZ2UgZmFrZV9oZWFkZXIoKSByb3V0aW5lCgogICAgSTM4NiB0YXJnZXRzIGFyZSBub3QgdXNpbmcgYSB1SW1hZ2UgZm9ybWF0LCBpbnN0ZWFkIGZha2UgaGVhZGVyCiAgICBpcyBhZGRlZCB0byByYW0gaW1hZ2UgYmVmb3JlIGl0IGlzIGZ1cnRoZXIgcHJvY2Vzc2VkIGJ5IGJvb3RtLgoKICAgIFJlbW92ZSB0aGlzIGZpeHVwIGFuZCBmb3JjZSBwcm9wZXIgdUltYWdlIHVzZSBmb3IgSTM4Ni4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IDU1OTMxNmZhZjdlYWUwNjE0YzkxZDc3ZjUwOWI1N2Q2YzRjMDkxYmEKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgSmFuIDggMTg6MTE6NDQgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBNb3ZlIENIVU5LU1ogZGVmaW5pdGlvbiB0byBpbWFnZS5oCgogICAgQ0hVTktTWiBkZWZpbmVkIGZvciBQUEMgYW5kIE02OEsgaXMgc2V0IHRvIHRoZSBzYW1lIHZhbHVlIG9mIDY0SywKICAgIG1vdmUgdGhpcyBkZWZpbml0aW9uIHRvIGEgY29tbW9uIGhlYWRlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IDMyMTM1OWYyMDgyM2UwYjhjNWFkMzhiNjRkMDA3YTZjNDhjZGExNmUKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgSmFuIDggMTg6MTE6NDMgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBNb3ZlIGd1bnppcCgpIGNvbW1vbiBjb2RlIHRvIGNvbW1vbi9ndW56aXAuYwoKICAgIE1vdmUgZ3VuemlwKCksIHphbGxvYygpIGFuZCB6ZnJlZSgpIHRvIGEgc2VwYXJhdGUgZmlsZS4KICAgIFNoYXJlIHphbGxvYygpIGFuZCB6ZnJlZSgpIHdpdGggY3JhbWZzIHVuY29tcHJlc3Mgcm91dGluZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IGQ0NWQ1YTE4YjZiMzY2ODhmMjM2NTYyM2Y5ZDU1MDU2NmM2NjRiNWIKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgSmFuIDggMTg6MTE6NDMgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBDbGVhbnVwIE9GL0ZEVCAjaWYvI2VsaWYvI2VuZGlmIHVzZSBpbiBkb19ib290bV9saW51eCgpCgogICAgTWFrZSBDT05GSUdfT0ZfTElCRkRUIGFuZCBDT05GSUdfT0ZfRkxBVF9UUkVFIHVzZSBtb3JlCiAgICByZWFkYWJsZSBpbiBQUEMgdmFyaWFudCBvZiBkb19ib290bV9saW51eCgpIHJvdXRpbmUuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCA1ZDNjYzU1ZWNiYWUyNzdlMDhmNWZmNzcxZGEyMGIxZDZhMzZlYzM2CkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJVHVlIEphbiA4IDE4OjExOjQzIDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gTW92ZSBQUEMgZG9fYm9vdG1fbGludXgoKSB0byBsaWJfcHBjL3BwY19saW51eC5jCgogICAgUFBDIGltcGxlbWVudGF0aW9uIG9mIGRvX2Jvb3RtX2xpbnV4KCkgcm91dGluZSBpcyBtb3ZlZCB0bwogICAgYSBkZWRpY2F0ZWQgZmlsZSBsaWJfcHBjL3BwY19saW51eC5jCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBiOTdhMmEwYTIxZjI3OWQ2NmRlOGE5YmRiZmUyMTkyMDk2OGJjYjFjCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJVHVlIEphbiA4IDE4OjE0OjA5IDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gRGVmaW5lIGEgQVBJIGZvciBpbWFnZSBoYW5kbGluZyBvcGVyYXRpb25zCgogICAgLSBBZGQgaW5saW5lIGhlbHBlciBtYWNyb3MgZm9yIGJhc2ljIGhlYWRlciBwcm9jZXNzaW5nCiAgICAtIE1vdmUgY29tbW9uIG5vbiBpbmxpbmUgY29kZSBjb21tb24vaW1hZ2UuYwogICAgLSBSZXBsYWNlIGRpcmVjdCBoZWFkZXIgYWNjZXNzIHdpdGggdGhlIEFQSSByb3V0aW5lcwogICAgLSBSZW5hbWUgSUhfQ1BVXyogdG8gSUhfQVJDSF8qCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBlZDI5YmM0ZTgxNDJiNDZiNjI2ZjY3NTI0MjA3YjM2ZTQzZDlhYWQ2CkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IEphbiAzMSAxMzoxOTo1OCAyMDA4ICswMTAwCgogICAgQWRkIG1pc3NpbmcgY21kX3hpbWcubyB0byBjb21tb24vTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IDM3ZTNjNjJmYTA3YTgyM2U3NTY5Yzg3MmUzYTkzOTVkMjI3ZWQ4ZTMKQXV0aG9yOiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KRGF0ZToJTW9uIEphbiAyOCAxMDoxNTowMiAyMDA4ICswMTAwCgogICAgQURTNTEyMWU6IEREUjIgaW5pdC90aW1pbmcgdXBkYXRlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+Cgpjb21taXQgYWM5MTUyODMwZDdmZGViYWNlOGEyNjBiNzczN2VmMjg3MGMyMWNhMApBdXRob3I6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSmFuIDMwIDEzOjM2OjU3IDIwMDggLTA3MDAKCiAgICBEZXZpY2UgdHJlZSB1cGRhdGVzCgogICAgQ2hhbmdlcyB0byBtYXRjaCA1MTIxIGRldmljZSB0cmVlIGdvaW5nIG1haW5saW5lIGluIDIuNi4yNS4KCiAgICBDaGFuZ2UgT0ZfU09DIGZyb20gInNvYzUxMjEiIHRvIHBsYWluICJzb2MiLgogICAgUmVtb3ZlIHVubmVlZGVkICJyZWYtZnJlcXVlbmN5IiBmaXh1cHMuCiAgICBSZW1vdmUgImFkZHJlc3MiIGVuZXRhZGRyIGZpeHVwLgoKICAgIEFkZCBidXMtZnJlcXVlbmN5IGZpeHVwIGZvciBvbGQgT0ZfU09DIHNvIG9sZAogICAga2VybmVscyB3aXRoIG9sZCBkZXZpY2UgdHJlZXMgd2lsbCB3b3JrIHdpdGggbmV3CiAgICB1LWJvb3Qgd2l0aCA2Nk1IeiBJUFMgY2xvY2sKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkZTU1ZDE4ZGYzZmYyZWE2MTQ2MjRlNzQ3OTNkZTdjNDM1MjBlMGU3CkF1dGhvcjogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKYW4gMzAgMTM6MzY6NTYgMjAwOCAtMDcwMAoKICAgIENoYW5nZSBJUFMgZnJlcSB0byA2Nk1IegoKICAgIFJlY29tbWVuZGVkIGZyZXF1ZW5jeSBpcyA2Nk1IegogICAgQ2hhbmdlIGRpdmlkZXIgZnJvbSA0IHRvIDMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgY2Q5Y2I2MmY5ZDhiNzhkNmMzYWY1ZDFlOWI1YTNkNjhhM2Q3Mzk3NApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CU1vbiBKYW4gMTQgMjI6Mzg6NTUgMjAwOCArMDEwMAoKICAgIHhzZW5naW5lOiByZW5hbWUgYm9hcmRfcG9zdF9pbml0IHRvIGJvYXJkX2xhdGVfaW5pdAoKICAgIG1pc3NpbmcgbWlncmF0aW9uIGZyb20gIkNsZWFudXAgb2Ygc29tZSBpbml0IGZ1bmN0aW9ucyIKICAgIGluIGM4MzdkY2IxYTMxNjc0NTA5MjU2N2JmZTRmYjI2NmQwOTQxODg0ZmYKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDhkYWZhODc0NzZiMGQ3MTcwZTIxOWMyZjVlMzg0MmM4MzNhOTE4MDcKQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KRGF0ZToJU2F0IEphbiAxMiAyMzozNTozMyAyMDA4IC0wNTAwCgogICAgQWRkIGF0dHJpYnV0ZSBQT1NUX1BSRVJFTCB0byBFQ0MgbWVtb3J5IFBPU1QKCiAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KCmNvbW1pdCBlZDJjZjU0OGNhYzgwY2QzY2Y4MTU0ZGNmZTdiMjY4NWJlZjQ1OTM4CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEphbiAxNyAwODoyNTo0NSAyMDA4IC0wNjAwCgogICAgUUU6IE1vdmUgRkRUIHN1cHBvcnQgaW50byBhIGNvbW1vbiBmaWxlCgogICAgTW92ZSB0aGUgZmxhdCBkZXZpY2UgdHJlZSBzZXR1cCBmb3IgUUUgcmVsYXRlZCBkZXZpY2VzIGludG8KICAgIGEgY29tbW9uIGZpbGUgc2hhcmVkIGJldHdlZW4gODN4eCAmIDg1eHggcGxhdGZvcm1zIHRoYXQgaGF2ZSBRRSdzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZDM4ZGE1Mzc5NDNjZDM2MzU2YjlkM2Q5ZDliNjA1MzM1NTRiODFkOApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglXZWQgSmFuIDIzIDE3OjIwOjE0IDIwMDggKzAxMDAKCiAgICBBVlIzMjogTWFrZSBTRFJBTSByZWZyZXNoIHJhdGUgY29uZmlndXJhYmxlCgogICAgVGhlIGV4aXN0aW5nIGNvZGUgYXNzdW1lcyB0aGUgU0RSQU0gcm93IHJlZnJlc2ggcGVyaW9kIHNob3VsZCBhbHdheXMKICAgIGJlIDE1LjYgdXMuIFRoaXMgaXMgbm90IGFsd2F5cyB0cnVlLCBhbmQgaW5kZWVkIG9uIHRoZSBBVE5HVzEwMCwgdGhlCiAgICByZWZyZXNoIHJhdGUgc2hvdWxkIHJlYWxseSBiZSA3LjgxIHVzLgoKICAgIEFkZCBhIHJlZnJlc2hfcGVyaW9kIG1lbWJlciB0byBzdHJ1Y3Qgc2RyYW1faW5mbyBhbmQgaW5pdGlhbGl6ZSBpdAogICAgcHJvcGVybHkgZm9yIGJvdGggQVRTVEsxMDAwIGFuZCBBVE5HVzEwMC4gT3V0LW9mLXRyZWUgYm9hcmRzIHdpbGwKICAgIHBhbmljKCkgdW50aWwgdGhlIHJlZnJlc2hfcGVyaW9kIG1lbWJlciBpcyB1cGRhdGVkIHByb3Blcmx5LgoKICAgIEJpZyB0aGFua3MgdG8gR2VyaGFyZCBCZXJnaG9mZXIgZm9yIHBvaW50aW5nIG91dCB0aGlzIGlzc3VlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDYxMTUxY2NjYjY2MGNkYjA2YTA3ZmIyODNkZTYwODk5MTNkN2JkZTAKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJVGh1IEFwciAxOSAxMDoxMDoxMSAyMDA3ICswMjAwCgogICAgQVRTVEsxMDAwOiBGaXggcG90ZW50aWFsIGZsYXNoIHByb2dyYW1taW5nIGJ1ZwoKICAgIFRoZSAobm93IG9ic29sZXRlKSBhdG5ndzEwMCBmbGFzaCBwcm9ncmFtbWluZyBjb2RlIHdhcyBoYXZpbmcgcHJvYmxlbXMKICAgIHByb2dyYW1taW5nIHRoZSBvbmJvYXJkIGF0NDlidjY0MiBjaGlwLiBUaGUgYXRzdGsxMDAwIGZsYXNoCiAgICBwcm9ncmFtbWluZyBjb2RlIG1heSBoYXZlIHRoZSBzYW1lIGJ1Zywgc28gaW1wb3J0IGZpeCBmb3IgdGhpcyBwcm9ibGVtCiAgICBmcm9tIHRoZSBBVlIzMiBMaW51eCBCU1AuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgYjJlMWQ1YjY0NDY5ZjEwZGZjY2UyN2Y3YjBhZmQ5MzU2ODRhOGUxMQpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglUaHUgTm92IDIyIDE3OjA0OjEzIDIwMDcgKzAxMDAKCiAgICBBVFNUSzEwMDQ6IEZpeCBjb21tZW50IGFib3V0IGRlZmF1bHQgbG9hZCBhZGRyZXNzCgogICAgVGhlIGRlZmF1bHQgbG9hZCBhZGRyZXNzIGlzIFNEUkFNICsgMk1CLCBub3QgU0RSQU0gKyA0TUIuIFRoZSBsYXR0ZXIKICAgIHdvdWxkbid0IGhhdmUgd29ya2VkIGFueXdheSBzaW5jZSB0aGUgYm9hcmQgY2FuIG9ubHkgYWNjZXNzIDRNQiBvZgogICAgU0RSQU0uCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgODI2OWFiNTM2MDhkOGRiMmFhMDY5NjljMzM3YWIwYjA1MTgyMTFlNQpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglUaHUgTm92IDIyIDE3OjAxOjI0IDIwMDcgKzAxMDAKCiAgICBBVFNUSzEwMDI6IFVzZSBTRFJBTSArIDRNQiBhcyBkZWZhdWx0IGxvYWQgYWRkcmVzcwoKICAgIE1hbnkgcGVvcGxlIHJ1biBpbnRvIHByb2JsZW1zIHdoZW4gdGhleSBjb21waWxlIGEgYmlnIGtlcm5lbCBhbmQgbG9hZAogICAgdGhlIHVJbWFnZSBhdCB0aGUgZGVmYXVsdCBTRFJBTSArIDJNQiBhZGRyZXNzIGFzIHRoZSBrZXJuZWwgd2lsbAogICAgb3ZlcndyaXRlIHRoZSB1SW1hZ2UgYXMgaXQgaXMgYmVpbmcgdW5wYWNrZWQuIEluY3JlYXNlIHRoZSBkZWZhdWx0CiAgICBsb2FkIGFkZHJlc3Mgc28gdGhhdCB3ZSBjYW4gbG9hZCBhIDRNQiBrZXJuZWwgaW1hZ2Ugd2l0aG91dCBhbnkKICAgIHByb2JsZW1zLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDJiY2FjYzJkODQxYjc3ZjNkMmQzOTEwZGI3MjIwMDM3NDI3MjdlOWYKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJVGh1IE5vdiAyMiAxNjo1MTozOSAyMDA3ICswMTAwCgogICAgQVROR1cxMDA6IEZpeCBkZWZhdWx0IG10ZXN0IHJhbmdlCgogICAgTGV0IG10ZXN0IGNvdmVyIHRoZSB3aG9sZSBTRFJBTSBleGNlcHQgdGhlIGxhc3QgbWVnYWJ5dGUsIHdoaWNoIGlzCiAgICB3aGVyZSB1LWJvb3QgbGl2ZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgOTg1NmE2YjMxMDRlMGJjMjEwYjA4NjhkZmU2OTFjNTJiZjAzYzIyNwpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJVHVlIEphbiAyMiAxNTozMTo1NiAyMDA4ICswOTAwCgogICAgc2g6IEZpeCByZWdpc3RlciBhZGRyZXNzIG9mIFNINzcyMi4KCiAgICBUaGUgYWRkcmVzcyBvZiBTSDc3MjIgaXMgd3JvbmcgYnkgb2xkIGRvY3VtZW50LgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGlzIHByb2JsZW0uCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDMwOTQyYjE4YjY2ZjM1ZjJjZWVkYWIzOWFmMTBlOWVjY2FhOTQzY2MKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBGZWIgNCAxOToyNjo1NyAyMDA4IC0wNTAwCgogICAgbmV3IGNvbW1hbmQgZm9yIGRpc3BsYXlpbmcgc3RyaW5ncyBhdCBzcGVjaWZpZWQgbWVtb3J5IGxvY2F0aW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBiNThkOGI0OGUyNWIwYzg2NmQxNjdjYzU3N2YxMThmNTI4Y2Q5ZTBhCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gRmViIDQgMTk6MjY6NTcgMjAwOCAtMDUwMAoKICAgIHJld3JpdGUvY2xlYW51cCBCbGFja2ZpbiBSVEMgZHJpdmVyCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDk0YTkxZTI0OGI3MWMzZmY5NTFmYzI3Y2ZmNjkwOWU4MmNhMzdkMTUKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBGZWIgNCAxOToyNjo1NyAyMDA4IC0wNTAwCgogICAgZ2VuZXJhdGUgdS1ib290LmxkciBmb3IgQmxhY2tmaW4gdGFyZ2V0cwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBiNzc5ZjdhNTk1MzA0MzYwNDBmMTU3Zjc4NDFkYjdhYjc5NjU0MmRmCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gRmViIDQgMTk6MjY6NTcgMjAwOCAtMDUwMAoKICAgIHNjcnViIHVudXNlZCBzeW1ib2xzCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGNjMjk3N2FjYzNiYmJiNzg1MGYxNjY0NWRkMTA4MWY5NTMzNTg2OGQKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBGZWIgNCAxOToyNjo1NyAyMDA4IC0wNTAwCgogICAgbW92ZSBCbGFja2ZpbiBjcHUgb2JqZWN0IGxpc3QgdG8gcmVzcGVjdGl2ZSBjcHUgZGlyZWN0b3JpZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZDBiMDFhMjQ2ZDBhMzUxYmM3ZGNlMWQwYzljZjZhZWJkZjZkNzUwNQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIEZlYiA0IDE5OjI2OjU3IDIwMDggLTA1MDAKCiAgICBpbnRlcmZhY2UgdG8gQmxhY2tmaW4gb24tY2hpcCBPbmUtVGltZS1Qcm9ncmFtbWFibGUgbWVtb3J5CgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDRjNzI3Yzc3ZTQzODcyZDNhMWQxZjc2YTk0OWZjYjNmMjZhMzg3ODgKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBGZWIgNCAxOToyNjo1NiAyMDA4IC0wNTAwCgogICAgYWRkIHN1cHBvcnQgZm9yIG1lbW9yeSBjb21tYW5kcyB3aXRoIEJsYWNrZmluIEwxIGluc3RydWN0aW9uIG1lbW9yeQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA2YjkwOTdlNWU3NDkwYWE3YjgyOGM2ZjFhMWM3YTBlODc1ZGY4NDY0CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gRmViIDQgMTk6MjY6NTYgMjAwOCAtMDUwMAoKICAgIHVzZSBDIGNvZGUgcmF0aGVyIHRoYW4gaW5saW5lIGFzc2VtYmx5CgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDk3YzI2ZTAwNmQyZmE2ZDRlMTU2MDkzM2VlNmYzODVkOGI4OTA4YjkKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBGZWIgNCAxOToyNjo1NiAyMDA4IC0wNTAwCgogICAgYWRkIEJsYWNrZmluLXNwZWNpZmljIHJlZ2luZm8gY29tbWFuZAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAwODU4YjgzNWU3ZWE1MDFlYTA4NGQzNGNlZjc1OTMyZjA5ODM0MmJiCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gRmViIDQgMTk6MjY6NTUgMjAwOCAtMDUwMAoKICAgIGFkZCBzdXBwb3J0IGZvciBCbGFja2ZpbiBzeW1ib2wgcHJlZml4ZXMgdG8gZXhhbXBsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgOGRjNDhkNzFhNGJlNzUzZWE5Zjg0OTU2Y2QzMzYwMGRlMzVmYWQwNApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIEZlYiA0IDE5OjI2OjU1IDIwMDggLTA1MDAKCiAgICBhZGQgQmxhY2tmaW4tc3BlY2lmaWMgYmRpbmZvIGNvbW1hbmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMDAwMzYxM2UzYzdkZjNiODRiMmNiOTJlNzk3ZDc3ZjQ2ZjE1YTQzYQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIEZlYiA0IDE5OjI2OjU1IDIwMDggLTA1MDAKCiAgICBtb3ZlIC1mZml4ZWQtUDUgdG8gYmxhY2tmaW5fY29uZmlnLm1rIGFuZCBkcm9wIHVudXNlZCAtRF9fQkxBQ0tGSU5fXwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA2MGZhNzJkNjU2MTBjN2VmMzNlMWQ2ZGI4NTg5NzlkMDVmZjBkZjU4CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gRmViIDQgMTk6MjY6NTUgMjAwOCAtMDUwMAoKICAgIHVuaWZ5IHRoZSBCbGFja2ZpbiBib2FyZCB0YXJnZXRzCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGQ0ZDc3MzA4NTNlNWQ2NzVmNzZlYzY2NjgwN2RhMzAyOGM5MWQ1OTIKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBGZWIgNCAxOToyNjo1NSAyMDA4IC0wNTAwCgogICAgcHVudCBCbGFja2ZpbiBWRFNQIGhlYWRlcnMgYW5kIGltcG9ydCBzYW5pdGl6ZWQvYXV0by1nZW5lcmF0ZWQgb25lcwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA2Y2ZjY2U2NzY3MWEzNDI1MjI5ZDY2MjAzMzg2ZmEzY2JkMGNjM2JkCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gRmViIDQgMTk6MjY6NTQgMjAwOCAtMDUwMAoKICAgIGFsd2F5cyBwdWxsIGluIGFzbS9ibGFja2Zpbi5oIGZvciBCbGFja2ZpbiBwb3J0cwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBiZjUzOTc0YzJkZGFlNjc4ZDc2NjBmMmI1Y2NmZWIwNzMyYjZmNWRjCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gRmViIDQgMTk6MjY6NTQgMjAwOCAtMDUwMAoKICAgIGFkZCBtaXNzaW5nIF9fcmF3IHZlcnNpb25zIG9mIEJsYWNrZmluIHJlYWQvd3JpdGUgaW8gZnVuY3Rpb25zCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDI0ZTAyZDBmZDNhY2M1MGU3M2UxYTNjZGQ1NjdmMGE3Nzk0NmYxNWQKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBGZWIgNCAxOToyNjo1NCAyMDA4IC0wNTAwCgogICAgYWRkIHRoZSBkZWZhdWx0IEJsYWNrZmluIGxvZ28gdXNlZCBieSBCbGFja2ZpbiBib2FyZHMgd2l0aCBzcGxhc2ggc2NyZWVucwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA0YzU4ZWI1NTUyMjIwZTQyNWM4YWY2YWM4ZDI4MzkyNDRhMmY1N2IxCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gRmViIDQgMTk6MjY6NTQgMjAwOCAtMDUwMAoKICAgIGFkZCBzb21lIG1vcmUgQmxhY2tmaW4gZG9jcwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAzMmE5ZjVmMjE2MGEwMzRlYTg3ZWE2NTFiMjMzZWY3YzYzNWU1NWNmCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gRmViIDQgMTk6MjY6NTQgMjAwOCAtMDUwMAoKICAgIG1ha2Ugc21jOTExMTFfZWVwcm9tIG1hbmFnbWVudCBzaW1wbGVyIGJ5IGRlcGVuZGluZyBvbiB0aGUgYm9hcmQgY29uZmlndXJhdGlvbiBmaWxlIHJhdGhlciB0aGFuIGEgaGFyZGNvZGVkIGxpc3Qgb2YgYm9hcmRzCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDQwODdiYzg4Y2ViZWM3NWM0MzJhN2ZlOWY2YWZiNTQ1YjA5MTk4MzEKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBGZWIgNCAxOToyNjo1NCAyMDA4IC0wNTAwCgogICAgZml4IGJ1aWxkaW5nIG9uIEJsYWNrZmluIGFzIHRoZSBhc3NlbWJsZXIgc3VwcG9ydHMgdGhlIC5zZXQgc3ludGF4LCBub3QgdGhlID0gc3ludGF4LCBmb3IgYXNzaWduaW5nIHN5bWJvbHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYjQ1MjY0ZWU4NWNiZDkyMDIwNjQwYTMyZTAyZmI0MzRmZDU1NzEwOApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIEZlYiA0IDE5OjI2OjUzIDIwMDggLTA1MDAKCiAgICBhZGQgZ2l0aWdub3JlcyBmb3IgQmxhY2tmaW4gcGllY2VzCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGE5MzkwN2M0M2Y4NDdmMDc2ZGQwZTM0ZWUzYjY5YjVlOGU2ZDBkMjkKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglGcmkgSmFuIDE4IDAxOjE0OjAzIDIwMDggKzAxMDAKCiAgICBURlRQOiBhZGQgaG9zdCBpcCBhZGRyIHN1cHBvcnQKCiAgICBhbGxvdyB0byB1c2UgYSBkaWZmZXJlbnQgc2VydmVyIGFzIHNldCBpbiBzZXJ2ZXJpcAogICAgYWRkIENPTkZJR19URlRQX0ZJTEVfTkFNRV9NQVhfTEVOIHRvIGNvbmZpZ3VyZSB0aGUgZmlsZSBuYW1lIGxlbmd0aAogICAgaWYgbm90IGRlZmluZWQgdGhlIG1heCBsZW5ndGggd2lsbCBiZSBhdCAxMjgKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGU1NmI0YjQ5NGNkOTJkZWY1Nzc5NjlmOTY3ODM5NWFhMjJkMzRjOWYKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSmFuIDkgMTQ6MzU6MjYgMjAwOCAtMDYwMAoKICAgIDg1eHgsODZ4eDogRGV0ZXJtaW5lIEkyQyBjbG9jayBmcmVxdWVuY2llcyBhbmQgc3RvcmUgaW4gZ2xvYmFsX2RhdGEKCiAgICBVcGRhdGUgZ2xvYmFsX2RhdGEgdG8gZGVmaW5lIGkyYzFfY2xrIGFuZCBpMmMyX2NsayB0byA4NXh4IGFuZCA4Nnh4LgoKICAgIFVwZGF0ZSB0aGUgZ2V0X2Nsb2NrcygpIGZ1bmN0aW9uIGluIDg1eHggYW5kIDg2eHggdG8gZGV0ZXJtaW5lIHRoZSBJMkMKICAgIGNsb2NrIGZyZXF1ZW5jeSBhbmQgc3RvcmUgaXQgaW4gZ2QtPmkyYzFfY2xrIGFuZCBnZC0+aTJjMl9jbGsuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3ZWM4YmIxNWVlMzY4ZWE1NGQ0OGQ2NDg2Nzc2N2E3MDRkOWFiNGMyCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IERlYyAyNyAxMDo1Njo1NCAyMDA3ICswMTAwCgogICAgT01BUDU5MTI6IGZpeCBGSUZPIGhhbmRsaW5nIGluIFVBUlQgZHJpdmVyCgogICAgQWNjb3JkaW5nIHRvIHRoZSBPTUFQNTkxMiBTZXJpYWwgSW50ZXJmYWNlcyBSZWZlcmVuY2UgR3VpZGUgKHNlZQogICAgaHR0cDovL2ZvY3VzLnRpLmNvbS9saXQvdWcvc3BydTc2MGMvc3BydTc2MGMucGRmLCBwYWdlIDE1MCksIHRoZQogICAgRklGT19FTiBlbmFibGUgYml0IGluIHRoZSBGSUZPIENvbnRyb2wgUmVnaXN0ZXIgKEZDUikgY2FuIG9ubHkgYmUKICAgIGNoYW5nZWQgd2hlbiB0aGUgYmF1ZCBjbG9jayBpcyBub3QgcnVubmluZywgaS4gZS4gd2hlbiBib3RoIERMTCBhbmQKICAgIERMSCBhcmUgc2V0IHRvIDAuCgogICAgVGh1cyBtYWtlIHN1cmUgdGhhdCBETEwgYW5kIERMSCBhcmUgMCB3aGVuIHdyaXRpbmcgdGhlIEZDUi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDE2MTU4Nzc4YjVmNTJmMjAxZTk1ZGVkMmQyZDkwODRiMGVkNTY3MGQKQXV0aG9yOiBIYXJhbGQgV2VsdGUgPGxhZm9yZ2VAb3Blbm1va28ub3JnPgpEYXRlOglXZWQgRGVjIDE5IDE1OjEwOjUyIDIwMDcgKzAxMDAKCiAgICBBUk06IFMzQzI0eDAgU29DIE5BTkQgY29udHJvbGxlciBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBhZGRzIE5BTkQgc3VwcG9ydCB0byB0aGUgUzNDMjR4MCBTb0MgY29kZSBpbiB1LWJvb3QKCiAgICBTaWduZWQtb2ZmLWJ5OiBIYXJhbGQgV2VsdGUgPGxhZm9yZ2VAb3Blbm1va28ub3JnPgoKY29tbWl0IGE3YzE4NWVkM2Q5ZjhlYmQ4NWNmYzI4NmUxZmZlZTcyZTQ4MDMxNjMKQXV0aG9yOiBIYXJhbGQgV2VsdGUgPGxhZm9yZ2VAb3Blbm1va28ub3JnPgpEYXRlOglXZWQgRGVjIDE5IDE0OjI0OjQwIDIwMDcgKzAxMDAKCiAgICBBUk06IHMzYzI0eHg6IE11bHRpcGxlIHNlcmlhbCBwb3J0IHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgQ09ORklHX1NFUklBTF9NVUxUSSBvbiBzM2MyNHgwIENQVSdzCgogICAgU2lnbmVkLW9mZi1ieTogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KCmNvbW1pdCBhMjVmNzJmMWY3M2ExMWRlNjgyNTFmYjg4Yzg5OTkxZTIwMmU2OGZhCkF1dGhvcjogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KRGF0ZToJV2VkIERlYyAxOSAxNDoxNjo1NyAyMDA3ICswMTAwCgogICAgQVJNOiBhcm05MjB0OiBBbGxvdyB1c2Ugb2YgJ2dkJyBwb2ludGVyIGZyb20gSVJRCgogICAgVGhpcyBwYXRjaCBhbGxvd3MgdXMgdG8gdXNlIHRoZSAnZ2QnIHBvaW50ZXIgKGFuZCB0aHVzIGVudmlyb25tZW50CiAgICBhbmQgZXZlcnl0aGluZyBlbHNlIGFzc29jaWF0ZWQgd2l0aCBpdCkgZnJvbSBpbnRlcnJ1cHQgY29udGV4dCBvbgogICAgYXJtOTIwdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYXJhbGQgV2VsdGUgPGxhZm9yZ2VAb3Blbm1va28ub3JnPgoKY29tbWl0IGJlMTliZDVjZDBmNDU0YjYzMjk4ODQ0YTBiNTM3N2UwMjliMmNhYWQKQXV0aG9yOiBIYXJhbGQgV2VsdGUgPGxhZm9yZ2VAb3Blbm1va28ub3JnPgpEYXRlOglXZWQgRGVjIDE5IDE0OjE5OjM4IDIwMDcgKzAxMDAKCiAgICBBUk06IGFybTkyMC9zM2MyNHh4OiBJUlEgZGVtdWxpdHBsZXhlciBjYWxsYmFjawoKICAgIFRoaXMgcGF0Y2ggYWRkcyBhIElSUSBkZW11bHRpcGxleGVyIGNhbGxiYWNrIHRvIHRoZSBhcm05MjAgY3B1IGNvcmUgY29kZSwKICAgIHBsdXMgYSBzdHViIGltcGxlbWVudGF0aW9uIG9mIGl0IGZvciB0aGUgUzNDMjQxMC4KCiAgICBUaGUgcHVycG9zZSBpcyB0byBhbGxvdyBhcm05MjB0IGltcGxlbWVudGF0aW9ucyBzdWNoIGFzIHRoZSBzM2MyNHgwIHRvCiAgICBpbXBsZW1lbnQgaW50ZXJydXB0IGhhbmRsZXJzIGluIHUtYm9vdCB3aXRob3V0IGhhdmluZyB0byB0b3VjaCBjb3JlCiAgICBhcm05MjB0IGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KCmNvbW1pdCBhNDFkYmJkOThkMjAxZDhhZWEzMWI1ZDIxZGY0NzQyYzIwY2Q3ZWRhCkF1dGhvcjogSGViYmFyIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgpEYXRlOglUdWUgRGVjIDE4IDE2OjAzOjA3IDIwMDcgLTA4MDAKCiAgICBBUk06IERpc3BsYXkgRXRoZXJuZXQgaW5mbyBpbiBkb19iZGluZm8gb25seSBpZiBDT05GSUdfQ01EX05FVCBpcyBkZWZpbmVkCgogICAgQWRkIGlmZGVmIHRvIGJkaW5mbyBjb21tYW5kIHRvIGRpc3BsYXkgZXRoZXJuZXQgaW5mb3JtYXRpb24KICAgIG9ubHkgaWYgQ09ORklHX0NNRF9ORVQgaXMgZGVmaW5lZCBmb3IgYXJtIG1vZHVsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSyBSIEd1cnVyYWphIEhlYmJhciA8Z3VydXJhamFrckBzYW55by5jby5pbj4KCmNvbW1pdCBmN2FkNzliNmY5ZjBmNDU0MzdiNjJlMTliNDUzNTZjYzJhYWY0ODg0CkF1dGhvcjogSGViYmFyIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgpEYXRlOglUdWUgRGVjIDE4IDE2OjAwOjU0IDIwMDcgLTA4MDAKCiAgICBBUk06IGFkZCBJMkMgaW5pdCBmdW5jdGlvbiBjYWxsIGluIGxpYl9hcm0vYm9hcmQuYwoKICAgIEFkZHMgSTJDIGluaXQgZnVuYyBjYWxsIHRvIGluaXQgc2VxdWVuY2UgZm9yIEFSTSBib2FyZHMuIFRoaXMgaXMKICAgIHByZXNlbnQgaW4gcHBjLGJsYWNrZmluIGFuZCBvdGhlciBwcm9jZXNzb3IgaW5pdCBzZXF1ZW5jZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLIFIgR3VydXJhamEgSGViYmFyIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgoKY29tbWl0IGZmMDJmMTM5ODA0ZjNjYjYxNDE0ZjdiYmNiZmRhYTAyNzllM2VmYWUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBGZWIgMSAwOTozODoyOSAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBGaXggbmRmYyBIVyBFQ0MgYnl0ZSBvcmRlcgoKICAgIFRoZSBjdXJyZW50IG5kZmMgSFcgRUNDIGltcGxlbWVudGF0aW9uIHN3YXBzIHRoZSBmaXJzdCB0d28gRUNDIGJ5dGVzLgogICAgQnV0IHRoZSA0eHggTkRGQyBhbHJlYWR5IHVzZXMgdGhlIFNNQyAoU21hcnQgTWVkaWEgQ2FyZCkgRUNDIG9yZGVyaW5nLAogICAgc28gdGhpcyBzd2FwcGluZyBpbiB0aGUgSFcgRUNDIGRyaXZlciBpcyBib2d1cy4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzCiAgICBwcm9ibGVtIGFuZCBub3cgcmVhbGx5IHVzZXMgdGhlIFNNQyBFQ0MgYnl0ZSBvcmRlci4KCiAgICBUaGFua3MgdG8gU2VhbiBNYWNMZW5uYW4gZm9yIHBvaW50aW5nIHRoaXMgb3V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlMWQxNDI5YjQ5YjBlZTU4YzgwZjhjN2IyOWMxZWJhZjhiZTdmNWYxCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDMwIDE1OjM1OjUwIDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IEZpeCBHUElPIGNvbmZpZ3VyYXRpb24gZm9yIHBjczQ0MGVwCgogICAgVGhlIFNSRDBfUEZDMCByZWdpc3RlciB3YXMgbm90IGNvbmZpZ3VyZWQgY29ycmVjdGx5IHRvIGVuYWJsZSB0aGUgR1BJTydzCiAgICA0OS02MyBmb3IgR1BJTy4gVGhleSBoYXZlIGJlZW4gY29uZmlndXJlZCBhcyB0cmFjZSBzaWduYWxzLiBUaGlzIHBhdGNoCiAgICBmaXhlcyB0aGlzIGJ5IGNsZWFyaW5nIHRoZSBjb3JyZXNwb25kaW5nIGJpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMjhkNzdkOTY4YmZlMDMxNmRlYjViZjE1YzE3ZjU3ZDVmZjJjODgyMQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEphbiAzMCAxNDo0ODoyOCAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBGaXggcHJvYmxlbSB3aXRoIGluaXQtcmFtIGJpZ2dlciB0aGFuIDRrIG9uIDQ0MCBwbGF0Zm9ybXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNGZlZGZkZGY5NzQ2MWI4ODY2OGI5YWVjNzc0ZGZiN2EwYzZkYzM2OApBdXRob3I6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KRGF0ZToJRnJpIERlYyA3IDAwOjQyOjMyIDIwMDcgKzAxMDAKCiAgICBBUk06IEJvYXJkIHZvaWNlYmx1ZSB1cGRhdGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+Cgpjb21taXQgMmM1MjYwZjcxMTE2OGQ1ZWU5MWM3MGRkYmI3ZDg5NzAxM2VlZmM0NgpBdXRob3I6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KRGF0ZToJVGh1IERlYyA2IDIzOjI0OjU3IDIwMDcgKzAxMDAKCiAgICBBUk06IEFUOTFSTTkyMDAgYmFzZWQgYm9hcmRzIGNvbmZpZyBjbGVhbnVwCgogICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgoKICAgIFJlbW92ZSBub3doZXJlIHVzZWQgc3RydWN0IGJkX2luZm9fZXh0LCByZW1vdmUgdHJhaWxpbmcgd2hpdGVzcGFjZXMsIGZpeAogICAgaW5kZW50YXRpb24uCgpjb21taXQgNDgxZjI4YjFkYjVjZDIxZGViNTVmNjkzOTliYTI0MGUxMDdhZjRjNwpBdXRob3I6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KRGF0ZToJVGh1IERlYyA2IDIyOjU5OjE2IDIwMDcgKzAxMDAKCiAgICBBUk06IEZpeCBhdDkxcm05MjAwZGsgYmFzZSBhZGRyZXNzCgogICAgU29tZXdoZXJlIGR1cmluZyBkZXZlbG9wbWVudCBvZiBVLUJvb3QtMS4xLjMgQ09ORklHX0JPT1RCSU5GVU5DIHdhcwogICAgcmVuYW1lZCBpbnRvIENPTkZJR19JTklUX0NSSVRJQ0FMIHdoaWNoIHdhcyAwNCBBcHIgMjAwNSByZXBsYWNlZAogICAgd2l0aCBDT05GSUdfU0tJUF9MT1dMRVZFTF9JTklUIGFuZCBDT05GSUdfU0tJUF9SRUxPQ0FURV9VQk9PVC4KICAgIEhvd2V2ZXIgQ09ORklHX1NLSVBfTE9XTEVWRUxfSU5JVCBoYXMgb3Bvc2l0ZSBtZWFuaW5nIHRvCiAgICBDT05GSUdfQk9PVEJJTkZVTkMsIHNvIGZpeCBjb25maWd1cmF0aW9uIHRvIHJlZmxlY3QgdGhpcyBmYWN0LgogICAgSSdtIHNlbmRpbmcgdGhpcyBwYXRjaCA0dGggKCEpIHRpbWUgaW4gaG9wZSBpdCBwcm9kdWNlcyBhdCBsZWFzdCBzb21lCiAgICByZWFjdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+CgogICAgRml4IGF0OTFybTkyMDBkayBiYXNlIGFuZCBlbnZpcm9ubWVudCBhZGRyZXNzLgoKY29tbWl0IGM5NTIxOWZhZTJhN2FkZDdkYWEyZjkxYWVkY2E2NWIxNjk4NDY1YzcKQXV0aG9yOiBzdGVmYW5vIGJhYmljIDxzYmFiaWNAZGVueC5kZT4KRGF0ZToJVHVlIE5vdiAyMCAxMDo0MDoyNCAyMDA3ICswMTAwCgogICAgTU1DIGZvciBQWEEgMjdYIChyZXN1Ym1pdCkKCiAgICBNTUMgc3VwcG9ydCBmb3IgWF9TY2FsZSBQWEEgaXMgYnJva2VuIGFuZCBkb2VzIG5vdCB3b3JrLgogICAgTWFpbmx5LCB0aGUgbW1jX2luaXQoKSBmdW5jdGlvbiBjYW5ub3QgcmVjb2duaXplIGN1cnJlbnQgU0QvTU1DIGNhcmRzLgogICAgVGhlcmUgd2VyZSBhbHJlYWR5IHNvbWUgcGF0Y2hlcyBhcm91bmQgdGhlIHdvcmxkIGJ1dCBub25lIG9mIHRoZW0gd2FzCiAgICBtZXJnZWQgaW50byB0aGUgb2ZmaWNpYWwgdS1ib290IHRyZWUuCgogICAgVGhpcyBwYXRjaCBtYWtlcyBvcmRlciBmaXhpbmcgdGhpcyBpc3N1ZS4gUmVzdWJtaXQgYWZ0ZXIgY29kZSBjbGVhbnVwLgoKICAgIEFwcGxpZWQgYW5kIHRlc3RlZCBvbiBQWEEgMjcwIChUcml6ZXBzSVYgbW9kdWxlKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KCmNvbW1pdCA5NmJiZmExZTY2MjVjZTIzYTE1MDkzNjg2M2IzZWNmNGM4NTNlYjMzCkF1dGhvcjogc3RlZmFubyBiYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CVR1ZSBOb3YgMjAgMTA6Mzc6MDQgMjAwNyArMDEwMAoKICAgIEZpeCBnY2MgaXNzdWVzIGluIHB4YS1yZWdzLmgKCiAgICBGaXggZ2NjNCBpc3N1ZS4gV2l0aCBzb21lIHRvb2xjaGFpbiwgYSBwcmV2aW91cyBwYXRjaCB0aGF0IGZpeGVzIGdjYzQKICAgIGlzc3VlcyBnZW5lcmF0ZXMgd3JvbmcgY29kZS4KICAgIChQcm9ibGVtIHdhcyByZXBvcnRlZCB3aXRoIGdjYy00LjAuMi1nbGliYy0yLjMuNi9hcm0tc29mdGZsb2F0LWxpbnV4LWdudSkuCiAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBwcm9ibGVtIGFuZCBzb2x2ZXMgdGhlIGdjYy00IGlzc3VlcyBhcyB0aGUgbGludXgKICAgIGtlcm5lbCBkb2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogRG1pdHJ5IEl2YW5vdiA8aXZhZG1pdHJ5QGdtYWlsLmNvbT4KCmNvbW1pdCA3MDQ3YjM4ODg3NmU3YjkwNWIyZWM0ZWRiODAxMDU0M2UzNjQxYjg1CkF1dGhvcjogSmVucyBHZWhybGVpbiA8c2V3X3NAdHFzLmRlPgpEYXRlOglUdWUgSmFuIDI5IDA4OjQ1OjAzIDIwMDggKzAxMDAKCiAgICBUUU04MzR4OiBlbmFibGUgREhDUAoKICAgIFNpZ25lZC1vZmYtYnk6IEplbnMgR2VocmxlaW4gPHNld19zQHRxcy5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYTg3NzAwNGQ0NGNhN2RiYzFlNjE4YWRkM2VlYjFkYTdjODRlNGJlYwpBdXRob3I6IEplbnMgR2VocmxlaW4gPHNld19zQHRxcy5kZT4KRGF0ZToJVHVlIEphbiAyOSAwODo0NTowMiAyMDA4ICswMTAwCgogICAgVFFNODM0eDogc3VwcG9ydCBmb3IgU3BhbnNpb24gTi10eXBlIEZsYXNoZXMgKHNlY3RvciBzaXplID0gMjU2IEtpQiBhdCAyeDE2IEJpdCkuCgogICAgU2lnbmVkLW9mZi1ieTogSmVucyBHZWhybGVpbiA8c2V3X3NAdHFzLmRlPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4OTMxYWIxNzYwMjViMDNjZmMzMjBiM2ZkMWVjYTQzMmE4OGVkNTYwCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJU2F0IEphbiAyNiAyMzo0MToxOSAyMDA4IC0wNTAwCgogICAgRml4IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG9mIG1weDh4eHhfc3BpIGRyaXZlcgoKICAgIFRoaXMgZHJpdmVyIHNob3VsZCBvbmx5IGNvbXBpbGUgaWYgQ09ORklHX01QQzhYWFhfU1BJIGlzIHNldAoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDYzZjczMmQzZDM4ODBmZWI1MzFmNDhhZjI0N2MwMjViZjAxNDYyYjAKQXV0aG9yOiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgSmFuIDI5IDE3OjAwOjM0IDIwMDggKzAxMDAKCiAgICBBUEk6IFByb3ZpZGUgZHVtbXkgaGFsdCgpIGluIHRoZSBnbHVlIGxheWVyLgoKICAgIFRoaXMgZml4ZXMgYSBkZW1vIGFwcCBsaW5rIGZhaWx1cmUgb24gcGxhdGZvcm1zIGNvbmZpZ3VyZWQgd2l0aCBDT05GSUdfUEFOSUNfSEFORy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgoKY29tbWl0IDBkYzFmYzIyYWY4NmQxNjk5MzM4OGQ5ZWQ5NjMwZGJhYTJkNTE4MjYKQXV0aG9yOiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgSmFuIDI5IDE2OjU3OjM4IDIwMDggKzAxMDAKCiAgICBBUEk6IENvbnZlcnQgY29uZGl0aW9uYWwgYnVpbGRpbmcgdG8gdGhlIG5ldyBzY2hlbWUuCgogICAgVGhpcyBmaXhlcyBhIGJ1aWxkIGJyZWFrYWdlIHdpdGggQ09ORklHX0FQSSBlbmFibGVkLCB3aGljaCBhcHBlYXJlZCBhZnRlcgogICAgdGhlIHJlY2VudCBjaGFuZ2VzIGluIHRoZSBVLUJvb3QgYnVpbGQgc3lzdGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Cgpjb21taXQgOThiNzQyNDg5YzA5NzgwYmU2YTgzMmVlYWE0ZTVlZmY4MjQ3OTJiYgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBKYW4gMjUgMDk6NTY6MTcgMjAwOCArMDEwMAoKICAgIGlua2E0eDA6IHJlbW92ZSBkZWFkIGNvZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDRmOTNmOGIxYTRkMzViNmQzMDI4NDIxMzJlZGJhOTIwZWY4ZjYyYWEKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEphbiAyMyAxNjozMTowNiAyMDA4IC0wNjAwCgogICAgODZ4eDogQWRkIHJlZ2luZm8gY29tbWFuZAoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGRkY2ViY2I2Mzg3MTVhNjI3OGRhOTNiNTUzZDUwMTZmOTk4MjM4MTYKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEphbiAyMyAxNjozMTowNSAyMDA4IC0wNjAwCgogICAgODZ4eDogQWRkIHByaW50X2xhd3MgZnVuY3Rpb24gdG8gZnNsX2xhdy5jCgogICAgVGhpcyBjYW4gYmUgdXNlZCBmb3IgZGVidWcsIGFuZCB3aWxsIGJlIHVzZWQgYnkgYm9hcmQgY29kZQogICAgdG8gaGVscCBpbXBsZW1lbnQgcmVnaW5mby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5Y2QzMjQyNmYyNmEwNTY3YmI2MWYzMzllZGQ4M2M2YTJjZTliZmMzCkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKYW4gMjMgMTY6MzE6MDQgMjAwOCAtMDYwMAoKICAgIDg2eHg6IFJlbW92ZSBvbGQtc3R5bGUgbGF3IHNldHVwIGNvZGUKCiAgICBUaGlzIGluY2x1ZGVzIG1wYzg2MTBocGNkLCBtcGM4NjQxaHBjbiwgYW5kIHNiYzg2NDFkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDcxM2Q4MTg2NjQ5ZGFlODc0NjEzZDQ5NWIwY2VjYWEwMzlhOThiMzAKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEphbiAyMyAxNjozMTowMyAyMDA4IC0wNjAwCgogICAgODZ4eDogQ29udmVydCBzYmM4NjQxZCB0byB1c2UgbmV3IGxhdyBzZXR1cCBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDAzMTk3NmY2MzY0YjkzODMzZTk4OWY1N2U5ZjFlMDIzZTBiZThjNGMKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEphbiAyMyAxNjozMTowMiAyMDA4IC0wNjAwCgogICAgODZ4eDogQ29udmVydCBtcGM4NjEwaHBjZCB0byBuZXcgbGF3IHNldHVwIG1ldGhvZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0OTMzYjkxZjhhNDllNDM2NjgxZjE2M2RmMzE3M2JlYjkxY2FjNDRhCkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKYW4gMjMgMTY6MzE6MDEgMjAwOCAtMDYwMAoKICAgIDg2eHg6IFN1cHBvcnQgbmV3IGxhdyBzZXR1cCBtZXRob2QgYW5kIGNvbnZlcnQgbXBjODY0MQoKICAgIEFkZHMgdGhlIHN1cHBvcnQgY29kZSBpbiBjcHUvbXBjODZ4eCBmb3IgdGhlIG5ldyBsYXcgc2V0dXAgY29kZQogICAgcmVjZW50bHkgY3JlYXRlZCBmc2xfbGF3LmMsIGFuZCBjaGFuZ2VzIHRoZSBNUEM4NjQxSFBDTiBjb25maWcKICAgIHRvIHVzZSB0aGlzIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMWE0MWY3Y2U5YzA4NmUyMDhjMGVhYmY1MjU2NWEyMzdhZjJhMmJkMQpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSmFuIDIzIDE2OjMxOjAwIDIwMDggLTA2MDAKCiAgICA4Nnh4OiBSZWFycmFuZ2UgdGhlIHNlcXVlbmNlIGluIHN0YXJ0LlMKCiAgICAqIHNwbGl0IHRoZSBCQVQgaW5pdGlhbGl6YXRpb24gc28gdGhhdCBvbmx5IDIgQkFUcyAoZm9yIHRoZSBib290IHBhZ2UKICAgIGFuZCBzdGFjaykgYXJlIHByb2dyYW1tZWQgdmVyeSBlYXJseSBvbi4gIFRoZSByZXN0IGFyZSBpbml0aWFsaXplZCBsYXRlci4KICAgICogTW92ZSBvdGhlciBCQVQgc2V0dXAsICBjY3NyYmFyIHNldHVwLCBhbmQgbGF3IHNldHVwIGxhdGVyIGluIHRoZSBjb2RlCiAgICBhZnRlciB0cmFuc2xhdGlvbiBoYXMgYmVlbiBlbmFibGVkLgoKICAgIFRoZXNlIGNoYW5nZXMgd2lsbCBmYWNpbGl0YXRlIHRoZSBtb3Zpbmcgb2YgbGF3IGFuZCBCQVQgaW5pdGlhbGl6YXRpb24KICAgIHRvIEMgY29kZSwgYW5kIHdpbGwgYWlkIHdpdGggMzYtYml0IHBoeXNpY2FsIGFkZHJlc3Npbmcgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzM2RhYzAzYjFiNWQ2MWU0ZmVkN2JhZDQ0NWJhNDBiNGM5N2ZlYmEwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEphbiAyMyAxNDo0MTozNyAyMDA4ICswMTAwCgogICAgQ29kaW5nIFN0eWxlIENsZWFudXA7IHVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDg2NWYwZjk3NTRiOTUxODNjYWQzOTVkZTdlOGNiODVkZjBjNmVhMWYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDIzIDE0OjMxOjE3IDIwMDggKzAxMDAKCiAgICBDb2RpbmcgU3R5bGUgQ2xlYW51cDsgdXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgY2ZlNWNhNzc5NzZhZmRiZTdlY2I4NmUzOWZkNzUwNWJkZTYzNmFjZQpBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEphbiAxOCAxMDowNzowNCAyMDA4ICswODAwCgogICAgbXBjODN4eDogQ29ycmVjdCB0aGUgc3RydWN0IHNwaTh4eHggaW4gbXBjOHh4eF9zcGkuaAoKICAgIFRoZSBjb21taXQgMDRhOWUxMTgwYWM3NmE3YmFjYzE1YTZmY2Q5NWFkODM5ZDY1YmRkYgogICAgY2F1c2UgdGhlIDgzeHggaW1tYXAgYnJva2VuLCBzbyB0aGUgRE1BIGFuZCBQQ0kgd2lsbAogICAgYmUgZmFpbGVkLgoKICAgIFRoZSBwYXRjaCBmaXggdGhlIHN0cnVjdCBzcGk4eHh4IGFuZCBybSBzdHJ1Y3Qgc3BpODN4eC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2YjQ0Mzk0NDQyODZlMGZjZDAxNTk2ZGY1MDRlNmNhODk3YWQzZTVhCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVNhdCBBcHIgMTQgMTc6MTE6NDkgMjAwNyArMDIwMAoKICAgIEFWUjMyOiBBVE5HVzEwMCBib2FyZCBzdXBwb3J0CgogICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBBVE5HVzEwMCBOZXR3b3JrIEdhdGV3YXkgcmVmZXJlbmNlIGRlc2lnbiwKICAgIGluY2x1ZGluZyBmbGFzaCwgZXRoZXJuZXQgYW5kIE1NQyBzdXBwb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGUwMDY5MjdhMGI5YTU0ZThlZTc2ODVkOGFjNzQ4YWFhZDY4MDE4NjIKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJU2F0IE5vdiAyNCAxODoxNTozMSAyMDA3ICswMTAwCgogICAgQVZSMzI6IEluaXRpYWxpemUgaXBhZGRyLCBsb2FkYWRkciBhbmQgYm9vdGZpbGUgYXQgc3RhcnR1cAoKICAgIEkgZG9uJ3Qga25vdyB3aHkgdGhlIHJlbGV2YW50IGxheWVycyBjYW4ndCBkbyB0aGlzIGJ5IGl0c2VsZiwgYnV0IHRoaXMKICAgIGlzIHdoYXQgcHBjIGRvZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgNzk5ODkxZWY3YjFiMzQzMjAzMmVjMjM0NjZkZjZiNjY1YTc5N2ZhNApBdXRob3I6IE1pY2hhZWwgU2Nod2luZ2VuIDxtaWNoYWVsQHNjaHdpbmdlbi5vcmc+CkRhdGU6CUZyaSBKYW4gMTggMDA6MDQ6MjggMjAwOCArMDEwMAoKICAgIEFkZCBBY1R1eCBib2FyZCBzdXBwb3J0CgogICAgSGksCgogICAgVGhlIHBhdGNoIGFkZHMgNCBib2FyZHMsIGNhbGxlZCBBY1R1eC0xIC4uIEFjVHV4LTQuIFRoaXMgcGF0Y2ggY29udGFpbnMgdGhlCiAgICBmaWxlcyB0aGF0CiAgICBjb250YWluIGNoYW5nZXMgZm9yIG11bHRpcGxlIGJvYXJkcywgdGhlIGJvYXJkLXNwZWNpZmljIGZpbGVzIGZvbGxvdyBhcwogICAgc2VwYXJhdGUgcGF0Y2hlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFNjaHdpbmdlbiA8bWljaGFlbEBzY2h3aW5nZW4ub3JnPgoKY29tbWl0IDY2YTQzNDRhNGQ5MTBhMTExMjVkZjc3Njg4OTlhZDUyOTcxOTg1NWUKQXV0aG9yOiBNaWNoYWVsIFNjaHdpbmdlbiA8bWljaGFlbEBzY2h3aW5nZW4ub3JnPgpEYXRlOglXZWQgSmFuIDE2IDE5OjUzOjIzIDIwMDggKzAxMDAKCiAgICBhZGQgQWNUdXgtNCBib2FyZCBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBTY2h3aW5nZW4gPG1pY2hhZWxAc2Nod2luZ2VuLm9yZz4KCmNvbW1pdCBiYzI0MzQ1ZTQxMDFhNWM5OTZkNmI0OGNlNDk3YjA5YzUzMDI1ZGM2CkF1dGhvcjogTWljaGFlbCBTY2h3aW5nZW4gPG1pY2hhZWxAc2Nod2luZ2VuLm9yZz4KRGF0ZToJV2VkIEphbiAxNiAxOTo1MTo1NSAyMDA4ICswMTAwCgogICAgYWRkIEFjVHV4LTMgYm9hcmQgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgU2Nod2luZ2VuIDxtaWNoYWVsQHNjaHdpbmdlbi5vcmc+Cgpjb21taXQgYWViZjAwZmM0ZDEzNDNiMjQ3MTUzNzM4OTNmN2IyMGJmNDYyZDFlOQpBdXRob3I6IE1pY2hhZWwgU2Nod2luZ2VuIDxtaWNoYWVsQHNjaHdpbmdlbi5vcmc+CkRhdGU6CVdlZCBKYW4gMTYgMTk6NTE6MTQgMjAwOCArMDEwMAoKICAgIGFkZCBBY1R1eC0yIGJvYXJkIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFNjaHdpbmdlbiA8bWljaGFlbEBzY2h3aW5nZW4ub3JnPgoKY29tbWl0IGVhOTllOGYwNWI3MjQwZmQ2NTc3MzllMjg2NjY0NjY0YWUxNjBhYmUKQXV0aG9yOiBNaWNoYWVsIFNjaHdpbmdlbiA8bWljaGFlbEBzY2h3aW5nZW4ub3JnPgpEYXRlOglXZWQgSmFuIDE2IDE5OjUwOjM3IDIwMDggKzAxMDAKCiAgICBhZGQgQWNUdXgtMSBib2FyZCBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBTY2h3aW5nZW4gPG1pY2hhZWxAc2Nod2luZ2VuLm9yZz4KCmNvbW1pdCAzZDlmM2JmYjdhMzNlZmU4ZTQxZTAxYjAyNTU2M2NkNzEyYzU3ZDY0CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJTW9uIEphbiAxNCAxOToyMDowOCAyMDA4ICswMTAwCgogICAgQVJNOiByZW1vdmUgdXNlbGVzcyBmdW5jdGlvbiBib2FyZF9wb3N0X2luaXQKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDk2YmQ0NjI5NDIwMjJlNDU2OWI1ODJjMDcyYTBlZDI2ZGUxY2QxOWIKQXV0aG9yOiBNaWNoYWVsIFNjaHdpbmdlbiA8bWljaGFlbEBzY2h3aW5nZW4ub3JnPgpEYXRlOglUaHUgSmFuIDEwIDE0OjU5OjQ2IDIwMDggKzAxMDAKCiAgICBJWFA6IGVuYWJsZSBSVFMKCiAgICBlbmFibGVzIHRoZSBSVFMgc2lnbmFsIHdpdGggQ09ORklHX1NFUklBTF9SVFNfQUNUSVZFLgogICAgTm8gaGFuZHNoYWtpbmcgaXMgZG9uZSwgYnV0IHRoZSBhY3RpdmUgUlRTIHNpZ25hbCBhbGxvd3MgdG8KICAgIGNvbm5lY3QgdG8gdGhlIHRhcmdldCB1c2luZyBhIFBDIHdoaWNoIGlzIHVzaW5nIFJUUy9DVFMKICAgIGhhbmRzaGFrZSwgYW5kIGRvZXMgbm8gaGFybSBpZiB0aGUgUEMgaXMgc2V0IHRvIGlnbm9yZSBSVFMuCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBTY2h3aW5nZW4gPG1pY2hhZWxAc2Nod2luZ2VuLm9yZz4KCmNvbW1pdCBhMWNmMDI3YTA4ZjlkYzFjMGU3Njk0OTllNmY0ZmJkZGNmOWNhYjkzCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJTW9uIEphbiA3IDA4OjQxOjM0IDIwMDggKzAxMDAKCiAgICBJWFA6IGFkZCBkeW5hbWljIG1pY3JvY29kZSBhZGRyCgogICAgYWxsb3cgdG8gbG9hZCB0aGUgbWljcm9kZSBmcm9tIGZsYXNoIG9yIHJhbSBieSBkb3dubG9hZCBpdCB0aHJvdWdoCiAgICB0aGUgc2VyaWFsIG9yIG90aGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDYzZWJjYzQ2MTVkZDM5OTI2Y2NmNjFmMWQ1ZjM1MTAyNjJlZjY1NjQKQXV0aG9yOiBNaWNoYWVsIFNjaHdpbmdlbiA8bWljaGFlbEBzY2h3aW5nZW4ub3JnPgpEYXRlOglTYXQgTm92IDEwIDE1OjQ0OjEyIDIwMDcgKzAxMDAKCiAgICBsb2FkIGl4cDQyeCBOUEUgZmlybXdhcmUgZnJvbSBzZXBhcmF0ZSBmbGFzaCBibG9jaywgcmVtb3ZlIGRlYWQgY29kZQoKICAgIEhpLAoKICAgIHRoZSBmb2xsb3dpbmcgcGF0Y2ggYWRkcyBzdXBwb3J0IHRvIG1vdmUgdGhlIElYUDQyWCBOUEUgZmlybXdhcmUgdG8gYQogICAgc2VwYXJhdGUgZmxhc2ggYmxvY2ssIHdob3NlIHN0YXJ0IGFkZHJlc3MgaXMgZGVmaW5lZCBpbgogICAgQ09ORklHX0lYUDRYWF9OUEVfRVhUX1VDT0RFX0JBU0UuIFVzaW5nIHRoYXQsIGl0IGlzIHBvc3NpYmxlIHRvIGJ1aWxkCiAgICBOUEUtZW5hYmxlZCB1LWJvb3Qgd2l0aG91dCBjb3B5cmlnaHQgcHJvYmxlbXMgZHVlIHRvIHRoZSBOUEUgZmlybXdhcmUuCgogICAgSSBob3BlIHRoZSBwYXRjaCBhcHBsaWVzLCBJIGdldCB3aGl0ZXNwYWNlLXJlbGF0ZWQgZGlmZmVyZW5jZXMgaW4gdGhlIE5QRQogICAgZmlsZXMgZHVlIHRvIHRyYWlsaW5nIHdoaXRlc3BhY2UgaW4gdGhlIG9yaWdpbmFsIHZlcnNpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgU2Nod2luZ2VuIDxtaWNoYWVsQHNjaHdpbmdlbi5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDU3YTEyNzIwMWViM2Q4Y2MxOTE3MGEwMDhlMGJkN2FmNjA4YmQ3MmYKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKYW4gMTUgMTQ6MTU6NDYgMjAwOCAtMDYwMAoKICAgIENvbGRGaXJlOiBNQ0Y1NDd4Xzh4IC0gQWRkIE01NDc1RVZCIGFuZCBNNTQ4NUVWQiBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZiBieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMWFlZTExMTEzNWQ4NjYwYTE2NGQ0ZjZiZjdkNjZiMDMyZWE1MzVjZgpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEphbiAxNSAxNDowMjo0OSAyMDA4IC0wNjAwCgogICAgQ29sZEZpcmU6IE1DRjU0N3hfOHggLSBBZGQgTTU0N3hFVkIgYW5kIE01NDh4RVZCIGJvYXJkCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZiBieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNzc3ZDFhYmQ5Nzk2ZjFjMmUxNDg0MTdjYzEwNjU3ZTg0N2QzMThjZQpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEphbiAxNSAxNDowMDoyNSAyMDA4IC0wNjAwCgogICAgQ29sZEZpcmU6IEFkZCBNQ0Y1NDd4Xzh4IEZFQyBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgogICAgU2lnbmVkLW9mZiBieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNzJmNTZhZGMwYjI1ZDQzODc1YWQwNjdiYWU2YmUxYmNlYTg2Yjc5ZgpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEphbiAxNSAxMzo1NDowOSAyMDA4IC0wNjAwCgogICAgQ29sZEZpcmU6IEFkZCBNQ0Y1NDd4Xzh4IGRtYSBjb2RlIGFuZCBoZWFkZXIgZmlsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmIGJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjZTA5ZmM0OWI1NmVhM2M0NDI3OTRiNmJlOWI3ZGI0Yjk5ZGZkYzg3CkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSmFuIDE1IDEzOjUyOjAzIDIwMDggLTA2MDAKCiAgICBDb2xkRmlyZTogQWRkIE1DRjU0N3hfOHggZG1hIGNvZGUgLSAyCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZiBieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTE4NjVlYTg0NGU3MTU0ZmQzMGM3ZTI4NjBkYTRlZWQ0YTEyYWQxZgpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEphbiAxNSAxMzo0ODo1MiAyMDA4IC0wNjAwCgogICAgQ29sZEZpcmU6IEFkZCBNQ0Y1NDd4Xzh4IGRtYSBjb2RlIC0gMQoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYgYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ2MjFmYzNmZTdjZDY1Yjc4YjNjYmQzMWY2NWM5ZjdmNzJiMjJiZDMKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKYW4gMTUgMTM6Mzk6NDQgMjAwOCAtMDYwMAoKICAgIENvbGRGaXJlOiBBZGQgTUNGNTQ3eF84eCByZWxhdGVkIGhlYWRlciBmaWxlcwoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmIGJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1NzBjMDE4NmFlY2FiMWI3NDdiMmQ0NGQwZTFkM2MxYWM0Y2IyN2Y1CkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSmFuIDE1IDEzOjM3OjM0IDIwMDggLTA2MDAKCiAgICBDb2xkRmlyZTogQWRkIE1DRjU0N3hfOHggY3B1IGFyY2gKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmIGJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlMjc1NmY0YjU0YWJhMGUwNTIzYjgxZGQxNDU2NjY4MjljZjdmZDU5CkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSmFuIDE0IDE3OjQ3OjIzIDIwMDggLTA2MDAKCiAgICBDb2xkRmlyZTogQWRkIE1DRjUyMjd4IGNwdSBhbmQgTTUyMjc3RVZCIHN1cHBvcnQtMwoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYgYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGM4NzU4MTAyNzk5NGMxNDgxMzFiMmYxMWFhNzU1MDFmNzgyZWMxOWEKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKYW4gMTQgMTc6NDY6MTkgMjAwOCAtMDYwMAoKICAgIENvbGRGaXJlOiBBZGQgTUNGNTIyN3ggY3B1IGFuZCBNQ0Y1MjI3N0VWQiBzdXBwb3J0LTIKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmIGJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxNTUyYWY3MGVjYWIxMWI5ZjNkY2VmZjc1MjhlZDE1ZmFmNjc4YjlkCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSmFuIDE0IDE3OjQzOjMzIDIwMDggLTA2MDAKCiAgICBDb2xkRmlyZTogQWRkIE1DRjUyMjd4IGNwdSBhbmQgTTUyMjc3RVZCIHN1cHBvcnQtMQoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYgYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDM5N2I3YjgxYTFmMTAwODc5OGFlMTIwNjkxMzUwOGNjODljYjNhN2QKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKYW4gMTQgMTc6MzU6NDQgMjAwOCAtMDYwMAoKICAgIENvbGRGaXJlOiBGaXggQ0ZJIEZsYXNoIGxvdyBsZXZlbCBSZWFkL1dyaXRlIG1hY3JvCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZiBieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYWE1ZjFmOWRjODE1YTc2ZjZkZmZiNTgwNzk4NTk5YzAyOGZlN2ZlYgpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEphbiAxNCAxNzoyMzowOCAyMDA4IC0wNjAwCgogICAgQ29sZEZpcmU6IEFkZCBNNTM3M0VWQiBwbGF0Zm9ybSBzdXBwb3J0IC0gMgoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYgYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFhYzU1OWQ0YWEzNThmNjNiNDhjNjJiNTY0MjI0YzA2ZmVlYjRlMzYKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKYW4gMTQgMTc6MTk6NTQgMjAwOCAtMDYwMAoKICAgIENvbGRGaXJlOiBBZGQgTTUzNzNFVkIgcGxhdGZvcm0gc3VwcG9ydCAtIDEKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmIGJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzMjBkNjE5OTFmYTMxOTBlZTQxNzY1NjAxZWQwMTdiNmI1ZmY3YjJiCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSmFuIDE0IDE3OjE3OjAzIDIwMDggLTA2MDAKCiAgICBDb2xkRmlyZTogVXBkYXRlIEZsZXhCdXMgQ1MgZm9yIE1DRjUzMngKCiAgICBEZWZpbml0aW9uIHVwZGF0ZSBhbmQgY2hhbmdlIGZyb20gMTZiaXQgdG8gMzJiaXQKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmIGJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyZTcyYWQwNjQ0Yjk0MDgxN2E4OWEzNTkwY2UwZDdiOTljMDVjMzk2CkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSmFuIDE0IDE3OjExOjQ3IDIwMDggLTA2MDAKCiAgICBDb2xkRmlyZTogUENJIGFuZCBtaXNjIHVwZGF0ZXMgZm9yIE1DRjU0NDV4CgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZiBieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDJiMTY0OTM0ODBhYzNkNGE2MGFkN2Q4MzViMGRjMjdkMmU5OWNlZQpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEphbiAxNCAxNzowNjo1NSAyMDA4IC0wNjAwCgogICAgQ29sZEZpcmU6IE1DRjU0NDV4IGhlYWRlciBmaWxlcyBjbGVhbnVwCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZiBieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDlhYWU2MjYwOTkzYTkzZjdmY2YxM2FiZmY4NWE2MDFmNGY1MGVhNwpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEphbiAxNCAxNjo1OTo0MiAyMDA4IC0wNjAwCgogICAgQ29sZEZpcmU6IE1DRjUzMnggaGVhZGVyIGZpbGVzIGNsZWFudXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmIGJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3YWY3NzUxZDA0N2U3NGIyZWM1ODQwMGY5N2I4NzljNTY0NDZiM2U4CkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSmFuIDE0IDE1OjMwOjE1IDIwMDggLTA2MDAKCiAgICBDb2xkRmlyZTogQWRkIG1vZHVsZXMgaGVhZGVyIGZpbGVzCgogICAgQWRkIENGIHNwZWNpZmljIG1vZHVsZXMgaGVhZGVyIGZpbGVzCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDI5NTZhY2Q1ZWY5M2E0OTgzMzdmOGFjMmVjNmFlNmE3N2Q0OTFkYzUKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSmFuIDE3IDEyOjQ4OjAwIDIwMDggLTA2MDAKCiAgICBjb2RpbmdzdHlsZSBjbGVhbnVwIGZvciBzcGkgZHJpdmVyCgogICAgLi5hbmQgcm0gdW51c2VkIENPTkZJR19GU0xfU1BJIGRlZmluZQoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDU5ZmVmZmI0MmM5ZjE3NDExNmRiN2E4MmEzMTFkZjk4OTgzZGZjZQpBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKYW4gMTYgMTc6MTI6MTIgMjAwOCAtMDUwMAoKICAgIEZTTDogRml4IGNvbW1vbiBFRVBST01fZGF0YSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbgoKICAgIC0gRml4IEVFUFJPTV9kYXRhIHN0cnVjdHVyZSBkZWZpbml0aW9uIGFjY29yZGluZyB0byBTeXN0ZW0gRUVQUk9NIERhdGEgRm9ybWF0LgogICAgLSBSZWFkIE1BQyBhZGRyZXNzZXMgZnJvbSBFRVBST00gdG8gZXRoWGFkZHIgYmVmb3JlIHNhdmluZyBldGhYYWRkciB0bwogICAgICBiZC0+YmlfZXRoYWRkci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDZiZWU3NjRiZDZkYTUxMGE0YWFkNjE0ODgwMzAwYzk2OGJjNzMxOGQKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSmFuIDE2IDE1OjQ4OjEyIDIwMDggLTA2MDAKCiAgICA4Nnh4OiBlbmFibGUgY29tbWFuZC1saW5lIGVkaXRpbmcKCiAgICBFbmFibGUgY29tbWFuZC1saW5lIGVkaXRpbmcgZm9yIGFsbCBNUEM4Nnh4IGJvYXJkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDgwZGRkMjI2MjZkMzIxYTc3MmViZmJhMzA0ZWI3ODMwY2I0ZjZiYWMKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglXZWQgSmFuIDE2IDIyOjM3OjQyIDIwMDggLTA1MDAKCiAgICBJbXBsZW1lbnQgaGFyZCBTUEkgZHJpdmVyIG9uIE1QQzgzNDlFTURTCgogICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSBmc2xfc3BpIGRyaXZlciBvbiB0aGUgTVBDODM0OUVNRFMgZXZhbHVhdGlvbiBib2FyZC4KICAgIFRoaXMgYm9hcmQgaGFzIGFuIFNUIE0yNVA0MCA0TWJpdCBFRVBST00gb24gaXRzIFNQSSBidXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwNGE5ZTExODBhYzc2YTdiYWNjMTVhNmZjZDk1YWQ4MzlkNjViZGRiCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJV2VkIEphbiAxNiAyMjozNzozNSAyMDA4IC0wNTAwCgogICAgQWRkIHN1cHBvcnQgZm9yIGEgRnJlZXNjYWxlIG5vbi1DUE0gU1BJIGNvbnRyb2xsZXIKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFNQSSBjb250cm9sbGVyIGZvdW5kIG9uIEZyZWVzY2FsZSBQb3dlclBDCiAgICBwcm9jZXNzb3JzIHN1Y2ggYXMgdGhlIE1DUDgzNHggZmFtaWx5LiAgQWRkaXRpb25hbGx5LCBhIG5ldyBjb25maWcgb3B0aW9uLAogICAgQ09ORklHX0hBUkRfU1BJLCBpcyBhZGRlZCBmb3IgZ2VuZXJhbCBwdXJwb3NlIFNQSSBjb250cm9sbGVyIHVzZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhOGNiNDNhODliZTZjZmQyODMyNTdhNjAzZGQ5ODQxNTAzY2NjZTBmCkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSmFuIDE3IDE4OjIzOjE5IDIwMDggKzA4MDAKCiAgICBtcGM4M3h4OiBGaXggdGhlIGZhdGFsIGNvbmZsaWN0IG9mIG1lcmdlCgogICAgVGhlIGNvbW1pdCA5ZTg5NjQ3ODg5Y2Q0YjVhZGE1YjVlN2NhZDZjYmU1NTczN2EwOGQ3CiAgICB3aWxsIGNhdXNlIHRoZSBtcGM4MzE1ZXJkYiBib2FyZCBjYW4ndCBib290IHVwLgoKICAgIFRoZSBwYXRjaCBmaXggdGhhdCBidWcsIGFuZCByZW1vdmUgdGhlIGR1cGxpY2F0ZWQgI2lmZGVmCiAgICBDRkdfU1BDUl9UU0VDRVAgY29kZSBhbmQgY2xlYW4gdGhlIFNDQ1JfVFNFQzIgZm9yCiAgICBNUEM4MzEzRSBwcm9jZXNzb3IuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzI1OWVlYWE0MTQ4MTI1YTgxNDE3NDc3ZjYyYzA1YmQ2N2Y2MDU4NwpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgpEYXRlOglUaHUgSmFuIDE3IDA4OjUwOjA5IDIwMDggLTA1MDAKCiAgICBNZXJnZSBTZXF1b2lhIGJlYXV0aWZpY2F0aW9uIGludG8gS29yYXQgY29kZQoKICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgoKY29tbWl0IGUxNjkyNTc3MzIxMTI5MWI1NjJlNzcxODcwNjFlOWRkMWQ3NTcyMTcKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVGh1IEphbiAxNyAwNzo0NTowNSAyMDA4ICswMTAwCgogICAgbmV0OiBhZGQgJ2V0aHJvdGF0ZScgZW52aXJvbm1lbnQgdmFyaWFibGUKCiAgICBbUEFUQ0hdIG5ldDogYWRkICdldGhyb3RhdGUnIGVudmlyb25tZW50IHZhcmlhYmxlCgogICAgVGhpcyBwYXRjaCByZXBsYWNlcyB0aGUgYnVpbGR0aW1lIGNvbmZpZ3VyYXRpb24gb3B0aW9uCiAgICBDT05GSUdfTkVUX0RPX05PVF9UUllfQU5PVEhFUiB0aHJvdWdoIHRoZSAnZXRocm90YXRlJyBydW50aW1lCiAgICBjb25maWd1cmF0aW9uIHZlcmlhYmxlLiBTZWUgUkVBRE1FLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBiYTUyYmUzZDBlNjE4YzI2MDcwZTkzYWFmM2MxZjJkMmFkZjU1NzFmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgSmFuIDE3IDE0OjI5OjA0IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IEZpeCBjb21waWxhdGlvbiB3YXJuaW5ncyBhbmQgY29kaW5nIHN0eWxlIGlzc3VlcyBpbiBIQ1U0L0hDVTUKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNTVlZDE1MTZjYmMxZGFkM2FlMjc3YzY3ZWUwNmZjNGE0NmVhYWM3ZApBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJVGh1IEphbiAxNyAxODowNzozMiAyMDA4ICswOTAwCgogICAgc2g6IFJlbW92ZSBDT05GSUdfQ09NTUFORFMgZnJvbSBNUzc3MjBTRSBjb25maWcgZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCAwNTU2MDZiZDI1ZTg4YzBjZDA0YWQzNDhhNjc5YTA0YjFiNjE2YmVlCkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KRGF0ZToJV2VkIEphbiAxNiAxODozOToyMCAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBOZXRzdGFsIEhDVTQgYm9hcmQ6IGFkZGVkIHZhcmlvdXMgZml4ZXMgYW5kIFBPU1QKCiAgICAtIE1vdmVkIHNvbWUgY29tbW9uIGNvZGUgdG8gbmV0c3RhbC9jb21tb24vbm1fYnNwLmMuCiAgICAtIHNkcmFtIGluaXRpYWxpc2F0aW9uIGdvZXMgZ28gbmV0c3RhbC9jb21tb24vZml4ZWRfc2RyYW0uYy4KICAgIC0gQWRkZWQgc3VwcG9ydCBmb3IgUE9TVC4KICAgIC0gU3R5bGlzdGljIGNsZWFudXBzIChtdWx0aS1saW5lIGNvbW1lbnRzLyBlbmZvcmNlIDgwIGNvbG9tbiB3aWR0aCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgoKY29tbWl0IDY5YjA2MzRhNGVlOThjOTc5MTgxNTYwMGQ0M2I5OWY2MjZhOTUyZjMKQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgpEYXRlOglUaHUgSmFuIDE3IDEyOjUzOjU2IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IG5ldHN0YWwvY29tbW9uIGRlZmluZSByb3V0aW5lcyB1c2VkIGJ5IGFsbCBib2FyZHMKCiAgICBBZGRlZCBzb21lIHJvdXRpbmVzIHVzZWQgYnkgYWxsIE5ldHN0YWwgYm9hcmRzOgogICAgLSBubV9ic3AuYzogLSBubV9zaG93X3ByaW50IGFuZAoJICAgIC0gIGNvbW1vbl9taXNjX2luaXRfcgoJICAgIC0gc2V0X3BhcmFtc19mb3Jfc3dfaW5zdGFsbC4gVmVyeSBzcGVjaWZpYyBjb2RlIHRvIGhhbmRsZSBvdXIgU1cKCSAgICAgIGluc3RhbGxhdGlvbiBwcm9jZWR1cmUKICAgIC0gZml4ZWRfc2RyYW0uYzogQ29tbW9uIHJvdXRpbmVzIGZvciBIQ1U0IChhbmQgdXBjb21pbmcpIE1DVTI1IGJvYXJkcwogICAgICB0byBoYW5kbGUgc2RyYW0gaW5pdGlhbGl6YXRpb24uCiAgICAtIG5tLmg6IENvbW1vbiBoZWFkZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgoKY29tbWl0IGVmZWZmNTM4MmI3YTkxYjQ4YTFhYTY4YjJiNzVmOTJhZDFkMzNmZjgKQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgpEYXRlOglXZWQgSmFuIDE2IDE4OjM5OjE4IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IE5ldHN0YWwgSENVNSBib2FyZDogYWRkZWQgdmFyaW91cyBmaXhlcyBhbmQgUE9TVAoKICAgIC0gTW92ZWQgc29tZSBjb21tb24gY29kZSB0byBuZXN0YWwvY29tbW9uL25tX2JzcC5jLgogICAgLSBBZGRlZCBzdXBwb3J0IGZvciB0aGUgdnhXb3JrcyBFRFIuCiAgICAtIEVuYWJsZSB0cmFjZSBmb3IgTGF1dGVyYmFjaCwgaWYgcHJlc2VudC4KICAgIC0gQWRkZWQgc3VwcG9ydCBmb3IgUE9TVC4KICAgIC0gU3R5bGlzdGljIGNsZWFudXBzIChtdWx0aS1saW5lIGNvbW1lbnRzLyBlbmZvcmNlIDgwIGNvbG9tbiB3aWR0aCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgoKY29tbWl0IDQzNzEwOTBlNWRhNzdlZGM3YmY5ZjI5NjM2NGRiNDgwMTYzOWQ5YzQKQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgpEYXRlOglXZWQgSmFuIDE2IDE4OjM5OjA4IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IE5ldHN0YWwgSENVNSBib2FyZC4gQWRkZWQgUE9TVC4gVmFyaW91cyBmaXhlcwoKICAgIC0gVmFyaW91cyBmaXhlcwogICAgLSBSZWR1Y2VkIHJvbV9zaXplIGZyb20gMzg0IHRvIDMyMCBrQgogICAgLSBFbnZpcm9ubWVudCBpcyBub3cgaW4gZmxhc2gKICAgIC0gQWRkZWQgUE9TVAogICAgLSBTdXBwb3J0IGZvciBPRgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgNGJkNTAzNmU2MGFmYWMzN2U0ODRjMmQzNWNiYmU3ZjZjYzE2MjNlNwpBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+CkRhdGU6CVdlZCBKYW4gMTYgMTg6Mzc6NTAgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogTmV0c3RhbCBIQ1U0IGJvYXJkLiBBZGRlZCBQT1NULiBWYXJpb3VzIGZpeGVzCgogICAgLSBWYXJpb3VzIGZpeGVzCiAgICAtIFJlZHVjZWQgcm9tX3NpemUgZnJvbSAzODQgdG8gMzIwIGtCCiAgICAtIEVudmlyb25tZW50IGlzIG5vdyBpbiBmbGFzaAogICAgLSBBZGRlZCBQT1NUCiAgICAtIFN1cHBvcnQgZm9yIE9GCgogICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KCmNvbW1pdCAxYTNhYzg2Yjc5ZmNiNjkwMjc1Yzg1ODYxYzhlZmE2YTM4OTkwNjBhCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVRodSBKYW4gMTcgMTA6NTM6MDggMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQ29tcGxldGUgRFU0NDAgYm9hcmQgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDE1YTA4YmMyYmVmOTFlNWYxZWE0YjljZjYwZTQ2ODMyZDg2YmNjMWYKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVGh1IEphbiAxNyAxMDo1MjozMCAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBBZGQgRFU0NDAgYm9hcmQgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IGFjMzMxZGEwN2RiMzg2MGYxMWZhMWQwZmQzZGI3YzgxMGJjZTExOTgKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVRodSBKYW4gMTcgMTU6NTM6NTIgMjAwOCArMDkwMAoKICAgIHNoOiBVcGRhdGUgU3VwZXJIIFNDSUYgZHJpdmVyCgogICAgVGhpcyBwYXRjaCBmaXhlZCB3cm9uZyBTSDc3MjAgQ1BVIG1hY3JvIGFuZCBjaGFuZ2VkIG1hY3JvIHRoYXQKICAgIGNhbGN1bGF0ZWQgdmFsdWUgb2YgU0NCUlIgcmVnaXN0ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDMzNGU0NDJlNmZhYzU5YmU5MTI0NDA2M2U5YjNmNmNhMjVlOGRhZjgKQXV0aG9yOiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIEphbiAxNiAxNToxMjo0NyAyMDA4ICswMTAwCgogICAgU2V0IGlwcyBkaXZpZG9yIHRvIDEvNCBvZiBjc2IgY2xvY2suCgogICAgUHJldmlvdXMgc2V0dGluZyBjYXVzZSBpcHMgY2xvY2sgdG8gYmUgb3V0IG9mIHNwZWMuIFRoaXMgYnVnIHdhcyBmb3VuZCBieSBKb2huCiAgICBSaWdieSBmcm9tIEZyZWVzY2FsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KCmNvbW1pdCA3ZGMzNThiYjBkZTllMmZhMzQxZjNiNGM5MTQ0NjZiMWYzNGIyZDg5CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEphbiAxNyAwMjoxOToxOCAyMDA4IC0wNjAwCgogICAgODV4eDogR2V0IHJpZGUgb2Ygb2xkIFRMQiBzZXR1cCBjb2RlCgogICAgTm93IHRoYXQgYWxsIGJvYXJkcyBoYXZlIGJlZW4gY29udmVydGVkLCByZW1vdmUgb2xkIGNvbmZpZyBjb2RlIGFuZCB0aGUKICAgIGNvbmZpZyBvcHRpb24gZm9yIHRoZSBuZXcgc3R5bGUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAzYjU1OGUyNmE1ZWYzMTYzNTc4N2Q2ZDZlOTdkNzA5MzlkNGY4OTJkCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEphbiAxNyAwMjowMjoxMCAyMDA4IC0wNjAwCgogICAgODV4eDogQ29udmVydCBUUU04NXh4IHRvIG5ldyBUTEIgc2V0dXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDc0MTIxYjQ3MGMxNGY3ZWFmMjg0ZWU4MzhiZmZjYTZmOTUyMTA2OWUKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgSmFuIDE3IDAxOjU2OjMyIDIwMDggLTA2MDAKCiAgICA4NXh4OiBDb252ZXJ0IFNUWEdQMyAmIFNUWFNTQSB0byBuZXcgVExCIHNldHVwCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAxNDNiNTE4ZDkxMjViNTRmOTZmMWQ3ZjFhZmM2NDBiOGFhZTgxZmYwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEphbiAxNyAwMTo0NDozNCAyMDA4IC0wNjAwCgogICAgODV4eDogQ29udmVydCBTQkM4NTQwL1NCQzg1NjAvU0JDODU0OCB0byBuZXcgVExCIHNldHVwCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA4MTgyMThiYWM2YTExNTkxZTI1NDJjMzQ0ZDIzMzBlMGY0ZTE5NjhiCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEphbiAxNyAwMTozMTozNCAyMDA4IC0wNjAwCgogICAgODV4eDogQ29udmVydCBQTTg1NC9QTTg1NiB0byBuZXcgVExCIHNldHVwCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmZjQ2ODFjOTI4NWIyYjRkMjQ1NTJhMTljYWNjMTc2OWZlMmZjN2UwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEphbiAxNyAwMToyNTozMyAyMDA4IC0wNjAwCgogICAgODV4eDogQ29udmVydCBNUEM4NTQwRVZBTCB0byBuZXcgVExCIHNldHVwCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA3M2FhOWFjMmI0NmYxY2ZkMDM5MTA2ZWJkNmI5ODY1MDE2MDA1MjM0CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEphbiAxNyAwMToxMjoyMiAyMDA4IC0wNjAwCgogICAgODV4eDogQ29udmVydCBNUEM4NTY4IE1EUyB0byBuZXcgVExCIHNldHVwCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAwZGIzN2RjMmVlZDMwODg0ZGIyZGFhMjRkYmQ5YTExM2I1ZDAwNjEwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEphbiAxNyAwMTowMTowOSAyMDA4IC0wNjAwCgogICAgODV4eDogQ29udmVydCBNUEM4NTQxL01QQzg1NTUvTVBDODU0OCBDRFMgdG8gbmV3IFRMQiBzZXR1cAoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMjE5YTgxYjk4ZDgzNGY5MDcxYjZmN2MzYmRjNmI3ZWMzOWNjNDZjYwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBKYW4gMTcgMDA6NTI6MjkgMjAwOCAtMDYwMAoKICAgIDg1eHg6IENvbnZlcnQgTVBDODU0MC9NUEM4NTYwIEFEUyB0byBuZXcgVExCIHNldHVwCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA4MGQwYjZhMTQ5ODc2MWM0MzU1YjJkYjljODAwMWIwNGMyOTVlN2I4CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEphbiAxNyAwMDozMjoxNyAyMDA4IC0wNjAwCgogICAgODV4eDogQ29udmVydCBBVFVNODU0OCB0byBuZXcgVExCIHNldHVwCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAwZjdhM2RjOTVjYmZmM2MyMWJkNmRiYzYzOTMxMzc5NjQxMmJiYmFiCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEphbiAxNiAyMzoxMTo1NyAyMDA4IC0wNjAwCgogICAgODV4eDogQ29udmVydCBNUEM4NTQ0IERTIHRvIG5ldyBUTEIgc2V0dXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDg3MTYzMTgwNTdhNWY2MGFiMWJhMDgxZWNlMmRiZTgyYWUwMGUxZWUKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgSmFuIDE2IDIyOjM4OjM0IDIwMDggLTA2MDAKCiAgICA4NXh4OiBSZXdvcmtlZCBpbml0aWFsIHByb2Nlc3NvciBpbml0CgogICAgUmV3b3JrZWQgdGhlIGluaXRpYWwgcHJvY2Vzc29yIGluaXRpYWx6YXRpb24gc2VxdWVuY2U6CiAgICAqIGludHJvZHVjZWQgY3B1X2Vhcmx5X2luaXRfZiB0aGF0IGlzIHJ1biBpbiBhZGRyZXNzIHNwYWNlIDEgKEFTPTEpCiAgICAqIE1vdmVkIFRMQi9MQVcgYW5kIENDU1IgaW5pdCBpbnRvIGNwdV9lYXJseV9pbml0X2YoKQogICAgKiBSZXdvcmtlZCBpbml0aWFsIGFzbSBjb2RlIHRvIGRvIG1vc3Qgb2YgdGhlIGNvcmUgaW5pdCBiZWZvcmUgVExCcwoKICAgIFRoZSBtYWluIHJlYXNvbnMgZm9yIHRoZXNlIGNoYW5nZXMgYXJlIHRvIGFsbG93IGhhbmRsaW5nIG9mIDM2LWJpdCBwaHlzCiAgICBhZGRyZXNzZXMgaW4gdGhlIGZ1dHVyZSBhbmQgc29tZSBvZiB0aGUgaXNzdWVzIHRoYXQgd2lsbCBleGlzdCB3aGVuIHdlCiAgICBkbyB0aGF0LgoKICAgIFRoZXJlIGFyZSBhIGZldyBjYXZlYXRzIG9uIHdoYXQgY2FuIGJlIGluaXRpYWxpemVkIHZpYSB0aGUgTEFXIGFuZCBUTEIKICAgIHN0YXRpYyB0YWJsZXM6CiAgICAqIFRMQiBlbnRyeSAxNC8xNSBjYW4ndCBiZSBpbml0aWFsaXplZCB2aWEgdGhlIFRMQiB0YWJsZQogICAgKiBhbnkgTEFXIHRoYXQgY292ZXJzIHRoZSBpbXBsaWNpdCBib290IHdpbmRvdyAoNEctOE0gdG8gNEcpIG11c3QgbWFwIHRvCiAgICAgIHRoZSBjb2RlIHRoYXQgaXMgY3VycmVudGx5IGV4ZWN1dGluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDQ0YTIzY2ZkNjM2MGE2OGVhYTQxZjk0NTE5MDYxOGE1NTUxOWVhYzMKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgSmFuIDE2IDIyOjMzOjIyIDIwMDggLTA2MDAKCiAgICA4NXh4OiBJbnRyb2R1Y2UgbmV3IHRsYiBBUEkKCiAgICBBZGQgYSBzZXQgb2YgZnVuY3Rpb25zIHRvIG1hbmlwdWxhdGUgVExCIGVudHJpZXM6CiAgICAgKiBzZXRfdGxiKCkgLSB3cml0ZSBhIHRsYiBlbnRyeQogICAgICogaW52YWxpZGF0ZV90bGIoKSAtIGludmFsaWRhdGUgYSB0bGIgYXJyYXkKICAgICAqIGRpc2FibGVfdGxiKCkgLSBkaXNhYmxlIGEgdmFyaWFibGUgc2l6ZSB0bGIgZW50cnkKICAgICAqIGluaXRfdGxicygpIC0gc2V0dXAgaW5pdGlhbCB0bGJzIGJhc2VkIG9uIHN0YXRpYyB0YWJsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYmU4OGIxNjk5ODYzYzI2MjgxOGYzYWY3ZjYwMTczYjRkNDhkZjhmYwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEphbiAxNyAwNzo1MDoxNyAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBGaXggcmVtYWluaW5nIENPTkZJR19DT01NQU5EUyBpbiA0eHggZmlsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYzhjNDFkNGE4MGIxYThhZDU5ODRhMjg3ZDgxZWE3ODA0OTYyNTlmOApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBKYW4gMTYgMTA6MDQ6NDIgMjAwOCAtMDYwMAoKICAgIDg1eHg6IFVzZSBwcm9wZXIgZGVmaW5lcyBmb3IgUENJIGFkZHJlc3NlcwoKICAgIFdlIHNob3VsZCBiZSB1c2luZyB0aGUgX01FTV9QSFlTIGZvciBMQVcgYW5kIFRMQiBzZXR1cCBhbmQgbm90IF9NRU1fQkFTRS4KICAgIFdoaWxlIF9NRU1fQkFTRSAmIF9NRU1fUEhZUyBhcmUgbm9ybWFsbHkgdGhlIHNhbWUsIF9NRU1fQkFTRSBzaG91bGQgb25seQogICAgYmUgdXNlZCBmb3IgY29uZmlndXJpbmcgdGhlIFBDSSBBVE1VLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNTRhNTA3MDExNWVmZjM4ZTliMzI0Yjc4YWJkZmEwYjQ1MjA1ODBiOQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBKYW4gMTYgMDk6MjI6MjkgMjAwOCAtMDYwMAoKICAgIDg1eHg6IFJlbW92ZSBvbGQgc3R5bGUgb2YgTEFXIGluaXQKCiAgICBBbGwgYm9hcmRzIGFyZSBub3cgdXNpbmcgdGhlIG5ldyBmc2xfbGF3IGNvZGUgc28gd2UgY2FuIGRyb3AgdGhlIG9sZCB2ZXJzaW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNGQzNTIxY2M3OWNhYmM2MWVkZjEyYzQ4YzBjZTMxOGQ0ZWZiNzEyZgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBKYW4gMTYgMDk6MTU6MjkgMjAwOCAtMDYwMAoKICAgIDg1eHg6IGNvbnZlcnQgcmVtYWluaW5nIDg1eHggYm9hcmRzIG92ZXIgdG8gdXNlIG5ldyBMQVcgaW5pdCBjb2RlCgogICAgQ29udmVydGVkIEFUVU04NTQ4LCBNUEM4NTY4IE1EUywgTVBDODU0MCBFVkFMLCBhbmQgVFFNODV4eCBib2FyZHMgb3ZlcgogICAgdG8gdXNlIG5ldyBMQVcgaW5pdCBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNTcyYjEzYWZjNDI3MTBmMjk1N2MzODJhNzEwMzYwNDI5YzBlMDk5YgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBKYW4gMTYgMDk6MTE6NTMgMjAwOCAtMDYwMAoKICAgIDg1eHg6IGNvbnZlcnQgU1RYR1AzL1NUWFNTQSBvdmVyIHRvIHVzZSBuZXcgTEFXIGluaXQgY29kZQoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNDVmMjE2NmFjMDIzM2E5MjYzMDU4Mzc4ZjM5NjEyYmQxMWY2MTE5NgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBKYW4gMTYgMDk6MDY6NDggMjAwOCAtMDYwMAoKICAgIDg1eHg6IGNvbnZlcnQgUE04NTQvUE04NTYgb3ZlciB0byB1c2UgbmV3IExBVyBpbml0IGNvZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGUyYjE1OWQwMDcwZWUwNmU0YWM3ZTJmOTM4MWQzZThlNTQyZTYxNGEKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgSmFuIDE2IDA5OjA1OjI3IDIwMDggLTA2MDAKCiAgICA4NXh4OiBjb252ZXJ0IFNCQzg1NDAvU0JDODU2MC9TQkM4NTQ4IG92ZXIgdG8gdXNlIG5ldyBMQVcgaW5pdCBjb2RlCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAyY2ZhYTFhYTFhYWMzOWE4MTAwNmI3YjI3ZTBlNDMxYmYyMWY2ZGZhCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEphbiAxNiAwMTo0NToxMCAyMDA4IC0wNjAwCgogICAgODV4eDogY29udmVydCBNUEM4NTQxL01QQzg1NTUvTVBDODU0OCBDRFMgb3ZlciB0byB1c2UgbmV3IExBVyBpbml0IGNvZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDcyMzJhMjcyNGNjYzlkY2JjM2VjNGVmODRhZGEwMmYxM2NjZDEyMzgKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgSmFuIDE2IDAxOjMyOjA2IDIwMDggLTA2MDAKCiAgICA4NXh4OiBjb252ZXJ0IE1QQzg1NDAvTVBDODU2MCBBRFMgb3ZlciB0byB1c2UgbmV3IExBVyBpbml0IGNvZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDRiY2FlOWM5MmFlZTBkNzJhMmYxOWI4MWNhYjI3ZWYzODEwN2NlNzUKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgSmFuIDE2IDAxOjE2OjE2IDIwMDggLTA2MDAKCiAgICA4NXh4OiBjb252ZXJ0IE1QQzg1NDQgRFMgb3ZlciB0byB1c2UgbmV3IExBVyBpbml0IGNvZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDgzZDQwZGZkNzlmZTg2ODc5NjI3NTgwMmY2MDExNmQ4NGI5ZTQzOTUKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgSmFuIDE2IDAxOjEzOjU4IDIwMDggLTA2MDAKCiAgICA4NXh4OiBNb3ZlIExBVyBpbml0IGNvZGUgaW50byBDCgogICAgTW92ZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIExBV3MgaW50byBDIGNvZGUgYW5kIHByb3ZpZGUgYW4gQVBJCiAgICB0byBhbGxvdyBtb2RpZmljYXRpb24gb2YgTEFXcyBhZnRlciBpbml0LgoKICAgIEJvYXJkIGNvZGUgaXMgcmVzcG9uc2libGUgdG8gcHJvdmlkZSBhIGxhd190YWJsZSBhbmQgbnVtX2xhd19lbnRyaWVzLgoKICAgIFdlIHNob3VsZCBiZSBhYmxlIHRvIHVzZSB0aGUgc2FtZSBjb2RlIG9uIDg2eHggYXMgd2VsbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGJlZDhjZTgzOGE2MDlhYWFiMTM2ZDQzYjI1ZTZkZjJhNTIwYmM4NTQKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgRGVjIDIyIDE1OjAzOjEyIDIwMDcgKzAxMDAKCiAgICBxZW11LW1pcHM6IGFjdGl2ZSBIVVNIIFBBUlNFUiwgQVVUT19DT01QTEVURSBhbmQgQ01ETElORV9FRElUSU5HCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAwNzY0YzE2NGZlZDYyNzdkMzU5Y2YxMzJkNTUxODdlYTM0MjkwMTE0CkF1dGhvcjogVmxhZCBMdW5ndSA8dmxhZEBjb21zeXMucm8+CkRhdGU6CVdlZCBKYW4gMTYgMTk6Mjc6NTEgMjAwOCArMDIwMAoKICAgIE1JUFM6VGFyZ2V0IHN1cHBvcnQgZm9yIHFlbXUgLU0gbWlwcwoKICAgIFdpdGggc2VyaWFsLCBORTIwMDAsIElERSBzdXBwb3J0LiBUZXN0ZWQgaW4gYmlnLWVuZGlhbiBtb2RlLgogICAgTWVtb3J5IHNpemUgaGFyZC1jb2RlZCB0byAxMjhNIGZvciBub3csIHNvIGRvbid0IHBsYXkgd2l0aAogICAgdGhlIC1tIG9wdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4KCmNvbW1pdCA3ZjUyZmEzYzJkZjU5ZTQ5ZGMyYmFkZDdjMDg0Y2YyZDAwN2M0MzhmCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIEphbiAxMSAwMDowMTozNyAyMDA4ICswMTAwCgogICAgRml4IG5mcyBjb21tYW5kIGhlbHAgdG8gcmVmbGVjdCB0aGF0IHRoZSBzZXJ2ZXJpcCBpcyBvcHRpb25hbAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGI4ZjQxNjJhNGY3YTliZWU1ZTlkMDMwNWMxN2YyZDM0ZGU0NjZhOWIKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglNb24gRGVjIDEwIDIyOjMyOjE0IDIwMDcgKzAxMDAKCiAgICBiZjUzNy1zdGFtcDogcmVtb3ZlIGFscmVhZHkgZGVmaW5lZCBpc196ZXJvX2V0aGVyX2FkZHIgYW5kIGlzX211bHRpY2FzdF9ldGhlcl9hZGRyCgogICAgYW5kIG1vdmUgaXNfdmFsaWRfZXRoZXJfYWRkciBib2FyZCBmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYzJmODk2YjhmYzQ3MjJlMzY5MTU5MDNlMTk0MmUxMzhlNjhjZTgwNApBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KRGF0ZToJV2VkIEphbiAxNiAxNjoxMzozMSAyMDA4ICswOTAwCgogICAgZHJpdmVycy9uZXQvcnRsODEzOS5jOiByeF9zdGF0dXMgc2hvdWxkIGJlIGxlMzJfdG9fY3B1KHJ4X3N0YXR1cykuCgogICAgcnhfc3RhdHVzIG9uIHRoZSBtZW1vcnkgaXMgYmFzaWNhbGx5IGluIExFLCBidXQgbmVlZHMgdG8gYmUgaGFuZGxlZCBpbiBDUFUKICAgIGVuZGlhbi4gbGUzMl90b19jcHUoKSB0YWtlcyB1cCB0aGlzIG1pc3Npb24uIEV2ZW4gaWYgb24gdGhlIHNhbmUgaGFyZHdhcmUsCiAgICBpdCdsbCB3b3JrIGZpbmUuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgogICAgQ2M6IE1hc2FtaSBLb21peWEgPG1rb21peWFAc29uYXJlLml0PgogICAgQ2M6IEx1Y2FzIEppbiA8bHVjYXNqaW5AZ21haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA5NmEyMzY3NDZmZTZhN2I4NDgwMmFmYjRlZDMxNTM2Njk2ZDM0ODEyCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgpEYXRlOglXZWQgSmFuIDE2IDE2OjEyOjI2IDIwMDggKzA5MDAKCiAgICBkcml2ZXJzL25ldC9ydGw4MTM5LmM6IEZpeCBjYWNoZSBjb2hlcmVuY3kgaXNzdWVzCgogICAgQ3VycmVudCBkcml2ZXIgaXMgbWVhbnQgZm9yIGNhY2hlIGNvaGVyZW50IHN5c3RlbXMuIFRoaXMgcGF0Y2ggYWRkcwogICAgZmx1c2hfY2FjaGUoKSByb3V0aW5lcyB0byBzdXBwb3J0IGNhY2hlIG5vbi1jb2hlcmVudCBzeXN0ZW1zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KICAgIENjOiBNYXNhbWkgS29taXlhIDxta29taXlhQHNvbmFyZS5pdD4KICAgIENjOiBMdWNhcyBKaW4gPGx1Y2FzamluQGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZDEyNzZjNzZjMWUyYjUwMzUyOTY2ODkyODBiYTFhY2IyYzQyNTEwNApBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KRGF0ZToJV2VkIEphbiAxNiAxNjoxMToxNCAyMDA4ICswOTAwCgogICAgZHJpdmVycy9uZXQvcnRsODEzOS5jOiBGaXggdHggdGltZW91dAoKICAgICJ0byA9IChjdXJydGlja3MoKSArIFJUTF9USU1FT1VUKSIgaGFzIHBvc3NpYmlsaXRpZXMgdG8gd3JhcCBhcm91bmQuIElmIGl0CiAgICBkb2VzLCB0aGUgY29uZGl0aW9uICIoY3VycnRpY2tzKCkgPCB0bykiIGJlY29tZXMgaW52YWxpZCBhbmQgaW1tZWRpYXRlbHkKICAgIGxlYWRzIHRvIHR4IHRpbWVvdXQgZXJyb3IuIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0aGUgZmluZS1ncmFkZWQgdWRlbHkoMTApCiAgICBsb29wcyB0byBlYXNlIHRoZSBpbXBhY3Qgb2Ygd3JhcHBpbmcgYXJvdW5kLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KICAgIENjOiBNYXNhbWkgS29taXlhIDxta29taXlhQHNvbmFyZS5pdD4KICAgIENjOiBMdWNhcyBKaW4gPGx1Y2FzamluQGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMThlZTMyMGZmNjNlZGJmN2IyN2JiZWIwNWYwZTEyYTUyMzAyYzY4YQpBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEphbiAxMSAxODo0NToyOCAyMDA4ICswODAwCgogICAgVFNFQzogQWRkIHRoZSBzdXBwb3J0IGZvciBSZWFsVGVrIFJUTDgyMTFCIFBIWQoKICAgIEFkZCB0aGUgc3VwcG9ydCBvZiBSZWFsVGVrIFJUTDgyMTFCIFBIWSwgdGhlIFJUTDgyMTFCCiAgICBQSFkgb25seSBzdXBwb3J0cyBSR01JSSBhbmQgTUlJIG1vZGUuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgODRhMzA0N2I3MmI3MGU4NjJiMGI3YThlMjA1ODA3NzQ1N2Y4OWEzMgpBdXRob3I6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgpEYXRlOglXZWQgSmFuIDE2IDA5OjQwOjQxIDIwMDggKzAxMDAKCiAgICBSZW1vdmUgYW5ub3lpbmcgZGVidWcgcHJpbnRvdXQgZm9yIFBIWSBsZXNzIGJvYXJkcy4KCiAgICBQSFkgbGVzcyBib2FyZCBwcmludHMgb3V0IGxvdHMgb2YgInJlYWQgd3JvbmcgLi4uIjoKICAgIHJlYWQgd3JvbmcgdmFsdWUgOiBtaWlfaWQgMyxtaWlfcmVnIDIsIGJhc2UgZTAxMDIzMjAKICAgIHJlYWQgd3JvbmcgdmFsdWUgOiBtaWlfaWQgMyxtaWlfcmVnIDMsIGJhc2UgZTAxMDIzMjAKICAgIFVFQzogUEhZIGlzIEdlbmVyaWMgTUlJIChmZmZmZmZmZikKICAgIHJlYWQgd3JvbmcgdmFsdWUgOiBtaWlfaWQgMyxtaWlfcmVnIDQsIGJhc2UgZTAxMDIzMjAKICAgIHJlYWQgd3JvbmcgdmFsdWUgOiBtaWlfaWQgMyxtaWlfcmVnIDAsIGJhc2UgZTAxMDIzMjAKICAgIHJlYWQgd3JvbmcgdmFsdWUgOiBtaWlfaWQgMyxtaWlfcmVnIDEsIGJhc2UgZTAxMDIzMjAKICAgIHJlYWQgd3JvbmcgdmFsdWUgOiBtaWlfaWQgMyxtaWlfcmVnIDEsIGJhc2UgZTAxMDIzMjAKICAgIHJlYWQgd3JvbmcgdmFsdWUgOiBtaWlfaWQgMyxtaWlfcmVnIDUsIGJhc2UgZTAxMDIzMjAKICAgIHJlYWQgd3JvbmcgdmFsdWUgOiBtaWlfaWQgMyxtaWlfcmVnIDEsIGJhc2UgZTAxMDIzMjAKICAgIHJlYWQgd3JvbmcgdmFsdWUgOiBtaWlfaWQgMyxtaWlfcmVnIDEsIGJhc2UgZTAxMDIzMjAKICAgIHJlYWQgd3JvbmcgdmFsdWUgOiBtaWlfaWQgMyxtaWlfcmVnIDUsIGJhc2UgZTAxMDIzMjAKICAgIEZTTCBVRUMwOiBGdWxsIER1cGxleAogICAgRlNMIFVFQzA6IFNwZWVkIDEwMEJUCiAgICBGU0wgVUVDMDogTGluayBpcyB1cAogICAgVXNpbmcgRlNMIFVFQzAgZGV2aWNlCgogICAgTWFrZSB0aGlzIHByaW50b3V0IGRlcGVuZCBvbiBVRUNfVkVSQk9TRV9ERUJVRyBhbmQKICAgIHJlbW92ZSBpdHMgZGVmaW5pdGlvbiBpbiB1ZWNfcGh5LmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZWU2MmVkMzI4NmY4M2I5OGI3Nzg1ZTAzMThkYzYzNzllNzhmN2ZmNgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKYW4gMTUgMTQ6MTE6MDAgMjAwOCAtMDYwMAoKICAgIG5ldDogcmVkdWNlIGJvb3QgbGF0ZW5jeSBvbiBRRSBVRUMgYmFzZWQgYm9hcmRzCgogICAgYWN0dWFsbHkgcG9sbGluZyBmb3IgUEhZIGF1dG9uZWdvdGlhdGlvbiB0byBmaW5pc2ggZW5hYmxlcyB1cyB0byByZW1vdmUgdGhlCiAgICA1IHNlY29uZCBib290IHByb21wdCBsYXRlbmN5IHByZXNlbnQgb24gUUUgYmFzZWQgYm9hcmRzLgoKICAgIGNhbGwgdG8gcWVfc2V0X21paV9jbGtfc3JjIGluIGluaXRfcGh5LCBhbmQgbXYgY2FsbCB0byBpbml0X3BoeSBmcm9tCiAgICB1ZWNfaW5pdGlhbGl6ZSB0byB1ZWNfaW5pdCBieSBKb2FraW0gVGplcm5sdW5kOyBhdXRvbmVnb3RpYXRpb24gd2FpdAogICAgY29kZSBzaGFtZWxlc3NseSBzdG9sZW4gZnJvbSB0c2VjIGRyaXZlci4KCiAgICBhbHNvIHJtIHVudXNlZCBDT05GSUdfUk1JSV9NT0RFIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA1NWZlN2M1N2E4Yjk5YTEzMDkyNTA1MmRjZGJiNzdmMDUzZGM1MGUzCkF1dGhvcjogbWljaGFlbC5maXJ0aEBidC5jb20gPG1pY2hhZWwuZmlydGhAYnQuY29tPgpEYXRlOglXZWQgSmFuIDE2IDExOjQwOjUxIDIwMDggKzAwMDAKCiAgICBUU0VDIGRyaXZlcjogQ2hhbmdlIE1ESU8gc3VwcG9ydCB0byBhbGxvdyBhY2Nlc3MgdG8gYW55IFBIWXMgb24gdGhlIE1ESU8gYnVzCgogICAgVGhlIGN1cnJlbnQgVFNFQyBkcml2ZXIgbGltaXRzIE1ESU8gYWNjZXNzIHRvIHRoZSBkZXZpY2VzIHRoYXQgaGF2ZSBiZWVuIGNvbmZpZ3VyZWQgYXMgYXR0YWNoZWQKICAgIHRvIGEgVFNFQyBNQUMuIFRoaXMgcGF0Y2ggYWxsb3dzIGFjY2VzcyB0byBhbnkgUEhZIGRldmljZSBvbiB0aGUgTURJTyBidXMgdGhyb3VnaCB0aGUgJ21paScgY29tbWFuZHMuCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBGaXJ0aCA8bWljaGFlbC5maXJ0aEBidC5jb20+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA1ZTkxOGE5OGMyNmU4YWI5YjVkMmQ0OGQ5OThhMmNlZDJiNWI4NWIzCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEphbiAxNiAwMDozODowNSAyMDA4IC0wNjAwCgogICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBNUEM4Mzd4RVJEQgoKICAgIE1QQzgzN3hFUkRCIGJvYXJkIHN1cHBvcnQgaW5jbHVkZXM6CiAgICAqIEREUjIgMzMwTUh6IGhhcmRjb2RlZCAoc29sZGVyZWQgb24gdGhlIGJvYXJkKQogICAgKiBMb2NhbCBCdXMgTk9SIEZsYXNoCiAgICAqIEkyQywgVUFSVCBhbmQgUlRDCiAgICAqIGVUU0VDIFJHTUlJIChUU0VDMCAtIFJUTDgyMTFCIHdpdGggTUlJOwogICAgKgkgICAgICAgVFNFQzEgLSBWU0M3Mzg1IGxvY2FsIGJ1cywgaGFyZGNvZGVkLCByZXF1aXJlcyBzZXBlcmF0ZSBmaXJtd2FyZQogICAgKgkJICAgICAgIGxvYWQpCgogICAgU2lnbmVkLW9mZi1ieTogS2V2aW4gTGFtIDxrZXZpbi5sYW1AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvZSBEJ0FiYnJhY2NpbyA8am9lLmQnYWJicmFjY2lvQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDllODk2NDc4ODljZDRiNWFkYTViNWU3Y2FkNmNiZTU1NzM3YTA4ZDcKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSmFuIDE2IDEyOjA2OjE2IDIwMDggLTA2MDAKCiAgICBtcGM4M3h4OiBhZGQgc3VwcG9ydCBmb3IgbW9yZSBzeXN0ZW0gY2xvY2sgcGVyZm9ybWFuY2UgY29udHJvbHMKCiAgICBTeXN0ZW0gcmVnaXN0ZXJzIHRoYXQgYXJlIG1vZGlmaWVkIGFyZSB0aGUgQXJiaXRlciBDb25maWd1cmF0aW9uCiAgICBSZWdpc3RlciAoQUNSKSwgdGhlIFN5c3RlbSBQcmlvcml0eSBDb250cm9sIFJlZ2lzdGVyIChTUENSKSwgYW5kIHRoZQogICAgU3lzdGVtIENsb2NrIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgKFNDQ1IpLgoKICAgIFNpZ25lZC1vZmYgYnk6IE1pY2hhZWwgRi4gUmVpc3MgPE1pY2hhZWwuRi5SZWlzc0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZiBieTogSm9lIEQnQWJicmFjY2lvIDxsamQwMTVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTZjM2NkZTA1MGUyZDI0M2U2MmIzNzQ4NmYxNTU4NTcwNzg3YmViOApBdXRob3I6IEphbWVzIFlhbmcgPGphbWVzLnlhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEphbiAxNiAxMTo1ODowOCAyMDA4IC0wNjAwCgogICAgRlNMOiBHZW5lcmFsaXplIFBJWElTIHJlc2V0IGNvbW1hbmQgcGFyc2luZy4KCiAgICBCZWZvcmUsIHRoZSBvcmRlciBvZiBhcmd1bWVudHMgdG8gdGhlIHBpeGlzX3Jlc2V0CiAgICBjb21tYW5kIG5lZWRlZCB0byBiZSBzdXBwbGllZCBpbiBhIGhhcmQtY29kZWQgb3JkZXIuCiAgICBHZW5lcmFsaXplIHRoZSBjb21tYW5kIHBhcnNpbmcgdG8gYWxsb3cgYW55IG9yZGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEphbWVzIFlhbmcgPGphbWVzLnlhbmdAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGFkOGY4Njg3Yjc4YzNlOTE3YjE3M2YwMzg5MjY2OTUzODNjNTU1NTUKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSmFuIDE1IDEzOjQyOjQxIDIwMDggLTA2MDAKCiAgICBGU0w6IENvbnZlcnQgYm9hcmQvZnJlZXNjYWxlL2NvbW1vbi9NYWtlZmlsZSB0byB1c2UgQ09ORklHXwoKICAgIENvbnZlcnQgdGhlIGJvYXJkL2ZyZWVzY2FsZS9jb21tb24vTWFrZWZpbGUgdG8gdXNlCiAgICBDT05GSUdfKiBvcHRpb25zIHRvIHNlbGVjdCB3aGljaCBmaWxlcyB0byBjb25kaXRpb25hbGx5CiAgICBjb21waWxlIGludG8gdGhlIGJvYXJkL2ZyZWVzY2FsZS9jb21tb24gbGlicmFyeSByYXRoZXIKICAgIHRoYW4gY29uZGl0aW9uYWxseSBjb21waWxpbmcgZW50aXJlIGZpbGVzLgoKICAgIE5vdyBoYW5kbGVzOjoKCUNPTkZJR19GU0xfUElYSVMKCUNPTkZJR19GU0xfRElVX0ZCCglDT05GSUdfUFFfTURTX1BJQgoKICAgIENPTkZJR19JRF9FRVBST00gaXMgaW50cm9kdWNlZCB1bnRpbCBDRkdfSURfRUVQUk9NIGlzIGdvbmUuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3YzIyMjFlYjIzMDM3MmE5ZTUzN2M0ZjY2MzZiMTQ3YjA5MDkzMjVmCkF1dGhvcjogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSmFuIDE1IDE2OjM4OjM4IDIwMDggKzA4MDAKCiAgICBVc2UgQ09ORklHX1VMSTUyNlggYXMgTVBDODYxMEhQQ0QgZGVmYXVsdCBFdGhlcm5ldCBkcml2ZXIKCiAgICBVc2UgZHJpdmVyL25ldC91bGk1MjZ4LmMgYXMgTVBDODYxMEhQQ0QgZGVmYXVsdCBFdGhlcm5ldCBkcml2ZXIuCiAgICBSZW1vdmUgdW51c2VkIGV0aGVybmV0IENPTkZJR18gb3B0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3MTFhNzk0NjI3N2QyZTI5YWY0ODEwMTFlODYzNWU5OTc1YzU0ZTQ1CkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEphbiAxNSAxNDowNToxNCAyMDA4IC0wNjAwCgogICAgbXBjODN4eDogZml4IFFFIEVUSFBSSU1FcyB0byBjb3JyZWN0ICdGU0wgVUVDMCcgdmFsdWUKCiAgICBjb250aW51YXRpb24gb2YgY29tbWl0IGI5NmM4M2Q0YWU0NzVhNzBlZjI2MzVjZDBlNzQ4MTc0YzQ0Yzg2MDEKCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDM2M2VlYTlmZjdmMTlhMmNiYTE3ZjI2MmJkMTc1NTlmMTY2ZTEzNGUKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSmFuIDE1IDA5OjUxOjEyIDIwMDggLTA2MDAKCiAgICBtcGM4M3h4OiBjbGVhbiB1cCBtcGM4MzYwZW1kcy5jIHdhcm5pbmdzCgogICAgbXBjODM2MGVtZHMuYzogSW4gZnVuY3Rpb24gJ2Z0X2JvYXJkX3NldHVwJzoKICAgIG1wYzgzNjBlbWRzLmM6MzI3OiB3YXJuaW5nOiBhc3NpZ25tZW50IG1ha2VzIHBvaW50ZXIgZnJvbSBpbnRlZ2VyIHdpdGhvdXQgYSBjYXN0CiAgICBtcGM4MzYwZW1kcy5jOjMyOTogd2FybmluZzogcGFzc2luZyBhcmd1bWVudCAyIG9mICdmZHRfZ2V0cHJvcCcgbWFrZXMgaW50ZWdlciBmcm9tIHBvaW50ZXIgd2l0aG91dCBhIGNhc3QKICAgIG1wYzgzNjBlbWRzLmM6MzM0OiB3YXJuaW5nOiBwYXNzaW5nIGFyZ3VtZW50IDIgb2YgJ2ZkdF9zZXRwcm9wJyBtYWtlcyBpbnRlZ2VyIGZyb20gcG9pbnRlciB3aXRob3V0IGEgY2FzdAogICAgbXBjODM2MGVtZHMuYzozNDE6IHdhcm5pbmc6IGFzc2lnbm1lbnQgbWFrZXMgcG9pbnRlciBmcm9tIGludGVnZXIgd2l0aG91dCBhIGNhc3QKICAgIG1wYzgzNjBlbWRzLmM6MzQzOiB3YXJuaW5nOiBwYXNzaW5nIGFyZ3VtZW50IDIgb2YgJ2ZkdF9nZXRwcm9wJyBtYWtlcyBpbnRlZ2VyIGZyb20gcG9pbnRlciB3aXRob3V0IGEgY2FzdAogICAgbXBjODM2MGVtZHMuYzozNDg6IHdhcm5pbmc6IHBhc3NpbmcgYXJndW1lbnQgMiBvZiAnZmR0X3NldHByb3AnIG1ha2VzIGludGVnZXIgZnJvbSBwb2ludGVyIHdpdGhvdXQgYSBjYXN0CgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmMDk4ODBlYTcyYTFjODA2ZGIyMjNjZTU5NGM1ZmIxYjY1NDJmZjZhCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEphbiAxNCAxNjoxNDo0NiAyMDA4IC0wNjAwCgogICAgbXBjODN4eDogZml4IHBoeS1jb25uZWN0aW9uLXR5cGUgZml4dXAgY29kZQoKICAgIHVzZSB0cmVlIHBhc3NlZCB0byB1cyBpbiBsb2NhbCBibG9iLCBub3QgZ2xvYmFsIGZkdC4KCiAgICBBbHNvIHVzZSBmZHRfcGF0aF9vZmZzZXQgdG8gY29udmVydCB0byByZWxhdGl2ZSBvZmZzZXQsIHNpbmNlIGFic29sdXRlCiAgICByZWZlcmVuY2UgaXMgbmVlZGVkIHRvIGNoZWNrIGZvciByZ21paS1pZCBtb2RlIHN0cmluZyB2YWx1ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDJiNGM5NTJiZTdjNDM1N2ExM2U4MzlkNDhkZjgwODUzODIwYzMzZWIKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gSmFuIDE0IDA5OjAxOjQwIDIwMDggLTA2MDAKCiAgICBtcGM4M3h4OiBmaXggbXBjODMxMy9tcGM4MzE1L21wYzgzNDlpdHggTWFrZWZpbGVzIGZvciBzaWxlbnQgYnVpbGQgKHdpdGggLXMpCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZTFkOGVkMmMwOGRhMTRiMTY4NjU4Y2M1ZmE3ODUyOWQ0NjFhZWE3MApBdXRob3I6IFBvb25hbSBBZ2dyd2FsIDxiMTA4MTJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEphbiAxNCAwOTo0MToxNCAyMDA4ICswNTMwCgogICAgQ2hhbmdlcyBpbiB1Ym9vdCBERFIgY29uZmlndXJhdGlvbiBmb3IgTVBDODMxM2VSREIKCiAgICBUaGVzZSBjaGFuZ2VzIHdlcmUgaWRlbnRpZmllZCBieSBIaWdoU21pdGggQmlsbCAsTWF6enlhciBhbmQgSm9zZXBoIGZvcgogICAgRERSIGNvbmZpZ3VyYXRpb24gaW4gdS1ib290IGNvZGUuIFNvbWUgYXJlIHJlbGF0ZWQgdG8gcGVyZm9ybWFuY2UsIHNvbWUKICAgIGFmZmVjdCBzdGFiaWxpdHkgYW5kIHNvbWUgY29ycmVjdCBmZXcgYmFzaWMgZXJyb3JzIGluIHRoZSBjdXJyZW50CiAgICBjb25maWd1cmF0aW9uLgoKICAgIFRoZSBjaGFuZ2VzIGhhdmUgYmVlbiB0ZXN0ZWQgYW5kIGZvdW5kIHRvIGdpdmUgYmV0dGVyIG1lbW9yeSBsYXRlbmN5CiAgICBmaWd1cmVzIG9uIE1QQzgzMTNlUkRCLkxNQmVuY2ggZmlndXJlcyBwcm92ZSBpdC4KCiAgICBUaGUgY2hhbmdlcyBhcmU6CgogICAgLSBDUzBfQ09ORklHWyBBUF9uX0VOXSBpcyBjaGFuZ2VkIGZyb20gMSB0byAwCiAgICAgICh0aGlzIG1heSBpbXByb3ZlIHBlcmZvcm1hbmNlIGZvciBhcHBsaWNhdGlvbiB3aXRoIG1hbnkgcmVhZAogICAgICBvciB3cml0ZSB0byBvcGVuIHBhZ2VzKS4KICAgIC0gQ1MwX0NPTkZJR1tPRFRfV1JfQ0ZHXSBpcyBjdXJyZW50bHkgY2hhbmdlZCBmcm9tIDEwMCB0bwogICAgICAwMDEgKGFjdGl2YXRpbmcgYWxsIHRoZSBDUyB3aGVuIG9ubHkgb25lIGlzIHVzZWQgbWF5IGNhdXNlCiAgICAgIHVud2FudGVkIG5vaXNlIG9uIHRoZSBzeXN0ZW0pCgogICAgLSBUSU1JTkdfQ0ZHXzFbQUNUVE9QUkVdIGlzIGNoYW5nZWQgZnJvbSA5Y2xrcyB0byA4Y2xrcyAoYmFzZWQgb24KICAgICAgVHJhcz00NW5zKQogICAgLSBUSU1JTkdfQ0ZHXzFbUkVGUkVDXSBjaGFuZ2VkIGZyb20gMjEgY2xrcyB0byAxOGNsa3MuCgogICAgLSBUSU1JTkdfQ0ZHXzJbQUxdIHZhbHVlIGNoYW5nZWQgZnJvbSAwIHNldHRpbmcgdG8gMSBjbGsgdG8KICAgICAgY29tcGx5IHdpdGggdGhlIDMgT0RUIGNsayByZXF1aXJlbWVudHMpCiAgICAtIFRJTUlOR19DRkdfMltDUE9dIHdhcyBzZXQgdG8gYSByZXNlcnZlZCB2YWx1ZSwgY2hhbmdlZCB0byBSTCszLzQuCiAgICAtIFRJTUlOR19DRkdfMltGT1VSX0FDVF0gaXMgY2hhbmdlZCBmcm9tIDEwIGNsa3MgdG8gNmNsa3MuCgogICAgLSBERFJfU0RSQU1fTU9ERVtBTF1jaGFuZ2VkIGZyb20gMCB0byAxLgogICAgLSBERFJfU0RSQU1fTU9ERVtXUlJFQ10gY2hhbmdlZCBmcm9tIDEgY2xrIHRvIDMgY2xrcy4KCiAgICAtIEREUl9TRFJBTV9JTlRFUlZBTFtSRUZJTlRdIGlzIGNoYW5nZWQgZnJvbSAweDAzMjAgdG8gMHgwNTEwLgogICAgLSBERFJfU0RSQU1fSU5URVJWQUxbQlNUT1BSRV0gaXMgY2hhbmdlZCBmcm9tIDB4NjQgdG8gMHgwNTAwLgoKICAgIFRoZSBwYXRjaCBpcyBiYXNlZCBvZiBnaXQ6Ly93d3cuZGVueC5kZS9naXQvdS1ib290LW1wYzgzeHguZ2l0CiAgICBUaGUgbGFzdCBjb21taXQgb24gdGhpcyB0cmVlIHdhcyA2Nzc1YzY4NjgzYTUzYzdhYmM3Nzg3NzQ2NDFhYWM2ZjgzM2EyY2JmCgogICAgU2lnbmVkLW9mZi1ieTogUG9vbmFtIEFnZ3J3YWwtYjEwODEyIDxiMTA4MTJAZnJlZXNjYWxlLmNvbT4KICAgIENjOiBCaWxsIEhpZ2hTbWl0aCA8QmlsbC5IaWdoc21pdGhAZnJlZXNjYWxlLmNvbT4KICAgIENjOiBSYXp6YXogTWF6eWFyIDxNUmF6emF6QGZyZWVzY2FsZS5jb20+CiAgICBDYzogSm9zZXAgUCBKIDxQSi5Kb3NlcGhAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjVjZGQ3ZGY0YTA2ZWRiOTE1MzljOWEyZWE3YzE3OGE4NzBjM2E5NQpBdXRob3I6IEplcnJ5IFZhbiBCYXJlbiA8Z3ZiLnVib290QGdtYWlsLmNvbT4KRGF0ZToJU2F0IEphbiAxMiAxMzoyNDoxNCAyMDA4IC0wNTAwCgogICAgRW5hYmxlIHRoZSBpc2RyYW0gY29tbWFuZCBvbiB0aGUgTVBDODM2MEVNRFMgYm9hcmQKCiAgICBUaGUgaXNkcmFtIGNvbW1hbmQgcHJpbnRzIG91dCBkZWNvZGVkIGluZm9ybWF0aW9uIHRoZSAic2VyaWFsIHByZXNlbmNlCiAgICBkZXRlY3QiIChTUEQpIGNoaXAgb24gdGhlIFNEUkFNIFNJTU1zLiAgVGhpcyBjYW4gYmUgdmVyeSBoZWxwZnVsIHdoZW4KICAgIGRlYnVnZ2luZyBtZW1vcnkgY29uZmlndXJhdGlvbiBwcm9ibGVtcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4YmQ1MjJjZTRhZmRhM2Q0ODY4ZWU4YzkxM2Y1Mzk0MDk0MzI2YmUxCkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSmFuIDExIDE4OjQ4OjI0IDIwMDggKzA4MDAKCiAgICBtcGM4M3h4OiBBZGQgdGhlIHN1cHBvcnQgZm9yIE1QQzgzMTVFUkRCIGJvYXJkCgogICAgVGhlIGZlYXR1cmVzIGxpc3Q6CiAgICAtIEJvb3QgZnJvbSBOT1IgRmxhc2gKICAgIC0gRERSMiAyNjZNSHogaGFyZGNvZGVkIGNvbmZpZ3VyYXRpb24KICAgIC0gTG9jYWwgYnVzIE5PUiBGbGFzaCBSL1cgb3BlcmF0aW9uCiAgICAtIEkyQywgVUFSVCwgTUlJIGFuZCBSVEMKICAgIC0gZVRTRUMwLzEgc3VwcG9ydAogICAgLSBQQ0kgaG9zdAoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGIwNTg4NGVmYTYxNGU0ZDhhOTQxMzE1OGZjMjI4ZTBkYzAyYWI3MDQKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBKYW4gMTEgMTg6NDY6NTAgMjAwOCArMDgwMAoKICAgIG1wYzgzeHg6IEFkZCBjb25maWcgb2YgZVRTRUMgZW1lcmdlbmN5IHByaW9yaXR5IGluIFNQQ1IKCiAgICBUaGUgVFNFQyBlbWVyZ2VuY3kgcHJpb3JpdHkgZGVmaW5pdGlvbiBvZiA4MzF4LzgzN3gKICAgIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBkZWZpbml0aW9uIG9mIDgzNHggaW4gU1BDUiByZWdpc3Rlci4KCiAgICBBZGQgdGhlIG90aGVyIGNvbmZpZyBvZiBUU0VDIGVtZXJnZW5jeSBwcmlvcml0eSBpbnRvCiAgICBjcHVfaW5pdC5jCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOWI5NTgyMzRiMDc4M2YxM2Q5MmYwMDdmNzUzZmQyYzNhZTJjODY4MApBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEphbiAxMSAxODo0MjoxOSAyMDA4ICswODAwCgogICAgbXBjODN4eDogUmVtb3ZlIGNhY2hlIGNvbmZpZyBmcm9tIE1QQzgzNjBFUkRLLmgKCiAgICBUaGUgTVBDODM2MEVSREsgYm9hcmQgc3VwcG9ydCBwYXRjaCBpcyBhZGRlZCBiZWZvcmUKICAgIHRoZSBjb21taXQgMmM1YjQ4ZmMyMDVjM2UyNzUyOTEwZGE4ZjM5MjA5ZWQwNzU5MjllNQogICAgc28sIG1pc3MgY2xlYW4gdXAgaXQuCgogICAgVGhlIHBhdGNoIGNsZWFuIHVwIHRoZSBtaXNzIGNhY2hlIGNvbmZpZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjZDlkMjMwNTNkNDM1YzA4ZmM4Njk1MDE3YjVjYjkwMDNmY2RhNzg2CkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CU1vbiBKYW4gMTQgMjM6MDk6MzIgMjAwOCArMDMwMAoKICAgIG5hbmQ6IEZTTCBVUE0gTkFORCBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KCmNvbW1pdCA2Y2IyMjM5YWU3NmZhZWU2NDQzNDI4NmM0ZjhmYzcxMzc0NzAyZGQyCkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+CkRhdGU6CVR1ZSBKYW4gMTUgMDg6NTk6NDQgMjAwOCArMDkwMAoKICAgIE9uZU5BTkQ6IFNlcGFyYXRlIFUtQm9vdCBkZXBlbmRlbnQgY29kZSBmcm9tIE9uZU5BTkQKCiAgICBPbmVOQU5EOiBTZXBhcmF0ZSBVLUJvb3QgZGVwZW5kZW50IGNvZGUgZnJvbSBPbmVOQU5ECgogICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KCmNvbW1pdCA4M2E0OWM4ZGQ3OTk4YmUyZDFmMGQ0MjA1OTdhMzZiYmYwYmY0MTY0CkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVdlZCBKYW4gMTYgMTA6MzM6NDYgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogU2VxdW9pYSBjb2Rpbmcgc3R5bGUgY2xlYW51cCBhbmQgYmVhdXRpZmljYXRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCA0YjNjYzZlY2U5YzQ1NTUwNGNmMTI5MDlmYWUzOGQwODVkODQ4YWMwCkF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CkRhdGU6CVR1ZSBKYW4gMTUgMTQ6MzU6NTggMjAwOCAtMDUwMAoKICAgIHBwYzR4eDogUmVmYWN0b3IgRUNDIFBPU1QgZm9yIEFNQ0MgRGVuYWxpIGNvcmUKCiAgICBUaGUgRUNDIFBPU1QgcmVwb3J0ZWQgaW50ZXJtaXR0ZW50IGZhaWx1cmVzIHJ1bm5pbmcgYWZ0ZXIgcG93ZXItdXAgb24KICAgIHRoZSBLb3JhdCBQUEM0NDBFUHggYm9hcmQuCUV2ZW4gd2hlbiB0aGUgdGVzdCBwYXNzZWQsIHRoZSBkZWJ1Z2dpbmcKICAgIG91dHB1dCBvY2Nhc2lvbmFsbHkgcmVwb3J0ZWQgYWRkaXRpb25hbCB1bmV4cGVjdGVkIEVDQyBlcnJvcnMuCgogICAgVGhpcyByZWZhY3RvcmluZyBoYXMgdGhyZWUgbWFpbiBvYmplY3RpdmVzOiAoMSkgbWluaW1pemUgdGhlIGNvZGUKICAgIGV4ZWN1dGVkIHdpdGggRUNDIGVuYWJsZWQgZHVyaW5nIHRoZSB0ZXN0cywgKDIpIGFkZCBtb3JlIGNoZWNraW5nIG9mIHRoZQogICAgcmVzdWx0cyBzbyBhbnkgdW5leHBlY3RlZCBFQ0MgZXJyb3JzIHdvdWxkIGNhdXNlIHRoZSB0ZXN0IHRvIGZhaWwsIGFuZAogICAgKDMpIHVzZSBzeW5jaHJvbml6YXRpb24gKG9ubHkpIHdoZXJlIHJlcXVpcmVkIGJ5IHRoZSBwcm9jZXNzb3IuCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgMjQ2NTY2NWI3M2FjMmY2ODhhZjk0NWIxZWQ1MTA3NTJhZmE4MTZhNApBdXRob3I6IERhdmlkIFNhYWRhIDxEYXZpZC5TYWFkYUBlY2l0ZWxlLmNvbT4KRGF0ZToJVHVlIEphbiAxNSAxMDo0MDoyNCAyMDA4ICswMjAwCgogICAgUUUgVUVDOiBFeHRlbmQgbnVtYmVyIG9mIHN1cHBvcnRlZCBVRUNzIHRvIDQKCiAgICBUaGlzIHBhdGNoIGV4dGVuZHMgdGhlIG51bWJlciBvZiBzdXBwb3J0ZWQgVUVDcyB0byA0LiBOb3RlIHRoYXQgdGhlCiAgICBwcm9ibGVtIG9mIFFFIHRocmVhZCByZXNvdXJjZXMgZXhoYXVzdGlvbiBpcyByZXNvbHZlZCBieSBzZXR0aW5nIHRoZQogICAgY29ycmVjdCBudW1iZXIgb2YgUUUgdGhyZWFkcyBhY2NvcmRpbmcgdG8gRXRoZXJuZXQgdHlwZSAoR0JFIG9yIEZFKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTYWFkYSA8ZGF2aWQuc2FhZGFAZWNpdGVsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDU4ZDIwNDI1NmNiMWNlMWJkMzIzODQ3ZDlmNjQ0YWNmNzBhNzJlNmEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDE2IDAwOjAxOjAxIDIwMDggKzAxMDAKCiAgICBMV01PTjU6IGVuYWJsZSBodXNoIHNoZWxsIGFzIGNvbW1hbmQgbGluZSBwYXJzZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDY2ZmZiMTg4M2ZlZWRkZGM4MTNkOGE1MDdkMDYwZjJhOTQwZWIyYjIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgSmFuIDE1IDE3OjIyOjI4IDIwMDggKzAxMDAKCiAgICBBRFM1MTIxOiBkaXNhYmxlIHdhdGNoZG9nOyBlbmFibGUgaW1hZ2UgdGltZXN0YW1wcwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMmI0Zjc3OGZlOWQxZGU2MWQ3NDQ1YmFlN2IzMjUzNDBhYmE2OTY4ZApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBKYW4gMTUgMTc6MjE6MjggMjAwOCArMDEwMAoKICAgIFRLODg1RDogZml4ZXMgZm9yIGJpZ2dlciBmbGFzaCBzZWN0b3Igc2l6ZXMgb24gbmV3IG1vZHVsZXM7CiAgICBhZGp1c3QgZGVmYXVsdCBlbnZpcm9ubWVudDsKICAgIGRpc2FibGUgU0NDIGV0aGVybmV0IChub3QgdXNlZCBvbiB0aGlzIGJvYXJkKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGY5MWQ3YWU1Y2E4OWFjZjlmYTFlZDEwMTVkYzA3OGNmMjk1ODE2MDcKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVR1ZSBKYW4gMTUgMTc6NDg6MTMgMjAwOCArMDkwMAoKICAgIHBjbWNpYTogUmVtb3ZlIENPTkZJR19DT01NQU5EUyBmcm9tIG1hcnVidW4gcGNtY2lhIGRyaXZlcgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCA3NmU0OWFhN2ZiOGU3NmNjNDkwOTJjMWFjZDUzZmZmOTIxZTI2MzYwCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglUdWUgSmFuIDE1IDIzOjI1OjI1IDIwMDggKzA5MDAKCiAgICBzaDogQWRkIHN1cHBvcnQgU0g3NzEwL1NINzcxMgoKICAgIFNINzcxMC9TSDc3MTIgb2YgU0gzIENQVSBhcmUgc3VwcG9ydGVkLgogICAgU0g3NzFYIGlzIGNhbGxlZCBTSC1FdGhlciwgYW5kIGhhcyB0aGUgRXRoZXIgY29udHJvbGxlciBpbiBDUFUuCiAgICBUaGUgZHJpdmVyIG9mIEV0aGVyIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGlzIHBhdGNoLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCA2M2ExMWJlNjgzMDY4NzBlMDRkMzg1MWVkOWZhNDE5NTVjZGY0ODk0CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglUdWUgSmFuIDE1IDIzOjA2OjE3IDIwMDggKzA5MDAKCiAgICBzaDogQWRkIHN1cHBvcnQgb2YgbWFwX3BoeXNtZW0oKSBhbmQgdW5tYXBfcGh5c21lbSgpIHRvIFN1cGVySAoKICAgIFRoaXMgcGF0Y2ggYWRkIHRoZSBzdXBwb3J0IG9mIG1hcF9waHlzbWVtKCkgYW5kIHVubWFwX3BoeXNtZW0oKQogICAgdXNlZCB3aXRoIENvbW1vbiBGbGFzaCBJbnRlcmZhY2UoQ0ZJKSBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGRiMzk5NWZlNTE2NGFjNWQ2MzBiN2VjYjk2Mjg2YTk4MjhkZmJiNTQKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVdlZCBKYW4gOSAxNDo0MjoyNyAyMDA4ICswOTAwCgogICAgc2g6IEFkZCBtYWludGFpbmVyIG9mIE1TNzcyMFNFIHRvIHRoZSBNQUlOVEFJTkVSIGZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgZGNkOTllODhlMDNkNTZhMGFlZWNkNDJiNTA3ZDJkMjlkMjBhYjBlMwpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJV2VkIEphbiA5IDE0OjM5OjU4IDIwMDggKzA5MDAKCiAgICBzaDogRml4IGJvYXJkIG5hbWUgaW4gTVM3NzIwU0UncyBjb25maWcubWsKCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgYzBhMDRkOTM3MzRkNzY4YjM5ZGJiNzJmYjUwMWI2NTYxNGM4NjE1ZApBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJV2VkIEphbiA5IDE0OjM3OjM2IDIwMDggKzA5MDAKCiAgICBzaDogQWRkIE1TNzcyMFNFIHRvIE1BS0VBTEwKCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgYjJiNWUyYmI3OGExZWY0YWU4NTA0ZjVhMjZiZmRjMzI5M2VhNzRhZQpBdXRob3I6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJTW9uIERlYyAzIDIyOjU4OjUwIDIwMDcgKzA5MDAKCiAgICBzaDogQWRkIHN1cHBvcnQgZm9yIE1TNzcyMFJQMDIgYm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+CiAgICBDQzogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgogICAgQWNrZWQtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCA3YzEwYzU3Mjc1OTAxOTM5YThlY2U0YTllZjNlN2NjYjdjMTJhMGVkCkF1dGhvcjogWW9zaGloaXJvIFNoaW1vZGEgPHNoaW1vZGEueW9zaGloaXJvQHJlbmVzYXMuY29tPgpEYXRlOglXZWQgSmFuIDkgMTQ6MzA6MDIgMjAwOCArMDkwMAoKICAgIHNoOiBBZGQgc3VwcG9ydCBmb3IgU0g3NzIwIGluIHNlcmlhbF9zaCBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogWW9zaGloaXJvIFNoaW1vZGEgPHNoaW1vZGEueW9zaGloaXJvQHJlbmVzYXMuY29tPgogICAgQ0M6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KICAgIEFja2VkLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgZjk5MTNhOGVlNzFmZjE0ZmNmYzFjN2ZkMGU2OTEyZjg5N2U2OTQwMwpBdXRob3I6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJTW9uIERlYyAzIDIyOjU4OjQ1IDIwMDcgKzA5MDAKCiAgICBzaDogQWRkIHN1cHBvcnQgU0gzIGFuZCBTSDc3MjAKCiAgICBTaWduZWQtb2ZmLWJ5OiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+CiAgICBDQzogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgogICAgQWNrZWQtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCA5YWRmYzlmYjlhZGU2NGNkZjFlZDlmZjg0MmU0ZjkwMGNiZGE3OGJkCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgSmFuIDE1IDEwOjExOjAyIDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IFJlbW92ZSBjb21waWxlciB3YXJuaW5nIGluIGNwdS9wcGM0eHgvNDR4X3NwZF9kZHIyLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMTdiZWY2ODA5N2FiMzY5MjUwMGEzNmZiMzExMTViZmY3OTEwYWE5OQpBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXNnaWdlckBnbXguY2g+CkRhdGU6CU1vbiBKYW4gMTQgMTQ6MDQ6NDIgMjAwOCArMDEwMAoKICAgIHBwY180eHg6IEZpeCBwb3N0IHNwci5jIGZvciBQUEM0MDUKCiAgICBwb3N0L2NwdS9wcGM0eHgvc3ByLmMgY29udGFpbmVkIGEgZmV3IGNoZWNrcyBmb3IgcmVnaXN0ZXJzIG9ubHkgcHJlc2VudAogICAgZm9yIFBQQzQ0MCBhbmQgZGVyaXZhdGVzIHByb2Nlc3Nvci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgoKY29tbWl0IDA2YzQyOGJjZDQ0MTMwMTRiNDMyMzZlNzc3NjUwMjIwNzE0MjRmYTYKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKYW4gMTQgMTE6MTI6MDEgMjAwOCArMDgwMAoKICAgIFFFOiBmaXggY29tcGlsZSB3YXJuaW5nCgogICAgcWUuYzogSW4gZnVuY3Rpb24gJ3FlX3VwbG9hZF9maXJtd2FyZSc6CiAgICBxZS5jOjM5MDogd2FybmluZzogcG9pbnRlciB0YXJnZXRzIGluIHBhc3NpbmcgYXJndW1lbnQgMgogICAgdWVjLmM6IEluIGZ1bmN0aW9uICd1ZWNfaW5pdGlhbGl6ZSc6CiAgICB1ZWMuYzoxMjM2OiB3YXJuaW5nOiAndWVjX2luZm8nIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGEwZGQ5OWQ1MWVmYTU1ZmUwMjNlMTljOTdlYWQ5MjY4MzcyNWViMTEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBKYW4gMTQgMTA6MDU6MDUgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogVXBkYXRlIEtpbGF1ZWEgQ1BMRCBjb25maWd1cmF0aW9uIHdpdGggVVNCIFBIWSByZXNldCBiaXQKCiAgICBOb3cgdGhhdCBiaXQgMjkgaXMgdGhlIFVTQiBQSFkgcmVzZXQgYml0LCB1cGRhdGUgdGhlIEtpbGF1ZWEgcG9ydAogICAgdG8gcmVtb3ZlIHRoZSBVU0IgUEhZIHJlc2V0IGFmdGVyIHBvd2VydXAuIFRoZSBDUExEIHdpbGwga2VlcCB0aGUKICAgIFVTQiBQSFkgaW4gcmVzZXQgKGFjdGl2ZSBsb3cpIHVudGlsIHRoZSBiaXQgaXMgc2V0IHRvIDEgaW4KICAgIGJvYXJkX2Vhcmx5X2luaXRfZigpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmNDNhZDUzOTA4ZjFlYTgzYTdjMjZjMzUwNWJiZTg0MzgyZTQ3YWFkCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEphbiAxMyAyMzoyNjo0NSAyMDA4ICswMTAwCgogICAgQVJNOiB1cGRhdGUgbWFjaC10eXBlcy5oIGZyb20gMi42LjI0LXJjNyBMaW51eCBrZXJuZWwgdHJlZQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgOGQxMDMwNzFiN2IwZTNlYzg4ODg1OWJmY2I5ZDQyMjU2NWU2ZDc1MApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBKYW4gMTMgMjM6Mzc6NTAgMjAwOCArMDEwMAoKICAgIEFEUzUxMjE6IEZpeCB0eXBvIGluIGFkczUxMjEuYywgYWRqdXN0IGRlZmF1bHQgZW52aXJvbm1lbnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDUxYjY3ZDA2ZmFhNjcwYzY1ZGU2ZjI5ZWM1YjVhYWNlNzRiMmEwNDcKQXV0aG9yOiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEF1ZyAyNCAxODoxODo0MyAyMDA3IC0wNjAwCgogICAgQURTNTEyMTogTUFYIHNsZXcgcmF0ZSBmb3IgUEFUQSBwaW5zCgogICAgU2lnbmVkLW9mZi1ieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZGQ1MzFhYWMzNGFhYWQxMzhmMTZjYWNkYjUxZDYxOTA4ZDU5YzBlMgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBKYW4gMTMgMjE6MDU6NTIgMjAwOCArMDEwMAoKICAgIEZpeCBNYWtlZmlsZSBkZXBlbmRlbmN5IHByb2JsZW0gd2l0aCBwYXJhbGxlbCBidWlsZHMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA4OTk2Nzg0MWUzZWEwMmUzZDBlNWUxMjk1YWI2ODc1NzZlNWIxMDg5CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEphbiAxMyAxOTo1MTozOSAyMDA4ICswMTAwCgogICAgTVBDODU0NERTOiBmaXggYm9hcmQgTWFrZWZpbGUgZm9yIHNpbGVudCBidWlsZCAod2l0aCAtcykKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDZkNzE0ZjgyZmI0YjhiYjdlMjY3ZTljNzFiODAwOWJjNjcwYmZlODgKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gSmFuIDEzIDE2OjQ0OjA4IDIwMDggKzAxMDAKCiAgICBQTUM0NDAgYm9hcmQ6IGZpeCBib2FyZCBNYWtlZmlsZSBmb3Igb3V0LW9mLXRyZWUgYnVpbGRpbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDZlYjNmYjE1NTg4ZDMxOWJkMzA5OWQ1ZjliOTEwMDUxZGZlYWI2YjIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gSmFuIDEzIDE2OjA3OjQ0IDIwMDggKzAxMDAKCiAgICBNYWthbHU6IGZpeCBjb21waWxlIHdhcm5pbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDBhMWUwM2JjYWRjNzczNDY4OGEyMWU4ZGQyZTQ2YTRmNjA4MTkzYzAKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gSmFuIDEzIDEyOjM2OjEyIDIwMDggKzAxMDAKCiAgICBjbWRfbmFuZCA6IGZpeCBjb21waWxlciB3YXJuaW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgODIyNWQxZTNhYzBhYjE0N2NkZGU0YjAwNDI4MTI1ODMzODBhZmI4YQpBdXRob3I6IE1pY2hhZWwgU2Nod2luZ2VuIDxyaW5jZXdpbmRAZGlzY3dvcmxkLmRhc2Nvbi5kZT4KRGF0ZToJU2F0IEphbiAxMiAyMDoyOTo0NyAyMDA4ICswMTAwCgogICAgQ0ZJOiBGaXggQ09ORklHX0ZMQVNIX0NGSV9MRUdBQ1kgY29tcGlsYXRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFNjaHdpbmdlbiA8bWljaGFlbEBzY2h3aW5nZW4ub3JnPgogICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyYjJmNDNlZDZhMzBlY2U3N2Y3NjE5MWM4NDVhYzk1MjY3ZGFhMzFhCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEphbiAxMyAwMjoxOTo0NCAyMDA4ICswMTAwCgogICAgTVBDODM2MEVSREs6IGZpeCBpbmNvcnJlY3QgaW5pdGlhbGl6YXRpb24gb2YgQ0ZHX0kyQ19OT1BST0JFUwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMDhlOTllMWRkMDFhM2UwZTNkYzNhNzEzOGViODI3Yzk5N2UyYjc0ZApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBKYW4gMTMgMDI6MTk6MTMgMjAwOCArMDEwMAoKICAgIE1QQzh4eCBGRUMgZHJpdmVyOiBmaXggY29tcGlsZXIgd2FybmluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGFlNmQxMDU2ZDJjMmU0ZDEyNjY0MTNjMGFlOGE2ZDU1MjllY2RlNGIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gSmFuIDEzIDAwOjU5OjIxIDIwMDggKzAxMDAKCiAgICBGaXggTWFrZWZpbGUgZGVwZW5kZW5jaWVzIGlzc3VlczsgYWxsb3cgc2lsZW50IGJ1aWxkCgogICAgLSBnZXQgcmlkIG9mICJ2ZXJzaW9uIiB0YXJnZXQgd2hpY2hkaWRuJ3QgcmVhbGx5IHdvcmsKICAgIC0gbWFrZSBhdXRvY29uZi5tayBkZXBlbmQgb24gdmVyc2lvbl9hdXRvZ2VuZXJhdGVkLmggdG8gbWFrZSBzdXJlCiAgICAgIHRvIHJlYnVpbGQgZmlsZXMgYXMgbmVlZGVkCiAgICAtIGFkZCBYRUNITyBtYWNybyB0byBhbGxvdyBmb3Igc2lsZW50IGJ1aWxkIHVzaW5nICJtYWtlIC1zIgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZTM0M2FiODNkNTEzNWI1NThhYTU4ZGI5YmU4ZmM3ZmFhNjhkNzdlZApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBKYW4gMTMgMDA6NTU6NDcgMjAwOCArMDEwMAoKICAgIEFEUzUxMjFlOiBmaXggY29tcGlsZSB3YXJuaW5nCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBmMmI2ZjQ2MTA2MjdmZTNkNjA3NjIwZTI1MDgyOTE2YTAxNTM4ODc1CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEphbiAxMyAwMDo1NToxOCAyMDA4ICswMTAwCgogICAgTVVOSUNlczogZml4IGJvYXJkIE1ha2VmaWxlIGZvciByZW1vdGUgYnVpbGQgZGlyZWN0b3J5CgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAyYWQ0ZDM5OTlmZTgwMWFhNzE2MjIxZDdkOWE0YzViZGFkNzQ3ODNhCkF1dGhvcjogT2xpdmVyIFdlYmVyIDxhbG1vZWxpQGdteC5kZT4KRGF0ZToJV2VkIEphbiA5IDE3OjA0OjM4IDIwMDggKzAxMDAKCiAgICBNUEM1MjAwOiBkb24ndCB1c2UgaGFyZGNvZGVkIE1CQVIgYWRkcmVzcyBpbiBCZXN0Y29tbSBmaXJtd2FyZQoKICAgIFNpZ25lZC1vZmYtYnk6IE9saXZlciBXZWJlciA8YWxtb2VsaUBnbXguZGU+Cgpjb21taXQgMDBhYzUwZTM0OGQxYmFjZTI3YTE3NGI3ZjUyOGQxMTNiYzdjZGY3ZgpBdXRob3I6IEFuZHJlYXMgRW5nZWwgPGFuZHJlYXMuZW5nZWxAZXJpY3Nzb24uY29tPgpEYXRlOglXZWQgSmFuIDkgMTc6MTA6NTYgMjAwOCArMDEwMAoKICAgIE1ha2UgYm9vdHJldHJ5IHdvcmsgd2hlbiBjb21tYW5kIGxpbmUgZWRpdGluZyBpcyBlbmFibGVkCgogICAgQ3VycmVudGx5LCB3aGVuIENPTkZJR19DTURMSU5FX0VESVRJTkcgaXMgc2V0LCBib290cmV0cnkgZG9lc24ndCB3b3JrLgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgcHJvYmxlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIEVuZ2VsIDxhbmRyZWFzLmVuZ2VsQGVyaWNzc29uLmNvbT4KCmNvbW1pdCA2MzJkZTA2NzJkM2MzYWI1M2FkNzk4YzQ3ZjVmMWViMjYwMDhhMGU0CkF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CkRhdGU6CUZyaSBKYW4gMTEgMjM6MjY6MTggMjAwOCAtMDUwMAoKICAgIFJlZmFjdG9yIGNvZGUgZm9yICJpMmMgc2RyYW0iIGNvbW1hbmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KCmNvbW1pdCAwZGY2Yjg0NDZjNDcyMWI5MWNlMzExNTQ4MTE0ODkxMTMwMzcxMDgzCkF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CkRhdGU6CVRodSBKYW4gMTAgMjI6MjM6MzkgMjAwOCAtMDUwMAoKICAgIEZpeCAiaTJjIHNkcmFtIiBjb21tYW5kIGZvciBERFIyIERJTU1zCgogICAgTWFueSBvZiB0aGUgU1BEIGJ5dGVzIGZvciBERFIyIFNEUkFNIGFyZSBub3QgaW50ZXJwcmV0ZWQgY29ycmVjdGx5IGJ5IHRoZQogICAgImkyYyBzZHJhbSIgY29tbWFuZC4gIFRoaXMgcGF0Y2ggcHJvdmlkZXMgY29ycmVjdCBhbHRlcm5hdGl2ZQogICAgaW50ZXJwcmV0YXRpb25zIHdoZW4gRERSMiBtZW1vcnkgaXMgZGV0ZWN0ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgNjQxMzRmMDExMjU0MTIzNjE4Nzk4ZmY3N2M0MmJhMTk2YjJlYzQ4NQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBKYW4gMTIgMjA6MzE6MzkgMjAwOCArMDEwMAoKICAgIEZpeCBsaW5rZXIgc2NyaXB0czogYWRkIE5PTE9BRCBhdHJpYnV0ZSB0byAuYnNzLy5zYnNzIHNlY3Rpb25zCgogICAgV2l0aCByZWNlbnQgdG9vbGNoYWluIHZlcnNpb25zLCBzb21lIGJvYXJkcyB3b3VsZCBub3QgYnVpbGQgYmVjYXVzZQogICAgb3IgZXJyb3JzIGxpa2UgdGhpcyBvbmUgKGhlcmUgZm9yIG9jb3RlYSBib2FyZCB3aGVuIGJ1aWxkaW5nIHdpdGgKICAgIEVMREsgNC4yIGJldGEpOgogICAgcHBjXzR4eC1sZDogc2VjdGlvbiAuYm9vdHBnIFtmZmZmZjAwMCAtPiBmZmZmZjIzYl0gb3ZlcmxhcHMgc2VjdGlvbiAuYnNzIFtmZmZlZTkwMCAtPiBmZmZmZjhhYl0KCiAgICBGb3IgbWFueSBib2FyZHMsIHRoZSAuYnNzIHNlY3Rpb24gaXMgYmlnIGVub3VnaCB0aGF0IGl0IHdyYXBzIGFyb3VuZAogICAgYXQgdGhlIGVuZCBvZiB0aGUgYWRkcmVzcyBzcGFjZSAoMHhGRkZGRkZGRiksIHNvIHRoZSBwcm9ibGVtIHdpbGwgbm90CiAgICBiZSB2aXNpYmxlIHVubGVzcyB5b3UgdXNlIGEgNjQgYml0IHRvb2wgY2hhaW4gZm9yIGRldmVsb3BtZW50LiBPbgogICAgc29tZSBib2FyZHMgaG93ZXZlciwgY2hhbmdlcyB0byB0aGUgY29kZSBzaXplIChkdWUgdG8gZGlmZmVyZW50CiAgICBvcHRpbWl6YXRpb25zKSB3ZSBiYWlsIG91dCB3aXRoIHNlY3Rpb24gb3ZlcmxhcHMgbGlrZSBhYm92ZS4KCiAgICBUaGUgZml4IGlzIHRvIGFkZCB0aGUgTk9MT0FEIGF0dHJpYnV0ZSB0byB0aGUgLmJzcyBhbmQgLnNic3MKICAgIHNlY3Rpb25zLCB0ZWxsaW5nIHRoZSBsaW5rZXIgdGhhdCAuYnNzIGRvZXMgbm90IGNvbnN1bWUgYW55IHNwYWNlIGluCiAgICB0aGUgaW1hZ2UuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAzYWZhYzc5ZWMyN2I5MWRmMTg1ZjA5MGIzMWRhZDk2MjA3NzlmNDQwCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEphbiAxMSAyMDo0Mjo1OCAyMDA4IC0wNjAwCgogICAgVVNCOiBBZGQgUGhpbGlwcyAxNTYxIFBDSS1PSENJIGlkcwogICAgKG5lZWRlZCBmb3IgTTU0NzVFVkIpCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDVlOGRlZjY3MzFjZDdiZWM3NGJmZjQyYTE2YjEzOWRlMDQwMTAzNTMKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgSmFuIDEyIDE1OjUxOjM0IDIwMDggKzAxMDAKCiAgICBBZGQgTUFJTlRBSU5FUlMgZW50cmllcyBmb3IgaWRzODI0NywganVwaXRlciwgbXVuaWNzZSwgc2MzIGFuZCB1YzEwMQogICAgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1ZDQ5ZTBlMTUyYThiODFjYzA2MDIyNzFlOGZkMjU5MzcxZjU1OWI3CkF1dGhvcjogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBKYW4gMTEgMTI6MDM6NDMgMjAwOCArMDEwMAoKICAgIE1QQzUxMlg6IENsZWFudXAgYnVzIGNsb2NrIG5hbWVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDY2YTk0NTViNmJmNDZkNjljZWM1Yzg4ZDFhNjAwZDFkOWExMDY3MGQKQXV0aG9yOiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KRGF0ZToJVHVlIEphbiA4IDE3OjE2OjU5IDIwMDggKzAxMDAKCiAgICBNUEM1MTJYOiBGaXhlZCB0eXBvIGluIG1hY3JvIG5hbWUuCgogICAgU2lnbmVkLW9mZi1ieTogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+Cgpjb21taXQgMjgxZmY5YTQ1Y2Y5ZWIxN2I4YTlhZmM0MzZjYjc4M2NmMWY2MjM2MwpBdXRob3I6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgSmFuIDggMTc6MTY6MTUgMjAwOCArMDEwMAoKICAgIGFkczUxMjE6IEFkZGVkIHN1cHBvcnQgZm9yIEZEVC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KCmNvbW1pdCBhMTBmZjkxOTYxODNlN2U1ZjJhZTNjNGY1ZjNjYmU5MmFlOWNiNzE5CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IEphbiAxMiAwMTowNTo1MCAyMDA4ICswMTAwCgogICAgQ29kaW5nIFN0eWxlIGNsZWFudXA7IHVwZGF0ZSBDSEFOR0VMT0cuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBmNmRiOTQ1NjQ5ZTVlOWQwYzdlZmUzM2I1MDdkMjQzY2RjODZjZjAzCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CUZyaSBKYW4gMTEgMTU6MTU6MTcgMjAwOCArMDEwMAoKICAgIEZpeGVkIHN5bnRheCBlcnJvciBpbiBmdW5jdGlvbiBpbml0X2UzMDBfY29yZSgpIG9mIG1wYzgzeHgvc3RhcnQuUyBpZgoKICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBmYTA1NjY0Y2Q4YzdhYjFlY2YwNjJhYTczYjk5MmI3YjU4YmJhNDljCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CUZyaSBKYW4gMTEgMTU6MTU6MTYgMjAwOCArMDEwMAoKICAgIE1VTklDZXM6IFNldCB0aGUgcmlnaHQgQ0ZHX0RFRkFVTFRfTUJBUiB2YWx1ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCA1ZmIyYjIzNDJlY2U4ZDc4NmM2ZjdmZGJhMWJjMjczZmViZDNiM2QyCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CUZyaSBKYW4gMTEgMTU6MTU6MTUgMjAwOCArMDEwMAoKICAgIGFkZGVkIHRoZSBjb25maWcgRmlsZSBmb3IgdGhlIE1VTklDZXMgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgNjM0MWQ5ZDcyM2I3MWI0YzBiZjg2Zjk3OWU0Y2IyMjhjMDJmZDA5ZApBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglGcmkgSmFuIDExIDE1OjE1OjE0IDIwMDggKzAxMDAKCiAgICBhZGRlZCBiYXNpYyBzdXBwb3J0IGZvciB0aGUgTVVOSUNlcyBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAzYmI3N2ZiMDlhMWNhYWJmNWEyOTJjYzViNDg2YTc4Yjk3N2ZiZTE5CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IEphbiAxMiAwMDozOTozNyAyMDA4ICswMTAwCgogICAgVXBkYXRlIENIQU5HRUxPRyBhbmQgTUFJTlRBSU5FUlMgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1YmE3MzkwYzNjYjU3OTE3MmJlNjY4ODhhMzcxNzA3YjQ3YjViZTRlCkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglGcmkgSmFuIDExIDAyOjE1OjAyIDIwMDggKzAxMDAKCiAgICBGaXggY29tcGlsYXRpb24gcHJvYmxlbSBpbiBjb21tb24vY21kX2JtcC5jCgogICAgY29tbW9uL2NtZF9ibXAuYyBmYWlscyB0byBjb21waWxlIGlmIENPTkZJR19WSURFT19CTVBfR1pJUAogICAgaXNuJ3QgZGVmaW5lZC4gVGhpcyBwYXRjaCBmaXggdGhpcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgNWFhNDM3YmFhZTVmZTYyOWFiZWFiOTliZWY3OTNhMmExZmM3MWI1OApBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglGcmkgSmFuIDExIDAxOjEyOjA5IDIwMDggKzAxMDAKCiAgICBGaXggZGVmYXVsdGNvbmZpZyBmb3IgdGhlIG1nY29nZSBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBhYzlkYjA2NmIyNjkzNWYzMWJmZjE1Yzk4MTY4YjE5ZmFlYjYwM2YzCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CUZyaSBKYW4gMTEgMDE6MTI6MDggMjAwOCArMDEwMAoKICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBtZ2NvZ2UgYm9hcmQgZnJvbSBrZXltaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IGI0MjNkMDU1Y2MyZTEzYzRlZjFmMDM4OWMzZmEyOTg4ZDBlZWQ4MTgKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJRnJpIEphbiAxMSAwMToxMjowNyAyMDA4ICswMTAwCgogICAgRW5hYmxlIFNNQyBtaWNyb2NvZGUgcmVsb2NhdGlvbiBwYXRjaCBmb3IgU01DMS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAzODFlNGU2Mzk3MjBkOGQyZWZiODA2NmM3YzQ4ZWM5NTg4Y2IyOGM3CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CUZyaSBKYW4gMTEgMDE6MTI6MDYgMjAwOCArMDEwMAoKICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBtZ3N1dmQgYm9hcmQgZnJvbSBrZXltaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IGJmMDUyOTM5NzNiMzQ4ZjY5NDZjOWRmOTJjZDNjNjVlY2U0MmQwYmUKQXV0aG9yOiBKYW1lcyBZYW5nIDxqYW1lcy55YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKYW4gMTAgMTY6MDI6MDcgMjAwOCAtMDYwMAoKICAgIEZpeCA2NC1iaXQgdnNwcmludGYuCgogICAgVGhlcmUgd2VyZSBzb21lIHNpemUgYW5kIHVuc2lnbmVkIHByb2JsZW1zLgogICAgQWxzbyBhZGQgc3VwcG9ydCBmb3IgImxsIiBzaXplIG1vZGlmaWVyIGluIGZvcm1hdCBzdHJpbmcgbGlrZSBnbGliYwoKICAgIFNpZ25lZC1vZmYtYnk6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDkyZmEzN2VhYzUzMDg2MDY0M2FmYTI2YWUzNDdhZjNkMjNkNjczMDkKQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KRGF0ZToJV2VkIEphbiA5IDEyOjQyOjM1IDIwMDggLTA1MDAKCiAgICBSZW1vdmUgc3VwZXJmbHVvdXMgcHJlcHJvY2Vzc29yIGNvbmRpdGlvbmFscyBmcm9tIExNNzMgZHJpdmVyCgogICAgKDEpIFJlbW92ZSB1bnVzZWQgc3ltYm9sICJDRkdfRUVQUk9NX1BBR0VfV1JJVEVfRU5BQkxFIi4KCiAgICAoMikgVXNlIGNvbmRpdGlvbmFsIE1ha2VmaWxlLm8uCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgZWZjNmY0NDdjMWI5NDBkMTY1MGM0Yjg1NGM1NTk4YTU5NWRkYzNkYQpBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KRGF0ZToJVGh1IEphbiAxMCAxNzo1OTowNyAyMDA4ICswMTAwCgogICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBUSzg4NUQgYmFzZWJvYXJkIGZyb20gVEVMRS1EQVRBCgogICAgVGhlIFRLODg1RCBib2FyZCB1c2VzIGEgVFFNODg1RCBtb2R1bGUgZnJvbSBUUSwgdGhpcyBwb3J0IGFkZHMgYW4KICAgIG93biBjb25maWd1cmF0aW9uIGZpbGUgYW5kIGFkZHMgYSBsYXN0X3N0YWdlX2luaXQoKSBtZXRob2QgdG8KICAgIGNvbmZpZ3VyZSB0aGUgdHdvIFBIWXMsIGRlcGVuZGluZyBvbiB0aGUgcGh5X2F1dG9fbmVnbyBlbnZpcm9ubWVudAogICAgdmFyaWFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgoKY29tbWl0IDBlYzU5NTI0M2RjOTllZGNkMjQ4YmJjZmJmZDVhMWRjODYwYmRlODkKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgSmFuIDEwIDAyOjIyOjA1IDIwMDggLTA2MDAKCiAgICBGaXggY29tcGlsZXIgd2FybmluZwoKICAgIG1haW4uYzogSW4gZnVuY3Rpb24gJ3JlYWRsaW5lX2ludG9fYnVmZmVyJzoKICAgIG1haW4uYzo5Mjc6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAncF9idWYnCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBiZWQ1Mzc1M2RkMWQ3ZTZiY2JlYTQzMzliZTBmYjc3NjAyMTRjYzM1CkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglGcmkgSmFuIDExIDE0OjMwOjAxIDIwMDggKzAxMDAKCiAgICBBZGQgRnVqaXRzdSBDb3JhbFAvTGltZSB2aWRlbyBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBsaW51eC5pdD4KCmNvbW1pdCAyMGM0NTBlZjYxZWYyZWIxYzk2ZjliNTliYTBlYjhkODQ5YmJhMDU4CkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglGcmkgSmFuIDExIDAyOjM5OjQ3IDIwMDggKzAxMDAKCiAgICBGaXggdmlkZW8gY29uc29sZSBuZXdsaW5lIGFuZCBjYXJyaWFnZSByZXR1cm4gaGFuZGxpbmcKCiAgICBMaW5lcyBvZiB0aGUgbGVuZ2h0IENPTlNPTEVfQ09MUyBvciBncmVhdGVyIHRoYW4gQ09OU09MRV9DT0xTCiAgICBhcmUgbm90IGRpc3BsYXllZCBjb3JyZWN0bHkuIFRoaXMgaXMgYW4gYXR0ZW1wdCB0byBmaXgKICAgIHRoaXMgaXNzdWUuIEFsc28gYWRkIGNhcnJpYWdlIHJldHVybiBoYW5kbGluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBsaW51eC5pdD4KCmNvbW1pdCBkNWExNjNkNmJhYTA0ZjVhOGVkY2MxMGViYzZmYWQwODY1N2QzMDkzCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSmFuIDExIDE1OjUzOjU4IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IEZpeCBzZHJhbSBpbml0IG9uIFNlcXVvaWEgYm9hcmRzCgogICAgQ2xlYXIgcG9zc2libGUgZXJyb3JzIGluIE1DU1IgcmVzdWx0aW5nIGZyb20gZGF0YS1leWUtc2VhcmNoLgogICAgSWYgbm90IGRvbmUsIHRoZW4gd2UgY291bGQgZ2V0IGFuIGludGVycnVwdCBsYXRlciBvbiB3aGVuCiAgICBleGNlcHRpb25zIGFyZSBlbmFibGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkNjEwYTYwNzMwYjc0NjRmNmY2NTlkYjQ5ZDI2NGQ4OWE3YzcxMDYxCkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglGcmkgSmFuIDExIDE1OjMxOjA5IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IFJld29yayBMaW1lIHN1cHBvcnQgZm9yIGx3bW9uNQoKICAgIFJld29yayBMaW1lIHN1cHBvcnQgZm9yIGx3bW9uNSB1c2luZyBuZXcgdmlkZW8gZHJpdmVyCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IGZmNDFmZmM5M2MxNTkyZTc3YTQ0YmRiZWJkNWQ3ODE3MzlmM2FhZTAKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJRnJpIEphbiAxMSAxNDo1NToxNiAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBVcGRhdGUgUE1DNDQwIGNvbmZpZyBmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgZTNlZGNiMzZmMTRmMGFhYmI2ZjUwZTk2MDE0ZDY4NzdmNzNkNjRlYQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglGcmkgSmFuIDExIDE0OjU1OjA4IDIwMDggKzAxMDAKCiAgICBwcHg0eHg6IEZpeCBzZHJhbSBpbml0IG9uIFBNQzQ0MCBib2FyZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCAwNjFhYWQ0ZDMyMGRkZGNlMjYyNDc2OTlkY2YyODc1ZWUyZWExMzY2CkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSmFuIDEwIDIzOjA5OjMzIDIwMDggKzA4MDAKCiAgICBtcGM4M3h4OiBGaXggdGhlIGJ1ZyBvZiAyNjZNSHogZGF0YSByYXRlIEREUgoKICAgIFRoZSBERFIgZG9lc24ndCB3b3JrIG9uIHRoZSAyNjZNSHogZGF0YSByYXRlLAogICAgdGhlIHBhdGNoIGZpeCB0aGUgYnVnLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGRlZDA4MzE3YWQ5ZTM0MGI4ODdiZjJlYjQ2ZTk1NjVhMGY2MTBhOTMKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKYW4gMTAgMjM6MDg6MjYgMjAwOCArMDgwMAoKICAgIG1wYzgzeHg6IE1ha2UgdGhlIGNvZGUgbW9yZSByZWFkYWJsZQoKICAgIEZvcm1hdCB0aGUgY29kZSwgbWFrZSBpdCBtb3JlIHJlYWRhYmxlCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgN2U3NGQ2M2QxYTIxMWZiYzM0ZWM0MjRlMmRjNjcyNjYwMWYzMjNkMApBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEphbiAxMCAyMzowNzoyMyAyMDA4ICswODAwCgogICAgbXBjODN4eDogUmVkdWNlIHRoZSBsYXRlbmN5IG9mIEREUgoKICAgIFJlZHVjZSB0aGUgQUwgZnJvbSAyIHRvIDEgY2xvY2sgdG8gaW1wcm92ZSB0aGUgcGVyZm9ybWFuY2UuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNmYzOTMxYTJiZWQ1NDEyYzIwZDVlNTUzNmM4NjVmYmQ2NTdmN2QyOApBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEphbiAxMCAyMzowNjowNSAyMDA4ICswODAwCgogICAgbXBjODN4eDogRml4IHRoZSB3cm9uZyBkZWZpbml0aW9uIG9mIE1QQzgzMTVFCgogICAgQWNjb3JkaW5nIHRvIHRoZSBsYXRlc3QgdXNlciBtYW51YWwgb2YgTVBDODMxNUUsCiAgICAxKSBUaGUgU1ZDT0Qgb2YgSFJDV0wgaXMgZGlmZmVyZW50IHRoYW4gODM3eAogICAgMikgVGhlIFNDQ1IgaGFzIGNoYW5nZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlYzI2MzhlYTA4YTUzN2ExYmQ0MDlkYjg3M2FhYWEzM2EwNTNlYmFlCkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSmFuIDEwIDIzOjA1OjAwIDIwMDggKzA4MDAKCiAgICBtcGM4M3h4OiBGaXggdGhlIHR5cG8gaW4gbXBjODN4eC5oCgogICAgVGhlIFNQQ1IgYWJvdXQgVFNFQyBwcmlvcml0eSBpcyB3cm9uZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEJhcmtvd3NraSA8TWljaGFlbC5CYXJrb3dza2lAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvZSBEJ0FiYnJhY2NpbyA8Sm9lLkQnYWJicmFjY2lvQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjODZlZjJjZDllZjgxOTM1MDQ5MjMxZmE4OWYzNmM3Yjc5M2YyZDRiCkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSmFuIDEwIDIzOjA0OjEzIDIwMDggKzA4MDAKCiAgICBtcGM4M3h4OiBGaXggdGhlIHR5cG8gaW4gZ2xvYmFsIGRhdGEgc3RydWN0CgogICAgRml4IHRoZSB0eXBvIGluIGdsb2JhbF9kYXRhLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyYzViNDhmYzIwNWMzZTI3NTI5MTBkYThmMzkyMDllZDA3NTkyOWU1CkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSmFuIDEwIDIzOjAzOjAzIDIwMDggKzA4MDAKCiAgICBtcGM4M3h4OiBSZW1vdmUgY2FjaGUgY29uZmlnIGZyb20gY29uZmlnLmgKCiAgICBjbGVhbiB1cCB0aGUgY2FjaGUgY29uZmlnIGZyb20gY29uZmlncy5oIG9mIGJvYXJkCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZmFiNmY1NTZiYmJiZDFiYjM1YTU0MzMxNjFmN2YxNzNjMThkZjU1OQpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglXZWQgSmFuIDkgMjA6NTc6NDcgMjAwOCArMDMwMAoKICAgIG1wYzgzeHg6IGFkZCBzdXBwb3J0IGZvciB0aGUgTVBDODM2MEUtUkRLCgogICAgVGhpcyBpcyBNUEM4MzYwRSBiYXNlZCBib2FyZCB3aXRoOgogICAgLSAyNTZNQiBmaXhlZCBTRFJBTTsKICAgIC0gOE1CIEludGVsIFN0cmF0YSBOT1IgZmxhc2g7CiAgICAtIFN0TUlDUk8gNjRNaUIgTkFORCBmbGFzaDsKICAgIC0gdHdvIDEwLzEwMC8xMDAwIGV0aGVybmV0IHBvcnRzIGNvbm5lY3RlZCB2aWEgQnJvYWRjb20KICAgICAgQkNNNTQ4MSBQSFlzOwogICAgLSB0d28gMTAvMTAwIGV0aGVybmV0IHBvcnRzIGNvbm5lY3RlZCB2aWEgTmF0aW9uYWwKICAgICAgRFA4Mzg0OCBQSFlzOwogICAgLSBvbmUgUENJIGFuZCBvbmUgbWluaVBDSSBzbG90czsKICAgIC0gZm91ciBzZXJpYWwgcG9ydHMgKHR3byBOUzE2NTUwLWNvbXBhdGlibGUsIHR3byBVQ0NzKTsKICAgIC0gZm91ciBVU0IgcG9ydHMgd29ya2luZyB0aHJvdWdoIE1QQzgzNjBFICJGSENJIiBVU0IgY29udHJvbGxlcjsKICAgIC0gRnVqaXRzdSBNQjg2Mjc3IGdyYXBoaWNzIGNvbnRyb2xsZXI7CiAgICAtIEFuYWxvZyB0byBEaWdpdGFsIENvbnZlcnRlci9Ub3VjaHNjcmVlbiBjb250cm9sbGVyLCBBRDc4NDMKICAgICAgY29ubmVjdGVkIHRvIFNQSS4KCiAgICBGZWF0dXJlcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgcGF0Y2ggYXJlOgogICAgLSBTdE1JQ1JPIDY0TWlCIE5BTkQgZmxhc2ggKHBhdGNoIHNlbnQpOwogICAgLSBNSU5UIGZyYW1lYnVmZmVyIGluaXRpYWxpemF0aW9uIChwYXRjaCBpcyBwZW5kaW5nKTsKICAgIC0gRmV0Y2hpbmcgcHJvZHVjdGlvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBFRVBST00gdmlhIEkyQzsKICAgIC0gRkhDSSBVU0I7CiAgICAtIFR3byBzbG93IFVDQ3MgdXNlZCBhcyBSUy00ODUgVUFSVHMuCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGIzZDJjZGU3YTNhYTFlODNiNzk2OGNkZmY5MjllNTJjOGNjNjE3YmIKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJV2VkIEphbiA5IDIwOjU3OjQwIDIwMDggKzAzMDAKCiAgICBtcGM4M3h4OiBhZGQgImZzbCwgcWUiIGNvbXBhdGlibGUgZml4dXBzCgogICAgTmV3IGRldmljZSB0cmVlcyB3aWxsIHVzZSAiZnNsLHFlIiBjb21wYXRpYmxlIHByb3BlcnRpZXMuCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk3N2I1NzU4M2E3YzM0MDEwZTU2NmEwOWE2NzllYzNjMTgzNmY5OTYKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSmFuIDkgMTU6MjQ6MDYgMjAwOCAtMDYwMAoKICAgIG1wYzgzeHg6IGFkZCBtaXNzaW5nIENPTkZJR19IQVNfRVRIMCBkZWZpbmVzCgogICAgdGhlIG5ldyBsaWJmZHQgY29kZSBvbmx5IHVwZGF0ZXMgZXRoMCBpZiBDT05GSUdfSEFTX0VUSDAKICAgIGlzIGRlZmluZWQ7IGFkZCB0aGUgZGVmaW5lIHRvIHRoZSBtaXNzaW5nIGJvYXJkIGNvbmZpZ3MuCgogICAgVGhhbmtzIHRvIEVtaWxpYW4gTWVkdmUgZm9yIGZpbmRpbmcgdGhpcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGI4MzBiN2YxNjM1OTg0YmE2MDcyMTlmY2JkNzg1OTdjMjhlZWI1MjkKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmdpbGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEphbiAxMCAxNDowMDoyOCAyMDA4IC0wNjAwCgogICAgODZ4eDogU3VwcG9ydCAyR0IgRElNTXMKCiAgICBDb25maWd1cmUgdGhlIG51bWJlciBvZiBiaXRzIHVzZWQgdG8gYWRkcmVzcyB0aGUgYmFua3MgaW5zaWRlIHRoZSBTRFJBTQogICAgZGV2aWNlLiAgVGhlIGRlZmF1bHQgcmVnaXN0ZXIgdmFsdWUgb2YgMCBtZWFucyAyIGJpdHMgdG8gYWRkcmVzcyA0IGJhbmtzLgogICAgSGlnaGVyIGNhcGFjaXR5IGRldmljZXMgbGlrZSBhIDJHQiBESU1NIHJlcXVpcmUgMyBiaXRzIHRvIGFkZHJlc3MgOCBiYW5rcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmdpbGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0ZDMzMmRiZWIwOGY1ODYzZDFlYTY5ZDkxYTAwYzU0OTlkM2E4N2VkCkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1c2dpZ2VyQGdteC5jaD4KRGF0ZToJVGh1IEphbiAxMCAxODo1MDozMyAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBNYWtlIFNlcXVvaWEgYm9vdCB2eFdvcmtzCgogICAgdnhXb3JrcyBleHBlY3RzIGluCiAgICBUTEIgMCBhIGVudHJ5IGZvciB0aGUgTWFjaGluZSBDaGVjayBpbnRlcnJ1cHQKICAgIFRMQiAxIGEgZW50cnkgZm9yIHRoZSBSQU0KICAgIFRMQiAyIGEgZW50cnkgZm9yIHRoZSBFQkMKICAgIFRMQiAzIGEgZW50cnkgZm9yIHRoZSBib290IGZsYXNoCgogICAgQWZ0ZXIgY2hhbmdpbmcgdGhlIGJhdWRyYXRlIHRvIDk2MDAgSSBoYWQgbm8gcHJvYmxlbXMgdG8gYm9vdCB0aGUKICAgIHZ4V29ya3MgaW1hZ2UgYXMgZGlzdHJpYnV0ZWQgYnkgV2luZFJpdmVyIChSZXZpc2lvbiAyLjAvMSBmcm9tCiAgICBKdW5lIDE4LCAyMDA3KQoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgNmQ4MTg0YjAwYzBkMWQ3MDkwZTRhMmY1MTRlMzEwZDk4YTM5NGY4ZApBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgpEYXRlOglXZWQgSmFuIDkgMjM6MTA6MjcgMjAwOCAtMDUwMAoKICAgIHBwYzR4eDogRml4IGRmbHVzaCgpIHRvIHJlc3RvcmUgRFZMSU0gcmVnaXN0ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KCmNvbW1pdCAyNTJmNjBiMDY4ZDFmOTQxOTBiNWJjZmRhMTY5ZGI1ODIzODdlMTVlCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVGh1IEphbiAxMCAwMzo1Mjo0NCAyMDA4IC0wNTAwCgogICAgTmlvczI6IHJlbW92ZSBjb21tb24vY21kX2JkaW5mby5jIHVudXNlZCB2YXJpYWJsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Cgpjb21taXQgNDIyYjFhMDE2MDJiNmUyZmJmODQ0NGExMTkyYzdiYTMxNDYxZmQ0YwpBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVdlZCBKYW4gOSAxODoxNTo1MyAyMDA4IC0wNTAwCgogICAgRml4IEV0aGVybmV0IGluaXQoKSByZXR1cm4gY29kZXMKCiAgICBDaGFuZ2UgcmV0dXJuIHZhbHVlcyBvZiBpbml0KCkgZnVuY3Rpb25zIGluIGFsbCBFdGhlcm5ldCBkcml2ZXJzIHRvIGNvbmZvcm0KICAgIHRvIHRoZSBmb2xsb3dpbmc6CgoJPj0wOiBTdWNjZXNzCgk8MDogIEZhaWx1cmUKCiAgICBBbGwgZHJpdmVycyBnb2luZyBmb3J3YXJkIHNob3VsZCByZXR1cm4gMCBvbiBzdWNjZXNzLiAgQ3VycmVudCBkcml2ZXJzIHRoYXQKICAgIHJldHVybiAxIG9uIHN1Y2Nlc3Mgd2VyZSBsZWZ0IGFzLWlzIHRvIG1pbmltaXplIGNoYW5nZXMuCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBBY2tlZC1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIEFja2VkLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgogICAgQWNrZWQtQnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDNhNjUzMmNiZTI2M2Q5OTJmNDllODZhYzk1YmVkZTI4ZTk2ZjljOApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVRodSBKYW4gMTAgMDA6NTU6MTQgMjAwOCArMDEwMAoKICAgIENvZGluZyBTdHlsZSBjbGVhbnVwOyB1cGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAxN2E0MWU0NDkyMTIxY2NmOWZhMmMxMGMyY2IxYTZkMWMxOGQ3NGY3CkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEphbiA5IDE2OjU2OjU0IDIwMDggLTA2MDAKCiAgICBBZGQgUUUgYnJnIGZyZXEgYW5kIGNvcnJlY3QgcWUgYnVzIGZyZXEgZmR0IHVwZGF0ZSBjb2RlCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4OTBkZmVmMDZjMmQxNjlhMzM1NjM1OTU5Njg5MDc1NGRmYjhlZTFjCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSmFuIDkgMTY6MzQ6NTEgMjAwOCAtMDYwMAoKICAgIFJlbW92ZSBjYWNoZSBjb25maWcgZnJvbSBBVFVNODU0OCBhbmQgc2JjODU0OCBjb25maWdzCgogICAgVGhlc2UgYm9hcmRzIHdlcmVuJ3QgdXBkYXRlZCBieSBLdW1hcidzIGNvbmZpZyBwYXRjaCBiZWNhdXNlIHRoZXkKICAgIHdlcmVuJ3QgaW4gdGhlIHRyZWUsIHlldC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjhlYzIzODUwMzhjMDk0YjA3ZWM1YjQ5MzM2Mjg5YTQ2YjZlOWNjNgpBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKYW4gNyAxMzozMToxOSAyMDA4IC0wNjAwCgogICAgODV4eDogYWRkIGFiaWxpdHkgdG8gdXBsb2FkIFFFIGZpcm13YXJlCgogICAgRGVmaW5lIHRoZSBsYXlvdXQgb2YgYSBiaW5hcnkgYmxvYiB0aGF0IGNvbnRhaW5zIGEgUUUgZmlybXdhcmUgYW5kIGluc3RydWN0aW9ucwogICAgb24gaG93IHRvIHVwbG9hZCBpdC4gIEFkZCBmdW5jdGlvbiBxZV91cGxvYWRfZmlybXdhcmUoKSB0byBwYXJzZSB0aGUgYmxvYiBhbmQKICAgIHBlcmZvcm0gdGhlIGFjdHVhbCB1cGxvYWQuCUFkZCBjb21tYW5kLWxpbmUgY29tbWFuZCAicWUgZnciIHRvIHRha2UgYSBmaXJtd2FyZQogICAgYmxvYiBpbiBtZW1vcnkgYW5kIHVwbG9hZCBpdC4gIFVwZGF0ZSBmdF9jcHVfc2V0dXAoKSBvbiA4NXh4IHRvIGNyZWF0ZSB0aGUKICAgICdmaXJtd2FyZScgZGV2aWNlIHRyZWUgbm9kZSBpZiBVLUJvb3QgaGFzIHVwbG9hZGVkIGEgZmlybXdhcmUuICBGdWxseSBkZWZpbmUKICAgICdzdHJ1Y3QgcnNwJyBpbiBpbW1hcF9xZS5oIHRvIGluY2x1ZGUgdGhlIGFjdHVhbCBSSVNDIFNwZWNpYWwgUmVnaXN0ZXJzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjAwOWYzZWNhOTliYjdiOWU2YmE2NjM5YTg5MDlhMTM4ZGQ1ZTlmZQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBKYW4gOCAwMToyMjoyMSAyMDA4IC0wNjAwCgogICAgODV4eDogUmVtb3ZlIGNhY2hlIGNvbmZpZyBmcm9tIGNvbmZpZ3MuaAoKICAgIEVpdGhlciB1c2UgdGhlIHN0YW5kYXJkIGRlZmluZXMgaW4gYXNtL2NhY2hlLmggb3IgZ3JhYiB0aGUgaW5mb3JtYXRpb24KICAgIGF0IHJ1bnRpbWUgZnJvbSB0aGUgTDFDRkcgU1BSLgoKICAgIEFsc28sIG1pbm9yIGNsZWFudXAgaW4gY2FjaGUuaCB0byBtYWtlIHRoZSBjb2RlIGEgYml0IG1vcmUgcmVhZGFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBiOTY0ZTkzNjhmNDUzNzJhYWYxZGEwYzEzZmU1NmY2ZDgxYWU4ZTk2CkF1dGhvcjogcm9iZXJ0IGxhemFyc2tpIDxyb2JlcnRsYXphcnNraUBnbWFpbC5jb20+CkRhdGU6CUZyaSBEZWMgMjEgMTA6Mzk6MjcgMjAwNyAtMDUwMAoKICAgIG1wYzg1eHg6IEFkZCBzdXBwb3J0IGZvciBBVFVNODU0OCAodXBkYXRlZCkKCiAgICBBZGQgc3VwcG9ydCBmb3IgSW5zdGl0dXRvIEF0bGFudGljbydzIEFUVU04NTQ4IGJvYXJkCgogICAgU2lnbmVkLW9mZi1ieTogcm9iZXJ0IGxhemFyc2tpIDxyb2JlcnRsYXphcnNraUBnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgN2JkNjEwNGI3MWRlOWJjYTgwYWM4ZTA5MzYwMDM0NDNiYjQyZjJmYwpBdXRob3I6IHJvYmVydCBsYXphcnNraSA8cm9iZXJ0bGF6YXJza2lAZ21haWwuY29tPgpEYXRlOglGcmkgRGVjIDIxIDEwOjM2OjM3IDIwMDcgLTA1MDAKCiAgICBtcGM4NXh4OiBBZGQgc3VwcG9ydCBmb3IgQVRVTTg1NDggKHVwZGF0ZWQpCgogICAgQWRkIHN1cHBvcnQgZm9yIEluc3RpdHV0byBBdGxhbnRpY28ncyBBVFVNODU0OCBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IHJvYmVydCBsYXphcnNraSA8cm9iZXJ0bGF6YXJza2lAZ21haWwuY29tPgoKY29tbWl0IDllM2VkMzkyZDJjODk2NWUyNGM5NDJiNTg3OTZjMzFjNjQ0YzJmNzAKQXV0aG9yOiBKb2UgSGFtbWFuIDxqb2UuaGFtbWFuQGVtYmVkZGVkc3BlY2lhbHRpZXMuY29tPgpEYXRlOglUaHUgRGVjIDEzIDA2OjQ1OjE0IDIwMDcgLTA2MDAKCiAgICBtcGM4NXh4OiBBZGQgc3VwcG9ydCBmb3IgU0JDODU0OCAodXBkYXRlZCkKCiAgICBBZGQgc3VwcG9ydCBmb3IgV2luZCBSaXZlcidzIFNCQzg1NDggcmVmZXJlbmNlIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYgYnk6IEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+Cgpjb21taXQgMTFjNDVlYmQ0NmQ2NTE3YjUxYjdhOTJkZDUyYTYxOGIyZjRlNTU4NgpBdXRob3I6IEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+CkRhdGU6CVRodSBEZWMgMTMgMDY6NDU6MDggMjAwNyAtMDYwMAoKICAgIG1wYzg1eHg6IEFkZCBzdXBwb3J0IGZvciBTQkM4NTQ4ICh1cGRhdGVkKQoKICAgIEFkZCBzdXBwb3J0IGZvciBXaW5kIFJpdmVyJ3MgU0JDODU0OCByZWZlcmVuY2UgYm9hcmQuCgogICAgU2lnbmVkLW9mZiBieTogSm9lIEhhbW1hbiA8am9lLmhhbW1hbkBlbWJlZGRlZHNwZWNpYWx0aWVzLmNvbT4KICAgIFNpZ25lZC1vZmYgYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2NGQ0YmNiMDg3YzJlY2UxYzRkMGRlOGVmZTg1ZTAwNzVlNWIxNTk0CkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CU1vbiBPY3QgMjIgMTk6NTg6MTkgMjAwNyArMDQwMAoKICAgIE1QQzg1NjhFLU1EUzogc2V0IHVwIFFFIHBhcmlvIGZvciBVQVJUMQoKICAgIFRvIHVzZSBVQVJUMSBvbiB0aGUgTVBDODU2OEUtTURTLCBRRSBwYXJpbyBwaW5zIFBDWzA6M10gc2hvdWxkCiAgICBiZSBzZXQgdXAgYXBwcm9wcmlhdGVseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KCmNvbW1pdCBhZDE2MjI0OWNiMzcxZTllMzg5NzE2NzZmMDliZTc5MWU1ZjNjZjRhCkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CU1vbiBPY3QgMjIgMTg6MTI6NDYgMjAwNyArMDQwMAoKICAgIE1QQzg1NjhFLU1EUzogcmVzZXQgVUNDcyB0byB1c2UgdGhlbSByZWxpYWJseQoKICAgIEluIG9yZGVyIHRvIHVzZSBHRVRIMSBhbmQgR0VUSDIgb24gdGhlIE1QQzg1NjhFLU1EUywgd2Ugc2hvdWxkIHJlc2V0CiAgICBVQ0NzLgoKICAgIHAucyBTaW1pbGFyIGNvZGUgZXhpc3RzIGluIHRoZSBMaW51eCBrZXJuZWwgYm9hcmQgZmlsZSAoZm9yIGNhcGFiaWxpdHkKICAgIHJlYXNvbnMgd2l0aCBvbGRlciBVLUJvb3RzKSwgYnV0IHNob3VsZCBiZSByZW1vdmVkIHNvbWUgZGF5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgoKY29tbWl0IDIxNDZjZjU2ODIxYzMzNjQ3ODZjYTk0YTczMDYwMDhjNTgyNGIyMzgKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgRGVjIDE5IDAxOjE4OjE1IDIwMDcgLTA2MDAKCiAgICBSZXdvcmtlZCBGU0wgQm9vay1FIFRMQiBtYWNyb3MgdG8gYmUgbW9yZSByZWFkYWJsZQoKICAgIFRoZSBvbGQgbWFjcm9zIG1hZGUgaXQgZGlmZmljdWx0IHRvIGtub3cgd2hhdCBXSU1HRSBhbmQgcGVybSBiaXRzCiAgICB3ZXJlIHNldCBmb3IgYSBUTEIgZW50cnkuICBBY3R1YWxseSB1c2UgdGhlIGJpdCBtYXNrcyBmb3IgdGhlc2UgaXRlbXMKICAgIHNpbmNlIHRoZXkgYXJlIG9ubHkgYSBzaW5nbGUgYml0LgoKICAgIEFsc28gbW92ZWQgdGhlIG1hY3JvcyBpbnRvIG1tdS5oIG91dCBvZiBlNTAwLmggc2luY2UgdGhleSBhcmVuJ3Qgc3BlY2lmaWMKICAgIHRvIGU1MDAuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAxZDQ3MjczZDQ2OTI1OTI5ZjhmMmMxOTEzY2Q5NmQ3MjU3YWFkZTg4CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIERlYyAxOCAyMzoyMTo1MSAyMDA3IC0wNjAwCgogICAgVXNlIEZTTCBCb29rLUUgTU1VIG1hY3JvcyBmcm9tIExpbnV4IEtlcm5lbAoKICAgIEdyYWIgdGhlIEZTTCBCb29rLUUgTUFTIHJlZ2lzdGVyIG1hY3JvcyBmcm9tIExpbnV4LiAgQWxzbyBhZGRlZAogICAgZGVmaW5lcyBmb3IgcGFnZSBzaXplcyB1cCB0byA0VEIgYW5kIHJlbW92ZWQgU0hBUkVOIHNpbmNlIGl0IGRvZXNudAogICAgcmVhbGx5IGV4aXN0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMDJkZjRhMjcwZjgxN2VmNmVjMzkwNDdhMDFiNTVmZWNkYzVmM2IzNwpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEphbiA5IDEzOjUxOjMyIDIwMDggLTA2MDAKCiAgICBGaXggbXkgb3duIG1lcmdlIHN0dXBpZGl0eQoKICAgIFdheSBiYWNrIGluIEF1Z3VzdCBJIG1lcmdlZCBIZWlrbydzIHBhdGNoOgogICAgNTY2YTQ5NGY1OTI6IFtQQ1M0NDBFUF0gdXBncmFkZSB0aGUgUENTNDQwRVAgYm9hcmQKCiAgICB3aXRoIEpvbidzIENPTkZJR19DT01NQU5EUyBwYXRjaGVzLgoKICAgIFRoaXMgd2FzIGRvbmUgaW4gY29tbWl0OiA2YmY2ZjExNGRjZGQ5N2VjM2Y4MGMyNzYxZWQ0MGUzMTIyOWQ2Yjc4CgogICAgSG93ZXZlciwgaW4gdGhlIHByb2Nlc3MsIEkgbGVmdCBvdXQgc29tZSBvZiBIZWlrbydzIGdvb2QgY2hhbmdlcy4KCiAgICBOb3cgSGVpa28ncyBhbmQgSm9uJ3MgcGF0Y2hlcyBhcmUgcHJvcGVybHkgbWVyZ2VkIGluIGZhdF9yZWdpc3Rlcl9kZXZpY2UoKQoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2NjM2YjYyYTZlZmM3ZjE0ZTZlNzg4Nzg4NjMxYWU3YTdmY2E0NTM3CkF1dGhvcjogSmFtZXMgWWFuZyA8SmFtZXMuWWFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSmFuIDkgMTE6MTc6NDkgMjAwOCAtMDYwMAoKICAgIEV4cG9zZSBwYXJzZV9saW5lKCkgZ2xvYmFsbHkuCgogICAgQWRkIG5ldyBmdW5jdGlvbiByZWFkbGluZV9pbnRvX2J1ZmZlcigpIHRoYXQgYWxsb3dzIHRoZQogICAgb3V0cHV0IG9mIHJlYWRsaW5lIHRvIGJlIHB1dCBpbnRvIGEgcG9pbnRlciB0byBjaGFyIGJ1ZmZlci4KCiAgICBUaGlzIHJlZmFjdG9yaW5nIGFsbG93cyBvdGhlciBmdW5jdGlvbnMgYmVzaWRlcyB0aGUKICAgIG1haW4gY29tbWFuZCBsb29wIHRvIGFsc28gdXNlIHRoZSBzYW1lIGlucHV0IG1lY2hhbmlzbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYW1lcyBZYW5nIDxKYW1lcy5ZYW5nQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3Y2E5MDUxMzQ4NmFiZDRhZTUwYmQxYjc0MDNmNDdjYzU4YzVhZDI1CkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglXZWQgSmFuIDkgMDE6MTU6MjUgMjAwOCArMDEwMAoKICAgIHRyaXZpYWw6IGZpeCBjb25zZXF1ZW5jZXMgb2YgYSBiYWQgbWVyZ2UKCiAgICBGaXggd2hhdCBsb29rcyBsaWtlIGEgbWVyZ2UgYXJ0aWZhY3QuCgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgoKY29tbWl0IDQ3ODVhNjk0YzAwNDU5OTZjY2YwYWM1YjhlZGY1MzFlZmMxYjczMGUKQXV0aG9yOiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSmFuIDMgMTA6NTE6MTUgMjAwOCArMDgwMAoKICAgIEFkZCBDdHJsIGNvbWJvIGtleSBzdXBwb3J0IHRvIHVzYiBrZXlib2FyZCBkcml2ZXIuCgogICAgQ3RybCBjb21ibyBrZXkgc3VwcG9ydCBpcyBhZGRlZCwgd2hpY2ggaXMgdmVyeSB1c2VmdWwgdG8gaW5wdXQgQ3RybC1DCiAgICBmb3IgaW50ZXJydXB0IGN1cnJlbnQgam9iLgogICAgQWxzbyBhZGQgdXNiX2V2ZW50X3BvbGwoKSBjYWxsaW5nIHRvIHVzYl9rYmRfdGVzdGMoKSwgd2hpY2ggY2FuIGdldAogICAga2V5IGlucHV0IHdoZW4gdHN0YygpIGlzIGNhbGxlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDEwYzczODJiYzVkNWU2NGM0N2Y5NGFjMmNhNzhjYzU3NDQ0MmU4MmQKQXV0aG9yOiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+CkRhdGU6CVN1biBEZWMgMzAgMDM6MzA6NTYgMjAwNyArMDEwMAoKICAgIGZpeCB2YXJpb3VzIGNvbW1lbnRzCgogICAgU2lnbmVkLW9mZi1ieTogTWFyY2VsIFppc3dpbGVyIDxtYXJjZWxAemlzd2lsZXIuY29tPgoKY29tbWl0IDc4MTdjYjIwODNkOTgyOTIzNzUyZmUwZjEyYjY3YzBlN2MwOWEwMjcKQXV0aG9yOiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+CkRhdGU6CVN1biBEZWMgMzAgMDM6MzA6NDYgMjAwNyArMDEwMAoKICAgIGZpeCBjb21tZW50cyB3aXRoIG5ldyBkcml2ZXJzIG9yZ2FuaXphdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KCmNvbW1pdCBhOWI0MTBkYzdkMmE0NzIxYzQwOGIxM2FiZmMwMzc5ODgxNTBmMTQ1CkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgpEYXRlOglGcmkgRGVjIDI4IDEyOjUwOjU5IDIwMDcgKzA5MDAKCiAgICBSZW1vdmUgdGhlIG9ic29sZXRlIHRlcnNlIHZlcnNpb24gb2YgZG9fbWlpKCkKCiAgICBXZSBub3cgaGF2ZSBtb3JlIHVzZWZ1bCB2ZXJzaW9uIG9mIGRvX21paSgpIGFuZCBldmVyeWJvZHkgdXNlIGl0LgogICAgR2VyYWxkIFZhbiBCYXJlbiBzYXlzOgoKICAgID4gV2hlbiBJIG9yaWdpbmFsbHkgd3JvdGUgdGhlIG1paSBjb21tYW5kIDYoISkgeWVhcnMgYWdvLCBJIHdyb3RlIGEKICAgID4gdmVyYm9zZSB2ZXJzaW9uIHRoYXQgcHJpbnRlZCBodW1hbiByZWFkYWJsZSBkZWNvbXBvc2l0aW9uIG9mIHRoZSBmbGFncywKICAgID4gZXRjLiwgYW5kIGEgdGVyc2Ugb25lIHRoYXQgZGlkbid0IHByaW50IGFzIG11Y2ggc3R1ZmYgYW5kIHRodXMgaGFkIGEKICAgID4gc21hbGxlciBtZW1vcnkgZm9vdHByaW50LgogICAgPgogICAgPiBJdCBzb3VuZHMgbGlrZSB0aGUgdGVyc2UgdmVyc2lvbiBoYXMgd2l0aGVyZWQgYW5kIGRpZWQsIGFwcGFyZW50bHkKICAgID4gcGVvcGxlIGFyZSBvbmx5IHVzaW5nIHRoZSB2ZXJib3NlIHZlcnNpb24gKHdoaWNoIGlzIHZlcnkgdW5kZXJzdGFuZGFibGUsCiAgICA+IEkgZG8gbXlzZWxmKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IDAxYzY4N2FhNmUwNjViZDRmYWY4MGY3MjMzNjFlNzk4OTQxZGQ2YjAKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBEZWMgMjcgMTM6NDI6NTYgMjAwNyAtMDUwMAoKICAgIERvIG5vdCByZWZlcmVuY2Ugc2hhMS5jIHdoZW4gYnVpbGRpbmcgbWtpbWFnZS4KCiAgICByZW1vdmUgc2hhMS5vIGZyb20gbWtpbWFnZSBsaW5raW5nIHNpbmNlIGl0IGlzbid0IGFjdHVhbGx5IHVzZWQuCgogICAgU2lnbmVkLU9mZi1CeTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGI5MTczYWY3M2U1MjRkMzdjODEyZjIxMDE3M2NmODMzODVjNTE3MWEKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+CkRhdGU6CVRodSBEZWMgMjcgMTU6Mzk6NTQgMjAwNyArMDkwMAoKICAgIGNvbW1vbi9jbWRfbWlpLmM6IEFkZCBzYW5pdHkgYXJnYyBjaGVjawoKICAgIElmIHR5cGUgbWlpIGNvbW1hbmQgd2l0aG91dCBhcmd1bWVudHMsIHdlIHN1ZmZlciBmcm9tIHVuaW5pdGlhbGl6ZWQgYXJndltdCiAgICBlbnRyaWVzOyBmb3IgZXhhbXBsZSB3ZSBNSVBTIGdldCBzdHVjayBieSBUTEIgZXJyb3IuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgoKY29tbWl0IDUwMDg1NmViMTcwN2VkMTdkOTIwNGJhYTYxZGQ1OTk0OGQzYjI4OTkKQXV0aG9yOiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgSmFuIDkgMTk6Mzk6MzYgMjAwOCArMDEwMAoKICAgIEFQSSBmb3IgZXh0ZXJuYWwgYXBwbGljYXRpb25zLgoKICAgIFRoaXMgaXMgYW4gQVBJIGZvciBleHRlcm5hbCAoc3RhbmRhbG9uZSkgYXBwbGljYXRpb25zIHJ1bm5pbmcgb24gdG9wIG9mCiAgICBVLUJvb3QsIGFuZCBpcyBtZWFudCB0byBiZSBtb3JlIGV4dGVuc2libGUgYW5kIHJvYnVzdCB0aGFuIHRoZSBleGlzdGluZwogICAganVtcHRhYmxlIG1lY2hhbmlzbS4gSXQgaXMgc2ltaWxhciB0byBVTklYIHN5c2NhbGwgYXBwcm9hY2guIFNlZSBhcGkvUkVBRE1FCiAgICBmb3IgbW9yZSBkZXRhaWxzLgoKICAgIEluY2x1ZGVkIGlzIHRoZSBkZW1vIGFwcGxpY2F0aW9uIHVzaW5nIHRoaXMgbmV3IGZyYW1ld29yayAoYXBpX2V4YW1wbGVzKS4KCiAgICBQbGVhc2Ugbm90ZSB0aGlzIGlzIHN0aWxsIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlLCBhbmQgaXMgdHVybmVkIG9mZiBieQogICAgZGVmYXVsdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgoKY29tbWl0IGZlOGRkMGIyMjIwYjdjMDJiMGQ0YzljNGY5OTY3ODc5OTcwNDc3YjEKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSmFuIDkgMTI6MTQ6NTUgMjAwOCAtMDYwMAoKICAgIDg2eHg6IFJlbW92ZSBjYWNoZSBjb25maWcgZnJvbSBjb25maWdzLmgKCiAgICBKdXN0IHVzZSB0aGUgc3RhbmRhcmQgZGVmaW5lcyBpbiBhc20vY2FjaGUuaC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDI2YTQxNzkwZjhlYmExOWFkNDUwZTE4YWU5MTM1MWRhZjQ4NWIzZTIKQXV0aG9yOiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgSmFuIDkgMTg6MDU6MjcgMjAwOCArMDEwMAoKICAgIEdsb2JhbGl6ZSBlbnZtYXRjaCgpCgogICAgVGhlIG5ld2x5IGludHJvZHVjZWQgQVBJIChyb3V0aW5lcyByZWxhdGVkIHRvIGVudiB2YXJzKSB3aWxsIG5lZWQgdG8gY2FsbAogICAgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgWmFiZHlyIDxhcm1vQHNlbWloYWxmLmNvbT4KCmNvbW1pdCAxZGYxNzBmOGIyYTk5ZTFlMmY5NDBmOWYwYjU2NTExZTFlNGM5ZTFmCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEphbiA0IDEyOjA3OjI3IDIwMDggLTA2MDAKCiAgICBDb252ZXJ0IE1QQzg2MTBIUENEIHRvIHVzZSBsaWJmZHQuCgogICAgQXNzdW1lcyB0aGUgcHJlc2VuY2Ugb2YgdGhlIGFsaWFzZXMgbm9kZSBpbiB0aGUgRFRTIHRvCiAgICBsb2NhdGUgdGhlIHBjaSBhbmQgc2VyaWFsIG5vZGVzIGZvciBmaXh1cHMuCgogICAgVXNlIGNvbnNpc3RlbnQgZmR0YWRkciBhbmQgZmR0ZmlsZSBpbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjOTk3NGFiMGE0ZDM3MzFjZGI3NmE3NTk5ZDlmZTk0NDVkNzY0ZDYwCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEphbiA0IDExOjU4OjIzIDIwMDggLTA2MDAKCiAgICA4NjEwOiBGaXggbGluZ2VyaW5nIGNvbXBpbGUgd2FybmluZ3MuCgogICAgVHVybiBvZmYgREVCVUcuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2MDA3ZjMyNTFjMDk2N2FkYzEzZjJlZDhiZTFiOTI0ZGRjMzAxMjRkCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEphbiA5IDE1OjE0OjQ2IDIwMDggKzAxMDAKCiAgICBDb2RpbmcgU3R5bGUgY2xlYW51cCwgdXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZmM2NDE0ZWNhNTVmMWZjMTA4ZmIxMmZjOGNkYzQzYmQ4YjQ0NjNmOQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIERlYyAxOCAwNDoyOTo1NSAyMDA3IC0wNTAwCgogICAgZml4IGVhc3lsb2dvIG9uIGJpZyBlbmRpYW4gZGV2IHN5c3RlbXMKCiAgICBkaWRudCByZWFsaXplIGhvdyBvdXQgb2Ygc2hhcGUgZWFzeWxvZ28gYWN0dWFsbHkgd2FzIHVudGlsIGkgdHJpZWQgdXNpbmcgaXQuCiAgICB0aGlzIHBhdGNoIGRvZXMgYnl0ZSBzd2FwcGluZyBhcyBuZWVkIGJlIG9uIHRoZSBpbnB1dCB0Z2EgaGVhZGVyIHNpbmNlIHRoZSB0Z2EKICAgIGlzIGluIGxpdHRsZSBlbmRpYW4gYnV0IHRoZSBob3N0IGNvdWxkIGp1c3QgYXMgd2VsbCBiZSBiaWcgZW5kaWFuLglpIGRpZG50CiAgICBib3RoZXIgdXNpbmcgYnN3YXAgbWFjcm9zIG9yIHN1Y2ggc3R1ZmYgZnJvbSBzeXN0ZW0gaGVhZGVycyBhcyBub3RoaW5nIGluCiAgICBQT1NJWCBkaWN0YXRlcyBieXRlIHN3YXBwaW5nIGZ1bmN0aW9uYWxpdHkuCgogICAgU2lnbmVkLU9mZi1CeTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDM4ZDI5OWMyZGI4MWJkODg5YzYwMWI1ZGZjMTJjNGU4M2VmODMzMzMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVR1ZSBEZWMgMTggMDM6MjM6MjUgMjAwNyAtMDUwMAoKICAgIGNsZWFudXAgZWFzeWxvZ28KCiAgICAtIG1ha2UgdGhlIE1ha2VmaWxlIG5vdCBzdWNrCiAgICAtIGluY2x1ZGUgcHJvcGVyIGhlYWRlcnMgZm9yIHByb3RvdHlwZXMKICAgIC0gZml4IG9idmlvdXMgYnJva2VuIGhhbmRsaW5nIG9mIHN0cmNocigpIHdoZW4gaGFuZGxpbmcgJy4nIGluIGZpbGVuYW1lcwoKICAgIFNpZ25lZC1PZmYtQnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA4ODNlMzkyNWQ5OWE4ZGQ2OWM1YjAyMDFjYmE1YjE4ODdmODhmOTVjCkF1dGhvcjogcmFwdG9yYnJpbm9AYWltLmNvbSA8cmFwdG9yYnJpbm9AYWltLmNvbT4KRGF0ZToJVGh1IERlYyAxMyAyMToyMzoyOCAyMDA3IC0wNTAwCgogICAgRml4IGJ1aWxkIHByb2JsZW1zIHVuZGVyIEN5Z3dpbgoKICAgIFRoaXMgcGF0Y2ggYWxsb3dzIHUtYm9vdCB0byBidWlsZCB3aXRob3V0IGVycm9yIGluIGEgY3lnd2luCiAgICBlbnZpcm9ubWVudC4gIEN5Z3dpbiBkb2VzIG5vdCBkZWZpbmUgX191NjQgaW4gaXQncwogICAgaW5jbHVkZS9hc20vdHlwZXMuaCBmaWxlLiAgVGhlIC1pZGlyYWZ0ZXIgZmxhZyBpbiB0aGUgdS1ib290CiAgICBidWlsZCBjYXVzZXMgdGhlIGluY2x1c2lvbiBvZiB0aGUgY3lnd2luIHR5cGVzLmggZmlsZSBhcyBvcHBvc2VkCiAgICB0byB1LWJvdC9pbmNsdWRlL2FzbS90eXBlcy5oIGZpbGUgd2hpY2ggZG9lcyBkZWZpbmUgX191NjQuCiAgICBTdWJzZXF1ZW50bHksIHNoYTEuYyBjb21waWxlIGZhaWxzIGR1ZSB0byB1bmtub3duIHN5bWJvbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCcmlhbiBNaWxsZXIgPHJhcHRvcmJyaW5vQG5ldHNjYXBlLm5ldD4KCmNvbW1pdCA0M2VmMWMzODFmOTE5NTUwNGEyNDg4ZjVjYjkwOTIyN2ViOTdkNDc1CkF1dGhvcjogSGFucy1DaHJpc3RpYW4gRWd0dmVkdCA8aGNlZ3R2ZWR0QGF0bWVsLmNvbT4KRGF0ZToJRnJpIE5vdiAzMCAxNzoyOTo1OSAyMDA3ICswMTAwCgogICAgY21kX2JtcDogQWRkIHN1cHBvcnQgZm9yIGRpc3BsYXlpbmcgZ3ppcCBjb21wcmVzc2VkIGJtcHMKCiAgICBUaGUgZXhpc3RpbmcgY29kZSBjYW4gc2hvdyBpbmZvcm1hdGlvbiBhYm91dCBhIGd6aXAgY29tcHJlc3NlZCBCTVAKICAgIGltYWdlLCBidXQgY2FuJ3QgYWN0dWFsbHkgZGlzcGxheSBpdC4KCiAgICBUaGVyZWZvcmUsIG1vdmUgdGhlIGRlY29tcHJlc3Npb24gY29kZSBvdXQgb2YgYm1wX2luZm8oKSBhbmQgdXNlIGl0IGluCiAgICBibXBfZGlzcGxheSgpIGFzIHdlbGwgaW4gb3JkZXIgdG8gZGlzcGxheSBhIGNvbXByZXNzZWQgQk1QIGltYWdlLgoKICAgIEFsc28sIGNsZWFuIHRoaW5ncyB1cCBhIGJpdCBhbmQgZml4IGEgbWVtb3J5IGxlYWsgd2hpbGUgd2UncmUgYXQgaXQuCgogICAgW2hza2lubmVtb2VuQGF0bWVsLmNvbTogYSBiaXQgb2YgcmVmYWN0b3JpbmddCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBkMTk3ZmZkODE3MmM2ZmRlZjM4NzMzNDI0NjQwYTlhNDcyOTVkNmU5CkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglUaHUgTm92IDI5IDIxOjE1OjU2IDIwMDcgKzAxMDAKCiAgICBGaXggYW5kIG9wdGltaXplIE1JSSBvcGVyYXRpb25zIG9uIEZFQyAoTVBDOHh4KSBjb250cm9sbGVycwoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgc2V2ZXJhbCBpc3N1ZXMgYXQgbGVhc3Qgb24gYSBNUEM4ODUgYmFzZWQgc3lzdGVtIHdpdGggdHdvCiAgICBGRUMgaW50ZXJmYWNlcyB1c2VkIGluIE1JSSBtb2RlLgoKICAgIDEuIFBIWSBkaXNjb3Zlcnkgc2hvdWxkIGZpcnN0IHJlYWQgUEhZX1BIWUlEUjIgcmVnaXN0ZXIgYW5kIG9ubHkgdGhlbgogICAgICAgUEhZX1BIWUlEUjEgbGlrZSBjcHUvbXBjOHh4L2ZlYy5jOjptaWlfZGlzY292ZXJfcGh5KCkgZG9lcyBpdCwKICAgICAgIG90aGVyd2lzZSB0aGUgdmFsdWVzIHJlYWQgYXJlIHdyb25nLiBBbHNvIG5vdGljZSwgdGhhdCBQSFkgZGlzY292ZXJ5CiAgICAgICBjYW5ub3Qgd29yayBvbiBNUEM4OHggLyBNUEM4N3ggaW4gc2V0dXBzIHdpdGggYm90aCBGRUNzIGFjdGl2ZSBhdCBhbGwKICAgICAgIGluIGl0cyBwcmVzZW50IGZvcm0sIGJlY2F1c2UgZm9yIGJvdGggaW50ZXJmYWNlcyB0aGUgcmVnaXN0ZXJzIGZyb20gRkVDCiAgICAgICAxIGFyZSB1c2VkIHRvIGNvbW11bmljYXRlIG92ZXIgTUlJLgoKICAgIDIuIFJlbW92ZSBjb2RlIGR1cGxpY2F0aW9uIGZvciByZXNldHRpbmcgdGhlIEZFQyBieSBpc29sYXRpbmcgaXQgaW50byBhCiAgICAgICBzZXBhcmF0ZSBmdW5jdGlvbi4KCiAgICAzLiBJbml0aWFsaXplIE1JSSBvbiBGRUMgMSB3aGVuIGNvbW11bmljYXRpbmcgb3ZlciBGRUMgMiBpbiBmZWNfaW5pdCgpLgoKICAgIDQuIE9wdGltaXplIG1paV9pbml0KCkgdG8gb25seSByZXNldCB0aGUgRkVDIDEgY29udHJvbGxlciBvbmNlLgoKICAgIDUuIEZpeCBhIHR5cG8gaW4gbWlpX2luaXQoKSB1c2luZyBpbmRleCBpIGluc3RlYWQgb2YgaiB0aHVzIHBvdGVudGlhbGx5CiAgICAgICBsZWFkaW5nIHRvIHVucHJlZGljdGFibGUgcmVzdWx0cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgNmE1ZTFkNzViZjEwNmZhMTU3ZTljZTY4YmNhZjRiMTNlOGExZDIxNApBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KRGF0ZToJVHVlIE5vdiAyMCAxMzoxNDoyMCAyMDA3ICswMTAwCgogICAgRml4IGVuZGlhbm5lc3MgY29udmVyc2lvbnMgaW4gcnRsODE2OSBkcml2ZXIKCiAgICBJdCBpcyB1bmNsZWFyIG9uIHdoYXQgcGxhdGZvcm1zIHRoaXMgZHJpdmVyIGhhcyBiZWVuIHRlc3RlZCwgc2luY2UKICAgIG5vb25lIHVwIHRvIG5vdyBkZWZpbmVzIENPTkZJR19SVEw4MTY5IGluIHRoZSBib2FyZCBjb25maWd1cmF0aW9uCiAgICBoZWFkZXIuIE5vdyBpdCBoYXMgYmVlbiBmaXhlZCBmb3IgYSBiaWctZW5kaWFuIG1wYzgyNDEgYmFzZWQKICAgIGxpbmtzdGF0aW9uIHBsYXRmb3JtLiBUaGlzIHBhdGNoIHByZXNlbnRzIHRoZSBuZWNlc3NhcnkgZW5kaWFubmVzcwogICAgY29udmVyc2lvbiBmaXhlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgNTg2OTRmOTcwOWMwYzNlMzE3OGUzNDlhZTc0OGQ5OGNmYjBjNjM5YQpBdXRob3I6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKYW4gMyAxMDo1MToxNSAyMDA4ICswODAwCgogICAgQWRkIEN0cmwgY29tYm8ga2V5IHN1cHBvcnQgdG8gdXNiIGtleWJvYXJkIGRyaXZlci4KCiAgICBDdHJsIGNvbWJvIGtleSBzdXBwb3J0IGlzIGFkZGVkLCB3aGljaCBpcyB2ZXJ5IHVzZWZ1bCB0byBpbnB1dCBDdHJsLUMKICAgIGZvciBpbnRlcnJ1cHQgY3VycmVudCBqb2IuCiAgICBBbHNvIGFkZCB1c2JfZXZlbnRfcG9sbCgpIGNhbGxpbmcgdG8gdXNiX2tiZF90ZXN0YygpLCB3aGljaCBjYW4gZ2V0CiAgICBrZXkgaW5wdXQgd2hlbiB0c3RjKCkgaXMgY2FsbGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgoKY29tbWl0IDA3ZWIwMjY4N2YwMDg3MjE5NzRhMmZiNTRjZDdmZGMyODAzM2FiM2MKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDkgMTM6NDM6MzggMjAwOCArMDEwMAoKICAgIENvZGluZyBTdHlsZSBjbGVuYXVwOyB1cGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjMjZhY2MxYTQzYjMxZGRjYTVhZGQ0MmZkMDM2MGZmMGVlZTkwYzgwCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVRodSBEZWMgMjcgMTc6MTM6MTEgMjAwNyArMDEwMAoKICAgIFJlbW92ZSBiaXQgc3dhcHBpbmcgaW4gWGlsaW54IFNwYXJ0YW4gYml0ZmlsZSBsb2FkaW5nCgogICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSB1bm5lY2Vzc2FyeSBiaXQgc3dhcHBpbmcgd2hlbgogICAgYm9vdGluZyAuYml0IGZpbGVzIHdpdGggdGhlICdmcGdhIGxvYWRiJyBjb21tYW5kLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDQzN2ZjNzMyN2YwNjExZjgyOTM3ODU4ZjJkODBlNGNkNjFiNDA5ODQKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVGh1IERlYyAyNyAxNzoxMzowNSAyMDA3ICswMTAwCgogICAgRml4IE1TQiBjaGVjayBpbiBYaWxpbnggU3BhcnRhbiBzbGF2ZSBzZXJpYWwgbW9kZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDNiZmY0ZmZhMzM3MjlhNDI2NDVlMzI4YTIxZThkMTY0ODg4NzI5NTgKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVGh1IERlYyAyNyAxNzoxMjo1NiAyMDA3ICswMTAwCgogICAgQWRkIG5ldyBYaWxpbnggU3BhcnRhbiBGUEdBIHR5cGVzCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgMjFkMzlkNTk4YzRlNzRkNGU3NzYxNjA4Yzc5ZGJhMjcxNWQ0MGE0YwpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUaHUgRGVjIDI3IDE3OjEyOjQzIDIwMDcgKzAxMDAKCiAgICBBZGQgcHJlIGFuZCBwb3N0IGNvbmZpZ3VyYXRpb24gY2FsbGJhY2tzIGZvciBTcGFydGFuIEZQR0FzCgogICAgVGhpcyBwYXRjaCBhZGRzIGEgcG9zdCBjb25maWd1cmF0aW9uIGNhbGxiYWNrIGZvciBTcGFydGFuMi8zIEZQR0FzLgogICAgcHJlIGFuZCBwb3N0IGNvbmZpZ3VyYXRpb24gY2FsbGJhY2sgYXJlIG5vdyBvcHRpb25hbCBhbmQKICAgIG5vdCBjYWxsZWQgd2hlbiB0aGUgZnVuY3Rpb24gcG9pbnRlciBpcyBzZXQgdG8gTlVMTC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCAwMTMzNTAyZTM5ZmY4OWI2N2MyNmNiNDAxNWUwZTdlOGQ5NTcxMTg0CkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVRodSBEZWMgMjcgMTc6MTI6MzQgMjAwNyArMDEwMAoKICAgIEltcHJvdmUgY29uZmlndXJhdGlvbiBvZiBGUEdBIHN1YnN5c3RlbQoKICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgRlBHQSBzdWJzeXN0ZW0gY29uZmlndXJhdGlvbiB0aHJvdWdoCiAgICB0aGUgQ09ORklHX0ZQR0EgYml0bWFzayBjb25maWd1cmF0aW9uIG9wdGlvbi4KCiAgICBTZWUgUkVBRE1FIGZvciB0aGUgbmV3IG9wdGlvbnM6CgoJQ09ORklHX0ZQR0EsCglDT05GSUdfRlBHQV88dmVuZG9yPiwKCUNPTkZJR19GUEdBXzxmYW1pbHk+CgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgOTVjNmJjN2Q0YTM1ODhiNDUyYmFjYTYxMGY4Yzc5NWE4MzYzMDQ3NwpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUaHUgRGVjIDI3IDE2OjU1OjE3IDIwMDcgKzAxMDAKCiAgICBBZGQgRXBzb24gUlg4MDI1IFJUQyBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgMTIwOGEyZGZkZTAyYmVkZDNjNWJkYTI5YTYwNjYzMmI4ZTBiZTA1OApBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUaHUgRGVjIDI3IDE2OjU3OjIzIDIwMDcgKzAxMDAKCiAgICBzZXJpYWw6IE1ha2UgZGVmYXVsdF9zZXJpYWxfY29uc29sZSgpIGEgd2VhayBmdW5jdGlvbgoKICAgIFdpdGggdGhpcyBwYXRjaCBpdCBpcyBwb3NzaWJsZSB0byByZWltcGxlbWVudCBkZWZhdWx0X3NlcmlhbF9jb25zb2xlKCkKICAgIGluIGJvYXJkIHNwZWNpZmljIGNvZGUuIFRoaXMgd2lsbCBiZSBkb25lIGluIHRoZSB1cGNvbW1pbmcgUE1DNDQwCiAgICBVLUJvb3QgcG9ydC4gVGhpcyBhbHNvIGFsbG93cyB0aGUgbHdtb24gYm9hcmQgbWFpbnRhaW5lciB0bwogICAgcmVtb3ZlIHRoZSAnI2lmICFkZWZpbmVkKENPTkZJR19MV01PTikgLi4uJyBmcm9tIGNvbW1vbi9zZXJpYWwuYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCBkMTY0NzFlZTA1Y2U3YWM1MzkyYmMwZTlmZTNmZjRiNThhNzY4ZjMzCkF1dGhvcjogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KRGF0ZToJV2VkIERlYyAxOSAxNDoxNDo0NyAyMDA3ICswMTAwCgogICAgYWRkICd0ZXJtaW5hbCBwcm9ncmFtJyBmdW5jdGlvbmFsaXR5CgogICAgVGhpcyBwYXRjaCBhZGRzIGEgJ2N1JyBsaWtlIHNlcmlhbCB0ZXJtaW5hbCBjb21tYW5kIHRvIHUtYm9vdAogICAgdXNpbmcgd2hpY2ggeW91IGNhbiBhY2Nlc3Mgb3RoZXIgc2VyaWFsIHBvcnRzIGZyb20gdGhlIHN5c3RlbSBjb25zb2xlLgoKICAgIE9wZW5Nb2tvIHVzZXMgdGhpcyBpbiB0aGVpciBOZW8xOTczIHBob25lcyB0byBnZXQgYWNjZXNzIHRvIHRoZSBHU00KICAgIE1vZGVtIGFuZCBHUFMgY2hpcCBmcm9tIHRoZSBib290bG9hZGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBvcGVubW9rby5vcmc+Cgpjb21taXQgNjJkNGY0MzY1MzQxNTc2ZjVhNTMwN2IyYjIwNWE1YWEyZTNjNmJlNgpBdXRob3I6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBvcGVubW9rby5vcmc+CkRhdGU6CVdlZCBEZWMgMTkgMTQ6MTI6NTMgMjAwNyArMDEwMAoKICAgIFJlLWludHJvZHVjZSB0aGUgJ25hbmQgcmVhZC5vb2InIGFuZCAnbmFuZCB3cml0ZS5vb2InIGNvbW1hbmRzCiAgICB0aGF0IHVzZWQgdG8gZXhpc3Qgd2l0aCB0aGUgbGVnYWN5IE5BTkQgY29kZQoKICAgIFNpZ25lZC1vZmYtYnk6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBvcGVubW9rby5vcmc+Cgpjb21taXQgZjU0MGM0MmQ5NTY0ODU0YjE5Y2U5YmJiNzBhZmZlMTcyNTI5ZmU3MApBdXRob3I6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBvcGVubW9rby5vcmc+CkRhdGU6CVdlZCBEZWMgMTkgMTQ6MDk6NTggMjAwNyArMDEwMAoKICAgIEZpeCBidWlsZGluZyB3aXRoIENSQU1GUyBidXQgbm90IEpGRlMyIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBIYXJhbGQgV2VsdGUgPGxhZm9yZ2VAb3Blbm1va28ub3JnPgoKY29tbWl0IDIzZDBiYWY5NjdmZWNkYWYxODA0ZjA0NWY2MzM5MzM3YzU2MDdlZWMKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgRGVjIDIyIDE1OjUyOjU4IDIwMDcgKzAxMDAKCiAgICBBbGxvdyBDT05GSUdfQVVUT19DT01QTEVURSBhbmQgY29tbWFuZCBoaXN0b3J5IENPTkZJR19DTURMSU5FX0VESVRJTkcgYXQgdGhlIHNhbWV0aW1lCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAyMzc3NmZmMjkyOTY2YTg1ZDgxMTEyNjkzMzgzMGJlZDQ4MjExODI2CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVHVlIERlYyAxMSAxMDo1MzoxMiAyMDA3ICswMTAwCgogICAgQVJNOiBzdXBwb3J0IGJvYXJkLXNwZWNpZmljIGV0aGVybmV0IFBIWSBpbml0CgogICAgQWRkIHVudGlsIHRoZSBuZXcgcGh5bGliIHdpbGwgYmUgYXJyaXZlZAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgN2I3NGViZTcyM2U1NzZiYWVkZjVhOGI2MjQwNTg5YjE5Yjg0NWExYgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBEZWMgOCAxNjozNDowOCAyMDA3ICswMTAwCgogICAgSVhQOiBBZGQgZnVsbCBiYXVkLXJhdGUgc3VwcG9ydCBmb3IgaXhwNDJ4LCBpeHA0NXggYW5kIGl4cDQ2eAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYTJkZjRkYTMxYjFhMWU0MWUzZTllMTM1OGNmYzUyYjgwNjA0NmNlMQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBEZWMgOSAxMTowMToxMCAyMDA3ICswMTAwCgogICAgQWRkIG1pc3NpbmcgZmlsZSBpbiBnaXRpZ25vcmUgYW5kIGNvbW1lbnRzCgogICAgYmFzZWQgb24gTGludXggc291cmNlIHRyZWUncyAuZ2l0aWdub3JlIGZpbGVzCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA0MzVkYzhmY2RiM2JjNjFkM2Q0OTA3NzNhOGYzNjlmOThhMjBjODY4CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEphbiA5IDExOjM2OjIxIDIwMDggKzAxMDAKCiAgICBDb2RpbmcgU3R5bGUgY2xlYW51cCwgdXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYjJlMjE0MmM1MDBjNDhhNTdmMThmOWRkMzBlNjZjMTNjYWVhMDk3MQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEphbiA5IDEwOjM4OjU4IDIwMDggKzAxMDAKCiAgICBQT1NUOiBFeGVjdXRlIFNQUiB0ZXN0IGFmdGVyIHJlbG9jYXRpb24KCiAgICBPbiBMV01PTjUgd2Ugbm93IHVzZSBkLWNhY2hlIGFzIGluaXQtcmFtIGFuZCBzdGFjay4gVGhlIFNQUiBQT1NUIHRlc3QgdXNlcwogICAgc2VsZiBtb2RpZnlpbmcgY29kZSBhbmQgdGhpcyBkb2Vzbid0IHdvcmsgd2l0aCBzdGFjayBpbiBkLWNhY2hlLCBzaW5jZQogICAgSSBjYW4ndCBtb3ZlIHRoZSBjb2RlIGZyb20gZC1jYWNoZSB0byBpLWNhY2hlLiBXZSBtb3ZlIHRoZSBTUFIgdGVzdCB0bwogICAgYmUgZXhlY3V0ZWQgYSBsaXR0bGUgbGF0ZXIsIGFmdGVyIHJlbG9jYXRpb24uIFRoZW4gc3RhY2sgaXMgbG9jYXRlZCBpbgogICAgU0RSQU0gYW5kIHRoaXMgc2VsZi1tb2RpZnlpbmcgY29kZSBpcyBubyBwcm9ibGVtIGFueW1vcmUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDhmMjRlMDYzN2FlMTEzNTAwZDhiZDYwZDgwZDU3YWZjYzBhYThiZGUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBKYW4gOSAxMDoyODoyMCAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBDaGFuZ2UgTFdNT041IHRvIG5vdCB1c2UgT0NNIGZvciBpbml0LXJhbSBhbmQgUE9TVCBhbnltb3JlCgogICAgVGhpcyBwYXRjaCBjb25maWd1cmVzIHRoZSBMV01PTjUgcG9ydCB0byB1c2UgZC1jYWNoZSBhcyBpbml0LXJhbSBhbmQKICAgIHRoZSB1bnVzZWQgR1BUMF9DT01QNiBhcyBQT1NUIFdPUkQgc3RvcmFnZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMTc1NGY1MGI3MTAxOTRmODg2YjZmMjgzMTgwM2Q4OTYwMTcxYTE0ZApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEphbiA5IDEwOjI1OjQ2IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IEFkZCBDRkdfUE9TVF9BTFRfV09SRF9BRERSIHRvIHN1cHBvcnQgbm9uIE9DTSBQT1NUIFdPUkQgc3RvcmFnZQoKICAgIFRoZSBwcml2aW91cyA0eHggUE9TVCBpbXBsZW1lbnRhdGlvbiBvbmx5IHN1cHBvcnRlZCBzdG9yaW5nIHRoZSBQT1NUCiAgICBXT1JEIGluIE9DTS4gU2luY2Ugd2UgbmVlZCB0byByZXNlcnZlIHRoZSBPQ00gb24gTFdNT041IGZvciB0aGUgbG9nYnVmZmVyCiAgICB3ZSBuZWVkIHRvIHN0b3JlIHRoZSBQT1NUIFdPUkQgaW4gc29tZSBvdGhlciBub24gdm9sYXRpbGUgbG9jYXRpb24uCiAgICBUaGlzIHBhdGNoIGFkZHMgQ0ZHX1BPU1RfQUxUX1dPUkRfQUREUiB0byBzcGVjaWZ5IGFuIGFkZHJlc3MgZm9yIHN1Y2gKICAgIGEgbG9jYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGUwMmM1MjFkOTRiNDVkN2IwNWFhNTIyZTRjY2RlNmI3NGJmNWZlNTcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBKYW4gOSAxMDoyMzoxNiAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBBZGQgNDR4IGNhY2hlIGxvY2tpbmcgdG8gYmV0dGVyIHN1cHBvcnQgaW5pdC1yYW0gaW4gZC1jYWNoZQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBsb2NraW5nIHRoZSBpbml0LXJhbS9zdGFjayBpbiBkLWNhY2hlLAogICAgc28gdGhhdCBvdGhlciByZWdpb25zIG1heSB1c2UgZC1jYWNoZSBhcyB3ZWxsCgogICAgTm90ZSwgdGhhdCB0aGlzIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gbG9ja3MgZXhhY3RseSA0ayBvZiBkLWNhY2hlLAogICAgc28gcGxlYXNlIG1ha2Ugc3VyZSB0aGF0IHlvdSBkb24ndCBkZWZpbmUgYSBiaWdnZXIgaW5pdC1yYW0gYXJlYS4gVGFrZQogICAgYSBsb29rIGF0IHRoZSBsd21vbjUgNDQwRVB4IGltcGxlbWVudGF0aW9uIGFzIGEgcmVmZXJlbmNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwZGRiODk2MDFhOGQyOWU4MDhkYjQ1MDM2Njc1MmZmZGM2MjY3YzUzCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEphbiA5IDEwOjE2OjMzIDIwMDggKzAxMDAKCiAgICBGaXggbWVtc2V0IGJ1ZyBpbiBleHQyZnNfcmVhZF9maWxlKCkKCiAgICBleHQyZnNfcmVhZF9maWxlKCkgaGFkIHRoZSBmdW5jdGlvbiBhcmd1bWVudHMgc3dhcHBlZC4KCiAgICBQb2ludGVkIG91dCBieSBNaWtlIE1vbnRvdXIsIDE5IERlYyAyMDA3IDIyOjM0OjI1IC0wODAwCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAzMmQ2ZjFiYzA5MTc1ZjNiNzc0Njk3NzFlODM5YmM3MjU1YTlmMjJlCkF1dGhvcjogTWFya3VzIEtsb3R6YsO8Y2hlciA8bWtAZGVueC5kZT4KRGF0ZToJVHVlIEphbiA1IDA4OjE3OjE1IDE5ODggKzAxMDAKCiAgICBGaXggcHJvYmxlbXMgd2l0aCB1c2Igc3RvcmFnZSBkZXZpY2VzIG9uIE1QQzUyMDAgL1RRTTUyMDAKCiAgICBUaGUgTVBDNTIwMCBPSENJIGNvbnRyb2xsZXIgb3BlcmF0ZXMgaW4gYmlnIGVuZGlhbiwgc28KICAgIENGR19PSENJX0JFX0NPTlRST0xMRVIgbXVzdCBiZSBkZWZpbmVkIGZvciBpdCB0byB3b3JrIHByb3Blcmx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgNDZmNmU1MDE5MDQ4YjEwM2Q3NjkzZDUzMTBkZTBmMWNmYmFmNGMxOQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBKYW4gOCAyMjo1ODoyNyAyMDA4ICswMTAwCgogICAgRml4IGNvbXBpbGUgcHJvYmxlbSB3aXRoIG5ldyBlbnYgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDY0YjM3MjdiOTc3OWQ4NjEyN2NkNTc2ZTM5MmE5ODdkZTVlYmI5ZmQKQXV0aG9yOiBNYXJrdXMgS2xvdHpiw7xjaGVyIDxta0BkZW54LmRlPgpEYXRlOglUdWUgTm92IDI3IDEwOjIzOjIwIDIwMDcgKzAxMDAKCiAgICB0b29sczogZml4IGZ3X3ByaW50ZW52IHRvb2wgdG8gY29tcGlsZSBhZ2FpbgoKICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyB0aGUgZndfcHJpbnRlbnYvZndfc2V0ZW52IHVzZXJzcGFjZSB0b29sIHRvIGluY2x1ZGUKICAgIHRoZSBjb3JyZWN0IE1URCBoZWFkZXIgaW4gb3JkZXIgdG8gY29tcGlsZSBhZ2FpbnN0IGN1cnJlbnQga2VybmVsCiAgICBoZWFkZXJzLiBCYWNrd2FyZCBjb21wYXRpYmlsaXR5IGlzIHByZXNlcnZlZCBieSBpbnRyb2R1Y2luZyBhbiBvcHRpb24KICAgIE1URF9WRVJTSU9OIHdoaWNoIGNhbiBiZSBzZXQgdG8gIm9sZCIgZm9yIGNvbXBpbGF0aW9uIHVzaW5nIHRoZSBvbGQgTVRECiAgICBoZWFkZXJzLiBBbG9uZyB3aXRoIHRoaXMgYSBudW1iZXIgb2Ygd2FybmluZ3MgYXJlIGZpeGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgMWY4NDAyMWE4NWFiZWI4MzdkMmNlMGRjODQyOTdiNGYxZDQ1ZDUxNgpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUdWUgSmFuIDggMTU6NDA6MDkgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogYXNzaWduIFBDSSBpbnRlcnJ1cHRzIG9uIHNldXFvaWEgYm9hcmRzCgogICAgU29tZSBvcGVyYXRpbmcgc3lzdGVtcyByZWx5IG9uIGFzc2lnbmVkIFBDSSBpbnRlcnJ1cHRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDZlOTIzM2QzMGFmZTU3Y2I2ZTE0OGZiZmE0ODk1ZTc4MTAxOTZmYWMKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVHVlIEphbiA4IDE1OjUwOjQ5IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IE1vdmUgY3B1L3BwYzR4eC92ZWNudW0uaCBpbnRvIGluY2x1ZGUgcGF0aAoKICAgIFRoaXMgcGF0Y2ggYWxsb3dzIHRoZSB1c2Ugb2YgNHh4IGludGVycnVwdCB2ZWN0b3IgbnVtYmVyIGRlZmluZXMKICAgIGluIGJvYXJkIHNwZWNpZmljIGNvZGUgb3V0c2lkZSBjcHUvcHBjNHh4LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDU4MGQxZDMxODZhMmJjNmRiZGI2MjY5NDFiNzE2ZGFlMTc4OGU1MWUKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVHVlIEphbiA4IDE1OjM5OjAxIDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IEZpeCBVSUMyIHZlY3RvciBudW1iZXIgYmFzZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IGZmNWZiOGE2Y2NiYTU2ZTM0ODJkMGUyOTdkOGNmYjdmYWEwNDA4MTEKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVHVlIEphbiA4IDEyOjQ5OjU4IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBQTEIvUENJIGRpdmlkZXIgZm9yIFBNQzQ0MCBib2FyZAoKICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyB0aGUgUExCL1BDSSBkaXZpZGVyIHdoZW4gcnVubmluZyBhdAogICAgNDAwTUh6IENQVSBmcmVxdWVuY3kgZnJvbSA0IHRvIDMgd2hpY2ggcmVzdWx0cyBpbiA0NE1IeiBQQ0kgc3luYyBjbG9jay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCA3ZDVkNzU2MzMxNzQ4NjczMTZhMGMwZjJmY2E1Y2ViMmNmMzEyY2RlCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVR1ZSBKYW4gOCAxMToxMzowOSAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBEaXNhYmxlIGVycm9yIG1lc3NhZ2Ugd2hlbiBubyBOQU5EIGNoaXAgaXMgaW5zdGFsbGVkIG9uIFBNQzQ0MAoKICAgIEFkZCBDRkdfTkFORF9RVUlFVF9URVNUIG9wdGlvbiB0byBkaXNhYmxlIGVycm9yIG1lc3NhZ2Ugd2hlbgogICAgbm8gTkFORCBjaGlwIGlzIGluc3RhbGxlZCBvbiBQTUM0NDAgYm9hcmRzLgoKICAgIERpc2FibGUgYSBjb3VwbGUgb2YgY29uZmlnIGRlZmluZXMgdGhhdCBhcmUgb25seSB1c2VkIGZvciBOQU5EX1VfQk9PVC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCBjODNkN2NhNGRhZGQ0NGFlNDMwMjM1MDc3ZjYzYjY0YTExZjM2ZjZlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIEphbiA4IDIyOjU4OjI3IDIwMDggKzAxMDAKCiAgICBGaXggY29tcGlsZSBwcm9ibGVtIHdpdGggbmV3IGVudiBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNmRlNjZiMzU0MjYzMTJhMjExNzRhOWJmMDU3NmEwOTRlMjkwNGJlYQpBdXRob3I6IE1hcmt1cyBLbG90emLDvGNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CVR1ZSBOb3YgMjcgMTA6MjM6MjAgMjAwNyArMDEwMAoKICAgIHRvb2xzOiBmaXggZndfcHJpbnRlbnYgdG9vbCB0byBjb21waWxlIGFnYWluCgogICAgVGhpcyBwYXRjaCB1cGRhdGVzIHRoZSBmd19wcmludGVudi9md19zZXRlbnYgdXNlcnNwYWNlIHRvb2wgdG8gaW5jbHVkZQogICAgdGhlIGNvcnJlY3QgTVREIGhlYWRlciBpbiBvcmRlciB0byBjb21waWxlIGFnYWluc3QgY3VycmVudCBrZXJuZWwKICAgIGhlYWRlcnMuIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaXMgcHJlc2VydmVkIGJ5IGludHJvZHVjaW5nIGFuIG9wdGlvbgogICAgTVREX1ZFUlNJT04gd2hpY2ggY2FuIGJlIHNldCB0byAib2xkIiBmb3IgY29tcGlsYXRpb24gdXNpbmcgdGhlIG9sZCBNVEQKICAgIGhlYWRlcnMuIEFsb25nIHdpdGggdGhpcyBhIG51bWJlciBvZiB3YXJuaW5ncyBhcmUgZml4ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KCmNvbW1pdCBhZDMwMDZmZTdlODQ2NjcwMjE3NTNiNzQyNDdiMGJhZmQ5N2JhMzVmCkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJTW9uIEphbiA3IDIzOjQ3OjMyIDIwMDggLTA1MDAKCiAgICBMSUJGRFQ6IHVzZSBtZW1tb3ZlKCkgaW5zdGVhZCBvZiBtZW1jcHkoKQoKICAgIFRoaXMgaXMgcGFydGlhbCBwYXRjaCBmcm9tIHRoZSBEVEMvbGliZmR0CiAgICBjb21taXQgIDY3YjZiMzNiOWI0MTNhNDUwYTcyMTM1YjVkYzU5YzBhMWUzM2U2NDcKICAgIEF1dGhvcjogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+CiAgICBEYXRlOiAgIFdlZCBOb3YgMjEgMTE6NTY6MTQgMjAwNyArMTEwMAoKCVRoZSBwYXRjaCBhbHNvIGZpeGVzIG9uZSBnZW51aW5lIGJ1ZyBjYXVnaHQgYnkgdmFsZ3JpbmQgLQoJX3BhY2tibG9ja3MoKSBpbiBmZHRfcncuYyB3YXMgdXNpbmcgbWVtY3B5KCkgd2hlcmUgaXQgc2hvdWxkIGhhdmUgYmVlbgoJdXNpbmcgbWVtbW92ZSgpLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgYWVjNzEzNWJjMzAwZTMzNDBkMThmMjAzMzQ3ZWUwMGM1YjVmNjhjMApBdXRob3I6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgpEYXRlOglNb24gRGVjIDE3IDE0OjQyOjA3IDIwMDcgKzExMDAKCiAgICBsaWJmZHQ6IEFkZCBtb3JlIGRvY3VtZW50YXRpb24gKHBhdGNoIHRoZSBzZXZlbnRoKQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBtb3JlIGRvY3VtZW50aW5nIGNvbW1lbnRzIHRvIGxpYmZkdC5oLiAgU3BlY2lmaWNhbGx5LAogICAgdGhlc2UgZG9jdW1lbnQgdGhlIHJlYWQvd3JpdGUgZnVuY3Rpb25zIChub3QgaW5jbHVkaW5nIGZkdF9vcGVuX2ludG8oKQogICAgYW5kIGZkdF9wYWNrKCksIGZvciBub3cpLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgoKY29tbWl0IDlkNDQ1MGI1YWRjMzY2MjNlOWMxZGUxZjkyNTM5ZGI3N2FkMGM1N2UKQXV0aG9yOiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KRGF0ZToJTW9uIERlYyAxNyAxNDo0MTo1MiAyMDA3ICsxMTAwCgogICAgbGliZmR0OiBBZGQgbW9yZSBkb2N1bWVudGF0aW9uIChwYXRjaCB0aGUgc2l4dGgpCgogICAgVGhpcyBwYXRjaCBhZGRzIHNvbWUgbW9yZSBkb2N1bWVudGluZyBjb21tZW50cyB0byBsaWJmZHQuaC4KICAgIFNwZWNpZmljYWxseSB0aGlzIGRvY3VtZW50cyBhbGwgdGhlIHdyaXRlLWluLXBsYWNlIGZ1bmN0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KCmNvbW1pdCBiNjBhZjNkNGMxNjgwNDg3ZWUzN2UxMWFhMWIzZGI2ZGVjMDRkOGYwCkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJU2F0IERlYyAyOSAyMjo0NToyNyAyMDA3IC0wNTAwCgogICAgRmluZSBncmFpbmVkIHBlciBwcm9wZXJ0eSAvY2hvc2VuIHVwZGF0aW5nLgoKICAgIEltcGxlbWVudCBhIHN1Z2dlc3Rpb24gYnkgU2NvdHQgV29vZCB0byBtYWtlIHRoZSAvY2hvc2VuIGhhbmRsaW5nIGZpbmUKICAgIGdyYWluZWQuICBEb24ndCBvdmVyd3JpdGUgcHJlLWV4aXN0aW5nIHByb3BlcnRpZXMgb24gYSBwZXItcHJvcGVydHkgYmFzaXMsCiAgICBzbyBpZiAvY2hvc2VuIGV4aXN0cyBidXQgYSBuZWNlc3NhcnkgL2Nob3Nlbi9wcm9wZXJ0eSBkb2Vzbid0LCBpdCBnZXRzCiAgICBjcmVhdGVkLiAgSWYgYSAvY2hvc2VuIHByb3BlcnR5IGV4aXN0cywgaXQgaXMgTk9UIG92ZXJ3cml0dGVuIHVubGVzcyB0aGUKICAgICJmb3JjZSIgZmxhZyBpcyB0cnVlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgMjM4Y2I3YTQyM2M2ZWFhMzY0OTZlZmI3ODhjZmI5Nzk4Y2VhN2Y5NQpBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CVNhdCBKYW4gNSAxNTozMzoyOSAyMDA4IC0wNTAwCgogICAgSW1wcm92ZSB0aGUgRkRUIGhlbHAgbWVzc2FnZS4KCiAgICBBZGQgYSBub3RlIHRoYXQgImZkdCBjb3B5IiBtYWtlcyB0aGUgbmV3IGFkZHJlc3MgYWN0aXZlLgogICAgUmVtb3ZlIG1vc3Qgb2YgdGhlIGV4dHJhIGhpbnRzIGF0IHRoZSBlbmQgb2YgdGhlIGZkdCBoZWxwLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgZWE2ZDhiZTE1M2NlYWYxNjk1OGY4MDA5Y2VhNmQ3NWYzZmY1OGQ5MgpBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CVNhdCBKYW4gNSAxNDo1MjowNCAyMDA4IC0wNTAwCgogICAgU3VwcG9ydCBzZXR0aW5nIEZEVCBwcm9wZXJ0aWVzIHdpdGggb3B0aW9uYWwgdmFsdWVzLgoKICAgIEZpeCBhIGJ1ZyBmb3VuZCBhbmQgZG9jdW1lbnRlZCBieSBCYXJ0bG9taWVqIFNpZWthIHdoZXJlIHRoZSBvcHRpb25hbAogICAgdmFsdWUgb24gImZkdCBzZXQgPHBhdGg+IDxwcm9wPiBbPHZhbD5dIiB3YXNuJ3Qgb3B0aW9uYWwuCgogICAgPT4gZmR0IG1rbm9kZSAvIHRlc3Rub2RlCiAgICA9PiBmZHQgcHJpbnQgL3Rlc3Rub2RlCiAgICB0ZXN0bm9kZSB7CiAgICB9OwogICAgPT4gZmR0IHNldCAvdGVzdG5vZGUgdGVzdHByb3AKICAgID0+IGZkdCBwcmludCAvdGVzdG5vZGUKICAgIHRlc3Rub2RlIHsKCSAgICB0ZXN0cHJvcDsKICAgIH07CgogICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCAyMmZiMjI0NmRmOTFiZmM4NDBkODdmMGM1OTEwODE4YmFkNTU1NzdhCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CUZyaSBEZWMgMjggMTE6NTY6MzAgMjAwNyArMDEwMAoKICAgIEFkZCBmZHRfZmluZF9hbmRfc2V0cHJvcCgpIHRvIGZkdF9zdXBwb3J0LmgKCiAgICBmZHRfZmluZF9hbmRfc2V0cHJvcCgpIGlzIHVzZWQgYnkgc2V2ZXJhbCA0eHggYm9hcmRzIGFuZCBpdCdzCiAgICBtaXNzaW5nIGluIHRoZSBhcHByb3ByaWF0ZSBoZWFkZXIuIFRoaXMgcGF0Y2ggZWxpbWluYXRlcyBhCiAgICB3YXJuaW5nIHdoZW4gYnVpbGRpbmcgVS1Cb290IGZvciBzdWNoIGJvYXJkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODAyYjc2OWJhYzE3YjA1NjBkMzUzNWE0MmM1MDI0NjllZTE5MGNkMQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEphbiA4IDE4OjM5OjMwIDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IFJldHVybiAwIG9uIHN1Y2Nlc3MgaW4gNHh4IGV0aGVybmV0IGRyaXZlcgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2Nzc1YzY4NjgzYTUzYzdhYmM3Nzg3NzQ2NDFhYWM2ZjgzM2EyY2JmCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEphbiA4IDA5OjU5OjQ5IDIwMDggLTA2MDAKCiAgICBtcGM4M3h4OiBmaXggbWlzc2VkIHBjaV9ob3NlIC0+IGhvc2UgY29udmVyc2lvbiBmb3IgbmV3IGxpYmZkdCBjb2RlCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5NGZhYjI1ZjVmMWE3ZDFjMGNjNjNjMTdlODEzZWE4OTQzZmU0OWM3CkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IERlYyAyMCAxNjoyODozNCAyMDA3IC0wNjAwCgogICAgbXBjODN4eDogcm0gcmVtYWluaW5nIEZMQVRfVFJFRSBjb2RlCgogICAgLi5pbiBib2FyZCBwY2kuYyBmaWxlcwoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjM0NThkMmNkNTVkMDE3MzJlMzBhNzZkODk4YWZkOTllODcxY2Q2NwpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBEZWMgMjAgMTU6NTc6MjggMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IHJlbW92ZSBGTEFUX1RSRUUgY29kZQoKICAgIG5lZWQgdG8gcm0gaXQgZnJvbSBwY2kgY29kZSwgdG9vIQoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNWI4YmM2MDZjNjE0NTY1NjZhZjY5MTJmODE4YTE1M2I2YjA2ZjI0MgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBEZWMgMjAgMTQ6MDk6MjIgMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IGNvbnZlcnQgdG8gdXNpbmcgZG9fZml4dXBfKigpCgogICAgY29udmVydCB0byB1c2luZyBzaW1wbGVyIG1wYzg1eHggc3R5bGUgZmR0IHVwZGF0ZSBjb2RlOyBzdHJlYW1saW5lIGJ5CiAgICBlbGltaW5hdGluZyBtYWNyb3MgT0ZfU09DLCBPRl9DUFUsIGV0Yy4gd2hpY2ggYWxsb3dzIHVzIHRvIHJtCiAgICB0aGUgb2xkIHNjaG9vbCBGTEFUX1RSRUUgY29kZSBmcm9tIDgzeHggKHNpbmNlIHRoZSBzYmM4MzQ5IHdhcyBqdXN0CiAgICBjb252ZXJ0ZWQgb3ZlciB0byB1c2luZyBsaWJmZHQpLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZTQ5Njg2NWVjYzMxYTJmZTJmOWFiZmU3OTgzMzRiYjAyYWFmMDVhYgpBdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgpEYXRlOglUaHUgRGVjIDIwIDEyOjU4OjUxIDIwMDcgLTA1MDAKCiAgICBzYmM4MzQ5OiBlbmFibGUgbGliZmR0IGJ5IGRlZmF1bHQgb24gV1JTIFNCQzgzNDkgYm9hcmQuCgogICAgTWFrZSBsaWJmZHQgdGhlIGRlZmF1bHQgZm9yIHRoZSBXUlMgU0JDODM0OSBib2FyZC4KICAgIFBhcmFsbGVsIG9mIGNvbW1pdCAzNWNjNGU0ODIzNjY4ZTg3NDU4NTQ4OTljZmFlZGQ0NDg5YmViMGVmCiAgICBkb25lIGZvciB0aGUgb3RoZXIgODN4eCBiYXNlZCBib2FyZHMuICBBbHNvIGZpeCBhIHR5cG8gaW4gQ09ORklHX1BDSS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KCmNvbW1pdCAyNDA4YjNmMjBiY2JkZDljNmMzOTdjZDAzYWIwZDcxZDU0NjgwYTQwCkF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CkRhdGU6CVRodSBEZWMgMjAgMTI6NTg6MTYgMjAwNyAtMDUwMAoKICAgIHNiYzgzNDk6IG1pZ3JhdGUgYm9hcmQgdG8gbGliZmR0CgogICAgVGhpcyBhZGRzIGxpYmZkdCBzdXBwb3J0IGNvZGUgZm9yIHRoZSBXaW5kIFJpdmVyIHNiYzgzNDkgYm9hcmQuCgogICAgUGFyYWxsZWwgb2YgY29tbWl0IDNmZGU5ZThiMjJjZmJkN2FmNDg5MjE0NzU4Zjk4MzlhMjA2NTc2Y2IgZm9yCiAgICB0aGUgb3RoZXIgRnJlZXNjYWxlIDgzeHggYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgoKY29tbWl0IDI3YTI1NmE5MGNjODYzOTJhYzliZjAwMzlhM2FmZTYzOGVjMmMxOGQKQXV0aG9yOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KRGF0ZToJVGh1IERlYyAyMCAxMjo1NjoxOSAyMDA3IC0wNTAwCgogICAgc2JjODM0OTogUmVtb3ZlIGJvYXJkIHNwZWNpZmljIEVDQyBjb2RlCgogICAgRUNDIGNvZGUgaXMgbm93IHNoYXJlZCBmb3IgYWxsIDgzeHggYm9hcmRzLCBzbyByZW1vdmUgYm9hcmQgc3BlY2lmaWMgb25lLgogICAgU2VlIGNvbW1pdCBkYWFiOGM2N2QyZGVmZWY3M2RjMjZhYjA3ZjBjM2FmZDFiMDVkMDE5IGZvciByZWZlcmVuY2UuCgogICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Cgpjb21taXQgYTFlMWFjODQ5MjQ5MzEwZTVlMmU1YzcxNDhlOWZiMzUzYTgzMTdhNwpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBEZWMgMjAgMDE6MzA6NDggMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IFJlbW92ZSBDT05GSUcgb3B0aW9ucyByZWxhdGVkIHRvIE9GIHRoYXQgd2UgZG9udCB1c2UgKG9uIDgzN3gpCgogICAgY29udGludWF0aW9uIG9mIGNvbW1pdCAzNzM5NWZhMmIwZDlkNjE3ZjI4ZDQ0Y2ExMTU5MjI2MGVmMTYxMDVhIHRvIDgzN3gKCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGNjZjIxYzMxMWU2OGQ0ODM5OWVmZjFlNzI5MzYwNTI4ODVmNmUzZjcKQXV0aG9yOiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KRGF0ZToJVGh1IERlYyA2IDE2OjQzOjQwIDIwMDcgKzAxMDAKCiAgICBBZGQgc3VwcG9ydCBDT05GSUdfVUVDX0VUSDMgaW4gTVBDODN4eAoKICAgIFNpZ25lZC1vZmYtYnk6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgoKY29tbWl0IGU2YWY5OTMyZDMxMTcxZTM1ZGI4ODBlN2IyZjI5ZjkwM2IxYjc2NjAKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gTm92IDI2IDExOjAwOjU0IDIwMDcgLTA2MDAKCiAgICBSZW1vdmUgQ09ORklHIG9wdGlvbnMgcmVsYXRlZCB0byBPRiB0aGF0IHdlIGRvbnQgdXNlCgogICAgVGhlIE1QQzgzNjBFIE1EUyBjb25maWcgZGVmaW5lZDoKCUNPTkZJR19PRl9IQVNfQkRfVAoJQ09ORklHX09GX0hBU19VQk9PVF9FTlYKCiAgICBXaGljaCB3ZSBkb24ndCB1c2Ugb3IgZXZlciBuZWVkZWQuCVRoaXMgc2VlbXMgbGlrZSBjb3B5LXBhc3RlIGZlYXR1cmUgY3JlZXAuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmNjAyMDgyYjRiN2VkNGVlMTY0MzIwNjdjYzY3YTBhMjRmZWRjNzE1CkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIERlYyAxMCAxNDoxNjoyMiAyMDA3IC0wNjAwCgogICAgbXBjODN4eDogc3VwcmVzcyBjb21waWxlciB3YXJuaW5nCgogICAgbXBjODM2MGVtZHMuYzogSW4gZnVuY3Rpb24g4oCYZnRfYm9hcmRfc2V0dXDigJk6CiAgICBtcGM4MzYwZW1kcy5jOjMzNTogd2FybmluZzogYXNzaWdubWVudCBkaXNjYXJkcyBxdWFsaWZpZXJzIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZQogICAgbXBjODM2MGVtZHMuYzozNDU6IHdhcm5pbmc6IGFzc2lnbm1lbnQgZGlzY2FyZHMgcXVhbGlmaWVycyBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGMxNmU0NGZhODM1ZmI5ZWVjOTgyZDkxOTg2M2EwNGUyZjc4ZTVjZTcKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgTm92IDI3IDE0OjE3OjI5IDIwMDcgLTA2MDAKCiAgICBtcGM4M3h4OiBmaXggcmVtYWluaW5nIGZkdF9maW5kX25vZGVfYnlfcGF0aCByZWZlcmVuY2VzCgogICAgcmVuYW1lIHRvIGZkdF9wYXRoX29mZnNldAoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTIxZDRiMTlhZDFiZTcwNGRmNTg3MjU0ODVkOTI5MmRjMDQxNGFkZgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBOb3YgMTkgMTI6MzA6MDkgMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IGZpeCBDRkdfRU5WX0FERFIgYW5kIENGR19FTlZfU0VDVF9TSVpFIGRlZmluaXRpb25zIGZvciA4Mzd4CgogICAgRml4IHRoZSBkZWZpbml0aW9ucyBvZiBDRkdfRU5WX0FERFIgYW5kIENGR19FTlZfU0VDVF9TSVpFIGZvciA4Mzd4LgogICAgVGhpcyBjaGFuZ2UgZ3VhcmFudGVlcyB0aGF0IHRoZSBlbnZpcm9ubWVudCB3aWxsIGJlIGxvY2F0ZWQgb24gdGhlCiAgICBmaXJzdCBmbGFzaCBzZWN0b3IgYWZ0ZXIgdGhlIFUtQm9vdCBpbWFnZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDI0Zjg2ODQzM2I1MGVjYmFhODhlMTE4YWFkYzdiZDI1NDAxM2M2YWUKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgTm92IDkgMTQ6Mjg6MDggMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IG1wYzgzNjAgcmV2LjIuMSBlcnJhdHVtIDI6IHJlcGxhY2UgcmdtaWktaWQgd2l0aCByZ21paS1yeGlkCgogICAgdS1ib290IGl0c2VsZiB1c2VzIEdNSUkgbW9kZSBvbiB0aGUgODM2MC4gIEZpeCB1cCBVQ0MgcGh5LWNvbm5lY3Rpb24tdHlwZQogICAgcHJvcGVydGllcyBpbiB0aGUgZGV2aWNlIHRyZWUgc28gdGhlIFBIWSBnZXRzIGNvbmZpZ3VyZWQgZm9yIGludGVybmFsIGRlbGF5IG9uCiAgICBSWCBvbmx5IGJ5IHRoZSBPUywgYXMgcHJlc2NyaWJlZCBieSBtcGM4MzYwIHJldi4gMi4xIHBiIG1kcyBlcnJhdHVtICMyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjJiNDQ4ZGJmYmUyYTk4ZjAxZmY0YWRjM2MzOTc5ZjhjNTQxYWQ3YgpBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIFNlcCAxOCAxMjo0MToxNSAyMDA3ICswODAwCgogICAgbXBjODN4eDogdXBkYXRlIHRoZSBDUkVESVRTIGFuZCBNQUlOVEFJTkVSUwoKICAgIHVwZGF0ZSB0aGUgQ1JFRElUUyBhbmQgTUFJTlRBSU5FUlMuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiMjFhZGQ0YjQyYWY3Yjc2NzQ0ODI1MWI1OTliOTEwNjZhMTYwZTBkCkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgU2VwIDE4IDEyOjQwOjIxIDIwMDcgKzA4MDAKCiAgICBtcGM4M3h4OiBhZGQgTUFJTlRBSU5FUiBhbmQgTUFLRUFMTCBlbnRyaWVzIGZvciB0aGUgbXBjODM3eGVtZHMKCiAgICBBZGQgdGhlIE1BSU5UQUlORVIgYW5kIE1BS0VBTEwgZW50cmllcyBmb3IgbXBjODM3eGVtZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGY4OTAwY2U5MDk0YzQ2MjM1NWViNzkyZWVhMjY0ZmYxNmFjOGZkMTYKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBTZXAgMTggMTI6Mzg6NTMgMjAwNyArMDgwMAoKICAgIG1wYzgzeHg6IEFkZCB0aGUgTVBDODM3eEVNRFMgYm9hcmQgcmVhZG1lCgogICAgQWRkIHRoZSBSRUFETUUubXBjODM3eGVtZHMgdG8gL2RvYwoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTk1ODBlNjYwY2M4ZGE0OWYxNjUzNmE4YmQ3OGMwNDdjN2JjMTJlNQpBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIFNlcCAxOCAxMjozNzo1NyAyMDA3ICswODAwCgogICAgbXBjODN4eDogQWRkIHRoZSBzdXBwb3J0IG9mIE1QQzgzN3hFTURTIGJvYXJkCgogICAgVGhlIE1QQzgzN3hFTURTIGJvYXJkIHN1cHBvcnQ6CiAgICAqIEREUjIgNDAwTUh6IGhhcmRjb2RlZCBhbmQgU1BEIGluaXQKICAgICogTG9jYWwgYnVzIE5PUiBGbGFzaAogICAgKiBJMkMsIFVBUlQsIE1JSSBhbmQgUlRDCiAgICAqIGVUU0VDIFJHTUlJCiAgICAqIFBDSSBob3N0CgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1NTVkYTYxNzAyNzcxZmUwZjc2ZjNkZTIzYjRlNzU5MGYzNzA0MTYxCkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgU2VwIDE4IDEyOjM2OjU4IDIwMDcgKzA4MDAKCiAgICBtcGM4M3h4OiBBZGQgdGhlIHN1cHBvcnQgb2YgTVBDODMxNUUgU29DCgogICAgVGhlIE1QQzgzMTVFIFNvQyBpbmNsdWRpbmcgZTMwMGMzIGNvcmUgYW5kIG5ldyBJUCBibG9ja3MsCiAgICBzdWNoIGFzIFRETSwgUENJIEV4cHJlc3MgYW5kIFNBVEEgY29udHJvbGxlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDAzMDUxYzNkMzVjOTk4MWNlYWEwNTkwMDU2NjBlNjk5ZjNlYWNmMWMKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBTZXAgMTggMTI6MzY6MTEgMjAwNyArMDgwMAoKICAgIG1wYzgzeHg6IEFkZCB0aGUgc3VwcG9ydCBvZiBNUEM4Mzd4IFNvQwoKICAgIFRoZSBNUEM4Mzd4IFNvQyBpbmNsdWRpbmcgZTMwMGM0IGNvcmUgYW5kIG5ldyBJUCBibG9ja3MsCiAgICBzdWNoIGFzIFNESEMsIFBDSSBFeHByZXNzIGFuZCBTQVRBIGNvbnRyb2xsZXIuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2NTFkOTZmN2U0Yzg0YWRjZGI5OGVmMDdlYzg3OGMyMDMyNmUzMzU5CkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CVdlZCBOb3YgMTQgMTg6NTQ6NTMgMjAwNyArMDMwMAoKICAgIE1QQzgzNjBFLU1EUzogY29uZmlndXJlIGFuZCBlbmFibGUgc2Vjb25kIFVBUlQKCiAgICBEZXNwaXRlIHVzZXIgbWFudWFsLCBCQ1NSOS43IGlzIG5lZ2F0ZWQgKGhpZ2gpIG9uIEhSU1QsIHNvCiAgICBVQVJUMiBpcyBkaXNhYmxlZC4gRml4IHRoYXQgYW5kIGNvbmZpZ3VyZSBRRSBwaW5zIHByb3Blcmx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgoKY29tbWl0IGIyODkzZTFmY2IyOGZhZDhjOGIzMTcxMDRkZjhjZWUwMTQyYzc2MzEKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gTm92IDUgMDk6MzQ6MDYgMjAwNyAtMDYwMAoKICAgIDgzeHg6IGZpeCBDRkdfRU5WX0FERFIgYW5kIENGR19FTlZfU0VDVF9TSVpFIGRlZmluaXRpb25zCgogICAgRml4IHRoZSBkZWZpbml0aW9ucyBvZiBDRkdfRU5WX0FERFIgYW5kIENGR19FTlZfU0VDVF9TSVpFIGZvciBhbGwgb2YgdGhlCiAgICBjdXJyZW50bHktZGVmaW5lZCA4M3h4IGJvYXJkcy4gIFRoaXMgY2hhbmdlIGd1YXJhbnRlZXMgdGhhdCB0aGUgZW52aXJvbm1lbnQKICAgIHdpbGwgYmUgbG9jYXRlZCBvbiB0aGUgZmlyc3QgZmxhc2ggc2VjdG9yIGFmdGVyIHRoZSBVLUJvb3QgaW1hZ2UuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZTA1MzI5NTE2YTEzNjE2YjUzMjQwY2Q4NWI3MzkyMTdjMmJmODdmMQpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgpEYXRlOglGcmkgSmFuIDQgMTM6Mjc6MDIgMjAwOCAtMDUwMAoKICAgIHBwYzR4eDogUmVtb3ZlIHdlYWsgYmluZGluZyBmcm9tIGNvbW1vbiBEZW5hbGkgZGF0YS1leWUgc2VhcmNoIGNvZGUKCiAgICBOb3cgdGhhdCB0aGVyZSBhcmUgbm8gYm9hcmQtc3BlY2lmaWMgdmVyc2lvbnMgb2YKICAgICJkZW5hbGlfY29yZV9zZWFyY2hfZGF0YV9leWUoKSIsIHRoZSB3ZWFrIGJpbmRpbmcgb24gdGhlIGNvbW1vbiB2ZXJzaW9uCiAgICBjYW4gYmUgcmVtb3ZlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KCmNvbW1pdCA1YmE1NzZjMDE2MDJmZDMyODgwMGE0Mjc5NjRjMzZhMGEwNWM1ZGNlCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgSmFuIDUgMDk6MTM6NDYgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogUmVtb3ZlIHVudXNlZCBDT05GSUdfRUNDX0VSUk9SX1JFU0VUIGZyb20gNDR4X3NwZF9kZHIyLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODQ1YzZjOTVkYmZlNmM5MTVjZTY4YTBhMTE1ODUyZmExNzkzMmZiNApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IEphbiA1IDA5OjEyOjQxIDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBLYXRtYWkvNDR4X3NwZF9kZHIyLmMgY29kZSBmb3Igb3B0aW1hbCBERFIyIHNldHVwCgogICAgT24gS2F0bWFpIHRoZSBjb21wbGV0ZSBhdXRvLWNhbGlicmF0aW9uIHNvbWVob3cgZG9lc24ndCBzZWVtIHRvCiAgICBwcm9kdWNlIHRoZSBiZXN0IHJlc3VsdHMsIG1lYW5pbmcgb3B0aW1hbCB2YWx1ZXMgZm9yIFJRRkQvUkZGRC4KICAgIFRoaXMgd2FzIGRpc2NvdmVyZWQgYnkgR0RBIHVzaW5nIGEgaGlnaCBiYW5kd2lkdGggc2NvcGUsCiAgICBhbmFseXppbmcgdGhlIEREUjIgc2lnbmFscy4gR0RBIHByb3ZpZGVkIGEgZml4ZWQgdmFsdWUgZm9yIFJRRkQsCiAgICBzbyBub3cgb24gS2F0bWFpICJvbmx5IiBSRkZEIGlzIGF1dG8tY2FsaWJyYXRlZC4KCiAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyBSRENDIGNhbGlicmF0aW9uIGFzIG1lbnRpb25lZCBvbiBwYWdlIDcgb2YKICAgIHRoZSBBTUNDIFBvd2VyUEM0NDBTUC9TUGUgRERSMiBhcHBsaWNhdGlvbiBub3RlOgogICAgIkREUjEvRERSMiBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSBhbmQgRHluYW1pYyBUdW5pbmciCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDQ5ZGI0N2I4YWU2YWZmZjJiODk4YmUzMTI5NDhmZjUwMTM1N2RjODAKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJV2VkIEphbiAyIDE2OjQ4OjQyIDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IFJlbW92ZSBzZHJhbS5oIGZyb20gUE1DNDQwIGJvYXJkCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgMzQwNjVhMmNlMGQ4OTcyZjJlYzY2NTIwNzYwMTRhYjI0M2QyY2U4YQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglXZWQgSmFuIDIgMTY6NDg6MzQgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogdXNlIGNvbW1vbiBkZW5hbGkgY29yZSBkZWZpbmVzIGFuZCBkYXRhIGV5ZSBzZWFyY2ggY29kZSBmb3IgUE1DNDQwCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgOWFjNmI2ZjNkM2YxYjA3MmQ4OTI2OGIyZWZlNDdlOTVlNjY1OTQ4OQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglXZWQgSmFuIDIgMTI6MDU6MTQgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogTW9yZSBjbGVhbnVwIGZvciBlc2QncyBMQ0QgY29kZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IGZlOWMyNmIzMzBhMjFjZTczZTUyYjViZDM0N2Q3MjVjYjgxZTNjZmIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBKYW4gNCAxMjowMDowMSAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBGaXggU2VxdW9pYSBOQU5EIGJvb3RpbmcgdGFyZ2V0CgogICAgVGhlIFNlcXVvaWEgTkFORCBib290aW5nIHRhcmdldCBub3cgdXNlcyB0aGUgcmVjZW50bHkgZXh0cmFjdGVkCiAgICBjcHUvcHBjNHh4L2RlbmFsaV9kYXRhX2V5ZS5jIGZpbGUgdG9vLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwZGRkOTY5YWVjNTMyYmQ3ZWFlMzBmYzA5NTkwNDg4YTNhYWE2MjlhCkF1dGhvcjogTGF3cmVuY2UgUi4gSm9obnNvbiA8bHJqQGFjbS5vcmc+CkRhdGU6CVRodSBKYW4gMyAxNTowMjowMiAyMDA4IC0wNTAwCgogICAgcHBjNHh4OiBVc2UgQ0ZHXzR4eF9HUElPX1RBQkxFIHRvIGNvbmZpZ3VyZSBLb3JhdCBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgoKY29tbWl0IGIwNWU4YmY1OGJlOWQ4OTU2ZmRmZGUzZDhjOGU4N2MxNDA0MTQ2NjMKQXV0aG9yOiBMYXdyZW5jZSBSLiBKb2huc29uIDxscmpAYWNtLm9yZz4KRGF0ZToJRnJpIEphbiA0IDAyOjExOjU2IDIwMDggLTA1MDAKCiAgICBwcGM0eHg6IFVzZSBDRkdfNHh4X0dQSU9fVEFCTEUgdG8gY29uZmlndXJlIFNlcXVvaWEgYm9hcmQKCiAgICBOb3RlOiB0aGlzIHBhdGNoIGNoYW5nZXMgdGhlIGNvbmZpZ3VyYXRpb24gb2Ygc29tZSBHUElPIHJlZ2lzdGVyczoKCiAgICAgICBSZWdpc3RlciAgICAgIE9sZCBWYWx1ZQkgTmV3IFZhbHVlCiAgICAtLS0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0gIC0tLS0tLS0tLS0KICAgIERDUiBHUElPMF9UQ1IgICAgMHgwMDAwMDAwRiAgMHgwMDAwRjBDRgogICAgRENSIEdQSU8wX1RTUkggICAweDU1MDA1MDAwICAweDAwMDAwMDAwCiAgICBEQ1IgR1BJTzFfVENSICAgIDB4QzIwMDAwMDAgIDB4RTIwMDAwMDAKICAgIERDUiBHUElPMV9UU1JMICAgMHgwQzAwMDAwMCAgMHgwMDIwMDAwMAogICAgRENSIEdQSU8xX0lTUjJMICAweDAwMDUwMDAwICAweDAwMTEwMDAwCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgNWFiODg0YjI1NGNhMmU3MDdhYjUwNTQ1Y2Q3MDVmMzAxMDhjZjQ5MQpBdXRob3I6IExhd3JlbmNlIFIuIEpvaG5zb24gPGxyakBhY20ub3JnPgpEYXRlOglUaHUgSmFuIDMgMTg6NTQ6MDAgMjAwOCAtMDUwMAoKICAgIHBwYzR4eDogQWRkIGZ1bmN0aW9uYWxpdHkgdG8gR1BJTyBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBtYWtlcyB0d28gYWRkaXRpb25zIHRvIEdQSU8gc3VwcG9ydDoKCiAgICBGaXJzdCwgaXQgYWRkcyBmdW5jdGlvbiBncGlvX3JlYWRfaW5fYml0KCkgdG8gcmVhZCB0aGUgYSBiaXQgZnJvbSB0aGUKICAgIEdQSU8gSW5wdXQgUmVnaXN0ZXIgKEdQSU94X0lSKSBpbiB0aGUgc2FtZSB3YXkgdGhhdCBmdW5jdGlvbgogICAgZ3Bpb19yZWFkX291dF9iaXQoKSByZWFkcyBhIGJpdCBmcm9tIHRoZSBHUElPIE91dHB1dCBSZWdpc3RlcgogICAgKEdQSU94X09SKS4KCiAgICBTZWNvbmQsIGl0IG1vZGlmaWVzIGZ1bmN0aW9uIGdwaW9fc2V0X2NoaXBfY29uZmlndXJhdGlvbigpIHRvIHByb3ZpZGUKICAgIGFuIGFkZGl0aW9uYWwgb3B0aW9uIGZvciBjb25maWd1cmluZyB0aGUgR1BJTyBmcm9tIHRoZQogICAgIkNGR180eHhfR1BJT19UQUJMRSIuCgogICAgQWNjb3JkaW5nIHRvIHRoZSA0NDBFUHggVXNlcidzIE1hbnVhbCwgd2hlbiBhbiBhbHRlcm5hdGUgb3V0cHV0IGlzIHVzZWQsCiAgICB0aGUgdGhyZWUtc3RhdGUgY29udHJvbCBpcyBjb25maWd1cmVkIGluIG9uZSBvZiB0d28gd2F5cywgZGVwZW5kaW5nIG9uCiAgICB0aGUgcGFydGljdWxhciBvdXRwdXQuICBUaGUgZmlyc3Qgb3B0aW9uIGlzIHRvIHNlbGVjdCB0aGUgY29ycmVzcG9uZGluZwogICAgYWx0ZXJuYXRlIHRocmVlLXN0YXRlIGNvbnRyb2wgaW4gdGhlIEdQSU94X1RSU0gvTCByZWdpc3RlcnMuICBUaGUgc2Vjb25kCiAgICBvcHRpb24gaXMgdG8gc2VsZWN0IHRoZSBHUElPIFRocmVlLVN0YXRlIENvbnRyb2wgUmVnaXN0ZXIgKEdQSU94X1RDUikgaW4KICAgIHRoZSBHUElPeF9UUlNIL0wgcmVnaXN0ZXJzLCBhbmQgc2V0IHRoZSBjb3JyZXNwb25kaW5nIGJpdCBpbiB0aGUKICAgIEdQSU94X1RDUiByZWdpc3RlciB0byBlbmFibGUgdGhlIG91dHB1dC4gIEZvciBleGFtcGxlLCB0aGUgTWFudWFsCiAgICBzcGVjaWZpZXMgY29uZmlndXJpbmcgdGhlIEdQSU8wMCBBbHRlcm5hdGUgMSBTaWduYWwgKFByZUFkZHIwNykgdG8gdXNlCiAgICB0aGUgYWx0ZXJuYXRlIHRocmVlLXN0YXRlIGNvbnRyb2wgKGZpcnN0IG9wdGlvbiksIGFuZCBzcGVjaWZpZXMKICAgIGNvbmZpZ3VyaW5nIHRoZSBHUElPMzIgQWx0ZXJuYXRlIDEgU2lnbmFsIChVU0IyT00wKSB3aXRoIHRoZSBvdXRwdXQKICAgIGVuYWJsZWQgaW4gdGhlIEdQSU94X1RDUiByZWdpc3RlciAoc2Vjb25kIG9wdGlvbikuCgogICAgQ3VycmVudGx5LCBncGlvX3NldF9jaGlwX2NvbmZpZ3VyYXRpb24oKSBjb25maWd1cmVzIGFsbCBhbHRlcm5hdGUgc2lnbmFsCiAgICBvdXRwdXRzIHRvIHVzZSB0aGUgZmlyc3Qgb3B0aW9uLiAgVGhpcyBwYXRjaCBhbGxvdyB0aGUgc2Vjb25kIG9wdGlvbiB0bwogICAgYmUgc2VsZWN0ZWQgYnkgc2V0dGluZyB0aGUgIm91dF92YWwiIGVsZW1lbnQgaW4gdGhlIHRhYmxlIGVudHJ5IHRvCiAgICAiR1BJT19PVVRfMSIuICBUaGUgZmlyc3Qgb3B0aW9uIGlzIHVzZWQgd2hlbiB0aGUgIm91dF92YWwiIGVsZW1lbnQgaXMKICAgIHNldCB0byAiR1BJT19PVVRfMCIuICBCZWNhdXNlICJvdXRfdmFsIiBpcyBub3QgY3VycmVudGx5IHVzZWQgd2hlbiBhbgogICAgYWx0ZXJuYXRlIHNpZ25hbCBpcyBzZWxlY3RlZCwgYW5kIGJlY2F1c2UgYWxsIGN1cnJlbnQgR1BJTyB0YWJsZXMgc2V0CiAgICAib3V0X3ZhbCIgdG8gIkdQSU9fT1VUXzAiIGZvciBhbGwgYWx0ZXJuYXRlIHNpZ25hbHMsIHRoaXMgcGF0Y2ggc2hvdWxkCiAgICBub3QgY2hhbmdlIGFueSBleGlzdGluZyBjb25maWd1cmF0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KCmNvbW1pdCAxOTY0MDRjZGMxZGU0OTVkNjE4MmU4NDczMWMyMDBmYzU3NDhkZjE1CkF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFybGlueC5jb20+CkRhdGU6CVN1biBEZWMgMzAgMDE6MDE6NTQgMjAwNyAtMDUwMAoKICAgIFBQQzR4eDogUmVtb3ZlIHNkcmFtLmggZnJvbSBib2FyZC9sd21vbjUKCiAgICBUaGVzZSBkZWZpbml0aW9ucyBhcmUgbm93IGluICJpbmNsdWRlL3BwYzQ0MC5oIi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KCmNvbW1pdCBlZjE2ZmNjZjk2ZTU1ZWFiOTNmZTI1ZDAzZWJlMmU5YjU2ZTUzMzJiCkF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFybGlueC5jb20+CkRhdGU6CVN1biBEZWMgMzAgMDE6MDE6MzIgMjAwNyAtMDUwMAoKICAgIFBQQzR4eDogVXNlIGNvbW1vbiBjb2RlIGZvciBMV01PTjUgYm9hcmQgU0RSQU0gc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggYWxzbyBtb2RpZmllcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgY29kZSBzbyB0aGF0IHRoZSBkYXRhLWV5ZQogICAgc2VhcmNoIGlzIG5vdyBkb25lIHdpdGggd2l0aCB0aGUgY2FjaGUgZGlzYWJsZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgNjJjYzM5NTFhYjcyMTM1ZDljMTAxZjE4NDViNzk0ZTYzYTBmYTE4OQpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgpEYXRlOglTdW4gRGVjIDMwIDAxOjAxOjE0IDIwMDcgLTA1MDAKCiAgICBQUEM0eHg6IFJlbW92ZSBzZHJhbS5oIGZyb20gYm9hcmQvYW1jYy9zZXF1b2lhCgogICAgVGhlc2UgZGVmaW5pdGlvbnMgYXJlIG5vdyBpbiAiaW5jbHVkZS9wcGM0NDAuaCIuCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgY2UzOTAyZTE3NjViYmZiMDdjZjViYmU5OGJlOWE2OGUzMDA5OTk2YQpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgpEYXRlOglTdW4gRGVjIDMwIDAxOjAwOjUwIDIwMDcgLTA1MDAKCiAgICBQUEM0eHg6IFVzZSBjb21tb24gY29kZSBmb3IgU2VxdW9pYSBib2FyZCBTRFJBTSBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgOGIwYzVjMTI3NjkwMzM1NzU4MTAwYzI1ZWFlYzJiODRkYjk3YzEwMQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUaHUgRGVjIDI3IDE2OjU4OjQxIDIwMDcgKzAxMDAKCiAgICBuZXQ6IEFkZCBDT05GSUdfTkVUX0RPX05PVF9UUllfQU5PVEhFUiBvcHRpb24KCiAgICBXaGVuIENPTkZJR19ORVRfRE9fTk9UX1RSWV9BTk9USEVSIGlzIGRlZmluZWQgVS1Cb290J3MKICAgIG5ldHdvcmtpbmcgc3RhY2sgZG9lcyBub3QgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8KICAgIGFub3RoZXIgaW50ZXJmYWNlLiBUaGlzIHBhdGNoIGRvZXMgbm90IHRvdWNoIHRoZSBkZWZhdWx0CiAgICBiZWhhdmlvci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNTA1YmU4N2E2NWU0Zjg3YWQ3ZDhkYTFkNTdlYTRkY2Q0ODdkN2UzMgpBdXRob3I6IFVwYWt1bCBCYXJrYWthdHkgPHVwYWt1bEBnbWFpbC5jb20+CkRhdGU6CVRodSBOb3YgMjkgMTI6MTY6MTMgMjAwNyArMDUzMAoKICAgIE5FVDogUHJvcGVyIHJldHVybiBjb2RlIGhhbmRsaW5nIGluIGV0aF9pbml0KCkgZnVuY3Rpb24gaW4gZmlsZSBldGguYwoKICAgIFRoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIHJldHVybiBjb2RlIGhhbmRsaW5nIGluIHRoZSBldGhfaW5pdCgpCiAgICBmdW5jdGlvbiwgdG8gYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBoYW5kbGluZyBvZiB0aGUgcmV0dXJuIGNvZGVzIGluCiAgICB0aGUgb3RoZXIgbmV0d29yayBzdGFjayBmaWxlcy4gSXQgbm93IHJldHVybnMgYSAwIG9uIFN1Y2Nlc3MgYW5kIC0xIG9uCiAgICBlcnJvci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBVcGFrdWwgQmFya2FrYXR5IDx1cGFrdWwuYmFya2FrYXR5QGNvbmV4YW50LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNWNhMmQwOTUzZTQ1NzlhODA4MTA5NjZjY2EyMDc3ZTIwZDkxMmM5NwpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KRGF0ZToJTW9uIE5vdiAxOSAyMDoyNzowNCAyMDA3ICswOTAwCgogICAgbmV0L2V0aC5jOiBGaXggZW52X2VuZXRhZGRyIHNpZ25lZCBvdmVyZmxvdwoKICAgIEFzc2lnbmluZyB0aGUgb3V0cHV0IG9mIHNpbXBsZV9zdHJ0b3VsKENCOkE5Ojg3OjY1OjQzOjIxKSB0byBgY2hhcicsIHdlIGFyZQogICAgd2FybmVkIGFzIGJlbG93OgoKICAgICAgVS1Cb290IDEuMi4wIChBdWcgMzAgMjAwNyAtIDA4OjI3OjM3KQoKICAgICAgRFJBTTogIDI1NiBNQgogICAgICBGbGFzaDogMzIgTUIKICAgICAgSW46ICAgIHNlcmlhbAogICAgICBPdXQ6ICAgc2VyaWFsCiAgICAgIEVycjogICBzZXJpYWwKICAgICAgTmV0OiAgIE5FQy1DYW5keQogICAgICBXYXJuaW5nOiBORUMtQ2FuZHkgTUFDIGFkZHJlc3NlcyBkb24ndCBtYXRjaDoKICAgICAgQWRkcmVzcyBpbiBTUk9NIGlzCSAwMDowMDo0Qzo4MDo5MjpBMgogICAgICBBZGRyZXNzIGluIGVudmlyb25tZW50IGlzICBGRkZGRkZDQjpGRkZGRkZBOTpGRkZGRkY4Nzo2NTo0MzoyMQoKICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBlbnZfZW5ldGFkZHIgdHlwZSBmcm9tIGBjaGFyJyB0byBgdW5zaWduZWQgY2hhcicuCgogICAgQ2M6IE1hc2FraSBJc2hpa2F3YSA8aXNoaWthd2EtbWFzYWtpQGNudC5teGUubmVzLm5lYy5jby5qcD4KICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZjg1YjYwNzEwNTcxYjM3MjkzZDIyMzM5MzNiNzZlMmFhM2RiNTYzNQpBdXRob3I6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+CkRhdGU6CVRodSBEZWMgMjcgMTg6MTk6MDIgMjAwNyArMDEwMAoKICAgIEludHJvZHVjZSBuZXcgZXRoX3JlY2VpdmUgcm91dGluZQoKICAgIFRoZSBwdXJwb3NlIG9mIHRoaXMgcm91dGluZSBpcyByZWNlaXZpbmcgYSBzaW5nbGUgbmV0d29yayBmcmFtZSwgb3V0c2lkZSBvZgogICAgVS1Cb290J3MgTmV0TG9vcCgpLiBFeHBvcnRpbmcgaXQgdG8gc3RhbmRhbG9uZSBwcm9ncmFtcyB0aGF0IHJ1biBvbiB0b3Agb2YKICAgIFUtQm9vdCB3aWxsIGxldCB0aGVtIHV0aWxpc2UgbmV0d29ya2luZyBmYWNpbGl0aWVzLiBGb3Igc2VuZGluZyBhIHJhdyBmcmFtZQogICAgdGhlIGFscmVhZHkgZXhpc3RpbmcgZXRoX3NlbmQoKSBjYW4gYmUgdXNlZC4KCiAgICBUaGUgZGlyZWN0IGNvbnN1bWVyIG9mIHRoaXMgcm91dGluZSBpcyB0aGUgbmV3bHkgaW50cm9kdWNlZCBBUEkgbGF5ZXIgZm9yCiAgICBleHRlcm5hbCBhcHBsaWNhdGlvbnMgKGVuYWJsZWQgd2l0aCBDT05GSUdfQVBJKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUGlvdHIgS3J1c3p5bnNraSA8cHBrQHNlbWloYWxmLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNWM3NDA3MTFmMGVhNWI1MTQxNGIzNDFiNzE1OTdjNGEwNzUxYmU3NApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKYW4gMyAxMDo0MTowNCAyMDA4IC0wNjAwCgogICAgODYxMDogTW92ZSBpbmNsdWRlIG9mIGNvbmZpZy5oIGVhcmxpZXIuCgogICAgSW5jbHVkZSBjb25maWcuaCBlYXJsaWVyIGluIHRoZSBzZXQgb2YgI2luY2x1ZGVzCiAgICBzbyBhcyB0byBhdm9pZCBhIGluY2lkZW50YWwgYW5kIGR1cGxpY2F0ZSBkZWZpbml0aW9uCiAgICBvZiBDRkdfQ0FDSEVMSU5FX1NJWkUuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyCgpjb21taXQgNjFkMzQyMWJkZWEwOTBiZDAzOTliMTRjM2UxMGEzYmViY2M4ZDVmZgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBEZWMgNCAxMDo1MzozNCAyMDA3IC0wNjAwCgogICAgRG9uJ3Qgc2xhbSAjdW5kZWYgREVCVUcgaW4gdGhlIDg2NDFIUENOIGNvbmZpZyBmaWxlLgoKICAgIERvaW5nIHNvIHByZXZlbnRzIGl0IGZyb20gYmVpbmcgaW5kaXZpZHVhbGx5IHNldAogICAgYW5kIHVzZWZ1bCBpbiBvdGhlciBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGVhOWY3Mzk1ZWMzNjI1ODRlNWU0ZjI2NmJkMGIwYzQ0MjJjZjZhNGMKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTm92IDI4IDE0OjQ3OjE4IDIwMDcgLTA2MDAKCiAgICBDb252ZXJ0IE1QQzg2NDFIUENOIHRvIHVzZSBsaWJmZHQuCgogICAgQXNzdW1lcyB0aGUgcHJlc2VuY2Ugb2YgdGhlIGFsaWFzZXMgbm9kZSBpbiB0aGUgRFRTIHRvCiAgICBsb2NhdGUgdGhlIGV0aGVybmV0LCBwY2kgYW5kIHNlcmlhbCBub2RlcyBmb3IgZml4dXBzLgoKICAgIFVzZSBjb25zaXN0ZW50IGZkdGFkZHIgYW5kIGZkdGZpbGUgaW4gZW52aXJvbm1lbnQgdmFyaWFibGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgY2UzNzQyMmQwMDAyZTEwNDkwZTI2ODM5MmUwYzRlMzAyOGU1MmNlYwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEphbiAyIDE0OjA2OjI2IDIwMDggKzAxMDAKCiAgICBjZmlfZmxhc2g6IEZpeCBidWcgaW4gZmxhc2hfaXNzZXQoKSB0byB1c2UgY29ycmVjdCAzMmJpdCBmdW5jdGlvbgoKICAgIFRoaXMgYnVnIHdhcyBkZXRlY3RlZCBvbiB0aGUgTFdNT041IHRhcmdldCB3aGljaCBoYXMgMiBJbnRlbCAxNmJpdCB3aWRlCiAgICBmbGFzaCBjaGlwcyBjb25uZWN0ZWQgdG8gYSAzMmJpdCB3aWRlIHBvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDExODJlOWY4ZTNiOTJmYzM3MmQ2NDk0MzI5M2RlNTNkYWEyZTI2Y2YKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDIgMTU6NTg6NDQgMjAwOCArMDEwMAoKICAgIEZpeCBjb21waWxlIHByb2JsZW0gaW50cm9kdWNlZCBieSAiY2xlYW51cCIgY29tbWl0IDNkZmQ3MDhjCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAxYWFhYjliZmFlMGIzYjJlZTJiNDE4YzIyYzY1MTI4MGVlN2I2NWM3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEphbiAyIDE1OjU0OjQ1IDIwMDggKzAxMDAKCiAgICBNYWtlIHNjcmlwdHMgYW5kIE1ha2VmaWxlcyBQT1NJWCBjb21wbGlhbnQKCiAgICBUaGUgYmFzaCBidWlsdGluIHZlcnNpb25zIG9mIHRoZSAidGVzdCIgKHJlc3AuICJbIikgY29tbWFuZCBhbGxvdwogICAgdXNpbmcgIj09IiBmb3Igc3RyaW5nIGNvbXBhcmlzb25zLCBidXQgUE9TSVggY29tcGF0aWJsZSBpbXBsZW1lbi0KICAgIHRhdGlvbnMgKGxpa2UgL3Vzci9iaW4vdGVzdCkgaW5zaXN0IG9uIHVzaW5nICI9IiBvbmx5LiBPbiBzdWNoIHN5c3RlbXMKICAgIHlvdSB3aWxsIHNlZToKCgkkIC91c3IvYmluL3Rlc3QgYSA9PSBhICYmIGVjaG8gT0sKCS91c3IvYmluL3Rlc3Q6ID09OiBiaW5hcnkgb3BlcmF0b3IgZXhwZWN0ZWQKCiAgICBUaGlzIHBhdGNoIGZpeGVzIE1ha2VmaWxlcyBhbmQgc2NyaXB0cyB0byB1c2UgUE9TSVggc3R5bGUuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0N2NjMjNjYmU5YTY2OWM1MTAxODNmNGYwNDliZjcwM2VmNDQ1ZjNiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDIgMTQ6MDU6MzcgMjAwOCArMDEwMAoKICAgIGNmaV9mbGFzaDogRml4IGJ1ZyBpbiBmbGFzaF9pc3NldCgpIHRvIHVzZSBjb3JyZWN0IDMyYml0IGZ1bmN0aW9uCgogICAgVGhpcyBidWcgd2FzIGRldGVjdGVkIG9uIHRoZSBMV01PTjUgdGFyZ2V0IHdoaWNoIGhhcyAyIEludGVsIDE2Yml0IHdpZGUKICAgIGZsYXNoIGNoaXBzIGNvbm5lY3RlZCB0byBhIDMyYml0IHdpZGUgcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgM2RmZDcwOGNjMWIyYTk2NmFkNDU0Y2E5ZWQxMjVkZDE3ZGJhZGJjYwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBKYW4gMiAxMjozODo0MyAyMDA4ICswMTAwCgogICAgTWlub3IgY29kaW5nIHN0eWxlIGNsZWFudXAuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBlMTc0YWMzNGFkZjVkNTY1M2RmMTJiYzNjZjE5YzUyMDYzYTcxMjY5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgRGVjIDI4IDE3OjI5OjU2IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IENvZGluZyBzdHlsZSBjbGVhbnVwCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDhiYTEzMmNhYjE4YWU0MzhiNmRkNWIwMjE0YzI4YThmYzBkOTc2ZTUKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJRnJpIERlYyAyOCAxNzowNzoyNCAyMDA3ICswMTAwCgogICAgcHBjNHh4OiBDb21wbGV0ZSBQTUM0NDAgYm9hcmQgc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggYnJpbmdzIHRoZSBQTUM0NDAgYm9hcmQgY29uZmlndXJhdGlvbiBmaWxlLgogICAgRmluYWxseSBpdCBlbmFibGVzIHRoZSBQTUM0NDAgYm9hcmQgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCA0MDc4NDNhNTgyNTYwZmM1MjMxMjk5NTYxYWIzYzJiNmI2Y2QzMzk3CkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CUZyaSBEZWMgMjggMTc6MDc6MTggMjAwNyArMDEwMAoKICAgIHBwYzR4eDogQWRkIEZQR0Egc3VwcG9ydCBhbmQgQlNQIGNvbW1hbmRzIGZvciBQTUM0NDAgYm9hcmRzCgogICAgVGhpcyBwYXRjaCBhZGRzIHNvbWUgQlNQIGNvbW1hbmRzIGFuZCBGUEdBIGJvb3Rpbmcgc3VwcG9ydAogICAgZm9yIGVzZCdzIFBNQzQ0MCBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgNzJjNWQ1MmFlZGNjZTM1ZTRiNGZhNTg5NTYwNTU1NDgyNWI2YTc2ZgpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglGcmkgRGVjIDI4IDE3OjA3OjE0IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IEFkZCBpbml0aWFsIGVzZCBQTUM0NDAgYm9hcmQgZmlsZXMKCiAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGZpcnN0IGZpbGVzIGZvciB0aGUgbmV3IGVzZCBQTUM0NDAgYm9hcmRzLgogICAgVGhlIG5leHQgdHdvIHBhdGNoZXMgd2lsbCBjb21wbGV0ZSB0aGUgUE1DNDQwIGJvYXJkIHN1cHBvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgZjZlMGYxZjYxODk2Y2U3NzI5YmExYmNlYTJmZmJkMTM4ZDM5NDdmNQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglGcmkgRGVjIDI4IDE3OjEwOjM2IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IEFkZCBFRVBST00gd3JpdGUgcHJvdGVjdGlvbiBmb3IgUExVNDA1IGJvYXJkcyArIG1pc2MuIHVwZGF0ZXMKCiAgICAtIGFkZCBFRVBST00gd3JpdGUgcHJvdGVjdGlvbiBmb3IgZXNkIFBMVTQwNSBib2FyZHMuCiAgICAtIGluaXRpYWxpemUgTkFORCBHUElPcwogICAgLSB1c2UgY29ycmVjdCBpbyBhY2Nlc3NvcnMKICAgIC0gY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDc3NjYwYzRiNTkwNTVkNjIxZDJhODU5NWJkNGMxOGJiMjc3MjY4ZmMKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJRnJpIERlYyAyOCAxNzoxMDo0NCAyMDA3ICswMTAwCgogICAgcHBjNHh4OiB1c2UgY29ycmVjdCBpbyBhY2Nlc3NvcnMgZm9yIGVzZCdzIExDRCBjb2RlCgogICAgVGhpcyBwYXRjaCBmaXhlcyBlc2QncyBMQ0QgZGVjdGVjdGlvbiBjb2RlIHRvIHdvcmsgY29ycmVjdGx5IHdpdGgKICAgIG5ld2VyIGdjYyB2ZXJzaW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCBiNTZiZDBmY2ZjMWM3M2RiNzIyZTM0NjJjOGE5YmY2MDdiYTc3NzVlCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CUZyaSBEZWMgMjggMTc6MTA6NDIgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogTWFpbnRlbmFuY2UgcGF0Y2ggZm9yIFZPSDQwNSBib2FyZHMKCiAgICAtIGFkZCBFRVBST00gd3JpdGUgcHJvdGVjdGlvbgogICAgLSBpbml0aWFsaXplIE5BTkQgR1BJT3MKICAgIC0gdXNlIGNvcnJlY3QgaW8gYWNjZXNzb3JzCiAgICAtIHNsb3cgZG93biBJMkMgY2xvY2sgdG8gMTAwa0h6CiAgICAtIGVuYWJsZSBleHQuIEkyQyBidXMKICAgIC0gY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IGMwNTU2OTA2NmRiY2JhM2ZkZjM2ZDRkMTk0M2RmMjY1ZGMzMTZhODYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBEZWMgMjggMTY6MDg6MDggMjAwNyArMDEwMAoKICAgIHBwYzR4eDogRW5hYmxlIDQwNUVQIFBDSSBhcmJpdGVyIHBlciBkZWZhdWx0IG9uIGFsbCBib2FyZHMKCiAgICBJbiBhbiBhdHRtZW10IHRvIGNsZWFuIHVwIHRoZSA0eHggc3RhcnQuUyBmaWxlLCBJIHJlbW92ZWQgdGhlIGVuYWJsaW5nCiAgICBvZiB0aGUgaW50ZXJuYWwgNDA1RVAgUENJIGFyYml0ZXIuIFRoaXMgaXMgbmVlZGVkIGZvciBtdWx0aXBsZSBvdGhlcgogICAgNDA1RVAgcGxhdGZvcm1zLCBsaWtlIG1vc3Qgb2YgdGhlIGVzZCA0MDVFUC4gTm93IHRoZSBpbnRlcm5hbCBQQ0kKICAgIGFyYml0ZXIgaXMgZW5hYmxlZCBhZ2FpbiBwZXIgZGVmYXVsdCBhcyBpdCBoYXMgYmVlbiBiZWZvcmUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQWNrZWQtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IGJlYzkyNjQ2MTZmYjc4MjczYTFkOTNlODdmZjRiMGI2N2M3YmVjMWIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBEZWMgMjggMTU6NTM6NDYgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogRml4IGJ1ZyBpbiBjcHVfaW5pdC5jICg0MDVFUCBpbnN0ZWFkIG9mIDQ1MEVQKQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCBmYjgzYTY1YzYwYWI1Y2ExMjM1OGI3NWYxMjU3ZTVlZWU2Y2RiZjc5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgRGVjIDI4IDA2OjA2OjA0IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IEZpeCBjb21waWxhdGlvbiBwcm9ibGVtIG9mIGtpbGF1ZWEvaGFsZWFrYWxhIG5hbmQgYm9vdGluZyB0YXJnZXQKCiAgICBVc2UgY29ycmVjdCBsaW5rIHRvIG5hbmRfZWNjIG5vdyBsb2NhdGVkIGluIGRyaXZlcnMvbXRkL25hbmQvIGZvciB0aGUKICAgIHBsYXRmb3JtcyBtZW50aW9uZWQgYWJvdmUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGI1NjhmZDI1NTc0MTgxYTNiMTJhZTNkNjZiMjkxMzkwMzQ0MmNiODMKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVGh1IERlYyAyNyAxNzowMzo0NiAyMDA3ICswMTAwCgogICAgUmVtb3ZlIENQQ0k0NDAgYm9hcmQKCiAgICBUaGlzIGJvYXJkIG5ldmVyIGxlZnQgcHJvdG90eXBpbmcgc3RhdGUgYW5kIGl0CiAgICBiZWNhbWUgYSBtaWxsc3RvbmUgcm91bmQgbXkgbmVjay4gU28gcmVtb3ZlIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IGM1OTFkZmZlMGNiYWNkODk2Y2NiYWQwNjAxMWZlNmQ2YWZhMDgwZGEKQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYXJsaW54LmNvbT4KRGF0ZToJVGh1IERlYyAyNyAxMToyODo1MSAyMDA3IC0wNTAwCgogICAgQWRkIHN1cHBvcnQgZm9yIEtvcmF0IFBQQzQ0MEVQeCBib2FyZAoKICAgIFRoZXNlIHBhdGNoZXMgYWRkIHN1cHBvcnQgZm9yIHRoZSBQUEM0NDBFUHgtYmFzZWQgIktvcmF0IiBib2FyZCB0bwogICAgVS1Cb290LiAgVGhleSBhcmUgYmFzZWQgcHJpbWFyaWx5IG9uIHN1cHBvcnQgZm9yIHRoZSBTZXF1b2lhIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgoKY29tbWl0IDg3ZGMwOTY4MjllNmE2MzYzZjRmZGQ3MzY1M2IwMDkzYTg1YWRiZTAKQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYXJsaW54LmNvbT4KRGF0ZToJU2F0IERlYyAyMiAxNToxNjoyNSAyMDA3IC0wNTAwCgogICAgQWRkIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgS29yYXQgYm9hcmQKCiAgICBUaGlzIHBhdGNoIHN1cHBsaWVzIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSBLb3JhdCBQUEM0NDBFUHgtCiAgICBwcm9jZXNzb3IgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgOGViNTJkNWQ5ODJiNzY0YjM5Yzg4ZDlkMTA2NGQ1NmM1Mzk3YmZhNQpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgpEYXRlOglTYXQgRGVjIDIyIDE1OjE2OjExIDIwMDcgLTA1MDAKCiAgICBBZGQgZGVuYWxpX2RhdGFfZXllLm8gYW5kIGRlbmFsaV9zcGRfZGRyMi5vIHRvIFBQQzR4eCBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgoKY29tbWl0IGFiYTE5NjA0ZDg0OGIyODM4Y2ZiOWViZTgxODkwOWU2YTIxNjA1OGUKQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYXJsaW54LmNvbT4KRGF0ZToJVGh1IERlYyAyNyAxMDo1NDo0OCAyMDA3IC0wNTAwCgogICAgQWRkIDQ0MEVQeCBERFIyIFNQRCBESU1NIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZHMgU1BEIEREUjIgc3VwcG9ydCBmb3IgdGhlIDQ0MEVQeCAoIkRlbmFsaSIpIFNEUkFNCiAgICBjb250cm9sbGVyLiAgSXQgc2hvdWxkIGFsc28gd29yayBvbiB0aGUgNDQwR1J4LiAgSXQgaXMgYmFzZWQgb24gdGhlIEREUjIKICAgIFNQRCBjb2RlIGZvciB0aGUgNDQwRVAvNDQwRVB4LCBidXQgbWFrZXMgbm8gcHJvdmlzaW9uIGZvciBERFIxIHN1cHBvcnQuCgogICAgVGhpcyBjb2RlIGhhcyBiZWVuIHRlc3RlZCBvbiBwcm90b3R5cGUgS29yYXQgYm9hcmRzIHdpdGggdGhyZWUgS2luZ3N0b24KICAgIERJTU1TOiA1MTIgTWlCIEVDQyAob25lIHJhbmspLCA1MTIgTWlCIG5vbi1FQ0MgKG9uZSByYW5rKSBhbmQgMSBHaUIgRUNDCiAgICAodHdvIHJhbmtzKS4gIFRoZSBLb3JhdCBib2FyZCBoYXMgYSBzaW5nbGUgRElNTSBzb2NrZXQsIGJ1dCBzdXBwb3J0IGhhcwogICAgYmVlbiBwcm92aWRlZCAodGhvdWdoIG5vdCB0ZXN0ZWQpIGZvciBib2FyZHMgd2l0aCB0d28gRElNTSBzb2NrZXRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgoKY29tbWl0IDhhMjRhNjk2MzAwMmNiODY3ZDVhNmI3MGUzNTYwZjBiMTQ2N2Y1NWYKQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYXJsaW54LmNvbT4KRGF0ZToJU2F0IERlYyAyMiAxNToxNTozMCAyMDA3IC0wNTAwCgogICAgQ29weSA0NDBFUHgvR1J4IFNEUkFNIGRhdGEtZXllIHNlYXJjaCB0byBjb21tb24gZGlyZWN0b3J5CgogICAgVGhpcyBwYXRjaCBjcmVhdGVzIGEgbm9uLWJvYXJkLXNwZWNpZmljIGZpbGUgZm9yIHBlcmZvcm1pbmcgdGhlIFNEUkFNCiAgICBkYXRhLWV5ZSBzZWFyY2guICBJdCBhbHNvIGFkZHMgRUNDIGVycm9yIGNoZWNraW5nIHRvIHRoZSB0ZXN0IG9mIHZhbGlkCiAgICBkYXRhIG9uIHJlYWRiYWNrIHdoZW4gRUNDIGlzIGVuYWJsZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgYzQ2ZjUzMzMzYjIyYjFmOTA5ODY3NmJlYTg4ODRmYzdkYjgyMGNmMwpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgpEYXRlOglTYXQgRGVjIDIyIDE1OjE1OjEzIDIwMDcgLTA1MDAKCiAgICBBZGQgZGVmaW5pdGlvbnMgZm9yIDQ0MEVQeC9HUnggU0RSQU0gY29udHJvbGxlciB0byBwcGM0NDAuaAoKICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgRGVuYWxpIFNEUkFNIGNvbnRyb2xsZXIgZGVmaW5pdGlvbnMgdG8gInBwYzQ0MC5oIi4KICAgIEl0IGFsc28gZml4ZXMgdHdvIHR5cG9zIGluIHRoZSBkZWZpbml0aW9ucywgc28gdGhlIGJvYXJkLXNwZWNpZmljCiAgICAic2RyYW0uaCIgZmlsZXMgY29udGFpbmluZyB0aGVzZSBkZWZpbml0aW9ucyBhcmUgYWxzbyBmaXhlZCB0byBhdm9pZAogICAgY29tcGlsZXIgd2FybmluZ3MuCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgYzM0ODU3OGJmNjEyZDBjNTZkOGQzNzZkMjNjYWUxNmRlZmJkODZhZgpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgpEYXRlOglUaHUgRGVjIDI3IDEwOjUwOjU1IDIwMDcgLTA1MDAKCiAgICBBZGQgRXRoZXJuZXQgMTAwMEJBU0UtWCBzdXBwb3J0IGZvciBQUEM0eHgKCiAgICBUaGlzIHBhdGNoIGFkZHMgYSBuZXcgc3dpdGNoOiAiQ09ORklHX1BIWV9EWU5BTUlDX0FORUciLiAgV2hlbiB0aGlzIHN5bWJvbAogICAgaXMgZGVmaW5lZCwgdGhlIFBIWSB3aWxsIGFkdmVydGlzZSBpdCdzIGNhcGFiaWxpdGllcyBmb3IgYXV0b25lZ290aWF0aW9uCiAgICBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVzIHNob3duIGluIHRoZSBQSFkncyBzdGF0dXMgcmVnaXN0ZXJzLCBpbmNsdWRpbmcKICAgIDEwMDBCQVNFLVguICBXaGVuICJDT05GSUdfUEhZX0RZTkFNSUNfQU5FRyIgaXMgbm90IGRlZmluZWQsIHRoZSBQSFkgd2lsbAogICAgYWR2ZXJ0aXNlIGhhcmQtY29kZWQgY2FwYWJpbGl0aWVzLCBhcyBiZWZvcmUuCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgOWUyYzM0NzE1MWRiNWFlOGFjZjVmMThiOTk0OTNjZDUzZTY2MzdlMwpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgpEYXRlOglUaHUgRGVjIDI3IDA5OjUyOjE3IDIwMDcgLTA1MDAKCiAgICBBZGQgZHJpdmVyIGZvciBOYXRpb25hbCBTZW1pY29uZHVjdG9yIExNNzMgdGVtcGVyYXR1cmUgc2Vuc29yCgogICAgVGhpcyBkcml2ZXIgaXMgYmFzZWQgb24gdGhlIGRyaXZlciBmb3IgdGhlIExNNzUuCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgMTI2MTgyNzg2ODhlYTliM2Q3NjUzNjk2MGE1YWQyZTM3OTBmYWM0MApBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgpEYXRlOglTYXQgRGVjIDIyIDE1OjE0OjAwIDIwMDcgLTA1MDAKCiAgICBBZGQgZHJpdmVyIGZvciBTVE1pY3JvZWxlY3Ryb25pY3MgTTQxVDYwIFJUQwoKICAgIFRoaXMgZHJpdmVyIGlzIGJhc2VkIG9uIHRoZSBkcml2ZXIgZm9yIHRoZSBNNDFUMTEuCUluIHRoZSBpbnRlbmRlZAogICAgYXBwbGljYXRpb24sIHRoZSBSVEMgd2lsbCBiZSBwb3dlcmVkIGJ5IGEgbGFyZ2UgY2FwYWNpdG9yLCByYXRoZXIgdGhhbiBhCiAgICBiYXR0ZXJ5LiAgVGhlIGRyaXZlciB0aGVyZWZvcmUgY2hlY2tzIHRvIHNlZSB3aGV0aGVyIHRoZSBSVEMgaGFzIGxvc3QKICAgIHBvd2VyLiAgVGhlIGNoaXAncyBPVVQgYml0IGlzIG5vcm1hbGx5IHJlc2V0IGZyb20gaXRzIHBvd2VyLXVwIHN0YXRlLiAgSWYKICAgIHRoZSBPVVQgYml0IGlzIHJlYWQgYXMgc2V0LCBvciBpZiB0aGUgZGF0ZSBhbmQgdGltZSBhcmUgbm90IHZhbGlkLCB0aGVuIHRoZQogICAgUlRDIGlzIGFzc3VtZWQgdG8gaGF2ZSBsb3N0IHBvd2VyLCBhbmQgaXRzIGRhdGUgYW5kIHRpbWUgYXJlIHJlc2V0IHRvCiAgICAxOTAwLTAxLTAxIDAwOjAwOjAwLgoKICAgIFN1cHBvcnQgZm9yIGFkanVzdGluZyB0aGUgc3BlZWQgb2YgdGhlIGNsb2NrIHRvIGltcHJvdmUgYWNjdXJhY3kgaXMKICAgIHByb3ZpZGVkIHRocm91Z2ggYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgZDM0NzExNzNlMTRiNzU0NGJiNjAzMzllZGE4ZDNkMzkwNjY5NGIwYQpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgpEYXRlOglTYXQgRGVjIDIyIDE1OjM0OjM5IDIwMDcgLTA1MDAKCiAgICBVc2Ugb3V0X2JlMzIoKSBhbmQgZnJpZW5kcyB0byBhY2Nlc3MgbWVtb3J5LW1hcHBlZCByZWdpc3RlcnMgaW4gc2VxdW9pYS5jCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgYzY4ZjU5ZmUzZWMxNjc2OWY4MmI1ZmNhNzQyMTk4M2MzMzZkM2FhYwpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgpEYXRlOglTYXQgRGVjIDIyIDE1OjM0OjIwIDIwMDcgLTA1MDAKCiAgICBVc2UgZGVmaW5pdGlvbnMgZnJvbSAiYXNtLXBwYy9tbXUuaCIgaW4gaW5pdC5TIGZvciBTZXF1b2lhCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgMGQ5Y2RlYWMxZDNmYThkNjJlZDdkODgzYWNjOTUwYzM2NGY1YmRhOApBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgpEYXRlOglTYXQgRGVjIDIyIDE1OjIzOjUwIDIwMDcgLTA1MDAKCiAgICBDb3NtZXRpYyBjaGFuZ2VzIHRvIEVDQyBQT1NUIGZvciBBTUNDIERlbmFsaSBjb3JlCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgMmU1ODNkNmM4MTAzNGY4MGEyNjdiODlmYTU1NDk4YWUwNjNjY2VmMQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIERlYyAyNiAyMDoyMDoxOSAyMDA3ICswMTAwCgogICAgcHBjNHh4OiBGaXggY29tcGlsYXRpb24gcHJvYmxlbSBpbiA0MDUgY2FjaGUgUE9TVCB0ZXN0CgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDQyZDU1ZWEwYmRlMDZlNDdkNWEzYjQ5YjBkOTEwMDJhY2Q4ZTU3MDgKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVNhdCBEZWMgMjIgMTI6MjA6MDkgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogTW92ZSB2aXJ0dWFsIGFkZHJlc3Mgb2YgUE9TVCBjYWNoZSB0ZXN0IHRvIGJpZ2dlciBhZGRyZXNzCgogICAgT24gU2VxdW9pYSAmIExXTU9ONSB0aGUgdmlydHVhbCBhZGRyZXNzIG9mIHRoZSBQT1NUIGNhY2hlIHRlc3QgaXMgbm93CiAgICBtb3ZlZCB0byBhIGJpZ2dlciBhZGRyZXNzLiBUaGlzIGVuYWJsZXMgdXNhZ2Ugb2YgbW9yZSBtZW1vcnkgb24gdGhvc2UKICAgIGJvYXJkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZDkxNzIyMTAyY2Y2M2Y3N2EwMTQ4ZWQzZjNkNTRhMjZkODc1NzVlOQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IERlYyAyMiAxMjoxODoyNiAyMDA3ICswMTAwCgogICAgcHBjNHh4OiBGaXggcHJvYmxlbSBpbiA0NHggY2FjaGUgUE9TVCByb3V0aW5lCgogICAgQXMgcmVwb3RlZCBieSBMYXJyeSBKb2huc29uLCBydW5uaW5nICJkaWFnIHJ1biBjYWNoZSIgY2F1c2VkIGEgY3Jhc2gKICAgIGluIFUtQm9vdC4gVGhpcyBwcm9ibGVtIHdhcyBpbnRyb2R1Y2VkIGJ5IGEgcGF0Y2ggdGhhdCByZW1vdmVkIHRoZQogICAgVExCIGVudHJ5IGZvciB0aGUgY2FjaGUgdGVzdCBhZnRlciB0aGUgdGVzdCBoYXMgY29tcGxldGVkLiBTaW5jZSB0aGlzCiAgICBUTEIgd2FzIG9ubHkgc2V0dXAgb25jZSwgYSAybmQgYXR0ZW1wdCB0byBydW4gdGhpcyBjYWNoZSB0ZXN0CiAgICBmYWlsZWQgd2l0aCBhIGNyYXNoLiBOb3cgdGhpcyBUTEIgZW50cnkgaXMgY3JlYXRlZCBldmVyeSB0aW1lIHRoZQogICAgcm91dGluZSBpcyBjYWxsZWQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGIwMjY1YjU3NmJiOGZhOTQ2NWY5OWU5OWMzMjM3NjhiNTYyZmFkYzIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBEZWMgMjEgMDc6NTE6MjkgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogVXBkYXRlIE1ha2FsdSBmZHQgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBiZjgzMjRlNGE1MDc1OGRhZmY4Y2RkZDA0YzZhMmZmOGVkNzc1YmVhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgRGVjIDE5IDA5OjA1OjQwIDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IEFkZCBmZHQgc3VwcG9ydCB0byBBTUNDIEthdG1haSBldmFsIGJvYXJkCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDMyOGEzNDAzOTJhNWRmOWFhZjAwNzkyYmU5ODlkZjczZTc1MDg1OWUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBEZWMgMTggMDg6NDQ6NTEgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogZmR0OiBDbGVhbnVwIHNldHVwIG9mIGNwdSBub2RlIHNldHVwCgogICAgTm93IHRoZSBjcHUgbm9kZSBzZXR1cCAoInRpbWViYXNlLWZyZXF1ZW5jeSIgYW5kICJjbG9jay1mcmVxdWVuY3kiKSBpcwogICAgd2l0aG91dCB1c2luZyB0aGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgY3B1IG5vZGUuIFRoaXMgbWFrZXMgaXQgcG9zc2libGUKICAgIHRvIHVzZSB0aGlzIFUtQm9vdCB2ZXJzaW9uIHdpdGggYm90aCB2ZXJzaW9ucyBvZiBjcHUtbm9kZSBuYW1pbmcKICAgICJjcHVAMCIgYW5kIHRoZSBmb3JtZXIgIlBvd2VyUEMsNDQwRVB4QDAiLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3ODEyYmM0YTJlMjQzNmViYmMwY2U1YjRlOTljMWRmYzJlNzdlYjViCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gRGVjIDE3IDE3OjI2OjIxIDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IEZpeCBsd21vbjUgY29tcGlsYXRpb24gcHJvYmxlbQoKICAgIE5vdyB0aGF0IHRoZSA0NDBFUHggRUNDIHRlc3QgaXMgbm90IGJvYXJkIHNwZWNpZmljIGFueW1vcmUKICAgIHJlbW92ZSB0aGlzIE1ha2VmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0MmVkMzNmZmUxMzVmNjE4NjgwZjlkNmU5NzEyZWIzNWE4NWJjYjYyCkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdHNjaGluQHQtb25saW5lLmRlPgpEYXRlOglXZWQgRGVjIDUgMTc6NDM6MjAgMjAwNyArMDEwMAoKICAgIEZpeCBwcGM0eHggY2xlYXJfYnNzKCkgY29kZQoKICAgIHBwYzR4eCBjbGVhcl9ic3MoKSBmYWlscyBpZiBCU1Mgc2VnbWVudCBzaXplIGlzIG5vdAogICAgZGl2aXNpYmxlIGJ5IDQgd2l0aG91dCByZW1haW5kZXIuIFRoaXMgcGF0Y2ggcHJvdmlkZXMKICAgIGZpeCBmb3IgdGhpcyBwcm9ibGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCA4NWRjMmE3ZjgyZDExZTE3ZjBjYTJhNDQ4MTE4YWVkN2Y3YTRiODVkCkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1c2dpZ2VyQGdteC5jaD4KRGF0ZToJRnJpIE5vdiAzMCAxODozNToxMSAyMDA3ICswMTAwCgogICAgUFBDNHh4OiBNaW5pbWFsIGNoYW5nZXMgdG8gYWRkIHZ4V29ya3Mgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgMDUyNDQwYjAyMmNhODk4MWQzOWI2ZjhjMTBkMWFhNjMyNmY0NzQ4MApBdXRob3I6IE1hcmt1cyBLbG90emLDvGNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CUZyaSBOb3YgMjMgMTM6MDk6MTggMjAwNyArMDEwMAoKICAgIHBwYzR4eDogQWRkIENPTkZJR19CT09UUF9TVUJORVRNQVNLIHRvIFNlcXVvaWEgYm9hcmQgY29uZmlnCgogICAgV2hlbiB1c2luZyBkaGNwL2Jvb3RwIHRoZSAibmV0bWFzayIgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90CiAgICBzZXQgYmVjYXVzZSBDT05GSUdfQk9PVFBfU1VCTkVUTUFTSyBpcyBub3QgZGVmaW5lZC4gQnV0IHVzdWFsbHkgdGhpcyBpcwogICAgZGVzaXJlYWJsZSwgc28gdGhlIGZvbGxvd2luZyBwYXRjaCBhZGRzIHRoaXMgdGhpcyBvcHRpb24gdG8gdGhlIGJvYXJkCiAgICBjb25maWcuCgogICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhNzI0YTliNDBjN2ZiZWI2YWRlMTkzY2E1MjMyMWI0NDFlYWVjYjRlCkF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFybGlueC5jb20+CkRhdGU6CVNhdCBPY3QgMjcgMTI6NDg6MTUgMjAwNyAtMDQwMAoKICAgIEZpeC9lbmhhbmNlIEVDQyBQT1NUIGZvciA0NDBFUHgvR1J4CgogICAgVGhpcyBwYXRjaCBhbGxvd3MgdGhlIEVDQyBQT1NUIHRvIGJlIHVzZWQgZm9yIGRpZmZlcmVudCBib2FyZHMgd2l0aCB0aGUKICAgIFBQQzQ0MCBEZW5hbGkgU0RSQU0gY29udHJvbGxlci4gIE1vZGlmaWNhdGlvbnMgaW5jbHVkZSBza2lwcGluZyB0aGUgdGVzdAogICAgaWYgRUNDIGlzIG5vdCBlbmFibGVkIChhcyBmb3Igbm9uLUVDQyBESU1NcykgYW5kIGFkZGluZyBzeW5jaHJvbml6YXRpb24KICAgIHRvIHByZXZlbnQgdGltaW5nIGVycm9ycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KCmNvbW1pdCA0NTRhNmNmOGQ0OThmNzBkMmIzZTE4ZjA3ODM3NjAzZWIyNGIxMmQ0CkF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFybGlueC5jb20+CkRhdGU6CVNhdCBPY3QgMjcgMTI6NDg6MDUgMjAwNyAtMDQwMAoKICAgIFBQQzR4eDogTW92ZS9yZW5hbWUgRUNDIFBPU1QgZm9yIDQ0MEVQeC9HUngKCiAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KCmNvbW1pdCBjMjlkMmQzNjgwMDQ2ZDQzMDAyMmM1NWU1MGZjYjI3ZjU4NjY1MTdlCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CUZyaSBEZWMgMTQgMTE6MjA6MzMgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogdXNlIGNvcnJlY3QgaW8gYWNjZXNzb3JzIGZvciA0eHggZXRoZXJuZXQgUE9TVAoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IGJhNzlmZGU1OGE0OGMwYTZmZjhlMmE5NmNhYmE5NTE1OTQxNDIyMDMKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJRnJpIERlYyAxNCAxMToxOTo1NiAyMDA3ICswMTAwCgogICAgcHBjNHh4OiBmaXggZmx1c2ggKyBpbnZhbGlkYXRlX2RjYWNoZV9yYW5nZSBhcmd1bWVudHMKCiAgICBmbHVzaCArIGludmFsaWRhdGVfZGNhY2hlX3JhbmdlKCkgZXhwZWN0IHRoZSBzdGFydCBhbmQgc3RvcCsxIGFkZHJlc3MuCiAgICBTbyB0aGUgc3RvcCBhZGRyZXNzIGlzIHRoZSBmaXJzdCBhZGRyZXNzIGJlaGluZCAoISkgdGhlIHJhbmdlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDg3MWU2Y2UxODhhN2M2YmM3MzIxYmNmODM3Mjg1NzAzNWQyMGYxY2QKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBEZWMgMTQgMDg6NDE6MjkgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogZmR0OiB1c2UgZmR0X2ZpeHVwX2V0aGVybmV0KCkKCiAgICBCeSB1c2luZyBhbGlhc2VzIGluIHRoZSBkdHMgZmlsZSwgdGhlIGV0aGVybmV0IG5vZGUgZml4dXAgaXMKICAgIG11Y2ggZWFzaWVyIHdpdGggdGhlIHJlY2VudGx5IGFkZGVkIGZ1bmN0aW9ucy4KCiAgICBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBkdHMgZmlsZSBuZWVkcyB0aGUgYWxpYXNlcyBmb3IgdGhpcyB0byB3b3JrLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxMzYyODg4NDdlM2IwNGYyZmYzNTdhMDY3YWQ0NWUxMGFmYTBhMjRjCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgRGVjIDEzIDE0OjUyOjUzIDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IEJyaW5nIDR4eCBmZHQgc3VwcG9ydCB1cC10by1kYXRlCgogICAgVGhpcyBwYXRjaCB1cGRhdGUgdGhlIDR4eCBmZHQgc3VwcG9ydC4gSXQgZW5hYmxlZCBmZHQgYm9vdGluZwogICAgb24gdGhlIEFNQ0MgS2lsYXVlYSBhbmQgU2VxdW9pYSBmb3Igbm93LiBNb3JlIGNhbiBmb2xsb3cgbGF0ZXIKICAgIHF1aXRlIGVhc2lseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMGRjODBlMjc1OWZiYTg1OWNjYzRjZGFkYzYzMzU3N2NhMjk3MWYzZQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IERlYyAyNyAwNzo1MDo1NCAyMDA3ICswMTAwCgogICAgY2ZpX2ZsYXNoOiBBZGQgbWlzc2luZyBjaGVjayBmb3IgZXJhc2VkIGRlc3QgdG8gZmxhc2hfd3JpdGVfY2ZpYnVmZmVyKCkKCiAgICBUaGUgY2hlY2sgZm9yIGFuIHN1ZmZpY2llbnRseSBlcmFzZWQgZGVzdGluYXRpb24gd2FzIG1pc3NpbmcgaW4gdGhlCiAgICBidWZmZXJlZCB3cml0ZSBmdW5jdGlvbiBvZiB0aGUgY2ZpIGZsYXNoIGRyaXZlciAod2hlbgogICAgQ0ZHX0ZMQVNIX1VTRV9CVUZGRVJfV1JJVEUgaXMgZGVmaW5lZCkuIFRoaXMgcGF0Y2ggYWRkcyB0aGlzIGNoZWNrIHRvIHRoYXQKICAgIHdyaXRpbmcgdG8gc3VjaCBhIHJlZ2lvbiB3aWxsIGZhaWwgd2l0aCB0aGUgY3VycmVjdCBlcnJvciBtZXNzYWdlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzM2VkNzNiYzBlMzhkMGYyYjVjMTgzZDQ2MjlkOGYyMDdlNWI5OTk0CkF1dGhvcjogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+CkRhdGU6CU1vbiBOb3YgMTIgMTA6NTY6MTcgMjAwNyArMDEwMAoKICAgIFNvbWUgY29uZmlndXJhdGlvbiB1cGRhdGVzIGZvciB0aGUgVFFNNTIwMCBiYXNlZCBUQjUyMDAgYm9hcmQ6CgogICAgLSBlbmFibGUgY29tbWFuZCBsaW5lIGhpc3RvcnkKICAgIC0gaW5jcmVhc2UgbWFsbG9jIHNwYWNlIChiZWNhdXNlIG9mIGJpZ2dlciBmbGFzaCBzZWN0b3JzKQoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgoKY29tbWl0IGUzMThkOWU5MDIxYTBhZjc1MDgxNzFmODRlZDA5ZDBlNzlmMDI4NGUKQXV0aG9yOiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KRGF0ZToJVGh1IFNlcCAyNyAxMToxMDowOCAyMDA3ICswMjAwCgogICAgVFFNOHh4OiB1c2UgdGhlIENGSSBmbGFzaCBkcml2ZXIgb24gYWxsIFRRTTh4eCBib2FyZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KCmNvbW1pdCAxMWQ5ZWVjNDc5YjQ3MGVhYjkyNDJhYjkzN2ZjYTcwYTg3NmQ5Mzc2CkF1dGhvcjogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+CkRhdGU6CVdlZCBTZXAgMjYgMTc6NTU6NTYgMjAwNyArMDIwMAoKICAgIFRRTTg4NUQ6IGFkanVzdCBmb3IgZG91YmxlZCBmbGFzaCBzZWN0b3Igc2l6ZSArIHNvbWUgbWlub3IgZml4ZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KCmNvbW1pdCAyMmQxYTU2Y2JmYjBiZmYzNGY0NzdiNGRiNmE1NWQwNzZkODI5YjgzCkF1dGhvcjogSmVucyBHZWhybGVpbiA8amVucy5nZWhybGVpbkB0cXMuZGU+CkRhdGU6CVdlZCBTZXAgMjYgMTc6NTU6NTQgMjAwNyArMDIwMAoKICAgIFRRTTg4NUQ6IEV4Y2hhbmdlZCBTRFJBTSB0aW1pbmcgYnkgYSBtb3JlIHJlbGF4ZWQgdGltaW5nLgoKICAgIENBUy1MYXRlbmN5PTIsIFdyaXRlIFJlY292ZXJ5IFRpbWUgdFdSPTIKICAgIFRoZSBtYXguIHN1cHBvcnRlZCBidXMgZnJlcXVlbmN5IGlzIDY2IE1Iei4gVGhlcmVmb3JlLCBjaGFuZ2VkCiAgICB0aHJlc2hvbGQgdG8gc3dpdGNoIGZyb20gMToxIG1vZGUgdG8gMjoxIGZyb20gODAgTUh6IHRvIDY2IE1Iei4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KCmNvbW1pdCBiOTg4YjhjZDQ0Mzk4OWJlNjUxNjE4ODhlZWEwMTI3YWQwM2Y4NDZmCkF1dGhvcjogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+CkRhdGU6CVdlZCBTZXAgMjYgMTc6NTU6NTYgMjAwNyArMDIwMAoKICAgIFRRTTg4NUQ6IHVzZSBjYWxjdWxhdGVkIGNwdWNsayBpbnN0ZWFkIG9mIG1lYXN1cmluZyBpdAoKICAgIE9uIHRoZSBUUU04ODVEIHRoZSBtZWFzdXJlbWVudCBvZiBjcHVjbGsgd2l0aCB0aGUgUElUIHJlZmVyZW5jZQogICAgdGltZXIgaXN0IG5vdCBuZWNlc3NhcnkuIFNpbmNlIGFsbCBtb2R1bGUgdmFyaWFudHMgdXNlIHRoZSBzYW1lCiAgICBleHRlcm5hbCAxMCBNSHogb3NjaWxsYXRvciwgdGhlIGNwdWNsayBvbmx5IGRlcGVuZHMgb24gdGhlIFBMTAogICAgY29uZmlndXJhdGlvbiAtIHdoaWNoIGlzIHJlYWRhYmxlIGJ5IHNvZnR3YXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgoKY29tbWl0IDQ5MmM3MDQ5ODY5MzQ4ZDMxMTY4ZGU4ZGFkODk2NTEzMTVlNDY4ZTAKQXV0aG9yOiBKZW5zIEdlaHJsZWluIDxqZW5zLmdlaHJsZWluQHRxcy5kZT4KRGF0ZToJVGh1IFNlcCAyNyAxNDo1NDo0NiAyMDA3ICswMjAwCgogICAgVFFNODg1RDogZml4IFNEUkFNIHJlZnJlc2gKCiAgICBBdCAxMzMgTUh6IHRoZSBjdXJyZW50IFNEUkFNIHJlZnJlc2ggcmF0ZSBpcyB0b28gZmFzdAogICAgKG1lYXN1cmVkIDQgKiAxLjE3IHVzKS4KICAgIENGR19NQU1SX1BUQSBjaGFuZ2VzIGZyb20gMzkgdG8gMTI4LiBUaGlzIHJlc3VsdAogICAgaW4gYSByZWZyZXNoIHJhdGUgb2YgNCAqIDcuOCB1cyBhdCB0aGUgZGVmYXVsdCBjbG9jawogICAgNjYgTUh6LiBBdCAxMzMgTUh6IHRoZSB2YWx1ZSB3aWxsIGJlIHRoZW4gNCAqIDMuOCB1cy4KICAgIFRoaXMgaXMgYSBjb21wcm9taXNlIHVudGlsIGEgbmV3IG1ldGhvZCBpcyBmb3VuZCB0bwogICAgYWRqdXN0IHRoZSByZWZyZXNoIHJhdGUuCgogICAgU2lnbmVkLW9mZi1ieTogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+Cgpjb21taXQgZGFiYWQ0YjliYzQ2OTA4ZTMwMWY3M2NlNzZiMzhiMjM2MjZhOTZlOQpBdXRob3I6IEplbnMgR2VocmxlaW4gPGplbnMuZ2VocmxlaW5AdHFzLmRlPgpEYXRlOglUaHUgU2VwIDI3IDE0OjU0OjQ2IDIwMDcgKzAyMDAKCiAgICBUUU04NjBNOiBTdXBwb3J0IGZvciAxMGNvbCBTRFJBTXMsIG1heC4gMTI4IE1pQgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgoKY29tbWl0IDYxZmIxNWM1MTZmZWY1NjMxZTMwNWYxOTc2ZDdiM2E2Nzk3MjU4NTYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgRGVjIDI3IDAxOjUyOjUwIDIwMDcgKzAxMDAKCiAgICBGaXggY29kaW5nIHN0eWxlIGlzc3VlczsgdXBkYXRlIENIQU5HRUxPRy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDQ2N2JjZWUxMWZlMjZhZDQyMmYyZGU5NzFhYTcwODY2MDc5ODcwZjIKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJRnJpIERlYyAxNCAxNTozNjoxOCAyMDA3ICswMTAwCgogICAgY2ZpX2ZsYXNoOiBBZGQgbWFudWZhY3R1cmVyLXNwZWNpZmljIGZpeHVwcwoKICAgIFJ1biBmaXh1cHMgYmFzZWQgb24gdGhlIEpFREVDIG1hbnVmYWN0dXJlciBJRCBpbmRlcGVuZGVudCBvZiB0aGUKICAgIGNvbW1hbmQgc2V0IElELgoKICAgIFRoaXMgY2hhbmdlcyBjdXJyZW50IGJlaGF2aW91cjogUHJldmlvdXNseSwgZ2VvbWV0cnkgcmV2ZXJzYWwgZm9yIEFNRAogICAgY2hpcHMgd2VyZSBkb25lIGJhc2VkIG9uIHRoZSBjb21tYW5kIHNldCBJRCwgd2hpbGUgdGhleSBhcmUgbm93IGRvbmUKICAgIGJhc2VkIG9uIHRoZSBKRURFQyBtYW51ZmFjdHVyZXIgYW5kIGRldmljZSBJRC4KCiAgICBBbHNvIGFkZCBmaXh1cCBmb3IgdG9wLWJvb3QgQXRtZWwgY2hpcHMuIEEgZml4dXAgaXMgbmVlZGVkIGZvcgogICAgQVQ0OUJWNjQxNihUKSB0b28sIGJ1dCBzaW5jZSB1LWJvb3QgY3VycmVudGx5IG9ubHkgcmVhZHMgdGhlIGxvdyBieXRlCiAgICBvZiB0aGUgZGV2aWNlIElELCB0aGVyZSdzIG5vIHdheSB0byB0ZWxsIGl0IGFwYXJ0IGZyb20gQVQ0OUJWNjQyRCwKICAgIHdoaWNoIHNob3VsZCBub3QgaGF2ZSB0aGlzIGZpeHVwLiBTaW5jZSBBVDQ5QlY2NDJEIHN1cHBvcnQgaXMKICAgIG5lY2Vzc2FyeSB0byBnZXQgQVROR1cxMDAgYm9hcmQgc3VwcG9ydCBpbnRvIG1haW5saW5lLCBJJ3ZlIGNvbW1lbnRlZAogICAgb3V0IHRoZSBmaXh1cCBmb3Igbm93LgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDBkZGYwNmRkZjZiNGJkMDU3YWQ0YzVmMGRmZmVhNzg3MGJhMDZhMmEKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJRnJpIERlYyAxNCAxNTozNjoxNyAyMDA3ICswMTAwCgogICAgY2ZpX2ZsYXNoOiBBZGQgY21kc2V0LXNwZWNpZmljIGluaXQgZnVuY3Rpb25zCgogICAgTW92ZSB0aGluZ3MgbGlrZSByZWFkaW5nIEpFREVDIElEcyBhbmQgZml4aW5nIHVwIGdlb21ldHJ5IHJldmVyc2FsCiAgICBpbnRvIHNlcGFyYXRlIGZ1bmN0aW9ucy4gVGhlIGdlb21ldHJ5IHJldmVyc2FsIGZpeHVwIGlzIG5vdyBwZXJmb3JtZWQKICAgIGJ5IGFsdGVyaW5nIHRoZSBxcnkgc3RydWN0dXJlIGRpcmVjdGx5LCB3aGljaCBtYWtlcyB0aGUgc2VjdG9yIGluaXQKICAgIGNvZGUgc2xpZ2h0bHkgY2xlYW5lci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBlMjM3NDFmNGE2ZDgwNDc1MjBlZjBkNDk3MTc2Mjc0OWIzNTg3ZDMyCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CUZyaSBEZWMgMTQgMTU6MzY6MTYgMjAwNyArMDEwMAoKICAgIGNmaV9mbGFzaDogUmVhZCB3aG9sZSBRUlkgc3RydWN0dXJlIGluIG9uZSBnbwoKICAgIFJlYWQgb3V0IHRoZSB3aG9sZSBDRkkgU3RhbmRhcmQgUXVlcnkgc3RydWN0dXJlIGFmdGVyIHN1Y2Nlc3NmdWwgY2ZpCiAgICBpZGVudGlmaWNhdGlvbi4gVGhpcyBhbGxvd3Mgc3Vic2VxdWVudCBjb2RlIHRvIGFjY2VzcyB0aGlzIGluZm9ybWF0aW9uCiAgICBkaXJlY3RseSB3aXRob3V0IGhhdmluZyB0byBnbyB0aHJvdWdoIGZsYXNoX3JlYWRfdWNoYXIoKSBhbmQgZnJpZW5kcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBkZjljMjVlYTA0YjM4YTBlMDVkNGY4YzczYzVjYzE0NGNkYWZhN2RiCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CU1vbiBEZWMgMTcgMTE6MDI6NDQgMjAwNyArMDEwMAoKICAgIEFWUjMyOiBGaXggbG9naWMgaW52ZXJzaW9uIGluIGRpc2FibGVfaW50ZXJydXB0cygpCgogICAgZGlzYWJsZV9pbnRlcnJ1cHRzKCkgc2hvdWxkIHJldHVybiBub256ZXJvIGlmIGludGVycnVwdHMgd2VyZQogICAgX2VuYWJsZWRfIGJlZm9yZSwgbm90IGRpc2FibGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGFjYWM0NzUyMTJjYmVkYjE3YjMyMWEzNjNhMWM4NzhlMmI0N2IzN2YKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJRnJpIERlYyAxNCAxNjo1MToyMiAyMDA3ICswMTAwCgogICAgQVZSMzI6IEVuYWJsZSBpbnRlcnJ1cHRzIGF0IGJvb3R1cAoKICAgIFRoZSB0aW1lciBjb2RlIGRlcGVuZHMgb24gdGhlIHRpbWVyIGludGVycnVwdCB0byBrZWVwIHRyYWNrIG9mIHRoZQogICAgdXBwZXIgMzIgYml0cyBvZiB0aGUgY3ljbGUgY291bnRlci4gVGhpcyBvYnZpb3VzbHkgZG9lc24ndCB3b3JrIHdoZW4KICAgIGludGVycnVwdHMgYXJlIGRpc2FibGVkIHRoZSB3aG9sZSB0aW1lLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDk1NzBiY2Q4N2Y0ZGIyNTU1MTRmNDNiNjcwMTc0NmM0MTJmOGZlZjAKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJVGh1IE5vdiAxNSAxMDowMzo0NSAyMDA3ICswMTAwCgogICAgQVZSMzI6IEZpeCB3cm9uZyBwaW4gc2V0dXAgZm9yIFVTQVJUMwoKICAgIEFzIHJlcG9ydGVkIGJ5IEdlcmhhcmQgQmVyZ2hvZmVyOgoKICAgIGluICJncGlvX2VuYWJsZV91c2FydDMiIHRoZSBjb3JyZWN0IHBpbnMgZm9yIFVTQVJUIDMgYXJlIFBCMTcgYW5kIFBCMTgKICAgIGluc3RlYWQgb2YgUEIxOCBhbmQgUEIxOS4KCiAgICB3aGljaCBpcyBvYnZpb3VzbHkgY29ycmVjdC4gVGhlcmUncyBjdXJyZW50bHkgbm8gY29kZSB0aGF0IHVzZXMKICAgIFVTQVJUMywgYnV0IGN1c3RvbSBib2FyZHMgbWF5IHJ1biBpbnRvIHByb2JsZW1zLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDA5ZWEwZGUwM2RjYzNlZTdhZjA0NWIwYjU3MjIyN2JkYTJjMWM5MTgKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJVGh1IE5vdiAxIDEyOjQ0OjIwIDIwMDcgKzAxMDAKCiAgICBSRUFETUU6IFJlbW92ZSBBVFNUSzEwMDAgZGF1Z2h0ZXJib2FyZCBsaXN0CgogICAgQXMgbm90ZWQgYnkgS2ltIFBoaWxsaXBzLCB0aGVzZSBsaXN0cyB0ZW5kIHRvIGJlY29tZSBvdXQgb2YgZGF0ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBjODFjYmJhZDIxY2IwYWU5ODNlMmU3OTYyMTEyMDIyMzRjZGM4YmUyCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVR1ZSBPY3QgMzAgMTQ6NTY6MzYgMjAwNyArMDEwMAoKICAgIEFkZCBBVFNUSzEwMFsyMzRdIHRvIE1BSU5UQUlORVJTCgogICAgQWRkIGFsbCB0aGUgQVRTVEsxMDAwIGRhdWdodGVyYm9hcmRzIHRvIE1BSU5UQUlORVJTIGFsb25nIHdpdGggdGhlaXIKICAgICJtb3RoZXIiLiBBbHNvIHVwZGF0ZSB0aGUgZW50cnkgZm9yIEFUU1RLMTAwMCB0byBiZSBub3Qgb25seSBhYm91dCB0aGUKICAgIEFQNzAwMCBDUFU7IGl0J3MgaW50ZW5kZWQgdG8gaGFuZGxlIGFsbCBDUFVzIGluIHRoZSBBVDMyQVAgZmFtaWx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDY0ZmYyMzU3YjE3MjcyMTM4MDM1OTE4MTNkYmM3NzljOTI0YmY3NzIKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJTW9uIE9jdCAyOSAxMzowMjo1NCAyMDA3ICswMTAwCgogICAgQVZSMzI6IEFkZCBzdXBwb3J0IGZvciB0aGUgQVRTVEsxMDA0IGJvYXJkCgogICAgQVRTVEsxMDA0IGlzIGEgZGF1Z2h0ZXJib2FyZCBmb3IgQVRTVEsxMDAwIHdpdGggdGhlIEFUMzJBUDcwMDIgQ1BVLAogICAgd2hpY2ggaXMgYSBkZXJpdmF0aXZlIG9mIEFUMzJBUDcwMDAuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgNjY3NTY4ZGIxNTdmMzc0Yjg1YWJkN2UwMzU5NmRkZDFmMGIyNTY4MQpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglNb24gT2N0IDI5IDEzOjAyOjU0IDIwMDcgKzAxMDAKCiAgICBBVlIzMjogQWRkIHN1cHBvcnQgZm9yIHRoZSBBVFNUSzEwMDMgYm9hcmQKCiAgICBBVFNUSzEwMDMgaXMgYSBkYXVnaHRlcmJvYXJkIGZvciBBVFNUSzEwMDAgd2l0aCB0aGUgQVQzMkFQNzAwMSBDUFUsCiAgICB3aGljaCBpcyBhIGRlcml2YXRpdmUgb2YgQVQzMkFQNzAwMC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCA1ZmVlODRhNzk0YTUxZWM4MzA1NDhjZGE0ODVhNzcwZWZiMDE4YjkyCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CU1vbiBPY3QgMjkgMTM6MjM6MzMgMjAwNyArMDEwMAoKICAgIEFWUjMyOiBNYWtlIHNvbWUgQVQzMkFQNzAweCBwZXJpcGhlcmFscyBvcHRpb25hbAoKICAgIEFkZCBhIGNoaXAtZmVhdHVyZXMgZmlsZSBwcm92aWRpbmcgZGVmaW5pdGlvbnMgb2YgdGhlIGZvcm0KCiAgICBBVDMyQVA3MDB4X0NISVBfSEFTXzxwZXJpcGhlcmFsPgoKICAgIHRvIGluZGljYXRlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhlIGdpdmVuIHBlcmlwaGVyYWwgb24gdGhlIGN1cnJlbnRseQogICAgc2VsZWN0ZWQgY2hpcC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCAzNmYyOGY4YTk2MDVlZTVkY2ZhMzMwNDgyY2ZjNjIxNzEyNjFhZjk3CkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CU1vbiBPY3QgMjkgMTM6MDk6NTYgMjAwNyArMDEwMAoKICAgIEFWUjMyOiBSZW5hbWUgYXQzMmFwNzAwMCAtPiBhdDMyYXA3MDB4CgogICAgVGhlIFNvQy1zcGVjaWZpYyBjb2RlIGZvciBhbGwgdGhlIEFUMzJBUDcwMHggQ1BVcyBpcyBwcmFjdGljYWxseQogICAgaWRlbnRpY2FsOyB0aGUgb25seSBkaWZmZXJlbmNlIGlzIHRoYXQgc29tZSBjaGlwcyBoYXZlIGxlc3MgZmVhdHVyZXMKICAgIHRoYW4gb3RoZXJzLiBCeSBkb2luZyB0aGlzIHJlbmFtZSwgd2UgY2FuIGFkZCBzdXBwb3J0IGZvciB0aGUgQVA3MDAwCiAgICBkZXJpdmF0aXZlcyBzaW1wbHkgYnkgbWFraW5nIHNvbWUgZmVhdHVyZXMgY29uZGl0aW9uYWwuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgNGQ1ZmE5OWM3M2YzNTRlN2NmOTg1ZWZjZjQxN2VhNTVjYTJmNmE1ZQpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglGcmkgSnVuIDI5IDE4OjIyOjM0IDIwMDcgKzAyMDAKCiAgICBhdG1lbF9tY2k6IFNob3cgU1Igd2hlbiBibG9jayByZWFkIGZhaWxzCgogICAgU2hvdyBjb250cm9sbGVyIHN0YXR1cyBhcyB3ZWxsIGFzIGNhcmQgc3RhdHVzIHdoZW4gYW4gZXJyb3Igb2NjdXJzCiAgICBkdXJpbmcgYmxvY2sgcmVhZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCA4Njk3ZTZhMTliMTBmNTE0NTExYjZhOWM4NmRlODhiZDEwOGM0ZjhkCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgRGVjIDEzIDE0OjUyOjUzIDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IEJyaW5nIDR4eCBmZHQgc3VwcG9ydCB1cC10by1kYXRlCgogICAgVGhpcyBwYXRjaCB1cGRhdGUgdGhlIDR4eCBmZHQgc3VwcG9ydC4gSXQgZW5hYmxlZCBmZHQgYm9vdGluZwogICAgb24gdGhlIEFNQ0MgS2lsYXVlYSBhbmQgU2VxdW9pYSBmb3Igbm93LiBNb3JlIGNhbiBmb2xsb3cgbGF0ZXIKICAgIHF1aXRlIGVhc2lseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMTJkMzBhYTc5Nzc5YzJhYTdhOTk4YmJhZTRjMDc1ZjgyMmE1MzAwNApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglUaHUgRGVjIDEzIDEyOjU2OjM0IDIwMDcgKzAxMDAKCiAgICBjZmlfZmxhc2g6IFVzZSBtYXBfcGh5c21lbSgpIGFuZCB1bm1hcF9waHlzbWVtKCkKCiAgICBVc2UgbWFwX3BoeXNtZW0oKSBhbmQgdW5tYXBfcGh5c21lbSgpIHRvIGNvbnZlcnQgZnJvbSBwaHlzaWNhbCB0bwogICAgdmlydHVhbCBhZGRyZXNzZXMuIFRoaXMgZ2l2ZXMgdGhlIGFyY2ggYSBjaGFuY2UgdG8gcHJvdmlkZSBhbiB1bmNhY2hlZAogICAgbWFwcGluZyBmb3IgZmxhc2ggYWNjZXNzZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgNGQ3ZDY5MzZlYjI5YWY3Y2NhMzMwOTM3ODA4MzEyYWE1ZjYxNDU0ZApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglUaHUgRGVjIDEzIDEyOjU2OjMzIDIwMDcgKzAxMDAKCiAgICBJbnRyb2R1Y2UgbWFwX3BoeXNtZW0oKSBhbmQgdW5tYXBfcGh5c21lbSgpCgogICAgbWFwX3BoeXNtZW0oKSByZXR1cm5zIGEgdmlydHVhbCBhZGRyZXNzIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGFjY2VzcyBhCiAgICBnaXZlbiBwaHlzaWNhbCBhZGRyZXNzIHdpdGhvdXQgaW52b2x2aW5nIHRoZSBjYWNoZS4gdW5tYXBfcGh5c21lbSgpCiAgICBzaG91bGQgYmUgY2FsbGVkIHdoZW4gdGhlIHZpcnR1YWwgYWRkcmVzcyByZXR1cm5lZCBieSBtYXBfcGh5c21lbSgpIGlzCiAgICBubyBsb25nZXIgbmVlZGVkLgoKICAgIFRoaXMgcGF0Y2ggYWRkcyBhIHN0dWIgaW1wbGVtZW50YXRpb24gd2hpY2ggc2ltcGx5IHJldHVybnMgdGhlCiAgICBwaHlzaWNhbCBhZGRyZXNzIGNhc3QgdG8gYSB1Y2hhciAqIGZvciBhbGwgYXJjaGl0ZWN0dXJlcyBleGNlcHQgQVZSMzIsCiAgICB3aGljaCBjb252ZXJ0cyB0aGUgcGh5c2ljYWwgYWRkcmVzcyB0byBhbiB1bmNhY2hlZCB2aXJ0dWFsIG1hcHBpbmcuCiAgICB1bm1hcF9waHlzbWVtKCkgaXMgYSBuby1vcCBvbiBhbGwgYXJjaGl0ZWN0dXJlcywgYnV0IGlmIGFueQogICAgYXJjaGl0ZWN0dXJlIG5lZWRzIHRvIGRvIHN1Y2ggbWFwcGluZ3MgdGhyb3VnaCB0aGUgVExCLCB0aGlzIGlzIHRoZQogICAgaG9vayB3aGVyZSB0aG9zZSBUTEIgZW50cmllcyBjYW4gYmUgaW52YWxpZGF0ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgY2RiYWVmYjVmNWYwM2U1NDQ1NWQwNDM5ZGNmNmRiZDk3ZWFkMWY5ZApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglUaHUgRGVjIDEzIDEyOjU2OjMyIDIwMDcgKzAxMDAKCiAgICBjZmlfZmxhc2g6IEludHJvZHVjZSByZWFkIGFuZCB3cml0ZSBhY2Nlc3NvcnMKCiAgICBJbnRyb2R1Y2UgZmxhc2hfcmVhZHs4LDE2LDMyLDY0KSBhbmQgZmxhc2hfd3JpdGV7OCwxNiwzMiw2NH0gYW5kIHVzZQogICAgdGhlbSB0byBhY2Nlc3MgdGhlIGZsYXNoIG1lbW9yeS4gVGhpcyBtYWtlcyBpdCBjbGVhcmVyIHdoZW4gdGhlIGZsYXNoCiAgICBpcyBhY3R1YWxseSBiZWluZyBhY2Nlc3NlZDsgbWVyZWx5IGRlcmVmZXJlbmNpbmcgYSB2b2xhdGlsZSBwb2ludGVyCiAgICBsb29rcyBqdXN0IGxpa2UgYW55IG90aGVyIGtpbmQgb2YgYWNjZXNzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDgxMjcxMWNlNmIzYTM4NjEyNWRjZjBkNmE1OTU4OGU0NjFhYmJiODcKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJVGh1IERlYyAxMyAxMjo1NjozMSAyMDA3ICswMTAwCgogICAgSW1wbGVtZW50IF9fcmF3X3tyZWFkLHdyaXRlfVtid2xdIG9uIGFsbCBhcmNoaXRlY3R1cmVzCgogICAgVGhpcyBhZGRzIGltcGxlbWVudGF0aW9ucyBvZiBfX3Jhd19yZWFkW2J3bF0gYW5kIF9fcmF3X3dyaXRlW2J3bF0gdG8KICAgIG02OGssIHBwYywgbmlvcyBhbmQgbmlvczIuIFRoZSBtNjhrIGFuZCBwcGMgaW1wbGVtZW50YXRpb25zIHdlcmUgdGFrZW4KICAgIGZyb20gTGludXguCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgYmU2MGE5MDIxYzgyZmM1YWVjZDViMmIxZmM5NmY3MGE5YzgxYmJjZApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglTYXQgT2N0IDYgMTg6NTU6MzYgMjAwNyArMDIwMAoKICAgIGNmaV9mbGFzaDogUmVvcmRlciBmdW5jdGlvbnMgYW5kIGVsaW1pbmF0ZSBleHRyYSBwcm90b3R5cGVzCgogICAgUmVvcmRlciB0aGUgZnVuY3Rpb25zIGluIGNmaV9mbGFzaC5jIHNvIHRoYXQgZWFjaCBmdW5jdGlvbiBvbmx5IHVzZXMKICAgIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBkZWZpbmVkIGJlZm9yZSBpdC4gVGhpcyBhbGxvd3MgdGhlIHN0YXRpYwogICAgcHJvdG90eXBlIGRlY2xhcmF0aW9ucyBuZWFyIHRoZSB0b3AgdG8gYmUgZWxpbWluYXRlZCBhbmQgbWlnaHQgYWxsb3cKICAgIGdjYyB0byBkbyBhIGJldHRlciBqb2IgaW5saW5pbmcgZnVuY3Rpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDMwNTU3OTNiY2JkZjI0YjFmODExN2Y2MDZmZmI3NjZkMzJlYjc2NmYKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJVGh1IERlYyAxMyAxMjo1NjoyOSAyMDA3ICswMTAwCgogICAgY2ZpX2ZsYXNoOiBNYWtlIHNvbWUgbmVlZGxlc3NseSBnbG9iYWwgZnVuY3Rpb25zIHN0YXRpYwoKICAgIE1ha2UgZnVuY3Rpb25zIG5vdCBkZWNsYXJlZCBpbiBhbnkgaGVhZGVyIGZpbGUgc3RhdGljLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDdlNWI5YjQ3MTUxOGM1NjUyZmViYzY4YmE2MmI0MzIxOTNkNmFiZjQKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJVGh1IERlYyAxMyAxMjo1NjoyOCAyMDA3ICswMTAwCgogICAgY2ZpX2ZsYXNoOiBCcmVhayBsb25nIGxpbmVzCgogICAgVGhpcyBwYXRjaCB0cmllcyB0byBrZWVwIGFsbCBsaW5lcyBpbiB0aGUgY2ZpX2ZsYXNoIGRyaXZlciBiZWxvdyA4MAogICAgY29sdW1ucy4gVGhlcmUgYXJlIGEgZmV3IGxpbmVzIGxlZnQgd2hpY2ggZG9uJ3QgZml0IHRoaXMgcmVxdWlyZW1lbnQKICAgIGJlY2F1c2UgSSBjb3VsZG4ndCBmaW5kIGFueSB0cml2aWFsIHdheSB0byBicmVhayB0aGVtIChpLmUuIGl0IHdvdWxkCiAgICB0YWtlIHNvbWUgcmVzdHJ1Y3R1cmluZywgd2hpY2ggSSBpbnRlbmQgdG8gZG8gaW4gYSBsYXRlciBwYXRjaC4pCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgNDIwMjZjOWNiM2E3Njg0OWI0MWU2ZTI0YWJmYjdiNTY4MDdhNWMxYQpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVR1ZSBEZWMgMTEgMTM6NTk6NTcgMjAwNyArMDEwMAoKICAgIENGSTogc3luY2hyb25pemUgY29tbWFuZCBvZmZzZXRzIHdpdGggTGludXggQ0ZJIGRyaXZlcgoKICAgIEZpeGVzIG5vbi13b3JraW5nIENGSSBGbGFzaCBvbiB0aGUgSW5rYTR4MCBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDhmZjNkZTYxZmM1ZjliM2IyMTY0N2JjZTA4MWEzYjdmNzEwZjBkNGQKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglGcmkgRGVjIDcgMTI6MTc6MzQgMjAwNyAtMDYwMAoKICAgIEhhbmRsZSBNUEM4NXh4IFBDSWUgcmVzZXQgZXJyYXRhIChQQ0ktRXggMzgpCgogICAgT24gdGhlIE1QQzg1eHggYm9hcmRzIHRoYXQgaGF2ZSBQQ0llIGVuYWJsZSB0aGUgUENJZSBlcnJhdGEgZml4LgogICAgKE1QQzg1NDREUywgTVBDODU0OENEUywgTVBDODU2OE1EUykuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA4MmFjOGM5NzE0NWE0YzNiZjhiM2RiZmFkMDBmYTk2ZTkyMGY5YjljCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIERlYyA3IDEyOjA0OjMwIDIwMDcgLTA2MDAKCiAgICBVcGRhdGUgRnJlZXNjYWxlIE1QQzg1eHggQURTL0NEUy9NRFMgYm9hcmQgY29uZmlnCgogICAgKiBFbmFibGVkIENPTkZJR19DTURfRUxGCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBkNDM1NzkzMjI5Y2UyOWE0Mjc5N2MxZWRjMzlmNWIzNGY5ODdmOTFhCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIERlYyA3IDA0OjU5OjI2IDIwMDcgLTA2MDAKCiAgICBIYW5kbGUgQXN5bmNocm9ub3VzIEREUiBjbG9jayBvbiA4NXh4CgogICAgVGhlIE1QQzg1NzIgaW50cm9kdWNlcyB0aGUgY29uY2VwdCBvZiBhbiBhc3luY2hyb25vdXMgRERSIGNsb2NrIHdpdGgKICAgIHJlZ2FyZHMgdG8gdGhlIHBsYXRmb3JtIGNsb2NrLgoKICAgIEludHJvZHVjZSBnZXRfZGRyX2ZyZXEoKSB0byByZXBvcnQgdGhlIEREUiBmcmVxIHJlZ2FyZGxlc3Mgb2Ygc3luYy9hc3luYwogICAgbW9kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDIyYWJiMmQyZWFmN2I3OTVhNjkyM2M2MjczZWM5Y2I1M2ZkYTlhMTAKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgTm92IDI5IDEwOjM0OjI4IDIwMDcgLTA2MDAKCiAgICBVcGRhdGUgRnJlZXNjYWxlIE1QQzg1eHggQURTL0NEUy9NRFMgYm9hcmQgY29uZmlnCgogICAgKiBSZW1vdmVkIHNvbWUgbWlzYyBlbnZpcm9ubWVudCBzZXR1cAogICAgKiBFbmFibGVkIENPTkZJR19DTURMSU5FX0VESVRJTkcKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDQxNWE2MTNiYWJiODRkNWU1ZDViNDJlOGU1NTM4NjhjNzFmYzNhNjQKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgTm92IDI5IDEwOjQ3OjQ0IDIwMDcgLTA2MDAKCiAgICBNb3ZlIHRoZSBNUEM4NTQxL01QQzg1NTUvTVBDODU0OCBDRFMgYm9hcmQgdW5kZXIgYm9hcmQvZnJlZXNjYWxlLgoKICAgIE1pbm9yIHBhdGggY29ycmVjdGlvbnMgbmVlZGVkIHRvIGVuc3VyZSBidWlsZGFiaWxpdHkuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBjMmQ5NDNmZmJmZDMzNTliM2I0NWQxNzdiNDM3Mzc5ZDJjYjg2ZmJmCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IE5vdiAyOSAxMDoxNjoxOCAyMDA3IC0wNjAwCgogICAgTW92ZSB0aGUgTVBDODU0MCBBRFMgYm9hcmQgdW5kZXIgYm9hcmQvZnJlZXNjYWxlLgoKICAgIE1pbm9yIHBhdGggY29ycmVjdGlvbnMgbmVlZGVkIHRvIGVuc3VyZSBidWlsZGFiaWxpdHkuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA4NzBjZWFjNWIzYTM0ODZjMTA5Mzk2ZTAwNWFmODFhZTc2MmI1NzEwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IE5vdiAyOSAxMDoxNDo1MCAyMDA3IC0wNjAwCgogICAgTW92ZSB0aGUgTVBDODU2MCBBRFMgYm9hcmQgdW5kZXIgYm9hcmQvZnJlZXNjYWxlLgoKICAgIE1pbm9yIHBhdGggY29ycmVjdGlvbnMgbmVlZGVkIHRvIGVuc3VyZSBidWlsZGFiaWxpdHkuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBhY2JjYTg3NmZiM2ZlYzI1Y2Q5YzU1YjBlZmM4MWZmNjE4ZmY1MjYyCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IE5vdiAyOSAxMDoxMzo0NyAyMDA3IC0wNjAwCgogICAgTW92ZSB0aGUgTVBDODU2OCBNRFMgYm9hcmQgdW5kZXIgYm9hcmQvZnJlZXNjYWxlLgoKICAgIE1pbm9yIHBhdGggY29ycmVjdGlvbnMgbmVlZGVkIHRvIGVuc3VyZSBidWlsZGFiaWxpdHkuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBhODUzZDU2YzU5YjMzNDE1MzA0NTMxNDQzNjMzODA4NzM2YWNmYzZlCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IE5vdiAyOSAwMjoxODo1OSAyMDA3IC0wNjAwCgogICAgVXNlIHN0YW5kYXJkIExBV0FSX1RSR1RfSUZfKiBkZWZpbmVzIGZvciBMQVcgc2V0dXAgb24gODV4eAoKICAgIFdlIGFscmVhZHkgaGFkIGRlZmluZXMgZm9yIExBV0FSX1RSR1RfSUZfKiB0aGF0IHdlIHNob3VsZCB1c2UKICAgIHJhdGhlciB0aGFuIGNyZWF0aW5nIG5ldyBvbmVzLiAgQWxzbywgYWRkZWQgc29tZSBtaXNzaW5nIGRlZmluZXMgZm9yCiAgICBQQ0lFIHRhcmdldHMuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAwNGRiNDAwODkyZGEzN2I3NmE1ODVlMzMyYTBjMTM3OTU0YWQyMDE1CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IE5vdiAyOSAwMjoxMDowOSAyMDA3IC0wNjAwCgogICAgU3RvcCB1c2luZyBpbW1hcF90IG9uIDg1eHgKCiAgICBJbiB0aGUgZnV0dXJlIHRoZSBvZmZzZXRzIHRvIHZhcmlvdXMgYmxvY2tzIG1heSBub3QgYmUgaW4gc2FtZSBsb2NhdGlvbi4KICAgIE1vdmUgdG8gdXNpbmcgQ0ZHX01QQzg1eHhfKl9BRERSIGFzIHRoZSBiYXNlIG9mIHRoZSByZWdpc3RlcnMKICAgIGluc3RlYWQgb2YgZ2V0dGluZyBpdCB2aWEgJmltbWFwLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMjcxNDIyM2Y4ZTA0YWIzZTQxMzNmZjY1ODcyZWVmMzY2ZDkwYmZlYQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBOb3YgMjkgMDE6MjM6MDkgMjAwNyAtMDYwMAoKICAgIFJlbW92ZSBDT05GSUdfT0ZfRkxBVF9UUkVFIHJlbGF0ZWQgY29kZSBmcm9tIG1wYzg1eHggc2luY2Ugd2Ugbm93IHVzZSBsaWJmZHQKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGM0ODA4NjFiZjAwMDE1NmU2YTNlOTMyYzI1OGRiNTlmZjIyMTJkZDMKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgTm92IDI5IDAxOjA2OjE5IDIwMDcgLTA2MDAKCiAgICBVcGRhdGUgTVBDODU2OCBNRFMgdG8gdXNlIGxpYmZkdAoKICAgIFVwZGF0ZWQgdGhlIE1QQzg1NjggTURTIGNvbmZpZyB0byB1c2UgbGliZmR0IGFuZCBhc3N1bWUgdXNlIG9mIGFsaWFzZXMgZm9yCiAgICBldGhlcm5ldCwgcGNpLCBhbmQgc2VyaWFsIGZvciB0aGUgdmFyaW91cyBmaXh1cHMgdGhhdCBhcmUgZG9uZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDE1NjNmNTZlMGM2OGY2OTIwZjk1NjM4MmQ2ZDEzYmVlM2YwMWMwZjcKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTm92IDE0IDE1OjUyOjA2IDIwMDcgLTA1MDAKCiAgICBBZGQgUENJIEV4cHJlc3Mgc3VwcG9ydCBvbiBNUEM4NTY4TURTCgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYjkwZDI1NDk3NjI1YjkwZmZhM2YyOTExYTA4OTVjYTIzNzU1NmZmNQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBOb3YgMjkgMDA6MTE6NDQgMjAwNyAtMDYwMAoKICAgIFVwZGF0ZSBNUEM4NXh4IENEUyB0byB1c2UgbGliZmR0CgogICAgVXBkYXRlZCB0aGUgTVBDODV4eCBDRFMgY29uZmlnIHRvIHVzZSBsaWJmZHQgYW5kIGFzc3VtZSB1c2Ugb2YgYWxpYXNlcyBmb3IKICAgIGV0aGVybmV0LCBwY2ksIGFuZCBzZXJpYWwgZm9yIHRoZSB2YXJpb3VzIGZpeHVwcyB0aGF0IGFyZSBkb25lLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMGZkNWVjNjZiMTA1MjFhMDU3YWQ3M2U2OWFiNWYwZjllYWZiYTI1NQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBOb3YgMjggMjI6NTQ6MjcgMjAwNyAtMDYwMAoKICAgIFVwZGF0ZSBNUEM4NTQwIEFEUyB0byB1c2UgbGliZmR0CgogICAgVXBkYXRlZCB0aGUgTVBDODU0MCBBRFMgY29uZmlnIHRvIHVzZSBsaWJmZHQgYW5kIGFzc3VtZSB1c2Ugb2YgYWxpYXNlcyBmb3IKICAgIGV0aGVybmV0LCBwY2ksIGFuZCBzZXJpYWwgZm9yIHRoZSB2YXJpb3VzIGZpeHVwcyB0aGF0IGFyZSBkb25lLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNWNlNzE1ODAyZjZjNTBkYzc4YjM0MDViOTJmMTg0YjFlMzcxMDUxOQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBOb3YgMjggMjI6NDA6MzEgMjAwNyAtMDYwMAoKICAgIFVwZGF0ZSBNUEM4NTYwIEFEUyB0byB1c2UgbGliZmR0CgogICAgVXBkYXRlZCB0aGUgTVBDODU2MCBBRFMgY29uZmlnIHRvIHVzZSBsaWJmZHQgYW5kIGFzc3VtZSB1c2Ugb2YgYWxpYXNlcyBmb3IKICAgIGV0aGVybmV0LCBwY2ksIGFuZCBzZXJpYWwgZm9yIHRoZSB2YXJpb3VzIGZpeHVwcyB0aGF0IGFyZSBkb25lLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYWFmZWVmYmRiOGIwMjlmNWNhMmExOTU1OThkMGE1MDFhNjA2ZWVhOQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBOb3YgMjggMDA6MzY6MzMgMjAwNyAtMDYwMAoKICAgIFN0b3AgdXNpbmcgaW1tYXBfdCBmb3IgY3BtIG9mZnNldCBvbiA4NXh4CgogICAgSW4gdGhlIGZ1dHVyZSB0aGUgb2Zmc2V0cyB0byB2YXJpb3VzIGJsb2NrcyBtYXkgbm90IGJlIGluIHNhbWUgbG9jYXRpb24uCiAgICBNb3ZlIHRvIHVzaW5nIENGR19NUEM4NXh4X0NQTV9BRERSIGFzIHRoZSBiYXNlIG9mIHRoZSBDUE0gcmVnaXN0ZXJzCiAgICBpbnN0ZWFkIG9mIGdldHRpbmcgaXQgdmlhICZpbW1hcC0+aW1fY3BtLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZjU5YjU1YTViOGZjYWRhYTk5NzgxYmE0OGU3YTM4ZTk1NmFmYTUyNwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBOb3YgMjcgMjM6MjU6MDIgMjAwNyAtMDYwMAoKICAgIFN0b3AgdXNpbmcgaW1tYXBfdCBmb3IgZ3V0cyBvZmZzZXQgb24gODV4eAoKICAgIEluIHRoZSBmdXR1cmUgdGhlIG9mZnNldHMgdG8gdmFyaW91cyBibG9ja3MgbWF5IG5vdCBiZSBpbiBzYW1lIGxvY2F0aW9uLgogICAgTW92ZSB0byB1c2luZyBDRkdfTVBDODV4eF9HVVRTX0FERFIgYXMgdGhlIGJhc2Ugb2YgdGhlIGd1dHMgcmVnaXN0ZXJzCiAgICBpbnN0ZWFkIG9mIGdldHRpbmcgaXQgdmlhICZpbW1hcC0+aW1fZ3VyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNTBjMDNjOGNmNDk0ZDkxY2RlYzM5NjcwZDk1MzM3Yzc0M2UxNmVjOQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBOb3YgMjcgMjI6NDI6MzQgMjAwNyAtMDYwMAoKICAgIFVwZGF0ZSBNUEM4NTQ0IERTIGNvbmZpZwoKICAgICogUmVtb3ZlZCBIQVNfRVRIMi9IQVNfRVRIMyAtIE1QQzg1NDQgb25seSBoYXMgVFNFQzEvMgogICAgKiBSZW1vdmVkIHNvbWUgbWlzYyBlbnZpcm9ubWVudCBzZXR1cAogICAgKiBNb3ZlZCB0byB1c2luZyBmZHRmaWxlICYgZmR0YWRkciBhcyBmZHQgZW52IHZhciBuYW1lcwogICAgKiBFbmFibGVkIENPTkZJR19DTURMSU5FX0VESVRJTkcKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGFkZGNlNTdlMmU0YzQ5ZTc3ZmZiMjAyMGE4NDY5MDcxM2JiMThiNDcKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gTm92IDI2IDE3OjEyOjI0IDIwMDcgLTA2MDAKCiAgICBVcGRhdGUgTVBDODU0NERTIHRvIHVzZSBsaWJmZHQKCiAgICBVcGRhdGVkIHRoZSBNUEM4NTQ0RFMgY29uZmlnIHRvIHVzZSBsaWJmZHQgYW5kIGFzc3VtZSB1c2Ugb2YgYWxpYXNlcyBmb3IKICAgIGV0aGVybmV0LCBwY2ksIGFuZCBzZXJpYWwgZm9yIHRoZSB2YXJpb3VzIGZpeHVwcyB0aGF0IGFyZSBkb25lLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZjg1MmNlNzJmMTAwY2FiZDFmMTFjMjFjMDg1YTBhZDhlY2E5ZmI2NQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBOb3YgMjkgMDA6MTU6MzAgMjAwNyAtMDYwMAoKICAgIEFkZCBsaWJmZHQgYmFzZWQgZnRfY3B1X3NldHVwIGZvciBtcGM4NXh4CgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAzYjlhYmRjNDQ4YTFjMmM2YTRjMmFhMjkyNzI0YjRkMWEwNTE2NmE5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgRGVjIDExIDEzOjM4OjE5IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IENvcnJlY3QgR1BJTyBvZmZzZXQgaW4gZ3Bpb19jb25maWcoKQoKICAgIFRoYW5rcyB0byBHYXJ5IEplbm5lam9obiBmb3IgcG9pbnRpbmcgdGhpcyBvdXQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDg4MDlhMjcxM2IxY2VhZjNkYTU1ZDlkNzg1NDcwMjk0ZjE1ZGUwNmEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBEZWMgMTEgMTE6NDY6MDEgMjAwNyArMDEwMAoKICAgIHJ0YzogRml4IG1lcmdpbmcgcHJvYmxlbQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3Y2ZjMTJhN2RjZmRiMzUwZTJhYjc2ZGI0ZGFmY2MzMGY3ZTc3YzJiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgRGVjIDggMTQ6NDc6MzQgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogNDA1RVg6IENvcnJlY3RseSBlbmFibGUgVVNCIHBpbnMKCiAgICBUaGlzIHBhdGNoIHNlbGVjdHMgdGhlIFVTQiBkYXRhIHBpbnMgaW4gdGhlIDQwNUVYIEdQSU8gYW5kIE1GQyAobXVsdGkKICAgIGZ1bmN0aW9uIGNvbnRyb2wpIHJlZ2lzdGVycy4gVGhpcyBpcyBkb25lIGZvciB0aGUgQU1DQyBLaWxhdWVhIGFuZAogICAgTWFrYWx1IGV2YWwgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5NjkyYzI3MzRhNDdmMjNiNDRhMGY2ODA0MmEzZTJjYThkMWJmYjM5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgRGVjIDggMDg6MjU6MDkgMjAwNyArMDEwMAoKICAgIENGSTogQ29kaW5nIHN0eWxlIGNsZWFudXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODFiMjBjY2MyZDc5NWFlOWExMTk5ZGI1YTUwYWQ5YzI4ZDFlNGQyMgpBdXRob3I6IE1pY2hhZWwgU2Nod2luZ2VuIDxtaWNoYWVsQHNjaHdpbmdlbi5vcmc+CkRhdGU6CUZyaSBEZWMgNyAyMzozNTowMiAyMDA3ICswMTAwCgogICAgQ0ZJOiBzdXBwb3J0IEpFREVDIGZsYXNoIHJvbXMgaW4gQ0ZJLWZsYXNoIGZyYW1ld29yawoKICAgIFRoZSBmb2xsb3dpbmcgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBub24tQ0ZJIGZsYXNoIFJPTVMsIGJ5IGhvb2tpbmcgaW50byB0aGUKICAgIENGSSBmbGFzaCBjb2RlIGFuZCB1c2luZyBtb3N0IG9mIGl0cyBjb2RlLCBhcyByZWNlbnRseSBkaXNjdXNzZWQgaGVyZSBpbiB0aGUKICAgIHRocmVhZCAiTWl4aW5nIENGSSBhbmQgbm9uLUNGSSBmbGFzaHMiLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgU2Nod2luZ2VuIDxtaWNoYWVsQHNjaHdpbmdlbi5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYzAxYjE3ZGQ4NTZmYTEyMGIyOTcwZjUwZDk1OTg1NDZhNDkyN2VjMwpBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CVdlZCBOb3YgMjggMjE6MjQ6NTAgMjAwNyAtMDUwMAoKICAgIENvbmRpdGlvbmFsbHkgY29tcGlsZSBmZHRfZml4dXBfZXRoZXJuZXQoKQoKICAgIEZpeCBjb21waWxlciB3YXJuaW5nczogT24gYm9hcmRzIHRoYXQgZG9uJ3QgaGF2ZSBldGhlcm5ldHMgZGVmaW5lZCwKICAgIGRvbid0IGNvbXBpbGUgZmR0X2ZpeHVwX2V0aGVybmV0KCkuCgpjb21taXQgMjQ2ZDRhZTZiYzI4MmJjMTg0MTIyNGUxYzVmYzQ5ZGM5MjVlMGJmNwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBOb3YgMjcgMjE6NTk6NDYgMjAwNyAtMDYwMAoKICAgIENvbnZlcnQgYm9hcmRzIHRoYXQgc2V0IG1lbW9yeSBub2RlIHRvIHVzZSBmZHRfZml4dXBfbWVtb3J5KCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDE1MWM4YjA5YjM1ZWViZThmZDkxMzljYjZjMWQ5MWMyN2IyMmYwNTgKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gTm92IDI2IDE3OjA2OjE1IDIwMDcgLTA2MDAKCiAgICBBZGRlZCBmZHRfZml4dXBfc3Rkb3V0IHRoYXQgdXNlcyBhbGlhc2VzIHRvIHNldCBsaW51eCxzdGRvdXQtcGF0aAoKICAgIFdlIHVzZSBhIGNvbWJpbmF0aW9uIG9mIHRoZSBzZXJpYWxOIGFsaWFzIGFuZCBDT05GSUdfQ09OU19JTkRFWCB0bwogICAgZGV0ZXJtaW5lIHdoaWNoIHNlcmlhbCBhbGlhcyB3ZSBzaG91bGQgc2V0IGxpbnV4LHN0ZG91dC1wYXRoIHRvLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgM2M5MjcyODEzZmFkODRjNjkxZDBlNDk4OWJiMThhM2ZmZWJkZWJmYwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBOb3YgMjYgMTQ6NTc6NDUgMjAwNyAtMDYwMAoKICAgIEFkZCBjb21tb24gbWVtb3J5IGZpeHVwIGZ1bmN0aW9uCgogICAgQWRkIHRoZSBmdW5jdGlvbiBmZHRfZml4dXBfbWVtb3J5KCkgdG8gZml4dXAgdGhlIC9tZW1vcnkgbm9kZSBvZiB0aGUgZmR0CgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA5YzkxMDllN2ZjZjdhYzJjYTE5Yzk1YjhhYzU0YjhkMWM3NzNiMTU3CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIE5vdiAyNiAxMToxOToxMiAyMDA3IC0wNjAwCgogICAgQ29uZGl0aW9uYWxseSBjb21waWxlIGZkdF9zdXBwb3J0LmMKCiAgICBNb2RpZnkgY29tbW9uL01ha2VmaWxlIHRvIGNvbmRpdGlvbmFsbHkgY29tcGlsZSBmZHRfc3VwcG9ydC5jIGJhc2VkCiAgICBvbiBDT05GSUdfT0ZfTElCRkRULgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZDg4ZTdiYTA5ODA3NzM0NzllMWE2NGJhZGIyOTMxMTYwNzFiN2VmMApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBOb3YgMjYgMTA6NDE6NDAgMjAwNyAtMDYwMAoKICAgIEZpeCBidWlsZCBicmVha2FnZSBkdWUgdG8gbGliZmR0IGltcG9ydAoKICAgIFRoZSBJRFM4MjQ3IGdvdCBsb3N0IGluIHRoZSB1cGRhdGUgYW5kIG5lZWQgYW4gQVBJIHVwZGF0ZQogICAgZG8gdG8gcmVuYW1lIG9mIGZ1bmN0aW9ucyBpbiBsaWJmZHQuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAyOGYzODRiMTcxYmJmMWZiMmRhZmIxMDQ2ZTZkMjU5YTZiMmY4NzE0CkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJRnJpIE5vdiAyMyAxOTo0MzoyMCAyMDA3IC0wNTAwCgogICAgQWRkIHNwYWNlcyBhcm91bmQgdGhlID0gaW4gdGhlIGZkdCBwcmludCBmb3JtYXQuCgogICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCAyOTU5MmVjYmEzYjkzMmI5YjE1MmJjZWM2YzBjMDgwNjQxMmRiNGEzCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglGcmkgRGVjIDcgMDE6MjU6MzggMjAwNyArMDkwMAoKICAgIHNoOiBNb3ZlZCBkcml2ZXIgb2YgdGhlIFN1cGVySCBkZXBlbmRlbmNlCgogICAgVGhlIGNvbXBvc2l0aW9uIG9mIHRoZSBkaXJlY3RvcnkgaW4gdGhlIGRyaXZlcnMvIGNoYW5nZWQuCiAgICBJIG1vdmVkIFN1cGVySCBzZXJpYWwgZHJpdmVyIGFuZCBtYXJ1YnVuIFBDTUNJQSBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDQxYmU5NjlmNDk1NzExNWVkN2IxZmU4Yjg5MGJmYWVlOTlkN2E3YTIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgRGVjIDYgMTA6MjE6MTkgMjAwNyArMDEwMAoKICAgIFJlbGVhc2UgdjEuMy4xCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjZjU5MzNiYTFlOTdhMWNkOGY1ZjI0MDcwZTgyMGYyMWQ5NzZlYWViCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IERlYyA2IDEwOjIxOjAzIDIwMDcgKzAxMDAKCiAgICBBRFM1MTIxIEJvYXJkOiBmaXggY29tcGlsZSBwcm9ibGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYTI3MDQ0YjE0YTllOTM2NzhhODJkN2IzNWYyMDJiOTNlNzY4N2FiYwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IERlYyA2IDA1OjU4OjQzIDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IEVuYWJsZSBoYXJkd2FyZS1maXggZm9yIFBDSS9ETUEgZXJyYXRhIG9uIEFNQ0MgNDQwU1AvU1BlIGJvYXJkcwoKICAgIFRoaXMgcGF0Y2ggZW5hYmxlcyB0aGUgaGFyZHdhcmUtZml4IGZvciB0aGUgUENJL0RNQSBlcnJhdGEncyAxOSsyMiBieQogICAgc2V0dGluZyB0aGUgRklYRCBiaXQgaW4gdGhlIFNEUjBfTUZSIHJlZ2lzdGVyLiBIZXJlIGEgZGVzY3JpcHRpb24gb2YgdGhlCiAgICBzeW1wdG9tczoKCiAgICBQcm9ibGVtIERlc2NyaXB0aW9uCiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIElmIGEgRE1BIGlzIHBlcmZvcm1lZCBiZXR3ZWVuIG1lbW9yeSBhbmQgUENJIHdpdGggdGhlIERNQSAxIENvbnRyb2xsZXIKICAgIHVzaW5nIHByZWZldGNoLCBhbmQgYXMgYSByZXN1bHQgdXNlcyBhIHNwZWNpYWwgcHVycG9zZSBidWZmZXIgc2VsZWN0ZWQgYnkKICAgIHRoZSBQQ0lYbiBCcmlkZ2UgT3B0aW9ucyAxIFJlZ2lzdGVyIChQQ0lYbl9CUkRHT1BUMVtSQlA3XSAtIGJpdHMgMzEtMjkpLAogICAgdGhlIGZpcnN0IHBhcnQgb2YgdGhlIHRyYW5zZmVyIHNlcXVlbmNlIGlzIHBlcmZvcm1lZCB0d2ljZS4gVGhlCiAgICBQUEM0NDBTUGUgUENJIENvbnRyb2xsZXIgcmVxdWVzdHMgbW9yZSBkYXRhIHRoYW4gd2FzIG5lZWRlZCBzdWNoIHRoYXQgaW4KICAgIHRoZSBjYXNlIG9mIGVuZm9yY2UgbWVtb3J5IHByb3RlY3Rpb24sIGEgaG9zdCBDUFUgIGV4Y2VwdGlvbiBjYW4gb2NjdXIuCiAgICBObyBkYXRhIGlzIGNvcnJ1cHRlZCwgYmVjYXVzZSBkYXRhIHRyYW5zZmVyIGlzIHN0b3BwZWQgaW4gdGhlIFBDSQogICAgQ29udHJvbGxlci4gUHJlZmV0Y2ggZW5hYmxlIGlzIHNwZWNpZmllZCBieSBzZXR0aW5nIERNQSBDb25maWd1cmF0aW9uCiAgICBSZWdpc3RlciAoSTJPMF9ETUF4X0NGR1tEWEVQRF0gLSBiaXQgMzEpIHRvIDAuCgogICAgQmVoYXZpb3IgdGhhdCBtYXkgYmUgb2JzZXJ2ZWQgaW4gYSBydW5uaW5nIHN5c3RlbQogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgMS4gRE1BIHBlcmZvcm1hbmNlIGlzIGRlY3JlYXNlZCBiZWNhdXNlIG9mIHRoZSBkb3VibGUgYWNjZXNzIG9uIHRoZSBQQ0kgYnVzCiAgICBpbnRlcmZhY2UuCiAgICAyLiBJZiBhbiBpbGxlZ2FsIGFjY2VzcyB0byBzb21lIGFkZHJlc3Mgb24gdGhlIFBDSSBidXMgaXMgZGV0ZWN0ZWQgYXQgdGhlCiAgICBzeXN0ZW0gbGV2ZWwsIGEgbWFjaGluZSBjaGVjayBvciBzaW1pbGFyIHN5c3RlbSBlcnJvciBtYXkgb2NjdXIuCgogICAgV29ya2Fyb3VuZHMgQXZhaWxhYmxlCiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgMS4gRG8gbm90IHByb2dyYW0gcHJlZmV0Y2guIE5vdGUgdGhhdCBhIHByZWZldGNoIGNvbW1hbmQgY2Fubm90IGJlIHByb2dyYW1tZWQKICAgIHdpdGhvdXQgc2VsZWN0aW5nIGEgc3BlY2lhbCBwdXJwb3NlIGJ1ZmZlci4KICAgIDIuIFRvIGF2b2lkIGNyb3NzaW5nIGEgcGh5c2ljYWwgYm91bmRhcnkgb2YgdGhlIFBDSSBzbGF2ZSBkZXZpY2UsIGFkZCA1MTIKICAgIGJ5dGVzIG9mIGFkZHJlc3MgdG8gdGhlIFBDSSBhZGRyZXNzIHJhbmdlLgoKICAgIFRoaXMgcGF0Y2ggd2FzIG9yaWdpbmFsbHkgcHJvdmlkZWQgYnkgUHJhdmluIE0uIEJhdGhpamEgPHBiYXRoaWphQGFtY2MuY29tPgogICAgZnJvbSBBTUNDIGFuZCBzbGlnaGx5IGNoYW5nZWQuCgogICAgU2lnbmVkLW9mZi1ieTogUHJhdmluIE0uIEJhdGhpamEgPHBiYXRoaWphQGFtY2MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGE5MDkyMWY3MWQyMjViZjllMGYwZmM3YjhiZWFkZWI4MDAxYmY3OGEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBEZWMgNCAxNjoyOTo0OCAyMDA3ICswMTAwCgogICAgcHBjNHh4OiBZb3NlbWl0ZS9ZZWxsb3dzdG9uZTogQWRkIERUVCBBRDc0MTQgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4ZDRmMDQwYTNjMTUwMzZhNmVhMjVhOWMzOWU3ZDg5ZmVmYTg0NDBkCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIERlYyAzIDAwOjE1OjI4IDIwMDcgKzAxMDAKCiAgICBQcmVwYXJlIGZvciAxLjMuMS1yYzEKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGUxNWUzMzQzM2U3YzA1MTExOTY4ZGM5YjQzNGE1MmZkNDJjYmQyMjEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBOb3YgMzAgMDc6MTU6NDEgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogS2lsYXVlYTogQWRkIFBDSWUgcmVzZXQgYXNzZXJ0aW9uIHVwb24gcG93ZXItdXAKCiAgICBUaGlzIG1hbnVhbCBQQ0llIHJlc2V0IHRyaWdnZXJpbmcgc29sdmVzIHRoZSBwcm9ibGVtIHNlZW4gd2l0aCB0aGUKICAgIEludGVsIEVQUk8vMTAwMCBjYXJkLCB3aGljaCB3YXMgbm90IGRldGVjdGVkIChsaW5rIG5vdCBlc3RhYmxpc2hlZCkKICAgIHVwb24gcG93ZXItdXAgcmVzZXQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDI2MGVlYTU2NzZjYTQ2OTAzYTMzNTY4NmNjMDIwYjI5YzRjYTQ2ZmUKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVRodSBOb3YgMjkgMDE6MjE6NTQgMjAwNyArMDkwMAoKICAgIHNoOiBBZGQgU3VwZXJIIGJvYXJkcyBtYWludGFpbmVyIHRvIE1BSU5UQUlORVJTIGZpbGUKCiAgICBBZGQgTVM3NzUwU0UgYW5kIE1TNzcyMlNFJ3MgYm9hcmQgbWFpbnRhaW5lciB0byBNQUlOVEFJTkVSUyBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBhYTljNGYxZDIyNzAxYTkyMzQ3YzFjODFmMzRkMTJjOGFkM2EzNzQ3CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglUaHUgTm92IDI5IDAwOjEzOjA0IDIwMDcgKzA5MDAKCiAgICBzaDogQWRkIG1zNzc1MHNlIHN1cHBvcnQgaW4gTUFLRUFMTAoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBjNzE0NDM3MzQyN2ExNzgzMzJiZjk3NTQxMzFjOGMzNGM1MmMyMDBhCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVHVlIE5vdiAyNyAwOTo0NDo1MyAyMDA3ICswMTAwCgogICAgc2g6IEFkZCBzaDMgYW5kIHNoNCBzdXBwb3J0IGluIE1BS0VBTEwKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDEzMDA4MDg3NGEzZDI4NDUwMDk4NDgxYTI2MmM1ZjdjODU1ZTkwOGQKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVN1biBOb3YgMjUgMDI6NTE6MTcgMjAwNyArMDkwMAoKICAgIHNoOiBBZGQgZG9jdW1lbnQgZm9yIFN1cGVySC4KCiAgICBUaGlzIGRvY3VtZW50IGlzIGEgc3VtbWFyeSBvZiBpbmZvcm1hdGlvbiBjb25jZXJuaW5nIFN1cGVySCBvZiBVLUJvb3QuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDMzZWNkYzJmOWQ2NDkyNmUxYTYwNjdiMjhmM2EwYWVmYzNiNmQyM2QKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVN1biBOb3YgMjUgMDI6Mzk6MzEgMjAwNyArMDkwMAoKICAgIHNoOiBBZGQgbWFydWJ1bidzIHBjbWNpYSBkcml2ZXIKCiAgICBNYXJ1YnVuIHBjbWNpYSBpcyBhIGNoaXAgZm9yIFBDTUNJQSB1c2VkIHdpdGggU3VwZXJILgogICAgT2YgY291cnNlLCB0aGlzIGNhbiBiZSB1c2VkIGV2ZW4gYnkgb3RoZXIgYXJjaGl0ZWN0dXJlcy4KICAgIFdoZW4gdXNlIHRoaXMgZHJpdmVyLCBjYW1lIHRvIGJlIGFibGUgdG8gdXNlIENvbXBhY3RGbGFzaAogICAgYW5kIEV0aGVybmV0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBmZWJkODZiOTY5Yjk3NTI4OWVkOTQ4ZjFhYzBlYjk3MjJkYTQxY2VkCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglTdW4gTm92IDI1IDAyOjMyOjEzIDIwMDcgKzA5MDAKCiAgICBzaDogVXBkYXRlIFN1cGVySCBTQ0lGIGRyaXZlcgoKICAgIC0gQ2hhbmdlZCB2b2xhdGlsZSB1bnNpZ25lZCB0byB2dV8uCiAgICAtIENoYW5nZWQgTWFrZWZpbGUgZm9yIGtjb25maWcuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDhiZTc2MDkwMzY0NWFmMDk4NzFiZTUwYWQwYTZmOWViYjYyYjMxMWQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBOb3YgMjcgMTE6NTc6MzUgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogS2lsYXVlYSAmIE1ha2FsdTogRml4IGV4dCBJUlEgcGluIG11bHRpcGxleGluZwoKICAgIEFmdGVyIGFuIGVycm9yIGluIHRoZSBBTUNDIDQwNUVYIHVzZXJzIG1hbnVhbCBub3cgY29ycmVjdGx5IGNvbmZpZ3VyZQogICAgSVJRMiAoS2lsYXVlYSkvSVJRMCAoTWFrYWx1KSBhcyBhbHRlcm5hdGUgMiBzaWduYWwgZm9yIGV4dGVybmFsIElSUQogICAgdXNhZ2UuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGE1ZjYwMWZkMWIxMjc4ZGVhZTVhYTlmYzI3YTIzMmIwZDFjMWM3ODgKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gTm92IDI2IDE5OjE4OjIxIDIwMDcgKzAxMDAKCiAgICBDbGVhbnVwIGNvZGluZyBzdHlsZTsgdXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgM2RlY2E5ZDQ0NzY3ZWZkMWI4M2Y0YjcwMWYwZGJmMjFhNzU5NWY3YgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBOb3YgMjUgMjI6Mzk6MjUgMjAwNyArMDEwMAoKICAgIE1BS0VBTEw6IGFkZCBtaXNzaW5nIDUxMnggYm9hcmRzIGluIHBwYwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYTM0MGMzMjVlNjY4Y2E3Mzg2YzIyNzYzODc2ODE3MjBiZTljMzc1NwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBOb3YgMjUgMTg6NDU6NDcgMjAwNyArMDEwMAoKICAgIE1ha2VmaWxlIDogZml4IHRhZ3MgY3RhZ3MgZXRhZ3Mgd2l0aCBuZXcgZHJpdmVycyBvcmdhbml6YXRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDYzMzYyY2ZjNmJhYTk3YWUwZTM3YmEyYzZlY2U1MzBmY2FjOWY3OWUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBOb3YgMjYgMTU6MDY6MTQgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogTWFrYWx1OiBDaGFuZ2UgRUJDIHNldHVwIGZvciBDUzAgdG8gZW5hYmxlIDQwME1IeiB1c2FnZQoKICAgIEFzIHN1Z2dlc3RlZCBieSBTZW5hbywgdXNlIGEgZGlmZmVyZW50IEVCQ19QQjBBUCBzZXR1cCBmb3IgNDAwTUh6CiAgICBvcGVyYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGNhMWNlMjI2Mjg3MjcwYmIwMWUyNWI4ZTM2NzRjNzAxZjEyZWRmMTkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBOb3YgMjYgMTU6MDE6NDUgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogS2lsYXVlYTogQ29uZmlndXJlIHBpbiBtdXggdG8gdXNlIGV4dCBJUlEyIGFzIGludGVycnVwdAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4N2RkZWRkNmFkODA0NDI3Y2UxMjVjZWFhMDc2ZDdhNGY3NGU5ZDVkCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIE5vdiAyNSAxODo0NTo0NyAyMDA3ICswMTAwCgogICAgTWFrZWZpbGUgOiBmaXggdGFncyBjdGFncyBldGFncyB3aXRoIG5ldyBkcml2ZXJzIG9yZ2FuaXphdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNTk4MjljYzE4OTM3OGMxNDJjMTNkMmFhOGQ5YTg5N2Q4YmVmMzk2MQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBOb3YgMjQgMjE6MjY6NTYgMjAwNyArMDEwMAoKICAgIGRyaXZlcnMvbXRkIDogbW92ZSBtdGQgZHJpdmVycyB0byBkcml2ZXJzL210ZAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMzE4YzBiOTA0MzFmMjY0ODU1MmU1YWRlNzg4MzNmNDI2NTJjZTg1OQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBOb3YgMjQgMjE6MTc6NTUgMjAwNyArMDEwMAoKICAgIGRyaXZlcnMvbWlzYyA6IG1vdmUgbWlzYyBkcml2ZXJzIHRvIGRyaXZlcnMvbWlzYwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMzNkYWY1Yjc4NTg4MDdjYjRjZTQxNThjMmM1NjUyNDY3MWMxNGMwOApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBOb3YgMjQgMjE6MTM6NTkgMjAwNyArMDEwMAoKICAgIGRyaXZlcnMvYmxvY2sgOiBtb3ZlIGJsb2NrIGRyaXZlcnMgdG8gZHJpdmVycy9ibG9jawoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMGM2OThkY2FhNzAyNzVlYjg4MTRmNjY1YjU0NTU0N2NlZTAxMzg5MgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBOb3YgMjQgMjA6NTk6NTAgMjAwNyArMDEwMAoKICAgIGRyaXZlcnMvcnRjIDogbW92ZSBydGMgZHJpdmVycyB0byBkcml2ZXJzL3J0YwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZjg2OGNjNWE1MDc1N2Q5NGYzNmMzMTIzOTU0ODFjYjBmMTg3ZDllNgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBOb3YgMjQgMjA6MTQ6NDQgMjAwNyArMDEwMAoKICAgIGRyaXZlcnMvaHdtb24gOiBtb3ZlIGhhcmR3YXJlIG1vbml0b3IgZHJ2aWVycyB0byBkcml2ZXJzL2h3bW9uCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAxNmIxOTVjODJhMThjYmZkMTY0ODAwZjE3YTFlZjlkYjJlNDgzMzFhCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IE5vdiAyNCAxOTo0Njo0NSAyMDA3ICswMTAwCgogICAgZHJpdmVycy9pbnB1dCA6IG1vdmUgaW5wdXQgZHJpdmVycyB0byBkcml2ZXJzL2lucHV0CgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBlNDU1ODY2NjI5MzM2NGZjM2FmMWMxZDkzODFjYTkzM2ZhMGYxMjc1CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IE5vdiAyNCAxOTo0MDoxMSAyMDA3ICswMTAwCgogICAgZHJpdmVycy91c2IgOiBtb3ZlIHVzYiBkcml2ZXJzIHRvIGRyaXZlcnMvdXNiCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAxMzc4ZGY3OTJhN2ZmM2FiZDFiZjU0YTYzZjU0NzU3ODRmNWIwODNjCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IE5vdiAyNCAxOTozMzozOCAyMDA3ICswMTAwCgogICAgZHJpdmVycy9zZXJpYWwgOiBtb3ZlIHNlcmlhbCBkcml2ZXJzIHRvIGRyaXZlcnMvc2VyaWFsCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAyNDM5ZTRiZmExMTFiYWJmNGJjMDdiYTIwZWZiZjNlMzYwMzY4MTNlCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIE5vdiAyMSAyMToxOToyNCAyMDA3ICswMTAwCgogICAgZHJpdmVycy9uZXQgOiBtb3ZlIG5ldCBkcml2ZXJzIHRvIGRyaXZlcnMvbmV0CgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAzNTJkMjU5MTMwYjM0OWZlOTU5M2I4ZGFkYTY0MWJkNzhhOTY1OWU1CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVHVlIE5vdiAyMCAyMDo0MTo0OCAyMDA3ICswMTAwCgogICAgZHJpdmVycy92aWRlbyA6IG1vdmUgdmlkZW8gZHJpdmVycyB0byBkcml2ZXJzL3ZpZGVvCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA3MzY0NjIxNzE4NmFhMTdhZmM4ZTMwNWM1ZjA2ZjA2ZGQzMzVlYWFkCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVHVlIE5vdiAyMCAyMDozMzowOSAyMDA3ICswMTAwCgogICAgZHJpdmVycy9wY21jaWEgOiBtb3ZlIHBjbWNpYSBkcml2ZXJzIHRvIGRyaXZlcnMvcGNtY2lhCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA5M2E2ODZlZTljNWRkYzZmYTM2OGMzMmNmYmZkZTZmNjcyNDU5OWZjCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVHVlIE5vdiAyMCAyMDoyODowOSAyMDA3ICswMTAwCgogICAgZHJpdmVycy9wY2kgOiBtb3ZlIHBjaSBkcml2ZXJzIHRvIGRyaXZlcnMvcGNpCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA5MTYyMzUyODE3NTc5ODQwZDc4MDJkYTZkODU4NzJiM2NhMDAzYzk3CkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJVGh1IE5vdiAyMiAxNzoyMzoyMyAyMDA3IC0wNTAwCgogICAgRml4IGZkdCBwcmludGluZyBmb3IgdXBkYXRlZCBsaWJmZHQKCiAgICBBbHNvIGltcHJvdmUgcHJpbnRpbmcgKGFkb3B0IGR0YyB2MSAiYyBzdHlsZSIgaGV4IGZvcm1hdCksIHdoaXRlc3BhY2UgY2xlYW51cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IDllYjc3Y2VhMWZhMTJkNTk2OWViMjZhMWQxZDgxZGEzODFiZDZiMWMKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgTm92IDIxIDEzOjMwOjE1IDIwMDcgLTA2MDAKCiAgICBBZGQgYWRkaXRpb25hbCBmZHQgZml4dXAgaGVscGVyIGZ1bmN0aW9ucwoKICAgIEFkZGVkIHRoZSBmb2xsb3dpbmcgZmR0IGZpeHVwIGhlbHBlcnM6CiAgICAgKiBkb19maXh1cF9ieV9wcm9we191MzJ9IC0gRmluZCBtYXRjaGluZyBub2RlcyBieSBwcm9wZXJ0eSBuYW1lL3ZhbHVlCiAgICAgKiBkb19maXh1cF9ieV9jb21wYXR7X3UzMn0gLSBGaW5kIG1hdGNoaW5nIG5vZGVzIGJ5IGNvbXBhdAoKICAgIFRoZSBfdTMyIHZhcmlhbnRzIHdvcmsgdGhlIHNhbWUgb25seSB0aGUgcHJvcGVydHkgdGhleSBhcmUgc2V0dGluZwogICAgaXMga25vdyB0byBiZSBhIDMyLWJpdCBpbnRlZ2VyIGluc3RlYWQgb2YgYSBieXRlIGJ1ZmZlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGFiNTQ0NjMzYWJkZDE0ZjRkZDVkOTJlNTAwYjczZWI1OWVmNTdlNjcKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgTm92IDIxIDExOjExOjAzIDIwMDcgLTA2MDAKCiAgICBBZGQgZmR0X2ZpeHVwX2V0aGVybmV0IGhlbHBlciB0byBzZXQgbWFjIGFkZHJlc3NlcwoKICAgIEFkZGVkIGEgZml4dXAgaGVscGVyIHRoYXQgdXNlcyBhbGlhc2VzIHRvIHNldCBtYWMgYWRkcmVzc2VzCiAgICBpbiB0aGUgZGV2aWNlIHRyZWUgYmFzZWQgb24gdGhlIGJkX3QKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGRiYWYwN2NlNjIwYWFiMjQ5ZTM1MDJiMjBhOTg2MjM0YTZhZjFkM2EKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgTm92IDIxIDE0OjA3OjQ2IDIwMDcgLTA2MDAKCiAgICBGaXggd2FybmluZ3MgZnJvbSBpbXBvcnQgb2YgbGliZmR0CgogICAgY21kX2ZkdC5jOiBJbiBmdW5jdGlvbiBmZHRfcHJpbnQ6CiAgICBjbWRfZmR0LmM6NTg2OiB3YXJuaW5nOiBhc3NpZ25tZW50IGRpc2NhcmRzIHF1YWxpZmllcnMgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlCiAgICBjbWRfZmR0LmM6NjEzOiB3YXJuaW5nOiBhc3NpZ25tZW50IGRpc2NhcmRzIHF1YWxpZmllcnMgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlCiAgICBjbWRfZmR0LmM6NjM1OiB3YXJuaW5nOiBhc3NpZ25tZW50IGRpc2NhcmRzIHF1YWxpZmllcnMgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlCiAgICBjbWRfZmR0LmM6NjM2OiB3YXJuaW5nOiBhc3NpZ25tZW50IGRpc2NhcmRzIHF1YWxpZmllcnMgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA4ZDA0ZjAyZjYyMjRlNjk4M2Y0ODEyZWE0ZGE3MDQ5NTBlYzg1MzljCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIE9jdCAyNCAxMTowNDoyMiAyMDA3IC0wNTAwCgogICAgVXBkYXRlIGxpYmZkdCBmcm9tIGRldmljZSB0cmVlIGNvbXBpbGVyIChkdGMpCgogICAgVXBkYXRlIGxpYmZkdCB0byBjb21taXQgOGVhZjVlMzU4MzY2MDE3YWEyZTg0NmM1MDM4ZDFhYTE5OTU4MzE0ZSBmcm9tCiAgICB0aGUgZGV2aWNlIHRyZWUgY29tcGlsZXIgKGR0YykgcHJvamVjdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGU5M2JlY2Y4MGQ3MzJiNjRhZWY4MWIyM2U4YjZlY2UwMmM0MDUzM2QKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglTYXQgTm92IDMgMTk6NDY6MjggMjAwNyAtMDUwMAoKICAgIE1vdmUgZG9fZml4dXAqIGZvciBsaWJmZHQgaW50byBjb21tb24gY29kZQoKICAgIE1vdmVkIHRoZSBnZW5lcmljIGZpeHVwIGhhbmRsaW5nIGNvZGUgb3V0IG9mIGNwdS9tcGM1eHh4IGFuZCBjcHUvbXBjODI2MAogICAgaW50byBjb21tb24vZmR0X3N1cHBvcnQuYyBhbmQgcmVuYW1lZDoKCiAgICBkb19maXh1cCgpCS0+IGRvX2ZpeHVwX2J5X3BhdGgoKQogICAgZG9fZml4dXBfdTMyKCkJLT4gZG9fZml4dXBfYnlfcGF0aF91MzIoKQoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZjczOGI0YTc1OTk4ZjQyYTc0MDhkZWZhZGM5YmFhYzdhMzFjOTJkYgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBPY3QgMjUgMTY6MTU6MDcgMjAwNyAtMDUwMAoKICAgIE1ha2Ugbm8gb3B0aW9ucyB0byBmZHQgcHJpbnQgZGVmYXVsdCB0byAnLycKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGEzYzI5MzNlMDI1MDNmZTM2YWRlMmMxYjY1YWY0NmYyYjdhMTY4ZTcKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgT2N0IDI0IDEwOjIxOjU3IDIwMDcgLTA1MDAKCiAgICBSZW1vdmVkIHNvbWUgbm9udXNlZCBmZHQgZnVuY3Rpb25zIGFuZCBtb3ZlZCBmZHRfZmluZF9hbmRfc2V0cHJvcCBvdXQgb2YgbGliZmR0CgogICAgUmVtb3ZlZDoKCWZkdF9ub2RlX2lzX2NvbXBhdGlibGUKCWZkdF9maW5kX25vZGVfYnlfdHlwZQoJZmR0X2ZpbmRfY29tcGF0aWJsZV9ub2RlCgogICAgVG8gZWFzZSBtZXJnZSBvZiBuZXdlciBsaWJmZHQgYXMgd2UgYXJlbid0IHVzaW5nIHRoZW0gYW55d2hlcmUgYXQgdGhpcyB0aW1lLgoKICAgIEFsc28gbW92ZWQgZmR0X2ZpbmRfYW5kX3NldHByb3Agb3V0IG9mIGxpYmZkdCBpbnRvIGZkdF9zdXBwb3J0LmMgZm9yIHRoZSBzYW1lCiAgICByZWFzb24uCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA5OGUyODY3Y2M4NTQwOWI5MTlmODYyZTZjMTYwMjY0NjFlYzk1NWRmCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglXZWQgTm92IDIxIDA5OjE5OjM3IDIwMDcgLTA3MDAKCiAgICBbQlVJTERdIFJlbW92ZSBsaWJyYXJpZXMgd2hlbiB1cGRhdGluZyBhdXRvY29uZi5tawoKICAgIEZpeCBsaWJyYXJ5IHByb2JsZW1zIGNhdXNlZCBieSBjb25kaXRpb25hbCBjb21waWxhdGlvbi4gIFVzaW5nCiAgICBhdXRvY29uZi5tayB0byBkZWNpZGUgd2hpY2ggZmlsZXMgdG8gY29tcGlsZSBoYXMgY2F1c2VkIGEgcHJvYmxlbSB3aGVuCiAgICBjaGFuZ2luZyBjb25maWd1cmF0aW9uIGZyb20gb25lIGJvYXJkIHRvIGFub3RoZXIgd2l0aG91dCBjbGVhcmluZyBvdXQKICAgIHRoZSBsaWJyYXJ5ICgqLmEpIGZpbGVzLgoKICAgIEl0IHVzZWQgdG8gYmUgdGhhdCB0aGUgbGlua2VyIHdhcyBhbHdheXMgcGFzc2VkIHRoZSBzYW1lIGxpc3Qgb2YgLm8KICAgIGZpbGVzIHdoZW4gYnVpbGRpbmcgdGhlIC5hIGZpbGVzLiAgSG93ZXZlciwgdGhhdCBpcyBub3QgbG9uZ2VyIHRydWUKICAgIHdpdGggY29uZGl0aW9uYWwgY29tcGlsYXRpb24uICBOb3csIGEgZGlmZmVyZW50IGJvYXJkIGNvbmZpZyB3aWxsIGhhdmUKICAgIGEgZGlmZmVyZW50IGZpbGUgbGlzdCBwYXNzZWQgdG8gdGhlIGxpbmtlci4gIFRoZSBwcm9ibGVtIG9jY3VycyB3aGVuCiAgICBhIGxpYnJhcnkgaGFzIGFscmVhZHkgYmVlbiBidWlsdCBhbmQgdGhlIGJvYXJkIGNvbmZpZyBpcyBjaGFuZ2VkLgoKICAgIFNpbmNlIHRoZSBsaW5rZXIgd2lsbCB1cGRhdGUgaW5zdGVhZCBvZiByZXBsYWNlIGEgcHJlZXhpc3RpbmcgbGlicmFyeSwKICAgIHRoZW4gaWYgdGhlIGZpbGUgbGlzdCBjaGFuZ2VzIHRvIHJlbW92ZSBzb21lIG9iamVjdCBmaWxlcyB0aGUgb2xkCiAgICBvYmplY3RzIHdpbGwgc3RpbGwgZXhpc3QgaW4gdGhlIGxpYnJhcnkuCgogICAgVGhlIHNvbHV0aW9uIGlzIHRvIHJlbW92ZSBhbGwgb2xkIGxpYnJhcnkgZmlsZXMgd2hlbiBhdXRvY29uZi5tayBpcwogICAgbWFkZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgZWQxMzUzZDc0YjljZThhN2ZjZDY2MDU3MGI4NDhhMTg0ZDYxNGI1ZgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBOb3YgMjEgMDg6NDk6NTAgMjAwNyAtMDYwMAoKICAgIFtCVUlMRF0gY29uZGl0aW9uYWxseSBjb21waWxlIGxpYmZkdC8qLmMgaW4gbGliZmR0L01ha2VmaWxlCgogICAgTW9kaWZ5IGxpYmZkdC9NYWtlZmlsZSB0byBjb25kaXRpb25hbGx5IGNvbXBpbGUgdGhlICouYyBmaWxlcyBiYXNlZAogICAgb24gdGhlIGJvYXJkIGNvbmZpZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDRhNDM3MTlhNzczODcxMjgxMWQ4MjJjYTgxMjU0MjdiMjdhNTVjZGMKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CU1vbiBTZXAgMjQgMDk6MDU6MzEgMjAwNyAtMDYwMAoKICAgIFtCVUlMRF0gY29uZGl0aW9uYWxseSBjb21waWxlIGNvbW1vbi9jbWRfKi5jIGluIGNvbW1vbi9NYWtlZmlsZQoKICAgIE1vZGlmeSBjb21tb24vTWFrZWZpbGUgdG8gY29uZGl0aW9uYWxseSBjb21waWxlIHRoZSBjbWRfKi5jIGZpbGVzIGJhc2VkCiAgICBvbiB0aGUgYm9hcmQgY29uZmlnLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCAyZjE1NWY2YzBhMWY1ZTlhMzA2YTNmMWY0ZmJlMDY3ZGI3Y2VkM2IxCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglNb24gU2VwIDI0IDA5OjA1OjMxIDIwMDcgLTA2MDAKCiAgICBbQlVJTERdIEdlbmVyYXRlIGluY2x1ZGUvYXV0b2NvbmYubWsgZnJvbSBib2FyZCBjb25maWcgZmlsZXMKCiAgICBVc2UgY3BwIGFuZCBzZWQgdG8gcG9zdHByb2Nlc3MgY29uZmlnLmggYW5kIGltcG9ydCB0aGUgZGVmaW5lZCB2YWx1ZXMKICAgIGludG8gaW5jbHVkZS9hdXRvY29uZi5tay4gIGF1dG9jb25mLm1rIGlzIHRoZW4gaW5jbHVkZWQgYnkgY29uZmlnLm1rIHRvCiAgICBnaXZlICdtYWtlJyBhY2Nlc3MgdG8gdGhlIGJvYXJkIGNvbmZpZ3VyYXRpb24uCgogICAgRG9pbmcgdGhpcyBlbmFibGVzIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGF0IHRoZSBNYWtlZmlsZSBsZXZlbCBpbnN0ZWFkCiAgICBvZiBieSB3cmFwcGluZyBldmVyeSAuYyBmaWxlIHdpdGggI2lmZGVmLyNlbmRpZiB3cmFwcGVycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgNjhiODg5OTlkYTg3YWI4OGU3MWUxMzA2MTkyOTA1YmUzNDUwMTk4ZQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBOb3YgMjAgMTU6MDI6MjYgMjAwNyAtMDYwMAoKICAgIDg2MTBIUENEOiBFbmFibGUgdGhlIDg2MTAgRGlzcGxheSBJbnRlcmZhY2UgVW5pdAoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNzRmODlmYWE5ZDFlNzdlZDk0N2U2MjhkM2VmZmFhNTEzZmUwNWQwNQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBOb3YgMjAgMTU6MDA6NTMgMjAwNyAtMDYwMAoKICAgIE1vdmUgODYxMCBESVUgaW50ZXJmYWNlIHN0cnVjdHVyZSBkZWZpbml0aW9ucyB0byBoZWFkZXIgZmlsZS4KCiAgICBUaGVzZSB0d28gc3RydWN0dXJlcyBhcmUgc3RpbGwgbmVlZGVkIGR1cmluZyB0aGUKICAgIGluaXRpYWxpemF0aW9uIGFuZCBzZXR1cCBvZiB0aGUgRElVIGhhcmR3YXJlLgogICAgU28gbW92ZSB0aGVtIHRvIHRoZSBmc2xfZGl1X2ZiLmggZmlsZSBmb3Igbm93LgogICAgT2ZmaWNpYWwgImJsYWgiLgoKICAgIE5vdGljZWQtYnk6IFlvcmsgU3VuIDx5b3Jrc3VuQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDA4MGM2NDZkYmY0NzRhMTA5YzNmODU3MThmYjAxY2UwNDJhMzhjNDUKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUdWUgTm92IDIwIDIwOjE0OjE4IDIwMDcgKzAxMDAKCiAgICBkcml2ZXJzL2kyYyA6IG1vdmUgaTJjIGRyaXZlcnMgdG8gZHJpdmVycy9pMmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDlhMzM3ZGRjMTU0YTEwYTI2ZjExN2ZkMTQ3YjAwOWFiY2RlYmE3NWEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gTm92IDE5IDIyOjIwOjI0IDIwMDcgKzAxMDAKCiAgICBQcmVwYXJlIGZvciAxLjMuMCByZWxlYXNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZjMwYWQ0OWIxNmJmOTk4YjAzYzFhNTIyOGI2Yzg2MzY5ZDYxYzI1OApBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBOb3YgMTkgMTA6MDI6MTMgMjAwNyAtMDUwMAoKICAgIE1vdmUgQ09ORklHX1FFIG91dCBvZiBDT05GSUdfUENJIHdyYXAgZm9yIE1QQzg1NjhNRFMKCiAgICBDT05GSUdfUUUgc2hvdWxkbid0IGJlIGluIHRoZSB3cmFwIG9mIENPTkZJR19QQ0ksIGZpeCBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGY4YzMyMDYwOTM2NjE3NmIzMTEwNGQ5YmY1ZTI5NTIzMmUxYzdmMWQKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+CkRhdGU6CU1vbiBOb3YgMTkgMTE6MTQ6MTYgMjAwNyArMDkwMAoKICAgIFtNSVBTXSBib2FyZC9ndGgyL2xvd2xldmVsX2luaXQuUzogRml4IGEgYnVpbGQgd2FybmluZwoKICAgIGxvd2xldmVsX2luaXQuUzogQXNzZW1ibGVyIG1lc3NhZ2VzOgogICAgbG93bGV2ZWxfaW5pdC5TOjQxMzogV2FybmluZzogUHJldGVuZGluZyBnbG9iYWwgc3ltYm9sIHVzZWQgYXMgYnJhbmNoIHRhcmdldCBpcyBsb2NhbC4KCiAgICBMb29raW5nIGF0IGNvZGVzLCB0aGUgYG1lbXRlc3QnIGFuZCBgY2xlYXJtZW0nIGFyZSBpbnRlbnRpb25hbCBtaXhlZAogICAgdXNlIG9mIGBnbG9iYWwgc3ltYm9scycgYW5kIGBsYWJlbCcgZm9yIGRlYnVnZ2luZyBwdXJwb3NlLiBUbyBtYWtlIGl0CiAgICBidWlsZCwganVzdCBkaXNhYmxlIGdsb2JhbC1zeW1ib2xzLXVzZSBmb3Igbm93LiBBcyBhIHJlc3VsdCBgbWVtdGVzdCcKICAgIHN0aWxsIHJlbWFpbnMgYXMgdW51c2VkLCBidXQgbGVhdmUgaXQgYmUuLi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+Cgpjb21taXQgZThkYTU4ZjJiYzA5Mjg5MWU4Y2M5MmI5MjdlZDVjNGJkMGNiMGNhYgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBOb3YgMTkgMTI6NTk6MTQgMjAwNyArMDEwMAoKICAgIEZpeCBidWlsZCBwcm9ibGVtcyB3aXRoIG1wMnVzYiBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNmJmNGM2ODZhZmNhMWU4NmUxYzM4NGQ1OTIxOGY5MTQ2MDU3MTNiZgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBOb3YgMTggMTg6MzY6MTEgMjAwNyArMDEwMAoKICAgIHMzYzI0eDA6IEZpeCB1c2Jfb2hjaS5jIG1pc3NpbmcgaW4gTWFrZWZpbGUKICAgIGFuZCB1c2Jfb2hjaS5jIHdhcm5pbmcgZGlmZmVyIGluIHNpZ25lZG5lc3MKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDYwNzNmNjFlMDc4ZGE1ZGRiNTIxYjU2MjU2YmNjMzY1MDg1ODk4ODMKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gTm92IDE4IDEyOjU1OjAyIDIwMDcgKzAxMDAKCiAgICBwYjF4MDAgYm9hcmQ6IEZpeCB1MTYgc3RhdHVzIGRlY2xhcmF0aW9uIHdoZW4gUENNQ0lBIGlzIGRlZmluZWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDg0MTJkODE0Y2U4YmY1NTcwYTJiNzQ3ZjFlN2ZkMzIxMDk3ZmU5ODcKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gTm92IDE4IDE3OjExOjA5IDIwMDcgKzAxMDAKCiAgICBGaXggY29tcGlsZXIgd2FybmluZ3MgZm9yIEFSTSBzeXN0ZW1zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNDA5ZWNkYzBiYjQ3ZGQyOGIwYWY2YzI1ZmZkNjU4ZDIyY2MzNmIzNwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBOb3YgMTggMTY6MzY6MjcgMjAwNyArMDEwMAoKICAgIEZpeCBjb21waWxlciB3YXJuaW5ncyBmb3IgUFBDIHN5c3RlbXMuIFVwZGF0ZSBDSEFOR0VMT0cuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA2NTM4MTFhM2MyYjM1ODU2YmYxMmUxOTZkY2M4YzQ2OTRlMjhlNDIwCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTdW4gTm92IDE4IDE0OjQ0OjQ0IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IENvcnJlY3QgNDA1RVggUENJZSBVVEwgcmVnaXN0ZXIgbWFwcGluZwoKICAgIE1hcCA0ayBtZW0gc3BhY2UgZm9yIFVUTCByZWdpc3RlcnMgZm9yIGVhY2ggcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDc5YzJjNGZhNzFjMGQxZWJlZjM5NDUwOGRmOTA4OGRmOGEzMDhkMwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBOb3YgMTcgMTE6MzE6MTAgMjAwNyArMDEwMAoKICAgIEZpeCB3YXJuaW5nIGRpZmZlciBpbiBzaWduZWRuZXNzIGluIG5ldC9uZXQuYyBhbmQgbmV0L25mcy5jCgpjb21taXQgN2UxNGZjNjUzNjhjYmQyODYxYjEyMDc0NTNkYTU1YTRmYzdiM2Y4MQpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVNhdCBOb3YgMTcgMjA6NDI6NDUgMjAwNyArMDkwMAoKICAgIGd0aDIuYzogRml4IGEgd2FybmluZyBvbiBndGgyIGJ1aWxkLgoKICAgIGd0aDIuYzogSW4gZnVuY3Rpb24gJ21pc2NfaW5pdF9yJzoKICAgIGd0aDIuYzo0MzQ6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5nIGFyZ3VtZW50IDIgb2YgJ3NldGVudicgZGlmZmVyIGluIHNpZ25lZG5lc3MKCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IDIzMDljMTMwYWE0Yzg0YjkxYmQ4NzRhNDEyNjljOTIzZWI2MWI1NTUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVNhdCBOb3YgMTcgMDc6NTg6MjUgMjAwNyArMDEwMAoKICAgIEZpeCB3YXJuaW5nIGRpZmZlciBpbiBzaWduZWRuZXNzIGluIGNvbW1vbi9jbWRfc2NzaS5jCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDllYTYxYjU3OTY4NTU0ZWFmMGY0NzRlYzdlMDg4YjE3ZDM2N2Y0NzQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVNhdCBOb3YgMTcgMTQ6NTI6MjkgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogVXBkYXRlIEFNQ0MgS2lsYXVlYSBjb25maWcgZmlsZQoKICAgIC0gVXNlIGdlbmVyaWMgR1BJTyBjb25maWd1cmF0aW9uIGZyYW1ld29yayAoQ0ZHXzR4eF9HUElPX1RBQkxFKQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3ZTFkODg0YjdjYjYwMjAwNzMyOWM1MTdlYzFjNDUzZTNhNmE1ZDljCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJU2F0IE5vdiAxNyAyMDowNToyNiAyMDA3ICswOTAwCgogICAgW01JUFNdIGNwdS9taXBzL2NvbmZpZy5tazogRml4IEdOVSBhc3NlbWJsZXIgbWlub3IgdmVyc2lvbiBwaWNrZXIKCiAgICBDdXJyZW50IHRyaWNrIHRvIHBpY2sgdXAgR05VIGFzc2VtYmxlciBtaW5vciB2ZXJzaW9uIGRvZXMgbm90IHdvcmsgd2l0aCB0aGUKICAgIGxhdGVzdCBiaW51dGlscyAoMjAwNy0wMy0wMSBvciBsYXRlcikgZHVlIHRvICR7UEtHVkVSU0lPTn0gbm93IGRlZmF1bHQgdG8KICAgICIoR05VIEJpbnV0aWxzKSAiLgoKICAgICAgJCBzZGUtYXMgLS12ZXJzaW9uIHxncmVwICJHTlUgYXNzZW1ibGVyIgogICAgICBHTlUgYXNzZW1ibGVyIDIuMTUuOTQgbWlwc3NkZS02LjAyLjAyLTIwMDUwNjAyCiAgICAgICQgc2RlLWFzIC0tdmVyc2lvbiB8Z3JlcCAiR05VIGFzc2VtYmxlciIgfGF3ayAne3ByaW50ICQzfScKICAgICAgMi4xNS45NAogICAgICAkIHNkZS1hcyAtLXZlcnNpb24gfGdyZXAgIkdOVSBhc3NlbWJsZXIiIHxhd2sgJ3twcmludCAkM30nIHxhd2sgLUYuICd7cHJpbnQgJDJ9JwogICAgICAxNQogICAgICAkCgogICAgICAkIG1pcHMtbGludXgtYXMgLS12ZXJzaW9uIHxncmVwICJHTlUgYXNzZW1ibGVyIgogICAgICBHTlUgYXNzZW1ibGVyIChHTlUgQmludXRpbHMpIDIuMTgKICAgICAgJCBtaXBzLWxpbnV4LWFzIC0tdmVyc2lvbiB8Z3JlcCAiR05VIGFzc2VtYmxlciIgfGF3ayAne3ByaW50ICQzfScKICAgICAgKEdOVQogICAgICAkIG1pcHMtbGludXgtYXMgLS12ZXJzaW9uIHxncmVwICJHTlUgYXNzZW1ibGVyIiB8YXdrICd7cHJpbnQgJDN9JyB8YXdrIC1GLiAne3ByaW50ICQyfScKICAgICAgKG5vIG91dHB1dCkKICAgICAgJAoKICAgIEFzIGEgcmVzdWx0IG9mIGFib3ZlLCB5b3UnbGwgc2VlIG1hbnkgbm9pc2VzIHdpdGggc3VjaCBiaW51dGlsczoKCiAgICAgIG1ha2UgLUMgY3B1L21pcHMvCiAgICAgIC9iaW4vc2g6IGxpbmUgMDogWzogOiBpbnRlZ2VyIGV4cHJlc3Npb24gZXhwZWN0ZWQKICAgICAgL2Jpbi9zaDogbGluZSAwOiBbOiA6IGludGVnZXIgZXhwcmVzc2lvbiBleHBlY3RlZAogICAgICBtYWtlWzFdOiBFbnRlcmluZyBkaXJlY3RvcnkgYC9ob21lL3NrdXJpYmF5L2RldmVsL3UtYm9vdC5naXQvY3B1L21pcHMnCiAgICAgIG1pcHMtbGludXgtZ2NjICAtRF9fQVNTRU1CTFlfXyAtZyAgLU9zICAgLURfX0tFUk5FTF9fIC1EVEVYVF9CQVNFPTB4QjAwMDAwMDAgIC1JL2hvbWUvc2t1cmliYXkvZGV2ZWwvdS1ib290LmdpdC9pbmNsdWRlIC1mbm8tYnVpbHRpbiAtZmZyZWVzdGFuZGluZyAtbm9zdGRpbmMgLWlzeXN0ZW0gL2hvbWUvc2t1cmliYXkvZGV2ZWwvYnVpbGRyb290L2J1aWxkX21pcHMvc3RhZ2luZ19kaXIvdXNyL2Jpbi8uLi9saWIvZ2NjL21pcHMtbGludXgtdWNsaWJjLzQuMi4xL2luY2x1ZGUgLXBpcGUgIC1EQ09ORklHX01JUFMgLURfX01JUFNfXyAtRyAwIC1tYWJpY2FsbHMgLWZwaWMgLXBpcGUgLW1zb2Z0LWZsb2F0IC1tYXJjaD00a2MgLW10dW5lPTRrYyAtRUIgLWMgLW8gaW5jYWlwX3dkdC5vIGluY2FpcF93ZHQuUwogICAgICAvYmluL3NoOiBsaW5lIDA6IFs6IDogaW50ZWdlciBleHByZXNzaW9uIGV4cGVjdGVkCiAgICAgIG1pcHMtbGludXgtZ2NjICAtRF9fQVNTRU1CTFlfXyAtZyAgLU9zICAgLURfX0tFUk5FTF9fIC1EVEVYVF9CQVNFPTB4QjAwMDAwMDAgIC1JL2hvbWUvc2t1cmliYXkvZGV2ZWwvdS1ib290LmdpdC9pbmNsdWRlIC1mbm8tYnVpbHRpbiAtZmZyZWVzdGFuZGluZyAtbm9zdGRpbmMgLWlzeXN0ZW0gL2hvbWUvc2t1cmliYXkvZGV2ZWwvYnVpbGRyb290L2J1aWxkX21pcHMvc3RhZ2luZ19kaXIvdXNyL2Jpbi8uLi9saWIvZ2NjL21pcHMtbGludXgtdWNsaWJjLzQuMi4xL2luY2x1ZGUgLXBpcGUgIC1EQ09ORklHX01JUFMgLURfX01JUFNfXyAtRyAwIC1tYWJpY2FsbHMgLWZwaWMgLXBpcGUgLW1zb2Z0LWZsb2F0IC1tYXJjaD00a2MgLW10dW5lPTRrYyAtRUIgLWMgLW8gY2FjaGUubyBjYWNoZS5TCiAgICAgIC9iaW4vc2g6IGxpbmUgMDogWzogOiBpbnRlZ2VyIGV4cHJlc3Npb24gZXhwZWN0ZWQKICAgICAgbWlwcy1saW51eC1nY2MgLWcgIC1PcyAgIC1EX19LRVJORUxfXyAtRFRFWFRfQkFTRT0weEIwMDAwMDAwICAtSS9ob21lL3NrdXJpYmF5L2RldmVsL3UtYm9vdC5naXQvaW5jbHVkZSAtZm5vLWJ1aWx0aW4gLWZmcmVlc3RhbmRpbmcgLW5vc3RkaW5jIC1pc3lzdGVtIC9ob21lL3NrdXJpYmF5L2RldmVsL2J1aWxkcm9vdC9idWlsZF9taXBzL3N0YWdpbmdfZGlyL3Vzci9iaW4vLi4vbGliL2djYy9taXBzLWxpbnV4LXVjbGliYy80LjIuMS9pbmNsdWRlIC1waXBlICAtRENPTkZJR19NSVBTIC1EX19NSVBTX18gLUcgMCAtbWFiaWNhbGxzIC1mcGljIC1waXBlIC1tc29mdC1mbG9hdCAtbWFyY2g9NGtjIC1tdHVuZT00a2MgLUVCIC1XYWxsIC1Xc3RyaWN0LXByb3RvdHlwZXMgLWMgLW8gYXNjX3NlcmlhbC5vIGFzY19zZXJpYWwuYwogICAgICAvYmluL3NoOiBsaW5lIDA6IFs6IDogaW50ZWdlciBleHByZXNzaW9uIGV4cGVjdGVkCgogICAgVGhpcyBwYXRjaCBzaW1wbGlmaWVzIHRoZSB0cmljayBhbmQgbWFrZXMgaXQgd29yayB3aXRoIGJvdGggdmVyc2lvbnMgb2YgZ2FzLgogICAgSSBhbHNvIHJlcGxhY2UgYW4gZXhwZW5zaXZlIGBhd2sgKG9yIGdhd2spJyB3aXRoIGBjdXQnLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgMTY2NjRmNzI4NTA4NDZlNjQ1NjE2ZGExYzBmYTVhZmNkNmQxNWYxNQpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVNhdCBOb3YgMTcgMjA6MDU6MjYgMjAwNyArMDkwMAoKICAgIFtNSVBTXSBSZW1vdmUgdXNlbGVzcyBpbnN0cnVjdGlvbnMgZm9yIGluaXRpYWxpemluZyAkZ3AuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCAwM2MwMzFkNTY2MGVhOTQ2YzM5YWY2ZTJlMTYyNjdkYTg1N2M2MDlmCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJU2F0IE9jdCAyNyAxNToyNzowNiAyMDA3ICswOTAwCgogICAgW01JUFNdIE1JUFMgNEsgY29yZTogQ29kaW5nIHN0eWxlIGNsZWFudXBzCgogICAgTm8gbG9naWNhbCBjaGFuZ2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgZjVlNDI5ZDM4NjBiYmE0YzZhZThiZWFkOGY3ODM0OWZhMjQ0OTFiMgpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVNhdCBOb3YgMTcgMjA6MDU6MjAgMjAwNyArMDkwMAoKICAgIFtNSVBTXSBndGgyLmM6IEZpeCBhIHdhcm5pbmcgb24gZ3RoMiBidWlsZC4KCiAgICBndGgyLmM6IEluIGZ1bmN0aW9uICdtaXNjX2luaXRfcic6CiAgICBndGgyLmM6NDM0OiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMgaW4gcGFzc2luZyBhcmd1bWVudCAyIG9mICdzZXRlbnYnIGRpZmZlciBpbiBzaWduZWRuZXNzCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCA0ZmJkMDc0MWIyYjY0NDFkYTEwYmU5M2UxMDI2NzEyMjU4MWI3MDc5CkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJU2F0IE9jdCAyNyAxNToyMjozMyAyMDA3ICswOTAwCgogICAgW01JUFNdIGF1MXgwMF9ldGguYzogRml4ZWQgYSB3YXJuaW5nIG9uIHBiMTAwMCBidWlsZC4KCiAgICBhdTF4MDBfZXRoLmM6IEluIGZ1bmN0aW9uICdhdTF4MDBfbWlpcGh5X3dyaXRlJzoKICAgIGF1MXgwMF9ldGguYzoxMzk6IHdhcm5pbmc6ICdyZXR1cm4nIHdpdGggbm8gdmFsdWUsIGluIGZ1bmN0aW9uIHJldHVybmluZyBub24tdm9pZAoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgZjAxMzIwNDU5NzM2ZjE1NjcwNzQyNWNmODExMmY5ODYwNjMwMWFhNApBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVNhdCBPY3QgMjcgMTU6MDA6MjUgMjAwNyArMDkwMAoKICAgIFtNSVBTXSBhdTF4MDBfZXRoLmM6IEZpeCBhdTF4MDBfbWlpcGh5X3tyZWFkLHdyaXRlfSBidWlsZCBlcnJvcgoKICAgIGF1MXgwMF9ldGguYzogSW4gZnVuY3Rpb24gJ2F1MXgwMF9lbmV0X2luaXRpYWxpemUnOgogICAgYXUxeDAwX2V0aC5jOjI0NjogZXJyb3I6ICdhdTF4MDBfbWlpcGh5X3JlYWQnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKQogICAgYXUxeDAwX2V0aC5jOjI0NjogZXJyb3I6IChFYWNoIHVuZGVjbGFyZWQgaWRlbnRpZmllciBpcyByZXBvcnRlZCBvbmx5IG9uY2UKICAgIGF1MXgwMF9ldGguYzoyNDY6IGVycm9yOiBmb3IgZWFjaCBmdW5jdGlvbiBpdCBhcHBlYXJzIGluLikKICAgIGF1MXgwMF9ldGguYzoyNDY6IGVycm9yOiAnYXUxeDAwX21paXBoeV93cml0ZScgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCiAgICBhdTF4MDBfZXRoLmM6IEluIGZ1bmN0aW9uICdhdTF4MDBfbWlpcGh5X3dyaXRlJzoKICAgIGF1MXgwMF9ldGguYzoyOTg6IHdhcm5pbmc6ICdyZXR1cm4nIHdpdGggbm8gdmFsdWUsIGluIGZ1bmN0aW9uIHJldHVybmluZyBub24tdm9pZAogICAgbWFrZVsxXTogKioqIFthdTF4MDBfZXRoLm9dIEVycm9yIDEKCiAgICBGaXhlZCBieSBtb3ZpbmcgdGhlc2UgdHdvIGZ1bmN0aW9ucyBmb3J3YXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgYjA5MjU4YzUzOTNlZGQxMDg3YzVmMzlhZTY4MzM4ZjE2YjQ5ZjhiMwpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVNhdCBPY3QgMjcgMTU6MDA6MjUgMjAwNyArMDkwMAoKICAgIE1BS0VBTEw6IEFkZGVkIG1pc3NpbmcgcGIxMDAwIGJvYXJkCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCAyZTRhNmUzNjY3YTFlMzljMGU2ZTk5NDk4Njg2YjE1ZDI3MThiMzY5CkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJU2F0IE9jdCAyNyAxNTowMDoyNCAyMDA3ICswOTAwCgogICAgW01JUFNdIHBiMTAwMDogUmVwbGFjZSBvYnNvbGV0ZSBtZW1zZXR1cC5TIHdpdGggbG93bGV2ZWxfaW5pdC5TCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCA2NjJlNWNiMzk3MjQ5YzNlYTg4YTRjMzI1NWU5Y2NmYzQwYjk4ZDgyCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJU2F0IE9jdCAyNyAxNTowMDoyNCAyMDA3ICswOTAwCgogICAgW01JUFNdIHUtYm9vdC5sZHM6IENsZWFudXAgX191X2Jvb3RfY21kX3tzdGFydCxlbmR9CgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCA1OTQ3ZjY5OTlhYWZhN2M1NGMxMzkwOTgzZDI2NGE4NDYzZGZlYThlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IE5vdiAxNyAwMjozNDozOCAyMDA3ICswMTAwCgogICAgVXBkYXRlIENIQU5HRUxPSUcsIHByZXBhcmUgZm9yIC1yYzQKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGZkMzI5ZTZmMDViYmRmZTZiZDcxYjBlMDlmMGM3NmQzYjBhMDI1YTUKQXV0aG9yOiBMdW90YW8gRnUgPGwuZnVAcGVuZ3V0cm9uaXguZGU+CkRhdGU6CVdlZCBOb3YgMTQgMTg6NTg6MzMgMjAwNyArMDEwMAoKICAgIEZpeCB0aGUgaTJjIGZyZXF1ZW5jeSBhbmQgZGVmYXVsdCBhZGRyZXNzIGluIHJzZHByb3RvIGJvYXJkCgogICAgcnNkcHJvdG8gYm9hcmQgc3VwcG9ydCBoYXMgd3JvbmcgSTJDIGZyZXF1ZW5jeSBhbmQgd3JvbmcgcmV0dXJuIHZhbHVlCiAgICBoYW5kbGluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMdW90YW8gRnUgPGwuZnVAcGVuZ3V0cm9uaXguZGU+Cgpjb21taXQgNDI5YzE4MGVkYWQwMzhmOTFjOTg5Y2IxNGI0NzgyMjgwOTJlNzA1NApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBOb3YgMTcgMDE6NDU6MzggMjAwNyArMDEwMAoKICAgIHBvd2VycGM6IEJhY2tvdXQgcmVsb2NhdGlvbiBjaGFuZ2VzIGZvciBNUEM1MTIxLCB0b28uCgogICAgQXBwbHkgR3JhbnQgTGlrZWx5J3MgYmFja291dCB0byBNUEM1MTIxIGNvZGUsIHRvby4KCiAgICBQb2ludGVkIG91dCBieSBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMWMzZGQ0MzMzOGEwNzcxNjVlN2UwMzA5Y2IzOTk0ZTY1ZDJiZGJmOApBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIE5vdiAxMyAyMjoxODozMyAyMDA3IC0wNzAwCgogICAgcG93ZXJwYzogQmFja291dCByZWxvY2F0aW9uIGNoYW5nZXMuCgogICAgVWdoLiAgSSAqaGF0ZSogdG8gYmFjayB0aGlzIGNoYW5nZSBvdXQsIGJ1dCB0aGVzZSBjb21waWxlciBmbGFncyBkb24ndAogICAgd29yayBmb3IgcmVsb2NhdGlvbiBvbiBhbGwgdmVyc2lvbnMgb2YgR0NDLiAgSSd2ZSBub3QgYmVlbiBhYmxlIHRvCiAgICByZXByb2R1Y2UgdGhlIGVudmlyb25tZW50IGluIG15IHNldHVwIChhbmQgaGVuY2UsIG5vdCBiZWVuIGFibGUgdG8KICAgIGZpbmQgYSBjb21iaW5hdGlvbiB0aGF0ICpkb2VzKiB3b3JrKSwgc28gSSd2ZSBnb3Qgbm8gY2hvaWNlIGJ1dCB0byBnbwogICAgYmFjayB0byB0aGUgb2xkIGdjYyBmbGFncyBhbmQgbGlua2VyIHNjcmlwdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgNWMxNTAxMGVmYWQ5ODBhZDU0OThjYzU2NWZjMWVkNzBkZjJmNTJiNApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVR1ZSBOb3YgMTMgMDk6MTE6MDUgMjAwNyArMDEwMAoKICAgIEZpeGVkIG1pcHNfaW9fcG9ydF9iYXNlIGJ1aWxkIGVycm9ycy4KCiAgICBUaGlzIHBhdGNoIGhhcyBiZWVuIHNlbnQgb246CiAgICAtIDI5IFNlcCAyMDA3CgogICAgQWx0aG91Z2ggbWlwc19pb19wb3J0X2Jhc2UgaXMgY3VycmVudGx5IGEgcGFydCBvZiBJREUgY29tbWFuZCwgaXQgaXMgcXVpdGUKICAgIGZ1bmRhbWVudGFsIGZvciBNSVBTIEkvTyBwb3J0IGFjY2VzcyBzdWNoIGFzIGluW2J3bF0gYW5kIG91dFtid2xdLiBTbyBtb3ZlCiAgICBpdCB0byBNSVBTIGdlbmVyYWwgcGFydCwgYW5kIGludHJvZHVjZSBgc2V0X2lvX3BvcnRfYmFzZSgpJyBmcm9tIExpbnV4LgoKICAgIFRoaXMgcGF0Y2ggaXMgdHJpZ2dlcmVkIGJ5IG11bHRpcGxlIGRlZmluaXRpb24gb2YgYG1pcHNfaW9fcG9ydF9iYXNlJyBidWlsZAogICAgZXJyb3Igb24gZ3RoMiAoYW5kIHRiMDIyOSBhbHNvIG5lZWRzIHRoaXMgZml4LikKCiAgICBib2FyZC9ndGgyL2xpYmd0aDIuYShndGgyLm8pOiBJbiBmdW5jdGlvbiBgbG9nX3NlcmlhbF9jaGFyJzoKICAgIC9ob21lL3NrdXJpYmF5L2RldmVsL3UtYm9vdC5naXQvYm9hcmQvZ3RoMi9ndGgyLmM6NDc6IG11bHRpcGxlIGRlZmluaXRpb24gb2YgYG1pcHNfaW9fcG9ydF9iYXNlJwogICAgY29tbW9uL2xpYmNvbW1vbi5hKGNtZF9pZGUubyk6L2hvbWUvc2t1cmliYXkvZGV2ZWwvdS1ib290LmdpdC9jb21tb24vY21kX2lkZS5jOjcxMjogZmlyc3QgZGVmaW5lZCBoZXJlCiAgICBtYWtlOiAqKiogW3UtYm9vdF0gRXJyb3IgMQoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDZlY2JiN2EzZmE5YjA5NDBlZDMzZTQ5MGQxOTVkNGI2ODMwYjI0MjIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgTm92IDE3IDAxOjMwOjQwIDIwMDcgKzAxMDAKCiAgICBGaXggYSBidWcgaW4gdGhlIHNsYXZlIHNlcmlhbCBwcm9ncmFtbWluZyBtb2RlIGZvciB0aGUgWGlsaW54CiAgICBTcGFydGFuMi8zIEZQR0FzLiBUaGUgb2xkIGNvZGUgdXNlZCAiPCAwIiBvbiBhICJjaGFyIiB0eXBlIHRvIHRlc3QgaWYKICAgIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCB3YXMgc2V0LCB3aGljaCBkaWQgbm90IHdvcmsgb24gYW55CiAgICBhcmNoaXRlY3R1cmUgd2hlcmUgImNoYXIiIGRlZmF1bHRlZCB0byBiZSBhbiB1bnNpZ25lZCB0eXBlLgoKICAgIEJhc2VkIG9uIGEgcGF0Y2ggYnkgQW5nZWxvcyBNYW5vdXNhcmlkaXMgPGFtYW5vdXNAaW5hY2Nlc3NuZXR3b3Jrcy5jb20+CgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBkMDhiNzIzM2JjMjUyZmFhZDgzMzllN2NhMGRkZmQ2MmZhNzk5MDNjCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE5vdiAxIDEyOjIzOjI5IDIwMDcgLTA1MDAKCiAgICA4Nnh4OiBGaXggYnJva2VuIHZhcmlhYmxlIHJlZmVyZW5jZSB3aGVuICNkZWYgREVCVUdpbmcuCgogICAgU29tZXRpbWVzIHlvdSBjYW4ndCByZWZlcmVuY2UgdGhlIEREUjIgY29udHJvbGxlciB2YXJpYWJsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmOWQ5MTY0ZDljNmI1YTdmMDM5M2ZkOGQ3ZTI0NmI4YTAzMjZiYzE5CkF1dGhvcjogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE9jdCAyNiAxODozMjowMCAyMDA3ICswODAwCgogICAgbWFrZSA4NjEwIGJvYXJkIHVzZSBwaXhpcyByZXNldAoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZGI3NGIzYzFjOTQ4MWE2YmZmYmY4Y2Q0NDVlNWJjYmY2OTA4ZTgzNgpBdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBPY3QgMjkgMTk6MjY6MjEgMjAwNyArMDgwMAoKICAgIFVuaWZ5IHBpeGlzX3Jlc2V0IGFsdGJhbmsgYWNyb3NzIGJvYXJkIGZhbWlsaWVzCgogICAgQmFzaWNhbGx5LCByZWZhY3RvciB0aGUgQ0ZHX1BJWElTX1ZCT09UX01BU0sgdmFsdWVzCiAgICBpbnRvIHRoZSBzZXBhcmF0ZSBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjRiZjU1NTQ2NWM3OTI2YmUxM2UxMDQ2YWMwZDBmMDVhYzcyODI5YwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBOb3YgNyAwODoxOToyMSAyMDA3ICswMTAwCgogICAgRml4IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBhc3NpZ25tZW50IGRpZmZlciBpbiBzaWduZWRuZXNzCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA3YTYwZWU3YzYyNDhhOTU4YzU3NTdkMzY2MGExNzAyNzIzYTI3ODZkCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIE5vdiA3IDA4OjE5OjE5IDIwMDcgKzAxMDAKCiAgICBGaXggd2FybmluZyBkaWZmZXIgaW4gc2lnbmVkbmVzcyBpbiBjb21tb24vY21kX2lkZS5jCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBmMzFkMzhiOWVlYTliMzJmNmExYWM4NDhhMjk4Y2M3MWNhNGM5YTAzCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgTm92IDE2IDE0OjE2OjU0IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IEVuYWJsZSA0MDVFWCBQQ0llIFVUTCByZWdpc3RlciBjb25maWd1cmF0aW9uCgogICAgVGlsbCBub3cgdGhlIFVUTCByZWdpc3RlcnMgb24gNDA1RVggd2VyZSBub3QgaW5pdGlhbGl6ZWQgYnV0IGxlZnQgd2l0aAogICAgdGhlaXIgZGVmYXVsdCB2YWx1ZXMuIFRoaXMgcGF0Y2ggbmV3IGluaXRpYWxpemVzIHNvbWUgb2YgdGhlIFVUTAogICAgcmVnaXN0ZXJzIG9uIDQwNUVYLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlY2RjYmQ0ZjhjMWY4Y2VmZDc4NTc1MmY0ZTc1MzZhYWUyYTRlY2Y5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgTm92IDE2IDE0OjAwOjU5IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBBTUNDIE1ha2FsdSBmb3IgYm9hcmQgcmV2IDEuMQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBjaGFuZ2VzIG5lZWRlZCBmb3IgTWFrYWx1IHJldiAxLjE6CgogICAgLSBFbmFibGUgMm5kIEREUjIgYmFuayByZXN1bHRpbmcgaW4gMjU2TUJ5dGUgb2YgU0RSQU0KICAgIC0gRW5hYmxlIDJuZCBldGhlcm5ldCBwb3J0IEVNQUMxCiAgICAtIFVzZSBnZW5lcmljIEdQSU8gY29uZmlndXJhdGlvbiBmcmFtZXdvcmsgKENGR180eHhfR1BJT19UQUJMRSkKICAgIC0gUmVzZXQgUENJZSBwb3J0cyB2aWEgR1BJTyB1cG9uIGJvb3R1cAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0ZDRmYWFlNjVlMTE1ZTMyNzQyNWNkNTE0YzFhMzUxNDZhODUxNjZiCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglNb24gU2VwIDI0IDA5OjA1OjMxIDIwMDcgLTA2MDAKCiAgICBHcm91cCBQQ0kgYW5kIFBDTUNJQSBkcml2ZXJzIGluIGRyaXZlcnMvTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgNTc5OGY4N2RjMTBhNDk2ZDc5ZDMxNzdiOWY1YTc2NDg4OTg3ZmQzNQpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJTW9uIFNlcCAyNCAwOTowNTozMSAyMDA3IC0wNjAwCgogICAgR3JvdXAgYmxvY2svZmxhc2ggZHJpdmVycyBpbiBkcml2ZXJzL01ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IGRmNThjODE1NTE3MDBmMDU4YjQ0Y2FjZjU1YTc5OTdmYTYzYmZlMGEKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CU1vbiBTZXAgMjQgMDk6MDU6MzEgMjAwNyAtMDYwMAoKICAgIEdyb3VwIFVTQiBkcml2ZXJzIGluIGRyaXZlcnMvTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgNWRiYjZlZDYyMmU1MzliMGM4NDkzZWY3ZTU3OGQzYTUzMzE4MWQyOQpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJTW9uIFNlcCAyNCAwOTowNTozMCAyMDA3IC0wNjAwCgogICAgR3JvdXAgaTJjIGRyaXZlcnMgaW4gZHJpdmVycy9NYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCBlYzAwYzc2ZGUwZTU5NzEyNzM5MDU5OThkNjJkNmJiMTE5MzI0MjE4CkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglNb24gU2VwIDI0IDA5OjA1OjMwIDIwMDcgLTA2MDAKCiAgICBHcm91cCBjb25zb2xlIGRyaXZlcnMgaW4gZHJpdmVycy9NYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCA3NTRmMjMwYWEwMWI4Yzc4OWZjMzFmODAxM2MyNDg3OTU0MDczMzAwCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglNb24gU2VwIDI0IDA5OjA1OjMwIDIwMDcgLTA2MDAKCiAgICBHcm91cCBuZXR3b3JrIGRyaXZlcnMgaW4gZHJpdmVycy9NYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCBmMDAzN2M1NmIwZDEyY2Q0NjIxNTEyNDY2N2I5ZjgzZDYwZWY5MzkxCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglNb24gU2VwIDI0IDA5OjA1OjMwIDIwMDcgLTA2MDAKCiAgICBCdWlsZDogc3BsaXQgQ09CSlMgdmFsdWUgaW50byBtdWx0aXBsZSBsaW5lcwoKICAgIFRoaXMgY2hhbmdlIGlzIGluIHByZXBhcmF0aW9uIGZvciBjb25kdGl0aW9uaWFsIGNvbXBpbGUgc3VwcG9ydCBpbiB0aGUKICAgIGJ1aWxkIHN5c3RlbS4gIEJ5IHNwbGl0aW5nIHRoZW0gYWxsIGludG8gc2VwZXJhdGUgbGluZXMgbm93LCBzdWJzZXF1ZW50CiAgICBwYXRjaGVzIHRoYXQgY2hhbmdlICdDT0JKUy15ICs9ICcgaW50byAnQ09CSlMtJChDT05GSUdfPGJsYWg+KSArPSAnIHdpbGwKICAgIGJlIGxlc3MgaW52YXNpdmUgYW5kIGVhc2llciB0byByZXZpZXcKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgMWI0YWFmZmU0ZmIyYTVlOTVkOTExMWE1ZDk0ZmQxZjg5MjE1ZGNlNApBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJTW9uIFNlcCAyNCAwOTowNTozMCAyMDA3IC0wNjAwCgogICAgQWRkIC5naXRpZ25vcmUgZmlsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CiAgICBBY2tlZC1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5NTU0MTNmMzVmMDU0YTgyZTQwMDQyZjFkYmNmNTAxYzZhMDU3MTliCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglUaHUgTm92IDE1IDA4OjI3OjUyIDIwMDcgLTA3MDAKCiAgICBSZXZlcnQgIkNvcnJlY3QgcmVsb2NhdGlvbiBmaXh1cCBmb3IgbXBjNXh4IgoKICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgMzY0OWNkOTliYTgxNWI2NjAxODY4NzM1NzY1NjAyZjAwZWYzNjkyYi4KICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCBlMTU2MzM4ODhhMDU4YWFjYjMxYTYyZDJjZjEyNzhlMWU0YzIzNmFiCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglUaHUgTm92IDE1IDA4OjI0OjMyIDIwMDcgLTA3MDAKCiAgICBSZXZlcnQgIkNvcnJlY3QgZml4dXAgcmVsb2NhdGlvbiBmb3IgTVBDNXh4eCIKCiAgICBUaGlzIHJldmVydHMgY29tbWl0IDZmNzU3NmIyMGVjZjBkMDQwYzNhYzNiMDMyYjVjYmM4NjBlMzhhOTAuCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgMTM5MzY1ZmJlNTY2ZDBmYzYxOWExZWQwNDQ1MmVjNTM4OGYwY2VmOApBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVGh1IE5vdiAxNSAwODoyMTowNCAyMDA3IC0wNzAwCgogICAgUmV2ZXJ0ICJDb3JyZWN0IGZpeHVwIHJlbG9jYXRpb24gZm9yIG1wYzgyMjAiCgogICAgVGhpcyByZXZlcnRzIGNvbW1pdCBhODVkZDI1NGMwNTc3ZmNhMTM2MjdjNDZlOTNmYzJhZDRjNGYxZjAwLgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDcwOTIyMzQyMzY5ZTVlMzliMjg2ZmUyMWU3NjhhMjM5Y2EwN2E1MTQKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVRodSBOb3YgMTUgMDg6MjA6NTcgMjAwNyAtMDcwMAoKICAgIFJldmVydCAiQ29ycmVjdCBmaXh1cCByZWxvY2F0aW9uIGZvciBtcGM4MjR4IgoKICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgZjNhNTJmZTA1OTIzOTM1ZGI4Njk4NWRhZjk0MzhlMmY3MGFjMzlhYS4KICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCA5NjI3OWFiNGNhZDYwY2I1OTcyYWE5MzRmYmU0ODQ1YWMwMmNjNzVhCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglUaHUgTm92IDE1IDA4OjIwOjUwIDIwMDcgLTA3MDAKCiAgICBSZXZlcnQgIkNvcnJlY3QgZml4dXAgcmVsb2NhdGlvbiBmb3IgbXBjODI2MCIKCiAgICBUaGlzIHJldmVydHMgY29tbWl0IDVhZjYxYjJmNGI4MzhhMDVmNzliZTI3NGYzZTVhNjZlZGQyZDljOTYuCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgOTI4ZmUzM2IyNGNkZjM4MmE4ZGM4Njg3ZmVkMjRiMTk2MWNkYjVkNgpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVGh1IE5vdiAxNSAwODoyMDo0MyAyMDA3IC0wNzAwCgogICAgUmV2ZXJ0ICJDb3JyZWN0IGZpeHVwIHJlbG9jYXRpb24gZm9yIG1wYzgzeHgiCgogICAgVGhpcyByZXZlcnRzIGNvbW1pdCAwNTcwMDRmNGE0ODYzNTU0ZDU2Y2M1NjI2OGJmYTdjN2Q5NzM4ZTI3LgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IGM5Mzk0NWU4ZjllMzAwODYwZDJiZjczYTI1NDljZTU3OTRmOGJkMDAKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVRodSBOb3YgMTUgMDg6MjA6MjUgMjAwNyAtMDcwMAoKICAgIFJldmVydCAiW01QQzUxMnhdIENvcnJlY3QgZml4dXAgcmVsb2NhdGlvbiIKCiAgICBUaGlzIHJldmVydHMgY29tbWl0IDhkMTc5NzlkMDM1OTQ5MmE4MjJhMGE0MDlkMjZlM2EzNTQ5YjRjZDQuCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgYzk2NzJmODFmMWJkYjRlOGRkZjYyYWE3MmNhMDIwNmU4YjcyYWExYwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE5vdiAxNSAxNDoyNTowOSAyMDA3ICswMTAwCgogICAgcHBjNHh4OiBTbWFsbCBBTUNDIEtpbGF1ZWEgY2xlYW51cAoKICAgIFJlbW92ZSBub3QgbmVlZGVkIHBjaV90YXJnZXRfaW5pdCgpIGZ1bmN0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhZWU3NDdmMTliNDYwYTBlOWRhMjBmZjIxZTkwZmRhYWMxY2VjMzU5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgTm92IDE1IDE0OjIzOjU1IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IEVuYWJsZSA0NDAgR1BJTyBpbml0IHRhYmxlIENGR180NDBfR1BJT19UQUJMRSBmb3IgNDA1IHBsYXRmb3JtcwoKICAgIC0gUmVuYW1lIENGR180NDBfR1BJT19UQUJMRSB0byBDRkdfNHh4X0dQSU9fVEFCTEUKICAgIC0gQ2xlYW51cCBvZiB0aGUgNHh4IEdQSU8gZnVuY3Rpb25zCiAgICAtIE1vdmUgc29tZSBHUElPIGRlZmluZXMgZnJvbSB0aGUgY3B1IGhlYWRlcnMgcHBjNDA1LmgvcHBjNDQwLmggaW50byBncGlvLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOGFkYTBlYmYzOGU0MDczYmVlYTAzMDkxODhiMjVkODJhMTEyYTJhZQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE5vdiAxNSAxNDoyMDowOCAyMDA3ICswMTAwCgogICAgcHBjNHh4OiBBTUNDIFRhaWh1IGJvYXJkIGNvbmZpZyBmaWxlIGNsZWFudXAKCiAgICBUaGlzIHBhdGNoIG1ha2VzIHRoZSBBTUNDIFRhaWh1IGEgbGl0dGxlIG1vcmUgY29tcGF0aWJsZSB0byB0aGUgb3RoZXIKICAgIEFNQ0MgZXZhbCBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDVlNzFjNTFkNzRjOTYzZDMxNzQwNjBjMDc4ZGNhY2YxM2JkZDAyZWYKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgTm92IDE1IDEzOjM3OjI4IDIwMDcgKzAxMDAKCiAgICBbSU5LQTR4MF0gTkcgaGFyZHdhcmU6IGZsYXNoIHN1cHBvcnQKCiAgICBEaXNhYmxlZCBhbmQgcmVtb3ZlIGlua2E0eDAgY3VzdG9tIGZsYXNoIGRyaXZlciwgdXNlIENGSSBmbGFzaAogICAgZHJpdmVyIGluc3RlYWQuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCA1ZmI2ZDcxOTFlMjA2Y2RkZTBlMjMxNDBmZDgxMTFjYWVkOTNhNTk1CkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IE5vdiAxNSAxMzoyOTo1NSAyMDA3ICswMTAwCgogICAgW0lOS0E0eDBdIE5HIGhhcmR3YXJlOiBTRFJBTSBzdXBwb3J0CgogICAgQWRkIHN1cHBvcnQgZm9yIHRocmVlIG5ldyBERFIgY2hpcHMgdGhhdCBtYXkgIGJlIHByZXNlbnQgb24gYSBORwogICAgSU5LQTR4MCBoYXJkd2FyZTogSFlCMjVENTEyMTYwQkYtNSwgSzRINTExNjM4Qy03Q0IzLCBUNDZWMzJNMTZCTi02SVQuCgogICAgQ2xlYW51cCBib2FyZC9pbmthNHgwL210NDhsYzE2bTE2YTItNzUuaCBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgZjIzY2IzNGMzNjdiYjI3NTg1YTRmZGI4YTc1Mjc3MzcwZTdkMDU5NgpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVRodSBOb3YgMTUgMTM6MjQ6NDMgMjAwNyArMDEwMAoKICAgIFtJTktBNHgwXSBORyBoYXJkd2FyZTogcGxhdGZvcm0gY29kZSB1cGRhdGUKCiAgICAtIENsZWFudXAgY29tcGlsZSB3YXJuaW5ncy4KICAgIC0gQWRkIG1pc3NpbmcgJ1wwJyBpbiBkZWZhdWx0IGVudmlyb25tZW50LgogICAgLSBJbmNyZWFzZSBDRkdfTU9OSVRPUl9MRU4gdG8gMjU2IEtpQi4KICAgIC0gQWRkIHJlcXVpcmVkIENGR19VU0VfUFBDRU5WLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgMmFlNjRmNTEzNWU1MWJiMTg3NTM4ODRkMTI2NWI5OWU4OWI1YWVkZApBdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+CkRhdGU6CVRodSBOb3YgMTUgMDg6NTg6MDAgMjAwNyArMDAwMAoKICAgIFJlbW92ZSB3YXJuaW5ncyByZSBDT05GSUdfRVhUUkFfRU5WX1NFVFRJTkdTCiAgICBSZW1vdmUgd2FybmluZ3MgcmUgb25lbmFuZF9yZWFkKCkgJiB3cml0ZSgpCgpjb21taXQgMmRiOTE2ZTE0NDEwZTNlYzE3Mzg1MDhjN2JmNGRmZWIyYjI5OWFlNwpBdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+CkRhdGU6CVRodSBOb3YgMTUgMDg6NDU6MTMgMjAwNyArMDAwMAoKICAgIENvcnJlY3Rpb24gcGF0Y2gKCmNvbW1pdCAxZDhhNDllY2ExYzdiZGM4ZGIxYzQ3YTkyZjkwMTRhMjllYWQwM2FlCkF1dGhvcjogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgU2VwIDEzIDE4OjUyOjI4IDIwMDcgKzA4MDAKCiAgICBFbmFibGUgVUxpMTU3NSBFdGhlcm5ldCBzdXBwb3J0IGluIDg2MTBIUENEIGNvbmZpZwoKICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDU0ZmQ2YzkzYzI4YTBhNDUzNTJmZmY1ZGQ5MjY3MzQwMWZmNTYzZjIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBOb3YgMTMgMDg6MTg6MjAgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogbHdtb241OiBDaGFuZ2UgUEhZIHJlc2V0IHNlcXVlbmNlIGZvciBQSFkgTURJTyBhZGRyZXNzIGxhdGNoaW5nCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDdkMGE0MDY2YjVhNmI2OThlNWZjMWI2NmNmZTk3MDU3NzRiYmNlOTMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBOb3YgMTMgMDg6MDY6MTEgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogRml4IDQwNUVYIFBDSWUgVVRMU0VUIHJlZ2lzdGVyIHNldHVwCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDFjZTU1MTUxYzg1ZDA2OGY3MDMxN2E4ZDY1YzYxMDU4Yjg5MWFmYjQKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVHVlIE5vdiAxMyAwNzo1MDoyOSAyMDA3ICswMTAwCgogICAgW1VDMTAxXSBTUkFNIG5vdyB3aXRoIDIgTUIgd29ya2luZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAyZDE0Njg0MzQxMTA5YTY5NjE2ZTRkNjAxNmNkNjE0MDJkNTUwODZmCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CUZyaSBOb3YgOSAxNTozNzo1MyAyMDA3ICswMTAwCgogICAgcHBjNHh4OiBVc2UgZ2VuZXJpYyB1c2Itb2hjaSBkcml2ZXIgZm9yIHNlcXVvaWEgYm9hcmQKCiAgICBUaGlzIHBhdGNoIG1ha2VzIHRoZSBzZXF1b2lhIGJvYXJkIHVzZSB0aGUgZ2VuZXJpYyB1c2Itb2hjaSBkcml2ZXIKICAgIGluc3RlYWQgb2YgY3B1L3BwYzR4eC91c2Jfb2hjaS5jLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDliZTY1OWFjMDg2OGRjMzY3Y2FhOTU3YzVjNzI1ZTQ2YjA3ZjZhNWYKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJRnJpIE5vdiA5IDE1OjM3OjIzIDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IE1ha2UgVVNCIHdvcmtpbmcgd2l0aCBDT05GSUdfNHh4X0RDQUNIRSBkZWZpbmVkCgogICAgVGhpcyBwYXRjaCBkaXNhYmxlcyB0aGUgNDR4IGQtY2FjaGUgb24gJ3VzYiBzdGFydCcgYW5kCiAgICByZWVuYWJsZXMgaXQgb24gJ3VzYiBzdG9wJy4gVGhpcyBzaG91bGQgYmUgc2VlbiBhcyBhCiAgICB0ZW1wb3JhcnkgZml4IHVudGlsIHRoZSBnZW5lcmljIHVzYi1vaGNpIGRyaXZlciBjYW4KICAgIGxpZmUgd2l0aCBkLWNhY2hlIGVuYWJsZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZmJkZTIxNjlkMmM0OGZjYzlmZjAzNDg5NTM0YTc4ZmZiMGE4YTBkNApBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglGcmkgTm92IDkgMTU6MzY6NDQgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogUmVtb3ZlIHJlZHVuZGFudCBjb2RlIGZyb20gNHh4IG5ldHdvcmsgZHJpdmVyCgogICAgVGhpcyBwYXRjaCByZW1vdmVzIHNvbWUgcmVkdW5kYW50IGNvZGUgYW5kIGRlY3JlbWVudHMgdGhlIGVuZAogICAgYWRkcmVzcyBvZiBjYWNoZSBmbHVzaCBhbmQgaW52YWxpZGF0ZSBieSAxLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDVjYTk4ODFhYWQ4YzQxM2FjMmE4Mjg2OGE1ZTM3MTkxNzgyNTQ1MDIKQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgpEYXRlOglGcmkgTm92IDkgMTU6MjQ6MjYgMjAwNyArMDAwMAoKICAgIEFkZCBhcG9sbG9uIGJvYXJkIHN1cHBvcnQKICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Cgpjb21taXQgYjUzMzEzZGJmYzc0NTI1ZDg1ZjFlN2UwMTAyZjkwMmQ1Yzg2M2JlYgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIE5vdiA5IDEyOjE5OjU4IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IFJlbW92ZSBJbjovT3V0Oi9FcnI6IGJvb3Qgb3V0cHV0IGZvciBBTUNDIEtpbGF1ZWEKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYzdmNjljMzQwMjc3OTM1YTZjMTlhOTU2NDIxODUyZGE5NDRhMzY1ZgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIE5vdiA5IDEyOjE4OjU0IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IE1ha2Ugb3V0cHV0IGEgbGl0dGxlIHNob3J0ZXIgb24gSTJDIGJvb3Ryb20gZGV0ZWN0aW9uCgogICAgTW9zdCA0eHggUFBDIGNhcGFibGUgb2YgdXNpbmcgYW4gSTJDIGJvb3Ryb20gZm9yIGJvb3RzdHJhcCBzZXR0aW5nCiAgICBhbHJlYWR5IHByaW50IGEgbGluZSB3aXRoIHRoZSBpbmZvcm1hdGlvbiB3aGljaCBJMkMgYm9vdHJvbSBpcwogICAgdXNlZCBmb3IgYm9vdHN0cmFwIGNvbmZpZ3VyYXRpb24uIFNvIHdlIGRvbid0IG5lZWQgdGhpcyBleHRyYSBsaW5lCiAgICB3aXRoICJJMkMgYm9vdCBFRVBST00gZW4tL2Rpcy1hYmxlZCIuCgogICAgVGhpcyBwYXRjaCBhbHNvIGhhcyBhIGxpdHRsZSBjb2RlIGNsZWFudXAgaW50ZWdyYXRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOGQ3MzdhMjgxNTJlYzEyODczZjg1NDRjY2ExZmIzOWE0OWU1ZTY5MwpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE5vdiA4IDEyOjUwOjE4IDIwMDcgLTA2MDAKCiAgICBDb2xkRmlyZTogTUNGNTMyOSAtIFJlbW92ZSByZXNldCByZWdpc3RlcnMgZnJvbSBDQ00KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgN2Q3Y2RlYTc2OWE2MGIwYTZlNGMxOGJlZjdmOWQ2NDhmZDE0YjhkNwpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE5vdiA4IDEyOjMxOjExIDIwMDcgLTA2MDAKCiAgICBDb2xkRmlyZTogTUNGNTMyOSAtIEFkZCBSZXNldCBzdHJ1Y3R1cmUgdG8gaW1tYXBfNTMyOS5oCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDA5YjI2Y2YwMGQ3NmQ3NWZkZjdmZGM0YjEzZTRkZDkyOTc0M2JjMjEKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBOb3YgOCAxMjoxOTowMSAyMDA3IC0wNjAwCgogICAgQ29sZEZpcmU6IE1DRjUzMjkgLSByZXZlcnQgaW5jbHVkZS9hc20tbTY4ay9tNTMyOS5oIGZpbGUgbW9kZQoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyMjVhMjRiNWUwNjJhZDk0NjI3NDI0NTA4YWU4MTRmNTFkYmUxYTM0CkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTm92IDcgMTg6MDA6NTQgMjAwNyAtMDYwMAoKICAgIENvbGRGaXJlOiBNQ0Y1NDQ1eCAtIFVwZGF0ZSBjb3JyZWN0IFJBTUJBUiBhbmQgbWlzc2luZyBsaW5rZXIgZmlsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjQ4YzdjMTQ4MzVmMzRkNWQ5MTBiNDVlNTYwMDA1MGU1OGNhNmNhYgpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE5vdiA3IDE3OjU2OjE1IDIwMDcgLTA2MDAKCiAgICBDb2xkRmlyZTogTUNGNTMyeCAtIFVwZGF0ZSBkb19yZXNldCgpIHVzaW5nIGNvcmUgcmVzZXQKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDkyNDBhNWY4MjdlYjNiNDc2YTZiYTI5MzhkMDFmMWE5ZTc2ODhmNApBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE5vdiA3IDE3OjUxOjAwIDIwMDcgLTA2MDAKCiAgICBDb2xkRmlyZTogVXBkYXRlIGNwdSBmbGFnIGZvciA0LjIteHggY29tcGlsZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMDcwYmE1NjExNWI0ZGE2M2I0NmU5NzQyODdmYTQ1NTBkNDAyMzM4NgpBdXRob3I6IFlvcmsgU3VuIDx5b3Jrc3VuQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBPY3QgMzEgMTQ6NTk6MDQgMjAwNyAtMDUwMAoKICAgIDg2MTA6IEFkZCBjb25zb2xlIGZyYW1lIGJ1ZmZlciBzdXBwb3J0IHRvIEZTTCA4NjEwIERJVSBkcml2ZXIuCgogICAgQWRkIGNmYiBjb25zb2xlIHN1cHBvcnQgdG8gRlNMIDg2MTAgRElVIGRyaXZlci4KICAgIEluc3BlY3QgYm9hcmQgdmVyc2lvbiBmcm9tIFBJWElTIHRvIG9idGFpbiBjb3JyZWN0IHBpeGVsIGZvcm1hdC4KCiAgICBVc2UgI2RlZmluZSBDT05GSUdfVklERU8gaW4gY29uZmlnIGZpbGUgdG8gZW5hYmxlIGZiIGNvbnNvbGUuCgogICAgVG8gc3dpdGNoIG1vbml0b3IsIHNldCBtb25pdG9yIHZhcmlhYmxlIHRvCiAgICAwIC0gRFZJLCAxIC0gU2luZ2xlIGxpbmsgTFZEUywgMiAtIERvdWJsZSBsaW5rIExWRFMKICAgIGZvbGxvd2VkIGJ5ICJkaXVmYiBpbml0Ii4KCiAgICBQcmVzZXJ2ZSBsb2dvIGJpdG1hcCBhdCB0aGUgdG9wIG9mIHRoZSBmYiBjb25zb2xlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFlvcmsgU3VuIDx5b3Jrc3VuQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGE4Nzc4ODBjNjk0OWU5NDhiZDYzY2Q2ZWE0ZTIxNjU3M2QyZjUzZGQKQXV0aG9yOiBZb3JrIFN1biA8eW9ya3N1bkBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gT2N0IDI5IDEzOjU4OjM5IDIwMDcgLTA1MDAKCiAgICA4NjEwOiBBZGQgODYxMCBESVUgZGlzcGxheSBkcml2ZXIKCiAgICAxMjgweDEwMjQgYW5kIDEwMjR4NzY4IEAgMzIgYnBwIGFyZSBzdXBwb3J0ZWQgbm93LgogICAgRFZJLCBTaW5nbGUtbGluayBMVkRTLCBEb3VibGUtbGluayBMVkRTIGFyZSBhbGwgc3VwcG9ydGVkLgoKICAgIEVudmlyb25tZW50YWwgdmFyaWFibGUgIm1vbml0b3IiIGlzIHVzZWQgdG8gc3BlY2lmeSBtb25pdG9yIHBvcnQuCgogICAgQSBuZXcgY29tbWFuZCAiZGl1ZmIiIGlzIGludHJvZHVjZWQgdG8gcmVpbml0aWFsaXplIG1vbml0b3IKICAgIGFuZCBkaXNwbGF5IGEgQk1QIGZpbGUgaW4gdGhlIG1lbW9yeS4gU28gZmFyLCAxLWJpdCwgNC1iaXQsCiAgICA4LWJpdCBhbmQgMjQtYml0IEJNUCBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQuCgoJZGl1ZmIgaW5pdAoJICAgIC0gaW5pdGlhbGl6ZSB0aGUgZGl1IGRyaXZlcgoJRW5hYmxlIHRoZSBwb3J0IHNwZWNpZmllZCBpbiB0aGUgZW52aXJvbm1lbnRhbCB2YXJpYWJsZSAibW9uaXRvciIKCglkaXVmYiBhZGRyCgkgICAgLSBkaXNwbGF5IGJtcCBmaWxlIGluIG1lbW9yeS4KCVRoZSBibXAgaW1hZ2Ugc2hvdWxkIGJlIG5vIGJpZ2dlciB0aGFuIHRoZSByZXNvbHV0aW9uLCAxMjgweDEwMjQKCWZvciBEVkkgYW5kIGRvdWJsZS1saW5rIExWRFMsIDEwMjR4NzY4IGZvciBzaW5nbGUtbGluayBMVkRTLgoKICAgIE5vdGUsIHRoaXMgZHJpdmVyIGFsbG9jYXRlIG1lbW9yeSBidXQgZG9lc24ndCBmcmVlIGl0IGFmdGVyIHVzZQogICAgSXQgaXMgd3JpdHRlbiBvbiBwdXJwb3NlIC0tIHRvIGF2b2lkIGEgZmFpbHVyZSBvZiByZWFsbG9jYXRpb24KICAgIGR1ZSB0byBtZW1vcnkgZnJhZ2VtZW50LgoKICAgIEVDQyBvZiBERFIgaXMgZGlzYWJsZWQgZm9yIERJVSBwZXJmb3JtYW5jZS4gTDIgZGF0YSBjYWNoZSBpcyBhbHNvIGRpc2FibGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFlvcmsgU3VuIDx5b3Jrc3VuQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gbG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDUyZTVkZGZlY2RkYTMwOGY3NTc4MmZhZTIwNmI2NzdiMTgxMGY1ZjkKQXV0aG9yOiBZb3JrIFN1biA8eW9ya3N1bkBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgT2N0IDMxIDEwOjQzOjU5IDIwMDcgLTA1MDAKCiAgICBGU0w6IEFkZCBhIGZyZWVzY2FsZSBiaXRtYXAgbG9nby4KCiAgICBUaGlzIEZyZWVzY2FsZSBsb2dvIGlzIGEgMzQwIHggMTI4IHggNGJwcCBCTVAgZmlsZQogICAgdGhhdCBjYW4gYmUgZGlzcGxheWVkIGJ5IHRoZSBESVUgRnJhbWVidWZmZXIgZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFlvcmsgU3VuIDx5b3Jrc3VuQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDE4MTUzMzhmYmQxYzBmOTRmODI3NmQyODkxYjk5Y2FhNWEwNWY2MjIKQXV0aG9yOiBZb3JrIFN1biA8eW9ya3N1bkBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gT2N0IDI5IDEzOjU3OjUzIDIwMDcgLTA1MDAKCiAgICA4NjEwOiBNYWtlIHNvbWUgZXh0cmEgZGVidWcgZW52aXJvbm1lbnQgdmFyaWFibGVzIGNvbmRpdGlvbmFsLgoKICAgIE9uZSBtYXkgI2RlZmluZSBFTlZfREVCVUcgdG8gZ2V0IHRoZW0gYmFjayBhZ2Fpbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZb3JrIFN1biA8eW9ya3N1bkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDc2MTQyMWNjY2E4MGE5ZmIzN2IxOWMzN2FhNjFkNDZlZjc1ZTA2NDcKQXV0aG9yOiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gT2N0IDI5IDE5OjI2OjIxIDIwMDcgKzA4MDAKCiAgICA4NjEwOiBBY3R1YWxseSBlbmFibGUgcGl4aXNfcmVzZXQgQ09ORklHcwoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjNiY2VhYWIyMzBiNDc0OGQwYWZjNDEwOWI2ODM3MzA4ZjAxOGI0MApBdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBPY3QgMjYgMTg6MzE6NTkgMjAwNyArMDgwMAoKICAgIEZpeCB0aGUgQkFUIGRlZmluaXRpb24gb2YgUENJIElPIG9uIDg2MTAgYm9hcmQKCiAgICBUaGUgYWRkcmVzcyBpbiB0aGUgQkFUIHJlZ2lzdGVyIGlzIGFsaWduZWQgd2l0aCB0aGUgQkFUIHNpemUuCiAgICBUaGUgb3JpZ2luYWwgZGVmaW5pdGlvbiBhY3R1YWxseSBkaWQgbm90IGRlZmluZSBCQVQgZm9yIFBDSUUyIElPLgogICAgVGhpcyBwYXRjaCBmaXggdGhpcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDlmMjNjYTMzNGE2ZjVmMDIxZWY5ZTlkMGZhZDlkYTgwZDYzYjJkNTYKQXV0aG9yOiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gT2N0IDI5IDE5OjI2OjIxIDIwMDcgKzA4MDAKCiAgICBVbmlmeSBwaXhpc19yZXNldCBhbHRiYW5rIGFjcm9zcyBib2FyZCBmYW1pbGllcwoKICAgIEJhc2ljYWxseSwgcmVmYWN0b3IgdGhlIENGR19QSVhJU19WQk9PVF9NQVNLIHZhbHVlcwogICAgaW50byB0aGUgc2VwYXJhdGUgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGE4MzE4ZWMyMDVjOGU4Nzk0YjVmOWYxYjg1ODRhYmFkYjQ0MGU4YmEKQXV0aG9yOiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgT2N0IDI2IDE4OjMyOjAwIDIwMDcgKzA4MDAKCiAgICBtYWtlIDg2MTAgYm9hcmQgdXNlIHBpeGlzIHJlc2V0CgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5Yzg0NzA5ZWVkY2U5YzY4MGRkNjk1OTg0YWI3ZDIzMjhmNGYwNGY1CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE5vdiAxIDEyOjIzOjI5IDIwMDcgLTA1MDAKCiAgICA4Nnh4OiBGaXggYnJva2VuIHZhcmlhYmxlIHJlZmVyZW5jZSB3aGVuICNkZWYgREVCVUdpbmcuCgogICAgU29tZXRpbWVzIHlvdSBjYW4ndCByZWZlcmVuY2UgdGhlIEREUjIgY29udHJvbGxlciB2YXJpYWJsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxZjEwMzEwNWEzNzQ2YWIxMjI3OWI2M2I4YzFkMzcyYzBjZTJjYzU4CkF1dGhvcjogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gTm92IDUgMTc6Mzk6MjQgMjAwNyArMDgwMAoKICAgIEltcGxlbWVudCBnZW5lcmFsIFVMaSA1MjZ4IEV0aGVybmV0IGRyaXZlciBzdXBwb3J0IGluIFUtYm9vdAoKICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBnZW5lcmFsIFVMaSA1MjZ4IEV0aGVybmV0IGRyaXZlci4KICAgIFVudGlsIG5vdywgaXQgaXMgdGhlIG9ubHkgbmF0aXZlIEV0aGVybmV0IHBvcnQgb24KICAgIE1QQzg2MTBIUENEIGJvYXJkLCBidXQgaXQgY291bGQgYmUgdXNlZCBvbiBvdGhlciBib2FyZHMKICAgIHdpdGggVUxpIDUyNnggRXRoZXJuZXQgcG9ydCBhcyB3ZWxsLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJ3YXJyZW5AcXN0cmVhbXMuY29tPgoKY29tbWl0IDcxYmM2ZTY0NzRmZWE4ZWY0ODFiOWI0NWQxZWRkN2FkMWY2ZGZiYmQKQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYXJsaW54LmNvbT4KRGF0ZToJVGh1IE5vdiAxIDA4OjQ2OjUwIDIwMDcgLTA1MDAKCiAgICBORVQ6IEFkZCBFdGhlcm5ldCAxMDAwQkFTRS1YIHN1cHBvcnQgZm9yIFBQQzR4eAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciAxMDAwQkFTRS1YIHRvIGZ1bmN0aW9ucyAibWlpcGh5X3NwZWVkICgpIiBhbmQKICAgICJtaWlwaHlfZHVwbGV4KCkiLglJdCBhbHNvIGFkZHMgZnVuY3Rpb24gIm1paXBoeV9pc18xMDAwYmFzZV94ICgpIiwgd2hpY2gKICAgIHJldHVybnMgbm9uLXplcm8gaWZmIHRoZSBQSFkgcmVnaXN0ZXJzIGFyZSBjb25maWd1cmVkIGZvciAxMDAwQkFTRS1YLiAgVGhlCiAgICAibWlpIGluZm8iIGNvbW1hbmQgaXMgbW9kaWZpZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiAxMDAwQkFTRS1UIGFuZCAtWC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJ3YXJyZW5AcXN0cmVhbXMuY29tPgoKY29tbWl0IDI5ODAzNWRmNDk0OGIxMTNkMjlhYzBlNjk0NzE3ZDM0Yjk1YmM1ZGMKQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYXJsaW54LmNvbT4KRGF0ZToJV2VkIE9jdCAzMSAxMToyMToyOSAyMDA3IC0wNTAwCgogICAgTkVUOiBDb3NtZXRpYyBjaGFuZ2VzCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxid2FycmVuQHFzdHJlYW1zLmNvbT4KCmNvbW1pdCA2NTRmMzhiM2EzODc4ODY5OTZhNWE3NTc3MWZiZmMyOWNiNGYyMjVlCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gTm92IDUgMDc6NDM6MDUgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogTWFrZSBvdXRwdXQgYSBsaXR0bGUgc2hvcnRlciBvbiBQQ0llIGRldGVjdGlvbgoKICAgIE5vdyBub3QgbWF4IDMgbGluZXMgYnV0IDIgbGluZXMgYXJlIHByaW50ZWQgcGVyIFBDSWUgcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOTkyNzQyYTViMDlkOTA0MGFkYmQxNTZmYjkwNzU2YWY2NmFkZTMxMApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBOb3YgMyAyMzowOToyNyAyMDA3ICswMTAwCgogICAgQ2xlYW51cCBjb2Rpbmcgc3R5bGU7IHVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGU4ODFjYjU2M2UzMmY0NTgzMmI3YjZkYjc3YmRjZDAxN2FkY2JiNDEKQXV0aG9yOiBCcnVjZSBBZGxlciA8YnJ1Y2UuYWRsZXJAY2NwdS5jb20+CkRhdGU6CUZyaSBOb3YgMiAxMzoxNTo0MiAyMDA3IC0wNzAwCgogICAgZml4IHdvcmRpbmcgaW4gUkVBRE1FCgogICAgQ2hhbmdlZCB0aGUgd29yZGluZyB0byBwcm9wZXJseSBkZXNjcmliZSB0aGUgc2hhZG93aW5nCiAgICBvZiB0aGUgZW52aXJvbm1lbnQgZnJvbSBST00gdG8gUkFNCgogICAgU2lnbmVkLW9mZi1ieTogQnJ1Y2UgQWRsZXIgPGJydWNlLmFkbGVyQGFjbS5vcmc+Cgpjb21taXQgYWQ4NDViZWVmMDYyNDU0MjZjNTdiNTNkY2RjMDFiN2RjNzBlMGQ0NQpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVdlZCBPY3QgMzEgMDI6MTg6MTUgMjAwNyArMDkwMAoKICAgIGJsYWNrZmluOiBNb3ZlIGAtRF9fQkxBQ0tGSU5fXycgdG8gJChBUkNIKV9jb25maWcubWsKCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IGVjMjI3NTU3OTk0NjZjOGExMDM2NjRiYjNhNWU2NDdiZjljMjM4ZjQKQXV0aG9yOiBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4KRGF0ZToJVGh1IE9jdCAyNSAxNjowODoxNCAyMDA3ICswMzAwCgogICAgVHJpbW1lZCBzb21lIHZhcmlhYmxlcyBpbiBuZTIwMDAuYwoKICAgIFNpZ25lZC1vZmYtYnk6IFZsYWQgTHVuZ3UgPHZsYWRAY29tc3lzLnJvPgoKY29tbWl0IGViNmYyMTRkMzY0NGIyYTc3OTY4YzE3NmVkMzZkY2Y4NThjZmU3ZTAKQXV0aG9yOiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgT2N0IDI1IDE3OjUxOjI3IDIwMDcgKzA4MDAKCiAgICBGaXggdGhlIGlzc3VlIG9mIHVzYl9rYmQgZHJpdmVyIG1pc3NpbmcgdGhlIHNjYW4gY29kZSBvZiBrZXkgJ3onLgoKICAgIFRoZSBzY2FuIGNvZGUgb2YgdGhlIGtleSAneicgaXMgMHgxZCwgd2hpY2ggc2hvdWxkIGJlIGhhbmRsZWQuCgogICAgVGhlIGNoYW5nZSBoYXMgYmUgdGVzdGVkIG9uIE5PVkFURUsgVVNCIGtleWJvYXJkIGFuZCBVTEkgUENJIE9IQ0kKICAgIGNvbnRyb2xsZXIuCgogICAgU2lnbmVkLW9mZi1ieTogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiYmY0Nzk2ZjY0OThmYmFkZTU2ZDU2ZWZmM2EwYTQ5YjI5OWQ5M2U1CkF1dGhvcjogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE9jdCAyNSAxNzozMDowNCAyMDA3ICswODAwCgogICAgRml4IFVTQiBzdXBwb3J0IGlzc3VlIGZvciBNUEM4NjQxSFBDTiBib2FyZC4KCiAgICBUaGUgY29uZmlndXJhdGlvbiBmaWxlIGhhcyBhbHJlYWR5IGVuYWJsZWQgVVNCLCBidXQgaXQKICAgIG1pc3NlZCBkZWZpbml0aW9uIG9mIENGR19PSENJX1NXQVBfUkVHX0FDQ0VTUywgdGhlIFVTQgogICAgb24gTVBDODY0MUhQQ04gY2FuIG5vdCB3b3JrIGJlY2F1c2Ugb2YgdGhlIHdyb25nIFVTQgogICAgcmVnaXN0ZXIgZW5kaWFuLgoKICAgIEFuZCBhZGQgdGhlIFVTQiBjb21tYW5kIHRvIFUtQm9vdCBjb21tYW5kcyBsaXN0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNGU2MjA0MTAyM2RjM2RlOWQ5OGQ5NzdiYjA4MDIzNWJjNmQwMzVlMApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBPY3QgMjQgMTg6MTY6MDEgMjAwNyArMDIwMAoKICAgIFVzZSBjb25maWdfY21kX2RlZmF1bHQuaCBpbnN0ZWFkIG9mIGNvbmZpZ19jbWRfYWxsLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDU2NjIyZjg3ODU3NDM5YjFjMjIxZTlkZWVmMTFhOWQ1YmI1ZDQzMDgKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgT2N0IDI0IDAxOjM3OjM2IDIwMDcgKzAyMDAKCiAgICBUUU01MjAwOiBDYWxsIHVzYl9jcHVfaW5pdCgpIGR1cmluZyBib2FyZCBpbml0CgogICAgdXNiX2NwdV9pbml0KCkgY29uZmlndXJlcyBHUFMgVVNCIHBpbnMsIGNsb2NrcywgZXRjLiBhbmQKICAgIGlzIHJlcXVpcmVkIGZvciBwcm9wZXIgb3BlcmF0aW9uIG9mIGtlcm5lbCBVU0Igc3Vic3lzdGVtLgogICAgVGhpcyBzZXR1cCB3YXMgcHJldmlvdXNseSBkb25lIGluIHRoZSBrZXJuZWwgYnkgdGhlIGZpeHVwCiAgICBjb2RlIHdoaWNoIGlzIGJlaW5nIHJlbW92ZWQsIHRodXMgbG93IGxldmVsIGluaXQgbXVzdCBiZQogICAgZG9uZSBieSBVLWJvb3Qgbm93LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgMjljMjljMDI2N2ZlODU3ZTcyMDE0Y2U5MGM1ZDM1YjJlZjYzMDJiZApBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KRGF0ZToJVHVlIE9jdCAyMyAxNjoyNTo1MCAyMDA3ICswMjAwCgogICAgRml4IHR5cG8gaW4gbmZzLmMKCiAgICBBbiBvYnZpb3VzIHR5cG8uIE9yaWdpbmFsbHkgZml4ZWQgaW4gbGlua3N0YXRpb24gdS1ib290IHBvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgoKY29tbWl0IDU5NTQzZmUwMGE0Y2U3MjBlZjlmNWFhN2ZiMzg3YzZkYWYxYzdkNzgKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CkRhdGU6CVR1ZSBPY3QgMjMgMTQ6MzU6MDUgMjAwNyArMDIwMAoKICAgIEZpeCBhIHR5cG8gaW4gY3B1L21wYzgyNHgvaW50ZXJydXB0cy5jCgogICAgU2luY2UgRGVjZW1iZXIgMjAwMyB0aGUgdGltZXJfaW50ZXJydXB0X2NwdSgpIGZ1bmN0aW9uIGluCiAgICBjcHUvbXBjODI0eC9pbnRlcnJ1cHRzLmMgY29udGFpbnMgd2hhdCBzZWVtcyB0byBiZSBhIHN1cGVyZmx1b3VzCiAgICBwYXJhbWV0ZXIuIFJlbW92ZSBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgYzllN2I5YjlhMTcwMGZlMDA5Njc4ZDFmOWI0MWU2MzY0YWM1ZGYyZApBdXRob3I6IFNlcmdlaiBTdGVwYW5vdiA8U2VyZ2VqLlN0ZXBhbm92QGlkcy5kZT4KRGF0ZToJV2VkIE9jdCAxNyAxMToxMzo1MSAyMDA3ICswMjAwCgogICAgYWRkIGZ0X2NwdV9zZXR1cCguLikgb24gbXBjODI2MAoKICAgIEFkZCBmdF9jcHVfc2V0dXAoLi4pLWZ1bmN0aW9uIHRvIGFkYXB0IGl0IGZvciB1c2Ugd2l0aCBsaWJmZHQKICAgIGJhc2VkIG9uIGNvZGUgZnJvbSBtcGM1eHh4CgogICAgU2lnZW5kLW9mZi1ieTogU2VyZ2VqIFN0ZXBhbm92IDxTZXJnZWouU3RlcGFub3ZAaWRzLmRlPgogICAgLS0KCmNvbW1pdCA2YWJkODJlMTlhZTkzYzBiNGQxMDRlNTAxNjVlMjM1OTE1ZWMwODc1CkF1dGhvcjogU2VyZ2VqIFN0ZXBhbm92IDxTZXJnZWouU3RlcGFub3ZAaWRzLmRlPgpEYXRlOglXZWQgT2N0IDE3IDExOjE4OjQyIDIwMDcgKzAyMDAKCiAgICBjaGFuZ2VzIGZvciBJRFM4MjQ3IGJvYXJkIHN1cHBvcnQKCiAgICBUbyBnZXQgdGhlIElEUzgyNDcgYm9hcmQgd29ya2luZyBmb2xsb3dpbmcgYXJlIGRvbmU6CiAgICAgLSBGQ0MyIGlzIGRlYWN0aXZhdGVkCiAgICAgLSBGQ0MxIGlzIGFjdGl2YXRlZAogICAgIC0gSTJDIGlzIGFjdGl2YXRlZAogICAgIC0gQ0ZJIGRyaXZlciBpcyBhY3RpdmF0ZWQKICAgICAtIEFkYXB0ZWQgZm9yIHVzZSB3aXRoIExJQkZEVAoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaiBTdGVwYW5vdiA8U2VyZ2VqLlN0ZXBhbm92QGlkcy5kZT4KICAgIC0tCgpjb21taXQgM2Q2Y2IzYjI0YWRkNjQxNWY4NmEwZjAxM2VhNDBmNTYzOWI5MDA0NwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IE5vdiAzIDEyOjA4OjI4IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IEFkZCBBTUNDIEtpbGF1ZWEvSGFsZWFrYWxhIE5BTkQgYm9vdGluZyBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBhZGRzIE5BTkQgYm9vdGluZyBzdXBwb3J0IGZvciB0aGUgQU1DQyA0MDVFWChyKSBldmFsIGJvYXJkcy4KICAgIEFnYWluLCBvbmx5IG9uZSBpbWFnZSBzdXBwb3J0cyBib3RoIHRhcmdldHMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDhiNjY4NGE2OTg1MDBiZTljMTQyZWMyYzlmNDZjZmMzNDhlMTdmMGMKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJV2VkIE9jdCAyNCAxNTo0ODozNyAyMDA3ICswMjAwCgogICAgQVRTVEsxMDAyOiBSZW1vdmUgZGVmYXVsdCBldGhlcm5ldCBhZGRyZXNzZXMKCiAgICBXb2xmZ2FuZyBpcyByaWdodDogSXQncyBub3QgYSBnb29kIGlkZWEgdG8gc2V0IHVwIGRlZmF1bHQgaW5pdGlhbAogICAgZXRoZXJuZXQgYWRkcmVzc2VzIGZvciBhIGJvYXJkLCBldmVuIHRob3VnaCB0aGV5IGJlbG9uZyB0byB0aGUgbG9jYWwKICAgIHJhbmdlLgoKICAgIFRoaXMgd2lsbCBjaGFuZ2UgdGhlIGZhaWx1cmUgbW9kZSBmcm9tICJJVCBtYW5hZ2VyIHNjcmVhbXMgYXQgeW91IGZvcgogICAgdXNpbmcgZHVwbGljYXRlIGV0aGVybmV0IGFkZHJlc3NlcyIgdG8gYSBuaWNlIGVycm9yIG1lc3NhZ2UgZXhwbGFpbmluZwogICAgdGhhdCB0aGUgZXRoZXJuZXQgYWRkcmVzcyBoYXNuJ3QgYmVlbiBzZXQgcHJvcGVybHkuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgZTVjNzk0ZTQ5MWE1N2Q4MjliNmQ4NzMzZTJlZDgzNjhhMjI2OWFiZgpBdXRob3I6IEp1c3RpbiBGbGFtbWlhIDxqZmxhbW1pYUBzYXZhbnRhdi5jb20+CkRhdGU6CU1vbiBPY3QgMjkgMTc6NDA6MzUgMjAwNyAtMDQwMAoKICAgIERIQ1AgQ2xpZW50IEZpeAoKICAgIFRoaXMgaXMgYSBtdWx0aS1wYXJ0IG1lc3NhZ2UgaW4gTUlNRSBmb3JtYXQuCgogICAgY29tbWl0IGU2ZTUwNWVhZTk0ZWQ3MjFlMTIzZTE3NzQ4OTI5MWZjNDU0NGI3YjgKICAgIEF1dGhvcjogSnVzdGluIEZsYW1taWEgPGpmbGFtbWlhQHNhdmFudGF2LmNvbT4KICAgIERhdGU6ICAgTW9uIE9jdCAyOSAxNzoxOTowMyAyMDA3IC0wNDAwCgoJRm91bmQgYSBidWcgaW4gdGhlIHdheSB0aGUgREhDUCBSZXF1ZXN0IHBhY2tldCBpcyBidWlsdCwgd2hlcmUgdGhlIElQIGFkZHJlc3MKCXRoYXQgaXMgb2ZmZXJlZCBieSB0aGUgc2VydmVyIGlzIGJvdW5kIHRvIHByZW1hdHVyZWx5LiBUaGlzIHBhdGNoIGlzIGEgZml4IG9mCgl0aGF0IGJ1ZyB3aGVyZSB0aGUgSVAgYWRkcmVzcyBvZmZlcmVkIGJ5IHRoZSBESENQIHNlcnZlciBpcyBub3QgdXNlZCB1bnRpbAoJYWZ0ZXIgdGhlIERIQ1AgQUNLIGZyb20gdGhlIHNlcnZlciBpcyByZWNlaXZlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKdXN0aW4gRmxhbW1pYSA8amZsYW1taWFAc2F2YW50YXYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YndhcnJlbkBxc3RyZWFtcy5jb20+Cgpjb21taXQgNWQ5NmQ0MGQzZjM2ZGEzMzM0OGU2OGY5ZWE5OTNmMzgzZTExZjk5NwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE9jdCAzMSAyMDo1ODozNCAyMDA3ICswMTAwCgogICAgcHBjNHh4OiBGaXggYWNhZGlhX25hbmQgYnVpbGQgcHJvYmxlbQoKICAgIFNpbmNlIHRoZSBjYWNoZSBoYW5kbGluZyBmdW5jdGlvbnMgd2VyZSBtb3ZlZCBmcm9tIHN0YXJ0LlMgaW50byBjYWNoZS5TCiAgICB0aGUgYWNhZGlhIE5BTkQgYm9vdGluZyBNYWtmaWxlIG5lZWRzIHRvIGJlIGFkYXB0ZWQgYWNjb3JkaW5nbHkuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGVhMmUxNDI4NDM1MzNjYTU5M2ZjYjVjYjNlMWRhZjFiN2Y1ZTU5NDkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMzEgMjA6NTc6MTEgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogQWRkIENPTkZJR180eHhfRENBQ0hFIGNvbXBpbGUgb3B0aW9ucyB0byBlbmFibGUgY2FjaGVkIFNEUkFNCgogICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBDT05GSUdfNHh4X0RDQUNIRSBvcHRpb25zIHRvIHNvbWUgU0RSQU0gaW5pdCBmaWxlcwogICAgYW5kIHRvIHRoZSBTZXF1b2lhIFRMQiBpbml0IGNvZGUuIE5vdyB0aGUgY2FjaGUgY2FuIGJlIGVuYWJsZWQgb24gNDR4CiAgICBib2FyZHMgYnkgZGVmaW5pbmcgQ09ORklHXzR4eF9EQ0FDSEUgaW4gdGhlIGJvYXJkIGNvbmZpZyBmaWxlLiBUaGlzCiAgICBvcHRpb24gd2lsbCBkaXNhcHBlYXIsIHdoZW4gbW9yZSBib2FyZHMgdXNlIGlzIHN1Y2Nlc3NmdWxseSBhbmQgbm8KICAgIG1vcmUga25vd24gcHJvYmxlbXMgZXhpc3QuCgogICAgVGhpcyBpcyB0ZXN0ZWQgc3VjY2Vzc2Z1bGx5IG9uIFNlcXVvaWEgYW5kIEthdG1haS4gVGhlIG9ubHkgcHJvYmxlbSB0aGF0CiAgICBuZWVkcyB0byBiZSBmaXhlZCBpcywgdGhhdCBVU0IgaXMgbm90IHdvcmtpbmcgb24gU2VxdW9pYSByaWdodCBub3csIHNpbmNlCiAgICBpdCB3aWxsIG5lZWQgc29tZSBjYWNoZSBoYW5kbGluZyBjb2RlIHRvbywgc2ltaWxhciB0byB0aGUgNHh4IEVNQUMgZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzZGI5M2I4YmVkZDMyZTkxNGIzODk3NjE0MWIzZmRmNGVhM2ZmNzM4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgT2N0IDMxIDIwOjUxOjEwIDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IEVuYWJsZSBDUFUgUE9TVCB0ZXN0IGZvciA0eHggd2l0aCBkY2FjaGUgZW5hYmxlZAoKICAgIE5vdyB3aXRoIGNhY2hlcyBlbmFibGVkIChpLSBhbmQgZC1jYWNoZSkgb24gNDR4LCB3ZSBuZWVkIGEgY2hhbmNlIHRvCiAgICBkaXNhYmxlIHRoZSBjYWNoZSBmb3IgdGhlIENQVSBQT1NUIHRlc3RzLCBzaW5jZSB0aGVzZSB0ZXN0cyBjb25zaXN0CiAgICBvZiBzZWxmIG1vZGlmeWluZyBjb2RlLiBUaGlzIGlzIGRvbmUgdmlhIHRoZSBuZXcgY2hhbmdlX3RsYigpIGZ1bmN0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmNzFiMjg4OGI0YjNjODcwOTA5YTAzNDE0MjdiMmE5MTQyNDZmODFmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgT2N0IDMxIDIwOjQ3OjI2IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IENoYW5nZSA0eHggUE9TVCBldGhlcm5ldCB0ZXN0IHRvIGhhbmRsZSBjYWNoZWQgbWVtb3J5IHRvbwoKICAgIFRoaXMgcGF0Y2ggZW5hYmxlcyB0aGUgNHh4IEVNQUMgUE9TVCBkcml2ZXIgdG8gd29yayB0b28sIHdoZW4gZGNhY2hlIGlzCiAgICBlbmFibGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhMjY4NTkwNDA2MWIzNWExNzU4M2Q2NWZlNDdjZGMyNjg2YTY5ZWFhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgT2N0IDMxIDIwOjQ1OjUzIDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IFJlbW92ZSB0ZW1wb3JhcnkgVExCIGVudHJ5IGluIFBPU1QgY2FjaGUgdGVzdCBvbmx5IGZvciA0NDAKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZmY3NjhjYjE2OGQ4MTU3YzI0YTI1MDE2ZGJmYmViNDY1ZTQ3ZjQyMApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE9jdCAzMSAxODowMToyNCAyMDA3ICswMTAwCgogICAgcHBjNHh4OiBDaGFuZ2UgNHh4IGV0aGVybmV0IGRyaXZlciB0byBoYW5kbGUgY2FjaGVkIG1lbW9yeSB0b28KCiAgICBUaGlzIHBhdGNoIGVuYWJsZXMgdGhlIDR4eCBFTUFDIGRyaXZlciB0byB3b3JrIHRvbywgd2hlbiBkY2FjaGUgaXMKICAgIGVuYWJsZWQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDQ4M2UwOWEyMjNjNjY2MjY5ZWY4MWQzNTczYTY1OTFiMTA0NmIwZWYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMzEgMTc6NTk6MjIgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogQWRkIGNoYW5nZV90bGIgZnVuY3Rpb24gdG8gbW9kaWZ5IEkgYXR0cmlidXRlIG9mIFRMQihzKQoKICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBlaXRoZXIgdHVybiBjYWNoZSBvbiBvciBvZmYgaW4gYSBzcGVjaWZpYwogICAgbWVtb3J5IGFyZWEuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGQyNWRmZTA4ZmJkMTIyMGNiOTk0ZTdlNmIxMDUwNDlhYTlhYThlNzkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMzEgMTc6NTc6NTIgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogUmVtb3ZlIGNhY2hlIGRlZmluaXRpb24gZnJvbSA0eHggYm9hcmQgY29uZmlnIGZpbGVzCgogICAgQWxsIDR4eCBib2FyZCBjb25maWcgZmlsZXMgZG9uJ3QgbmVlZCB0aGUgY2FjaGUgZGVmaW5pdGlvbnMgYW55bW9yZS4KICAgIFRoZXNlIGFyZSBub3cgZGVmaW5lZCBpbiBjb21tb24gaGVhZGVycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOWI5NGFjNjFkMjE3NjE4NWMzMGFkZjA3OTNlMDc5ZWMzMGU2ODY4NwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE9jdCAzMSAxNzo1NTo1OCAyMDA3ICswMTAwCgogICAgcHBjNHh4OiBSZXdvcmsgNHh4IGNhY2hlIHN1cHBvcnQKCiAgICBOZXcgY2FjaGUgaGFuZGxpbmcgZnVuY3Rpb25zIGFkZGVkIGFuZCBhbGwgZXhpc3RpbmcgZnVuY3Rpb25zCiAgICBtb3ZlZCBmcm9tIHN0YXJ0LlMgaW50byBzZXBlcmF0ZSBjYWNoZS5TLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwNjcxMzc3M2RhNGFjM2QzOTBjNjNkODI2NDFlYjU1MzIyNGIyN2MyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgT2N0IDIzIDE4OjAzOjEyIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFJlbW92ZSBjb21waWxlciB3YXJuaW5nIGZyb20gcHJldmlvdXMgY29tbWl0CgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDZmYTM5N2RmNjdjMGYyNjllNDUyOGJmMTgxYTZlOGM4OGY5NzIzZjkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBPY3QgMjMgMTQ6NDA6MzAgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogUmVtb3ZlIHRlbXBvcmFyeSBUTEIgZW50cnkgaW4gUE9TVCBjYWNoZSB0ZXN0CgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDEzMzhlNmE4MTgzNDA5OWJhMTk3MzNiNjlhYWZkOGVmNWYwOTgwOTQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBPY3QgMjMgMTQ6MDU6MDggMjAwNyArMDIwMAoKICAgIHBwYzR4eDogQ2hhbmdlIGF1dG9uZWdvdGlhdGlvbiB0aW1lb3V0IGZyb20gNCB0byA1IHNlY29uZHMKCiAgICBJIGxhdGVseSBub3RpY2VkLCB0aGF0IG5ld2VyIDR4eCBib2FyZCB3aXRoIEdCaXQgc3VwcG9ydCBzb21ldGltZXMgZG9uJ3QKICAgIGZpbmlzaCBsaW5rIGF1dG9uZWdvdGlhdGlvbiBpbiA0IHNlY29uZHMuIENoYW5naW5nIHRoaXMgdGltZW91dCB0byA1CiAgICBzZWNvbmRzIHNlZW1zIGZpbmUgaGVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMmQ4MzQ3NmE0YzFjOTkxMWQxNThhM2Y4YTQzMTJkMzU0YmMxYmRiNwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIE9jdCAyMyAxNDowMzoxNyAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBDaGFuZ2UgNHh4X2VuZXQgJiBtaWlwaHkgdG8gdXNlIG91dF9iZTMyKCkgYW5kIGZyaWVuZHMKCiAgICBUaGlzIHBhdGNoIGNoYW5nZXMgYWxsIGluMzIvb3V0MzIgY2FsbHMgdG8gdXNlIHRoZSByZWNvbW1lbmRlZCBpbl9iZTMyLwogICAgb3V0X2JlMzIgbWFjcm9zIGluc3RlYWQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDdkNDdjZWUyY2M1N2Y5MDczODBmMmMwNmY1YjZjNjgzZDAzZTQyM2EKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBPY3QgMjUgMTI6MjQ6NTkgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogRml4IFBPU1QgZXRoZXJuZXQgdGVzdCBmb3IgSGFsZWFrYWxhCgogICAgVGhlIFBPU1QgZXRoZXJuZXQgdGVzdCBuZWVkZWQgdG8gYmUgY2hhbmdlZCB0byBkeW5hbWljYWxseSBkZXRlcm1pbmUKICAgIHRoZSBjb3VudCBvZiBldGhlcm5ldCBkZXZpY2VzLiBUaGlzIGNvZGUgaXMgY2xvbmVkIGZyb20gdGhlIDR4eAogICAgZXRoZXJuZXQgZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmMTA0OTNjNmQ3N2ExZTA3YTZjMmZmNGQ3NzI5MzdhNWU3MzU5ZDZhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgT2N0IDIzIDExOjMxOjA1IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IENvcnJlY3QgVUFSVCBpbnB1dCBjbG9jayBjYWxjdWxhdGlvbiBhbmQgcGFzc2luZyB0byBmZHQKCiAgICBXZSBub3cgdXNlIGEgdmFsdWUgaW4gdGhlIGdkIChnbG9iYWwgZGF0YSkgc3RydWN0dXJlIGZvciB0aGUgVUFSVCBpbnB1dAogICAgZnJlcXVlbmN5LCBzaW5jZSB0aGUgUFBDNHh4X1NZU19JTkZPIHN0cnVjdCBpcyBhbHdheXMgcmV3cml0dGVuIGNvbXBsZXRlbHkKICAgIGluIGdldF9zeXNfaW5mbygpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzNTNmMjY4OGI0ZTBmYzdiOTY5YmM3MGEwMmJlNGI0MGJmMGRkMTI0CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgT2N0IDIzIDEwOjEwOjA4IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBpbml0aWFsIEFNQ0MgSGFsZWFrYWxhIFBQQzQwNUVYciBldmFsIGJvYXJkIHN1cHBvcnQKCiAgICBUaGUgSGFsZWFrYWxhIGlzIG5lYXJseSBpZGVudGljYWwgd2l0aCB0aGUgS2lsYXVlYSBldmFsIGJvYXJkLiBUaGUgb25seQogICAgZGlmZmVyZW5jZSBpcyB0aGF0IHRoZSA0MDVFWHIgb25seSBzdXBwb3J0cyBvbmUgRU1BQyBhbmQgb25lIFBDSWUKICAgIGludGVyZmFjZS4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBIYWxlYWthbGEgYm9hcmQgYnkgdXNpbmcKICAgIHRoZSBpZGVudGljYWwgaW1hZ2UgZm9yIEtpbGF1ZWEgYW5kIEhhbGVha2FsYS4gVGhlIGRpc3RpbmN0aW9uIGlzIGRvbmUKICAgIGJ5IGNvbXBhcmluZyB0aGUgUFZSLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5Zjc5ODc2NmFhODVlNjJlYjhmYThjNzIxZTE0OGRmNjA5Yjc4MTM3CkF1dGhvcjogRXVnZW5lIE8nQnJpZW4gPGV1Z2VuZS5vYnJpZW5AYWR2YW50ZWNoYW10LmNvbT4KRGF0ZToJVHVlIE9jdCAyMyAwODoyOToxMCAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBGaXhlZCBvZmZzZXQgb2YgcmVmcmVzaCByYXRlIHR5cGUgZm9yIEJhbWJvbyBvbi1ib2FyZCBERFIgU0RSQU0KCiAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyBhIG5vdGUgdG8gdGhlIGZpeGVkIEREUiBzZXR1cCBmb3IgQmFtYm9vIE5BTkQgYm9vdGluZzoKCiAgICBOb3RlOgogICAgQXMgZm91bmQgb3V0IGJ5IEV1Z2VuZSBPJ0JyaWVuIDxldWdlbmUub2JyaWVuQGFkdmFudGVjaGFtdC5jb20+LCB0aGUgZml4ZWQKICAgIEREUiBzZXR1cCBoYXMgcHJvYmxlbXMgKFUtQm9vdCBjcmFzaGVzIHJhbmRvbWx5IHVwb24gVEZUUCksIHdoZW4gdGhlIERJTU0KICAgIG1vZHVsZXMgYXJlIHN0aWxsIHBsdWdnZWQgaW4uIFNvIGl0IGlzIHJlY29tbWVuZGVkIHRvIHJlbW92ZSB0aGUgRElNTQogICAgbW9kdWxlcyB3aGlsZSB1c2luZyB0aGUgTkFORCBib290aW5nIGNvZGUgd2l0aCB0aGUgZml4ZWQgU0RSQU0gc2V0dXAhCgogICAgU2lnbmVkLW9mZi1ieTogRXVnZW5lIE8nQnJpZW4gPGV1Z2VuZS5vYnJpZW5AYWR2YW50ZWNoYW10LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhZmU5ZmE1OWNiNjNiNGY5ZDE2YmYwMWM5M2ViMjEyZjI1YTM4YzJhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gT2N0IDIyIDE2OjI0OjQ0IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBTTlRQIHN1cHBvcnQgdG8gQU1DQyBLYXRtYWksIEtpbGF1ZWEgJiBNYWthbHUgYm9hcmRzCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDMyNDhmNjNhZDg5Y2IwMzE0OTFlZGI3MDE2NTg3ZmU2ZTlhMjM4YjkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBPY3QgMjIgMTY6MjI6NDAgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogUmV3b3JrIG9mIDR4eCBzZXJpYWwgZHJpdmVyICg0KQoKICAgIENoYW5nZSA0eHhfdWFydC5jOgoKICAgIC0gVXNlIGluXzgvb3V0XzggbWFjcm9zIGluc3RlYWQgb2YgaW44L291dDgKICAgIC0gTm8gbmVlZCBmb3IgVUFSVF9CQVNFIG1hcmNvIGFueW1vcmUsIG5vdyByZWFsbHkgaGFuZGxlZCB2aWEgZnVuY3Rpb24KICAgICAgcGFyYW1ldGVyCiAgICAtIHNlcmlhbF9pbml0X2NvbW1vbigpIGludHJvZHVjZWQKICAgIC0gRnVydGhlciBjb2Rpbmcgc3R5bGUgY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlNjFjYjgxNjNhNjZiOGExMzU2OTZhZTIzMmUyYmVhZDFjZTBhMDQ5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gT2N0IDIyIDE1OjQ1OjQ5IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFJld29yayBvZiA0eHggc2VyaWFsIGRyaXZlciAoMykKCiAgICBDaGFuZ2UgYWxsIGxpbmtlciBzY3JpcHRzIHRvIHJlZmVyZW5jZSB0aGUgY2hhbmdlZCBkcml2ZXIgbmFtZSBpb3A0ODBfdWFydC5vLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4ODJhZTQxMjc0OTIxZjkwMTYxMzE4MDZiZGViMjdlMTk2MDZmNDdhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gT2N0IDIyIDE1OjQ0OjM5IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFJld29yayBvZiA0eHggc2VyaWFsIGRyaXZlciAoMikKCiAgICBDaGFuZ2UgYWxsIGxpbmtlciBzY3JpcHRzIHRvIHJlZmVyZW5jZSB0aGUgY2hhbmdlZCBkcml2ZXIgbmFtZSA0eHhfdWFydC5vLgoKICAgIE5vdGU6IEluIG1vc3QgY2FzZWQgYWxsIHRoZXNlIGV4cGxpY2l0IHJlZmVyZW5jaW5nIG9mIHRoZXNlIG9iamVjdCBmaWxlcwogICAgaW4gdGhlIGxpbmtlciBzY3JpcHRzIGlzIG5vdCBuZWNjZXNzYXJ5LiBPbmx5IGZvciBtYW51YWxseSBlbWJlZGRlZAogICAgZW52aXJvbm1lbnQgaW50byB0aGUgVS1Cb290IGltYWdlLCB3aGljaCBpcyBub3QgZG9uZSBpcyBtb3N0IGNhc2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhZDMxZTQwYmVkMDQyY2I2NzBkMDAzNmZlYTk2NDM1MDA3YWZiODM4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gT2N0IDIyIDE1OjA5OjU5IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFJld29yayBvZiA0eHggc2VyaWFsIGRyaXZlciAoMSkKCiAgICBUaGlzIHBhdGNoIHN0YXJ0cyB0aGUgcmV3b3JrIG9mIHRoZSBQUEM0eHggc2VyaWFsIGRyaXZlci4gRmlyc3Qgd2Ugc3BsaXQKICAgIHRoZSBmaWxlIGludG8gdHdvIHNlcGVyYXRlIGZpbGVzLCBvbmUgNHh4X3VhcnQuYyB3aXRoIHRoZSA0MDUvNDQwIFVBUlQKICAgIGhhbmRsaW5nIGNvZGUgYW5kIHRoZSBvdGhlciBvbmUgaW9wNDgwX3VhcnQuYyB3aXRoIHRoZSBVQVJUIGNvZGUgZm9yIHRoZQogICAgUExYLVRlY2ggSU9QNDgwIFBQQyAoUFBDNDAzIGJhc2VkKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNzY0ZTc0MTdlZTVmNmUyNWIxNzE1NzIwZTdkN2RkMzQ4NzEwOTM4NQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE9jdCAyMiAxMDozMDozOCAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBDb3JyZWN0IFVBUlQgaW5wdXQgY2xvY2sgY2FsY3VsYXRpb24gYW5kIHBhc3NpbmcgdG8gZmR0CgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDIxMWVhOTFhYzZjMjI1YmVjN2U2NjhhMDNkMGJhN2Q3MzEwNjc5ZmEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBPY3QgMjIgMDc6MzQ6MzQgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogQWRkIGluaXRpYWwgQU1DQyBNYWthbHUgNDA1RVggc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmYThhZWEyMDQ1NmU2ZjFkYmE0M2Y0NmJjYzcyMDI0ZGQ5NDk5OTk4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gT2N0IDIyIDA3OjMzOjUyIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBmcmVxVUFSVCB0byBDUFUgc3BlZWQgZGV0ZWN0aW9uCgogICAgVGhpcyB2YWx1ZSBpcyBuZWVkZWQgbGF0ZXIgZm9yIHRoZSBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9uIG9mCiAgICB0aGUgdWFydCBjbG9jay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODM3YzczMGI0ZDdjNmIxZGRmM2QxZTI0N2NiNDQ0NTAwNWQ5YmYwZApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU3VuIE9jdCAyMSAxNDoyNjoyOSAyMDA3ICswMjAwCgogICAgcHBjOiBTbWFsbCBLaWxhdWVhIGNsZWFudXAgb2YgY29uZmlnIGZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNzU4YzAzN2FlZWFkMzRiNDk2MzFiOGRhM2E5MGIxYmJhMTRjMDQxMApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU3VuIE9jdCAyMSAwODoxNjoxMiAyMDA3ICswMjAwCgogICAgcnRjOiBBZGQgWGljb3IvSW50ZXJzaWwgWDEyMDUgUlRDIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFhpY29yL0ludGVyc2lsIFgxMjA1IFJUQyB1c2VkIG9uIHRoZQogICAgQU1DQyBNYWthbHUgZXZhbCBib2FyZC4gVGhpcyBkcml2ZXIgaXMgYmFzaWNhbGx5IGNsb25lZCBmcm9tIHRoZSBMaW51eAogICAgZHJpdmVyIHZlcnNpb24gKDIuNi4yMykuCgogICAgVGhpcyBwYXRjaCBhbHNvIGludHJvZHVjZXMgdGhlIExpbnV4IGJjZC5oIGhlYWRlciBmb3IgdGhlIEJDRDJCSU4vCiAgICBCSU4yQkNEIGNvbnZlcnNpb25zLiBJbiB0aGUgZnV0dXJlIHNvbWUgb2YgdGhlIG90aGVyIFUtQm9vdCBSVEMgZHJpdmVyCiAgICBzaG91bGQgYmUgY29udmVydGVkIHRvIGFsc28gdXNlIHRoaXMgaGVhZGVyIGluc3RlYWQgb2YgaW1wbGVtZW50aW5nCiAgICB0aGVpciBvd24gbG9jYWwgY29weSBvZiB0aGVzZSBmdW5jdGlvbnMvbWFjcm9zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwODdkZmRiNzliNWZkMWFiOTlhMjY5OTBjNjJhNzMyYzAxYThjN2Y2CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTdW4gT2N0IDIxIDA4OjEyOjQxIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IENvbnNvbGlkYXRlIHNvbWUgb2YgdGhlIDQwNSBhbmQgNDQwIG1hY3Jvcy9zdHJ1Y3RzIGludG8gNHh4CgogICAgVGhpcyBwYXRjaCBtb3ZlcyBzb21lIGNvbW1vbiA0eHggbWFjcm9zIGFuZCB0aGUgUFBDNDA1X1NZU19JTkZPLwogICAgUFBDNDQwX1NZU19JTkZPIHN0cnVjdHVyZSBpbnRvIHRoZSBjb21tb24gcHBjNHh4LmggaGVhZGVyLgoKICAgIExvdCdzIG9mIG90aGVyIG1hY3JvcyBhcmUgZ29vZCBjYW5kaWRhdGVzIHRvIGJlIGNvbnNvbGlkYXRlZCB0aGlzIHdheQogICAgaW4gdGhlIGZ1dHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNzcwYzdhZjU4MDBmNTk4ZDIyNzMwZDFmNGI3MGYxNmM5YjMzNTEyZQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU3VuIE9jdCAyMSAwODowNToxOCAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBGaXggc2l6ZSBzZXR1cCBpbiBLaWxhdWVhIEREUjIgaW5pdCByb3V0aW5lCgogICAgVGhlIHNpemUgd2FzIGluaXRpbGl6ZWQgd3JvbmcuIEluc3RlYWQgb2YgMjU2TUIsIHRoZSBERFIyIGNvbnRyb2xsZXIKICAgIHdhcyBzZXR1cCB0byA1MTJNQi4gTm93IHRoZSBjb3JyZWN0IHZhbHVlcyBpcyB1c2VkLgoKICAgIFRoaXMgcGF0Y2ggYWxzbyBkb2VzIGEgbGl0dGxlIGNsZWFudXAgYW5kIGFkZHMgYSBjb21tZW50IGhlcmUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGY2YmE5YjU2NjA3ZDRiMjc1NTAzMDFjN2M3ZjZiNTViNjU0ZmQ2MmEKQXV0aG9yOiBFdWdlbmUgTydCcmllbiA8ZXVnZW5lLm9icmllbkBhZHZhbnRlY2hhbXQuY29tPgpEYXRlOglUaHUgT2N0IDE4IDE3OjI5OjA0IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IERlZmluZSBDT05GSUdfQk9PS0UgZm9yIGFsbCBQUEM0NDAgYmFzZWQgcHJvY2Vzc29ycwoKICAgIENPTkZJR19CT09LRSBtdXN0IGJlIGRlZmluZWQgZm9yIFBQQzQ0MCBwcm9jZXNzb3JzIHNvIHRoYXQgdGhlIHByb3BlciBTUFIKICAgIG51bWJlciBpcyB1c2VkIHRvIGFjY2VzcyBzeXN0ZW0gcmVnaXN0ZXJzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEV1Z2VuZSBPJ0JyaWVuIDxldWdlbmUub2JyaWVuQGFkdmFudGVjaGFtdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYzM2YzY4MTYwMzMzYWM1ZmU0MWVjM2RiMTJhNzI4YjcwNzViMzkxMgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE9jdCAxOCAwNzo0MjoyNyAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBDaGFuZ2UgaW5ib3VuZCBQQ0llIGxvY2F0aW9uIGZvciBlbmRwb2ludCB0ZXN0cyBvbiBLYXRtYWkKCiAgICBPbiBZdWNjYSAmIEthdG1haSwgdGhlIGluYm91bmQgbWVtb3J5IG1hcCBwb2ludGVkIHRvIDB4NC4wMDAwLjAwMDAsIHdoaWNoCiAgICBpcyB0aGUgaW50ZXJuYWwgU1JBTS4gU2luY2UgSSBub3cgcG9ydGVkIGFuZCB0ZXN0ZWQgdGhpcyBlbmRwb2ludCBtb2RlCiAgICBvbiBLaWxhdWVhIHN1Y2Nlc3NmdWxseSB0byBtYXAgdG8gMCAoU0RSQU0pLCBJIGFsc28gY2hhbmdlZCB0aGlzIGZvcgogICAgS2F0bWFpLgoKICAgIFl1Y2NhIHdpbGwgc3RheSBhdCBpbnRlcm5hbCBTUkFNIGZvciBub3cuIE5vdCBzdXJlIGlmIHNvbWVib2R5IHJlbGllcyBvbgogICAgdGhpcyBzZXR1cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNWNiNGFmNDc5MWY2MTg0MzQzMjE1NTE0MmI2Y2ZhYzkwMWY2NmMxMApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE9jdCAxOCAwNzozOTozOCAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBBZGQgUENJZSBlbmRwb2ludCBzdXBwb3J0IG9uIEtpbGF1ZWEgKDQwNUVYKQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBlbmRwb2ludCBzdXBwb3J0IGZvciB0aGUgQU1DQyBLaWxhdWVhIGV2YWwgYm9hcmQuIEl0IGNhbgogICAgYmUgdGVzdGVkIGJ5IGNvbm5lY3RpbmcgYSByZXdvcmtlZCBQQ0llIGNhYmxlIChvbmx5IDF4IGxhbmUgc2luZ2xlcwogICAgY29ubmVjdGVkKSB0byBhbm90aGVyIHJvb3QtY29tcGxleC4KCiAgICBJbiB0aGlzIHRlc3Qgc2V0dXAsIGEgNjRNQiBpbmJvdW5kIHdpbmRvdyBpcyBjb25maWd1cmVkIGF0IEJBUjAgd2hpY2ggbWFwcwogICAgdG8gMCBvbiB0aGUgUExCIHNpZGUuIFNvIGFjY2Vzc2luZyB0aGlzIEJBUjAgZnJvbSB0aGUgcm9vdC1jb21wbGV4IHdpbGwKICAgIGFjY2VzcyB0aGUgZmlyc3QgNjRNQiBvZiB0aGUgU0RSQU0gb24gdGhlIFBQQyBzaWRlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkNGNiMmQxNzk0NjQ2Njc0MGFmZWIxOTVhNTdkNmNiMjkwYmY0Y2MwCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgT2N0IDEzIDE2OjQzOjIzIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IER5bmFtaWMgY29uZmlndXJhdGlvbiBvZiA0eHggUENJZSBtb2RlIGFzIHJvb3Qgb3IgZW5kcG9pbnQgbW9kZQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBkeW5hbWljIGNvbmZpZ3VyYXRpb24gb2YgUENJZSBwb3J0cyBmb3IgdGhlCiAgICBBTUNDIFBQQzR4eCBib2FyZHMgZXF1aXBwZWQgd2l0aCBQQ0llIGludGVyZmFjZXMuIFRoZXNlIGFyZSB0aGUgUFBDNDQwU1BlCiAgICBib2FyZHMgWXVjY2EgJiBLYXRtYWkgYW5kIHRoZSA0MDVFWCBib2FyZCBLaWxhdWVhLgoKICAgIFRoaXMgZHluYW1pYyBjb25maWd1cmF0aW9uIGlzIGRvbmUgdmlhIHRoZSAicGNpZV9tb2RlIiBlbnZpcm9uZW1lbnQKICAgIHZhcmlhYmxlLiBUaGlzIHZhcmlhYmxlIGNhbiBiZSBzZXQgdG8gIkVQIiBvciAiUlAiIGZvciBlbmRwb2ludCBvcgogICAgcm9vdHBvaW50IG1vZGUuIE11bHRpcGxlIHZhbHVlcyBjYW4gYmUgam9pbmVkIHZpYSB0aGUgIjoiIGRlbGltaXRlci4KICAgIEhlcmUgYW4gZXhhbXBsZToKCiAgICBwY2llX21vZGU9UlA6RVA6RVAKCiAgICBUaGlzIHdheSwgUENJZSBwb3J0IDAgd2lsbCBiZSBjb25maWd1cmVkIGFzIHJvb3Rwb2ludCwgUENJZSBwb3J0IDEgYW5kIDIKICAgIGFzIGVuZHBvaW50LgoKICAgIFBlciBkZWZhdWx0IFl1Y2NhIHdpbGwgYmUgY29uZmlndXJlZCBhczoKICAgIHBjaWVfbW9kZT1SUDpFUDpFUAoKICAgIFBlciBkZWZhdWx0IEthdG1haSB3aWxsIGJlIGNvbmZpZ3VyZWQgYXM6CiAgICBwY2llX21vZGU9UlA6UlA6UkVQCgogICAgUGVyIGRlZmF1bHQgS2lsYXVlYSB3aWxsIGJlIGNvbmZpZ3VyZWQgYXM6CiAgICBwY2llX21vZGU9UlA6UlAKCiAgICBTaWduZWQtb2ZmLWJ5OiBUaXJ1bWFsYSBSIE1hcnJpIDx0bWFycmlAYW1jYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZmQ2NzE4MDJiNjdhMGVmMzdhMDYxMjRmYTJjZTg1ZjAwYWEyMmM2ZgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE9jdCAxMSAxMToxNTo1OSAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBFbmFibGUgZGV2aWNlIHRyZWUgc3VwcG9ydCAoZmR0KSBvbiBLaWxhdWVhIHBlciBkZWZhdWx0CgogICAgVGhpcyBwYXRjaCBlbmFibGVzIHRoZSBmZHQgc3VwcG9ydCBvbiB0aGUgQU1DQyBLaWxhdWVhIGV2YWwgYm9hcmQuCiAgICBBZGRpdGlvbmFsbHkgbm93IEVCQyByYW5nZXMgZmR0IGZpeHVwIGlzIGluY2x1ZGVkIHRvIHN1cHBvcnQgTk9SCiAgICBGTEFTSCBtYXBwaW5nIHZpYSB0aGUgTGludXggcGh5c21hcF9vZiBkcml2ZXIuCgogICAgVGhpcyBLaWxhdWVhIHBvcnQgbm93IHN1cHBvcnQgYm9vdGluZyBhcmNoL3BwYyBhbmQgYXJjaC9wb3dlcnBjCiAgICBMaW51eCBrZXJuZWxzLiBUaGUgZGVmYXVsdCBlbnZpcm9ubWVudCAibmV0X25mcyIgaXMgZm9yIGFyY2gvcHBjCiAgICBhbmQgIm5ldF9uZnNfZmR0IiBpcyBmb3IgYXJjaC9wb3dlcnBjLiBJbiB0aGUgbG9uZyBydW4sIGFyY2gvcHBjCiAgICBzdXBwb3J0IHdpbGwgYmUgcmVtb3ZlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNDk5NGZmZDg5MGI5ZDk1ZDgwNzM4N2E5YjdiZDhhNDgwM2VlNDA2ZQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE9jdCAxMSAxMToxMTo0NSAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBBZGQgYWRkaXRpb25hbCBkZWJ1ZyBpbmZvIHRvIDR4eCBmZHQgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkYjMyMzJkZGIwNThkMGVkMGJjMzFmN2M1YzI5Njc0OGExYWZhYzY3CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgT2N0IDUgMjE6Mjg6NTggMjAwNyArMDIwMAoKICAgIHBwYzR4eDogRml4IHNtYWxsIG1lcmdlIHByb2JsZW1zIHdpdGggQ1BDSTQ0MCBhbmQgQWNhZGlhIGJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxOTQxY2NlNzFiMWFlOTc1NjAyODU0MDQ1MDYxZTgyZjk0ZWNkMDEyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgT2N0IDUgMTc6MzU6MTAgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogRml4IHNtYWxsIG1lcmdlIHByb2JsZW0gaW4gNHh4X2VuZXQuYwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1NjY4MDZjYTFhMWJmNGQ4OTVkYWFmMGIyYmE1NDk0YWJiZmZlYmFmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgT2N0IDUgMTc6MTE6MzAgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogQWRkIGluaXRpYWwgQU1DQyBLaWxhdWVhIDQwNUVYIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZGJiZDEyNTcyMWFlYTY2NDVmZGI5NjJmMzZiZDQxZjU5ZTI3MmY5ZApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIE9jdCA1IDE3OjEwOjU5IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBQUEM0MDVFWCBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDFkN2I4NzRlOWM5YTdjNjZmNWQ4ZGE5ZWM3OGEzNzMzNzY1ZDNlMzEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBPY3QgNSAxNzowOTozNiAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBDbGVhbnVwIG9mIDR4eCBQQ0kgYW5kIFBDSWUgc3VwcG9ydCAocmVuYW1pbmcpCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDRmMTRlZDYyMzBiOWMxMDlhYWM5YTZmYjg3ODQ5N2RhYmQ0NGMyZGIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBPY3QgNSAxNzowNzo1MCAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBBZGQgaW5pdGlhbCBmZHQgc3VwcG9ydCB0byA0eHggKGZpcnN0IG5lZWRlZCBvbiA0MDVFWCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYTQyNGE4YmIyOTI0YjkwNzI0Yjk0NDE2NWQzMTQxZjFmYThkZmU1YgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIE9jdCA1IDE3OjA0OjU3IDIwMDcgKzAyMDAKCiAgICBQT1NUOiBBZGQgNDA1RVggc3VwcG9ydCB0byA0eHggVUFSVCBQT1NUIHRlc3QKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNGYyZTkyYzExZjZlMjM5MmZjODE4NzgyOTIxMWE1Y2E3ZjBjMWUxMgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIE9jdCA1IDE1OjEwOjAyIDIwMDcgKzAyMDAKCiAgICBEVFQ6IFByZXBhcmUgRFMxNzc1IGRyaXZlciBmb3IgdXNlIG9mIGRpZmZlcmVudCBJMkMgYWRkcmVzc2VzCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDE5ZTkzYjFlMTZkMjY3MjIwNDQwZDgyN2I5MjBmYmFkOGFiZmE3MGYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBPY3QgNSAxNDoyMzo0MyAyMDA3ICswMjAwCgogICAgcHBjNHh4OiA0eHhfcGNpZTogQ2hhbmdlIFBDSWUgc3RhdHVzIG91dHB1dCB0byBtYXRjaCBjb21tb24gc3R5bGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZmY2OGY2NmJjYjBkYTg0Nzg0NWFhMmZhYzExZWJhNmMyNTkzOGM5OQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIE9jdCA1IDA5OjIyOjMzIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IDR4eF9wY2llOiBEaXNhYmxlIGRlYnVnIG91dHB1dCBhcyBkZWZhdWx0CgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDk3OTIzNzcwY2I1MmI2NGQ2OWVlYzk1OGExMWIyZWRhOGQ0NmUwZjcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBPY3QgNSAwOToxODoyMyAyMDA3ICswMjAwCgogICAgcHBjNHh4OiA0eHhfcGNpZTogTW9yZSBnZW5lcmFsIGNsZWFudXAgYW5kIDQwNUVYIFBDSWUgc3VwcG9ydCBhZGRlZAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0ZGJlZThhOTBkZjYxM2ViNTE3YWFkYmVjZWJkNzBmMTY4OTEzZDMwCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgT2N0IDUgMDc6NTc6MjAgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogNHh4X3BjaWU6IENoYW5nZSBDRkdfUENJRV9NRU1TSVpFIHRvIDEyOE1CIG9uIFl1Y2NhICYgS2F0bWFpCgogICAgMTI4TUIgc2VlbXMgdG8gYmUgdGhlIHNtYWxsZXN0IHBvc3NpYmxlIHZhbHVlIGZvciB0aGUgbWVtb3J5IHNpemUKICAgIGZvciBvbiBQQ0llIHBvcnQuIFdpdGggdGhpcyBjaGFuZ2Ugbm93IHRoZSBCQVIncyBvZiB0aGUgUENJZSBjYXJkcwogICAgYXJlIGFjY2Vzc2libGUgdW5kZXIgVS1Cb290LgoKICAgIE9uZSBiaWcgbm90ZTogVGhpcyBvbmx5IHdvcmtzIGZvciBQQ0llIHBvcnQgMCAmIDEuIEZvciBwb3J0IDIgdGhpcwogICAgY3VycmVudGx5IGRvZXNuJ3Qgd29yaywgc2luY2UgdGhlIGJhc2UgYWRkcmVzcyBpcyBub3cgMHhjMDAwMDAwMAogICAgKDB4YjAwMDAwMDAgKyAyICogMHgwODAwMDAwMCksIGFuZCB0aGlzIGlzIGFscmVhZHkgb2NjdXBpZWQgYnkKICAgIENGR19QQ0lFMF9DRkdCQVNFLiBCdXQgc29sdmluZyB0aGlzIGlzc3VlIGZvciBwb3J0IDIgd291bGQgbWVhbgogICAgdG8gY2hhbmdlIHRoZSBiYXNlIGFkZHJlc3NlcyBjb21wbGV0ZWx5IGFuZCB0aGlzIGNoYW5nZSB3b3VsZCBoYXZlCiAgICB0b28gbXVjaCBpbXBhY3QgcmlnaHQgbm93LgoKICAgIFRoaXMgcGF0Y2ggYWRkcyBkZWJ1ZyBvdXRwdXQgdG8gdGhlIDR4eCBwY2llIGRyaXZlciB0b28uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDZkOTUyODkyODFlZDI5NThlYmY3NmQyYjU1Zjg2YmJkODg1OTFmZDIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMyAyMToxNjozMiAyMDA3ICswMjAwCgogICAgcHBjNHh4OiA0eHhfcGNpZTogRml4IHByb2JsZW0gd2l0aCBTRFJOIGFjY2VzcyB1c2luZyBwb3J0IG51bWJlciBhcyBpZHgKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMzA0OGJjYmYwYmFkMjYyMzc4YzVhZjY4ZjJiZjY3NzhmYjdkODI5YQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE9jdCAzIDE1OjAxOjAyIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFJlbmFtZSA0MDVncF9wY2kgdG8gNHh4X3BjaSBzaW5jZSBpdHMgdXNlZCBvbiBhbGwgNHh4IHBsYXRmb3JtcwoKICAgIFRoZXNlIGZpbGVzIHdlcmUgaW50cm9kdWNlZCB3aXRoIHRoZSBJQk0gNDA1R1AgYnV0IGFyZSBjdXJyZW50bHkgdXNlZCBvbiBhbGwKICAgIDR4eCBQUEMgcGxhdGZvcm1zLiBTbyB0aGUgbmFtZSBkb2Vzbid0IG1hdGNoIHRoZSBjb250ZW50IGFueW1vcmUuIFRoaXMgcGF0Y2gKICAgIHJlbmFtZXMgdGhlIGZpbGVzIHRvIDR4eF9wY2kuYy9oLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5NDI3NmViMGE3YTM1YjllOGMwNTNkNTg5YWUyMjViMGYwMTdhMjM3CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgT2N0IDMgMTQ6MTQ6NTggMjAwNyArMDIwMAoKICAgIHBwYzR4eDogQWRkIGEgY29tbWVudCBmb3IgNDA1RVggUENJZSBlbmRwb2ludCBjb25maWd1cmF0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDAzZDM0NGJiNmE1ZjA4MmVhMTBlYzlkNzUzNTU4ZWE3ZGZkMWM2MjYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMyAxMDozODowOSAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBNYWtlIDQ0MFNQZSBQQ0llIGNvZGUgbW9yZSBnZW5lcmljIHRvIHVzZSBvbiBkaWZmZXJlbnQgNHh4IFBQQ3MgKDMpCgogICAgKDMpIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBtYWNyb3MgbGlrZSBTRFJOX1BFU0RSX0RMUFNFVChwb3J0KSB0byBhY2Nlc3MKCXRoZSBTRFIgcmVnaXN0ZXJzIG9mIHRoZSBQQ0llIHBvcnRzLiBUaGlzIG1ha2VzIHRoZSBvdmVyYWxsIGRlc2lnbgoJY2xlYXJlciwgc2luY2UgaXQgcmVtb3ZlZCBhIGxvdCBvZiBzd2l0Y2ggc3RhdGVtZW50cyB3aGljaCBhcmUgbm90CgluZWVkZWQgYW55bW9yZS4KCglBbHNvLCB0aGUgZnVuY3Rpb25zIHBwYzR4eF9pbml0X3BjaWVfcm9vdHBvcnQoKSBhbmQKCXBwYzR4eF9pbml0X3BjaWVfZW50cG9ydCgpIGFyZSBtZXJnZWQgaW50byBhIHNpbmdsZSBmdW5jdGlvbgoJcHBjNHh4X2luaXRfcGNpZV9wb3J0KCksIHNpbmNlIG1vc3Qgb2YgdGhlIGNvZGUgd2FzIGR1cGxpY2F0ZWQuCglUaGlzIG1ha2VzIG1haW50YWluYW5jZSBhbmQgcG9ydGluZyB0byBvdGhlciA0eHggcGxhdGZvcm1zCgllYXNpZXIuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDAyNmY3MTEwNjg3MWYzMWQxN2QwZWEwZGI5YTc1NDdmZjkyOTM0YmMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMyAwNzo0ODowOSAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBNYWtlIDQ0MFNQZSBQQ0llIGNvZGUgbW9yZSBnZW5lcmljIHRvIHVzZSBvbiBkaWZmZXJlbnQgNHh4IFBQQ3MgKDIpCgogICAgVGhpcyBwYXRjaCBpcyB0aGUgZmlyc3QgcGF0Y2ggb2YgYSBzZXJpZXMgdG8gbWFrZSB0aGUgNDQwU1BlIFBDSWUgY29kZQogICAgdXNhYmxlIG9uIGRpZmZlcmVudCA0eHggUFBDIHBsYXRmb3Jtcy4gSW4gcHJlcGVyYXRpb24gZm9yIHRoZSBuZXcgNDA1RVgKICAgIHdoaWNoIGlzIGFsc28gZXF1aXBwZWQgd2l0aCBQQ0llIGludGVyZmFjZXMuCgogICAgKDIpIFRoaXMgcGF0Y2ggcmVuYW1lcyB0aGUgZnVuY3Rpb25zIGZyb20gNDQwc3BlXyB0byA0eHhfIHdpdGggYQoJbGl0dGxlIGFkZGl0aW9uYWwgY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjN2M2ZGEyMzAyOGYxNDZkOTEyNTE0Yjk1YWVmYTNkYTdjZjM3Njk5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgT2N0IDMgMDc6MzQ6MTAgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogTWFrZSA0NDBTUGUgUENJZSBjb2RlIG1vcmUgZ2VuZXJpYyB0byB1c2Ugb24gZGlmZmVyZW50IDR4eCBQUENzICgxKQoKICAgIFRoaXMgcGF0Y2ggaXMgdGhlIGZpcnN0IHBhdGNoIG9mIGEgc2VyaWVzIHRvIG1ha2UgdGhlIDQ0MFNQZSBQQ0llIGNvZGUKICAgIHVzYWJsZSBvbiBkaWZmZXJlbnQgNHh4IFBQQyBwbGF0Zm9ybXMuIEluIHByZXBlcmF0aW9uIGZvciB0aGUgbmV3IDQwNUVYCiAgICB3aGljaCBpcyBhbHNvIGVxdWlwcGVkIHdpdGggUENJZSBpbnRlcmZhY2VzLgoKICAgICgxKSBUaGlzIHBhdGNoIHJlbmFtZXMgdGhlIGZpbGVzIGZyb20gNDQwc3BlX3BjaWUgdG8gNHh4X3BjaWUKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMjQ1YTM2MmFkM2MwYzFiODRmY2NjOWZlYzdiNjIzZWIxNGY2ZTUwMgpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBPY3QgMjQgMDE6Mzc6MzYgMjAwNyArMDIwMAoKICAgIFRRTTUyMDA6IENhbGwgdXNiX2NwdV9pbml0KCkgZHVyaW5nIGJvYXJkIGluaXQKCiAgICB1c2JfY3B1X2luaXQoKSBjb25maWd1cmVzIEdQUyBVU0IgcGlucywgY2xvY2tzLCBldGMuIGFuZAogICAgaXMgcmVxdWlyZWQgZm9yIHByb3BlciBvcGVyYXRpb24gb2Yga2VybmVsIFVTQiBzdWJzeXN0ZW0uCiAgICBUaGlzIHNldHVwIHdhcyBwcmV2aW91c2x5IGRvbmUgaW4gdGhlIGtlcm5lbCBieSB0aGUgZml4dXAKICAgIGNvZGUgd2hpY2ggaXMgYmVpbmcgcmVtb3ZlZCwgdGh1cyBsb3cgbGV2ZWwgaW5pdCBtdXN0IGJlCiAgICBkb25lIGJ5IFUtYm9vdCBub3cuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgYjVhZjc3M2Y4ZDkyNjc3ZTA2ZjMyOTViNDU1NTdjOWQwYTQ4N2MyNApBdXRob3I6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBPY3QgMjUgMTc6NTE6MjcgMjAwNyArMDgwMAoKICAgIEZpeCB0aGUgaXNzdWUgb2YgdXNiX2tiZCBkcml2ZXIgbWlzc2luZyB0aGUgc2NhbiBjb2RlIG9mIGtleSAneicuCgogICAgVGhlIHNjYW4gY29kZSBvZiB0aGUga2V5ICd6JyBpcyAweDFkLCB3aGljaCBzaG91bGQgYmUgaGFuZGxlZC4KCiAgICBUaGUgY2hhbmdlIGhhcyBiZSB0ZXN0ZWQgb24gTk9WQVRFSyBVU0Iga2V5Ym9hcmQgYW5kIFVMSSBQQ0kgT0hDSQogICAgY29udHJvbGxlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KCmNvbW1pdCA4NWFjOTg4ZTg2Zjk0MTRmYTY0NWIwMTQ4ZGM2NmMzNTIwYTFlYjg0CkF1dGhvcjogUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAZW5uZWVubmUuY29tPgpEYXRlOglNb24gT2N0IDE1IDExOjU5OjE3IDIwMDcgKzAyMDAKCiAgICBQWEEgVVNCIE9IQ0k6ICJ1c2Igc3RvcCIgaW1wbGVtZW50YXRpb24uCgogICAgU29tZSBVU0Iga2V5cyBuZWVkIHRvIGJlIHN3aXRjaGVkIG9mZiBiZWZvcmUgbG9hZGluZyB0aGUga2VybmVsCiAgICBvdGhlcndpc2UgdGhleSBjYW4gcmVtYWluIGluIGFuIHVuZGVmaW5lZCBzdGF0dXMgd2hpY2ggcHJldmVudHMgdGhlbQogICAgdG8gYmUgY29ycmVjdGx5IHJlY29nbml6ZWQgYnkgdGhlIGtlcm5lbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBsaW51eC5pdD4KICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgMzE1NDgyNDlkZWNmMThhNmI4NzdhMTg0MzZiNjEzOWRkNDgzZmU0YQpBdXRob3I6IEp1c3RpbiBGbGFtbWlhIDxqZmxhbW1pYUBzYXZhbnRhdi5jb20+CkRhdGU6CU1vbiBPY3QgMjkgMTc6NDA6MzUgMjAwNyAtMDQwMAoKICAgIERIQ1AgQ2xpZW50IEZpeAoKICAgIFRoaXMgaXMgYSBtdWx0aS1wYXJ0IG1lc3NhZ2UgaW4gTUlNRSBmb3JtYXQuCgogICAgY29tbWl0IGU2ZTUwNWVhZTk0ZWQ3MjFlMTIzZTE3NzQ4OTI5MWZjNDU0NGI3YjgKICAgIEF1dGhvcjogSnVzdGluIEZsYW1taWEgPGpmbGFtbWlhQHNhdmFudGF2LmNvbT4KICAgIERhdGU6ICAgTW9uIE9jdCAyOSAxNzoxOTowMyAyMDA3IC0wNDAwCgoJRm91bmQgYSBidWcgaW4gdGhlIHdheSB0aGUgREhDUCBSZXF1ZXN0IHBhY2tldCBpcyBidWlsdCwgd2hlcmUgdGhlIElQIGFkZHJlc3MKCXRoYXQgaXMgb2ZmZXJlZCBieSB0aGUgc2VydmVyIGlzIGJvdW5kIHRvIHByZW1hdHVyZWx5LiBUaGlzIHBhdGNoIGlzIGEgZml4IG9mCgl0aGF0IGJ1ZyB3aGVyZSB0aGUgSVAgYWRkcmVzcyBvZmZlcmVkIGJ5IHRoZSBESENQIHNlcnZlciBpcyBub3QgdXNlZCB1bnRpbAoJYWZ0ZXIgdGhlIERIQ1AgQUNLIGZyb20gdGhlIHNlcnZlciBpcyByZWNlaXZlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKdXN0aW4gRmxhbW1pYSA8amZsYW1taWFAc2F2YW50YXYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YndhcnJlbkBxc3RyZWFtcy5jb20+Cgpjb21taXQgZThlZThmM2FkZTJhMDZjMTg5M2RkNWU2OGYyMjMwNzBkNjUwYzdlZApBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE9jdCAyNSAxNzoxNjoyMiAyMDA3IC0wNTAwCgogICAgQ29sZEZpcmUgNTQ0NTU6IEZpeCBjb3JyZWN0IGJvb3QgbG9jYXRpb24gZm9yIGF0bWVsIGFuZCBpbnRlbAoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2ODhlOGViNDE0YWMxMTFjY2E3Y2U2MGJkZjMwZTgwNWFiOWE3YmNiCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgT2N0IDI1IDE3OjE0OjAwIDIwMDcgLTA1MDAKCiAgICBDb2xkRmlyZTogRml4IGJ1aWxkIGVycm9yIHdoZW4gQ09ORklHX1dBVENIRE9HIGlzIGRlZmluZWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYzY3ZTEyZTcwNWIyMDRjZmU5MTRlM2UzZTY5M2Q2OWE0NDVkY2FiZgpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE9jdCAyNSAxNzoxMjozNiAyMDA3IC0wNTAwCgogICAgQ29sZEZpcmUgNTMyOTogQXNzaWduIGNvcnJlY3QgU0RSQU0gc2l6ZSBhbmQgZml4IGNhY2hlCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk1ZTlmMmMyMTJhNjU2MTBiMmU1OWE1YzAwZDAxMTMzODNhNGRhMGIKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBPY3QgMjUgMTc6MTA6MjMgMjAwNyAtMDUwMAoKICAgIENvbGRGaXJlIDUyNTM6IEFzc2lnbiBjb3JyZWN0IFNEUkFNIHNpemUKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMmFjZWZhNzJlZTAwMjZmODYyYWI2NTU5N2NhNjg3NDI4ZjYzYTk3MwpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE9jdCAyNSAxNzowOToxNyAyMDA3IC0wNTAwCgogICAgQ29sZEZpcmUgNTI4MjogRml4IGV4dGVybmFsIGZsYXNoIGJvb3QgYW5kIHJldHVybiBkcmFtc2l6ZQoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkNzg3OTFhZTkxNGQ0ZTdjNWVkY2ExY2RhZDczYjNkYzgxYTRlYjgyCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IE9jdCAyNSAxNzoyMDowMSAyMDA3ICswMjAwCgogICAgVFFNNTIwMDogaW5jcmVhc2Uga2VybmVsX2FkZHJfciBhbmQgZmR0X2FkZHJfciAoaGludGVkIGJ5IFdvbGZnYW5nIERlbmspLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgMWEwY2UyMGFhNGNiNGUzMDY4ZGEwNGU3MjkwZWU5OTg2ZmQwYjgzNApBdXRob3I6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgpEYXRlOglXZWQgT2N0IDI0IDA4OjQyOjI1IDIwMDcgKzAyMDAKCiAgICBUUU01MjAwOiBmaXggc3B1cmlvdXMgY2hhcmFjdGVycyBvbiBzZWNvbmQgc2VyaWFsIGludGVyZmFjZQoKICAgIFdpdGggdGhpcyBwYXRjaCBQU0MzIGlzIGNvbmZpZ3VyZWQgYXMgVUFSVC4gVGhpcyBpcyBkb25lLCBiZWNhdXNlIGlmCiAgICB0aGUgcGlucyBvZiBQU0MzIGFyZSBub3QgY29uZmlndXJlZCBhdCBhbGwgKC0+IGFsbCBwaW5zIGFyZSBHUEkpLAogICAgZHVlIHRvIGNyb3NzdGFsaywgc3B1cmlvdXMgY2hhcmFjdGVycyBtYXkgYmUgc2VuZCBvdmVyIHRoZSBSWDIzMl8yX1RYRAogICAgc2lnbmFsIGxpbmUuCgogICAgU2lnbmVkLW9mZi1ieTogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgYmU0YTg3ZjExZTI5N2E1Y2VkZWRiZjdkZDcxYzAyNDhmMzg3NGFjZApBdXRob3I6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgpEYXRlOglXZWQgT2N0IDI0IDA4OjQxOjI3IDIwMDcgKzAyMDAKCiAgICBUUU01MjAwUzogZml4IGNvbW1hbmRzIGZvciBTVEs1Mnh4IGJhc2UgYm9hcmQgYmVjYXVzZSBvZiBtaXNzaW5nIFNNNTAxIGdyYWZpYyBjb250cm9sbGVyCgogICAgU29tZSBjb21tYW5kcyBmb3IgdGhlIFNUSzUyeHggYmFzZSBib2FyZCB0cnkgdG8gYWNjZXNzIHRoZSBTTTUwMSBncmFmaWMKICAgIGNvbnRyb2xsZXIuIEJ1dCB0aGUgVFFNNTIwMFMgaGFzIG5vIGdyYWZpYyBjb250cm9sbGVyIChvbmx5IHRoZSBUUU01MjAwCiAgICBhbmQgdGhlIFRRTTUyMDBCIGhhdmUpLiBUaGlzIHBhdGNoIGRlYWN0aXZhdGVzIHRoZSBjb21tYW5kcyBhY2Nlc3NpbmcKICAgIHRoZSBTTTUwMSBmb3IgdGhlIFRRTTUyMDBTLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IGIzMWY2NDM0M2VhZDk0ODJjZDQzOWIxYWRiZTRjMzQwMjZhNjQxYjEKQXV0aG9yOiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KRGF0ZToJTW9uIE9jdCAyMiAxNjo0NTo1MyAyMDA3ICswMjAwCgogICAgVFFNNTIwMDogZml4IHNwdXJpb3VzIGNoYXJhY3RlcnMgb24gc2Vjb25kIHNlcmlhbCBpbnRlcmZhY2UKCiAgICBXaXRoIHRoaXMgcGF0Y2ggUFNDMyBpcyBjb25maWd1cmVkIGFzIFVBUlQuIFRoaXMgaXMgZG9uZSwgYmVjYXVzZSBpZgogICAgdGhlIHBpbnMgb2YgUFNDMyBhcmUgbm90IGNvbmZpZ3VyZWQgYXQgYWxsICgtPiBhbGwgcGlucyBhcmUgR1BJKSwKICAgIGR1ZSB0byBjcm9zc3RhbGssIHNwdXJpb3VzIGNoYXJhY3RlcnMgbWF5IGJlIHNlbmQgb3ZlciB0aGUgUlgyMzJfMl9UWEQKICAgIHNpZ25hbCBsaW5lLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgoKY29tbWl0IDBmYzBmOTFiMjBmZmE4MDJmNWE2NjUzNGNhNWMyODQ0OTEwNTgzZjYKQXV0aG9yOiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KRGF0ZToJTW9uIE9jdCAyMiAxNjo0MDowNiAyMDA3ICswMjAwCgogICAgVFFNNTIwMFM6IGZpeCBjb21tYW5kcyBmb3IgU1RLNTJ4eCBiYXNlIGJvYXJkIGJlY2F1c2Ugb2YgbWlzc2luZyBTTTUwMSBncmFmaWMgY29udHJvbGxlcgoKICAgIFNvbWUgY29tbWFuZHMgZm9yIHRoZSBTVEs1Mnh4IGJhc2UgYm9hcmQgdHJ5IHRvIGFjY2VzcyB0aGUgU001MDEgZ3JhZmljCiAgICBjb250cm9sbGVyLiBCdXQgdGhlIFRRTTUyMDBTIGhhcyBubyBncmFmaWMgY29udHJvbGxlciAob25seSB0aGUgVFFNNTIwMAogICAgYW5kIHRoZSBUUU01MjAwQiBoYXZlKS4gVGhpcyBwYXRjaCBkZWFjdGl2YXRlcyB0aGUgY29tbWFuZHMgYWNjZXNzaW5nCiAgICB0aGUgU001MDEgZm9yIHRoZSBUUU01MjAwUy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KCmNvbW1pdCA3YjBhNDIyMTlmMzAyNzdmNzFmNDQwNWNiYWY4YTI2OWY2ZDJkMjI3CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIE9jdCAyMSAwOToxNDoyOCAyMDA3ICswMjAwCgogICAgTWlwczogRml4IHN0cmluZyBmdW5jdGlvbnMgZGlmZmVyIHByb3RvdHlwZSBkZWNsYXJhdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgY2I4MjUwZmU0YjNjNGVkNTQ5YjI3MGU4YTIwYmMyMjA2MGU3ZTFkMgpBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBPY3QgMTkgMTc6NTE6NDAgMjAwNyAtMDUwMAoKICAgIGZzbF9wY2lfaW5pdCBlbmFibGUgQ09NTUFORF9NRU1PUlkgaWYgaW5ib3VuZCB3aW5kb3cKCiAgICBQYXRjaCAxNmUyM2MzZiByZW1vdmVkIFBDU1JCQVIgYWxsb2NhdGlvbi4JQnV0IHBhc3NpbmcgemVybyB3aW5kb3dzCiAgICB0byBwY2lhdXRvX3NldHVwX2RldmljZSBoYXMgdGhlIHNpZGUgZWZmZWN0IG9mIG5vdCBnZXR0aW5nCiAgICBDT01NQU5EX01FTU9SWSBzZXQuCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlOWQwZDUyNzk5MjU2NmViZWY5ODI2OTYyZmYxNzQ1YjJmMDgyYjkyCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIE9jdCAxOSAxMDo1NToyNCAyMDA3ICswMjAwCgogICAgZGVsdGE6IEZpeCBPSENJX1JFR1NfQkFTRSB1bmRlY2xhcmVkIGFuZCB3YWl0X21zIGltcGxpY2l0IGRlY2xhcmF0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA5YzQ4ODRmNTRkYTk4MmNlOTkwYzdkMTc2MGFjODFiMDcwNGQzYzY0CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIE9jdCAxOSAwODoxMDoxNSAyMDA3ICswMjAwCgogICAgZml4IHdhcm5pbmc6IG5vIHJldHVybiBzdGF0ZW1lbnQgaW4gZnVuY3Rpb24gcmV0dXJuaW5nIG5vbi12b2lkCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBlNzgyMjBmNmU1MTQyMDY3NTdhY2ZlMjQ3Mjk3ZmM5YTMyOGE4ODFmCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIE9jdCAxOSAwNjozMzo0NSAyMDA3ICswMjAwCgogICAgeHNlbmdpbmU6IEZpeCBubyBwYXJ0aXRpb24gdHlwZSBzcGVjaWZpZWQsIHVzZSBET1MgYXMgZGVmYXVsdAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMTBjZGI4ZGJkNjdhODE4ODIzYWI5ZWM4OGI2OGZjMzQ4OTAzZGI1OQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBPY3QgMTkgMDA6MjQ6NTkgMjAwNyArMDIwMAoKICAgIGx1YmJvY2s6IEZpeCBubyBwYXJ0aXRpb24gdHlwZSBzcGVjaWZpZWQsIHVzZSBET1MgYXMgZGVmYXVsdAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNDFiNGQyODJkMzhmYTcyMzFjMzE1YzVmNmNmZmY1YmRkMjRlMDE5MQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBPY3QgMjMgMTY6NTA6MDMgMjAwNyArMDIwMAoKICAgIENvZGluZyBzdHlsZToga2VlcCBsaXN0cyBzb3J0ZWQ7IHVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDU4Yjc0YjA1YzYyMWUyODM1ZWNmNGUyZDMyNDMwNDJjZjQxODY3NzcKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglGcmkgT2N0IDE5IDAwOjA5OjA1IDIwMDcgKzAyMDAKCiAgICBGaXggbWlzc2luZyBkcml2ZXJzIG1ha2VmaWxlIGVudHJpZXMgZHMxNzIyLmMgbXdfZWVwcm9tLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDk2NDU1YmZlYmM5ODg3ODM3MDk1YzkwNTFkMjE2ZjUzYzYxYjVmMTAKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglGcmkgT2N0IDE5IDAwOjA3OjM5IDIwMDcgKzAyMDAKCiAgICBGaXggd2FybmluZyBkaWZmZXIgaW4gc2lnbmVkbmVzcyBpbiBib2FyZC9pbm5va29tL2lubm9rb20uYwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMmE0NzQxZDlhMTRlYzQ3NWY1MGU5ODU2ZDJjMGE2N2U4YjQyNzFiZApBdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KRGF0ZToJRnJpIE9jdCAxOSAwMDoyNTozMyAyMDA3ICswMjAwCgogICAgZml4IHB4YTI1NV9pZHAgYm9hcmQKCiAgICBUaGUgcHhhMjU1X2lkcCBiZWluZyBhbiBvbGQgdW5tYWludGFpbmVkIGJvYXJkIHNob3dlZCBzZXZlcmFsIGlzc3VlczoKICAgIDEuIENPTkZJR19JTklUX0NSSVRJQ0FMIHdhcyBzdGlsbCBkZWZpbmVkLgogICAgMi4gTmVpdGhlciBDT05GSUdfTUFDX1BBUlRJVElPTiBub3IgQ09ORklHX0RPU19QQVJUSVRJT04gd2FzIGRlZmluZWQuCiAgICAzLiBTeW1ib2wgZmxhc2hfYWRkciB3YXMgdW5kZWNsYXJlZC4KICAgIDQuIFRoZSBib2FyZHMgbG93bGV2ZWxfaW5pdCBmdW5jdGlvbiB3YXMgc3RpbGwgY2FsbGVkIG1lbXNldHVwLgogICAgNS4gVGhlIFRFWFRfQkFTRSB3YXMgc3RpbGwgMHhhMzAwMDAwMCByYXRoZXIgdGhhbiAweGEzMDgwMDAwLgogICAgNi4gVXNpbmcgLW1hcmNoPWFybXY1IGluc3RlYWQgb2YgLW1hcmNoPWFybXY1dGUgcmVzdWx0ZWQgaW4gbG90cyBvZgogICAgJ3RhcmdldCBDUFUgZG9lcyBub3Qgc3VwcG9ydCBpbnRlcndvcmtpbmcnIHdhcm5pbmdzIG9uIHJlY2VudCBjb21waWxlcnMuCiAgICA3LiBUaGUgUFhBJ3Mgc2VyaWFsIGRyaXZlciByZWRlZmluZWQgRkZVQVJULCBCVFVBUlQgYW5kIFNUVUFSVCB1c2VkIGFzCiAgICBpbmRleGVzIHJhdGhlciB0aGFuIHRoZSByZWdpc3RlciBkZWZpbml0aW9ucyBmcm9tIHRoZSBweGEtcmVncyBoZWFkZXIKICAgIGZpbGUuIFJlbmFtZWQgdGhlbSB0byBGRlVBUlRfSU5ERVgsIEJUVUFSVF9JTkRFWCBhbmQgU1RVQVJUX0lOREVYIHRvCiAgICBhdm9pZCBhbnkgYW1iaWd1aXRpZXMuCiAgICA4LiBUaGVyZSB3ZXJlIHNldmVyYWwgcmVkZWZpbml0aW9uIHdhcm5pbmdzIGNvbmNlcm5pbmcgSUNNUiwgT1NNUjMsCiAgICBPU0NSLCBPV0VSLCBPSUVSLCBSQ1NSIGFuZCBDQ0NSIGluIHRoZSBQWEEncyBhc3NlbWJseSBzdGFydCBmaWxlLgogICAgOS4gVGhlIGJvYXJkIGNvbmZpZ3VyYXRpb24gZmlsZSB3YXMgcmF0aGVyIG91dGRhdGVkLgogICAgMTAuIFRoZSBwYXJ0IGhlYWRlciBmaWxlIGRlZmluZWQgdGhlIHZlbmRvciwgcHJvZHVjdCBhbmQgcmV2aXNpb24gYXJyYXlzCiAgICBhcyB1bnNpZ25lZCBjaGFycyBpbnN0ZWFkIG9mIGp1c3QgY2hhcnMgaW4gdGhlIGJsb2NrX2Rldl9kZXNjX3QKICAgIHN0cnVjdHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+Cgpjb21taXQgMjk4Y2Q0Y2FmZTgxZmY4YTZjODdiZThmYmM0NDBhMjA3MjBkM2VkNgpBdXRob3I6IFJ1bmUgVG9yZ2Vyc2VuIDxydW5ldEBpbm5vdnN5cy5jb20+CkRhdGU6CVdlZCBPY3QgMTcgMTE6NTY6MzEgMjAwNyAtMDUwMAoKICAgIE1ha2UgTVBDODI2NkFEUyBjb21tYW5kIHNlbGVjdGlvbiBtb3JlIHJvYnVzdAoKICAgIEZpeCBNUEM4MjY2IGNvbW1hbmQgbGluZSBkZWZpbml0aW9uIHNvIGl0IHdvbid0IGJyZWFrIHdoZW4gbmV3IGNvbW1hbmRzCiAgICBhcmUgYWRkZWQgdG8gdS1ib290LgogICAgU2lnbmVkLW9mZi1ieSBSdW5lIFRvcmdlcnNlbiA8cnVuZXRAaW5ub3ZzeXMuY29tPgoKY29tbWl0IGQzYWZhMWVlMTkzNDVhMzFmZDFlYWFkM2U5OGI5N2QxM2NhNDczMTUKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgT2N0IDIzIDEzOjE0OjEwIDIwMDcgKzAyMDAKCiAgICBNb3Rpb24tUFJPOiBVcGRhdGUgY29uZmlndXJhdGlvbiB0byBhY2NvbW9kYXRlIG5leHQgZ2VuZXJhdGlvbiBib2FyZC4KCiAgICBOZXcgYm9hcmQgaGFzIGZhc3RlciBvc2NpbGxhdG9yIGFuZCBhIGRpZmZlcmVudCBGbGFzaCBjaGlwLiBUaGlzIGFmZmVjdHM6CiAgICAtIENGR19NUEM1WFhYX0NMS0lOCiAgICAtIFNEUkFNIHRpbWluZ3MKICAgIC0gRmxhc2ggQ1MgY29uZmlndXJhdGlvbiAodGltaW5ncykKICAgIC0gRmxhc2ggc2VjdG9yIHNpemUsIGFuZCB0aHVzIE1URCBwYXJ0aXRpb24gbGF5b3V0CiAgICAtIG1hbGxvYygpIGFyZW5hIHNpemUgKGR1ZSB0byBiaWdnZXIgRmxhc2ggc2VjdG9ycykKICAgIC0gc21hbGxlciBtZW1vcnkgdGVzdCByYW5nZSAoZHVlIHRvIGJpZ2dlciBtYWxsb2MoKSBhcmVuYSkKCiAgICBUaGlzIHBhdGNoIGFsc28gZW5hYmxlcyBtb3JlIGV4dGVuc2l2ZSBtZW1vcnkgdGVzdGluZyB2aWEgIm10ZXN0Ii4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IGVmZjUwMTkwNGRmMmJmMTcyNGE3NTAwNjI2MjhiYTJjNTFkYmIxZjgKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgT2N0IDIzIDExOjM2OjA3IDIwMDcgKzAyMDAKCiAgICBNb3Rpb24tUFJPOiBBZGQgc2V0dGluZyBvZiBTRGVsYXkgcmVnLiB0byBTRFJBTSBjb250cm9sbGVyIGNvbmZpZ3VyYXRpb24uCgogICAgUGVyIEFOMzIyMSAoTVBDNTIwMEIgU0RSQU0gSW5pdGlhbGl6YXRpb24gYW5kIENvbmZpZ3VyYXRpb24pLCB0aGUgU0RlbGF5CiAgICByZWdpc3RlciBtdXN0IGJlIHdyaXR0ZW4gYSB2YWx1ZSBvZiAweDAwMDAwMDA0IGFzIHRoZSBmaXJzdCBzdGVwIG9mIHRoZQogICAgU0RSQU0gY29udG9ybGxlciBjb25maWd1cmF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgN2E5MzQ4NzI4ZWJkYTYzY2RiYWFjZmZkODMwOTlhYTcxZDlkNGM1NApBdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+CkRhdGU6CVR1ZSBPY3QgMjMgMTA6MjI6MTYgMjAwNyArMDEwMAoKICAgIE1vdmUgUEwwMSogc2VyaWFsIGRyaXZlcnMgdG8gZHJpdmVycy9zZXJpYWwgYW5kIGFkanVzdCBNYWtlZmlsZXMuCgpjb21taXQgMjBkNTAwZDUzMWE2Yjk3MWNlNmNjMWJmMTkxY2IwMDkyY2RjMGFmYwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIE9jdCAyMyAxMDoxNzo0MiAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBsd21vbjU6IFNvbWUgZnVydGhlciBHUElPIGNvbmZpZyBjaGFuZ2VzCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGRlOWE3MzhmYWE3YzJmNDcyODYxMTljM2JmZWJjM2RmYmZlN2Q4NmQKQXV0aG9yOiBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4KRGF0ZToJU3VuIE9jdCAyMSAyMjoxMDoxMCAyMDA3ICswOTAwCgogICAgW01JUFNdIEZpeCBVTkNBQ0hFRF9TRFJBTQoKICAgIFBIWVNBRERSIGlzIGZvciBwaHlzaWNhbCBhZGRyZXNzLCBLU0VHMUFERFIgaXMgZm9yIHVuY2FjaGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFZsYWQgTHVuZ3UgPHZsYWRAY29tc3lzLnJvPgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgoKY29tbWl0IDAwMTAxZGQ3YTMyZDEyZjY5ODE1MDEyM2U0N2U0YjM0MjAyNzlmODYKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+CkRhdGU6CVN1biBPY3QgMjEgMjE6MzA6NDIgMjAwNyArMDkwMAoKICAgIFtNSVBTXSBBZGQgUElDLXJlbGF0ZWQgc3dpdGNoZXMgdG8gUExBVEZPUk1fe0NQUCxMRH1GTEFHUyBhbmQgY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KCmNvbW1pdCBlYjcwMDYzNmRiMDE3ZDMxMGVkYWViNTU5YjEzZDgyNTg4NTYwNjc0CkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgpEYXRlOglTdW4gT2N0IDIxIDEwOjU1OjM3IDIwMDcgKzA5MDAKCiAgICBbTUlQU10gdS1ib290LmxkczogRGVmaW5lIF9ncCBpbiBhIHN0YW5kYXJkIG1hbm5lcgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KCmNvbW1pdCAyMjA2OTIxNWViN2FkZjVhMzg4OGJmN2M3Nzg0ZWE5ZDcwYTcyY2QwCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgpEYXRlOglTdW4gT2N0IDIxIDEwOjU1OjM2IDIwMDcgKzA5MDAKCiAgICBbTUlQU10gRml4ICRncCB1c2FnZQoKICAgIE5vdyB3ZSBsb2FkICRncCB3aXRoIF9HTE9CQUxfT0ZGU0VUX1RBQkxFXywgYnV0IHRoaXMgaXMgaW5jb3JyZWN0IHVzZS4KICAgIEFzIGEgZ2VuZXJhbCBwcmluY2lwbGUsIHdlIHNob3VsZCB1c2UgX2dwIGZvciAkZ3AuCgogICAgVGhhbmtzIHRvIGxpbmtlciBzY3JpcHQncyBoZWxwIHdlIGZvcnR1bmF0ZWx5IGhhdmUgX2dwIHdoaWNoIGVxdWFscyB0bwogICAgX0dMT0JBTF9PRkZTRVRfVEFCTEVfLiBCdXQgb25jZSBfZ3AgZ2V0cyBvdXQgb2YgYWxpZ25tZW50LCB3ZSB3aWxsIG5vdAogICAgYmUgYWJsZSB0byBhY2Nlc3MgdG8gR09UIGVudGlyZXMsIGdsb2JhbCB2YXJpYWJsZXMgYW5kIHByb2NlZHVyZSBlbnRyeQogICAgcG9pbnRzLiBUaGUgcmlnaHQgdGhpbmcgdG8gZG8gaXMgdG8gdXNlIF9ncC4KCiAgICBUaGlzIHBhdGNoIGFsc28gaW50cm9kdWNlIGEgbmV3IHN5bWJvbCBgLmdwd29yZCBfR0xPQkFMX09GRlNFVF9UQUJMRV8nCiAgICB3aGljaCBob2xkcyB0aGUgb2Zmc2V0IGZyb20gX2dwLiBXaGVuIHVwZGF0aW5nIEdPVCBlbnRyaWVzLCB3ZSB1c2UgdGhpcwogICAgb2Zmc2V0IGFuZCBfZ3AgdG8gY2FsY3VsYXRlIHRoZSBmaW5hbCBfR0xPQkFMX09GRlNFVF9UQUJMRV8uCgogICAgVGhpcyBwYXRjaCBpcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCBieSBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4sIHRoZW4KICAgIEkgbWFkZSBzb21lIGNoYW5nZSB0byBsZWF2ZSBvdmVyIG51bV9nb3RfZW50cmllcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+CiAgICBDYzogVmxhZCBMdW5ndSA8dmxhZEBjb21zeXMucm8+Cgpjb21taXQgY2JmMjMyM2I1YjgyODVlYTAxYWNiYTdiYmI5MDVhMzE2MmQ5YjAyMQpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KRGF0ZToJU3VuIE9jdCAyMSAxMDo1NTozNiAyMDA3ICswOTAwCgogICAgW01JUFNdIHUtYm9vdC5sZHM6IEZpeCBfX2dvdF9zdGFydCBhbmQgX19nb3RfZW5kCgogICAgRW5zdXJlIHRoYXQgX19nb3Rfc3RhcnQgcG9pbnRzIHRvIHRvcCBvZiB0aGUgYC5nb3QnLCBhbmQgX19nb3RfZW5kIHBvaW50cwogICAgdG8gYm90dG9tIGFzIHdlbGwsIHNvIHRoYXQgd2UgbmV2ZXIgZmFpbCB0byBjb3VudCBudW1fZ290X2VudHJpZXMuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgoKY29tbWl0IGU1ZjMyNWZlYzViNDhhZTcwNWM4OTUyMjkyM2JhNWEyZTM3Y2Q1YzcKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+CkRhdGU6CVN1biBPY3QgMjEgMTA6NTU6MzYgMjAwNyArMDkwMAoKICAgIFtNSVBTXSB1LWJvb3QubGRzOiBSZW1vdmUgZHVwbGljYXRlZCAuc2RhdGEgc2VjdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KCmNvbW1pdCAwNWJmNDkxOWMxY2U0OWNkZWRhZGFjZDU2NGQwNzg2YThlZDc5NmExCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIE9jdCAyMSAwMTowMToxNyAyMDA3ICswMjAwCgogICAgTWlub3IgY29kaW5nIHN0eWxlIGNsZWFudXA7IHVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGZmMjg1Y2EwN2VkYTFlYTRhODkwOTg0OGNjMWNjNjA0ZWM4ZmVjOWMKQXV0aG9yOiBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4KRGF0ZToJVGh1IE9jdCA0IDIwOjQ3OjEwIDIwMDcgKzAzMDAKCiAgICBGaXggTkUyMDAwIGRyaXZlcjoKCiAgICBGaXhlZCB0eXBvIGluIG5lMjAwMC5oLCB0aGlua28gcmUgbjJrX2luYigpIHVzYWdlLCBkb24ndCB0cnkKICAgIHRvIGRvIGFueXRoaW5nIGluIGV0aF9zdG9wKCkgaWYgZXRoX2luaXQoKSB3YXMgbm90IGNhbGxlZC4KICAgIFNpbXBsaWZpZWQgUlggcGF0aCBpbiBvcmRlciB0byBhdm9pZCB0aW1lb3V0cyBvbiByZWFsbHkgcmVhbGx5CiAgICBmYXN0IE5FMjAwMCBjYXJkcyAocmVhZDogcWVtdSB3aXRoIGludGVybmFsIHRmdHApLCBOZXRMb29wKCkgaXMKICAgIGNsZXZlciBlbm91Z2ggdG8gY29wZSB3aXRoIDEgcGFja2V0IHBlciBldGhfcngoKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4KCmNvbW1pdCBkZjkwOTY4YjQ4ZmIzNGZhOTA3MmZhYjE1MGRiMmFjODk2NzhmNTM3CkF1dGhvcjogdXJ3aXRoc3VnaG9zaEBnbWFpbC5jb20gPHVyd2l0aHN1Z2hvc2hAZ21haWwuY29tPgpEYXRlOglNb24gU2VwIDI0IDEzOjMyOjEzIDIwMDcgLTA0MDAKCiAgICBTZXR0aW5nIE1TUltERV0gaW4gZG9fcmVzZXQKCiAgICBIZWxsbywKICAgICAgIFRoaXMgcGF0Y2ggZW5zdXJlcyB0aGUgc29mdCByZXNldCBvZiB0aGUgYm9hcmQgZm9yIHRoZSA4NXh4IGJvYXJkcwogICAgICAgYnkgc2V0dGluZyB0aGUgTVNSW0RFXSBpbiB0aGUgZG9fcmVzZXQgZnVuY3Rpb24uCgogICAgU2lnbmVkLW9mZi1ieTogU3VnaG9zaCBHYW51IDx1cndpdGhzdWdob3NoQGdtYWlsLmNvbT4KCmNvbW1pdCAxZTcwMWU3MDEzMDRiM2MzYTM3NjhjYTgzZGQyYWI3YjllODhjNzdkCkF1dGhvcjogdXJ3aXRoc3VnaG9zaEBnbWFpbC5jb20gPHVyd2l0aHN1Z2hvc2hAZ21haWwuY29tPgpEYXRlOglNb24gU2VwIDI0IDEzOjM2OjAxIDIwMDcgLTA0MDAKCiAgICBNU1Igb3ZlcndyaXRlIGZpeAoKICAgIEhlbGxvLAogICAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBNU1Igb3ZlcndyaXRlIGluIHRoZSBzdGFydC5TIHdoZW4gbW92aW5nIG91dCBvZgogICAgICB0aGUgbGFzdCA0SyBwYWdlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN1Z2hvc2ggR2FudSA8dXJ3aXRoc3VnaG9zaEBnbWFpbC5jb20+Cgpjb21taXQgNWM3ZWE2NGJiNzRhODUwYTJiMjMwM2Y4NTNhODI3MDY5NWFkODYwMgpBdXRob3I6IERhbiBXaWxzb24gPGR3aWxzb25AZnVsY3J1bW1pY3JvLmNvbT4KRGF0ZToJRnJpIE9jdCAxOSAxMTozMzo0OCAyMDA3IC0wNTAwCgogICAgdHNlYyBkcml2ZXIgc2hvdWxkIGNsZWFyIFJIQUxUIG9uIHN0YXJ0dXAKCiAgICBUaGlzIHdhcyBjYXVzaW5nIHByb2JsZW1zIGZvciBzb21lIHBlb3BsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbGFpbiBHcmF2ZWwgPGFncmF2ZWxAZnVsY3J1bW1pY3JvLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERhbiBXaWxzb24gPGR3aWxzb25AZnVsY3J1bW1pY3JvLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3NjAwZDQ3YjhmNmExMDAxOWU1MzdkYzlhNjJhYTE0OThkZjU4ZDI1CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IE9jdCAxMSAwMDoyOToxOCAyMDA3IC0wNTAwCgogICAgSW1wcm92ZSBoYW5kbGluZyBvZiBQQ0kgaW50ZXJydXB0IGRldmljZSB0cmVlIGZpeHVwIG9uIE1QQzg1eHggQ0RTCgogICAgT24gdGhlIE1QQzg1eHggQ0RTIHdlIGhhdmUgdHdvIGlzc3VlczoKCiAgICAxLiBUaGUgZGV2aWNlIHRyZWUgZml4dXAgY29kZSBkaWQgbm90IGNoZWNrIHRvIHNlZSBpZiB0aGUgcHJvcGVydHkgd2UgYXJlCiAgICB0cnlpbmcgdG8gdXBkYXRlIGlzIGFjdHVhbGx5IGZvdW5kLiAgSXRzIHBvc3NpYmxlIHRoYXQgaXQgd291bGQgdXBkYXRlCiAgICByYW5kb20gbWVtb3J5IHN0YXJ0aW5nIGF0IDAuCgogICAgMi4gTmV3ZXIgTGludXgga2VybmVsJ3MgaGF2ZSBtb3ZlZCB0aGUgbG9jYXRpb24gb2YgdGhlIFBDSSBub2RlcyB0byBiZQogICAgc2liaWxpbmdzIG9mIHRoZSBzb2Mgbm9kZSBhbmQgbm90IGNoaWxkcmVuLiAgVGhlIGV4cGxpY2l0IFBBVEggdG8gdGhlIFBDSQogICAgbm9kZSB3b3VsZCBub3QgYmUgZm91bmQgZm9yIHRoZXNlIGRldmljZSB0cmVlcy4gIEFkZCB0aGUgYWJpbGl0eSB0byBoYW5kbGUKICAgIGJvdGggcGF0aHMuICBJbiB0aGUgZnV0dXJlIHdlIHNob3VsZG4ndCBoYW5kbGUgc3VjaCBmaXh1cHMgYnkgZXhwbGljaXQgcGF0aC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGEzMDYzZWVjNzc1NzE5YjdlOTEwMjNiYmVjM2Y2NGIzMTE4NzkxZGYKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgT2N0IDExIDAwOjE4OjQ4IDIwMDcgLTA1MDAKCiAgICBTZXQgT0ZfU1RET1VUX1BBVEggdG8gbWF0Y2ggdGhlIGRlZmF1bHQgY29uc29sZSBvbiBNUEM4NTY4IE1EUwoKICAgIE9uIHRoZSBNUEM4NTY4IE1EUyB3ZSB1c2UgdHR5UzAsIFVBUlQwLCBldGMuIGFzIHRoZSBzdGFuZGFyZCBjb25maWd1cmVkCiAgICBjb25zb2xlLiAgTWFrZSBpdCBzbyB3ZSBtYXRjaCB0aGF0IGNvbmZpZyB3aGF0IHdlIHRlbGwgTGludXggYXMgdGhlIGVhcmx5CiAgICBTVERPVVQgY29uc29sZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGUxY2UzY2I2MTdiYjA2ZjkxZjgyZjk4OTE1MzkxMTc1YWRkZjNlODIKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgT2N0IDIgMTE6MTI6MjcgMjAwNyAtMDUwMAoKICAgIFJlbW92ZSBtYWdpYyBudW1iZXJzIGZyb20gY2FjaGUgcmVsYXRlZCBvcGVyYXRpb25zIGZvciBtcGM4NXh4CgogICAgVGhlIG1wYzg1eHggc3RhcnQgY29kZSB1c2VzIHNvbWUgbWFnaWMgbnVtYmVycyB0aGF0IHdlIGFjdHVhbGx5CiAgICBoYXZlICNkZWZpbmVzIGZvciBpbiA8Y29uZmlnLmg+IHNvIHVzZSB0aG9zZSBpbnN0ZWFkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNTQ0MWY2MWEzZDhiNzAzNGYxOWZjMTM2MTE4M2U5MzYxOThlNmRiYgpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglGcmkgT2N0IDE5IDE2OjQ3OjI2IDIwMDcgKzAyMDAKCiAgICBGaXggdHdvIHR5cG9zLgoKICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgoKY29tbWl0IDI4MWRmNDU3YzFhYTUwZDI3NTIxNjVkMGM1YzMyODJkNDAyN2I5NzQKQXV0aG9yOiBUb255IExpIDx0b255LmxpQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBPY3QgMTggMTc6NDc6MTkgMjAwNyArMDgwMAoKICAgIG1wYzgzeHg6IEFkZCBjb25maWd1cmUgZW50cnkgZm9yIE1QQzgzeHggQVRNIHN1cHBvcnQKCiAgICBBZGQgTVBDODM2MEVNRFNfQVRNX2NvbmZpZyBhbmQgTVBDODMyWEVNRFNfQVRNX2NvbmZpZyBpbnRvCiAgICBNYWtmaWxlIGFuZCBNQUtFQUxMCgogICAgU2lnbmVkLW9mZi1ieTogVG9ueSBMaSA8dG9ueS5saUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkMjY0NjU1NGY1MjlhOTU3NzUxNWVjZWIwZWM1ZWNlZWUxODI0NGJhCkF1dGhvcjogVG9ueSBMaSA8dG9ueS5saUBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgT2N0IDE4IDE3OjQ0OjM4IDIwMDcgKzA4MDAKCiAgICBtcGM4M3h4OiBwcS1tZHMtcGliLmMgdHlwbyBlcnJvcgoKICAgIENvcnJlY3QgdG8gdmFsOCBmcm9tIHZhbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUb255IExpIDx0b255LmxpQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDNlMTFhZTgwZmVjMWVlMTIxOTQ5NDA5NTU0MzExODZhYmY2MDA5YzIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMTcgMTU6NDA6MTkgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogQWRkIDY2Ny8xMzMgKENQVS9QTEIpIGZyZXF1ZW5jeSBzZXR1cCB0byBTZXF1b2lhIGJvb3RzdHJhcCBjb21tYW5kCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDNjODlkNzU0MDllYjI2NjM5ZDM2ZGZhMTFkNGVlM2Q4Yjk2MmRjM2MKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgT2N0IDE2IDE1OjI3OjQzIDIwMDcgLTA1MDAKCiAgICBJbml0aWFsIG1wYzg2MTBocGNkIE1ha2VmaWxlIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNYWhlc2ggSmFkZSA8bWFoZXNoLmphZGVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk1NTNkZjg2ZDNhMzE5YzNhMWE3Y2RlN2U0ZWRkNmVlYjVhYTY0YzcKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgT2N0IDE2IDE1OjI2OjUxIDIwMDcgLTA1MDAKCiAgICBJbml0aWFsIG1wYzg2MTBocGNkIGNwdS8sIFJFQURNRSBhbmQgaW5jbHVkZS8gZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1haGVzaCBKYWRlIDxtYWhlc2guamFkZUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgM2RkMmRiNTNjZWIwZGZmODBmMjVjMmEwN2Y4M2YyOWI5MDdiNDAzZQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBPY3QgMTYgMTM6NTQ6MDEgMjAwNyAtMDUwMAoKICAgIEluaXRpYWwgbXBjODYxMGhwY2QgYm9hcmQgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1haGVzaCBKYWRlIDxtYWhlc2guamFkZUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgN2VlNmJhMWEwNTZlNDA2MWFiNGNmZGUzMDEyN2UzMzJlNzk1N2FmZApBdXRob3I6IHJ1bmV0QGlubm92c3lzLmNvbSA8cnVuZXRAaW5ub3ZzeXMuY29tPgpEYXRlOglUdWUgT2N0IDE2IDE0OjUwOjQwIDIwMDcgLTA1MDAKCiAgICBNYWtlIE1QQzgyNjZBRFMgYm9hcmQgY29tcGlsZSBhZ2Fpbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSdW5ldCBUb3JnZXJzZW4gPHJ1bmV0QGlubm92c3lzLmNvbT4KCmNvbW1pdCAyNDkxMTY3YzI0NWQ4ZWJlNmYyZGJkOGM0Mjg3YWFhMGQxNGZlOTNhCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEF1ZyAyNyAxMjo0MTowMyAyMDA3IC0wNTAwCgogICAgODZ4eDogQWxsb3cgZm9yIGZld2VyIEREUiBzbG90cyBwZXIgbWVtb3J5IGNvbnRyb2xsZXIuCgogICAgQXMgYSBkaXJlY3QgY29ycmVsYXRpb24gZXhpc3RzIGJldHdlZW4gRERSIERJTU0gc2xvdHMKICAgIGFuZCBTUEQgRUVQUk9NIGFkZHJlc3NlcyB1c2VkIHRvIGNvbmZpZ3VyZSB0aGVtLCB1c2UKICAgIHRoZSBpbmRpdmlkdWFsbHkgZGVmaW5lZCBTUERfRUVQUk9NX0FERFJFU1MqIHZhbHVlcyB0bwogICAgZGV0ZXJtaW5lIGlmIGEgRERSIERJTU0gc2xvdCBzaG91bGQgaGF2ZSBpdHMgU1BECiAgICBjb25maWd1cmF0aW9uIHJlYWQgb3Igbm90LgoKICAgIEVmZmVjdGl2ZWx5LCB0aGlzIG5vdyBhbGxvd3MgZm9yIDEgb3IgMiBESU1NIHNsb3RzCiAgICBwZXIgbWVtb3J5IGNvbnRyb2xsZXIuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0ZDRhOTQ1ZTE4OWEyZjM4NGM2NjQzMjMxNmRhMjc4OGEwYWMxNjA3CkF1dGhvcjogUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAZW5uZWVubmUuY29tPgpEYXRlOglNb24gT2N0IDE1IDExOjU5OjE3IDIwMDcgKzAyMDAKCiAgICBQWEEgVVNCIE9IQ0k6ICJ1c2Igc3RvcCIgaW1wbGVtZW50YXRpb24uCgogICAgU29tZSBVU0Iga2V5cyBuZWVkIHRvIGJlIHN3aXRjaGVkIG9mZiBiZWZvcmUgbG9hZGluZyB0aGUga2VybmVsCiAgICBvdGhlcndpc2UgdGhleSBjYW4gcmVtYWluIGluIGFuIHVuZGVmaW5lZCBzdGF0dXMgd2hpY2ggcHJldmVudHMgdGhlbQogICAgdG8gYmUgY29ycmVjdGx5IHJlY29nbml6ZWQgYnkgdGhlIGtlcm5lbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBsaW51eC5pdD4KCmNvbW1pdCBlMmU5MzQ0MmU1NThjZjE1MDBlOTI4NjFmOTk3MTNiMmYwNDVlYTIyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gT2N0IDE1IDExOjM5OjAwIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBidWcgaW4gSTJDIGJvb3RzdHJhcCB2YWx1ZXMgZm9yIFNlcXVvaWEvUmFpbmllcgoKICAgIFRoZSBJMkMgYm9vdHN0cmFwIHZhbHVlcyB0aGF0IGNhbiBiZSBzZXR1cCB2aWEgdGhlICJib290c3RyYXAiIGNvbW1hbmQsCiAgICB3ZXJlIHNldHVwIGluY29ycmVjdCByZWdhcmRpbmcgdGhlIGdlbmVyYXRpb24gb2YgdGhlIGludGVybmFsIHN5bmMgUENJCiAgICBjbG9jay4gVGhlIHZhbHVlcyBmb3IgUExCIGNsb2NrID09IDEzM01IeiB3ZXJlIHNsaWdobHkgaW5jb3JyZWN0IGFuZCB0aGUKICAgIHZhbHVlcyBmb3IgUExCIGNsb2NrID09IDE2Nk1IeiB3ZXJlIHRvdGFsbHkgaW5jb3JyZWN0LiBUaGlzIGNvdWxkCiAgICBsZWFkIHRvIGEgaGFuZ3VwIHVwb24gYm9vdGluZyB3aGlsZSBQQ0kgY29uZmlndXJhdGlvbiBzY2FuLgoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBpc3N1ZSBhbmQgY29uZmlndXJlcyB2YWxpZCBQQ0kgZGl2aXNvciB2YWx1ZXMKICAgIGZvciB0aGUgc3luYyBQQ0kgY2xvY2ssIHdpdGggcmVzcGVjdCB0byB0aGUgcHJvdmlkZWQgZXh0ZXJuYWwgYXN5bmMKICAgIFBDSSBmcmVxdWVuY3kuCgogICAgSGVyZSB0aGUgdmFsdWVzIG9mIHRoZSBmb3JtdWxhIGluIHRoZSBjaGFwdGVyIDE0LjIgIlBDSSBjbG9ja2luZyIKICAgIGZyb20gdGhlIDQ0MEVQeCB1c2VycyBtYW51YWw6CgogICAgQXN5bmNQQ0lDTEsgLSAxTUh6IDw9IFN5bmNQQ0lDbGsgPD0gKDIgKiBBc3luY1BDSUNsaykgLSAxTUh6CgogICAgMzNNSHogYXN5bmMgUENJIGZyZXF1ZW5jeToKICAgIFBMQiA9IDEzMzoKICAgID0+CSAgICAzMiA8PSA0NC4zIDw9IDY1CSAgICAoZGl2ID0gMykKCiAgICBQTEIgPSAxNjY6CiAgICA9PgkgICAgMzIgPD0gNTUuMyA8PSA2NQkgICAgKGRpdiA9IDMpCgogICAgNjZNSHogYXN5bmMgUENJIGZyZXF1ZW5jeToKICAgIFBMQiA9IDEzMzoKICAgID0+CSAgICA2NSA8PSA2Ni41IDw9IDEzMgkgICAgKGRpdiA9IDIpCgogICAgUExCID0gMTY2OgogICAgPT4JICAgIDY1IDw9IDgzIDw9IDEzMgkgICAgKGRpdiA9IDIpCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDVhNTk1OGI3ZGU3MGFlOTlmMGU3Y2JkNWM5N2VjMTM0NmUwNTE1ODcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBPY3QgMTUgMTE6Mjk6MzMgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogRml4IGluY29ycmVjdCAzMy82Nk1IeiBQQ0kgY2xvY2sgbG9nLW1lc3NhZ2Ugb24gU2VxdW9pYSAmIFlvc2VtaXRlCgogICAgVGhlIEJDU1Igc3RhdHVzIGJpdCBmb3IgdGhlIDY2TUh6IFBDSSBvcGVyYXRpb24gd2FzIGNvcnJlY3RseQogICAgYWRkcmVzc2VkIChNU0IvTFNCIHByb2JsZW0pLiBOb3cgdGhlIGNvcnJlY3QgY3VycmVudGx5IHNldHVwCiAgICBQQ0kgZnJlcXVlbmN5IGlzIGRpc3BsYXllZCB1cG9uIGJvb3R1cC4KCiAgICBUaGlzIHBhdGNoIGFsc28gZml4ZXMgdGhpcyBwcm9ibGVtIG9uIFJhaW5pZXIgJiBZZWxsb3dzdG9uZSwgc2luY2UgdGhlc2UKICAgIGJvYXJkcyB1c2UgdGhlIHNhbWUgc291Y2UgY29kZSBhcyBTZXF1b2lhICYgWW9zZW1pdGUgZG8uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGRhM2FhZDU1Y2JkZTgwYWI2ZTMwMWFhZmE4MmEyYzQxMWFhNTNlZmYKQXV0aG9yOiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KRGF0ZToJV2VkIFNlcCAyNiAxNzo1NTo1NiAyMDA3ICswMjAwCgogICAgVFFNODYwTTogYWRqdXN0IGZvciBkb3VibGVkIGZsYXNoIHNlY3RvciBzaXplLgoKICAgIEFkanVzdCBmbGFzaCBtYXAgdG8gc3VwcG9ydCB0aGUgbmV3IFMyOUdMeHhOIChOLVR5cGUpIEZsYXNoZXMgd2l0aAogICAgZG91YmxlZCBzZWN0b3Igc2l6ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KCmNvbW1pdCA5ZDI5MjUwZTJlNjJmNGJmMjBjN2EyMGI0MTczZDg0YzQ4ZjExZjVkCkF1dGhvcjogSmVucyBHZWhybGVpbiA8amVucy5nZWhybGVpbkB0cXMuZGU+CkRhdGU6CVdlZCBTZXAgMjYgMTc6NTU6NTQgMjAwNyArMDIwMAoKICAgIFRRTTh4eDogRml4IENBTiB0aW1pbmcuCgogICAgU2lnbmVkLW9mZi1ieTogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+Cgpjb21taXQgZDQzZTQ4OWJhZjAyYWZhZTQ5MDc3NzkxZmIyMjMzMmQyNDBkODY1NgpBdXRob3I6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgpEYXRlOglUaHUgU2VwIDI3IDE0OjU0OjM2IDIwMDcgKzAyMDAKCiAgICBUUU04NjZNOiBmaXggU0RSQU0gcmVmcmVzaAoKICAgIEF0IDEzMyBNSHogdGhlIGN1cnJlbnQgU0RSQU0gcmVmcmVzaCByYXRlIGlzIHRvbyBmYXN0CiAgICAobWVhc3VyZWQgNCAqIDEuMTcgdXMpLgogICAgQ0ZHX01BTVJfUFRBIGNoYW5nZXMgZnJvbSAzOSB0byA5Ny4gVGhpcyByZXN1bHQKICAgIGluIGEgcmVmcmVzaCByYXRlIG9mIDQgKiA3LjggdXMgYXQgdGhlIGRlZmF1bHQgY2xvY2sKICAgIDUwIE1Iei4gQXQgMTMzIE1IeiB0aGUgdmFsdWUgd2lsbCBiZSB0aGVuIDQgKiAyLjkgdXMuCiAgICBUaGlzIGlzIGEgY29tcHJvbWlzZSB1bnRpbCBhIG5ldyBtZXRob2QgaXMgZm91bmQgdG8KICAgIGFkanVzdCB0aGUgcmVmcmVzaCByYXRlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgoKY29tbWl0IDllZjU3YmJlZTFjNjdjYzAxZGEyMDI2YzI0MmM0NjkyZGIzMmJlMzYKQXV0aG9yOiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KRGF0ZToJV2VkIFNlcCAyNiAxNzo1NTo1NSAyMDA3ICswMjAwCgogICAgVFFNODY2TTogYWRqdXN0IGZvciBkb3VibGVkIGZsYXNoIHNlY3RvciBzaXplLgoKICAgIEFkanVzdCBmbGFzaCBtYXAgdG8gc3VwcG9ydCB0aGUgbmV3IFMyOUdMeHhOIChOLVR5cGUpIEZsYXNoZXMgd2l0aAogICAgZG91YmxlZCBzZWN0b3Igc2l6ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KCmNvbW1pdCBmOGJmOTA0NjFkOWJhZDJlNmZlZDMxZmNlYmFmMjM1ZjYwZGQ2NzYzCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglTdW4gT2N0IDE0IDE2OjEyOjI5IDIwMDcgKzAyMDAKCiAgICBbRklYXSBYVVBWMlAgY2hhbmdlIGNvbW1hbmQgaGFuZGxpbmcKICAgIGFuZCByZW1vdmUgY29kZSB2aW9sYXRpb24KCmNvbW1pdCA2MzY0MDAxOTgyMjhkOTY5ODNjMDY2NTdiMTdmNzYwZjU5ODk5NThlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIE9jdCAxNCAwMDoxMzoxOSAyMDA3ICswMjAwCgogICAgUHJlcGFyZSBmb3IgMS4zLjAtcmMzIHJlbGVhc2UKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDY4ZjE0Zjc3Y2E1ZmU1ZjljYzAyNWM4Y2FlMTAxNjcxZjYyODMwOWYKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgU2VwIDI5IDEzOjQxOjM3IDIwMDcgKzAyMDAKCiAgICBGaXggd2FybmluZyBkaWZmZXIgaW4gc2lnbmVkbmVzcyBpbiBjcHUvcHhhL21tYy5jCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBmYzE5ZTM2Zjc0MWU4YmM3MjdjMGEzMzAxNzBiM2I1ZGI5MDM5OWVmCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IE9jdCAxMyAyMzo1MToxNCAyMDA3ICswMjAwCgogICAgRml4IHdhcm5pbmcgZGlmZmVyIGluIHNpZ25lZG5lc3MgaW4gYm9hcmQvbXBsL3ZjbWE5L3ZjbWE5LmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBkZTc0YjllZWFjY2NhZjBhNDJlNWVjYzlhZTc5YTg4ZjdhMzExMjk2CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IE9jdCAxMyAyMToxNTozOSAyMDA3ICswMjAwCgogICAgQ29kaW5nIFN0eWxlIGNsZWFudXAuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBlMTg5MzgxNWIwOTk5NDEwZDdhMzI3NTg5NjExYzdiMzhlOTUyOTllCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIE9jdCAxMiAxNTo0OTozOSAyMDA3ICswMjAwCgogICAgR1AzIFNTQTogZW5hYmxlIFJUQwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgODAwMjAxMjA0MWYxZmY5Zjk5N2E1NzI3YWJlNTAxNWY3MGNkMmU0NgpBdXRob3I6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgT2N0IDkgMTM6NTg6MjQgMjAwNyArMDIwMAoKICAgIFthZHM1MTIxXSBFRVBST00gc3VwcG9ydCBhZGRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KCmNvbW1pdCA3YjYyNGFkMjU0Yjk3ZTVhMjVkY2EyMzA0YTM5OGI2NGFlZWRhZmZlCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVNhdCBPY3QgNiAxODo1NTozNSAyMDA3ICswMjAwCgogICAgQVZSMzI6IEluaXRpYWxpemUgYmlfZmxhc2gqIGluIGJvYXJkX2luaXRfcgoKICAgIFRoZSBBVFNUSzEwMDAtc3BlY2lmaWMgZmxhc2ggZHJpdmVyIGludGlhbGl6ZXMgYmlfZmxhc2hzdGFydCwKICAgIGJpX2ZsYXNoc2l6ZSBhbmQgYmlfZmxhc2hvZmZzZXQsIGJ1dCBvdGhlciBmbGFzaCBkcml2ZXJzLCBsaWtlIHRoZSBDRkkKICAgIGRyaXZlciwgZG9uJ3QuCgogICAgSW5pdGlhbGl6ZSB0aGVzZSBpbiBib2FyZF9pbml0X3IgaW5zdGVhZCBzbyB0aGF0IHRoaW5ncyB3aWxsIHN0aWxsIGJlCiAgICBzZXQgdXAgY29ycmVjdGx5IHdoZW4gd2Ugc3dpdGNoIHRvIHRoZSBDRkkgZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDJiMmE1ODdkNmQzMDc2Mzg3ZDIyYWM3NDBmNDQwNDRiZjQ2ZTJjYjgKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglGcmkgT2N0IDUgMTA6NDA6NTQgMjAwNyArMDIwMAoKICAgIHRxbTUyMDA6IEZpeCBDT05GSUdfQ01EX1BDSSB0eXBvIGluIGJvYXJkIGNvbmZpZyBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgOTI4NjkxOTVlZjgyMTA3NThkMjE3NjIzMGMwYTM2ODk3YWZkNTBlZApBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBPY3QgNSAwOTo0NjowNiAyMDA3ICswMjAwCgogICAgQ001MjAwOiBGaXggbWlzc2luZyBudWxsLXRlcm1pbmF0aW9uIGluIGhvc3RuYW1lIG1hbmlwdWxhdGlvbiBjb2RlCgogICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KCmNvbW1pdCA5YWRkOTg4NGIxZmRkYzM0Y2ExODZlMDBhMmY4NjhjY2Q1ZDAyZDg3CkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVR1ZSBPY3QgMiAxOTowOTowMSAyMDA3ICswMjAwCgogICAgRml4IG1lbXRlc3QgYnJlYWthZ2UKCiAgICBDRkdfTUVNVEVTVF9TVEFSVCB1c2VzIHdlaXJkIG1hZ2ljIGludm9sdmluZyBnZCwgd2hpY2ggZmFpbHMgdG8KICAgIGNvbXBpbGUuIFVzZSBoYXJkY29kZWQgdmFsdWVzIGluc3RlYWQgKHdlIGFjdHVhbGx5IGtub3cgaG93IG11Y2ggUkFNCiAgICB3ZSBoYXZlIG9uIGJvYXJkLikKCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCA3Mzg4MTVjMGNjNDRhYTMyOTA5N2Y4NjhkYzFlZmM0OWVkZTljNWJhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgT2N0IDIgMTE6NDQ6NDYgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogQ29kaW5nIHN0eWxlIGNsZWFudXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODdjMTgzM2EzOWU5NDRkYjY2Mzg1Mjg2ZmQ1ZTI4ZjliM2ZjZGQ1MApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIE9jdCAyIDExOjQ0OjE5IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IGx3bW9uNTogUmVtb3ZlIHdhdGNoZG9nIGZvciBub3csIHNpbmNlIG5vdCBmdWxseSB0ZXN0ZWQgeWV0CgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDJkYjY0Nzg0MDYxYmZjMzRmNGJhNzBlZjFkMmZiZTcxMzNiNTU2NzAKQXV0aG9yOiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KRGF0ZToJTW9uIE9jdCAxIDA5OjUxOjUwIDIwMDcgKzAyMDAKCiAgICBQcm9ncmFtIEVQTEQgdG8gZm9yY2UgZnVsbCBkdXBsZXggbW9kZSBmb3IgUEhZLgoKICAgIEVQTEQgZm9yY2VzIG1vZGVzIG9mIFBIWSBvcGVyYXRpb24uIEJ5IGRlZmF1bHQgZnVsbCBkdXBsZXggaXMgdHVybmVkIG9mZi4KICAgIFRoaXMgZml4IHR1cm5zIGl0IG9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDc4NWMxMzQ3N2I3N2RjZDJlNmM1MTI4ZmZmY2RiNGUxOTQzZjQ4MTgKQXV0aG9yOiBUaW1vIEtldG9sYSA8dGltby5rZXRvbGFAZXhlcnR1cy5maT4KRGF0ZToJTW9uIFNlcCAyNCAxNDo1MDozMiAyMDA3ICswMzAwCgogICAgQnVnZml4OiBVc2Ugb25seSBvbmUgUFREIGZvciBvbmUgZW5kcG9pbnQKCiAgICBPcmlnaW5hbCBpc3AxMTZ4LWhjZCBjb2RlIHByZXBhcmVkIG11bHRpcGxlIFBURHMgZm9yIGxvbmdlciB0aGFuIDE2CiAgICBieXRlIHRyYW5zZmVycyBmb3Igb25lIGVuZHBvaW50LiBUaGF0IGlzIHVubmVjZXNzYXJ5IGJlY2F1c2UgdGhlCiAgICBJU1AxMTZ4IGlzIGFibGUgdG8gc3BsaXQgbG9uZyBkYXRhIGZyb20gb25lIFBURCBpbnRvIG11bHRpcGxlCiAgICB0cmFuc2FjdGlvbnMgYmFzZWQgb24gdGhlIGJ1ZmZlciBzaXplIG9mIHRoZSBlbmRwb2ludC4gSXQgYWxzbyBjYXVzZWQKICAgIHNlcmlvdXMgcHJvYmxlbXMgaWYgdGhlIGVuZHBvaW50IE5BS2VkIHNvbWUgb2YgdGhlIHRyYW5zYWN0aW9ucy4gSW4KICAgIHRoYXQgY2FzZSBJU1AxMTZ4IHdvdWxkbid0IG5vdGljZSB0aGF0IHRoZSBvdGhlciBQVERzIHdlcmUgZm9yIHRoZSBzYW1lCiAgICBlbmRwb2ludCBhbmQgd291bGQgdHJ5IHRoZSBvdGhlciBQVERzIHBvc3NpYmx5IG91dCBvZiBvcmRlci4gVGhhdCB3b3VsZAogICAgYnJlYWsgdGhlIHdob2xlIHRyYW5zZmVyLgoKICAgIFRoaXMgcGF0Y2ggbWFrZXMgaXNwMTE2eF9zdWJtaXRfam9iIHRvIHVzZSBvbmUgUFREIGZvciBvbmUgdHJhbnNmZXIuCgogICAgU2lnbmVkLW9mZi1ieTogVGltbyBLZXRvbGEgPHRpbW8ua2V0b2xhQGV4ZXJ0dXMuZmk+CiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgoKY29tbWl0IDg2ZWM4NmMwNDMyNmMzOTEzMTc4YTc2NzlhYTkxMGRlMDcxZGE3NWQKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUaHUgU2VwIDI3IDIzOjI3OjQ3IDIwMDcgKzAyMDAKCiAgICBGaXggbWlzc2luZyBERUNMQVJFX0dMT0JBTF9EQVRBX1BUUiBvbiBDT05GSUdfTFBDMjI5MiBpbiBzZXJpYWwKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDNlOTU0YmViNjE0YjViMTkwZDdmNGY0YzNiNjQxNDM3YTAxMzJlMzUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBTZXAgMTEgMTQ6MTI6NTUgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogbHdtb241OiBDaGFuZ2UgR1BJTyA1OCB0byBkZWZhdWx0IHRvIGxvdyAod2F0Y2hkb2cgdGVzdCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMTQ4N2FkYmRjZjk1OTRiYjJlYjY4NjMyNWE2Zjk1NDBkYWQxYjcwYQpBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBTZXAgMjYgMTY6MzU6NTQgMjAwNyAtMDUwMAoKICAgIDg1eHggaW8gb3V0IGZ1bmN0aW9ucyBuZWVkIHN5bmMgYWZ0ZXIgd3JpdGUuCgogICAgVGhpcyBmaXhlcyB0aGUgbWMxNDY4MTggcnRjX3JlYWQvd3JpdGUgZnVuY3Rpb25zIGZvciA4NXh4LgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMGQzOGVmZmM2ZTM1OWU2YjFiMGM3OGQ2NmU4YmMxYTRkYzE1YTJhZQpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIFNlcCAyNSAxNTo0ODowNSAyMDA3IC0wNjAwCgogICAgRnBnYTogZml4IGluY29ycmVjdCB0ZXN0IG9mIENGR19GUEdBX1hJTElOWCBtYWNybwoKICAgIENGR19GUEdBX1hJTElOWCBpcyBhIGJpdCB2YWx1ZSB1c2VkIHRvIHRlc3QgYWdhaW5zdCB0aGUgdmFsdWUgaW4KICAgIENPTkZJR19GUEdBLiAgVGVzdGluZyBmb3IgYSB2YWx1ZSB3aWxsIGFsd2F5cyByZXR1cm4gVFJVRS4JSSBkb24ndAogICAgdGhpbmsgdGhhdCBpcyB0aGUgaW50ZW50aW9uIGluIHRoaXMgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgODUzNjQzZDhjZjJjYTgwY2IyZTI1YzUzYWQ1ZGM1ODBhYmFmZTE2NgpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJTW9uIFNlcCAyNCAwMDo0MTozMCAyMDA3ICswMjAwCgogICAgW0ZJWF0gY2hhbmdlIGNvbW1hbmQgaGFuZGxpbmcgYW5kIHJlbW92aW5nIGNvZGUgdmlvbGF0aW9uCgpjb21taXQgZjI0MDM1NjUwNzAzOGU1Y2U1NWU4YTI0Y2IyNjA3ZTllYWU2ZDEwYwpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJTW9uIFNlcCAyNCAwMDozNjowNiAyMDA3ICswMjAwCgogICAgW0ZJWF0gY2hhbmdlIHNldHMgb2YgY29tbWFuZHMKICAgIGJlY2F1c2UgY2hhbmdpbmcgb2YgY29tbWFuZCBoYW5kbGluZyBicmluZ3MKICAgIGNvbXBpbGF0aW9uIHByb2JsZW1zCgpjb21taXQgY2IxYmM2M2I3NWEyMzI1NzFlYjY5YWEyYzhhYTkxOTMyMTY1NTg0NQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJTW9uIFNlcCAyNCAwMDozMDo0MiAyMDA3ICswMjAwCgogICAgW0ZJWF0gRW1haWwgcmVwYXJhdGlvbiAmIENvcHlyaWdodAogICAgQm90aCBjb2RlcyBhcmUgd3JpdHRlbiBieSBteXNlbGYgd2l0aG91dCBhbnkKICAgIHN1cHBvcnQgZnJvbSBDVFUKCmNvbW1pdCAwNzMxY2JhZTZjMmZlYWI5M2IyNDRkODNmZDZhNDNmNWNjOWJmODUyCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglNb24gU2VwIDI0IDAwOjI1OjExIDIwMDcgKzAyMDAKCiAgICBbUEFUQ0hdIENoYW5nZSBtYWNybyBuYW1lIGZvciBVYXJ0TGl0ZQogICAgYmVjYXVzZSBQb3dlclBDIDQwNSBjYW4gdXNlIFVhcnRMaXRlIGFzIGNvbnNvbGUKCmNvbW1pdCAxYzExMDBkMmZjZjQ2YjlkMTFkY2Y3OGQ2ZTVhZWE3NWUyZThiNzE2CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglNb24gU2VwIDI0IDAwOjIxOjE5IDIwMDcgKzAyMDAKCiAgICBbUEFUQ0hdIEFkZCBzdXBwb3J0IGZvciBkZXNpZ24gd2l0aG91dCBpbnRlcnJ1cHQgY29udHJvbGxlcgogICAgUG9sbGluZyB0aW1lcgoKY29tbWl0IDA3MzE5MzNlYzhlYzQ1ZDAyYmE4OWI1MmRmNjczZDUyNjg3M2NkZGUKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CU1vbiBTZXAgMjQgMDA6MTk6NDggMjAwNyArMDIwMAoKICAgIFtGSVhdIHJlc29sdmUgcHJvYmxlbSB3aXRoIGNwdSB3aXRob3V0IGJhcnJlbCBzaGlmdGVyCgpjb21taXQgZGIxNGQ3Nzk5NWNlNTE1YjcyOGIxNzhiNjNmODJiYWJlNjBlM2Q1NgpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJTW9uIFNlcCAyNCAwMDoxODo0NiAyMDA3ICswMjAwCgogICAgW0ZJWF0gcmVwYWlyIGVtYWlsIGFkZHJlc3MKCmNvbW1pdCA0ODFkNDMyODYxODgwNGFkZDFmODE4YTZjOTYyOTYxMjFjZDA1MjhlCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglNb24gU2VwIDI0IDAwOjE3OjQyIDIwMDcgKzAyMDAKCiAgICBbRklYXSByZXBhaXIgTUZTTCBjb21tYW5kcwoKY29tbWl0IGI5MGMwNDVmMDM1YzNjYzliNWQyZWRhZWQ2MDQ4ZGZiNzRlNDA3NjMKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CU1vbiBTZXAgMjQgMDA6MDg6MzcgMjAwNyArMDIwMAoKICAgIHN5bmNocm9uaXppdGlvbiB3aXRoIG1haW5saW5lCgpjb21taXQgZWRhM2UxZTY2MTlhZDBiZWU5NGFlNGIxNmM5OWQ4OGU3N2UyYWYxMwpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJU3VuIFNlcCAyMyAwMjo0MjozOCAyMDA3ICswOTAwCgogICAgc2g6IEFkZCBzdXBwb3J0IGNvbW1hbmQgb2YgaWRlIHdpdGggc2gKCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgZDkxZWE0NWQxNWNmOGUwOTg3NDU2YmQyMTFmZmJiNjUwODI0YjZmMQpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJU3VuIFNlcCAyMyAwMjozODo0MiAyMDA3ICswOTAwCgogICAgc2g6IFVwZGF0ZSBNYWtlZmlsZQoKICAgIEFkZCBzdXBwb3J0IE1TNzcyMlNFMDEgdG8gTWFrZWZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDZjMGJiZGNjZDM3OWY1Yzg3MDJhZjllMDc2NTI5NGMyZmI3NDcyYTYKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVN1biBTZXAgMjMgMDI6MzE6MTMgMjAwNyArMDkwMAoKICAgIHNoOiBBZGQgc3VwcG9ydCBSZW5lc2FzIHNoNzcyMiBwcm9jZXNzb3IgYW5kIEhpdGFjaGkgTVM3NzIyU0UwMSBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCAwNDczNzViZmE0YzMwNTJmYTUwYTc0OGRhN2ZmODllOWRhZDNiMzY0CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglTdW4gU2VwIDIzIDAyOjE5OjI0IDIwMDcgKzA5MDAKCiAgICBzaDogVXBkYXRlIE1TNzc1MFNFMDEgcGxhdGZvcm0KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgNTE2YWQ3NjBkYjM1NTM3NjYyNjdhZGEwMWI3ZDVkNzI3ZmFhNGJiZApBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJU3VuIFNlcCAyMyAwMjoxNzowOCAyMDA3ICswOTAwCgogICAgc2g6IFJlbW92ZSBjb21tZW50IG91dCBjb2RlIGZyb20gaW5jbHVkZS9hc20tc2gvY3B1X3NoNC5oCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGIwMmJhZDEyODY2OWU1NjdmY2U4N2Q4ZGY4MjNiMDZhMDE0NGI4ZGIKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVN1biBTZXAgMjMgMDI6MTI6MzAgMjAwNyArMDkwMAoKICAgIHNoOiBVcGRhdGUgY29yZSBjb2RlIG9mIFN1cGVySC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgNjZkY2FkM2E5YTUzZTA3NjZkOTBlMDA4NDEyM2JkODUyOTUyMmZiMApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVRodSBTZXAgMjAgMDA6MDQ6MTQgMjAwNyArMDIwMAoKICAgIHYxLjMuMC1yYzIKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDEzNWUxOWJjMjc3M2ViY2E0ODdlOWE4MzcxZjY3ZTFiYTIwMjMxM2EKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgU2VwIDE4IDIxOjM2OjM1IDIwMDcgKzAyMDAKCiAgICBBdm9pZCBjb21waWxlciB3YXJuaW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgOGE3ODNhNjU4NTFiYzc0MjFhYjY5ZjQ0MjI2MTIxNWUyMWI4ODkxYQpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIFNlcCAxOCAxMjoyNDo1NyAyMDA3IC0wNjAwCgogICAgQnVnZml4OiByZW1vdmUgZW1iZWRkZWQgbnVsbCAoXDApIGZyb20gQ0ZHX0JPT1RGSUxFIG1hY3JvIGluIFRRTTg1NDBfY29uZmlnCgogICAgL2Jpbi9iYXNoIGFuZCAvYmluL2Rhc2ggKHdoaWNoIC9iaW4vc2ggaXMgbGlua2VkIHRvIG9uIHVidW50dSkgaGFuZGxlIGVtYmVkZGVkCiAgICBudWxscyBpbiBhIHN0cmluZyBkaWZmZXJlbnRseS4gIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHN0YXRlbWVudDoKCWVjaG8gInRoaXMgaXMgYSBzdHJpbmdcMCIgPiBhZmlsZQogICAgV2lsbCBwcm9kdWNlIHRoZSBmb2xsb3dpbmcgd2l0aCAvYmluL2Jhc2g6CgkidGhpcyBpcyBhIHN0cmluZ1wwIgogICAgQnV0IHdpdGggL2Jpbi9kYXNoLCB3aWxsIHByb2R1Y2U6CgkidGhpcyBpcyBhIHN0cmluZwoKICAgIEJ1ZyBmaXhlZCBieSBtb3ZpbmcgdGhlIGVtYmVkZGVkIG51bGwgb3V0IG9mIHRoZSBtYWtlZmlsZSBhbmQgaW50byB0aGUKICAgIGNvbmZpZyBoZWFkZXIuICBBbHNvIHJlbmFtZWQgdGhlIG1hY3JvIHRvIGF2b2lkIHVzYWdlIGNvbGlzaW9uIHdpdGggdGhlIHNhbWUKICAgIG1hY3JvIHVzZWQgYnkgb3RoZXIgYm9hcmQgcG9ydHMuCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IGY4ZDNjYTdiNmZhMzIyYWM1N2U4ZTgzMWYwN2RiZWVhMDM5YTlmMzUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgU2VwIDE4IDE3OjQwOjI3IDIwMDcgKzAyMDAKCiAgICBNQ0MyMDA6IGZpeCBidWlsZCB3YXJuaW5nCgogICAgVGhlIE1DQzIwMCBib2FyZCBjb25maWcgZmlsZSBpbmNsdWRlcyB2ZXJzaW9uLmggZm9yIHNvbWUgY3VzdG9tZXItCiAgICBzcGVjaWZpYyBzZXR0aW5nLCB3aGljaCBjYXVzZXMgd2FybmluZ3Mgd2l0aCAibWFrZSBkZXBlbmQiOyBidWlsZAogICAgdmVyc2lvbi5oIGJlZm9yZSBkZXBlbmQuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBiZDg2MjIwZjU4Yjk5ZDY4OTYxOThjMzg1ZmRhMTMyZjBjOTgwOTE1CkF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KRGF0ZToJVHVlIFNlcCAxOCAxMzowNzo1NCAyMDA3ICswMTAwCgogICAgTW92ZSBjb2xvdXJlZCBsZWQgQVBJIHRvIHN0YXR1c19sZWQuaAogICAgSW1wcm92ZSBpbmRlbnRhdGlvbiBpbiBkcml2ZXJzL2F0NDUuYwoKY29tbWl0IGU4MGU1ODViMDBmYmJhYjdhZDFiZjcxNjE5NzQxZjJjNWIwMjlhYjcKQXV0aG9yOiBFaXJpayBBYW5vbnNlbiA8ZWFhQHdwcm1lZGljYWwuY29tPgpEYXRlOglUdWUgU2VwIDE4IDA4OjQ3OjIwIDIwMDcgKzAyMDAKCiAgICBVcGRhdGUgYXRzdGsxMDAyIGJvb3RhcmdzLgoKICAgIFVwZGF0ZXMgdG8gYXRzdGsxMDAyIFUtQm9vdCBoZWFkZXIgZmlsZToKICAgIC0gQ2hhbmdlZCBib290YXJnczoKCSogU2V0IHRoZSBib290YXJncyBmb3IgYXQxMDAyIHRvIHBvaW50IHRvIHRoZSBTRC1jYXJkIHBhcnRpdGlvbiBpbnN0ZWFkCgkqIC4uLiBvZiB0aGUgYm9vdCBmbGFzaC4KCSogUmVtb3ZpbmcgdGhlIHJvb3Rmc3R5cGUgc2luY2UgdGhhdCBhcmd1bWVudCBhcmUgbm90IG5lZWRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBFaXJpayBBYW5vbnNlbiA8ZWFhQHdwcm1lZGljYWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgYTRmM2FhYjZkZmJlZDZjMjkzNjdjNjg4YmZiOGE0N2VlZjYyYzIyNQpBdXRob3I6IEVpcmlrIEFhbm9uc2VuIDxlYWFAd3BybWVkaWNhbC5jb20+CkRhdGU6CVdlZCBTZXAgMTIgMTM6MzI6MzcgMjAwNyArMDIwMAoKICAgIEFkZCBzb21lIGNvbW1lbnRzIHRvIGNsb2NrcyBpbiBhdHN0azEwMDIuaAoKICAgIFRoaXMgcGF0Y2ggYXBwbGllcyBzb21lIGNsYXJpZnlpbmcgY29tbWVudHMgdG8gaG93IHRoZSBkaWZmZXJlbnQKICAgIGNsb2NrcyBhcmUgc2V0dXAgYWNjb3JkaW5nIHRvIGF0c3RrMTAwMi5oIFNvbWUgb2YgdGhlIHByZXZpb3VzCiAgICBjb21tZW50cyB3aGVyZSBzdGF0aW5nIHdyb25nZnVsIGluZm9ybWF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDk3MjEzZjMyNDE2ZWFkODg1ZGVhZmVhODY3NzRlOTEyZmZkNjBhZDAKQXV0aG9yOiBEYXZpZCBTYWFkYSA8RGF2aWQuU2FhZGFAZWNpdGVsZS5jb20+CkRhdGU6CU1vbiBTZXAgMTcgMTc6MDQ6NDcgMjAwNyArMDIwMAoKICAgIERlc2NyaXB0aW9uOiBBZGQgTkVDJ3MgUENJIE9IQ0kgbW9kdWxlIElEIHRvIHRoZSBVU0IgT0hDSSBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTYWFkYSA8ZGF2aWQuc2FhZGFAZWNpdGVsZS5jb20+Cgpjb21taXQgMzAzNjNlOThmYTQ3MGZiZWNlYTVlOGJjMGYxNDQzMzUyNzU0ZjMwMwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIFNlcCAxNyAwODoyMDo0NyAyMDA3ICswMjAwCgogICAgU21hbGwgd2hpdGVzcGFjZSBjbGVhbnVwIG9mIE9uZU5BTkQgcGF0Y2gKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZDdlOGNlMTAxYTRhNDVlZDZlZDQ1NzM5ZmMyZGU1Zjg3YjEzZjdmMQpBdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgpEYXRlOglNb24gU2VwIDEwIDE3OjE1OjE0IDIwMDcgKzA5MDAKCiAgICBPbmVOQU5EIHN1cHBvcnQgKHRha2UgIzIpCgogICAgW1BBVENIIDMvM10gT25lTkFORCBzdXBwb3J0ICh0YWtlICMyKQoKICAgIE9uZU5BTkQgc3VwcG9ydCBhdCBVLUJvb3QKCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgoKY29tbWl0IDE3YWEyODAwNDU3ZGYwYzA2YjQxNTE2ZjQ2ZjEyNjcxMmMxOTYyMTkKQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxrbXBhcmtAaW5mcmFkZWFkLm9yZz4KRGF0ZToJTW9uIFNlcCAxMCAxNzoxNDozNCAyMDA3ICswOTAwCgogICAgT25lTkFORCBzdXBwb3J0ICh0YWtlICMyKQoKICAgIFtQQVRDSCAyLzNdIE9uZU5BTkQgc3VwcG9ydCAodGFrZSAjMikKCiAgICBPbmVOQU5EIHN1cHBvcnQgYXQgVS1Cb290CgogICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KCmNvbW1pdCA5MTY1MjdmNDgwOWE3YmNkODExZjFmMWRhZjM0YWYxODRlMzFkZDhjCkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+CkRhdGU6CU1vbiBTZXAgMTAgMTc6MTM6NDkgMjAwNyArMDkwMAoKICAgIE9uZU5BTkQgc3VwcG9ydCAodGFrZSAjMikKCiAgICBbUEFUQ0ggMS8zXSBPbmVOQU5EIHN1cHBvcnQgKHRha2UgIzIpCgogICAgT25lTkFORCBzdXBwb3J0IGF0IFUtQm9vdAoKICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Cgpjb21taXQgYjQ5YzkwZGY2ZTdjZmNmYjhiODYyYjhiYmY4NDQ4ZGZmNWVlZDlhNQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJU3VuIFNlcCAxNiAyMDo1MTo1NyAyMDA3ICswMjAwCgogICAgW0ZJWF0gcmVtb3ZlIGZpbGVzIGZvcm0gcmVwb3NpdG9yeQoKY29tbWl0IDY3YzMxMDM2YWNhYWFhOTkyZmMzNDZjYzg5ZGIwOTA5YTdlNzMzYzQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gU2VwIDE2IDE3OjEwOjA0IDIwMDcgKzAyMDAKCiAgICBUUU04eHhbTE1dOiBGaXggYnJva2VuIGVudmlyb25tZW50IGFsaWdubWVudC4KCiAgICBXaXRoIHJlY2VudCB0b29sY2hhaW5zLCB0aGUgZW52aXJvbm1lbnQgc2VjdG9ycyB3ZXJlIG5vIGxvbmdlciBhbGlnbmVkIHRvCiAgICBzZWN0b3IgYm91bmRhcmllcy4gVGhlIHJlYXNvbiB3YXMgYSBjb21iaW5hdGlvbiBvZiB0d28gYnVnczoKCiAgICAxKSBjb21tb24vZW52aXJvbm1lbnQuYyBhc3N1bWVkIHRoYXQgQ09ORklHX1RRTTh4eEwgd291bGQgYmUgZGVmaW5lZAogICAgICAgZm9yIGFsbCBUUU04eHhMIGFuZCBUUU04eHhNIGJvYXJkcy4gQnV0ICJpbmNsdWRlL2NvbW1vbi5oIiwgd2hlcmUKICAgICAgIHRoaXMgZ2V0cyBkZWZpbmVkLCBpcyBub3QgaW5jbHVkZWQgaGVyZSAoYW5kIGNhbm5vdCBiZSBpbmNsdWRlZAogICAgICAgd2l0aG91dCBjYXVzaW5nIGxvdHMgb2YgcHJvYmxlbXMpLgoKICAgICAgIEFkZGVkIGEgbmV3ICNkZWZpbmUgQ0ZHX1VTRV9QUENFTlYgZm9yIGFsbCBib2FyZHMgd2hpY2ggcmVhbGx5CiAgICAgICB3YW50IHRvIHB1dCB0aGUgZW52aXJvbm1lbnQgaXMgYSAiLnBwY2VudiIgc2VjdGlvbi4KCiAgICAyKSBUaGUgbGlua2VyIHNjcmlwdHMganVzdCBpbmNsdWRlIGVudmlyb25tZW50Lm8sIHNpbGVudGx5IGFzc3VtaW5nCiAgICAgICB0aGF0IHRoZSBvYmplY3RzIGluIHRoYXQgZmlsZSBhcmUgcmVhbGx5IGluIHRoZSBvcmRlciBpbiB3aGljaAogICAgICAgdGhleSBhcmUgY29kZWQgaW4gdGhlIEMgZmlsZSwgaS4gZS4gImVudmlyb25tZW50IiBmaXJzdCwgdGhlbgogICAgICAgInJlZHVuZGFuZF9lbnZpcm9ubWVudCIsIGFuZCAiZW52X3NpemUiIGxhc3QuIEhvd2V2ZXIsIGN1cnJlbnQKICAgICAgIHRvb2xjaGFpbnMgKEdDQy00LngpIHJlb3JkZXIgdGhlIG9iamVjdHMsIGNhdXNpbmcgdGhlIGVudmlyb25tZW50CiAgICAgICBkYXRhIG5vdCB0byBzdGFydCBvbiBhIGZsYXNoIHNlY3RvciBib3VuZGFyeToKCiAgICAgICBJbnN0ZWFkIG9mOgkJCQkJd2UgZ290OgoKCTQwMDA4MDAwIFQgZW52aXJvbm1lbnQJCQk0MDAwODAwMCBUIGVudl9zaXplCgk0MDAwYzAwMCBUIHJlZHVuZGFuZF9lbnZpcm9ubWVudAk0MDAwODAwNCBUIHJlZHVuZGFuZF9lbnZpcm9ubWVudAoJNDAwMTAwMDAgVCBlbnZfc2l6ZQkJCTQwMDBjMDA0IFQgZW52aXJvbm1lbnQKCiAgICAgICBOb3RlOiB0aGlzIHBhdGNoIGZpeGVzIGp1c3QgdGhlIGZpcnN0IHBhcnQsIGFuZCBjdXJlcyB0aGUgYWxpZ25tZW50CiAgICAgICBwcm9ibGVtIGJ5IG1ha2luZyBzdXJlIHRoYXQgImVudl9zaXplIiBnZXRzIHBsYWNlZCBjb3JyZWN0bHkuIEhvd2V2ZXIsCiAgICAgICB3ZSBzdGlsbCBoYXZlIGEgcG90ZW50aWFsIGlzc3VlIGJlY2F1c2UgcHJpbWFyeSBhbmQgcmVkdW5kYW50CiAgICAgICBlbnZpcm9ubWVudCBzZWN0b3JzIGFyZSBhY3R1YWxseSBzd2FwcGVkLCBpLiBlLiB3ZSBoYXZlIG5vdzoKCgk0MDAwODAwMCBUIHJlZHVuZGFuZF9lbnZpcm9ubWVudAoJNDAwMGMwMDAgVCBlbnZpcm9ubWVudAoJNDAwMTAwMDAgVCBlbnZfc2l6ZQoKICAgICAgIFRoaXMgc2hhbGwgYmUgZml4ZWQgaW4gdGhlIG5leHQgdmVyc2lvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGViNmRhODA1MDc5N2MyMDRjOWQwMTA1NDg0MjQxODZjN2NlMzJmYzEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gU2VwIDE2IDAyOjM5OjM1IDIwMDcgKzAyMDAKCiAgICBUUU04eHgvRlBTOHh4OiBhZGp1c3QgZmxhc2ggcGFydGl0aW9ucyBmb3IgMi42IEFSQ0g9cG93ZXJwYyBrZXJuZWxzCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjZDJkMTYwMmM1NGNjNjk1N2JkZWYzODcyMjcyYTRiMjY0ODkzOTYwCkF1dGhvcjogdXJ3aXRoc3VnaG9zaEBnbWFpbC5jb20gPHVyd2l0aHN1Z2hvc2hAZ21haWwuY29tPgpEYXRlOglNb24gU2VwIDEwIDE0OjU0OjU2IDIwMDcgLTA0MDAKCiAgICBUeXBvIGZpeCBpbiB0c2VjLmMKCiAgICBGaXh1cCBmb3IgdGhlIGJyZWFrIHN0YXRlbWVudCBpbiB3cm9uZyBwbGFjZS4KCiAgICBbUGF0Y2ggYnkgdXJ3aXRoc3VnaG9zaEBnbWFpbC5jb21dCiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieToJV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1YmQ3ZmU5YWViNzY5MDYzNzFmNDBiOGZkMDc2MTNmMTA5MjJlM2U3CkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVR1ZSBTZXAgMTEgMTc6MDQ6MDAgMjAwNyArMDIwMAoKICAgIEZpeCBkb19kaXYoKSB1c2FnZSBpbiBuYW5kIHByb2Nlc3Mgb3V0cHV0CgogICAgRml4IHVzYWdlIG9mIGRvX2RpdigpIGluIG5hbmQgZXJhc2V8cmVhZHx3cml0ZSBwcm9jZXNzIG91dHB1dC4KCiAgICBUaGUgbGFzdCBwYXRjaCB0byBuYW5kX3V0aWwuYyBpbnRyb2R1Y2VkIGRvX2RpdigpIGluc3RlYWQgb2YgbGliZ2NjJ3MKICAgIGltcGxlbWVudGF0aW9uLiBCdXQgZG9fZGl2KCkgcmV0dXJucyB0aGUgcXVvdGllbnQgaW4gaXRzIGZpcnN0CiAgICBtYWNybyBwYXJhbWV0ZXIgYW5kIG5vdCBhcyByZXN1bHQuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgYzc1MGQyZTY2OTJhMDAwYTgyZjI5ZGU3YmYyNGUzZGMyMTIzOTE2MQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglXZWQgU2VwIDEyIDEyOjM2OjUzIDIwMDcgKzAyMDAKCiAgICBOQU5EOiBBZGQgQ0ZHX05BTkRfUVVJRVQgb3B0aW9uCgogICAgVGhpcyBjb25maWcgb3B0aW9uIHNldHMgdGhlIGRlZmF1bHQgZm9yIHRoZSBwcm9ncmVzcyBpbmZvcm1hdGlvbgogICAgb3V0cHV0IGJlaGF2aW9yIHRoYXQgY2FuIGFsc28gYmUgY29uZmlndXJlZCB0aHJvdWdoIHRoZSAncXVpZXQnCiAgICBlbnZpcm9ubWVudCB2YXJpYWJsZS4KCiAgICBUaGUgbGVnYWN5IE5BTkQgY29kZSBkb2VzIG5vdCBwcmludCB0aGUgY3VycmVudCBwcm9ncmVzcyBpbmZvCiAgICBvbiB0aGUgY29uc29sZS4gU28gdGhpcyBvcHRpb24gaXMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgZm9yCiAgICB1bml0cyB0aGF0IGFyZSBpbiB0aGUgZmllbGQgYW5kIHdoZXJlIHNldHRpbmcgdGhlIHF1aWV0IHZhcmlhYmxlCiAgICBpcyBub3QgYW4gb3B0aW9uLiBXaXRoIENGR19OQU5EX1FVSUVUIHNldCB0byAnMScgdGhlIGNvbnNvbGUKICAgIHByb2dyZXNzIGluZm8gaXMgdHVybmVkIG9mZi4gVGhpcyBjYW4gc3RpbGwgYmUgb3ZlcndyaXR0ZW4KICAgIHRocm91Z2ggdGhlIGVudmlyb25tZW50IHZhcmlhYmxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IGRjYjg4NjMwMjkwZDJiY2Q4MDMzODZkZDRjMmJlNzMxNDI5OTRjNGYKQXV0aG9yOiBMaWV3IFRzaSBDaHVuZy1yNWFhaHAgPFRzaS1jaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBTZXAgMTMgMTY6MDY6MDUgMjAwNyAtMDcwMAoKICAgIENvbGRGaXJlOiBmaXggYnVpbGQgZXJyb3IgYmVjYXN1ZSBvZiBiYWQgdHlwZSBvZiBtaWlfaW5pdCgpCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDMxNGQ1YjZjZTUyYTRlZDE5ZGQyOTVkMTM2NGUyNDZjNWU2MDUwMTcKQXV0aG9yOiBMaWV3IFRzaSBDaHVuZy1yNWFhaHAgPFRzaS1jaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBTZXAgMTMgMTY6MDQ6MDUgMjAwNyAtMDcwMAoKICAgIENvbGRGaXJlOiBGaXggYnVpbGQgZXJyb3IgY2F1c2VkIGJ5IHBpeGlzLmMKCiAgICBNb3ZlZCB0aGUgI2luY2x1ZGUgPGFzbS9jYWNoZS5oPiBpbnNpZGUgdGhlICNpZmRlZiBDT05GSUdfRlNMX1BJWElTLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlMjE2NTllMzA2NjBhMTM3N2M0MmFmMTM1YTYxMTRlZmUzOTgwMWQ5CkF1dGhvcjogU2FtIFNwYXJrcyA8U1NwYXJrc0B0d2Fjcy5jb20+CkRhdGU6CUZyaSBTZXAgMTQgMTE6MTQ6NDIgMjAwNyAtMDYwMAoKICAgIFVwZGF0ZSBNUEM4MzQ5SVRYKl9jb25maWcgdG8gcGxhY2UgY29uZmlnLnRtcCBpbiByaWdodCBwbGFjZS4KCiAgICBNUEM4MzRJVFgqX2NvbmZpZyBkb2VzIG5vdCBzdG9yZSBjb25maWcudG1wIGF0IHRoZSBjb3JyZWN0IGxvY2F0YXRpb24sCiAgICBjYXVzaW5nIE1QQzgzNDlJVFhHUCB0byBoYXZlIHRoZSB3cm9uZyBURVhUX0JBU0UuCgogICAgU2lnbmVkLW9mZi1ieTogU2FtIFNwYXJrcyA8U1NwYXJrc0B0d2Fjcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgMTIxOGFiZjFiNTgxN2EzOWE4MjM5OWI0YjkyOGIwMDc1MDU3NWJkYQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBTZXAgMTUgMjA6NDg6NDEgMjAwNyArMDIwMAoKICAgIEZpeCBjYXNlcyB3aGVyZSBERUNMQVJFX0dMT0JBTF9EQVRBX1BUUiB3YXMgbm90IGRlY2xhcmVkIGFzIGdsb2JhbAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNjZiM2YyNGQ2NjViZTY3OGE5ZGJiMTI1YjFlODQxODU0MDBmNjNiNQpBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVNhdCBTZXAgMTUgMTE6NTU6NDIgMjAwNyArMDIwMAoKICAgIE1ha2UgREVDTEFSRV9HTE9CQUxfREFUQV9QVFIgZ2xvYmFsIGZvciBEYVZpbmNpCgogICAgQXMgZGlzY3Vzc2VkIGluIFsxXSwgREVDTEFSRV9HTE9CQUxfREFUQV9QVFIgaGFzIHRvIGJlIGdsb2JhbCBhbmQgbm90CiAgICBmdW5jdGlvbiBsb2NhbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdtYWlsLmNvbT4KCiAgICBbMV0gaHR0cDovL2FydGljbGUuZ21hbmUub3JnL2dtYW5lLmNvbXAuYm9vdC1sb2FkZXJzLnUtYm9vdC8zMTgwNQoKY29tbWl0IDk5MWIwODlkMWNlNWFkOTQ1NzI1ZTM2NTdhOGYxMDZkZmEwMmEzOGUKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CVNhdCBTZXAgMTUgMDA6MDM6MzUgMjAwNyArMDIwMAoKICAgIFN5bmNocm9uaXplIHdpdGggVS1CT09UIG1haW5saW5lCgpjb21taXQgZDdmZWUzMmI3ZTYxZmUxMWM2NGUzNzFjZGU3OWZhYTQ3NjhlODM1MApBdXRob3I6IFNhbSBTcGFya3MgPFNTcGFya3NAdHdhY3MuY29tPgpEYXRlOglGcmkgU2VwIDE0IDExOjE0OjQyIDIwMDcgLTA2MDAKCiAgICBVcGRhdGUgTVBDODM0OUlUWCpfY29uZmlnIHRvIHBsYWNlIGNvbmZpZy50bXAgaW4gcmlnaHQgcGxhY2UuCgogICAgTVBDODM0SVRYKl9jb25maWcgZG9lcyBub3Qgc3RvcmUgY29uZmlnLnRtcCBhdCB0aGUgY29ycmVjdCBsb2NhdGF0aW9uLAogICAgY2F1c2luZyBNUEM4MzQ5SVRYR1AgdG8gaGF2ZSB0aGUgd3JvbmcgVEVYVF9CQVNFLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNhbSBTcGFya3MgPFNTcGFya3NAdHdhY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2ZTdiN2I2ZWExYjZkMDRkYmU5NjI0MmViNmEwYzFjNjY0Yzk4ZThjCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IFNlcCAxMyAxODoyMTo0OCAyMDA3ICswMjAwCgogICAgY201MjAwOiBGaXggYSB0eXBvIGludHJvZHVjZWQgYnkgYWZhYWM4NmZlMjk0OGFjODRjZDlhMTJiYmVkODgzYjNjNjgzZTdkOQoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgZTFmNjAxYjU3MmRiNWRlOWFhODFhMGI3N2M2OGE4Njk5NGZlMjRjNApBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVRodSBTZXAgMTMgMTY6MzM6NTkgMjAwNyArMDIwMAoKICAgIHRxbTUyMDA6IFJlc3RvcmUgY3VzdG9tYXJ5IGVudi4gdmFyaWFibGUgYm9vdCBjb21tYW5kcyBmb3IgcG93ZXJwYyBrZXJuZWxzCgogICAgLSB1cGRhdGUgZGVmYXVsdCBkZWZpbml0aW9ucyBvZiBrZXJuZWxfYWRkciBhbmQgZmR0X2FkZHIgZW52LiB2YXJpYWJsZXMKICAgIC0gbWFrZSBhcmNoL3Bvd2VycGMgYm9vdGluZyB0aGUgZGVmYXVsdCBzY2VuYXJpbwogICAgLSB1cGRhdGUgTVREIHBhcnRpdGlvbiBsYXlvdXQgdG8gbWF0Y2ggdGhlIGFib3ZlCgogICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KCmNvbW1pdCBmMzQwMjRkNGEzMjhlNmVkZDkwNjQ1NmRhOThkMmM1MzcxNTVjNGY3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIFNlcCAxMiAwMDo0ODo1NyAyMDA3ICswMjAwCgogICAgRml4IG1lbW9yeSBjb3JydXB0aW9uIHByb2JsZW0gb24gU1RYIEdQMyBTU0EgQm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBkOTRjNzllNDcwMTFhZjVlOGRkMTBlZDYxNjNjMDliNGNmYzc0M2NjCkF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KRGF0ZToJVHVlIFNlcCAxMSAxNTozNTowMSAyMDA3ICswMTAwCgogICAgRmluYWwgdGlkeQoKY29tbWl0IDM4YWQ4MmRhMGMxMTgwZWNkZWIyMTJhOGY0MjQ1ZTk0NWJjYzU0NmUKQXV0aG9yOiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KRGF0ZToJVHVlIFNlcCAxMSAxNTo0MjoxMSAyMDA3ICswMjAwCgogICAgW0dQM1NTQV0gQWRkIGRlZmluZSBDT05GSUdfTVBDODVYWF9QQ0kyIGluIGNvbmZpZyBmaWxlIHRvIGFsbG93IHUtYm9vdCB0bwogICAgc2NhbiBvbiBzZWNvbmQgcGNpIGJ1cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KCmNvbW1pdCA2YzJmNGYzODhlODE4MTY1NWVhOGI2OTM0M2VhMDBiNjhhYTZlOGQwCkF1dGhvcjogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+CkRhdGU6CVR1ZSBTZXAgMTEgMTI6NTc6NTIgMjAwNyArMDIwMAoKICAgIFtwcGM0eHhdIEluZGl2aWR1YWwgaGFuZGxpbmcgb2Ygc2RyYW0uYyBmb3IgYmFtYm9vX25hbmQgYnVpbGQKCiAgICBCYW1ib28gaGFzIGEgZmlsZSBzZHJhbS5jIHdoaWNoIG5lZWRzIHNwZWNpYWwgdHJlYXRtZW50IHdoZW4gYnVpbGRpbmcgaW4KICAgIHNlcGFyYXRlIGRpcmVjdG9yeS4gSXQgaGFzIHRvIGJlIGxpbmtlZCB0byBidWlsZCBkaXJlY3Rvcnkgb3RoZXJ3aXNlIGl0IGlzCiAgICBub3Qgc2Vlbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KCmNvbW1pdCBkNDU5NjM4NTRlZmYzOWQ1NzUxMjRkODU5NDE5YmI0OTUzY2UyYzg3CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglUdWUgU2VwIDExIDAwOjM3OjA0IDIwMDcgKzAyMDAKCiAgICBbRklYXSBNaWNyb2JsYXplIE1MNDAxIC0gcmVwYXJlIEZMQVNIIGhhbmRsaW5nCgpjb21taXQgMzhjMWVmNzI4ZDE5OTUwNDE0YThhYjFjY2ZjNTM3Njc4NDhmYTM0NgpBdXRob3I6IFNlYW4gTUNHT09HQU4gPHNlYW4ubWNnb29nYW5Ac3QuY29tPgpEYXRlOglNb24gU2VwIDEwIDE2OjU1OjU5IDIwMDcgKzAxMDAKCiAgICBBbGxvY2F0ZSBDUFUgQXJjaGl0ZWN0dXJlIENvZGUgZm9yIFNUTWljcm9lbGVjdHJvbmljcycgU1QyMDAuCgogICAgU2lnbmVkLW9mZi1ieTogU2VhbiBNY0dvb2dhbiA8U2Vhbi5NY0dvb2dhbkBzdC5jb20+CiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmNvbW1pdCA3NTRiYWM0ODE1NmY4OTU4ZDhmNmE1M2E1MWVkYTg4YWI1NzU4OTI5CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIFNlcCAxMCAyMDo0MjozMSAyMDA3ICswMjAwCgogICAgVXBkYXRlIHZlcnNpb24gdG8gbWF0Y2ggY3VycmVudCBzdGF0ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDdhODg4ZDZiM2MzMmExMjZkYmI1MDRlZjE0NmJiNGMyNjU3NGNhN2IKQXV0aG9yOiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KRGF0ZToJTW9uIFNlcCAxMCAxNzozOTowOCAyMDA3ICswMjAwCgogICAgW01QQzUxMnhdIFN0cmVhbWxpbmUgZnJhbWUgaGFuZGxpbmcgaW4gdGhlIEZFQyBkcml2ZXIKCiAgICAtIGNvbnZlcnQgZnJhbWUgc2l6ZSBzZXR0aW5ncyB0byBiZSBkZXJpdmVkIGZyb20gYSBzaW5nbGUgYmFzZQogICAgLSBzZXQgZnJhbWUgc2l6ZSB0byB0aGUgcmVjb21tZW5kZWQgZGVmYXVsdCB2YWx1ZQoKICAgIFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgoKY29tbWl0IGUyNTFlMDBkMGRiNGIzNmQxZDJiN2UzOGZlYzQzYTcyOTZiNTI5YTIKQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxrbXBhcmtAaW5mcmFkZWFkLm9yZz4KRGF0ZToJTW9uIFNlcCAxMCAxMTozNDowMCAyMDA3ICswOTAwCgogICAgUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmc6IHRhcmdldCBDUFUgZG9lcyBub3Qgc3VwcG9ydCBpbnRlcndvcmtpbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgoKY29tbWl0IDFkOWUzMWUwNDkxMWE2YmI3Y2M2NmRkOTExMzJjNjk5MTAxYzMyZTIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gU2VwIDkgMjE6MjE6MzMgMjAwNyArMDIwMAoKICAgIEZpeCBjb21waWxlIGVycm9yIGluIHNwYzE5MjAgY29uZmlnLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emL8Y2hlciA8bWtAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYTdkN2VjYTc5MWEzN2Y0NTJjOWRhMTBmZWY0YjMxZGQ3YWE5YTYyMgpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJRnJpIFNlcCA3IDA5OjI1OjA3IDIwMDcgLTA2MDAKCiAgICBCdWdmaXg6IG1ha2UgYm9vdG0rbGliZmR0IGNvbXBpbGUgb24gYm9hcmRzIHdpdGggbm8gZmxhc2gKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgNmVmYzFmYzBiNjNlNTVmOTRjNWJjNjFkOGRkMjNjOTE4ZTNiYzc3OApBdXRob3I6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgpEYXRlOglGcmkgU2VwIDcgMTg6MzU6MzcgMjAwNyArMDIwMAoKICAgIFtQUEM0NDBTUGVdIFBDSWUgZW52aXJvbm1lbnQgc2V0dGluZ3MgZm9yIEthdG1haSBhbmQgWXVjY2EKCiAgICAtICdwY2ljb25maWdob3N0JyBpcyBzZXQgYnkgZGVmYXVsdCBpbiBvcmRlciB0byBiZSBhYmxlIHRvIHNjYW4gYnJpZGdlcwogICAgYmVoaW5kIHRoZSBwcmltYXJ5IGhvc3QvUENJZQoKICAgIC0gJ3BjaXNjYW5kZWxheScgZW52IHZhcmlhYmxlIGlzIHJlY29nbml6ZWQgdG8gYWxsb3cgZm9yIHVzZXItY29udHJvbGxlZAogICAgZGVsYXkgYmVmb3JlIHRoZSBQQ0llIGJ1cyBlbnVtZXJhdGlvbjsgc29tZSBwZXJpcGhlcmFsIGRldmljZXMgcmVxdWlyZSBhCiAgICBzaWduaWZpY2FudCBkZWxheSBiZWZvcmUgdGhleSBjYW4gYmUgc2Nhbm5lZCAoZS5nLiBMU0k4NDA4RSk7IHdpdGhvdXQgdGhlCiAgICBkZWxheSB0aGV5IGFyZSBub3QgZGV0ZWN0ZWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KCmNvbW1pdCA3ZjE5MTM5Mzg5ODRlZjZjNmE0NmNiNTNlMDAzNzE5MTk2ZDljNWRlCkF1dGhvcjogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBTZXAgNyAxODoyMDoyMyAyMDA3ICswMjAwCgogICAgW1BQQzQ0MFNQZV0gSW1wcm92ZSBQQ0llIGNvbmZpZ3VyYXRpb24gc3BhY2UgYWNjZXNzCgogICAgLSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24gc3BhY2UgbWFwcGluZwogICAgLSBjb3JyZWN0IGJ1cyBudW1iZXJpbmcKICAgIC0gYmV0dGVyIGFjY2VzcyB0byBjb25maWcgc3BhY2UKCiAgICBQcmlvciB0byB0aGlzIHBhdGNoLCB0aGUgNDQwU1BlIGhvc3QvUENJZSBicmlkZ2Ugd2FzIGFibGUgdG8gY29uZmlndXJlIG9ubHkgdGhlCiAgICBmaXJzdCBkZXZpY2Ugb24gdGhlIGZpcnN0IGJ1cy4gV2Ugbm93IGFsbG93IHRvIGNvbmZpZ3VyZSB1cCB0byAxNiBidXNlczsKICAgIGFsc28sIHNjYW5uaW5nIGZvciBkZXZpY2VzIGJlaGluZCB0aGUgUENJZS1QQ0llIGJyaWRnZSBpcyBzdXBwb3J0ZWQsIHNvCiAgICBwZXJpcGhlcmFsIGRldmljZXMgZmFydGhlciBpbiBoaWVyYXJjaHkgY2FuIGJlIGlkZW50aWZpZWQuCgogICAgU2lnbmVkLW9mZi1ieTogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+Cgpjb21taXQgMTVlZTQ3MzRlNGUwODAwM2Q3M2Q5ZWFkM2NhODBlMmEwNjcyZTQyNwpBdXRob3I6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgpEYXRlOglGcmkgU2VwIDcgMTc6NDY6MTggMjAwNyArMDIwMAoKICAgIFtQUEM0NDBTUGVdIENvbnZlcnQgbWFjaGluZSBjaGVjayBleGNlcHRpb25zIGhhbmRsaW5nCgogICAgQ29udmVydCB1c2luZyBmaXh1cCBtZWNoYW5pc20gdG8gc3VwcHJlc3NpbmcgTUNLIGZvciB0aGUgZHVyYXRpb24gb2YgY29uZmlnCiAgICByZWFkL3dyaXRlIHRyYW5zYWN0aW9uOiB3aGlsZSBmaXh1cHMgd29yayBmaW5lIHdpdGggdGhlIGNhc2Ugb2YgYSBwcmVjaXNlCiAgICBleGNlcHRpb24sIHdlIGlkZW50aWZpZWQgYSBtYWpvciBkcmF3YmFjayB3aXRoIHRoaXMgYXBwcm9hY2ggd2hlbiB0aGVyZSdzCiAgICBhbiBpbXByZWNpc2UgY2FzZS4gSW4gdGhpcyBzY2VuYXJpbyB0aGVyZSBpcyB0aGUgZm9sbG93aW5nIHJhY2UgY29uZGl0aW9uOgogICAgdGhlIGZpeHVwIGlzIChieSBkZXNpZ24pIHNldCB0byBjYXRjaCB0aGUgaW5zdHJ1Y3Rpb24gZm9sbG93aW5nIHRoZSBvbmUKICAgIGFjdHVhbGx5IGNhdXNpbmcgdGhlIGV4Y2VwdGlvbjsgaWYgYW4gaW50ZXJydXB0IChlLmcuIGRlY3JlbWVudGVyKSBoYXBwZW5zCiAgICBiZXR3ZWVuIHRob3NlIHR3byBpbnN0cnVjdGlvbnMsIHRoZSBJU1IgY29kZSBpcyBleGVjdXRlZCBiZWZvcmUgdGhlIGZpeHVwCiAgICBoYW5kbGVyIHRoZSBtYWNoaW5lIGNoZWNrIGlzIG5vIGxvbmdlciBwcm90ZWN0ZWQgYnkgdGhlIGZpeHVwIGhhbmRsZXIgYXMgaXQKICAgIGFwcGVhcnMgYXMgd2l0aGluIHRoZSBJU1IgY29kZS4gSW4gY29uc2VxdWVuY2UgdGhlIGZpeHVwIGFwcHJvYWNoIGlzIGJlaW5nCiAgICBwaGFzZWQgb3V0IGFuZCByZXBsYWNlZCB3aXRoIGV4cGxpY2l0IHN1cHByZXNzaW5nIG9mIE1DSyBkdXJpbmcgYSBQQ0llCiAgICBjb25maWcgcmVhZC93cml0ZSBjeWNsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KCmNvbW1pdCBmZjc2NDBjOWVhZDg4MDZiNWQ4MjdmMmIyOWY5Y2IyNjMyYWRkNzI5CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIFNlcCA3IDE3OjQzOjM2IDIwMDcgKzAyMDAKCiAgICBGaXggdHlwbyBpbiBNQUtFQUxMIHNjcmlwdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDA4ZTJlNWZjZDJlMDY2NzBiNjJlMTY4MGEzOTM0YzBlNTVjNzI4MTAKQXV0aG9yOiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KRGF0ZToJRnJpIFNlcCA3IDE3OjA5OjIxIDIwMDcgKzAyMDAKCiAgICBbTVBDNTEyeF0gUHJvcGVyIGhhbmRsaW5nIG9mIGxhcmdlciBmcmFtZXMgaW4gdGhlIEZFQyBkcml2ZXIKCiAgICBXaGVuIGZyYW1lIGxhcmdlciB0aGFuIGxvY2FsIFJYIGJ1ZmZlciBpcyByZWNlaXZlZCwgaXQgaXMgc3BsaXQgYW5kIGhhbmRsZWQKICAgIGJ5IHR3byBidWZmZXIgZGVzY3JpcHRvcnMuIFByaW9yIHRvIHRoaXMgcGF0Y2ggdGhlIEZFQyBkcml2ZXIgZGlzY2FyZGVkCiAgICBjb250ZW50cyBvZiBhIGJ1ZmZlciBkZXNjcmlwdG9yIHdpdGhvdXQgdGhlICdMQVNUJyBiaXQgc2V0LCBzbyB0aGUgZmlyc3QKICAgIHBhcnQgb2YgdGhlIGZyYW1lIHdhcyBsb3N0IGluIGNhc2Ugb2YgbGFyZ2VyIGZyYW1lcy4gVGhpcyBmaXggYWxsb3dzIHRvCiAgICBzYWZlbHkgY29tYmluZSB0aGUgdHdvIHBpZWNlcyBpbnRvIHRoZSB3aG9sZSBmcmFtZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KCmNvbW1pdCA4ZDE3OTc5ZDAzNTk0OTJhODIyYTBhNDA5ZDI2ZTNhMzU0OWI0Y2Q0CkF1dGhvcjogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KRGF0ZToJRnJpIFNlcCA3IDE3OjA1OjM2IDIwMDcgKzAyMDAKCiAgICBbTVBDNTEyeF0gQ29ycmVjdCBmaXh1cCByZWxvY2F0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KCmNvbW1pdCBhODljYmJkMjdhNjBlNjc0MDc3MjAwMGZkMDY4OGZmYmExYzI1NzZhCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIFNlcCA3IDAxOjIxOjI1IDIwMDcgKzAyMDAKCiAgICBVcGRhdGUgQ0hBTkdFTE9HLCBtaW5vciBjb2Rpbmcgc3R5bGUgY2xlYW51cC4KCmNvbW1pdCA1ZTU4MDNlMTE5ZGUzYmViZDc2ZmM5YTU3YmFhYzBiNWFlY2NjOGEzCkF1dGhvcjogc3RlZmFubyBiYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CVRodSBBdWcgMzAgMjM6MDE6NDkgMjAwNyArMDIwMAoKICAgIFBYQTI3MDogQWRkZWQgc3VwcG9ydCBmb3IgVHJpemVwc0lWIGJvYXJkLgoKICAgIFRoaXMgcGF0Y2ggYWRkIHN1cHBvcnQgZm9yIHRoZSBUcml6ZXBzIElWIG1vZHVsZSAoNTIwTWh6KS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KCmNvbW1pdCA4MDE3MmM2MTgxYzkxMmZiYjM0ZWEzYmEwYzIyYjIzMmI0MTliNDdmCkF1dGhvcjogc3RlZmFubyBiYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CVRodSBBdWcgMzAgMjI6NTc6MDQgMjAwNyArMDIwMAoKICAgIFBYQTI3MDogQWRkIHN1cHBvcnQgZm9yIG11bHRpcGxlIHNlcmlhbCBwb3J0cy4KCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc2VyaWFsIHBvcnRzIHRvIHRoZSBQWEEgdGFyZ2V0LgogICAgRkZVQVJULCBCVFVBUlQgYW5kIFNUVUFSVCBhcmUgc3VwcG9ydGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgoKY29tbWl0IDI4YmIzZjcyYzY4N2FjNmIyZWIwNzZiMDFkZDIxYTVmZDY1N2Q0NWUKQXV0aG9yOiBzdGVmYW5vIGJhYmljIDxzYmFiaWNAZGVueC5kZT4KRGF0ZToJVGh1IEF1ZyAzMCAyMjo0ODo0NyAyMDA3ICswMjAwCgogICAgUFhBMjcwOiBmaXggY29tcGlsZSBpc3N1ZSAoaW52YWxpZCBsdmFsdWUpCgogICAgQ29kZSBpcyBicm9rZW4gZm9yIFBYQTI3MCBkdWUgdG8gImludmFsaWQgbHZhbHVlIGluIGFzc2lnbm1lbnQiLgoKICAgIFRoaXMgcGF0Y2ggZml4IGl0IGluIHB4YS1yZWdzLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KCmNvbW1pdCAxZDJjYTQ0NmUxYTczMWRmNDIwMjA2ZDA0ZmUyNzhjMjdlYTZiOGU4CkF1dGhvcjogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEF1ZyAzMCAxODoxOTowNSAyMDA3ICswODAwCgogICAgQWRkIEJVSUxEX0RJUiBzdXBwb3J0IGZvciBiaW9zIGVtdWxhdG9yLgoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjRkOGE1NTE0NTQ0MmYxMzY5ODI2MzQ4NjIzNDFhM2UwMjAwMmJkYQpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KRGF0ZToJRnJpIEF1ZyAzMSAxNDo0MTo1MSAyMDA3ICswOTAwCgogICAgW01JUFNdIFJlbW92ZSBpbmxpbmUgYXNtIHN0cmluZyBmdW5jdGlvbnMKCiAgICBTdG9wIHVzaW5nIGlubGluZSBzdHJpbmcgZnVuY3Rpb25zIG9uIE1JUFMgYXMgb3RoZXIgQVJDSHMgZG8gc28sCiAgICBzaW5jZSB0aGUgb3B0aW1pemVkIGlubGluZSBhc20gdmVyc2lvbnMgYXJlIG5vdCBzbWFsbC4KCiAgICBUaGlzIGNoYW5nZSBpcyB0cmlnZ2VyZWQgYnkgYSBmb2xsb3dpbmcgTUlQUyBidWlsZCBlcnJvcjoKICAgIGNvbW1vbi9saWJjb21tb24uYShleHBvcnRzLm8pKC50ZXh0KzB4ZGMpOiBJbiBmdW5jdGlvbiBganVtcHRhYmxlX2luaXQnOgogICAgY29tbW9uL2V4cG9ydHMuYzozMjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgc3RyY21wJwogICAgbWFrZTogKioqIFt1LWJvb3RdIEVycm9yIDEKCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+Cgpjb21taXQgOGVhMmM0ZTU0ODMzZGVhZWJjMjRjM2NhNmI3ZjIxMzUzYzI1YjBmNQpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KRGF0ZToJRnJpIEF1ZyAzMSAxNDo0MTo0NSAyMDA3ICswOTAwCgogICAgW01JUFNdIFVwZGF0ZSBhc20gc3RyaW5nIGhlYWRlcgoKICAgIFRoaXMgcGF0Y2hlcyBjb250YWlucyBzZXZlcmFsIGJ1Z2ZpeGVzIGFuZCBjbGVhbnVwcyBpbiB0aGUgbGF0ZXN0IHVwc3RyZWFtOgoKICAgICAtIERvbid0IGluY2x1ZGUgbGludXgvY29uZmlnLmgKICAgICAtIFJlbW92ZSBidWdneSBpbmxpbmUgdmVyc2lvbiBvZiBtZW1zY2FuLgogICAgIC0gTWVyZ2Ugd2l0aCBMaW51eCAyLjYuMTEtcmMzLgogICAgIC0gRml4IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gc3RyY3B5IGluIGJpbmZtdF9taXNjIGNhdXNlZCBieSBnY2MgMy40LgogICAgIC0gR29vZGJ5ZSBtaXBzNjQuCTMxNzA0IGxpbmVzIG9mIGNvZGUgYml0ZSB0aGUgZHVzdC4KICAgICAtIFJlcGxhY2UgZXh0ZXJuIGlubGluZSB3aXRoIHN0YXRpYyBpbmxpbmUuCiAgICAgLSBGaXggcmV0dXJuIHZhbHVlIG9mIHN0cm5jcHkuCiAgICAgLSBSZW1vdmUgYSBidW5jaCBtb3JlICIkMSIgY2xvYmJlcnMuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgoKY29tbWl0IDViNzI5ZmIzYmQ5OGY0OTg1NWQ2YmZjNjU3YzNmYmFlOTVmMmFkYzIKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgU2VwIDQgMTc6MzE6MjIgMjAwNyArMDIwMAoKICAgIEZpeCBkb19ib290bV9saW51eCgpIHNvIHRoYXQgbXVsdGktZmlsZSBpbWFnZXMgd2l0aCBGRFQgYmxvYiBib290LgoKICAgIEZpeCBpbmNvcnJlY3QgYmxvYiBhZGRyZXNzIGNhbGN1bGF0aW9uIGluIGRvX2Jvb3RtX2xpbnV4KCkgdGhhdCBwcmV2ZW50cwogICAgYm9vdGluZyB0aGUga2VybmVsIGZyb20gYSBtdWx0aS1maWxlIGltYWdlIChrZXJuZWwgKyBpbml0cmQgKyBibG9iKS4KCiAgICBBbHNvLCBtYWtlIG1pbm9yIHVwZGF0ZXMgdG8gdGhlIFUtQm9vdCdzIG91dHB1dCBhbmQgdG8gdGhlIGNvZGluZyBzdHlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDA0MWEyNTU0YWQ2MTllODBkY2U1MjBjMWEzMzIxMGFmZmNiNmEzZjIKQXV0aG9yOiBHYXJ5IEplbm5lam9obiA8Z2FyeS5qZW5uZWpvaG5AZnJlZW5ldC5kZT4KRGF0ZToJRnJpIEF1ZyAzMSAxNDoyOTowNCAyMDA3ICswMjAwCgogICAgQWRkIHN1cHBvcnQgZm9yIFNpbDY4MCBJREUgY29udHJvbGxlci4KCiAgICBvIGFkZCBkcml2ZXJzL3NpbDY4MC5jIHRvIHN1cHBvcnQgdGhlIFNpbDY4MCBJREUtY29udHJvbGxlci4KICAgIG8gZHJpdmVycy9NYWtlZmlsZTogYWRkIHNpbDY4MC5vLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgoKY29tbWl0IGU3OTAyMTIyM2JjMzM5ZGY2NTVlMzYwNjQ1YTUyYzQ1N2E3NGIwNjcKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVRodSBTZXAgNiAwOTo0Nzo0MCAyMDA3IC0wNjAwCgogICAgYm9vdG0vZmR0OiBPbmx5IHByb2Nlc3MgdGhlIGZkdCBpZiBhbiBmZHQgYWRkcmVzcyB3YXMgcHJvdmlkZWQKCiAgICBCb2FyZHMgd2l0aCBDT05GSUdfT0ZfTElCRkRUIGVuYWJsZWQgYXJlIG5vdCBhYmxlIHRvIGJvb3Qgb2xkLXN0eWxlCiAgICBrZXJuZWxzIHVzaW5nIHRoZSBib2FyZCBpbmZvIHN0cnVjdHVyZSAoaW5zdGVhZCBvZiBwYXNzaW5nIGEgZGV2aWNlIHRyZWUpCiAgICBUaGlzIGNoYW5nZSBhbGxvd3MgdGhlIG9sZCBzdHlsZSBib290aW5nIHRvIGJlIHVzZWQgaWYgdGhlIGZkdCBhcmd1bWVudAogICAgd2FzIG5vdCBwYXNzZWQgdG8gJ2Jvb3RtJy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CiAgICBBY2tlZC1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjZjI4MTdhODRjMmU5YmVhMmM1ZGZjMDg0YmNlMmYyZDI1NjNhYzQzCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglUaHUgU2VwIDYgMDk6NDY6MjMgMjAwNyAtMDYwMAoKICAgIE1pZ3JhdGUgNXh4eCBib2FyZHMgZnJvbSBDT05GSUdfT0ZfRkxBVF9UUkVFIHRvIENPTkZJR19PRl9MSUJGRFQKCiAgICBBZmZlY3RzIGJvYXJkczogaWNlY3ViZSAobGl0ZTUyMDApLCBqdXBpdGVyLCBtb3Rpb25wcm8sIHRxbTUyMDAKCiAgICBUZXN0ZWQgb246IGxpdGU1MjAwYgoKICAgIE5vdGU6IHRoZSBmaXh1cCBmdW5jdGlvbnMgaGF2ZSBub3QgYmVlbiBtb3ZlZCB0byBhIGNvbW1vbiBwbGFjZS4gIFRoaXMKICAgIHBhdGNoIGlzIHRhcmdldGVkIGZvciBpbW1lZGlhdGUgbWVyZ2luZyBhcyBpbiBzb2x2ZXMgYSBidWlsZCBpc3N1ZSwgYnV0CiAgICB0aGUgZmluYWwgbmFtZS9sb2NhdGlvbiBvZiB0aGUgZml4dXBzIGlzIHN0aWxsIHN1YmplY3QgdG8gZGViYXRlLiAgSQogICAgcHJvcG9zZSB0byBtZXJnZSB0aGlzIG5vdywgYW5kIG1vdmUgdGhlIGZpeHVwcyBpbiB0aGUgbmV4dCBtZXJnZSB3aW5kb3cKICAgIHRvIGJlIHVzYWJsZSBieSBhbGwgdGFyZ2V0cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgNDFiYjc2ZTk0MTkyOWY1NGE3MzIwNmZiMTMyZjdhNGMyNzU1NDNhMwpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVGh1IFNlcCA2IDA5OjQ2OjE3IDIwMDcgLTA2MDAKCiAgICBsaWJmZHQ6IGFkZCBjb252ZW5pZW5jZSBmdW5jdGlvbiBmZHRfZmluZF9hbmRfc2V0cHJvcCgpCgogICAgR2l2ZW4gdGhlIHBhdGggdG8gYSBub2RlLCBmZHRfZmluZF9hbmRfc2V0cHJvcCgpIGFsbG93cyBhIHByb3BlcnR5IHZhbHVlCiAgICB0byBiZSBzZXQgZGlyZWN0bHkuCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDgwNzY3YTZjZWFkOTk5MGQ5ZTc3ZTYyYmU5NDc4NDNjMmM3MmY0NjkKQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgpEYXRlOglXZWQgU2VwIDUgMTY6MDQ6NDEgMjAwNyArMDEwMAoKICAgIENoYW5nZWQgQVBJIG5hbWUgdG8gY29sb3VyZWRfbGVkLmgKICAgIFJlbW92ZWQgY29kZSB1c2luZyBkZXByZWNhdGVkIGlmZGVmIENPTkZJR19CT09UQklORlVOQwogICAgVGlkaWVkIG90aGVyIGNwdS9hcm05MjB0L3N0YXJ0LlMgY29kZQoKY29tbWl0IDU2YTkyNzA1MjFiYWFhMDBlMTI2MzlhOTc4MzAyYTY3ZjYxZWYwNjAKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgQXVnIDMwIDE2OjE4OjE4IDIwMDcgLTA1MDAKCiAgICBGaXggVUxJIFJUQyBzdXBwb3J0IG9uIE1QQzg1NDQgRFMKCiAgICBUaGUgUlRDIG9uIHRoZSBNMTU3NSBVTEkgY2hpcHNldCByZXF1aXJlcyBhIGR1bW15IHJlYWQgYmVmb3JlCiAgICB3ZSBhcmUgYWJsZSB0byB0YWxrIHRvIHRoZSBSVEMuICBXZSBhY2NvbXBsaXNoIHRoaXMgYnkgYWRkaW5nIGEKICAgIHNlY29uZCBtZW1vcnkgcmVnaW9uIHRvIHRoZSBQSEIgdGhlIFVMSSBpcyBvbiBhbmQgcmVhZCBmcm9tIGl0LgoKICAgIFRoZSBzZWNvbmQgcmVnaW9uIGlzIGFkZGVkIHRvIG1haW50YWluIGNvbXBhdGlhYmlsdHkgd2l0aCBMaW51eCdzCiAgICB2aWV3IG9mIHRoZSBQQ0kgbWVtb3J5IG1hcC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGY3NWU4OWU5YjU3MTRkYjJiMGU4MDA3NDA3MWRmYmRkNmY1OTQ4OGEKQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXVnIDMwIDAxOjU4OjQ4IDIwMDcgLTA1MDAKCiAgICBmdF9ib2FyZF9zZXR1cCB1cGRhdGUgODV4eC84Nnh4IG9mIHBjaS9wY2llIGJ1cy1yYW5nZSBwcm9wZXJ0eS4KCiAgICBwY2llIGlzIG5vdyBkaWZmZXJlbnRpYXRlZCBmcm9tIHBjaS4gIEFkZCA4NjQxIGJ1cy1yYW5nZSB1cGRhdGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOWY1YzNkMzcyMGU3NzdhNTcyZGNkYzhhZjIwMDhiNDRjNzI0Mzg4NQpBdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+CkRhdGU6CVR1ZSBTZXAgNCAxNjoxODozOCAyMDA3ICswMTAwCgogICAgQWRkIGNvbG91cmVkIGxlZCBpbnRlcmZhY2UgZm9yIEFSTSBib2FyZHMuCiAgICBVc2UgaXQgaW4gY3B1L2FybTkyMHQvc3RhcnQuUyB0byBpbmRpY2F0ZSBVLUJvb3QgY29kZSBoYXMgYmVlbiBlbnRlcmVkLgoKY29tbWl0IDc0NjJmZTBkNWE5ZDQwY2RlMDgzZmIxYTNjZDczOTExOTk2YjVlY2IKQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgpEYXRlOglUdWUgU2VwIDQgMTQ6NDk6MjggMjAwNyArMDEwMAoKICAgIE1vdmUgaW5jbHVkZS9sZWQuaCB0byBib2FyZC9hdDkxcm05MjAwZGsKCmNvbW1pdCA2ZTRiZjliMjRlNTdjMTVhYmM2NTQyZTY4NWQwNjM4MGJjNjRhZjI3CkF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KRGF0ZToJVHVlIFNlcCA0IDE0OjI1OjUxIDIwMDcgKzAxMDAKCiAgICBSYW4gTGluZGVudCBvbiBkcml2ZXJzL2F0NDUuYwoKY29tbWl0IDU1N2FiODlkMjk0ZjA4ZGQ1MzJmMjFkMTk4NjFiNDAwOTMyMDBhMzMKQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgpEYXRlOglUdWUgU2VwIDQgMTQ6MjM6NTAgMjAwNyArMDEwMAoKICAgIFJlbmFtZSBDT05GSUdfQ01EX01VWCB0byBDT05GSUdfQ01EX0FUOTFfU1BJTVVYCgpjb21taXQgODFiNzNkZWMxNmZkMTIyNzM2OWExOTFlNzI1ZTEwMDQ0YTlkNTZiOApBdXRob3I6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgpEYXRlOglGcmkgQXVnIDMxIDE1OjIxOjQ2IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IChSZS0pRW5hYmxlIENPTkZJR19QQ0lfUE5QIG9uIEFNQ0MgNDQwRVB4IFNlcXVvaWEKCiAgICBUaGUgNDQwRVB4IGhhcyBhIHByb2JsZW0gd2hlbiB0aGUgUENJX0NBQ0hFX0xJTkVfU0laRSByZWdpc3RlciBpcwogICAgc2V0IHRvIG5vbi16ZXJvLCBiZWNhdXNlIGl0IGRvZXNuJ3Qgc3VwcG9ydCBNUk0gKG1lbW9yeS1yZWFkLQogICAgbXVsdGlwbGUpIGNvcnJlY3RseS4gV2Ugbm93IGFkZGVkIHRoZSBwb3NzaWJpbGl0eSB0byBjb25maWd1cmUKICAgIHRoaXMgcmVnaXN0ZXIgaW4gdGhlIGJvYXJkIGNvbmZpZyBmaWxlLCBzbyB0aGF0IHRoZSBkZWZhdWx0IHZhbHVlCiAgICBvZiA4IGNhbiBiZSBvdmVycmlkZGVuLgoKICAgIEhlcmUgdGhlIGRldGFpbHMgb2YgdGhpcyBwYXRjaDoKCiAgICBvIGRyaXZlcnNfcGNpX2F1dG8uYzogaW50cm9kdWNlIENGR19QQ0lfQ0FDSEVfTElORV9TSVpFIHRvIGFsbG93CiAgICAgIGJvYXJkLXNwZWNpZmljIHNldHRpbmdzLiBBcyBhbiBleGFtcGxlIHRoZSBzZXF1b2lhIGJvYXJkIHJlcXVpcmVzIDAuCiAgICAgIElkZWEgZnJvbSBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+LgogICAgbyBib2FyZC9hbWNjL3NlcXVvaWEvaW5pdC5TOiBhZGQgYSBUTEIgbWFwcGluZyBhdCAweEU4MDAwMDAwIGZvciB0aGUKICAgICAgUENJIElPLXNwYWNlLiBPYnRhaW5lZCBmcm9tIFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4uCiAgICBvIGluY2x1ZGUvY29uZmlncy9zZXF1b2lhLmg6IHR1cm4gQ09ORklHX1BDSV9QTlAgYmFjayBvbiBhbmQgc2V0CiAgICAgIENGR19QQ0lfQ0FDSEVfTElORV9TSVpFIHRvIDAuCgogICAgU2lnbmVkLW9mZi1ieTogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNjAxNzQ3NDZjNjY4YjMwOTM3OGE5MTQ4OGRkZWQ4OThlOTU1M2VhZQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBBdWcgMzEgMTA6MDE6NTEgMjAwNyArMDIwMAoKICAgIEZpeCBURlRQIE9BQ0sgY29kZSBmb3Igc2hvcnQgcGFja2V0cy4KCiAgICBUaGUgb2xkIGNvZGUgaGFkIGEgbG9vcCBsaW1pdCBvdmVyZmxvdyBidWcgd2hpY2ggY2F1c2VkIGEgc2VtaS0KICAgIGluZmluaXRlIGxvb3AgZm9yIHNtYWxsIHBhY2tldHMsIGJlY2F1c2UgaW4gImk8bGVuLTgiLCAiaSIgd2FzIHNpZ25lZCwKICAgIGJ1dCAibGVuIiB3YXMgdW5zaWduZWQsIGFuZCAibGVuLTgiIGJlY2FtZSBhIGh1Z2UgbnVtYmVyIGZvciBzbWFsbAogICAgdmFsdWVzIG9mICJsZW4iLgoKICAgIFRoaXMgaXMgYSB3b3JrYXJvdW5kIHdoaWNoIHJlcGxhY2VzIGJyb2tlbiBjb21taXQgOGYxYmMyODQuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA2OTZkZDEzMDdjZDhlNzNhMTBlOWJiM2M1MTczMWJmZDZmODM3YmVlCkF1dGhvcjogSGFucy1DaHJpc3RpYW4gRWd0dmVkdCA8aGNlZ3R2ZWR0QGF0bWVsLmNvbT4KRGF0ZToJVGh1IEF1ZyAzMCAxNTowMzowNSAyMDA3ICswMjAwCgogICAgUmVkdWNlIEJPT1RERUxBWSB2YXJpYWJsZSB0byAxIHNlY29uZCBieSBkZWZhdWx0IGZvciBTVEsxMDAyCgogICAgU2lnbmVkLW9mZi1ieTogSGFucy1DaHJpc3RpYW4gRWd0dmVkdCA8aGNlZ3R2ZWR0QGF0bWVsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGM4OGI2ZTFjYmY5YThhZTJhMzRmYjYwMmY3OGExYmY0ZTY2OTJiNmEKQXV0aG9yOiBIYW5zLUNocmlzdGlhbiBFZ3R2ZWR0IDxoY2VndHZlZHRAYXRtZWwuY29tPgpEYXRlOglUaHUgQXVnIDMwIDE1OjAzOjA0IDIwMDcgKzAyMDAKCiAgICBSZW1vdmUgZG91YmxlIHF1b3RhdGlvbiBtYXJrcyBhcm91bmQgTUFDIGFkZHJlc3MgZm9yIFNUSzEwMDIKCiAgICBTaWduZWQtb2ZmLWJ5OiBIYW5zLUNocmlzdGlhbiBFZ3R2ZWR0IDxoY2VndHZlZHRAYXRtZWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgZmYxM2FjOGM3YmJlYmIyMzhlMzM5NTkyZGU3NjVjNTQ2ZGJhMTA3MwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVRodSBBdWcgMzAgMTQ6NDI6MTUgMjAwNyArMDIwMAoKICAgIEJhY2tvdXQgY29tbWl0IDhmMWJjMjg0IGFzIGl0IGNhdXNlcyBURlRQIHRvIGZhaWwuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAxOTAwZmJmMjU1YWNiYThiOTRmYjQ0MmExNjQwOGVhODVhMWQ0NmE2CkF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEF1ZyAzMCAwMjoyNjoxNyAyMDA3IC0wNTAwCgogICAgUmV2ZXJ0ICJGaXggTVBDODU0NERTIFBDSWUzIHNjc2kuIgoKICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgOTQ2OGU2ODAuCiAgICBDb21taXQgMTZlMjNjM2Y1ZGEgcmVtb3ZpbmcgYWxsb2NhdGlvbiBvZiBQQ1NSQkFSIGlzIHN1ZmZpY2llbnQuCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4ZjFiYzI4NDA4ZGVkMjEzNDE4ZDliYzA3ODBjN2Q4ZmI4YTAzNzc0CkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglXZWQgQXVnIDI5IDE4OjI2OjI0IDIwMDcgLTA2MDAKCiAgICB0ZnRwOiBkb24ndCBpbXBsaWNpdHkgdHJ1c3QgdGhlIGZvcm1hdCBvZiByZWNldmllZCBwYWNrZXRzCgogICAgVGhlIFRGVFAgT0FDSyBjb2RlIHRydXN0cyB0aGF0IHRoZSBpbmNvbWluZyBwYWNrZXQgaXMgZm9ybWF0ZWQgYXMKICAgIEFTQ0lJIHRleHQgYW5kIGNhbiBiZSBwcm9jZXNzZWQgYnkgc3RyaW5nIGZ1bmN0aW9ucy4gSXQgYWxzbyBoYXMgYQogICAgbG9vcCBsaW1pdCBvdmVyZmxvdyBidWcgd2hlcmUgaWYgdGhlIHBhY2tldCBsZW5ndGggaXMgbGVzcyB0aGFuIDgsIGl0CiAgICBlbmRzIHVwIGxvb3Bpbmcgb3ZlciAqYWxsKiBvZiBtZW1vcnkgdG8gZmluZCB0aGUgJ2Jsa3NpemUnIHN0cmluZy4KCiAgICBUaGlzIHBhdGNoIHNvbHZlcyB0aGUgcHJvYmxlbSBieSBmb3JjaW5nIHRoZSBwYWNrZXQgdG8gYmUgbnVsbAogICAgdGVybWluYXRlZCBhbmQgdXNpbmcgc3Ryc3RyKCkgdG8gc2VhcmNoIGZvciB0aGUgc3ViIHN0cmluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgMDQ2MjU3NjRjYzkzY2U4YTYxNjI1YWMxOWQ3ZmUyYTJjZWVlODE0MwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEF1ZyAyOSAxNjozMToxOCAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBDaGFuZ2UgbHdtb241IGRlZmF1bHQgZW52aXJvbm1lbnQgdG8gc3VwcG9ydCBMaW51eCBSVEMKCiAgICBUaGUgTGludXggUENGODU2MyBSVEMgZHJpdmVyIGRvZXNuJ3QgZG8gYXV0b3Byb2JpbmcsIHNvIHdlIG5lZWQKICAgIHRvIHN1cHBseSB0aGUgUlRDIEkyQyBhZGRyZXNzIGFzIGJvb3RsaW5lIHBhcmFtZXRlci4gVGhpcyBwYXRjaAogICAgYWRkcyBzdXBwb3J0IGZvciB0aGlzIHJ0YyBwcm9iaW5nIHBhcmFtZXRlciB0byB0aGUgYm9vdGFyZ3M6CgogICAgInJ0Yy1wY2Y4NTYzLnByb2JlPTAsMHg1MSIKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMjYwMmE1YzQwYWUzN2FiOTY1YTRlMjQwODU0ZmRhZmZiNTEzMjhhNApBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMjkgMDk6MDY6MDUgMjAwNyAtMDUwMAoKICAgIHNiYzg2NDE6IHJlbW92ZSB1bnVzZWQgT0ZfRkxBVF9UUkVFX01BWF9TSVpFCgogICAgdGhpcyBoYWQgc2xpcHBlZCB0aHJvdWdoIHRoZSBjcmFja3MsIHNpbmNlIHRoZSBzYmMgYm9hcmQgd2FzIGFkZGVkCiAgICBhZnRlciBJIHdyb3RlIHRoZSBvcmlnaW5hbCBwYXRjaCB0byByZW1vdmUgYWxsIHRoZXNlIHN5bWJvbHMsIGFuZAogICAgYmVmb3JlIGl0IHdhcyBtZXJnZWQuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjNWJkZWQzYzg4ZTQ4YWU2NDhhNzVkMzU3ZGM4MWE4MjU1ZmE4MWYxCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEF1ZyAyOSAxNDowNTozMCAyMDA3ICswMjAwCgogICAgQWRkIG1paV9pbml0KCkgcHJvdG90eXBlCgogICAgdG8gZ2V0IHJpZCBvZiBhICpsb3QqIG9mIGNvbXBpbGVyIHdhcm5pbmdzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMmQxZjIzYWExZTc0ZTRhOGY4ZmZhNjdmMjQ2ZWI5OGM1MjJkZmQ3ZgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBBdWcgMjkgMTM6MzU6MDMgMjAwNyArMDIwMAoKICAgIERpc2FibGUgbmV0d29yayBzdXBwb3J0IG9uIGNtaV9tcGM1eHggYm9hcmQKCiAgICAuLmJlY2F1c2UgaXQgY2F1c2VkIGNvbXBpbGVyIGVycm9ycyBhbmQgdGhlcmUgc2VlbXMgdG8gYmUgbm8KICAgIGJvYXJkIG1haW50YWluZXIgdG8gdGFrZSBjYXJlIG9mIHRoaXMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA5NDY4ZTY4MDRiN2UyNWIwZjZmNTJlNTNmNDdiY2UzMTc1NDAwYTE2CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIEF1ZyAyMCAwOTo0NDowMCAyMDA3IC0wNTAwCgogICAgRml4IE1QQzg1NDREUyBQQ0llMyBzY3NpLgoKICAgIDxlZC5zd2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KCiAgICBUaGUgcHJvYmxlbSBpcyBwY2lhdXRvX3NldHVwX2RldmljZSgpIGdldHRpbmcgY2FsbGVkIGZyb20gZnNsX3BjaV9pbml0LmMKICAgIGlzIGFsbG9jYXRpbmcgbWVtb3J5IHNwYWNlIGl0IGRvZXNuJ3QgbmVlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPGVkLnN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRiZjRhYmI4YTRlOTk1NTU1NmIxMjBhMWFhZmEzMGMwM2U3NDAzMmEKQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDIxIDA5OjM4OjU5IDIwMDcgLTA1MDAKCiAgICA4NTQ4Y2RzIGZpeGVzCgogICAgUmVzdG9yZSBDT05GSUdfRVhUUkFfRU5WX1NFVFRJTkdTIGRlZmluaXRpb24gd2hpY2ggY29udGFpbnMgdGhlCiAgICBjb3JyZWN0IGNvbnNvbGVkZXYgbmVlZGVkIGZvciBsaW51eCBib290LgogICAgU3RhbmRhcmRpemUgb24gZmR0e2ZpbGUsYWRkcn0gdmFyIHRvIGhvbGQgZHRiIGZpbGUgbmFtZS4KCiAgICBTZXQgUENJIGluYm91bmQgbWVtb3J5IHJlZ2lvbiBmcm9tIENGR19NRU1PUllfe0JVUyxQSFlTfS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDdhMWFjNDE5ZmEwZDJkMjNkZGQwOGJkNjFkMTY4OTZhOWYzM2M5MzMKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXVnIDIzIDE1OjIwOjU0IDIwMDcgLTA0MDAKCiAgICBFbmFibGUgTDIgY2FjaGUgZm9yIE1QQzg1NjhNRFMgYm9hcmQKCiAgICBUaGUgTDIgY2FjaGUgc2l6ZSBpcyA1MTJLQiBmb3IgODU2OCwgcHJpbnQgb3V0IHRoZSBjb3JyZWN0IGluZm9ybWFpdG9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTRjNDdmZGFmMTRjYjI5ZmEzZmI0ZDRkYTJlZmRkOTZjODAzYjQ2YgpBdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMjIgMTc6NTQ6NDkgMjAwNyArMDgwMAoKICAgIFJlbW92ZSB0aGUgYmlvcyBlbXVsYXRvciBiaW5hcnkgZmlsZXMgZnJvbSBNQUkgYm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDc2MDhkNzVmOWM4N2M5ZWI1YjNhNDMyMTlkMDUwNmQzZTk3OWExM2YKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDIxIDE3OjAwOjE3IDIwMDcgLTA1MDAKCiAgICBzdXBwb3J0IGJvYXJkIHZlbmRvci1jb21tb24gbWFrZWZpbGVzCgogICAgaWYgYSBib2FyZC8kKFZFTkRPUikvY29tbW9uL01ha2VmaWxlIGV4aXN0cywgYnVpbGQgaXQuCgogICAgYWxzbyBhZGQgdGhlIGZpcnN0IHN1Y2ggY2FzZSwgYm9hcmQvZnJlZXNjYWxlL2NvbW1vbi9NYWtlZmlsZSwgdG8KICAgIGhhbmRsZSBidWlsZGluZyBib2FyZC1zaGFyZWQgRUVQUk9NLCBQSVhJUywgYW5kIE1EUy1QSUIgY29kZSwgYXMKICAgIGRpY3RhdGVkIGJ5IGJvYXJkIGNvbmZpZ3VyYXRpb24uCgogICAgdGh1c2x5IGdldCByaWQgb2YgYWx0ZXJuYXRlIGJ1aWxkIGRpciBlcnJvcnMgc3VjaCBhczoKCiAgICBGQVRBTDogY2FuJ3QgY3JlYXRlIC93b3JrL3dkL3RtcC91LWJvb3QtcHBjL2JvYXJkL2ZyZWVzY2FsZS9tcGM4MzYwZW1kcy8uLi9jb21tb24vcHEtbWRzLXBpYi5vOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CgogICAgYnkgcHV0dGluZyB0aGUgY29tbW9uLyBta2RpciBjb21tYW5kIGluIGl0cyBwcm9wZXIgcGxhY2UgKHRoZSBjb21tb24KICAgIE1ha2VmaWxlKS4gQ29tbW9uIGJpdHMgZnJvbSBleGlzdGluZyBpbmRpdmlkdWFsIGJvYXJkIE1ha2VmaWxlcyBoYXZlCiAgICBiZWVuIHJlbW92ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlZjhmMjA3NTI3MTJkYzFjZGJkODZmNDdlM2JkNmUzNWY4MWM4M2ZkCkF1dGhvcjogc3RlZmFubyBiYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CVR1ZSBBdWcgMjEgMTU6NTI6MzMgMjAwNyArMDIwMAoKICAgIEZpeDogVEZUUCBpcyBub3Qgd29ya2luZyBvbiBsaXR0bGUgZW5kaWFuIHN5c3RlbXMKCiAgICBURlRQIGRvZXMgbm90IHdvcmsgYW55bW9yZSBhZnRlciBtdWx0aWNhc3QgdGZ0cAogICAgcGF0Y2ggd2FzIGFwcGxpZWQgb24gbGl0dGxlIGVuZGlhbiBzeXN0ZW1zLgogICAgVGhpcyBwYXRjaCBmaXggaXQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Cgpjb21taXQgNWY0NzA5NDg1NzA1MjZlOTE4NmYwNTNhMzAwM2RhNzcxOTYwNGU5MApBdXRob3I6IHN0ZWZhbm8gYmFiaWMgPHNiYWJpY0BkZW54LmRlPgpEYXRlOglUdWUgQXVnIDIxIDE1OjUwOjMzIDIwMDcgKzAyMDAKCiAgICBGaXggTUFDIGFkZHJlc3Mgc2V0dGluZyBpbiBETTkwMDAgZHJpdmVyLgoKICAgIFRoZSBsb2dpYyB0byBjaGVjayBpZiB0aGVyZSBpcyBhIGNvcnJlY3QgTUFDIGFkZHJlc3MgaW4gdGhlIERNOTAwMAogICAgRUVQUk9NLCBhZGRlZCBpbiB0aGUgbGFzdCBwYXRjaCwgaXMgd3JvbmcuIE5vdyB0aGUgTUFDIGFkZHJlc3MgaXMKICAgIGFsd2F5cyB0YWtlbiBmcm9tIHRoZSBlbnZpcm9ubWVudCwgZXZlbiBpZiBhIHN1aXRhYmxlIE1BQyBpcyBwcmVzZW50CiAgICBpbiB0aGUgRUVQUk9NLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgoKY29tbWl0IDRhODUyN2VmMDg2ZWM3Yzg5ZjQwNjc0ZWYwMjRhZTZmOTg4YTYxNGEKQXV0aG9yOiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KRGF0ZToJVHVlIEF1ZyAyMSAxMjo0MDozNCAyMDA3ICswMjAwCgogICAgTVBDNXh4eDogZml4IHNvbWUgY29tcGlsZXIgd2FybmluZ3MgaW4gVVNCIGNvZGUKCiAgICBGaXggdGhlIGZvbGxvd2luZyB3YXJuaW5nczoKICAgIC0gdXNiLmM6eHg6IHdhcm5pbmc6IGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGlzbid0IGEgcHJvdG90eXBlCiAgICAtIHVzYl9vaGNpLmM6eHh4OiB3YXJuaW5nOiBwYXNzaW5nIGFyZ3VtZW50IDEgb2YgJ19fZnN3YWIzMicgbWFrZXMgaW50ZWdlcgogICAgICBmcm9tIHBvaW50ZXIgd2lodG91dCBhIGNhc3QKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3Jhc2VAdHFzLmRlPgoKY29tbWl0IDE2ZTIzYzNmNWRhYjY5MzdmNTEwOTM2NTQxNjgwOGM3ZjE1YzEyMmIKQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXVnIDIwIDIzOjU1OjMzIDIwMDcgLTA1MDAKCiAgICBmc2xfcGNpX2luaXQgLSBSZW1vdmUgc2VsZiBQQ1NSQkFSIGFsbG9jYXRpb24KCiAgICBDUFUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZSB3YXMgYmVpbmcgd2FzdGVkIGJ5IGFsbG9jYXRpbmcgYQogICAgUENTUkJBUiBQQ0kgaW5ib3VuZCByZWdpb24gdG8gaXQncyBtZW1vcnkgc3BhY2UuCgogICAgQXMgYSBydWxlLCBQQ1NSQkFSIHNob3VsZCBiZSBsZWZ0IGFsb25lIHNpbmNlIGl0IGRvZXMgbm90IGFmZmVjdAogICAgdHJhbnNhY3Rpb25zIGZyb20gc2VsZiBhbmQgb3RoZXIgbWFzdGVycyBtYXkgaGF2ZSBjaGFuZ2VkIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8ZWQuc3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMGU3MDBjZTAzYTIzYmIxOTIxMTQ5YmM3NzAwOGFjZTcxMDNkNTI4OQpBdXRob3I6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgpEYXRlOglNb24gQXVnIDIwIDEzOjU2OjQ3IDIwMDcgKzAyMDAKCiAgICBGaXggY29tcGlsZXIgd2FybmluZyBpbiBpbmNsdWRlL3MzYzI0MTAuaAoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlICJ0eXBlIHF1YWxpZmllcnMgaWdub3JlZCBvbiBmdWN0aW9uIHJldHVybiB0cHllIgogICAgd2FybmluZyBmb3IgaW5jbHVkZS9zM2MyNDEwLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KCmNvbW1pdCA5YmI4YjIwOWVkMjA1OGE1NzU2ZWNiZWI1NDRjMDY3ZTQ0YTQyYWVhCkF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KRGF0ZToJTW9uIEF1ZyAyMCAwNzowOTowNSAyMDA3ICswMjAwCgogICAgRml4IGNvbXBpbGF0aW9uIGVycm9yIGZvciBvbWFwMjQyMGg0X2NvbmZpZy4KCiAgICBvbWFwMjQyMGg0IHN3aXRjaGVkIHRvIGNmaSwgc28gcmVtb3ZlIG9sZCAoYWxyZWFkeSBkaXNhYmxlZCkgZmxhc2guYwogICAgYW5kIGZsYXNoX3Byb2JlKCkgY2FsbHMgaW4gZW52X2ZsYXNoLmMuCgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnbWFpbC5jb20+Cgpjb21taXQgM2JiMzQyZmM4NWQ3OWRiYjZiOGMyMDM5ZTdjZGNkZGM4MmI4ZDkwZgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBBdWcgMTAgMTQ6MzQ6MTQgMjAwNyAtMDUwMAoKICAgIGZkdDogcmVtb3ZlIHVudXNlZCBPRl9GTEFUX1RSRUVfTUFYX1NJWkUgcmVmZXJlbmNlcwoKICAgIGFuZCBtYWtlIHNvbWUgbWlub3IgY29ycmVjdGlvbnMgdG8gdGhlIEZEVCBwYXJ0IG9mIHRoZSBSRUFETUUuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2YWYyZWViMWU5OWMyZGNjNTg0ZDRjNWFiN2ZjYWUzMGEzMjVmNGRlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEF1ZyAyOSAwMTozMjowNSAyMDA3ICswMjAwCgogICAgTWlub3IgY29kaW5nIHN0eWxlIGNsZWFudXAuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBhODYxNTU4YzY1ZjY1ZjFjZjEzMDJmM2EzNWU5ZGI3Njg2YjllMWEzCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQHBvbGx1eC5kZW54LmRlPgpEYXRlOglUdWUgQXVnIDI4IDE3OjQwOjMzIDIwMDcgKzAyMDAKCiAgICBbVUMxMDFdIEZpeDogaWYgbm8gQ0YgaW4gdGhlIGJvYXJkLCBVLUJvb3QgcmVzZXRzIHNvbWV0aW1lcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBmOTg5ODRjYjE5NGJiMzRkYmUxZGI5NDI5ZDNiNTExMzNhZjMwZDA3CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQHBvbGx1eC5kZW54LmRlPgpEYXRlOglUdWUgQXVnIDI4IDE3OjM5OjE0IDIwMDcgKzAyMDAKCiAgICBJREU6CS0gbWFrZSBpZGVfaW5iICgpIGFuZCBpZGVfb3V0YiAoKSAid2VhayIsIHNvIGJvYXJkcyBjYW4KCSAgICAgIGRlZmluZSB0aGVyZSBvd24gSS9PIGZ1bmN0aW9ucy4KCSAgICAgIChOZWVkZWQgZm9yIHRoZSBwY3M0NDBlcCBib2FyZCkuCgkgICAgLSBUaGUgZGVmYXVsdCBJL08gRnVuY3Rpb25zIGFyZSBhZ2FpbiA4IEJpdCBhY2Nlc3Nlcy4KCSAgICAtIEFkZGVkIENPTkZJR19DTURfSURFIGZvciB0aGUgcGNzNDQwZXAgQm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgMmMwNWZkMTI1NzQ0OTgxZTVmMjgyOGQyNGU2NmNjYzIwYTc3ZDI1ZApBdXRob3I6IFNlbWloIEhhemFyIDxzZW1paC5oYXphckBpbmRlZmlhLmNvbT4KRGF0ZToJTW9uIEF1ZyAyMCAxOTowMDowMSAyMDA3ICswMzAwCgogICAgQVZSMzI6IENoYW5nZSBwcm90b3R5cGUgb2YgbWVtc2V0CgogICAgU2lnbmVkLW9mZi1ieTogU2VtaWggSGF6YXIgPHNlbWloLmhhemFyQGluZGVmaWEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgOWMwMmRlZmMyOWI1Nzk0NWI2MDA3MTRjZjYxZGRmZDAyYjAyZmIxNApBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KRGF0ZToJU2F0IEF1ZyAyNSAwNTowNzoxNiAyMDA3ICswMjAwCgogICAgUE9TVDogbGltaXQgbWVtb3J5IHRlc3QgYXJlYSB0byBub3QgdG91Y2ggZ2xvYmFsIGRhdGEgYW55bW9yZQoKICAgIEFzIGV4cGVyaWVuY2VkIG9uIGx3bW9uNSwgb24gc29tZSBib2FyZHMgdGhlIFBPU1QgbWVtb3J5IHRlc3QgY2FuCiAgICBjb3JydXB0IHRoZSBnbG9iYWwgZGF0YSBidWZmZXIgKGJkKS4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGlzc3VlCiAgICBieSBjaGVja2luZyBhbmQgbGltaXRpbmcgdGhpcyBhcmVhLgoKICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3NWUxYTg0ZDQ4M2UzNmJlMTBlMjA2ZTUzOWIwMjhjNDg4OWUxMTU4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgQXVnIDI0IDE1OjQxOjQyIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBSVEMgUE9TVCB0ZXN0IHRvIGx3bW9uNSBib2FyZCBjb25maWd1cmF0aW9uCgogICAgU2luY2UgdGhpcyBSVEMgUE9TVCB0ZXN0IGlzIHRha2luZyBxdWl0ZSBhIHdoaWxlIHRvIGNvbXBsZXRlCiAgICBpdCdzIG9ubHkgaW5pdGlhdGVkIHVwb24gc3BlY2lhbCBrZXlwcmVzcyBzYW1lIGFzIHRoZSBjb21wbGV0ZQogICAgbWVtb3J5IFBPU1QuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGQ3YmZhNjIwMDM3YTZkMjIxMDE1OTM4NzU3MWJkZjkzYWEzMmMxNjIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBBdWcgMjQgMTU6MTk6MTAgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogQ2hhbmdlIEdQSU8gc2lnbmFsIGZvciB3YXRjaGRvZyB0cmlnZ2VyaW5nIG9uIGx3bW9uNQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjMjVkZDhmYzI1ZTljYTM2OTVkYjk5NmEyNTdkOWJhNGRhYjQxNGRiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgQXVnIDIzIDExOjAyOjM3IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBzdXBwb3J0IGZvciAybmQgSTJDIEVFUFJPTSBvbiBsd21vbjUgYm9hcmQKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIDJuZCBFRVBST00gKEFUMjRDMTI4KSBvbiB0aGUgbHdtb241CiAgICBib2FyZC4gTm93IHRoZSAiZWVwcm9tIiBjb21tYW5kIGNhbiBiZSB1c2VkIHRvIHJlYWQvd3JpdGUgZnJvbS90byB0aGlzCiAgICBkZXZpY2UuIEFkZGl0aW9uYWxseSBhIG5ldyBjb21tYW5kIHdhcyBhZGRlZCAiZWVwcm9td3AiIHRvIGVuLS9kaXNhYmxlCiAgICB0aGUgd3JpdGUtcHJvdGVjdCBvZiB0aGlzIDJuZCBFRVBST00uCgogICAgVGhlIDFzdCBFRVBST00gaXMgbm90IGFmZmVjdGVkIGJ5IHRoaXMgd3JpdGUtcHJvdGVjdCBjb21tYW5kLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjNjRmYjMwZTRjNTk3NjAwN2Q1NmZjMTc4OWM3YTA2NjYwODJiNTM2CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgQXVnIDIyIDA4OjU2OjA5IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFJlbW92ZSB1bnVzZWQgb3B0aW9uIENGR19JTklUX1JBTV9PQ00KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgM2FkNjM4Nzg3MzdhNWEyYjFlNjA4MjViZjBhN2Q2MDFkN2E2OTVlNwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEF1ZyAyMSAxNjoyNzo1NyAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBBZGQgbWF0cml4IGtiZCBzdXBwb3J0IHRvIGx3bW9uNSBib2FyZCAoNDQwRVB4IGJhc2VkKQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgbWF0cml4IGtleWJvYXJkIG9uIHRoZSBsd21vbjUgYm9hcmQuCiAgICBTaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gaW4gdGhlIGRzUENJIGlzIGtpbmQgb2YgY29tcGF0aWJsZSB3aXRoIHRoZQogICAgIm9sZCIgbHdtb24gYm9hcmQsIG1vc3Qgb2YgdGhlIGNvZGUgaXMgY29waWVkIGZyb20gdGhlIGx3bW9uCiAgICBib2FyZCBkaXJlY3RvcnkuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDNlNjZjMDc4MDAzNjA3YTdkMWQyMTRjMTVhNWYyNjJiYzFiNDAzMmYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gQXVnIDE5IDEwOjI3OjM0IDIwMDcgKzAyMDAKCiAgICBGaXggc29tZSBidWlsZCBlcnJvcnMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAwNTY3NTczNWVmNzdkYzIzYjVlMGViNzgyYmFkMWZmNDc3YjU1ZTg2CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IEF1ZyAxOCAyMjowMDozOCAyMDA3ICswMjAwCgogICAgVXBkYXRlIENIQU5HRUxPRy4KCmNvbW1pdCA3OWYyNDBmN2VjYzA1MDZiNDNhYzUwZDFlYTQwNWZmNjU0MGQ0ZDU3CkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEF1ZyAxNiAyMjo1MjozOSAyMDA3IC0wNTAwCgogICAgbGliX3BwYzogbWFrZSBib2FyZF9hZGRfcmFtX2luZm8gd2VhawoKICAgIHBsYXRmb3JtcyB3aXNoaW5nIHRvIGRpc3BsYXkgUkFNIGRpYWdub3N0aWNzIGluIGFkZGl0aW9uIHRvIHNpemUsCiAgICBjYW4gZG8gc28sIG9uIG9uZSBsaW5lLCBpbiB0aGVpciBvd24gYm9hcmRfYWRkX3JhbV9pbmZvKCkKICAgIGltcGxlbWVudGF0aW9uLgoKICAgIHRoaXMgY29uc2VxdWVudGx5IGVsaW1pbmF0ZXMgQ09ORklHX0FERF9SQU1fSU5GTy4KCiAgICBUaGFua3MgdG8gU3RlZmFuIGZvciB0aGUgaGludC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDgxNWI1YmQ1YjE4NTY5OTE3YzNlMDRiOTc1NzUxMWU2ZWQyM2I5ZjYKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+CkRhdGU6CUZyaSBBdWcgMTcgMTI6NDM6NDQgMjAwNyArMDkwMAoKICAgIFBDSV9SRUFEX1ZJQV9EV09SRF9PUDogRml4ICp2YWwgdW5pbml0aWFsaXplZCBidWcKCiAgICBUaGlzIHBhdGNoIGhhcyBiZWVuIHNlbnQgb246CiAgICAtIDYgSnVuIDIwMDcKCiAgICBNYW55IHVzZXJzIG9mIFBDSSBjb25maWcgcmVhZCByb3V0aW5lcyB0ZW5kIHRvIGlnbm9yZSB0aGUgZnVuY3Rpb24KICAgIHJldCB2YWx1ZSwgYW5kIGFyZSBvbmx5IGNvbmNlcm5lZCBhYm91dCB0aGUgY29udGVudHMgb2YgKnZhbC4gQmFzZWQKICAgIG9uIHRoaXMsIHBjaV9ob3NlX3JlYWRfY29uZmlnX3tieXRlLHdvcmR9X3ZpYV9kd29yZCBzaG91bGQgaW5pdGlhbGl6ZQogICAgdGhlICp2YWwgb24gZHdvcmQgcmVhZCBlcnJvci4KCiAgICBXaXRob3V0IHRoaXMgZml4LCBmb3IgZXhhbXBsZSwgd2UnbGwgZ28gb24gc2Nhbm5pbmcgYnVzIHdpdGggdmVuZG9yIG9yCiAgICBoZWFkZXJfdHlwZSB1bmluaXRpYWxpemVkLiBUaGlzIGJyaW5ncyBtYW55IHVubmVjZXNzYXJ5IGNvbmZpZyB0cmlhbHMuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgoKY29tbWl0IDI2NjY3YjdmYTA1YThiZjJmYzY1ZmI5ZjMyMzBiMDJiMWExMGMzNjcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVNhdCBBdWcgMTggMTQ6Mzc6NTIgMjAwNyArMDIwMAoKICAgIENvbGRGaXJlOiBGaXggc29tZSByZW1haW5pbmcgcHJvYmxlbXMgd2l0aCBDRkdfQ01EXwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4MjgwZjZhMWM0MzI0NzYxNmI2ODIyNDY3NTE4OGU1Y2NkMTI0NjUwCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgQXVnIDE4IDE0OjMzOjAyIDIwMDcgKzAyMDAKCiAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0YTQ0MmQzMTg2YjMxODkzYjRmNzdjNmU4MmY2M2M0NTE3YTUyMjRiCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXVnIDE2IDE5OjIzOjUwIDIwMDcgLTA1MDAKCiAgICBDb2xkRmlyZTogQWRkIE01MjM1RVZCIFBsYXRmb3JtIGZvciBNQ0Y1MjN4CgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRjYzFjZDU5NDE4MjdhMDRjZjVjNTFhMDdmY2M0MmU4OTQ1ODk0YWEKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgQXVnIDE3IDA5OjMwOjAwIDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBmaXggdHlwbyBpbiBERFIyIHByb2dyYW1taW5nCgogICAgaW50cm9kdWNlZCBpbiB0aGUgaW1wbGVtZW50IGJvYXJkX2FkZF9yYW1faW5mbyBwYXRjaCBhcyBJIHdhcyBjbGVhbmluZyBvdXQgdGhlCiAgICBtYWdpYyBudW1iZXJzLiAgc29ycnkuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlNThmZTk1Nzg0ZDI1MTRmYzljMjEwMjhkYzU5ZjJiMzE5YTM1ZDgwCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEF1ZyAxNiAyMjo1MzowOSAyMDA3IC0wNTAwCgogICAgbXBjODN4eDogbW92ZSBmcmVlc2NhbGUgYm9hcmRzIHRvIGJvYXJkcy9mcmVlc2NhbGUKCiAgICBpbmNsdWRlcyBidWlsZCBmaXhlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDVhYTRhZDhkOGU3ZTk0NjgyMTk5OTBjNzg3NWQ1ZmRjOWU5NjJmNDcKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXVnIDE2IDIyOjUyOjU5IDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBzdXBwcmVzcyB1bnVzZWQgdmFyaWFibGUgJ3ZhbDgnIHdhcm5pbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGJiZWE0NmY3NmY3NjdiOTE5MDcwYjQ4MjliZjM0Yzg2YmQyMjMyNDgKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXVnIDE2IDIyOjUyOjQ4IDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBpbXBsZW1lbnQgYm9hcmRfYWRkX3JhbV9pbmZvCgogICAgYWRkIGJvYXJkX2FkZF9yYW1faW5mbywgdG8gbWFrZSBtZW1vcnkgZGlhZ25vc3RpYyBvdXRwdXQgbW9yZQogICAgY29uc2lzdGVudC4gdS1ib290IGJhbm5lciBvdXRwdXQgbm93IGxvb2tzIGxpa2U6CgogICAgRFJBTTogIDI1NiBNQiAoRERSMSwgNjQtYml0LCBFQ0Mgb24pCgogICAgYW5kIGZvciBib2FyZHMgd2l0aCBTRFJBTSBvbiB0aGUgbG9jYWwgYnVzLCBhIGxpbmUgc3VjaCBhcyB0aGlzIGlzCiAgICBhZGRlZDoKCiAgICBTRFJBTTogNjQgTUIgKGxvY2FsIGJ1cykKCiAgICBhbHNvIHJlcGxhY2VkIHNvbWUgbWFnaWMgbnVtYmVycyB3aXRoIHRoZWlyIGVxdWl2YWxlbnQgZGVmaW5lIG5hbWVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTQ3Nzg1ODVkMTM4OWQ4NmQ1ODQ2ZWZlYzI5ZTVmY2U4OTI2ODBjZQpBdXRob3I6IFRvbnkgTGkgPHRvbnkubGlAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEF1ZyAxNyAxMDozNTo1OSAyMDA3ICswODAwCgogICAgbXBjODN4eDogU3BsaXQgUElCIGluaXQgY29kZSBmcm9tIHBjaS5jIGFuZCBhZGQgUW9jMyBBVE0gY2FyZCBzdXBwb3J0CgogICAgVGhlIHBhdGNoIHNwbGl0IHRoZSBQSUIgaW5pdCBjb2RlIGZyb20gcGNpLmMgdG8gYSBzaW5nbGUgZmlsZSBib2FyZC9mcmVlc2NhbGUvY29tbW9uL3BxLW1kcy1waWIuYwogICAgQW5kIGFkZCBRb2MzIEFUTSBjYXJkIHN1cHBvcnQgZm9yIE1QQzgzNjBFTURTIGFuZCBNUEM4MzJYRU1EUyBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5IFRvbnkgTGkgPHRvbnkubGlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4YWUxNThjZDg3YTRhMjU3MjJiMjc4MzUyNjFiNmZmMGZhMmFhNmE3CkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXVnIDE2IDE1OjA1OjExIDIwMDcgLTA1MDAKCiAgICBDb2xkRmlyZTogQWRkIE01NDQ1NUVWQiBmb3IgTUNGNTQ0NXgKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYTE0MzZhODQyNjU0YThkMzkyN2QwODJhOGFlOWVlMGExMGRhNjJkNwpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEF1ZyAxNiAxMzoyMDo1MCAyMDA3IC0wNTAwCgogICAgQ29sZEZpcmU6IEFkZCBNNTI1M0VWQkUgcGxhdGZvcm0gZm9yIE1DRjUyeDIKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYTYwNWFhY2Q4MzI0MDk0MTk5NDAyODE2Y2M2ZDkxMjRhYmE1N2I4ZApBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEF1ZyAxNiAwNTowNDozMSAyMDA3IC0wNTAwCgogICAgQ29sZEZpcmU6IEFkZCBNNTI0OUVWQiBwbGF0Zm9ybSBmb3IgTUNGNTJ4MgoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmMjhlMWJkOWRhYTZkZTVlYjMzYWU0ODIyYmRhNmIwMDhjY2I0ZTllCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDE1IDIwOjMyOjA2IDIwMDcgLTA1MDAKCiAgICBDb2xkRmlyZTogVXBkYXRlIEZyZWVzY2FsZSBNQ0Y1MngyIHBsYXRmb3JtcwoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4NzA0NzBkYmY2ZjRiYjk4NjRlMGQ5N2FlZWRiYzE3YzE2N2M2ZDFjCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDE1IDE5OjU1OjEwIDIwMDcgLTA1MDAKCiAgICBDb2xkRmlyZTogVXBkYXRlIEVCK01DRi1FVjEyMyBwbGF0Zm9ybQoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhYTkzZDg1OWQ5YjFmY2Q4ZWVhNTJkNTFiMDZlODZjMzhmNzIxMTFiCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDE1IDE5OjQ2OjM4IDIwMDcgLTA1MDAKCiAgICBDb2xkRmlyZTogdXBkYXRlIFRBU1JFRyBwbGF0Zm9ybSBmb3IgTUNGNTJ4MgoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhOTUwNTUxMGJmNTZhOWI1NTU4MjQ4ZGQ4YjczZWM5ZDlhMTU1NmEyCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDE1IDE5OjQ1OjUxIDIwMDcgLTA1MDAKCiAgICBDb2xkRmlyZTogdXBkYXRlIHI1MjAwIHBsYXRmb3JtIGZvciBNQ0Y1MngyCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDZjZmQzYzdiYzgxM2ZiMzE3YWI3YzA3ODFmMGQxODc0YjFjMDg3N2MKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMTUgMTk6NDM6MjAgMjAwNyAtMDUwMAoKICAgIENvbGRGaXJlOiBpZG1yIHBsYXRmb3JtIE1DRjUyeDIgdXBkYXRlCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDY3MDY0MjRkMGJiODUxZmI1MmFmMDBjZDFjMzMwMWU5MWVlN2YyYjAKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMTUgMTk6NDE6MDYgMjAwNyAtMDUwMAoKICAgIENvbGRGaXJlOiBjb2JyYTUyNzIgcGxhdGZvcm0gZm9yIE1DRjUyeDIgdXBkYXRlCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDU2MTE1NjY1YjRhNjRjMTBjMDE0NDBjNTc3NDliMjY1ZTA5MDhmYTQKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMTUgMTk6Mzg6MTUgMjAwNyAtMDUwMAoKICAgIENvbGRGaXJlOiBNQ0Y1MngyIEhlYWRlciBmaWxlcyB1cGRhdGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgODNlYzIwYmM0MzgwZWViZGRmZGU0NWRhNmUzYTY5YTkyZDRkYjIxZApBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEF1ZyAxNSAxOToyMToyMSAyMDA3IC0wNTAwCgogICAgQ29sZEZpcmU6IE1DRjUyeDIgdXBkYXRlCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGY1MmU3ODMwNGRjYzBhYzQ1OWMwZWExZmE1YmUyNzVjN2QxNjQyY2YKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMTUgMTg6NDY6MTEgMjAwNyAtMDUwMAoKICAgIENvbGRGaXJlOiBNQ0Y1MzI5IHVwZGF0ZSBjYWNoZQoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3MTcxOTc3ZmI4ZmQ3N2NmYjY2NzY5NTNmYTlhMDU3ODljNDUwNTEzCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDE1IDE1OjQwOjIwIDIwMDcgLTA1MDAKCiAgICBDb2xkRmlyZTogTUNGNTMyOSBoZWFkZXIgZmlsZSBjbGVhbiB1cAoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhYjc3YmM1NDdiYTU2MWMyNWVhMzQ0NTdlZDE3YWEwYjJmN2MyNzIzCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDE1IDE1OjM5OjE3IDIwMDcgLTA1MDAKCiAgICBDb2xkRmlyZTogTUNGNTMyOSBVcGRhdGUgYW5kIGNsZWFudXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTAzMjdkYzU1NDFmOTQ3YzBjZjdlMzFmZWY4NmM0NzA2MTY5NjA3YQpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEF1ZyAxNiAxNjozNTowMiAyMDA3IC0wNTAwCgogICAgQWRkIENPTkZJR19IQVNfRVRIMCB0byBhbGwgYm9hcmRzIHdpdGggVFNFQwoKICAgIFRoZSA4NXh4IGNvZGUgbm93IHJlbGllcyBvbiBDT05GSUdfSEFTX0VUSDAgdG8gZGV0ZXJtaW5lIHdoZXRoZXIKICAgIHRvIHVwZGF0ZSBUU0VDMSdzIGRldmljZS10cmVlIG5vZGUsIHNvIHdlIG5lZWQgdG8gYWRkIGl0CiAgICB0byBhbGwgdGhlIGJvYXJkcyB3aXRoIFRTRUNzLiAgRG8gdGhpcyBmb3IgODN4eCBhbmQgODZ4eCwgdG9vLAogICAgc2luY2UgdGhleSB3aWxsIGV2ZW50dWFsbHkgZG8gc29tZXRoaW5nIHNpbWlsYXIuCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGQ2NGVlOTA4YTFiNTI1ZTViYjJiNGNiZWI1YzQ0OWFkNmE0Njk2NjYKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgQXVnIDE2IDE1OjA1OjA0IDIwMDcgLTA1MDAKCiAgICBVcGRhdGUgTVBDODU0NCBEUyBQQ0kgbWVtb3J5IG1hcAoKICAgIFRoZSBQQ0llIGJ1cyB0aGF0IHRoZSBVTEkgTTE1NzUgaXMgY29ubmVjdGVkIHRvIGhhcyBubyBwb3NzaWJsZSB3YXkgb2YKICAgIG5lZWRpbmcgbW9yZSB0aGFuIHRoZSBmaXhlZCBhbW91bnQgb2YgSU8gJiBNZW1vcnkgc3BhY2UgbmVlZGVkIGJ5IHRoZSBVTEkuCgogICAgU28gbWFrZSBpdCB1c2UgZmFyIGxlc3MgSU8gJiBtZW1vcnkgc3BhY2UgYW5kIGhhdmUgaXQgdXNlIHRoZSBzaGFyZWQgTEFXLiAgVGhpcwogICAgZnJlZSdzIHVwIGEgTEFXIGZvciBQQ0llMSBJTyBzcGFjZS4gIEFsc28gcmVkdWNlIHRoZSBhbW91bnQgb2YgSU8gc3BhY2UgbmVlZGVkCiAgICBieSBlYWNoIGJ1cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGVhNTg3N2UzMWVkNjNhZGU5NDhmZDEyOTM4OTVlYzIzZmUwMTQ3MmUKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgQXVnIDE2IDExOjAxOjIxIDIwMDcgLTA1MDAKCiAgICBGaXggdXAgc29tZSBmZHQgaXNzdWVzIG9uIDg1NDREUwoKICAgIEl0IGxvb2tzIGxpa2Ugd2UgaGFkIGEgbWVyZ2UgaXNzdWUgdGhhdCBkdXBsaWNhdGVkIGEgYml0IG9mIGNvZGUKICAgIGluIGZ0X2JvYXJkX3NldHVwLglBbHNvLCB3ZSBuZWVkIHRvIHNldCBDT05GSUdfSEFTX0VUSDAgdG8gZ2V0CiAgICB0aGUgTUFDIGFkZHJlc3MgcHJvcGVybHkgc2V0IGluIHRoZSBkZXZpY2UgdHJlZSBvbiBib290IGZvciBUU0VDMQoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMDdiYzIwNTYwY2I5ZDNkMTg2Y2NhMjY4YzA1YzgyNzYyZThjNTVhZApBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+CkRhdGU6CVRodSBBdWcgMTYgMTU6MTY6MDMgMjAwNyArMDIwMAoKICAgIFBQQzR4eDpIQ1U0LzUgY2xlYW51cAoKICAgIE1pbm9yIGNsZWFudXBzIHRvIGNvbmZpcm0gdG8gdGhlIHUtYm9vdCBjb2Rpbmcgc3R5bGUuCiAgICBTb21lIGdlcm1hbiBleHByZXNzaW9ucyAtPiBlbmdsaXNoLgogICAgSENVNSBlbmZvcmNlcyBhIHVuaXF1ZSBJUCBhZHJlc3MgZm9yIGEgZ2l2ZW4gc2xvdCBpbiB0aGUgcmFjay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgoKY29tbWl0IDFlNmIwN2M2NDk2N2MxZWIyY2Q4NGZhYTRjMzJiZjJhNzY5YmM4ZWIKQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgpEYXRlOglUaHUgQXVnIDE2IDE1OjE2OjAyIDIwMDcgKzAyMDAKCiAgICBQUEM0eHg6SENVNC81IGNsZWFudXAgZWNjL3NkcmFtIGluaXQKCiAgICBNYWtlIGVjYyBpbml0aWFsaXNhdGlvbiByb2J1c3QsIGFzIEREUjItRUNDIGVycm9ycyBtYXkgYmUgZ2VuZXJhdGVkCiAgICB3aGlsZSB6ZXJvaW5nIHRoZSBSQU0uCgogICAgUmV0dXJuIDE2IGJ5dGVzIChhIGNhY2hlbGluZSkgbGVzcyB0aGFuIHRoZSBhdmFpbGFibGUgbWVtb3J5LCBhcyB0aGUKICAgIGJvYXJkIGFuZC9vciBQUEM0NDBFUHggbWlnaHQgaGF2ZSBwcm9ibGVtcyBhY2Nlc3NpbmcgdGhlIGxhc3QgYnl0ZXMuCgogICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KCmNvbW1pdCBkMzViNTA4YTU1NTA4NTM1YjZlODQ0NWI3MTg1ODVkMjdkZjczM2QzCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEF1ZyAxNSAyMjoyOTo1NiAyMDA3IC0wNTAwCgogICAgZmR0OiBzdXBwcmVzcyB1bnVzZWQgdmFyaWFibGUgJ2JkJyB3YXJuaW5nCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4MmJkOWVlNzc0OTA1ODhkNGRhNzg1ZDc1ODI5Y2E2M2QwMTc2YmFmCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDE1IDIwOjA2OjUwIDIwMDcgLTA1MDAKCiAgICBGaXggd2FybmluZ3MgZnJvbSBvZl9kYXRhIGNvcHkgZml4CgogICAgRm9yZ290IHRvIGNhc3Qgb2ZfZmxhdF90cmVlIHRvIHVsb25nLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3NjEzYWZkYTc3ZDVlZWMwZjQ3ZDMwMzAyNWIwYzY2MWI3MGU0YzczCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDE1IDIwOjAzOjQ0IDIwMDcgLTA1MDAKCiAgICBEb24ndCB3YWl0IGZvciBkaXNjb25uZWN0ZWQgVFNFQ3MKCiAgICBUaGUgVFNFQyBkcml2ZXIncyBQSFkgY29kZSB3YWl0cyBhIGxvbmcgdGltZSBmb3IgYXV0b25lZ290aWF0aW9uIHRvCiAgICBjb21wbGV0ZSwgZXZlbiBpZiB0aGUgbGluayBpcyBkb3duLiAgVGhlIFBIWSBrbm93cyB0aGUgbGluayBpcwogICAgZG93biBvciB1cCBiZWZvcmUgYXV0b25lZ290aWF0aW9uIGNvbXBsZXRlcywgc28gd2UgY2FuIHNob3J0LWNpcmN1aXQKICAgIHRoZSBwcm9jZXNzIGlmIHRoZSBsaW5rIGlzIGRvd24uCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGI5NmM4M2Q0YWU0NzVhNzBlZjI2MzVjZDBlNzQ4MTc0YzQ0Yzg2MDEKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMTUgMjA6MDM6MzQgMjAwNyAtMDUwMAoKICAgIEZpeCBudW1lcm91cyBidWdzIGluIHRoZSA4NTY4IFVFQyBzdXBwb3J0CgogICAgQWN0dWFsbHksIGZpeGVkIGEgbGFyZ2UgYnVnIGluIHRoZSBVRUMgZm9yICphbGwqIHBsYXRmb3Jtcy4KICAgIEhvdyBkaWQgdGhpcyBldmVyIHdvcms/CgogICAgdWVjX2luaXQoKSBkaWQgbm90IGZvbGxvdyB0aGUgc3BlYyBmb3IgZXRoX2luaXQoKSwgYW5kIHJldHVybmVkCiAgICAwIG9uIHN1Y2Nlc3MuICBTd2l0Y2ggaXQgdG8gcmV0dXJuIHRoZSBsaW5rIGxpa2UgdHNlY19pbml0KCkKICAgIChhbmQgMCBvbiBlcnJvcikKCiAgICBUaGUgaW1tYXAgZm9yIHRoZSA4NTY4IHdhcyBkZWZpbmVkIGJhc2VkIG9uIE1QQzg1NjgsIHJhdGhlciB0aGFuCiAgICBDT05GSUdfTVBDODU2OAoKICAgIENPTkZJR19RRSB3YXMgb2ZmCgogICAgQ09ORklHX0VUSFBSSU1FIHdhcyBzZXQgdG8gIkZyZWVzY2FsZSBHRVRIIi4gIE5vdyBpcyAiRlNMIFVFQzAiCgogICAgRml4ZWQgYSBjb21tZW50IGFib3V0IHRoZSByYW5nZXMgZm9yIENPTkZJR19FVEhQUklNRSBpZiBUU0VDX0VORVQgaXMKICAgIGVuYWJsZWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgM2E3OTAxM2UyYWRkYTUzMzMyZGZkMGI1MTEwNjZhODA1ZTkyOWE5ZApBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEF1ZyAxNSAyMDowMzoyNSAyMDA3IC0wNTAwCgogICAgRGVmaW5lIHRzZWMgZmxhZyB2YWx1ZXMgaW4gY29uZmlnIGZpbGVzCgogICAgVGhlIHRzZWNfaW5mbyBzdHJ1Y3R1cmUgYW5kIGFycmF5IGhhcyBhICJmbGFncyIgZmllbGQgZm9yIGVhY2gKICAgIGV0aGVybmV0IGNvbnRyb2xsZXIuICBUaGlzIGZpZWxkIGlzIHRoZSBvbmx5IHJlYXNvbiB0aGVyZSBhcmUKICAgIHNldHRpbmdzLiAgU3dpdGNoIHRvIGRlZmluaW5nIFRTRUNuX0ZMQUdTIGZvciBlYWNoIGNvbnRyb2xsZXIKICAgIGluIHRoZSBjb25maWcgaGVhZGVyLCBhbmQgd2UgY2FuIGdyZWF0bHkgc2ltcGxpZnkgdGhlIGFycmF5LCBhbmQKICAgIGFsc28gc2ltcGxpZnkgdGhlIGFkZGl0aW9uIG9mIGZ1dHVyZSBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGVjNzIzODIyOTUwN2U3ZjQ3NTMzYTYxMWVhOGM1MzMxOWQyMzRjZjMKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMTUgMjA6MDM6MTMgMjAwNyAtMDUwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBidWlsZGluZyBhbGwgYm9hcmRzIHdpdGggYSBUU0VDCgogICAgQ2hhbmdlcyB0byB0aGUgVFNFQyBkcml2ZXIgYWZmZWN0IGFsbW9zdCBhbGwgODN4eCwgODV4eCwgYW5kIDg2eHggYm9hcmRzLgogICAgTm93IHdlIGNhbiBkbyBhIE1BS0VBTEwgdGVzdCBvbiBhbGwgb2YgdGhlbSEKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTBhYWY3MTZjYjBkYzY2MTRkZjU0ZWY3OGJlZDUxNDRhZmQyM2VmOApBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEF1ZyAxNSAxNzozMDo1NiAyMDA3IC0wNTAwCgogICAgRml4IG9mX2RhdGEgY29weWluZyBmb3IgQ09ORklHX09GX0ZMQVRfVFJFRS11c2luZyBib2FyZHMKCiAgICBUaGUgZml4LCAiRml4IHdoZXJlIHRoZSAjaWZkZWYgQ0ZHX0JPT1RNQVBTWiBpcyBwbGFjZWQiCiAgICBuZWdsZWN0ZWQgdG8gKmFsc28qIHB1dCB0aGUgY29kZSBpbnNpZGUgdGhlIHNpbWlsYXIgI2lmZGVmCiAgICBmb3IgQ09ORklHX09GX0ZMQVRfVFJFRS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNzhmOWZlZjdmNDA2MDc4YzhiZjcxOTFlNjY1YTczZjc5NTE1Nzc0NgpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDE1IDE1OjQ2OjQ2IDIwMDcgLTA1MDAKCiAgICBtcGM4ODVhZHM6IERvbid0IGRlZmluZSBDT05GSUdfQlpJUDIuCgogICAgYnppcDIgcmVxdWlyZXMgYSBzaWduaWZpY2FudCBjaHVuayBvZiBtYWxsb2Mgc3BhY2UsIGFuZCB0aGVyZSBpc24ndAogICAgZW5vdWdoIHJvb20gb24gbXBjODg1YWRzICh3aXRoIG9ubHkgOE1CIFJBTSkgZm9yIGJvdGggYnppcDIncyBtYWxsb2MgYXJlYQogICAgYW5kIGEgZG93bmxvYWRlZCBpbWFnZSBhdCAweDQwMDAwMC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwMDIyNzVhM2VkOGIxMTQ4ODVmNjcwMmQ2ZDU0NGQwNzgwZGZlNjg5CkF1dGhvcjogTWljaGFsIFNpbWVrIDxNb25zdHJAc2V6bmFtLmN6PgpEYXRlOglUaHUgQXVnIDE2IDA4OjU0OjEwIDIwMDcgKzAyMDAKCiAgICBCaW9zIGVtdWxhdG9yIC0gZml4IG1pY3JvYmxhemUgdG9vbGNoYWluIHByb2JsZW0KCiAgICBtaWNyb2JsYXplIENQVSBoYXZlIHByb2JsZW0gd2l0aCBiaW9zX2VtdWxhdG9yIGNvZGUuCiAgICBNaWNyb2JsYXplIHRvb2xjaGFpbiBkb2Vzbid0IHN1cHBvcnQgUFJBR01BIFBBQ0suCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgoKY29tbWl0IGE1YTM4ZjRmZDdlNTM2NmQ3MDZmZjZhOTg1ZjliNjcxNWRkYmM5OGIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgQXVnIDE2IDExOjUxOjA0IDIwMDcgKzAyMDAKCiAgICBNaW5vciBDb2RpbmcgU3R5bGUgZml4OyBVcGRhdGUgQ0hBTkdFTE9HIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA4ZmI2ZTgwYzA2ODQ5ZTMwMTNhYzVjOTM1MGQ4ZWQ5ZTUyOTY3OTkxCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgQXVnIDE2IDExOjIxOjQ5IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFJlbW92ZSAjd2FybmluZyBpbiBlc2QgYXV0b191cGRhdGUuYwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyZDc4MDc0ZDJlODA2ZWRjMzgwYzE0NjRlYjllNWRmMzM1ZWNlNjVlCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVuIDIyIDE3OjMyOjI4IDIwMDcgKzAyMDAKCiAgICBwcGM3eHg6IFVwZGF0ZSBDUENJNzUwIGJvYXJkCgogICAgVGhpcyBzbWFsbCBDUENJNzUwIHVwZGF0ZSBleHRlbmRzIHRoZSBib2FyZCBzcGVjaWZpYyBjb21tYW5kCiAgICAic2hvd19jb25maWciIHRvIGRpc3BsYXkgdGhlIE1hcnZlbGwgc3RyYXBwaW5nIHJlZ2lzdGVycyBhbmQKICAgIGV4dGVuZHMgdGhlIFBDSSBJREUgY29udHJvbGxlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSZWluaGFyZCBBcmx0IDxyZWluaGFyZC5hcmx0QGVzZC1lbGVjdHJvbmljcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNzhjZmY1MGVkYmE2YjE1MDhlYjE1YzJmNTNjZTk2NmFjODkxZWI5ZQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJVGh1IEF1ZyAxNiAxMDo0NjoyOCAyMDA3ICswMjAwCgogICAgW0ZJWF0gQ2hhbmdlcyBmb3IgYmlvc19lbXVsYXRvciBjb2RlIGZvciBvdGhlcnMgYXJjaGl0ZWN0dXJlCgpjb21taXQgNmUwZTIyNTNmMDM5MzQ0ZjhlYmQyNzg3Mjg1ZmRiYTkwZTY3MTRlOApBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJVGh1IEF1ZyAxNiAxMDo0NTowOSAyMDA3ICswMjAwCgogICAgW0ZJWF0gUmVtb3ZlIHVudXNlZCBpbmNsdWRlIGZpbGUKCmNvbW1pdCA5ZGU0NjliZDk2MGNjMTg3MGJiNDBkNjY3MmVkNDI3MjZiOGI1MGQ3CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgQXVnIDE2IDEwOjE4OjMzIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IE9ubHkgZW5hYmxlIFBPU1QgRlBVIHRlc3Qgb24gU2VxdW9pYSBhbmQgbm90IFJhaW5pZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNmRhMGM1YmQ0YTUzZTQwZWI0ZjdlYjcyYTRjMDUxZWNhYmFkNzgzYwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEF1ZyAxNiAwOTo1NDo1MSAyMDA3ICswMjAwCgogICAgQWRkIG1pc3NpbmcgcmFpbmllciAoUFBDNDQwR1J4KSB0YXJnZXQgdG8gTUFLRUFMTCBhbmQgTUFJTlRBSU5FUnMgZmlsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDJiYTcwMjJmNjJiYjc1OTA4Mjk2YzU4YzYzODY2ZTFkMjk0YjY5YQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEF1ZyAxNiAwOTo1MjoyOSAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgU2VxdW9pYS9SYWluaWVyIGJvb3RzdHJhcCBjb21tYW5kCgogICAgQXMgc3VnZ2VzdGVkIGJ5IERhdmlkIE1pdGNoZWxsLCBoZXJlIGFuIHVwZGF0ZSBmb3IgdGhlIFNlcXVvaWEvUmFpbmllcgogICAgYm9vdHN0cmFwIGNvbW1hbmQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDM1Y2M0ZTQ4MjM2NjhlODc0NTg1NDg5OWNmYWVkZDQ0ODliZWIwZWYKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDE1IDIyOjMwOjM5IDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBlbmFibGUgbGliZmR0IGJ5IGRlZmF1bHQgb24gZnJlZXNjYWxlIGJvYXJkcwoKICAgIHRoaXMgZW5hYmxlcyBsaWJmZHQgY29kZSBieSBkZWZhdWx0IGZvciB0aGUKICAgIGZyZWVzY2FsZSBtcGM4MzEzZXJkYiwgbXBjODMyeGVtZHMsIG1wYzgzNDllbWRzLAogICAgbXBjODM0OWl0eCBhbmQgZ3AgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgM2ZkZTllOGIyMmNmYmQ3YWY0ODkyMTQ3NThmOTgzOWEyMDY1NzZjYgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMTUgMjI6MzA6MzMgMjAwNyAtMDUwMAoKICAgIG1wYzgzeHg6IG1pZ3JhdGUgcmVtYWluaW5nIGZyZWVzY2FsZSBib2FyZHMgdG8gbGliZmR0CgogICAgdGhpcyBhZGRzIGxpYmZkdCBzdXBwb3J0IGNvZGUgZm9yIHRoZSBmcmVlc2NhbGUKICAgIG1wYzgzMTNlcmRiLCBtcGM4MzJ4ZW1kcywgbXBjODM0OWVtZHMsIG1wYzgzNDlpdHgsCiAgICBhbmQgZ3AgYm9hcmRzLgoKICAgIEJvYXJkcyByZW1haW4gY29tcGF0aWJsZSB3aXRoIE9GX0ZMQVRfVFJFRS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDZhMTZlMGRmY2M0MTE5YjQ2YWRiMWRjZTJkNmM4ZmIzYzVkMTA4ZTEKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDE1IDIyOjMwOjI2IDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBtb3ZlIGNvbW1vbiAvbWVtb3J5IG5vZGUgdXBkYXRlIG1lY2hhbmlzbSB0byBjcHUuYwoKICAgIGFsc28gYWRkcyBjb21tb24gcHJvdG90eXBlcyB0byBpbmNsdWRlL2NvbW1vbi5oLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOGY5ZTBlOWYzMzlhZWU0Y2UzMWEzMzhkNWYyNzM1NmViNTQ1N2Y4NQpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMTUgMjI6MzA6MTkgMjAwNyAtMDUwMAoKICAgIG1wYzgzeHg6IHJlbWFpbmluZyA4MzYwIGxpYmZkdCBmaXhlcwoKICAgIFBDSSBjbG9ja3MgYW5kIFFFIGZyZXF1ZW5jaWVzIHdlcmVuJ3QgYmVpbmcgdXBkYXRlZCwgYW5kIHRoZSBjb3JlIGNsb2NrCiAgICB3YXMgYmVpbmcgdXBkYXRlZCBpbmNvcnJlY3RseS4gIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIGEgL21lbW9yeSBub2RlIGlmCiAgICBpdCBkb2Vzbid0IGFscmVhZHkgZXhpc3QgcHJpb3IgdG8gdXBkYXRlLgoKICAgIHBsdXMgc29tZSBjb3NtZXRpYyB0cmltbWluZyB0byBzaW5nbGUgbGluZSBjb21tZW50cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGY0YjJhYzVlZDlhYWZmOTkyMGQ0ODdiZmY4YTU5Njk2YzA4M2E1MjQKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDE1IDIyOjMwOjEyIDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBmaXggVUVDMi0+MSB0eXBvIGluIGxpYmZkdCBzZXR1cCBjb2RlCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxOWZhMWMzNTM2ODQ4NGQ0ZWQxMGRkY2U4YTc3OTNjMjE4NjJlM2EzCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEF1ZyAxNSAyMjozMDowNSAyMDA3IC0wNTAwCgogICAgbXBjODN4eDogYWRkIE1BSU5UQUlORVIgYW5kIE1BS0VBTEwgZW50cmllcyBmb3IgdGhlIG1wYzgzMjNlcmRiCgogICAgYW5kIHJlb3JkZXIgdGhlIGV4aXN0aW5nIDgzeHggbWFpbnRhaW5lcnMgYWxwaGEuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1YjRkZTkzMDlkN2EwM2FhMWRiMmU1MzkxYWI2OTYzNjMzOTFmNDYwCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglXZWQgQXVnIDE1IDIxOjE1OjA1IDIwMDcgKzAyMDAKCiAgICBbRklYXSBSZXNvbHZlIHByb2JsZW0gd2l0aCB3YXJuaW5ncwogICAgbWljcm9ibGF6ZSB0b29sY2hhaW4gZG9uJ3Qgc3VwcG9ydCBQUkFHTUEgUEFDSy4KCmNvbW1pdCBkMWVkMjhjZjM2YWI2YjFkNGM0Nzk4MDlkZTcyNTJiZjUzZDJmMmQ0CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglXZWQgQXVnIDE1IDIxOjA1OjA3IDIwMDcgKzAyMDAKCiAgICBbRklYXSBDb3JyZWN0aW9uIGNvbW1hbmQgc2V0dGluZyBmb3IgTWljcm9ibGF6ZSBib2FyZHMKCmNvbW1pdCA3YWE2M2Q4Y2QzMGFiMjBhYzJmZDFhYjg2ZTYwNDcxZGU4YjFmMWU1CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglXZWQgQXVnIDE1IDIxOjAzOjQxIDIwMDcgKzAyMDAKCiAgICBbRklYXSBDb3JyZWN0aW9uIGNvbW1hbmQgZGVmaW5pdGlvbgoKY29tbWl0IDMwYjUyZGY5ZTkwNmJmMGU0NjU5MTZjMmM2YmI1MTkyYjQzOGUwYjgKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDE1IDExOjU1OjM1IDIwMDcgLTA1MDAKCiAgICA4Nnh4OiBGaXggbGluZ2VyaW5nIENGR19DTURfKiByZWZlcmVuY2VzIGluIHNiYzg2NDFkLmgKCiAgICBSZW1vdmUgYSBsZWZ0b3ZlciBpbiBuZXQvdGZ0cC5jIHdoaWxlIHdlJ3JlIGF0IGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNGNlOTE3NzQyYjFlNDhmYWE5YmY5YTk3NTc1NDVlNTZmYjRjZmU0NApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMTUgMTI6MjA6NDAgMjAwNyAtMDUwMAoKICAgIE1vdmUgdGhlIE1QQzg2NDFIUENOIGJvYXJkIHVuZGVyIGJvYXJkL2ZyZWVzY2FsZS4KCiAgICBNaW5vciBwYXRoIGNvcnJlY3Rpb25zIG5lZWRlZCB0byBlbnN1cmUgYnVpbGRhYmlsaXR5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgODY2MjU3N2ZlMzZmZGI2YTQ0YjU1Yjk5OGQ5ZGFhYzYzOTJhNzM2YQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMTUgMTE6NDY6MjIgMjAwNyAtMDUwMAoKICAgIDg2eHg6IEZpeCBsaW5nZXJpbmcgQ0ZHX0NNRF8qIHJlZmVyZW5jZXMgaW4gc2JjODY0MWQuaAoKICAgIFJlbW92ZSBhIGxlZnRvdmVyIGluIG5ldC90ZnRwLmMgd2hpbGUgd2UncmUgYXQgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyMTBmNDYzYzcxOTE3YjdhNDQ5NWMyMTAzYzIyOGI5YzE3OWFlNjRkCkF1dGhvcjogSmVycnkgVmFuIEJhcmVuIDxndmIudWJvb3RAZ21haWwuY29tPgpEYXRlOglXZWQgQXVnIDE1IDExOjEzOjE1IDIwMDcgLTA0MDAKCiAgICBGaXggd2hlcmUgdGhlICNpZmRlZiBDRkdfQk9PVE1BUFNaIGlzIHBsYWNlZC4KCiAgICBDb21taXQgMDczZTFiNTA5OTgwY2VmZTZmNTNjMmQ3ZmJiY2QxMzVkZjFlMzkyNCAiRml4IGluaXRyZC9kdGIKICAgIGludGVyYWN0aW9uIiBwdXQgdGhlIG5ldyBjb2RlIG91dHNpZGUgb2YgdGhlICNpZiBkZWZpbmVkKENPTkZJR19PRl9MSUJGRFQpCiAgICB3aGVuIGl0IHNob3VsZCBoYXZlIGdvbmUgaW5zaWRlIG9mIHRoZSBjb25kaXRpb25hbC4gIEFzIGEgcmVzdWx0LCBpdAogICAgYnJva2Ugbm9uLUxJQkZEVCBib2FyZCBidWlsZHMuCgogICAgQWxzbyBhZGRlZCBhIG1pc3NpbmcgIm5vdC4iIHRvIHRoZSBjb21tZW50LgoKICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgMGUxOTIwOTc2NzE5NGE5N2NlYzZkOTNkYmE5ZTY0ZDFkYThkNTQ4ZQpBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+CkRhdGU6CVdlZCBBdWcgMTUgMTI6MTQ6MjMgMjAwNyArMDIwMAoKICAgIFBQQzR4eDpIQ1U0LzUtQm9hcmQgZml4IGNvbXBpbGUgd2FybmluZwoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgNTk0ZTc5ODM4Y2U1MDc4YTkwZDBjMjdhYmIyYjJkNjFkNWY4ZThhNwpBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBBdWcgMTQgMTQ6MDY6NDUgMjAwNyAtMDUwMAoKICAgIEZpeCBtYWxsb2Mgc2l6ZSBlcnJvciBpbiBhaGNpX2luaXRfb25lLgoKICAgIFR5cGljYWxseSB0aGlzIGNhdXNlcyBzY3NpIGluaXQgdG8gY29ycnVwdCB0aGUKICAgIGRldmxpc3QgYW5kIGJyZWFrIHRoZSBjb25pbmZvIGNvbW1hbmQuCiAgICBGaXggYSBjb21waWxlciBzaXplIHdhcm5pbmcuCgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxqYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGIzNjFhY2Q2NGZkMjUyNWMwODFiOWIyODhiMDgwNGVmZTIwOWMwZTkKQXV0aG9yOiBrc2lAa29pOC5uZXQgPGtzaUBrb2k4Lm5ldD4KRGF0ZToJVHVlIEF1ZyAxNCAxMDowMjoxNiAyMDA3IC0wNzAwCgogICAgVEkgRGFWaW5jaSAtIGZpeCB1bnN1cHBvcnRlZCAlaGh4IGZvcm1hdAoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdleSBLdWJ1c2h5biA8a3NpQGtvaTgubmV0PgoKY29tbWl0IGYwMWRiYjU0MjRhODE0NTNjODExOTBkZDMwZTk0NTg5MTQ2NmY2MjEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgQXVnIDE0IDE4OjQyOjM2IDIwMDcgKzAyMDAKCiAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cC4gVXBkYXRlIENIQU5HRUxPRy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDA3M2UxYjUwOTk4MGNlZmU2ZjUzYzJkN2ZiYmNkMTM1ZGYxZTM5MjQKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBBdWcgMTQgMTA6MzI6NTkgMjAwNyAtMDUwMAoKICAgIEZpeCBpbml0cmQvZHRiIGludGVyYWN0aW9uCgogICAgVGhlIG9yaWdpbmFsIGNvZGUgd291bGQgd3JvbmdseSByZWxvY2F0ZSB0aGUgYmxvYiB0byBiZSByaWdodCBiZWZvcmUKICAgIHRoZSBpbml0cmQgaWYgaXQgZXhpc3RlZC4gIFRoZSBibG9iICptdXN0KiBiZSB3aXRoaW4gQ0ZHX0JPT1RNQVBTWiwKICAgIGlmIGl0IGlzIGRlZmluZWQuICBTbyB3ZSBtYWtlIHR3byBjaGFuZ2VzOgoKICAgIDEpIGZsYWcgdGhlIGJsb2IgZm9yIHJlbG9jYXRpb24gd2hlbmV2ZXIgaXRzIGFkZHJlc3MgaXMgYWJvdmUgQk9PVE1BUFNaCgogICAgMikgSWYgdGhlIGJsb2IgaXMgYmVpbmcgcmVsb2NhdGVkLCByZWxvY2F0ZSBpdCBiZWZvcmUga2JkLCBub3QgaW5pdHJkCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGU1NGI5NzAxNzM3NjkzMDdhMTE2YmQzNDAyOGI2ZDBjMmVlYTJhNGUKQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgpEYXRlOglUdWUgQXVnIDE0IDE1OjQwOjAwIDIwMDcgKzAxMDAKCiAgICBTdXBwbHkgc3BpIGludGVyZmFjZSBpbiBhdDQ1LmMKCmNvbW1pdCA0Y2U4NDZlYzU5ZjM2Yjg1ZDY2NDRhNzY5NjkwYWQzZmViNjY3NTc1CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgQXVnIDE0IDE1OjEyOjAxIDIwMDcgKzAyMDAKCiAgICBQT1NUOiBGaXggbWVyZ2UgcHJvYmxlbQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0MjlkOTU3MWY2MDYzMWFlOGEyZmUxMmIxMWJlNGM3NWIwYzJiMzdjCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgQXVnIDE0IDE1OjAzOjE3IDIwMDcgKzAyMDAKCiAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3NzllOTc1MTE3YTc1ZTkxZmNlYmUyMjZhNjMxMDRkYmZiOTI0YWIxCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgQXVnIDE0IDE0OjQ0OjQxIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBpbml0aWFsIFpldXMgKFBQQzQwNUVQKSBib2FyZCBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGM1YTE3MmE1ZmQ2MzZjMTI0Njc0MjllM2Y3OTEwZTUzNzczOTc5YzYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBBdWcgMTQgMTQ6NDE6NTUgMjAwNyArMDIwMAoKICAgIFBPU1Q6IEFkZCBvcHRpb24gZm9yIGV4dGVybmFsIGV0aGVybmV0IGxvb3BiYWNrIHRlc3QKCiAgICBXaGVuIENGR19QT1NUX0VUSEVSX0VYVF9MT09QQkFDSyBpcyBkZWZpbmVkLCB0aGUgZXRoZXJuZXQgUE9TVAogICAgaXMgbm90IGRvbmUgdXNpbmcgYW4gaW50ZXJuYWwgbG9vcGJhY2sgY29ubmVjdGlvbiwgYnV0IGJ5IGFzc3VtaW5nCiAgICB0aGF0IGFuIGV4dGVybmFsIGxvb3BiYWNrIGNvbm5lY3RvciBpcyBwbHVnZ2VkIGludG8gdGhlIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlYjJiNDAxMGFlNDI2MjQ1MTcyOTg4ODA0ZWU4ZDkxOTNmYjQxMDM4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgQXVnIDE0IDE0OjM5OjQ0IDIwMDcgKzAyMDAKCiAgICBQT1NUOiBBZGQgcHBjNDA1IHN1cHBvcnQgdG8gY2FjaGUgYW5kIFVBUlQgUE9TVAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwYzQyZjM2ZjE1MDc0YmQ5ODA4YTdkYmQ3ZWY2MTFmYWQ5YmY1MzdjCkF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KRGF0ZToJVHVlIEF1ZyAxNCAxMDo0NjozMiAyMDA3ICswMTAwCgogICAgUmVwbGFjZSBsb3N0IGVuZCBvZiBhdDQ1LmMuCgpjb21taXQgNjVkN2FkYTY0NTU3ZTc2MDk0YjRmZDNiYWQzMGEwZjE4ZjVmYjJiMgpBdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+CkRhdGU6CVR1ZSBBdWcgMTQgMTA6MzA6MDYgMjAwNyArMDEwMAoKICAgIFVwZGF0ZSBNYWtlZmlsZXMgZm9yIG1lcmdlZCBhbmQgc3BsaXQgYXQ0NS5jLgoKY29tbWl0IDM0NTRjZWNlMmRiNTdjYjllYjcwODc5OTVmN2U3MzA2NmExNjNmNzEKQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgpEYXRlOglUdWUgQXVnIDE0IDEwOjIxOjA2IDIwMDcgKzAxMDAKCiAgICBEZWxldGUgdGhlIG1lcmdlZCBmaWxlcy4KCmNvbW1pdCBkY2JmZDJlNTY0OWY5N2FhMDRmYmJjNmVhMmIwMDhhYTQ0ODZlMjI1CkF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KRGF0ZToJVHVlIEF1ZyAxNCAxMDoxNDowNSAyMDA3ICswMTAwCgogICAgQWRkIHRoZSBmaWxlcy4KCmNvbW1pdCBkNGZjNjAxMmZkMGE1YzIxMWI4MjU2OTFmNDRiMDZmODAzMmMwNTUxCkF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KRGF0ZToJVHVlIEF1ZyAxNCAxMDoxMDo1MiAyMDA3ICswMTAwCgogICAgQWRkIE1BQ0hfVFlQRSByZWNvcmRzIGZvciBzZXZlcmFsIEFUOTEgYm9hcmRzLgogICAgTWVyZ2UgdG8gdHdvIGF0NDUuYyBmaWxlcyBpbnRvIGEgY29tbW9uIGZpbGUsIHNwbGl0IHRvIGF0NDUuYyBhbmQgc3BpLmMKICAgIEZpeCBzcGVsbGluZyBlcnJvciBpbiBETTkxNjEgUEhZIFN1cHBvcnQuCiAgICBJbml0aWFsaXplIGF0OTFybTkyMDAgYm9hcmQgKGFuZCBzZXQgTEVEKS4KICAgIEFkZCBQSU8gY29udHJvbCBmb3IgYXQ5MXJtOTIwMGRrIExFRHMgYW5kIE11eC4KICAgIENoYW5nZSBkYXRhZmxhc2ggcGFydGl0aW9uIGJvdW5kYXJpZXMgdG8gYmUgY29tcGF0aWJsZSB3aXRoIExpbnV4IDIuNi4KCiAgICBTaWduZWQtb2ZmLWJ5OglQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgogICAgU2lnbmVkLW9mZi1ieToJVWxmIFNhbXVlbHNzb24gPHVsZkBhdG1lbC5jb20+Cgpjb21taXQgNGVmMzVlNTNjNjkzNTU2YzU0YjBjMjJkNmY4NzNkZTg3YmFkZTI1MwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBBdWcgMTQgMDk6NTQ6NDYgMjAwNyArMDIwMAoKICAgIENvZGluZyBzdHlsZSBjbGVhbnVwLCB1cGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA4NWViNWNhZjZiOTA2ZjdlYzViNTQ4MTRlOGM3Yzc0ZjU1OTg2YmI3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIEF1ZyAxNCAwOTo0NzoyNyAyMDA3ICswMjAwCgogICAgQ29kaW5nIHN0eWxlIGNsZWFudXA7IHJlYnVpbGQgQ0hBTkdFTE9HCgpjb21taXQgN2YzZjJiZDJkYzA4ZTBiMDVlMTg1NjYyY2EyZTJkMjgzNzU3MTA0YQpBdXRob3I6IFJhbmR5IFZpbnNvbiA8cnZpbnNvbkBsaW51eGJveC4obm9uZSk+CkRhdGU6CVR1ZSBGZWIgMjcgMTk6NDI6MjIgMjAwNyAtMDcwMAoKICAgIDg1eHhDRFM6IEFkZCBtYWtlIHRhcmdldHMgZm9yIGxlZ2FjeSBzeXN0ZW1zLgoKICAgIFRoZSBQQ0kgSUQgc2VsZWN0IHZhbHVlcyBvbiB0aGUgQXJjYWRpYSBtYWluIGJvYXJkIGRpZmZlciBkZXBlbmRpbmcKICAgIG9uIHRoZSB2ZXJzaW9uIG9mIHRoZSBoYXJkd2FyZS4gVGhlIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gc3VwcG9ydHMKICAgIFJldiAzLjEuIFRoZSBsZWdhY3kgdGFyZ2V0IHN1cHBvcnRzIFJldiAyLnguCgogICAgU2lnbmVkLW9mZi1ieSBSYW5keSBWaW5zb24gPHJ2aW5zb25AbXZpc3RhLmNvbT4KCmNvbW1pdCBlNDEwOTRjN2UzODE3N2M3NTVmYmQ5YjE4MjAxODA2OTYxNGYwODBkCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDE0IDAxOjUwOjA5IDIwMDcgLTA1MDAKCiAgICA4NXh4Q0RTOiBFbmFibGUgdGhlIFZJQSBQQ0ktdG8tSVNBIGJyaWRnZS4KCiAgICBBdXRob3I6IFJhbmR5IFZpbnNvbiA8cnZpbnNvbkBsaW51eGJveC4obm9uZSk+CgogICAgRW5hYmxlIHRoZSBQQ0ktdG8tSVNBIGJyaWRnZSBpbiB0aGUgVklBIFNvdXRoYnJpZGdlIGxvY2F0ZWQgb24gdGhlCiAgICBBcmNhZGlhIG1haW4gYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogUmFuZHkgVmluc29uIDxydmluc29uQG12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBZb3JrIFN1biA8eW9ya3N1bkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGRhOWQ0NjEwZDc2ZTUyYzRkMjBhOGYzZDg0MzM0MzlhN2ZjZjViNzEKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBBdWcgMTQgMDA6MTQ6MjUgMjAwNyAtMDUwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBVRUMgdG8gODU2OAoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYzU5ZTQwOTFmZmUwMTQ4Mzk4YjllOWZmMTRhMDE5ZWEwMzhiNzQzMgpBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdW4gMTkgMTQ6MTg6MzQgMjAwNyAtMDQwMAoKICAgIEFkZCBQQ0kgc3VwcG9ydCBmb3IgTVBDODU2OE1EUyBib2FyZAoKICAgIFRoaXMgcGF0Y2ggaXMgYWdhaW5zdCB1LWJvb3QtbXBjODV4eC5naXQgb2Ygd3d3LmRlbnguY29tCgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEVib255IFpodSA8ZWJvbnkuemh1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDExMWQ2MzgyYzk5ZmRlYTA4YzIzMTJlZWVhZTg3ODY5NDVlMTg5YQpBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdW4gMTkgMTQ6MTg6MzIgMjAwNyAtMDQwMAoKICAgIEVtcGlyaWNhbGx5IHNldCBjcG8gYW5kIGNsa19hZGp1c3QgZm9yIG1wYzg1eHggRERSMiBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBpcyBhZ2FpbnN0IHUtYm9vdC1tcGM4NXh4LmdpdCBvZiB3d3cuZGVueC5jb20KCiAgICBTZXR0aW5nIGNwbyB0byAweDkgZm9yIGZyZXF1ZW5jaWVzIGhpZ2hlciB0aGFuIDMzM01IeiBpcyB2ZXJpZmllZCBvbgogICAgYm90aCBNUEM4NTQ4Q0RTIGJvYXJkIGFuZCBNUEM4NTY4TURTIGJvYXJkLCBlc3BlY2lhbGx5IGZvciBzdXBwb3J0aW5nCiAgICA1MzNNSHogRERSMi4KCiAgICBTZXR0aW5nIGNsa19hZGp1c3QgdG8gMHg2KDMvNCBsYXRlIGN5Y2xlKSBmb3IgTVBDODU2OE1EUyBib2FyZCBpcyBmb3IKICAgIEREUjIgb24gYWxsIGN1cnJlbnQgYm9hcmQgdmVyc2lvbnMgZXNwZWNpYWxseSB2ZXIgMS45MiBvciBsYXRlciB0byBicmluZwogICAgdXAuCgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzZGIwYmVmNTllYWIxMTU1ODAxNjE4Y2VmNWM0ODFlOTc1NTNiNTk3CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIEF1ZyA3IDE4OjA3OjI3IDIwMDcgLTA1MDAKCiAgICBVc2UgYW4gYWJzb2x1dGUgYWRkcmVzcyB3aGVuIGp1bXBpbmcgb3V0IG9mIDRrIGJvb3QgcGFnZQoKICAgIE9uIGU1MDAgd2hlbiB3ZSBsZWF2ZSB0aGUgNGsgYm9vdCBwYWdlIHdlIHNob3VsZCB1c2UgYW4gYWJzb2x1dGUgYWRkcmVzcyBzaW5jZQogICAgd2UgZG9uJ3Qga25vdyB3aGVyZSB0aGUgYm9hcmQgY29kZSBtYXkgd2FudCB1cyB0byBiZSByZWFsbHkgcnVubmluZyBhdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDM5OTgwYzYxMGM5YTRjMzgxOTA3YzllMWQxYjljMGUxYzBkY2E1N2EKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBBdWcgMTMgMTQ6NDk6NTkgMjAwNyAtMDUwMAoKICAgIE1QQzg1eHggQkEgYml0cyBub3Qgc2V0IGZvciAzLWJpdCBiYW5rIGFkZHJlc3MgRElNTQoKICAgIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHNldCB0aGUgbnVtYmVyIG9mIGJhbmsgYWRkcmVzcyBiaXRzCiAgICAoQkEpIGluIHRoZSBwcm9jZXNzb3IuIFRoZSBkZWZhdWx0IGFzc3VtZXMgMiBsb2dpY2FsIGJhbmsgYml0cy4gVGhpcwogICAgd29ya3MgZmluZSBmb3IgYSBESU1NIHRoYXQgdXNlcyBkZXZpY2VzIHdpdGggNCBpbnRlcm5hbCBiYW5rcyAoU1BECiAgICBieXRlMTcgPSAweDQpIGJ1dCBuZWVkcyB0byBiZSBzZXQgYXBwcm9wcmlhdGVseSBmb3IgYSBESU1NIHRoYXQgdXNlcwogICAgZGV2aWNlcyB3aXRoIDggaW50ZXJuYWwgYmFua3MgKFNQRCBieXRlMTcgPSAweDgpLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyZWcgRGF2aXMgPERhdmlzR0BlbWJlZGRlZHBsYW5ldC5jb20+Cgpjb21taXQgNmM1NDM1OTdiYjRiMWVjZjVkODU4OWY3YWJiMGYzOTkyOWZiN2ZkMQpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEF1ZyAxMyAxNDozODowNiAyMDA3IC0wNTAwCgogICAgRml4IG1pbm9yIDg1eHggd2FybmluZ3MKCiAgICBTb21lIHBhdGNoZXMgaGFkIGluc2VydGVkIHdhcm5pbmdzIGludG8gdGhlIGJ1aWxkOgogICAgKiBtcGM4NTYwYWRzIGRlY2xhcmVkIGRhdGEgd2l0aG91dCB1c2luZyBpdAogICAgKiBjcHVfaW5pdCBkZWNsYXJlZCBlY20gYW5kIGltbWFwIHdpdGhvdXQgdXNpbmcgaXQgaW4gYWxsIENPTkZJR3MKICAgICogTVBDODU0OENEUy5oIGhhZCBpdHMgZGVmYXVsdCBmaWxlbmFtZXMgY2hhbmdlZCBzbyB0aGF0IHRoZXkgY29udGFpbmVkCiAgICAgICJcbSIgaW4gdGhlIHBhdGhzLiAgTWFkZSB0aGUgZGVmYXVsdHMgbm90IFdpbmRvd3Mtc3BlY2lmaWMgKG9yCiAgICAgIGFueXRoaW5nLXNwZWNpZmljKQoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmMmNmZjZiMTA0ZjgyYjk5M2JlZjYwODZjZTBjOTcxNTliYmUxYWRkCkF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEp1bCAyNyAwMTo1MDo1MiAyMDA3IC0wNTAwCgogICAgODU0OGNkcyBQQ0lFIHN1cHBvcnQuCgogICAgTWFrZSB0aGUgZWFybHkgTDEgY2FjaGUgc3RhY2sgcmVnaW9uIGd1YXJkZWQgdG8gcHJldmVudCBzcGVjdWxhdGl2ZQogICAgZmV0Y2hlcyBvdXRzaWRlIHRoZSBsb2NrZWQgcmFuZ2UuCgogICAgVXNlIF9QSFlTIGRlZmluZXMsIG5vdCBfTUVNIGZvciBjcHUtc2lkZSBQQ0kgbWVtb3J5IG1hcHBlZCByZWdpb25zLgogICAgaW5pdC5TIHdoaXRlc3BhY2UgY2xlYW51cC4KCiAgICBBbGxvdyBURVhUX0JBU0UgdmFsdWUgdG8gYmUgc3BlY2lmaWVkIG9uIGNvbW1hbmQgbGluZS4gIFRoaXMgYWxsb3dzIGl0CiAgICB0byBiZSBzZXQgdG8gMHhmZmZjMDAwMCB3aGljaCBjdXRzIHRoZSB1Ym9vdCBiaW5hcnkgaW4gaGFsZi4KCiAgICBDbGVhciBhbmQgZW5hYmxlIGxiYyBhbmQgZWNtIGVycm9ycy4KCiAgICBVcGRhdGUgbGFzdF9idXNubyBpbiBkZXZpY2UtdHJlZSBmb3IgcGNpIGFuZCBwY2llLgoKICAgIFJlbW92ZSBsb2FkIG9mIG9ic29sZXRlIGNwdS9tcGM4NXh4L3BjaS4wCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgODM3ZjFiYTA1Y2ZiMjQ4YWJhNWFiOGUxZmIxYmZlZWZhMDdkNTk2MgpBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBKdWwgMjcgMDE6NTA6NTEgMjAwNyAtMDUwMAoKICAgIDg1NDRkcyBQQ0lFIHN1cHBvcnQKCiAgICBQQ0kxIExBVyBtYXBwaW5nIHNob3VsZCB1c2UgQ0ZHX1BDSTFfTUVNX1BIWSBhbmQgbm90IF9CQVNFIGFkZHJlc3MuCgogICAgRW5hYmxlIExCQyBhbmQgRUNNIGVycm9ycyBhbmQgY2xlYXIgZXJyb3IgcmVnaXN0ZXJzLgoKICAgIEFkZCB0ZnRwZmxhc2ggZW52IHZhciB0byBnZXQgdWJvb3QgZnJvbSB0ZnRwIHNlcnZlciBhbmQgZmxhc2ggaXQuCgogICAgQWRkIHBjaS9wY2llIGNvbnZlbmllbmNlIGVudiB2YXJzIHRvIGRpc3BsYXkgcmVnaXN0ZXIgc3BhY2U6CiAgICAgICJydW4gcGNpZTNyZWdzIiB0byBzZWUgYWxsIHBjaWUzIGNjc3IgcmVnaXN0ZXJzCiAgICAgICJydW4gcGNpZTNjZmciIHRvIHNlZSBhbGwgY2ZnIHJlZ2lzdGVycwogICAgV2hpdGVzcGFjZSBjbGVhbnVwIGFuZCBNUEM4NTQ0RFMuaAoKICAgIEVuYWJsZSBDT05GSUdfSU5URVJSVVBUUy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2MWEyMWU5ODBhN2I5MTg4NDI0ZDA0ZjFjMjY1ZmRjNWMyMWM3ZTg1CkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDE0IDAxOjM0OjIxIDIwMDcgLTA1MDAKCiAgICA4NXh4IHN0YXJ0LlMgY2xlYW51cCBhbmQgZXhjZXB0aW9uIHN1cHBvcnQKCiAgICBGcm9tOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgoKICAgIFN1cHBvcnQgZXh0ZXJuYWwgaW50ZXJydXB0cyBmcm9tIHBsYXRmb3JtIHRvIGVsaW1pbmF0ZSBzeXN0ZW0gaGFuZ3MuCiAgICBEZWZpbmUgQ09ORklHX0lOVEVSUlVQVFMgYm9hcmQgY29uZmlndXJlIG9wdGlvbiB0byBlbmFibGUuCiAgICBFbmFibGUgZWNtLCBkZHIsIGxiYywgYW5kIHBjaS9wY2llIGVycm9yIGludGVycnVwdHMgaW4gUElDLgoKICAgIFJlbW92ZSBleHRyYSBjcHUgaW5pdGlhbGl6YXRpb24gcmVkdW5kYW50IHdpdGggaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24uCiAgICBXaGl0ZXNwYWNlIGNsZWFudXAuCgogICAgRGVmaW5lIGFuZCB1c2UgX1NUQVJUX09GRlNFVCBjb25zaXN0ZW50IHdpdGggb3RoZXIgcHJvY2Vzc29ycyB1c2luZwogICAgcHBjX2FzbS50bXBsCgogICAgTW92ZSBhZGRpdGlvbmFsIGNvZGUgZnJvbSAudGV4dCB0byBib290IHBhZ2UgdG8gbWFrZSByb29tIGZvcgogICAgZXhjZXB0aW9uIHZlY3RvcnMgYXQgc3RhcnQgb2YgaW1hZ2UuCgogICAgSGFuZGxlIE1hY2hpbmUgQ2hlY2ssIEV4dGVybmFsIGFuZCBDcml0aWNhbCBleGNlcHRpb25zLgoKICAgIEZpeCBlNTAwIG1hY2hpbmUgY2hlY2sgZXJyb3IgZGV0ZXJtaW5hdGlvbiBpbiB0cmFwcy5jCgogICAgVEVYVF9CQVNFIGNhbiBub3cgYmUgMHhmZmZjXzAwMDAgLSB3aGljaCBjdXRzIGJpbmFyeSBpbWFnZSBpbiBoYWxmLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDdiZDMwZmM0YTY0NzViNDFkNjY3OWFlM2FhZmM5ZmE1MDUyNjBjNDcKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBBdWcgMTQgMDE6MzM6MTggMjAwNyAtMDUwMAoKICAgIEFkZCBNUEM4NTQ0RFMgUkVBRE1FCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQwYzdmOWIwZGU0ZTMwMDM3MGFkZmM3MDQxMjhmYTBmNzlhMTQzYjYKQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSnVsIDI3IDAxOjUwOjQ4IDIwMDcgLTA1MDAKCiAgICA4NXh4IGFsbG93IGRlYnVnZ2VyIHRvIGNvbmZpZ3VyZSBkZHIuCgogICAgT25seSBjaGVjayBmb3IgbXBjODU0OCByZXYgMSB3aGVuIGNvbXBpbGVkIGZvciA4NTQ4LgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDI5MzcyZmYzOGM1YmFhYjdkMGUzYThjMTRmZTExZmExOTRhMzg3MDQKQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSnVsIDI3IDAxOjUwOjQ3IDIwMDcgLTA1MDAKCiAgICBtcGM4NXh4IEwyIGNhY2hlIHJlcG9ydGluZyBhbmQgU1JBTSByZWxvY2F0aW9uIG9wdGlvbi4KCiAgICBBbGxvdyBkZWJ1Z2dlciB0byBvdmVycmlkZSBmbGFzaCBjczAvY3MxIHNldHRpbmdzIHRvIGVuYWJsZSBhbHRlcm5hdGUKICAgIGJvb3QgcmVnaW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQxZjBmOGZiMWFiOTJmMGNiYTdkMzI5ZGU5MDA3MGY4MjJmODI5OWYKQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSnVsIDI3IDAxOjUwOjQ2IDIwMDcgLTA1MDAKCiAgICBlNTAwIG5lZWRzIHBwY19hc20udG1wIE1DS19FWENFUFRJT04KCiAgICBBbHdheXMgZGVmaW5lIE1DS19FWENFUFRJT04gbWFjcm8gLSBzbyBlNTAwIGNhbiB1c2UgaXQgdG9vLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDUzYTVjNDI0YmY4NjU1YjdiNGUyYzMwNWE0NDE5NjMyNTlhMjZhODEKQXV0aG9yOiBEYXZpZCBVcGRlZ3JhZmYgPGRhdmVAY3JheS5jb20+CkRhdGU6CU1vbiBKdW4gMTEgMTA6NDE6MDcgMjAwNyAtMDUwMAoKICAgIG11bHRpY2FzdCB0ZnRwOiBSRkMyMDkwCgogICAgSW1wbGVtZW50ZWQgSUVURiBSRkMyMDkwLCBNdWx0aWNhc3QgVEZUUC4gIEluaXRpYWwgaW1wbGVtZW50YXRpb24KICAgIG9uIFJlYWx0ZWsgUlRMODEzOSBhbmQgRnJlZXNjYWxlIFRTRUMuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgVXBkZWdyYWZmIDxkYXZlQGNyYXkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YndhcnJlbkBxc3RyZWFtcy5jb20+Cgpjb21taXQgNWQxMTBmMGFhNjlmMDY1ZWUzODZlYzE4NDBkZmVlMWU4Y2M0NmJjMQpBdXRob3I6IFdpbHNvbiBDYWxsYW4gPHdjYWxsYW5Ac2F2YW50YXYuY29tPgpEYXRlOglTYXQgSnVsIDI4IDEwOjU2OjEzIDIwMDcgLTA0MDAKCiAgICBOZXcgQ09ORklHX0JPT1RQX1NFUlZFUklQIG9wdGlvbgoKICAgIEFkZGVkIENPTkZJR19CT09UUF9TRVJWRVJJUCB0byBhbGxvdyB0aGUgdGZ0cCBzZXJ2ZXIgdG8gYmUgZGlmZmVyZW50CiAgICBmcm9tIHRoZSBib290cCBzZXJ2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBXaWxzb24gQ2FsbGFuIDx3Y2FsbGFuQHNhdmFudGF2LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJ3YXJyZW5AcXN0cmVhbXMuY29tPgoKY29tbWl0IDUwY2NhOGI5NzZlYzc0MDY5ODYwMjA4YzM2ZTY0Y2U4ZjRkNWU0YzEKQXV0aG9yOiBNaWtlIFJhcG9wb3J0IDxtaWtlQGNvbXB1bGFiLmNvLmlsPgpEYXRlOglTdW4gQXVnIDEyIDA4OjQ4OjI3IDIwMDcgKzAzMDAKCiAgICBBZGQgYWJpbGl0eSB0byB0YWtlIE1BQyBhZGRyZXNzIGZyb20gdGhlIGVudmlyb25tZW50IHRvIERNOTAwMCBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIFJhcG9wb3J0IDxtaWtlQGNvbXB1bGFiLmNvLmlsPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YndhcnJlbkBxc3RyZWFtcy5jb20+Cgpjb21taXQgYmU1ZDcyZDEwZDQ3NjA5MzI2MjI2MjI1MTgxZTMwMWZiOWEzM2I1OApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBBdWcgMTMgMjE6NTc6NTMgMjAwNyArMDIwMAoKICAgIE1pbm9yIGNvZGluZyBzdHlsZSBjbGVhbnVwLiBVcGRhdGUgQ0hBTkdFTE9HLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgY2NhMzQ5NjdjYmQxM2ZmNmJkMzUyYmUyOWUzZjFjYzg4YWIyNGMwNQpBdXRob3I6IEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+CkRhdGU6CVNhdCBBdWcgMTEgMDY6NTQ6NTggMjAwNyAtMDUwMAoKICAgIE1vZGlmeSBTQkM4NjQxRCB0byB1c2UgbmV3IEZyZWVzY2FsZSBQQ0kgcm91dGluZXMKCiAgICBQQ0ktRXhwcmVzcyBzb2NrZXRzIDEgYW5kIDIgdmVyaWZpZWQgd29ya2luZyB3aXRoIEludGVsIFByby8xMDAwIFBUCiAgICBhZGFwdGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+CiAgICBTaWduZGUtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGEwODQ1ODMwM2U3ZjlkYjY3ZjI5Njk4MDAzNmQzMjkyYzM1Y2I0NWMKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJRnJpIEp1biAyOSAxODozODo1MSAyMDA3ICswMjAwCgogICAgYXRtZWxfbWNpOiBGaXggZGF0YSB0aW1lb3V0IHZhbHVlCgogICAgQ2FsY3VsYXRlIHRoZSBkYXRhIHRpbWVvdXQgYmFzZWQgb24gdmFsdWVzIGZyb20gdGhlIENTRCBpbnN0ZWFkIG9mCiAgICBqdXN0IHVzaW5nIGEgaGFyZGNvZGVkIERUT1IgdmFsdWUuIFRoaXMgaXMgYSBiYWNrcG9ydCBvZiBhIHNpbWlsYXIgZml4CiAgICBpbiBCU1AgMi4wLCB3aXRoIG9uZSBhZGRpdGlvbmFsIGZpeDogdGhlIERUT0NZQyB2YWx1ZSBpcyByb3VuZGVkIHVwCiAgICBpbnN0ZWFkIG9mIGRvd24uCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgMGJhOGVlZDI4YjU3NTYyNmIxN2UwYTc4ODJmOTIzYjgzZTBkNzU4NApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglNb24gQXVnIDEzIDE3OjIyOjMxIDIwMDcgKzAyMDAKCiAgICBBVlIzMjogSW5jbHVkZSA8ZGl2NjQuaD4gaW5zdGVhZCBvZiA8YXNtL2RpdjY0Lmg+CgogICAgaW5jbHVkZS9hc20tYXZyMzIvZGl2NjQuaCB3YXMgcmVjZW50bHkgbW92ZWQgdG8gaW5jbHVkZS9kaXY2NC5oLCBidXQKICAgIGNwdS9hdDMyYXAvaW50ZXJydXB0cy5jIHdhc24ndCBwcm9wZXJseSB1cGRhdGVkIChhbiBlYXJsaWVyIHZlcnNpb24gb2YKICAgIHRoZSBwYXRjaCB3YXMgbWVyZ2VkIHBlcmhhcHM/KQoKICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyBjcHUvYXQzMmFwL2ludGVycnVwdHMuYyBzbyB0aGF0IHRoZSBhdnIzMiBwb3J0CiAgICBjb21waWxlcyBhZ2Fpbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBmMGQxMjQ2ZWQ3Y2I1YTg4NTIyMjQ0YzU5NmQ3YWU3ZTZmMTYxMjgzCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVdlZCBKdW4gMjcgMTM6MzQ6MjYgMjAwNyArMDIwMAoKICAgIGF0bWVsX21jaTogVXNlIDUxMiBieXRlIGJsb2Nrc2l6ZSBpZiBwb3NzaWJsZQoKICAgIEluc3RlYWQgb2YgYWx3YXlzIHVzaW5nIHRoZSBsYXJnZXN0IGJsb2Nrc2l6ZSB0aGUgY2FyZCBzdXBwb3J0cywgY2hlY2sKICAgIGlmIGl0IGNhbiBzdXBwb3J0IHNtYWxsZXIgYmxvY2sgc2l6ZXMgYW5kIHVzZSA1MTIgYnl0ZXMgaWYgcG9zc2libGUuCiAgICBNb3N0IGNhcmRzIGRvIHN1cHBvcnQgdGhpcywgYW5kIG90aGVyIHBhcnRzIG9mIHUtYm9vdCBzZWVtIHRvIGhhdmUKICAgIHRyb3VibGUgd2l0aCBibG9jayBzaXplcyBkaWZmZXJlbnQgZnJvbSA1MTIgYnl0ZXMuCgogICAgQWxzbyBlbmFibGUgdW5kZXJydW4vb3ZlcnJ1biBwcm90ZWN0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgogICAgQWNrZWQtYnk6IEhhbnMtQ2hyaXN0aWFuIEVndHZlZHQgPGhjZWd0dmVkdEBhdG1lbC5jb20+Cgpjb21taXQgMjczZGI3ZTFiZGQxOTM3ZTMyZjFkNDUwNzMyMWJiNzIxZWJkMzExOApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIEF1ZyAxMyAwOTowNTozMyAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBGaXggcHJvYmxlbSBpbiBQTEwgY2xvY2sgY2FsY3VsYXRpb24KCiAgICBUaGlzIHBhdGNoIHdhcyBvcmlnaW5hbGwgcHJvdmlkZWQgYnkgRGF2aWQgTWl0Y2hlbGwgPGRtaXRjaGVsbEBhbWNjLmNvbT4KICAgIGFuZCBmaXhlcyBhIGJ1ZyBpbiB0aGUgUExMIGNsb2NrIGNhbGN1bGF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5OTg2YmMzZTQwZTg5OWJlYTM3MmE5OWEyYmNhNDA3MWJkZjJlMjRiCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEF1ZyAxMiAyMTozNDo1MCAyMDA3ICswMjAwCgogICAgVXBkYXRlIENIQU5HRUxPRwoKY29tbWl0IDc3ZDE5YThiZjNiMGIxZTQwMWNiOWYyM2M4MWUyZWY0MTk3MDVjMWEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gQXVnIDEyIDIxOjM0OjM0IDIwMDcgKzAyMDAKCiAgICBNaW5vciBhbGlnbm1lbnQgb2Ygb3V0cHV0LCAybmQgdHJ5LgogICAgQWxzbyB1cGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA2YjMwOWYyMmE3MjRmYWQ4NDE4ZTgxMTc1MWEwNzQxYjg5MzQxOWNmCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEF1ZyAxMiAyMDozNTo0OSAyMDA3ICswMjAwCgogICAgTWlub3IgYWxpZ25tZW50IG9mIG91dHB1dAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNmY2ZDdiOWM4NTU5ZTI0MWU4ZDIzMjYyMTU0MmI4YjU5Njk5YjA3YgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBBdWcgMTIgMTg6Mjg6MTggMjAwNyArMDIwMAoKICAgIENsZWFudXAgb3V0cHV0IG9uIEFEUzUxMjEgYm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rCgpjb21taXQgYTRkMjYzNmYyYTg1OTI0NWVkM2E0MDFmMjYxODlkYTJkZmRhNGNlYgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBBdWcgMTIgMTU6MTE6MzggMjAwNyArMDIwMAoKICAgIEFkYXB0IGJvYXJkIGNvbmZpZ3VyYXRpb24gYW5kIGZpeCBrZXJuZWwgY3Jhc2ggb24gTUNDMjAwIGJvYXJkLgoKICAgIFRoZSB1cGRhdGUgcHJvY2VkdXJlIHdhcyBtb2RpZmllZCB0byB0dXJuIG9mZiB0aGUgVVNCIHN1YnN5c3RlbQogICAgYmVmb3JlIGV4aXQgZm9yIE1DQzIwMCBhbmQgVFJBQi4gVGhpcyBpcyBuZWNlc3NhcnkgYXMgb3RoZXJ3aXNlIHRoZQogICAgVVNCIGNvbnRyb2xsZXIgY29udGludWVzIHRvIHdyaXRlIHBlcmlvZGljYWxseSB0byBzeXN0ZW0gbWVtb3J5IQoKICAgIE1DQzIwMC1zcGVjaWZpYyBub3RlczoKICAgIC0gdGhlIHBhdGNoIGRpc2FibGVzIHRoZSBtYWdpYyBrZXkgY2hlY2sgZm9yIE1DQzIwMAogICAgLSB0aGUgcGF0Y2ggY29udGFpbnMgdGhlIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyBtYWRlCiAgICAgIGZvciB0aGUgbmV3IHJldmlzaW9uIG9mIHRoZSBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBlMjdmM2E2ZWZiOWRiNWE1MzMyMjNiMDVjNjI5ZmY0YWM4ZDkyMWJmCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEF1ZyAxMiAxNDo0Nzo1NCAyMDA3ICswMjAwCgogICAgQWRqdXN0IGRlZmF1bHQgY29uZmlndXJhdGlvbiBvZiBBRFM1MTIxIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYWZhYWM4NmZlMjk0OGFjODRjZDlhMTJiYmVkODgzYjNjNjgzZTdkOQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBBdWcgMTIgMTQ6Mjc6MzkgMjAwNyArMDIwMAoKICAgIENsZWFuIHVwIHNvbWUgcmVtYWluaW5nIENGR19DTURfIC0+IENPTkZJR19DTURfIGlzc3Vlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDVmZTZiZTYyMDhkZGE4NTJjMzU2NGUzODRiZDc4ZDc1Nzg0ZGVhM2UKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglUdWUgQXVnIDcgMjE6MTQ6MjIgMjAwNyAtMDQwMAoKICAgIEltcHJvdmUgZXJyb3IgcHJpbnQgbWVzc2FnZXMuCgogICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCA5OWRmZmNhM2I3NTkwYTE2YTAwYmM0NzVjODYwYjY3YjJhM2YxNDYyCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEp1bCAxNyAxMzo1NzowNCAyMDA3IC0wNTAwCgogICAgZmR0OiBhbGxvdyBmb3IgYnVpbGRzIHRoYXQgZG9uJ3Qgd2FudCBlbnYgYW5kIGJkX3Qgbm9kZXMKCiAgICBwcm90ZWN0IGZkdF9lbnYgYW5kIGZkdF9iZF90IGludm9jYXRpb25zLCBmaXggY29kaW5nc3R5bGUgd2hpbGUgaW4gdGhlCiAgICBhcmVhLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTExNDhiZjdhZWJhMTQyZDZmMzQ4ODA1ZGI3NjI1ZGI3ZGE2NGQ2ZgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdWwgMTcgMTM6NTY6NTMgMjAwNyAtMDUwMAoKICAgIGZkdDogZG8gYm9hcmQgc2V0dXAgYmFzZWQgb24gZmR0IGFkZHJlc3Mgc3BlY2lmaWVkIG9uIGJvb3RtIGxpbmUKCiAgICBUaGUgbGFzdCBmZHQgcGF0Y2ggdG8gYm9vdG0gZGlkIGJvYXJkIHNldHVwIGJhc2VkIG9uIHRoZSBhZGRyZXNzCiAgICBzcGVjaWZpZWQgYnkgYSBwcmlvciBmZHQgYWRkcmVzcyBjb21tYW5kIGludm9jYXRpb24uICBUaGUgYm9vdG0KICAgIGNvZGUsIGFzIGl0cyBjYWxsIHRvIGZkdF9jaG9zZW4gZG9lcywgc2hvdWxkIHVzZSB0aGUgZmR0IHNwZWNpZmllZAogICAgYnkgdGhlIHVzZXIgb24gdGhlIGJvb3RtIGNvbW1hbmQuICBOb3RlIHRoaXMgcmVzdG9yZXMgZnVsbAogICAgZnVuY3Rpb25hbGl0eSBmb3IgdGhlIDgzNjAncyBleGlzdGluZyBkZWZhdWx0IGJvb3QgZW52aXJvbm1lbnQKICAgIHZhbHVlcywgZS5nLiAncnVuIG5mc2Jvb3QnIChpLmUuIG5vIGhhdmluZyB0byAnZmR0IGFkZHIgJGZkdGFkZHInCiAgICBiZWZvcmUgYm9vdGluZyBhIGtlcm5lbCkuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlMTI1YTJmZmMyMDlkZDM0Nzk0ZTMyNmM3MTc1NjU4MjUzYmVhZGYzCkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJVHVlIEp1bCAxMCAyMDo0MDozOSAyMDA3IC0wNDAwCgogICAgQ2FsbCBmdF9ib2FyZF9zZXR1cCgpIGZyb20gdGhlIGJvb3RtIGNvbW1hbmQuCgogICAgSW4gdGhlIHBhdGNoIHRpdGxlZCAiQ3JlYXRlIG5ldyBmZHQgYm9hcmRzZXR1cCBjb21tYW5kLi4uIiBJIHJlbW92ZWQgdGhlCiAgICBjYWxsIHRvIGZ0X2JvYXJkX3NldHVwKCkgZnJvbSB0aGUgcm91dGluZSBmZHRfY2hvc2VuKCksIGJ1dCBJIGZvcmdvdAogICAgdG8gYWRkIGEgZGlyZWN0IGNhbGwgYmFjayBpbnRvIGNtZF9ib290bS5jCgogICAgVGhpcyBmaXhlcyB0aGUgb3ZlcnNpZ2h0IGJ5IGFkZGluZyB0aGUgZGlyZWN0IGNhbGwgdG8gdGhlIGJvb3RtIGNvbW1hbmQuCgogICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCBmZDYxZTU1ZGQ4Y2I1MmNlM2ZmOTFiMzkxN2FmMjZlMjRiNmIwODQ1CkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJTW9uIEp1biAyNSAyMzoyNToyOCAyMDA3IC0wNDAwCgogICAgQ3JlYXRlIG5ldyBmZHQgYm9hcmRzZXR1cCBjb21tYW5kLCBmaXggYnVnIHBhcnNpbmcgW10gZm9ybSBvZiBzZXQgdmFsdWVzLgoKICAgIFByZXZpb3VzbHkgZnRfYm9hcmRfc2V0dXAoKSB3YXMgY2FsbGVkIGJ5IGZkdF9jaG9zZW4oKSB3aGljaCB3YXMgbm90CiAgICByZWFsbHkgY29ycmVjdGx5IHN0cnVjdHVyZWQuICBUaGlzIHNwbGl0cyBmdF9ib2FyZF9zZXR1cCgpIG91dCBieSBjcmVhdGluZwogICAgYSBuZXcgZmR0IGJvYXJkc2V0dXAgY29tbWFuZC4KCiAgICBGaXggYSBidWcgd2hlbiBwYXJzaW5nIGZkdCBzZXQgY29tbWFuZCB2YWx1ZXMgd2hpY2ggaGF2ZSB0aGUgc3F1YXJlCiAgICBicmFja2V0IGZvcm0gWzAwIDExIDIyIDMzXSAtIHRoZSBsZW5ndGggd2FzIHVwZGF0ZWQgaW5jb3JyZWN0bHkgaW4gd2hlbgogICAgcGFyc2luZyB0aGF0IGZvcm0uCgogICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCA2ZjM1ZGVkOWU4NTQ5MzU5NWUwZWI2NmE4MmI1MDJhOTUzMjZkMDQ5CkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJTW9uIEp1biAyNSAyMDo1NTo1OCAyMDA3IC0wNDAwCgogICAgVGlnaHRlbiB1cCB0aGUgZXJyb3IgbWVzc2FnZXMuCgogICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCBjNDU4NzRiMDVhYWU4OTdhNmMyOWQxYTk3ZDRiYjcwOGZjYTI3NTZjCkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJTW9uIEp1biAyNSAxOTo1MjoyMyAyMDA3IC0wNDAwCgogICAgQXN0aGV0aWMgaW1wcm92ZW1lbnRzOiBlcnJvciBtZXNzYWdlcyBhbmQgbGluZSBsZW5ndGhzLgoKICAgIFRpZ2h0ZW4gdXAgdGhlIGVycm9yIG1lc3NhZ2VzLCBzcGxpdCBvdmVybGVuZ3RoIGxpbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgMzVlYzM5OGYxNmUxN2RmNjAwZWRjMWIzOGMxZTllNjJjMTVjOWFhMQpBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CUZyaSBNYXkgMjUgMjI6MDg6NTcgMjAwNyAtMDQwMAoKICAgIEZpeCBmZHRfY2hvc2VuKCkgdG8gY2FsbCBmdF9ib2FyZF9zZXR1cCgpLCBjbGVhbiB1cCBsb25nIGxpbmVzLgoKICAgIFRoZSBmZHRfY2hvc2VuKCkgZnVuY3Rpb24gd2FzIGFkZGluZy9zZXRpbmcgc29tZSBwcm9wZXJ0aWVzIGFkLWhvYwogICAgICBpbXByb3Blcmx5IGFuZCBkdXBsaWNhdGVkIChwb29ybHkpIHdoYXQgd2FzIGRvbmUgaW4gZnRfYm9hcmRfc2V0dXAoKQoKICAgIENsZWFuIHVwIGxvbmcgbGluZXMgKHNldHRpbmcgcHJvcGVydGllcywgcHJpbnRpbmcgZXJyb3JzKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IDA2ZTE5YTA3NzAxYzk2OGYxNWQ3MmMwODNiNTg3MmExYTExYzdiMDEKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglNb24gTWF5IDIxIDIzOjI3OjE2IDIwMDcgLTA0MDAKCiAgICBGb3IgZmR0X2ZpbmRfbm9kZV9ieV9wYXRoKCksIGhhbmRsZSB0aGUgcm9vdCBwYXRoIHByb3Blcmx5LgoKICAgIEFsc28gcmVtb3ZlcyB0aGUgc3BlY2lhbCBjYXNlIHJvb3QgcGF0aCBkZXRlY3Rpb24gaW4gY21kX2ZkdC5jIHNpbmNlIGl0CiAgICBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgOTY3NWVlNzIwOGFiOTY1ZDEzZWE4ZDgyNjJkNzdhYzQxNjBlZjU0OQpBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CVRodSBNYXkgMTcgMjM6NTQ6MzYgMjAwNyAtMDQwMAoKICAgIEFkZCBmZHRfZmluZF9ub2RlX2J5X3R5cGUoKSBhbmQgZmR0X2ZpbmRfY29tcGF0aWJsZV9ub2RlKCkgdG8gTElCRkRUCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+CiAgICBBY2tlZC1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCAxYTg2MTE2OWJjMzc1OGY5ZGUzYWVhZDYyYjA1ODczNmM2ODkxMjQ2CkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJV2VkIEp1biA2IDIyOjQ3OjU4IDIwMDcgLTA0MDAKCiAgICBSZXBsYWNlIGZkdF9ub2RlX29mZnNldCgpIHdpdGggZmR0X2ZpbmRfbm9kZV9ieV9wYXRoKCkuCgogICAgVGhlIG5ldyBuYW1lIG1hdGNoZXMgbW9yZSBjbG9zZWx5IHRoZSBrZXJuZWwncyBuYW1lLCB3aGljaCBpcyBhbHNvCiAgICBhIG11Y2ggYmV0dGVyIGRlc2NyaXB0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgogICAgQWNrZWQtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgYWRkZDhjZTgzMDc4YzI1ZjBlY2E1ZjIzYWRiZGZjNjRjYTUwYTI0MwpBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CVdlZCBNYXkgMTYgMjI6Mzk6NTkgMjAwNyAtMDQwMAoKICAgIEZpeCBjbWRfZmR0IGxpbmUgbGVuZ3RocywgcmVmYWN0b3IgY29kZS4KCiAgICBCcmVhayBsaW5lcyB0aGF0IHdlcmUgZ3JlYXRlciB0aGFuIDgwIGNoYXJhY3RlcnMgaW4gbGVuZ3RoLgogICAgTW92ZSB0aGUgZmR0IHByaW50IGFuZCBwcm9wZXJ0eSBwYXJzaW5nIGNvZGUgdG8gc2VwYXJhdGUgc3RhdGljIGZ1bmN0aW9ucwogICAgICB0byByZWR1Y2UgY29kaW5nIGNsdXR0ZXIgaW4gdGhlIGZkdF9jbWQgaGFuZGxpbmcgYm9keS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IDI1MTE0MDMzYWIyMTc4ODgxMGM0OGJhNGRmMTAzYjY0OWRhMTIyM2IKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglTYXQgTWF5IDEyIDA5OjQ3OjI1IDIwMDcgLTA0MDAKCiAgICBGRFQgY29tbWFuZCBpbXByb3ZlbWVudHMuCgogICAgRml4ICJmZHQgc2V0IiBzbyB0aGF0IGl0IHdpbGwgY3JlYXRlIGEgbm9uLWV4aXN0aW5nIHByb3BlcnR5LgogICAgQWRkICJmZHQgbWtub2RlIiB0byBjcmVhdGUgbm9kZXMuCgogICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCAzOGViNTA4ZThlODExZTJlNTc2MjhmNDQ1ZGUzYTI0YTIzYzdkODA0CkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJU2F0IE1heSAxMiAwOTo0NTo0NiAyMDA3IC0wNDAwCgogICAgUmVvcmdhbml6ZSBhbmQgZml4IHByb2JsZW1zIChyZXR1cm5zKSBpbiB0aGUgYm9vdG0gY29tbWFuZC4KCiAgICBEbyAqTk9UKiByZXR1cm4gYWZ0ZXIgdGhlICJwb2ludCBvZiBubyByZXR1cm4iIGhhcyBiZWVuIHBhc3NlZC4KICAgICAgSWYgc29tZXRoaW5nIGdvZXMgd3JvbmcsIHRoZSBib2FyZCBtdXN0IGJlIHJlc2V0IGFmdGVyIHRoYXQgcG9pbnQuCiAgICBNb3ZlIHRoZSAiVHJhbnNmZXJyaW5nIGNvbnRyb2wgdG8gTGludXgiIGRlYnVnIG1lc3NhZ2UgYmFjayB0byB3aGVyZSBpdAogICAgICBiZWxvbmdzOiBqdXN0IGJlZm9yZSB0cmFuc2ZlcnJpbmcgY29udHJvbCB0byBsaW51eC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IDg5Yzg3NTdkOGYyMTNjNDc3MDliZGM0ZWZlMDY5NTI2M2E2MDgwYTYKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglUdWUgTWF5IDggMjE6Mjc6MzUgMjAwNyAtMDQwMAoKICAgIEZpeCBidWdzIGluIHRoZSBDT05GSUdfT0ZfTElCRkRUCgogICAgU3R1cGlkIGNvZGluZyBtaXN0YWtlcyAoaWRlbnRpZmllZCBieSBUaW11ciBUYWJpLCB0aGFua3MpLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgNmJlMDdjYzFjYTQ1ODI3OGM4NWVjZGJmMWEwNTM2Y2ZmNGM3MDFlYwpBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CVdlZCBBcHIgMjUgMjI6NDc6MTUgMjAwNyAtMDQwMAoKICAgIEltcHJvdmUgZmR0IG1vdmUgbGVuZ3RoIGhhbmRsaW5nLgoKICAgIE1ha2UgdGhlIGxlbmd0aCBwYXJhbWV0ZXIgb3B0aW9uYWw6IGlmIG5vdCBzcGVjaWZpZWQsIGRvIHRoZSBtb3ZlIHVzaW5nCiAgICB0aGUgY3VycmVudCBzaXplIHVuY2hhbmdlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IGJiOTMwZTc2ZmVhNmNmODljYTJkOThlMmY3YzdhNjA0M2Q3OTMyN2QKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglXZWQgQXByIDI1IDIyOjIzOjM2IDIwMDcgLTA0MDAKCiAgICBNaW5vciBjb2RlIGNsZWFuIHVwLgoKICAgIERlY2xhcmUgdGhlIHZhcmlhYmxlIGZkdCBwcm9wZXJseSBhcyBleHRlcm4uCiAgICBDYWxsIHRoZSAic2V0X2ZuIiBmdW5jdGlvbiBwb2ludGVyIHRoZSAic2hvcnQgd2F5IiB3aXRob3V0IHRoZSBmdWxsCiAgICAgIGRlcmVmZXJlbmNpbmcgc3ludGF4LgoKICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgYmEyNGUyYWMzYmRiNWM0ODlmM2M3ODdlNzU0MmI2NDc0YzRkNjVjNgpBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CVdlZCBBcHIgMjUgMjE6MjQ6MjcgMjAwNyAtMDQwMAoKICAgIEltcHJvdmUgZXJyb3IgbWVzc2FnZXMsIG1vcmUgaW5mb3JtYXRpdmUuCgogICAgUHJpbnQgbW9yZSB0aGFuIHRoZSByYXcgbGliZmR0IGVycm9yIG1lc3NhZ2Ugc3RyaW5ncy4gIFRoaXMgaXMgZXNwZWNpYWxseQogICAgdXNlZnVsIGZvciBjbHVpbmcgaW4gdGhlIHVzZXIgd2hlbiB0aGUgYm9vdG0gY29tbWFuZCBhYm9ydHMgZHVlIHRvCiAgICBibG9iIHByb2JsZW1zLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgODA5NmIzYjhmNzcyYzE4OTRkZGVkYTlkYmNlZmY2YTg4MjY0NzNhNApBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CUZyaSBBcHIgMjAgMjI6NDY6NTMgMjAwNyAtMDQwMAoKICAgIGxpYmZkdDogQ29uZGl0aW9uYWxseSBjb21waWxlIGJhc2VkIG9uIENPTkZJR19PRl9MSUJGRFQKCiAgICBUaGlzIGlzIHRoZSB3YXkgdS1ib290IHJlZHVjZXMgY29uZmlndXJlZC1vdXQgY29kZS4gIEF0IFdvbGZnYW5nCiAgICBHcmFuZGVnZ2VyIGFuZCBXb2xmZ2FuZyBEZW5rJ3MgcmVxdWVzdCwgbWFrZSBsaWJmZHQgY29uZm9ybS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IDkyM2VmZDI4NjQxMWVkMDUyZDllMDc0ZjU5Zjg5ODZkNjA4MTA2MWMKQXV0aG9yOiBCcnVjZSBBZGxlciA8YnJ1Y2UuYWRsZXJAY2NwdS5jb20+CkRhdGU6CUZyaSBBdWcgMTAgMTQ6NTQ6NDcgMjAwNyAtMDcwMAoKICAgIGFkZCBpbWFnZSBzaXplIGFuZCBkZXNjcmlwdG9ycyBmb3IgU3BhcnRhbiAzRSBGUEdBIGNoaXBzCgogICAgU3BhcnRhbiAzRSBpbWFnZSBzaXplcyB0YWtlbiBmcm9tIFRhYmxlIDEtNCBpbiBYaWxpbnggVUczMzIgKHYxLjEpCgogICAgU2lnbmVkLW9mZiBieTogQnJ1Y2UgQWRsZXIgPGJydWNlLmFkbGVyQGNjcHUuY29tPgoKY29tbWl0IGZiNTY1NzlmZmU3ZWYzMjc1YjcwMzZiYjdiOTI0ZTVhMGQzMmJkNzAKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgQXVnIDEwIDE1OjM0OjQ4IDIwMDcgLTA1MDAKCiAgICBtYWtlIE1BS0VBTEwgbW9yZSBpbW11bmUgdG8gbWVyZ2UgY29uZmxpY3RzCgogICAgLi5ieSBwbGFjaW5nIGJvYXJkIGVudHJpZXMgb25lIHBlciBsaW5lLCBhcyBzdWdnZXN0ZWQgYnkgamRsLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjYyODExNGVjNTY0Zjk2OWYzNGI1ZjcxMDVmYmQxNjhjYjhjOWMzZgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBBdWcgMTAgMTM6Mjg6MjUgMjAwNyAtMDUwMAoKICAgIFJFQURNRTogUmVtb3ZlIG91dGRhdGVkIGNwdSB0eXBlLCBib2FyZCB0eXBlLCBhbmQgTkFNRV9jb25maWcgbGlzdHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ5YmI1OTkxMmQyMWFhY2I1MDdlYjgxZmQyMWZiN2FmNjUwYzcwNmMKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBBdWcgMTAgMTU6NDg6NTkgMjAwNyArMDgwMAoKICAgIG1wYzgzeHg6IFN1cHByZXNzIHRoZSB3YXJuaW5nICdidXJzdGxlbicKCiAgICBzdXBwcmVzcyB0aGUgd2FybmluZyAnYnVyc3RsZW4nIG9mIHNwZF9zZHJhbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGM2NDZiYmE2NDY1YTQ1YzYwNzQ2ZDRjYzE2MDJjZDA2YzE5NjBmMmQKQXV0aG9yOiBKb2UgSGFtbWFuIDxqb2UuaGFtbWFuQGVtYmVkZGVkc3BlY2lhbHRpZXMuY29tPgpEYXRlOglUaHUgQXVnIDkgMTU6MTE6MDMgMjAwNyAtMDUwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBTQkM4NjQxRC4gQ29uZmlnIGZpbGVzLgoKICAgIEFkZCBzdXBwb3J0IGZvciBXaW5kIFJpdmVyJ3MgU0JDODY0MUQgcmVmZXJlbmNlIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYgYnk6IEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+CiAgICBBY2tlZC1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDhhYzI3MzI3MWQ1NzMyMWY5MDUwNWM3YTUxY2RiMWVmMjExM2I2MjgKQXV0aG9yOiBKb2UgSGFtbWFuIDxqb2UuaGFtbWFuQGVtYmVkZGVkc3BlY2lhbHRpZXMuY29tPgpEYXRlOglUaHUgQXVnIDkgMTU6MTA6NTMgMjAwNyAtMDUwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBTQkM4NjQxRC4gIEJvYXJkIGZpbGVzLgoKICAgIEFkZCBzdXBwb3J0IGZvciBXaW5kIFJpdmVyJ3MgU0JDODY0MUQgcmVmZXJlbmNlIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYgYnk6IEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+CiAgICBBY2tlZC1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGMyYzBhYjRhZmY4NjYyMmI4MzdhNDhhMGU1NjAzNTFmOWFmYWZiOTUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBBdWcgMTAgMjA6MzQ6NTggMjAwNyArMDIwMAoKICAgIENvbmRpbmcgc3R5bGUgY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjNzRiMjEwOGUzMWZlMDliZDFjNWQyOTFjM2NmMzYwNTEwZDRmMTNlCkF1dGhvcjogU2VyZ2V5IEt1YnVzaHluIDxrc2lAa29pOC5uZXQ+CkRhdGU6CUZyaSBBdWcgMTAgMjA6MjY6MTggMjAwNyArMDIwMAoKICAgIFtBUk1dIFRJIERhVmluY2kgc3VwcG9ydCwgaG9wZWZ1bGx5IGZpbmFsCgogICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBmb2xsb3dpbmcgRGFWaW5jaSBib2FyZHM6CiAgICAtIERWX0VWTQogICAgLSBTQ0hNT09HSUUKICAgIC0gU09OQVRBCgogICAgQ2hhbmdlczoKCiAgICAtIFNwbGl0IGludG8gc2VwYXJhdGUgYm9hcmQgZGlyZWN0b3JpZXMKICAgIC0gUmVtb3ZlZCBjaGFuZ2VzIHRvIE1URF9ERUJVRyAob3Igd2hhdGV2ZXIgaXQncyBjYWxsZWQpCiAgICAtIE5ldyBDT05GSUdfQ01EIHBhcnR5IGxpbmUgZm9sbG93ZWQKICAgIC0gU29tZSBjb3NtZXRpYyBmaXhlcywgY2xlYW51cCBldGMuCiAgICAtIFBhdGNoZXMgYWdhaW5zdCB0aGUgbGF0ZXN0IFUtQm9vdCB0cmVlIGFzIG9mIG5vdy4KICAgIC0gRml4ZWQgQ09ORklHX0NNRF9ORVQgaW4gbmV0IGZpbGVzLgogICAgLSBGaXhlZCBDT05GSUdfQ01EX0VFUFJPTSBmb3Igc2NobW9vZ2llLgogICAgLSBNYWRlIHN1cmUgaXQgY29tcGlsZXMgYW5kIHdvcmtzIChmb3JjZWVudigpIGxpbmsgcHJvYmxlbSkgb24gU0NITU9PR0lFIGFuZAogICAgICAgRFZfRVZNLiBDYW4ndCBjaGVjayBpZiBpdCB3b3JrcyBvbiBTT05BVEEsIGRvbid0IGhhdmUgYSBib2FyZCBhbnkgbW9yZSwKICAgICAgIGJ1dCBpdCBhdCBsZWFzdCBjb21waWxlcy4KCiAgICBIZXJlIGlzIGFuIGV4Y2VycHQgZnJvbSBzZXNzaW9uIGxvZyBvbiBTQ0hNT09HSUUuLi4KCiAgICBVLUJvb3QgMS4yLjAtZzZjMzNjNzg1LWRpcnR5IChBdWcgIDcgMjAwNyAtIDEzOjA3OjE3KQoKICAgIERSQU06ICAxMjggTUIKICAgIE5BTkQ6ICAxMjggTWlCCiAgICBJbjogICAgc2VyaWFsCiAgICBPdXQ6ICAgc2VyaWFsCiAgICBFcnI6ICAgc2VyaWFsCiAgICBBUk0gQ2xvY2sgOiAyOTdNSHoKICAgIEREUiBDbG9jayA6IDE2Mk1IegogICAgRVRIIFBIWSAgIDogRFA4Mzg0OCBAIDB4MDEKICAgIFUtQm9vdCA+IGlwcm9iZQogICAgVmFsaWQgY2hpcCBhZGRyZXNzZXM6IDFCIDM4IDNBIDNEIDNGIDUwIDVEIDZGCiAgICBVLUJvb3QgPiBwaW5nIDE5Mi4xNjguMjUzLjEwCiAgICBob3N0IDE5Mi4xNjguMjUzLjEwIGlzIGFsaXZlCiAgICBVLUJvb3QgPgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdleSBLdWJ1c2h5biA8a3NpQGtvaTgubmV0PgogICAgQWNrZWQtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ21haWwuY29tPgogICAgQWNrZWQtYnk6IFphY2ggU2FkZWNraSA8WmFjaC5TYWRlY2tpQHJpcGNvZGUuY29tPgogICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyZTRkOTRmMWUzYzI5NjE0Mjg5NjdhMzNiNmZmMjUyMDU2ODM5MWIzCkF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEp1bCAyNyAwMTo1MDo0NSAyMDA3IC0wNTAwCgogICAgZnNsX3BjaV9pbml0IGNsZWFudXAuCgogICAgRG8gbm90IGVuYWJsZSBub3JtYWwgZXJyb3JzIGNyZWF0ZWQgZHVyaW5nIHByb2JlIChtYXN0ZXIgYWJvcnQsIHBlcnIsCiAgICBhbmQgcGNpZSBJbnZhbGlkIENvbmZpZ3VyYXRpb24gYWNjZXNzKS4KCiAgICBBZGQgQ09ORklHX1BDSV9OT1NDQU4gYm9hcmQgb3B0aW9uIHRvIHByZXZlbnQgYnVzIHNjYW4uCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTM2YjNlNjliNjY3YzNlYjlhNjFlY2U0ZTc4NjQ3ZDNmY2U5ZmMyYQpBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBKdWwgMjcgMDE6NTA6NDQgMjAwNyAtMDUwMAoKICAgIHBjaWF1dG9fc2V0dXBfZGV2aWNlIGJhcnNfbnVtIGZpeAoKICAgIFBhc3NpbmcgYmFyc19udW09MCB0byBwY2lhdXRvX3NldHVwX2RldmljZSBzaG91bGQgYXNzaWduIG5vIGJhcnMuCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGNmMGIxODVlNThjYTBhZWM4YWUyYjJhODgwNGVjMGVmNThlZTIxZDQKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXVnIDYgMTc6Mzk6NDQgMjAwNyAtMDUwMAoKICAgIDg2NDFocGNuOiBEbyBjb3JyZWN0IHNpemVkIHBvaW50ZXIgbWF0aC4KCiAgICBXaGVuIEkgcmViYXNlZCBFZCdzIHBhdGNoIGFuZCBjbGVhbmVkIHVwIGEgZmV3IGNvbXBpbGF0aW9uCiAgICBwcm9ibGVtcywgSSBhcHBhcmVudGx5IHJlYmFzZWQgbXkgYnJhaW4gb24gY3JhY2sgZmlyc3QuCiAgICBGaXggdGhhdCBieSBkb2luZyAoY2hhciAqKSBzaXplZCBwb2ludGVyIG1hdGggYXMgbmVlZGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgY2ZjN2E3ZjViYjMyNzNjOTk1MTE3M2M3ODgwMDFkNDUxMThmMTQxZgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBBdWcgMiAxNDo0MjoyMCAyMDA3IC0wNTAwCgogICAgY3B1Lzg2eHggZml4ZXMuCgogICAgUmVtb3ZlIHJldiAxIGZpeGVzLgogICAgQWx3YXlzIHNldCBQSUNHQ1JfTU9ERS4KICAgIEVuYWJsZSBtYWNoaW5lIGNoZWNrIGFuZCBwcm92aWRlIGJvYXJkIGNvbmZpZyBvcHRpb24KICAgIHRvIHNldCBhbmQgaGFuZGxlIFNvQyBlcnJvciBpbnRlcnJ1cHRzLgoKICAgIEluY2x1ZGUgTVNTU1IwIGluIGVycm9yIG1lc3NhZ2UuCgogICAgSXNvbGF0ZSBhIFJBTUJPT1QgYml0IG9mIGNvZGUgd2l0aCAjaWZkZWYgQ0ZHX1JBTUJPT1QuCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzVkMjJmOTU3YTg1YTIyYmIzY2QxYWQwODRmYTU0MDQ2MjBkMWM0MgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEF1ZyAxMCAxMDo0MjoyNSAyMDA3ICswMjAwCgogICAgQ29kaW5nIHN0eWxlIGNsZWFudXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgM2E2ZDU2YzIwOTg5ZmUyNzM2MGFmZTc0M2JkMmE3YWQ0ZDc2ZTQ4ZgpBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVRodSBBdWcgMiAxNzo0MjowOCAyMDA3ICswMjAwCgogICAgTWFrZSB1c2Ugb2YgZ2VuZXJpYyA2NGJpdCBkaXZpc2lvbiBpbiBuYW5kX3V0aWwuYwoKICAgIFVzZSBnZW5lcmljIDY0Yml0IGRpdmlzaW9uIGluIG5hbmRfdXRpbC5jLiBUaGlzIG1ha2VzIG5hbmRfdXRpbC5jCiAgICBpbmRlcGVuZGVudCBvZiBhbnkgdG9vbGNoYWluIDY0Yml0IGRpdmlzaW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ21haWwuY29tPgoKY29tbWl0IGY3YzA4NmU5NGU4Y2U5YWFkNzI2OGFmOTdmNzNhYTY4ODQ2ODZmMjcKQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgpEYXRlOglUaHUgQXVnIDIgMTc6NDE6MTQgMjAwNyArMDIwMAoKICAgIE1vdmUgNjRiaXQgZGl2aXNpb24gZnJvbSBhdnIzMiB0byBnZW5lcmljIGxpYgoKICAgIE1vdmUgdGhlIDY0Yml0IGRpdmlzaW9uIGZyb20gbGliX2F2cjMyIHRvIGxpYl9nZW5lcmljLiBXaXRoIHRoaXMsIGFsbAogICAgYm9hcmRzIGNhbiBkb19kaXYvX19kaXY2NF8zMiBpZiBuZWVkZWQsIG5vdCBvbmx5IGF2ciBvbmUuIENvZGUgaXMgcHV0CiAgICB0byBsaWJfZ2VuZXJpYywgc28gbm8gbGFyZ2VyIG1lbW9yeSBmb290cHJpbnQgaWYgbm90IHVzZWQuIE5vIGNvZGUKICAgIG1vZGlmaWNhdGlvbnMuIFRoYW5rcyBmb3IgcHJvcG9zYWwgYnkgSMOldmFyZCBTa2lubmVtb2VuLgoKICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ21haWwuY29tPgoKY29tbWl0IDE1N2NkYTRkMGMzZDU5MmNjYmIxOWJiZmMwN2Q5MjUxODk0ZjA4OTQKQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzZ2lnZXJAZ214LmNoPgpEYXRlOglGcmkgSnVsIDI3IDExOjMxOjIyIDIwMDcgKzAyMDAKCiAgICBBZGQgUFBDNHh4LUhDVTQgYW5kIEhDVTUgYm9hcmRzOiBIQ1U1IGZpbGVzCgogICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KCmNvbW1pdCA2ZTVkZTI2YzZlNzU4MGZhZjE2ZTg3NzQ1Y2Q0ODhiOTJiNDkyZDBjCkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1c2dpZ2VyQGdteC5jaD4KRGF0ZToJRnJpIEp1bCAyNyAxMTozMDozMyAyMDA3ICswMjAwCgogICAgQWRkIFBQQzR4eC1IQ1U0IGFuZCBIQ1U1IGJvYXJkczogSENVNCBmaWxlcwoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgZTgzOTdmYzc4YzkzOTRkNzFkZTIzM2E0ZDgxMGZiYzkwNDdlNGM3NgpBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXNnaWdlckBnbXguY2g+CkRhdGU6CUZyaSBKdWwgMjcgMTE6Mzg6MjYgMjAwNyArMDIwMAoKICAgIEFkZCBQUEM0eHgtSENVNCBhbmQgSENVNSBib2FyZHM6IGNvbW1vbiBmaWxlcwoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgYWM5ODJlYTVhNGYyZjk5M2VmY2Y1MmRjYTEyMmY1YTU5ZGYwNDdkOApBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXNnaWdlckBnbXguY2g+CkRhdGU6CUZyaSBKdWwgMjcgMTE6Mjg6NDQgMjAwNyArMDIwMAoKICAgIEFkZCBQUEM0eHgtSENVNCBhbmQgSENVNSBib2FyZHM6IG1ha2UgcmVsYXRlZAoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgMTM3ZmRkOWY0NzRlY2I4NTNlZmRhY2U1MjAwNTc2MzA4YzY3ZjE4ZApBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXNnaWdlckBnbXguY2g+CkRhdGU6CUZyaSBKdWwgMjcgMTE6Mjg6MDMgMjAwNyArMDIwMAoKICAgIEFkZCBQUEM0eHgtSENVNCBhbmQgSENVNSBib2FyZHM6IEhDVTUgY29uZmlnCgogICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KCmNvbW1pdCA3MTRiYzU1YjM1YjZmNmE2NWNjODc0MGEzODQyYTU0M2U4OGNkZWYyCkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1c2dpZ2VyQGdteC5jaD4KRGF0ZToJRnJpIEp1bCAyNyAxMToyNzoxNSAyMDA3ICswMjAwCgogICAgQWRkIFBQQzR4eC1IQ1U0IGFuZCBIQ1U1IGJvYXJkczogSENVNCBjb25maWcKCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgoKY29tbWl0IDE4OTRkZDM4MTEyNGJkYmZiZGFlN2NmM2E2Y2E1MmE4ZWIxZjQ0MjEKQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzZ2lnZXJAZ214LmNoPgpEYXRlOglGcmkgSnVsIDI3IDExOjI1OjMxIDIwMDcgKzAyMDAKCiAgICBBZGQgUFBDNHh4LUhDVTQgYW5kIEhDVTUgYm9hcmRzOiBSRUFETUVzCgogICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KCmNvbW1pdCA2NDFjY2E5NTY5Y2UzNTFkZGIyODdmZDMzNDNkOGIxZGNiNTkxZGI0CkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1c2dpZ2VyQGdteC5jaD4KRGF0ZToJRnJpIEp1bCAyNyAxMTozNzo0MCAyMDA3ICswMjAwCgogICAgQWRkIFBQQzR4eC1IQ1U0IGFuZCBIQ1U1IGJvYXJkczogSW5mcmFzdHJ1Y3R1cmUKCiAgICBUaGlzIHNlcmllcyBvZiBwYXRjaGVzIGFkZHMgc3VwcG9ydCBmb3IgMiBib2FyZHMgZnJvbSBOZXRzdGFsIE1hc2NoaW5lbi4KCiAgICBUaGUgSENVNCBoYXMgYSBQUEM0MDVHcHIgYW5kCiAgICB0aGUgSENVNSBoYXMgYSBQUEM0NDBFUFguCgogICAgVGhlIEhDVTQgaGFzIGEgc29tZWhvdyBjb21wbGljYXRlZCBmbGFzaCBzZXR1cCwgYXMgdGhlIGJvb3RlcHJvbSBpcwogICAgb25seSA4IGJpdHMgYW5kIHRoZSBDRkkgMTYgYml0cyB3aWRlLCB3aGljaCBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIHVzZSBhIG1vcmUKICAgIGVsZWdhbnQgc29sdXRpb24uCgogICAgVGhlIEhDVTUgaGFzIG9ubHkgYSBib290ZXByb20gYXMgdGhlIHdob2xlIGNvZGUgd2lsbCBiZSBkb3dubG9hZGVkIGZyb20gYQogICAgZGlmZmVyZW50IGJvYXJkIHdoaWNoIGhhcyBIRCwgQ0QtUk9NLCBldGMgYW5kIHdoZXJlIGFsbCBjb2RlIGlzIHN0b3JlZC4KCiAgICBUaGlzIGlzIG15IHRoaXJkIHRyeS4gSSBpbmNvcnBvcmF0ZWQgYWxsIHN1Z2dlc3Rpb25zIG1hZGUgYnkgV29sZmdhbmcgYW5kIFN0ZWZhbi4KICAgIFRoYW5rcyB0aGVtIGEgbG90LgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgM2U0YzkwYzYyMzM2MThmYzE4MDZlNjNmZGU2OGRmNWYzZDZhMDE3MQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEF1ZyAxMCAwODo0Mjo1NSAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgbHdtb241IFBPU1QgY29uZmlndXJhdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyOWNiMjVkYTU2YWZlMThjZjVlNzA3MmE5MmE5ZDk4ZWE4YWYxZmQ0CkF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgpEYXRlOglGcmkgQXVnIDEwIDA4OjI1OjIyIDIwMDcgKzAyMDAKCiAgICBQT1NUOiBBZGQgcHBjNHh4IFVBUlQgUE9TVCBzdXBwb3J0IHdpdGhvdXQgZXh0ZXJuYWwgdWFydCBjbG9jayAobHdtb241KQoKICAgIFRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIFVBUlQgUE9TVCBvbiBwcGM0NHgtYmFzZWQgYm9hcmRzIHdpdGggbm8KICAgIGV4dGVybmFsIHNlcmlhbCBjbG9ja3MgaW5zdGFsbGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOTljMmZkYWI5MWJjNjMzZTQ2ZmI0MWRiYWE2MjlmODdjY2Y2ZTAwZgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBBdWcgNiAxODoxODozNCAyMDA3IC0wNTAwCgogICAgbXBjODN4eDogZml4IElUWFtHUF0gTz1idWlsZGRpciBidWlsZHMKCiAgICBtYWtlOiAqKiogTm8gcnVsZSB0byBtYWtlIHRhcmdldCBgL3dvcmsvd2QvdG1wL2JvYXJkL21wYzgzNDlpdHgvdS1ib290LmxkcycsIG5lZWRlZCBieSBgL3dvcmsvd2QvdG1wL3UtYm9vdCcuICBTdG9wLgoKICAgIEJvdGggdGhlIElUWCBhbmQgSVRYLUdQIGZhaWwgd2hlbiB5b3UgdXNlICJtYWtlIE89PHNvbWUgZGlyPiAuLi4iIG9yCiAgICAiQlVJTERfRElSPTxzb21lIGRpcj4gLi9NQUtFQUxMIC4uLiIKCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ3ZThiYzg0Njc1OWUwMzdiOGFmMGU1ZjljOWY5Y2ZhN2ExMDUwYzMKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMSAxNTowMDo1OSAyMDA3ICswODAwCgogICAgbXBjODN4eDogQ29ycmVjdCB0aGUgUkVBRE1FIGZvciBERFIgRUNDCgogICAgVXBkYXRlIHRoZSBSRUFETUUgZm9yIEREUiBFQ0MsIGNoYW5nZSB0aGUgbmFtZQogICAgdG8gUkVBRE1FLm1wYzgzeHguZGRyZWNjLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGRhYWI4YzY3ZDJkZWZlZjczZGMyNmFiMDdmMGMzYWZkMWIwNWQwMTkKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMSAxNTowMDoxNSAyMDA3ICswODAwCgogICAgbXBjODN4eDogQ29uc29saWRhdGUgdGhlIEVDQyBzdXBwb3J0IG9mIDgzeHgKCiAgICBSZW1vdmUgdGhlIGR1cGxpY2F0ZWQgc291cmNlIGNvZGUgb2YgZWNjIGNvbW1hbmQgb24gdGhlIDxib2FyZD4uYywKICAgIGZvciByZXVzZWQsIG1vdmUgdGhlc2UgY29kZSB0byBjcHUvbXBjODN4eCBkaXJlY3RvcnkuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMDM2NTc1YzU0NGNmMWI2OTY1NGQ4ZmIzMzRiZGE2OWM2ZmYzZGEzNgpBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU2F0IEF1ZyA0IDEzOjM3OjM5IDIwMDcgKzA4MDAKCiAgICBtcGM4M3h4OiBDb3JyZWN0IHRoZSBidXJzdCBsZW5ndGggZm9yIEREUjIgd2l0aCAzMiBiaXRzCgogICAgVGhlIGJ1cnN0IGxlbmd0aCBzaG91bGQgYmUgNCBmb3IgRERSMiB3aXRoIDMyIGJpdHMgYnVzCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxYzI3NGM0ZTA1YjZkYzliMjRlZGM4YWE2MThiMDJmNjA3ZWU2ZWVkCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1bCAyNSAxOToyNTozMyAyMDA3IC0wNTAwCgogICAgbXBjODN4eDogYWRkIHN1cHBvcnQgZm9yIHRoZSBNUEM4MzIzRSBSREIKCiAgICBNUEM4MzIzRSBiYXNlZCBib2FyZCB3aXRoIDY0TUIgZml4ZWQgU0RSQU0sIDE2TUIgZmxhc2gsCiAgICBmaXZlIDEwLzEwMCBldGhlcm5ldCBwb3J0cyBjb25uZWN0ZWQgdmlhIGFuIElDUGx1cyBJUDE3NUMKICAgIHN3aXRjaCwgb25lIFBDSSBzbG90LCBhbmQgc2VyaWFsLiAgRmVhdHVyZXMgbm90IHN1cHBvcnRlZAogICAgaW4gdGhpcyBwYXRjaCBhcmUgU0QgY2FyZCBpbnRlcmZhY2UsIDIgVVNCIHBvcnRzLCBhbmQgdGhlCiAgICB0d28gcGhvbmUgcG9ydHMuCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBCYXJrb3dza2kgPG1pY2hhZWwuYmFya293c2tpQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDM0M2Q5MTAwOWQ1NWZjNWIzZmY4Y2M5NDA1OTdhZjZjNmFhMWQzNTkKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVsIDI1IDE5OjI1OjI4IDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBmaXh1cCBnZW5lcmljIHBjaSBmb3IgbGliZmR0CgogICAgYWRkIGxpYmZkdCBzdXBwb3J0IHRvIHRoZSBnZW5lcmljIDgzeHggcGNpIGNvZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGY1N2FjN2E3YjM3MTA5MjQ1YjY5ZGI4MDgzOWViZWUyNjE3OTk2NmEKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVsIDI1IDE5OjI1OjIyIDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBmaXggODM2MCBhbmQgY3B1IGZ1bmN0aW9ucyB0byB1cGRhdGUgZmR0IGJlaW5nIHBhc3NlZAoKICAgIC4uYW5kIG5vdCB0aGUgZ2xvYmFsIGZkdC4gUmVuYW1lIGxvY2FsIGZkdCB2YXJzIHRvIGJsb2Igc28gYXMgbm90IHRvCiAgICBiZSBjb25mdXNlZCB3aXRoIHRoZSBnbG9iYWwgdmFyIHdpdGggdGhlIHNhbWUgdGhyZWUtbGV0dGVyIG5hbWUuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4YmU0MDQ0NTlhNmI3Mzk1NDE1YTU3YmIzNWU4Mzc3ZTNiMmI1YWNiCkF1dGhvcjogSmVycnkgVmFuIEJhcmVuIDxndmIudWJvb3RAZ21haWwuY29tPgpEYXRlOglXZWQgSnVsIDQgMjE6MzQ6MjQgMjAwNyAtMDQwMAoKICAgIG1wYzgzeHg6IEZpeCBlcnJvcnMgd2hlbiBDT05GSUdfT0ZfTElCRkRUIGlzIGVuYWJsZWQKCiAgICBTZXZlcmFsIG5vZGUgc3RyaW5ncyB3ZXJlIG5vdCBjb3JyZWN0ICh0cmFpbGluZyBzbGFzaGVzIGFuZCBwcm9wZXJ0aWVzCiAgICAgIGluIHRoZSBzdHJpbmdzKQogICAgQWRkZWQgc2V0dGluZyBvZiB0aGUgdGltZWJhc2UtZnJlcXVlbmN5LgogICAgSW1wcm92ZWQgZXJyb3IgbWVzc2FnZXMgYW5kIHVzZSBkZWJ1ZygpIGluc3RlYWQgb2YgcHJpbnRmKCkuCgogICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjZkMDJjOWJiYWMxNzUxYzVlMTkyOTRmMDAwMTAwYjQ4ZDQzYTkyMApBdXRob3I6IEplcnJ5IFZhbiBCYXJlbiA8Z3ZiLnVib290QGdtYWlsLmNvbT4KRGF0ZToJV2VkIEp1bCA0IDIxOjI3OjMwIDIwMDcgLTA0MDAKCiAgICBtcGM4M3h4OiBSZXBsYWNlIGZkdF9ub2RlX29mZnNldCgpIHdpdGggZmR0X2ZpbmRfbm9kZV9ieV9wYXRoKCkuCgogICAgVGhlIG5ldyBuYW1lIG1hdGNoZXMgbW9yZSBjbG9zZWx5IHRoZSBrZXJuZWwncyBuYW1lLCB3aGljaCBpcyBhbHNvCiAgICBhIG11Y2ggYmV0dGVyIGRlc2NyaXB0aW9uLgoKICAgIFRoZXNlIGFyZSB0aGUgbXBjODN4eCBjaGFuZ2VzIG1hZGUgbmVjZXNzYXJ5IGJ5IHRoZSBmdW5jdGlvbiBuYW1lIGNoYW5nZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KICAgIEFja2VkLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5YmUzOWE2N2M5ZjhmZWY3MTA3ZjVkZjA5ZDY3MzAwNWYwNGQwOTYzCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEp1biAyNSAxMDo0MTo1NiAyMDA3ICswODAwCgogICAgbXBjODN4eDogQWRkIHN1cHBvcnQgZm9yIHRoZSBkaXNwbGF5IG9mIHJlc2V0IHN0YXR1cwoKICAgIDgzeHggcHJvY2Vzc29yIGZhbWlseSBoYXMgbWFueSByZXNldCBzb3VyY2VzLCBzdWNoIGFzCiAgICBwb3dlciBvbiByZXNldCwgc29mdHdhcmUgaGFyZCByZXNldCwgc29mdHdhcmUgc29mdCByZXNldCwKICAgIEpUQUcsIGJ1cyBtb25pdG9yLCBzb2Z0d2FyZSB3YXRjaGRvZywgY2hlY2sgc3RvcCByZXNldCwKICAgIGV4dGVybmFsIGhhcmQgcmVzZXQsIGV4dGVybmFsIHNvZnR3YXJlIHJlc2V0LgogICAgc29tZXRpbWVzLCB0byBmaWd1cmUgb3V0IHRoZSBmYXVsdCBvZiBzeXN0ZW0sIHdlIG5lZWQgdG8KICAgIGtub3cgdGhlIGNhdXNlIG9mIHJlc2V0IGVhcmx5IGJlZm9yZSB0aGUgcHJvbXB0IG9mCiAgICB1LWJvb3QgcHJlc2VudC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmZjk2NThkNzA0OWJmOGM4ZThlMGEwNWRiZTVlOWY3ZTkxYWE1YTVkCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEp1biAyNSAxMDo0MTowNCAyMDA3ICswODAwCgogICAgbXBjODN4eDogRml4IHRoZSBhbGlnbiBidWcgb2YgU0RNQSBidWZmZXIKCiAgICBBY2NvcmRpbmcgdG8gdGhlIGxhdGVzdCB1c2VyIG1hbnVhbCwgdGhlIFNETUEgdGVtcG9yYXJ5CiAgICBidWZmZXIgYmFzZSBhZGRyZXNzIG11c3QgYmUgNEtCIGFsaWduZWQuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjZkYzJjMmRjNTFmOGI4OGJiOGUyMzFiYzgwY2Q5MmVhZTFkNjQ3NgpBdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdW4gMjUgMTM6MjE6MTIgMjAwNyArMDgwMAoKICAgIG1wYzgzeHg6IFJldmlzZSB0aGUgTVBDODM2MEVNRFMgcmVhZG1lIGRvYwoKICAgIFdoZW4gdGhlIHJldjIueCBzaWxpY29uIG1vdW50IG9uIHRoZSBNUEM4MzYwRU1EUyBiYW9yZCwKICAgIGFuZCBpZiB5b3UgYXJlIHVzaW5nIHRoZSB1LWJvb3QgdmVyc2lvbiBhZnRlciB0aGUgY29tbWl0CiAgICAzZmMwYmQxNTkxMDNiNTM2ZTFjNTRjNmY0NDU3YTA5YjNhYmE2NmNhLgogICAgdG8gbWFrZSB0aGUgZXRoZXJuZXQgaW50ZXJmYWNlIHVzYWJsZSwgd2UgaGF2ZSB0byBzZXR1cAogICAgdGhlIGp1bXBlcnMgY29ycmVjdGx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGU3MzliYzk1Nzk3YWFjNGZlZmM0Yzc1YjU1YzdjNzhlNTlkM2VhOWMKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSnVsIDMgMTM6NDY6MzIgMjAwNyAtMDUwMAoKICAgIEZTTCBJMkMgZHJpdmVyIHByb2dyYW1zIHRoZSB0d28gSTJDIGJ1c3NlcyBkaWZmZXJlbnRseQoKICAgIFRoZSBpMmNfaW5pdCgpIGZ1bmN0aW9uIGluIGZzbF9pMmMuYyBwcm9ncmFtcyB0aGUgdHdvIEkyQyBidXNzZXMgZGlmZmVyZW50bHkuCiAgICBUaGUgc2Vjb25kIEkyQyBidXMgaGFzIGl0cyBzbGF2ZSBhZGRyZXNzIHByb2dyYW1tZWQgaW5jb3JyZWN0bHkgYW5kIGlzCiAgICBtaXNzaW5nIGEgNS11cyBkZWxheS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkZjMzZjZiNGQ2ZDYzNjkzZGQ5MjAwODA4YjI0MmRlMWI4NmNiOGU4CkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEp1bCAzIDEzOjA0OjM0IDIwMDcgLTA1MDAKCiAgICBVcGRhdGUgU0NDUiBwcm9ncmFtbWluZyBpbiBjcHVfaW5pdF9mKCkgdG8gc3VwcG9ydCBhbGwgODN4eCBwcm9jZXNzb3JzCgogICAgVXBkYXRlIHRoZSBjcHVfaW5pdF9mKCkgZnVuY3Rpb24gaW4gY3B1L21wYzgzeHgvY3B1X2luaXQuYyB0byBwcm9ncmFtIHRoZQogICAgYml0ZmllbGRzIGZvciBhbGwgODN4eCBwcm9jZXNzb3JzLglUaGUgY29kZSB0byB1cGRhdGUgc29tZSBiaXRmaWVsZHMgd2FzCiAgICBjb21waWxlZCBvbmx5IG9uIHNvbWUgcHJvY2Vzc29ycy4gIE5vdywgdGhlIGJpdGZpZWxkcyBhcmUgcHJvZ3JhbW1lZCBhcyBsb25nCiAgICBhcyB0aGUgY29ycmVzcG9uZGluZyBDRkdfU0NDUiBvcHRpb24gaXMgZGVmaW5lZCBpbiB0aGUgYm9hcmQgaGVhZGVyIGZpbGUuCiAgICBUaGlzIG1lYW5zIHRoYXQgdGhlIGJvYXJkIGhlYWRlciBmaWxlIHNob3VsZCBub3QgZGVmaW5lIGFueSBDRkdfU0NDUiBtYWNyb3MKICAgIGZvciBiaXRmaWVsZHMgdGhhdCBkb24ndCBleGlzdCBvbiB0aGF0IHByb2Nlc3Nvciwgb3RoZXJ3aXNlIHRoZSBTQ0NSIHdpbGwgYmUKICAgIHByb2dyYW1tZWQgaW5jb3JyZWN0bHkuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTU0NjI2Njk5OWYwYjliNTEzNzI2MzY2MTQyMTFiODhkOTBmMGYyNQpBdXRob3I6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgpEYXRlOglGcmkgSnVuIDIyIDEzOjA0OjIyIDIwMDcgKzAyMDAKCiAgICBUUU04MzR4OiBjbGVhbnVwIGNvbmZpZ3VyYXRvbgoKICAgIFJlbW92ZSBpcnJpdGF0aW5nICN1bmRlZiBERUJVRwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1ZDQ5N2U2YmYwZjViZjYzNzI5YjRhNDdiM2ZkNzg2ZDNjNzdhMWJjCkF1dGhvcjogZGF2aWQuc2FhZGEgPERhdmlkLlNhYWRhQGVjaXRlbGUuY29tPgpEYXRlOglNb24gSnVuIDE4IDA5OjA5OjUzIDIwMDcgLTA3MDAKCiAgICBNUEM4M3h4OiBGaXggbWFrZWZpbGUgdG8gZ2VuZXJhdGUgY29uZmlnLmggZmlsZSBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5CgogICAgTVBDODN4eDogRml4IHRoZSBNYWtlZmlsZSBjb25maWcgc2VjdGlvbnMgdG8gZ2VuZXJhdGUgdGhlIGluY2x1ZGUvY29uZmlnLmgKICAgIGZpbGUgaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeSBpbnN0ZWFkIG9mIHRoZSBzb3VyY2UgZGlyZWN0b3J5LgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIFNhYWRhIDxkYXZpZC5zYWFkYUBlY2l0ZWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMWRlZDAyNDJlNDM3MjU5MzY2NzkyZDUyYjdlOWQxZTE5MzFkOGZhNQpBdXRob3I6IExlZSBOaXBwZXIgPExlZS5OaXBwZXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1biAxNCAyMDowNzozMyAyMDA3IC0wNTAwCgogICAgbXBjODN4eDogQWRkIHN1cHBvcnQgZm9yIDgzNjAgc2lsaWNvbiByZXZpc2lvbiAyLjEKCiAgICBUaGlzIGNoYW5nZSBhZGRzIDgzNjAgc2lsaWNvbiByZXZpc2lvbiAyLjEgc3VwcG9ydCB0byB1LWJvb3QuCgogICAgU2lnbmVkLW9mZi1ieTogTGVlIE5pcHBlciA8bGVlLm5pcHBlckBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhMjI4MDY0NjlhOGYyYjY5YzgyOWY0ZmQ1MzYxZmRlYmQwY2IwMWI0CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEF1ZyA4IDA0OjE0OjI4IDIwMDcgLTA1MDAKCiAgICBUcmVhdCBwcGM2NCBob3N0IGFzIHBwYwoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMGRjNDI3OWIwOGZmODI0NzJiZWMyZTJjOTA4NTg2MDI0NTlmZWJlOApBdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgOCAwOTowMTo0NiAyMDA3ICswODAwCgogICAgTWlub3IgZml4IGZvciBiaW9zIGVtdWxhdG9yIG1ha2VmaWxlCgogICAgQWRkICQob2JqKSB0byBMSUIgYXZvaWRpbmcgb2JqZWN0cyBiZSBidWlsdCBpbiB0aGUgc291cmNlIGRpcgoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgY2U5ODFkYzg1N2FkZmM4MDM2Y2EyZjZkNWQ1YTA2YzJhOGFhNzdkNgpBdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgOCAwODozMzoxMSAyMDA3ICswODAwCgogICAgQWRkIENPTkZJR19CSU9TRU1VIGRlZmluZSB0byBndWFyZCBhbGwgdGhlIGJpb3MgZW11bGF0b3IgY29kZQoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CgogICAgVGhpcyBwYXRjaCBmaXggdGhlIGNvbXBpbGUgaXNzdWUgb24gdGhlIGJvYXJkIHRoYXQgZGlkIG5vdCBlbmFibGUgdGhlIGJpb3MgZW11bGF0b3IKCmNvbW1pdCBlZDgxMDY0MzM1MjJmMmVhODkzM2U5ODA4MzQ2ODYwZDA2MWQ3NzMxCkF1dGhvcjogWmFjaCBTYWRlY2tpIDxaYWNoLlNhZGVja2lAcmlwY29kZS5jb20+CkRhdGU6CVR1ZSBKdWwgMzEgMTI6Mjc6MjUgMjAwNyAtMDUwMAoKICAgIHRzZWM6IGZpeCBtdWx0aXBsZSBQSFkgc3VwcG9ydAoKICAgIFRoZSBjaGFuZ2UgZW50aXRsZWQgIlJlZHVjZSBDT05GSUdfTVBDOFlYWF9UU0VDeCB0byBDT05GSUdfVFNFQ3giCiAgICBicm9rZSBtdWx0aXBsZSBQSFkgc3VwcG9ydCBpbiB0c2VjLmMuICBUaGlzIGZpeGVzIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFphY2ggU2FkZWNraSA8WmFjaC5TYWRlY2tpQHJpcGNvZGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkY2I4NGI3MjA4YWRlMGJiZWJiZWI1NmJlYzljMmM2NGY4YjJlZWRlCkF1dGhvcjogSm9lIEhhbW1hbiA8am9lLmhhbW1hbkBlbWJlZGRlZHNwZWNpYWx0aWVzLmNvbT4KRGF0ZToJVGh1IEF1ZyA5IDA5OjA4OjE4IDIwMDcgLTA1MDAKCiAgICB0c2VjOiBBbGxvdyBUZW4gQml0IEludGVyZmFjZSBhZGRyZXNzIHRvIGJlIGNvbmZpZ3VyYWJsZQoKICAgIEFsbG93IHRoZSBhZGRyZXNzIG9mIHRoZSBUZW4gQml0IEludGVyZmFjZSAoVEJJKSB0byBiZSBjaGFuZ2VkIGluIHRoZQogICAgZXZlbnQgb2YgYSBjb25mbGljdCB3aXRoIGFub3RoZXIgZGV2aWNlLgoKICAgIFNpZ25lZC1vZmYgYnk6IEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+Cgpjb21taXQgM2JhNGMyZDY4ZjY1NDFkYjQ2NzdiNGFlYTEyMDcxZjU2ZTZmZjZlNgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEF1ZyA4IDA5OjU0OjI2IDIwMDcgKzAyMDAKCiAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhNDFkZTFmMGQzNzNlMDljNzgyZGVhNTU4Mzg1YTA2MjQ3MTExYmE1CkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglTdW4gQXVnIDUgMDU6MTU6MTggMjAwNyAtMDUwMAoKICAgIFBvcnQgZW5hYmxlZCBmb3IgSTJDIHNpZ25hbHMgYW5kIGNoaXBzZWxlY3RzIHBvcnQgY29uZmlndXJhdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMWEzM2NlNjVhNGM1MWE2OTE5MGRkOGM0MDhmOWUxYzYyYTY2ZTk0ZgpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIEF1ZyA1IDA0OjMxOjE4IDIwMDcgLTA1MDAKCiAgICBBZGRlZCBOQU5EIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZWFmOWU0NDdiZWIzZTQ5ODgxOGVmOGFkMGI4YzE1OTdjZDUwNjE0OQpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIEF1ZyA1IDA0OjExOjIwIDIwMDcgLTA1MDAKCiAgICBBZGRlZCBJMkMgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5OWMwM2MxNzVkMjY4OTA5MzE3NmZhY2YxN2M1OGNlMmNiMzIwMDAxCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglTdW4gQXVnIDUgMDM6NTg6NTIgMjAwNyAtMDUwMAoKICAgIENoYW5nZWQgQ0ZHX0NMSyB0byBnZC0+YnVzX2NsayBmb3IgQ0ZHX1RJTUVSX1BSRVNDQUxFUi4gQWRkZWQgREVDTEFSRV9HTE9CQUxfREFUQV9QVFIgZm9yIHRpbWUuYwoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4ZDFkNjZhZjU0ZDMwNWRlMjlkMGJiZjRhYThjOWU2Mzc1ZjdmNzMxCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglTdW4gQXVnIDUgMDM6NTU6MjEgMjAwNyAtMDUwMAoKICAgIEFkZGVkIHVhcnRfZ3Bpb19jb25mKCkgaW4gc2VyaWFsX2luaXQoKSwgc2VwZXJhdGVkIHVhcnQgcG9ydCBjb25maWd1cmF0aW9uIGZyb20gY3B1X2luaXQoKSB0byB1YXJ0X2dwaW9fY29uZigpCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDZmZGU4NGE0NGI3ZTU3NWVhODBmZTBlMmQ1YmUzYjZmNzNkMWU2MzAKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVN1biBBdWcgNSAwMzo0MzozMCAyMDA3IC0wNTAwCgogICAgTW92ZWQgc3luYygpIGZyb20gYm9hcmQgZmlsZSB0byBpbmNsdWRlL2FzbS1tNjhrL2lvLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOWU3MzdkODQ3NmU3ZDZhNTk2ZDE2Y2FhZjZhMzg1M2E5YTExOTBhMgpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIEF1ZyA1IDAzOjMwOjQ0IDIwMDcgLTA1MDAKCiAgICBEZWNsYXJlZCBhdHRyaWJ1dGVzIG9mIHZvaWQgX19taWlfaW5pdCh2b2lkKSBhcyBhbiBhbGlhcyBmb3IgaW50IG1paV9pbml0KHZvaWQpCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk5OThiZDM3ZWFkODVlOTM5NTM1NTk3MjA3MTBkM2IwNjg1YzgxZTYKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVN1biBBdWcgNSAwMzoxOToxMCAyMDA3IC0wNTAwCgogICAgUmVuYW1lZCBDT05GSUdfTUNGU0VSSUFMIHRvIENPTkZJR19NQ0ZVQVJUCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDdjNGMzNzIyYTM4ZDQwYjBjZjUzN2RkYWU3MmIwNGY0MDg4YjE5MGMKQXV0aG9yOiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDcgMTY6MTc6MDYgMjAwNyArMDgwMAoKICAgIEFkZCBDT05GSUdfQklPU0VNVSBkZWZpbmUgdG8gZ3VhcmQgYWxsIHRoZSBiaW9zIGVtdWxhdG9yIGNvZGUKCiAgICBUaGlzIHBhdGNoIGZpeCB0aGUgY29tcGlsZSBpc3N1ZSBvbiB0aGUgYm9hcmQgdGhhdCBkaWQgbm90IGVuYWJsZSB0aGUgYmlvcyBlbXVsYXRvcgoKY29tbWl0IGJmMTA2MGVhNGY5ZWFhN2U3ZDE2NGE3MGE3ZDZmMjg5Mzk4ODIwNTMKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgQXVnIDcgMTY6MDI6MTMgMjAwNyArMDIwMAoKICAgIEZpeCBtaXNzaW5nIGJyYWNlIGVycm9yIGluIGZzL2ZhdC9mYXQuYwogICAgW3BvaW50ZWQgb3V0IGJ5IFJvZGVyaWsgV2lsZGVuYnVyZ10KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDcwNjcxNGQ5N2EwZDA4ZDU5ZWRhNGRlMjI2OGMzOWY1MDQ2ODgzMjkKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CU1vbiBBdWcgNiAyMzo0MTo1MyAyMDA3ICswMjAwCgogICAgW0ZJWF0gcmVtb3ZlIGN1dGUgY29kZQoKY29tbWl0IGY1MDBkOWZkZWI1NzYyODg2NTZkYWM0MjcwNTJhZDJjNWNhMGFkMWEKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CU1vbiBBdWcgNiAyMzozNToyNiAyMDA3ICswMjAwCgogICAgW0ZJWF0gRml4IHJvbWZzIGNvZGUKCmNvbW1pdCBhYjRiOTU2ZDMxNDNmOGY4MTc0MDg5MDUzZjVkZmFiYmIwNDc2MmIwCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglNb24gQXVnIDYgMjM6MzE6NDkgMjAwNyArMDIwMAoKICAgIFtGSVhdIENvZGluZyBzdHlsZSBjbGVhbnVwIC0gV29sZmdhbmcncyBzdWdnZXN0aW9ucwoKY29tbWl0IDZjMzNjNzg1NTdjYTZmOGRhNjhjMDFjZTMzZTI3ODY5NTE5N2QzZjQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gQXVnIDYgMjM6MjE6MDUgMjAwNyArMDIwMAoKICAgIEZpeGVkIHR5cG8gaW4gUkVBRE1FIChwb2ludGVkIG91dCBieSBNYXJ0aW4gSm9zdCkuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1MzcyMjNhZmE2MWY2NDQ4MGRmMzFjZTQ0MGE5Y2IzODZkZjRhODE0CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gQXVnIDYgMjE6MTA6MTcgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogVXBkYXRlIEFNQ0MgQmFtYm9vIFJFQURNRSBkb2MvUkVBRE1FLmJhbWJvbwoKICAgIEFzIHN1Z2dlc3RlZCBieSBFdWdlbmUgTydCcmllbiA8RXVnZW5lLk8nQnJpZW5AYWR2YW50ZWNoYW10LmNvbT4sCiAgICBoZXJlIGFuIHVwZGF0ZWQgQmFtYm9vIFJFQURNRS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOWM3ZTRiMDYyMTRkYjYxYmIyMWYxYmNiZTU3Yzk3NTE5NjY5YmFhZQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBBdWcgNiAwMjoxNzozNiAyMDA3ICswMjAwCgogICAgQ29kaW5nIHN0eWxlIGNsZWFudXAuIFVwZGF0ZSBDSEFOR0VMT0cuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAyMjE4MzhjYzdlYjE3ODM3MGZmNjJhYTA1OTIwYTU4MmUxMmFjMzIyCkF1dGhvcjogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEp1bCAxMCAwOTowMzoyMiAyMDA3ICswODAwCgogICAgUmVtb3ZlIHRoZSBiaW9zIGVtdWxhdG9yIGZyb20gTUFJIGJvYXJkLgoKICAgIFRoZSBiaW9zIGVtdWxhdG9yIGluIHRoZSBNQUkgYm9hcmQgY2FuIG5vdCBwYXNzIGNvbXBpbGUKICAgIGFuZCBoYXZlIGEgbG90IG9mIGNyYXAgaW4gaXQuIHJlbW92ZSBpdCBhbmQgd2lsbCBoYXZlIGEKICAgIGNsZWFuIGFuZCBzbWFsbCBiaW9zIGVtdWxhdG9yIGluIHRoZSBkcml2ZXJzIGRpcmVjdG9yeQogICAgd2hpY2ggY2FuIGJlIHVlc2VkIGZvciBldmVyeSBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDU2MTgzMzI0MDliYjk2ZjQ0NDhkMTcxMjg5OTM2OWZjODBjMGI0ODkKQXV0aG9yOiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSnVsIDEzIDEyOjE0OjU5IDIwMDcgKzA4MDAKCiAgICBGaXggc29tZSBjb21waWxlIGlzc3VlcyBmb3IgTUFJIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMGY0NjBhMWVlMTQ4YjY0OGVlMjQyYzMxNTc2NTAyODdkNDI5NjI2MApBdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBKdWwgMTMgMTI6MTQ6NTggMjAwNyArMDgwMAoKICAgIENvbmZpZ3VyYXRpb25zIGZvciBBVEkgdmlkZW8gY2FyZCBCSU9TIGVtdWxhdG9yCgogICAgVGhpcyBwYXRjaCBhZGQgZGVmaW5pdGlvbiBvZiB0aGUgQklPUyBlbXVsYXRvciBhbmQgdGhlIEFUSSBmcmFtZWJ1ZmZlcgogICAgZHJpdmVyIGZvciBNUEM4NjQxSFBDTiBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlY2U5MmY4NTA1M2I4ZGY2MTNlZGNmMDViMjZhNDE2Y2JjM2Q2MjljCkF1dGhvcjogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEp1bCA2IDA4OjM0OjU2IDIwMDcgKzA4MDAKCiAgICBUaGlzIGlzIGEgQklPUyBlbXVsYXRvciwgcG9ydGluZyBmcm9tIFNjaVRlY2ggZm9yIHUtYm9vdCwgbWFpbmx5IGZvcgogICAgQVRJIHZpZGVvIGNhcmQgQklPUy4gYW5kIGNhbiBiZSB1c2VkIGZvciB4ODYgY29kZSBlbXVsYXRpb24gYnkgc29tZQogICAgbW9kaWZpY2F0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDUwNzIxODhhY2FiZGUzMTc4ZmFjN2Y1YTU5NzE1MGU2ZTc0ZmQ0MGMKQXV0aG9yOiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSnVsIDYgMDg6MzM6MzMgMjAwNyArMDgwMAoKICAgIFRoaXMgaXMgYSBmcmFtZWJ1ZmZlciBkcml2ZXIgZm9yIEFUSSB2aWRlbyBjYXJkLCBjYW4gd29yayBmb3IgUENJOTIwMCwKICAgIFgzMDAsIFg3MDAsIFg4MDAgQVRJIHZpZGVvIGNhcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDU3MjhiZTM4OWU2NWZkNDdmMzRiMzNjMjU5NjI3MWViNGRiNzUxYWUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gQXVnIDYgMDE6MDE6NDkgMjAwNyArMDIwMAoKICAgIENvZGluZyBzdHlsZSBjbGVhbnVwLiBVcGRhdGUgQ0hBTkdFTE9HLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgODA5MmZlZjRjMjliMzk1OTU4YmI2NDk2NDdkYTdlMzc3NTczMTUxNwpBdXRob3I6IE1hcnRpbiBLcmF1c2UgPE1hcnRpbi5LcmF1c2VAdHFzLmRlPgpEYXRlOglUdWUgRGVjIDEyIDE0OjI2OjAxIDIwMDYgKzAxMDAKCiAgICBBZGQgZnVuY3Rpb25zIHRvIGxpc3Qgb2YgZXhwb3J0ZWQgZnVuY3Rpb25zCgogICAgQWRkaXRpb25hbGx5IGV4cG9ydCB0aGUgZm9sbG93aW5nIGZ1Y3Rpb25zICh0byBtYWtlIHRyYWJfY29uZmlnIGJ1aWxkIGFnYWluKToKICAgIC0gc2ltcGxlX3N0cnRvbCgpCiAgICAtIHN0cmNtcCgpCgogICAgQWxzbyBidW1wIHRoZSBBQkkgdmVyc2lvbiB0byByZWZsZWN0IHRoaXMgY2hhbmdlCgogICAgU2lnbmVkLW9mZi1ieTogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+Cgpjb21taXQgNjNjZWM1ODE0ZmFiNWQyYjFjODY5ODIzMjc0MzM4MDdhNWFjMDI0OQpBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBBdWcgMiAxNDowOTo0OSAyMDA3IC0wNTAwCgogICAgTWFrZSBNUEM4NjQxJ3MgUENJL1BDSS1FIGRyaXZlciBhIGNvbW1vbiBkcml2ZXIgZm9yIG1hbnkgRlNMIHBhcnRzLgoKICAgIEFsbCBvZiB0aGUgUENJL1BDSS1FeHByZXNzIGRyaXZlciBhbmQgaW5pdGlhbGl6YXRpb24gY29kZSB0aGF0CiAgICB3YXMgaW4gdGhlIE1QQzg2NDFIUENOIHBvcnQgaGFzIG5vdyBiZWVuIG1vdmVkIGludG8gdGhlIGNvbW1vbgogICAgZHJpdmVycy9mc2xfcGNpX2luaXQuYy4gIEluIGEgc3Vic2VxdWVudCBwYXRjaCwgdGhpcyB3aWxsIGJlCiAgICB1dGlsaXplZCBieSB0aGUgODV4eCBwb3J0cyBhcyB3ZWxsLgoKICAgIENvbW1vbiBQQ0ktRSBJTU1BUCByZWdpc3RlciBibG9ja3MgZm9yIEZTTCA4NXh4Lzg2eHggYXJlIGFkZGVkLgoKICAgIEFsc28gZW5hYmxlIHRoZSBzZWNvbmQgUENJLUV4cHJlc3MgY29udHJvbGxlciBvbiA4NjQxCiAgICBieSBnZXR0aW5nIGl0cyBCQVRTIGFuZCBDRkdfIHNldHVwIHJpZ2h0LgoKICAgIEZpeGVkIGEgdTE2IHZlbmRvciBjb21waWxlciB3YXJuaW5nIGluIEFIQ0kgZHJpdmVyIHRvby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYTI3NGNhNGY2ZDY4ODMwZTdjOTE2Zjg5NzU2MWNmZjhjNDEwMWMzOApBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJU3VuIEF1ZyA1IDIyOjMzOjA1IDIwMDcgKzAyMDAKCiAgICBbRklYXSBDb2Rpbmcgc3R5bGUgY2xlYW51cAoKY29tbWl0IGFmODM3N2Q0ZWIzYTBhYzVhODMxODMwZDVjZTYzZmJmNjVmZWNiN2YKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CVN1biBBdWcgNSAxNjoxMzozMSAyMDA3ICswMjAwCgogICAgW0ZJWF0gWGlsaW54IFVhcnRsaXRlIGRyaXZlcgogICAgQmVjYXVzZSBQUEM0MDUgY2FuIHVzZSBVQVJUTElURSBzZXJpYWwgaW50ZXJmYWNlIGFuZAogICAgTWljcm9ibGF6ZSBjYW4gdXNlIFVhcnQxNjU1MCBzZXJpYWwgaW50ZXJmYWNlIG5vdCBvbmx5IFVhcnRsaXRlLgoKY29tbWl0IDk4ODg5ZWRkNTBhYWRmODYyMDcxZWI1NjY0NzQ3YWQwZDU2OGEyMGUKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CVN1biBBdWcgNSAxNTo1NDo1MyAyMDA3ICswMjAwCgogICAgW0ZJWF0gQ2hhbmdlIGNvbmZpZ3VyYXRpb24gZm9yIFhVUFYyUCBNaWNyb2JsYXplIGJvYXJkCgpjb21taXQgNTM3MDkxYjRlZWQ5MzAyODY1ZDAzZmVmM2Y3MjEyYjRmZTVjZjI4ZgpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJU3VuIEF1ZyA1IDE1OjUzOjUwIDIwMDcgKzAyMDAKCiAgICBbUEFUQ0hdIEFkZGVkIHN1cHBvcnQgZm9yIFhpbGlueCBFbWFjIGNvbW11bml0eSBkcml2ZXIKCmNvbW1pdCA4NmIxMTZiMWIxZTE2NWNhNDg0MGRhZWZlZDM2ZDJlM2I4NDYwMTczCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJRnJpIEF1ZyAzIDEyOjA4OjE2IDIwMDcgKzAyMDAKCiAgICBjbTFfcXAxIC0+IGNtNTIwMDogc2luZ2xlIFUtQm9vdCBpbWFnZSBmb3IgbW9kdWxlcyBmcm9tIHRoZSBjbTUyMDAgZmFtaWx5LgoKICAgIEFkZCB0aGUgYWJpbGl0eSBmb3IgbW9kdWxlcyBmcm9tIHRoZSBTY2hpbmRsZXIgY201MjAwIGZhbWlseSB0byB1c2UgYQogICAgc2luZ2xlIFUtQm9vdCBpbWFnZToKICAgIC0gcmVuYW1lIGNtMV9xcDEgdG8gY201MjAwCiAgICAtIGFkZCBydW4tdGltZSBtb2R1bGUgZGV0ZWN0aW9uCiAgICAtIHBhcmFtZXRyaXplIFNEUkFNIGNvbmZpZ3VyYXRpb24gYWNjb3JkaW5nIHRvIHRoZSBtb2R1bGUgd2UgYXJlIHJ1bm5pbmcgb24KCiAgICBGZXcgbWlub3IsIGJvYXJkLXNwZWNpZmljIGZpeGVzIGluY2x1ZGVkIGluIHRoaXMgcGF0Y2g6CiAgICAtIGJldHRlciBNQUMgYWRkcmVzcyBoYW5kbGluZwogICAgLSB1cGRhdGVkIGRlZmF1bHQgZW52aXJvbm1lbnQgKCd1cGRhdGUnIGNvbW1hbmQgdXNlcyAre2ZpbGVzaXplfSBub3cpCiAgICAtIGltcHJvdmVkIGVycm9yIG1lc3NhZ2VzIGluIHRoZSBhdXRvLXVwZGF0ZSBjb2RlCiAgICAtIGFsbG93IGJvb3RpbmcgVS1Cb290IGZyb20gUkFNIChDRkdfUkFNQk9PVCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFBpb3RyIEtydXN6eW5za2kgPHBwa0BzZW1paGFsZi5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IGM3ZTcxN2ViYzJiMDQ0ZDdhNzEwNjI1NTJjOWRjMGY1NGVhOWI3NzkKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBBdWcgMyAwNDowNToyNSAyMDA3IC0wNTAwCgogICAgQWRkIE1hcnZlbGwgMTE0OSBQSFkgc3VwcG9ydCB0byB0aGUgVFNFQwoKY29tbWl0IGIxYjU0ZTM1MjAyOGVkMzcwYzNhYTk1ZDZmZGViOWQ2NGM1ZDJmODYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgQXVnIDIgMjE6Mjc6NDYgMjAwNyArMDIwMAoKICAgIENvZGluZyBzdHlsZSBjbGVhbnVwLCB1cGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA2M2UyMjc2NGQyZjg2NTNmNjg4ODhjNjY3ZWI2NWIzOTk2YjUyNjgwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IEF1ZyAyIDEwOjExOjE4IDIwMDcgKzAyMDAKCiAgICBNaW5vciBjbGVhbnVwIG9mIDxib2FyZD5fbmFuZCBidWlsZCBydWxlcy4KCmNvbW1pdCA5Y2E4ZDc5ZGUwOTZjNjViOWI5Yzg2NzI1OWIzZmY0Njg1Zjc3NWVmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgQXVnIDIgMDg6MzM6NTYgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogQ29kZSBjbGVhbnVwCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGM5MjQwOTgxMjIwNmFjNjdhN2ZhN2FhZTI5ODUzOWE5YzM4MDRhNDYKQXV0aG9yOiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KRGF0ZToJVHVlIEp1bCAzMSAxODo1MTo0OCAyMDA3ICswMjAwCgogICAgW3BwYzQ0MFNQZV0gR3JhY2VmdWwgcmVjb3ZlcnkgZnJvbSBtYWNoaW5lIGNoZWNrIGR1cmluZyBQQ0llIGNvbmZpZ3VyYXRpb24KCiAgICBEdXJpbmcgY29uZmlnIHRyYW5zYWN0aW9ucyBvbiB0aGUgUENJZSBidXMgYW4gYXR0ZW1wdCB0byBzY2FuIGZvciBhCiAgICBub24tZXhpc3RlbnQgZGV2aWNlIGNhbiBsZWFkIHRvIGEgbWFjaGluZSBjaGVjayBleGNlcHRpb24gd2l0aCBjZXJ0YWluCiAgICBwZXJpcGhlcmFsIGRldmljZXMuIEluIG9yZGVyIHRvIGF2b2lkIGNyYXNoaW5nIGluIHN1Y2ggc2NlbmFyaW9zIHRoZQogICAgaW5zdHJ1bWVudGVkIHZlcnNpb25zIG9mIHRoZSBjb25maWcgY3ljbGUgcmVhZCByb3V0aW5lcyBhcmUgaW50cm9kdWNlZCwgc28KICAgIHRoZSBleGNlcHRpb25zIGZpeHVwcyBmcmFtZXdvcmsgY2FuIGdyYWNlZnVsbHkgcmVjb3Zlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KICAgIEFja2VkLWJ5OiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgoKY29tbWl0IGRlYzk5NTU4YjllYTc1YTM3OTQwZDA3ZjQxYTM1NjVhNTBiNTRhZDEKQXV0aG9yOiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgSnVsIDMxIDE4OjE5OjU0IDIwMDcgKzAyMDAKCiAgICBbcHBjNHh4XSBTZXBhcmF0ZSBzZXR0aW5ncyBmb3IgUENJZSBidXMgbnVtYmVyaW5nIG9uIDQ0MFNQZSByZXYuQQoKICAgIFRoaXMgYnJpbmdzIGJhY2sgc2VwYXJhdGUgc2V0dGluZ3MgZm9yIFBDSWUgYnVzIG51bWJlcnMgZGVwZW5kaW5nIG9uIGNoaXAKICAgIHJldmlzaW9uLCB3aGljaCBnb3QgZWxpbWluYXRlZCBpbiAyYjM5M2IwZjBhZjg0MDJlZjQzYjI1YzE5NjhiZmQyOTcxNGRkZmZhCiAgICBjb21taXQuIDQ0MFNQZSByZXYuIEEgZG9lcyBOT1Qgd29yayBwcm9wZXJseSB3aXRoIHRoZSBzYW1lIHNldHRpbmdzIGFzIGZvcgogICAgdGhlIHJldi4gQiAobm8gZGV2aWNlcyBhcmUgc2VlbiBvbiB0aGUgYnVzIGR1cmluZyBlbnVtZXJhdGlvbikuCgogICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KCmNvbW1pdCBjZGQ5MTdhNDNkYTZmYTdmYzhmNTRhM2NjOWY0MjBjZTVlY2YzMTk3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IEF1ZyAyIDAwOjQ4OjQ1IDIwMDcgKzAyMDAKCiAgICBGaXggYnVpbGQgZXJyb3JzIGFuZCB3YXJuaW5ncyAvIGNvZGUgY2xlYW51cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGQyZjY4MDA2NjI3ZWRhNmNiNmM3ZjM2NGJkZGY2MjFkYmZkMmZjNjgKQXV0aG9yOiBFdWdlbmUgT0JyaWVuIDxldWdlbmUub2JyaWVuQGFkdmFudGVjaGFtdC5jb20+CkRhdGU6CVR1ZSBKdWwgMzEgMTA6MjQ6NTYgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogVXBkYXRlIEFNQ0MgQmFtYm9vIDQ0MEVQIHN1cHBvcnQKCiAgICBDaGFuZ2VkIHN0b3JhZ2UgdHlwZSBvZiBjZmdfc2ltdWxhdGVfc3BkX2VlcHJvbSB0byBjb25zdAogICAgQ2hhbmdlZCBzdG9yYWdlIHR5cGUgb2YgZ3Bpb190YWIgdG8gc3RhY2sgc3RvcmFnZQogICAgKENhbm5vdCBhY2Nlc3MgZ2xvYmFsIGRhdGEgZGVjbGFyYXRpb25zIGluIC5ic3MgdW50aWwgYWZlciBjb2RlIHJlbG9jYXRpb24pCgogICAgSW1wcm92ZWQgU0RSQU0gdGVzdHMgdG8gY2F0Y2ggcHJvYmxlbXMgd2hlcmUgZGF0YSBpcyBub3QgdW5pcXVlbHkgYWRkcmVzc2FibGUKICAgIChlLmcuIGluY29ycmVjdGx5IHByb2dyYW1tZWQgU0RSQU0gcm93IG9yIGNvbHVtbnMpCgogICAgQWRkZWQgQ09ORklHX1BST0dfU0RSQU1fVExCIHRvIHN1cHBvcnQgQmFtYm9vIFNJTU0vRElNTSBtb2R1bGVzCiAgICBGaXhlZCBBTTI5TFYzMjBEVCAoT3BDb2RlIEZsYXNoKSBzZWN0b3IgbWFwCgogICAgU2lnbmVkLW9mZi1ieTogRXVnZW5lIE9CcmllbiA8ZXVnZW5lLm9icmllbkBhZHZhbnRlY2hhbXQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGVhOWY2YmNlMzgzY2M5ZmJjZGVlMjhiNTgzNjEwOWIxYTZkYmE1NzQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBKdWwgMzEgMDg6Mzc6MDEgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogVXBkYXRlIDQ0MEVQeCBsd21vbjUgYm9hcmQgc3VwcG9ydAoKICAgIC0gQ2xlYXIgRUNDIHN0YXR1cyByZWdzIGFmdGVyIEVDQyBQT1NUIHRlc3QKICAgIC0gU2V0IGRjYnogZm9yIEVDQyBnZW5lcmF0aW9uIHdpdGggY2FjaGVzIGVuYWJsZWQgYXMgZGVmYXVsdAogICAgLSBDb2RlIGNsZWFudXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMjdhNTI4ZmI0MTQzM2M0YzFlMmI1ZDZiZDNmZDhkNzg2MDZmYzcyNApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIEp1bCAzMCAxMTowNDo1NyAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBPbmx5IHByaW50IEVDQyByZWxhdGVkIGluZm8gd2hlbiB0aGUgZXJyb3IgYmlzIGFyZSBzZXQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZTM2MjIwYTRiYWYxZjE4OGJhNjBmMTdlOWQwZjA0MzA2OWIxMzYyYQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglGcmkgSnVsIDI3IDE2OjQ0OjMxIDIwMDcgKzAyMDAKCiAgICBuZXcgRlBHQSBpbWFnZSBmb3IgUExVNDA1IGJvYXJkCgogICAgbmV3IEZQR0EgaW1hZ2UgZm9yIFBMVTQwNSBib2FyZCB3aXRoIGltcHJvdmVkIENvbXBhY3RGbGFzaCB0aW1pbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCA4OTkzZTU0YjZmMzk3OTczNzk0ZjNkNmY0N2QzYjNjMGM5OGRkNGY2CkF1dGhvcjogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KRGF0ZToJRnJpIEp1bCAyNyAxNDo0Mzo1OSAyMDA3ICswMjAwCgogICAgW0FEUzUxMjFdIFN1cHBvcnQgZm9yIHRoZSBBRFM1MTIxIGJvYXJkCgogICAgVGhlIGZvbGxvd2luZyBNUEM1MTIxZSBzdWJzeXN0ZW1zIGFyZSBzdXBwb3J0ZWQ6CgogICAgLSBsb3ctbGV2ZWwgQ1BVIGluaXQKICAgIC0gTk9SIEJvb3QgRmxhc2ggKGNvbW1vbiBDRkkgZHJpdmVyKQogICAgLSBERFIgU0RSQU0KICAgIC0gRkVDCiAgICAtIEkyQwogICAgLSBXYXRjaGRvZwoKICAgIFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEphbiBXcm9iZWwgPHdyckBzZW1paGFsZi5jb20+Cgpjb21taXQgMTg2M2NmYjdiMTAwYmEwZWUzNDAxNzk5NDU3YTAxZGMwNTg3NDVmOApBdXRob3I6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBKdWwgMjcgMTQ6MjI6MDQgMjAwNyArMDIwMAoKICAgIFtQUENdIFJlbW92ZSB1bnVzZWQgTVNSX1VTRVIgZGVmaW5pdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Cgpjb21taXQgZDQwMjRiYjcyZGQ4MTY5NWVjMDk5YjIxOTllZGEwZDI3YzYyM2U2MgpBdXRob3I6IEpvaG4gT3RrZW4gPGpvaG5Ac29mdGFkdmFuY2VzLmNvbT4KRGF0ZToJVGh1IEp1bCAyNiAxNzo0OToxMSAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBBZGQgc3VwcG9ydCBmb3IgQU1DQyA0MDVFUCBUYWlodSBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gT3RrZW4gPGpvaG5Ac29mdGFkdmFuY2VzLmNvbT4KCmNvbW1pdCBiNjYwOTFkZTZjNzM5MDYyMDMxMmMyNTAxZGIyM2Q4MzkxZTdjYWJiCkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDI2IDE1OjA4OjAxIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IGx3bW9uNTogVXBkYXRlIExpbWUgaW5pdGlhbGl6YXRpb24KCiAgICBDaGFuZ2UgTGltZSBTRFJBTSBpbml0aWFsaXphdGlvbiB0byBub3cgc3VwcG9ydCAxMDBNSHogYW5kCiAgICAxMzNNSHogKGlmIGVuYWJsZWQpLiBBbHNvIHRoZSBmcmFtZWJ1ZmZlciBpcyBpbml0aWFsaXplZCB0bwogICAgZGlzcGxheSBhIGJsdWUgcmVjdGFuZ2xlIHdpdGggYSB3aGl0ZSBib3JkZXIuCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDlmMjRhODA4ZjE3ZmMwZjM3YjdmYjQ4MDVmNzM0NzQxMzM1Y2FlY2MKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBKdWwgMjQgMDk6NTI6NTIgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogbHdtb241OiBTdXBwb3J0IGZvciAxMjggTUJ5dGUgTk9SIEZMQVNIIGFkZGVkCgogICAgVGhlIHVzZWQgSW50ZWwgTk9SIEZMQVNIIGNoaXBzIGhhdmUgaW50ZXJuYWxseSB0d28gZGllcywgYW5kIGFyZSBub3cKICAgIHRyZWF0ZWQgYXMgdHdvIHNlcGVyYXRlIGNoaXBzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhZWRmNWJkZTE3OWVjZmJkMGE5NjEzMGQxODk5NmE5NjUxOGI3ODVmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgSnVsIDI0IDA3OjIwOjA5IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBsd21vbjUgaW50ZXJydXB0IGNvbnRyb2xsZXIgc2V0dXAgKHBvbGFyaXR5LCB0cmlnZ2VyLi4uKQoKICAgIEFzIHN1Z2dlc3RlZCBieSBIYWthbiBFcnlpZ2l0LCBoZXJlIGFuIHVwZGF0ZWQgc2V0dXAgZm9yIHRoZSBsd21vbjUKICAgIGludGVycnVwdCBjb250cm9sbGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhNzFkOTZlYWM4MTMwYjUzYTkxZjkzY2QxMGM3MGZjYTBkYjE4ZDUyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVsIDIwIDE1OjAzOjQ0IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBidWcgd2l0aCBkZWZhdWx0IEdQSU8gb3V0cHV0IHZhbHVlCgogICAgQXMgc3BvdHRlZCBieSBNYXR0aGlhcyBGdWNocywgdGhlIGRlZmF1bHQgb3V0cHV0IHZhbHVlcyBmb3IgYWxsIEdQSU8xCiAgICBvdXRwdXRzIHdlcmUgbm90IHNldHVwIGNvcnJlY3RseS4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGlzc3VlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1MzFlM2U4YjgzMWYzNTcwNTY0NDhmYTU3MzEzN2Q1ZmIzNzAwMGZkCkF1dGhvcjogUGF2ZWwgS29sZXNuaWtvdiA8Y29uY29yZEBlbWNyYWZ0LmNvbT4KRGF0ZToJRnJpIEp1bCAyMCAxNTowMzowMyAyMDA3ICswMjAwCgogICAgUE9TVDogQWRkIEVDQyBQT1NUIGZvciB0aGUgbHdtb241IGJvYXJkCgogICAgVGhpcyBwYXRjaCBhZGRzIEVDQyBQb3N0IHRlc3QgZm9yIHRoZSBMd21vbjUgYm9hcmQgYmFzZWQKICAgIG9uIFBQQzQ0MEVQeCB0byBVLUJvb3QuCgogICAgU2lnbmVkLW9mZi1ieTogUGF2ZWwgS29sZXNuaWtvdiA8Y29uY29yZEBlbWNyYWZ0LmNvbT4KICAgIEFja2VkLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGNjMzAyM2I5Zjk1ZDdhYzk1OWE3NjQ0NzFhNjUwMDEwNjJhZWNmNDEKQXV0aG9yOiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgSnVsIDE5IDE3OjEyOjI4IDIwMDcgKzAyMDAKCiAgICBGaXggYnJlYWthZ2Ugb2YgOHh4IGJvYXJkcyBmcm9tIHJlY2VudCBjb21taXQuCgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgbmVnYXRpdmUgY29uc2VxdWVuY2VzIGZvciA4eHggb2YgdGhlIHJlY2VudAogICAgInBwYzR4eDogQ2xlYW4gdXAgNDQwIGV4Y2VwdGlvbnMgaGFuZGxpbmciIGNvbW1pdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgoKY29tbWl0IGM4ODNmNmVhMzJkY2U5MWYwNzY3MGIzYWFmZWNmNmM5OWIxZTUzNDEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBKdWwgMTYgMTM6MTE6MTIgMjAwNyArMDIwMAoKICAgIENvZGluZyBzdHlsZSBjbGVhbnVwCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDg4NDhlYzg1OGY3NGVkNmRhYjA2ZmI2ZDVkZGM5MzNlMGExMzI4YmYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBKdWwgMTYgMTA6MDI6MTIgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogQ29kZSBjbGVhbnVwCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDJhNDlmYzE3ZDA5MDIwZTdlYmQ5NTM2Njk0ZDk5ZDIwZTQxOWZjYjgKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBKdWwgMTYgMTA6MDE6MzggMjAwNyArMDIwMAoKICAgIHBwYzR4eDogQU1DQyBMdWFuIHVzZXMgdGhlIG5ldyBib2FyZHNwZWNpZmljIEREUjIgY29udHJvbGxlciBzZXR1cAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkZjNmMTc0MjJhZWIwM2ZiODFhN2FjOGM3OGQyYjA1ZDA1YWE0Y2Y5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gSnVsIDE2IDEwOjAwOjQzIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFN1cHBvcnQgZm9yIFl1Y2NhIGJvYXJkIHdpdGggNDQwU1BlIFJldiBBIGFkZGVkIHRvIDQ0eF9zcGRfZGRyMi5jCgogICAgVGhlIG5ldyBib2FyZHNwZWNpZmljIEREUjIgY29udHJvbGxlciBjb25maWd1cmF0aW9uIGlzIHVzZWQgZm9yIHRoZSBZdWNjYQogICAgYm9hcmQuIE5vdyB0aGUgWXVjY2EgYm9hcmQgd2l0aCA0NDBTUGUgUmV2LiBBIGNoaXBzIGlzIGFsc28gc3VwcG9ydGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2ZWQxNGFkZGY5N2M4Y2Q4ZjUzMWU5YWU3YjJkM2UyMjJmZmZkNTNlCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gSnVsIDE2IDA5OjU3OjAwIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBuZXcgd2VhayBmdW5jdGlvbnMgdG8gc3VwcG9ydCBib2FyZHNwZWNpZmljIEREUjIgY29uZmlndXJhdGlvbgoKICAgIFRoZSBuZXcgIndlYWsiIGZ1bmN0aW9ucyBkZHJfd3JkdHIoKSBhbmQgZGRyX2Nsa3RyKCkgYXJlIGFkZGVkIHRvIGJldHRlcgogICAgc3VwcG9ydCBub24gZGVmYXVsdCwgYm9hcmRzcGVjaWZpYyBERFIoMikgY29udHJvbGxlciBjb25maWd1cmF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1NzQzYTkyMDdhMzcwYjkwZjA5YjIwZWJkNjExNjdjODA2YjkzN2YzCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gSnVsIDE2IDA4OjUzOjUxIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCByZW1vdmVfdGxiKCkgZnVuY3Rpb24gdG8gcmVtb3ZlIGEgbWVtIGFyZWEgZnJvbSBUTEIgc2V0dXAKCiAgICBUaGUgbmV3IGZ1bmN0aW9uIHJlbW92ZV90bGIoKSBjYW4gYmUgdXNlZCB0byByZW1vdmUgdGhlIFRMQidzIHVzZWQgdG8KICAgIG1hcCBhIHNwZWNpZmljIG1lbW9yeSByZWdpb24uIFRoaXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgZm9yIHRoZSBERFIoMikKICAgIHNldHVwIHJvdXRpbmVzIHdoaWNoIGNvbmZpZ3VyZSB0aGUgU0RSQU0gYXJlYSB0ZW1wb3JhcmlseSBhcyBhIGNhY2hlZAogICAgYXJlYSAoZm9yIHNwZWVkdXAgb24gYXV0by1jYWxpYnJhdGlvbiBhbmQgRUNDIGdlbmVyYXRpb24pIGFuZCBsYXRlcgogICAgbmVlZCB0aGlzIGFyZWEgdW5jYWNoZWQgZm9yIG5vcm1hbCB1c2FnZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMGMwYTljZGExYmRlMzcxMDY1MjA0NzZlZDQ4NmJkNjdlYjhkMzBhZQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJTW9uIEp1bCAxNiAwMDozMTowNyAyMDA3ICswMjAwCgogICAgW1BBVENIXSBTdXBwb3J0IGZvciBYaWxpbnggRW1hY0xpdGUgY29udHJvbGxlcgoKY29tbWl0IDNhNmNhYjg0NGNmNzRmNzY2MzlkNzk1ZTBiZTg3MTdlMDJjODZhZjcKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgSnVsIDE0IDIyOjUxOjAyIDIwMDcgKzAyMDAKCiAgICBVcGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1MjgwZjM1MmM4ZGEzM2IxZDdmYmY0NDg3Njg3MTdkOWUxNmZmOWExCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglTYXQgSnVsIDE0IDEzOjExOjI4IDIwMDcgKzAyMDAKCiAgICBbRklYXSBzdXBwb3J0IGZvciBzaW1wbHkgbWVhc3VyaW5nIHRpbWUKCmNvbW1pdCA5MWJiNGNhNjY1ZDJlMGNmN2Y2MGM0YjViMzcwOTkwMjUwZWMwYzQzCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglTYXQgSnVsIDE0IDEyOjQxOjIzIDIwMDcgKzAyMDAKCiAgICBbRlNdIEFkZGVkIHN1cHBvcnQgZm9yIFJPTUZTCgpjb21taXQgMDExNTk1MzA3NzMxYTdhNjdhNzQ0NWQxMDdjMjc5ZDAzMWU4YWI5NwpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0Bwb2xsdXguZGVueC5kZT4KRGF0ZToJU2F0IEp1bCAxNCAwMTowNjo1OCAyMDA3ICswMjAwCgogICAgW1BDUzQ0MEVQXQktIGZpeCBjb21waWxlIGVycm9yLCBpZiBCVUlMRF9ESVIgaXMgdXNlZAoKY29tbWl0IDVhMmYxMDk4ZDgxYWQ1OGIzMDllNWU1NThkMDQ5MjY0MzE2NmE3OTkKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CVNhdCBKdWwgMTQgMDA6MTg6NDggMjAwNyArMDIwMAoKICAgIFtQQVRDSF0gU3VwcG9ydCB0aW1lIHdpdGhvdXQgdGltZXIKCmNvbW1pdCBhNDc2Y2EyYWMyMjE3ZGRkMDVhMmJmMGM1MTQwNzU4MTRiMTBhM2MwCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglGcmkgSnVsIDEzIDIxOjQzOjU1IDIwMDcgKzAyMDAKCiAgICBbUEFUQ0hdIFJlbW92ZSBwcm9ibGVtIHdpdGggZGlzYWJsZWQgQkFSUkVMIFNISUZURVIKCmNvbW1pdCA1NWUyNmFkNjIxMDdkMmYxNGY3NTdkZTNhZTBiMTRiOWFhN2FlZDk0CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglGcmkgSnVsIDEzIDIxOjQxOjQ0IDIwMDcgKzAyMDAKCiAgICBbRklYXSBjb3JyZWN0IGhlbHAgZm9yIHJzcHIKCmNvbW1pdCBmYWQ2MzQwNzE1NGY0NjI0NmNlODBkNTNhOWM2NjlhNDQzNjJhYzY3CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQHBvbGx1eC5kZW54LmRlPgpEYXRlOglGcmkgSnVsIDEzIDA5OjU0OjE3IDIwMDcgKzAyMDAKCiAgICBtYWtlIHNob3dfYm9vdF9wcm9ncmVzcyAoKSB3ZWFrLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDkwNzkwMjQ3MjM5MWI2Y2ExODc2ZWMzMDA2ODc1NjJlY2FmNDU5YjEKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAcG9sbHV4LmRlbnguZGU+CkRhdGU6CUZyaSBKdWwgMTMgMDg6MjY6MDUgMjAwNyArMDIwMAoKICAgIFtQQ1M0NDBFUF0JLSBUaGUgRElBRyBMRURzIGFyZSBub3cgYmxpbmtpbmcsIGlmIGFuIGVycm9yIG9jY3VyCgkJLSBmaXggY29tcGlsZSBlcnJvciwgaWYgQlVJTERfRElSIGlzIHVzZWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBhMmUxYzcwOThjZjk1NzQzODZiMGM5Njg0MWRmYzhlYTVjYzkzNTc4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDEyIDE2OjMyOjA4IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IENoYW5nZSByZWNlaXZlIGJ1ZmZlciBoYW5kbGluZyBpbiB0aGUgNHh4IGVtYWMgZHJpdmVyCgogICAgVGhpcyBjaGFuZ2UgZml4ZXMgYSBidWcgaW4gdGhlIHJlY2VpdmUgYnVmZmVyIGhhbmRsaW5nLCB0aGF0CiAgICBjb3VsZCBsZWFkIHRvIHByb2JsZW1zIHVwb24gaGlnaCBuZXR3b3JrIHRyYWZmaWMgKGJyb2FkY2FzdHMuLi4pLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyMzlmMDVlZTRkZDRjZmUwYjUwZjI1MWI1MzNkY2ViZTllNjdjMzYwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IEp1bCAxMiAwMTo0NTozNCAyMDA3ICswMjAwCgogICAgVXBkYXRlIENIQU5HRUxPRywgbWlub3IgY29kaW5nIHN0eWxlIGNsZWFudXAuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1YTU2YWYzYjUyMmJhNDdmYjMzYTNmZWU4NGQyM2JmMWU1NDI5NjU0CkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSnVuIDggMTY6NDE6MTggMjAwNyAtMDUwMAoKICAgIFJlbW92ZSBlcnJvbmVvdXMgZXJyYXRhIGNvZGUgZnJvbSBNYXJ2ZWwgODhFMTExMVMgZHJpdmVyCgogICAgVGhlIE1hcnZlbCA4OEUxMTExUyBkcml2ZXIgZm9yIHRoZSBUU0VDIHdhcyBjb3BpZWQgZnJvbSB0aGUKICAgIDg4RTExMDEgZHJpdmVyLCBhbmQgaW5jbHVkZWQgYSBmaXggZm9yIGFuIGVycmF0dW0gd2hpY2ggZG9lcyBub3QKICAgIGV4aXN0IG9uIHRoYXQgcGFydC4gIE5vdyBpdCBpcyByZW1vdmVkCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk4MmVmY2YyM2ZkMDM2NDdlMDFlMmZiZTI4YTdhMzYyMzkxNTZjYzAKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdW4gNSAxNjozODo0NCAyMDA3IC0wNTAwCgogICAgRnJvbTogZXJhbiBsaWJlcnR5IDxlcmFuLmxpYmVydHlAZ21haWwuY29tPgoKICAgIGFkZHMgdGhlIHJlc2V0IHJlZ2lzdGVyIHRvIDg1eHggaW1tYXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBFcmFuIExpYmVydHkgPGVyYW4ubGliZXJ0eUBnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDNlYzBkOTQzYTA0NWJkYjk5ZTE1OWU3YmJjNzc0MzBlMDlmMTFkNwpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE1heSAxMCAxNzo1MDowMSAyMDA3IC0wNTAwCgogICAgUG9saXNoZWQgdGhlIDg1eHggQURTIGNvbmZpZyBmaWxlcwoKICAgIE1hZGUgdGhlIGJvb3QgY29tbWFuZHMgdXNlIGRldmljZSB0cmVlcyBieSBkZWZhdWx0LgogICAgQWxzbyBtb3ZlZCB0aGUgcmFtZGlzayB0byAxMDAwMDAwIChJIHRoaW5rIHRoZSBwcmV2aW91cyBhZGRyZXNzCiAgICB3YXMgZ2V0dGluZyBvdmVycmlkZGVuIGR1cmluZyBib290KS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYmZiMzdiMzJkMWIwYjAzZjE4MDc3ZGJhNDljYzY2YTZlNzZmYTAzOApBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXkgOSAxMTowMzozMiAyMDA3IC0wNTAwCgogICAgODU0NGRzOiBGaXggTWFrZWZpbGUgYWZ0ZXIgbW92aW5nIHBpeGlzIHRvIGJvYXJkL2ZyZWVzY2FsZS4KCiAgICBUaGUgT0JKVFJFRSAhPSBTUkNUUkVFIGJ1aWxkIHNjZW5hcmlvIHdhcyBicm9rZW4uCiAgICBUaGlzIGZpeGVzIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDJhM2NlZTQzYzNiNzFmYTViOGQ5MWRiMTlmMDUwNjc4NjUyOTBmM2UKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXkgOSAwMDo1NDoyMCAyMDA3IC0wNTAwCgogICAgdHNlYzogRml4IFBIWSBjb2RlIHRvIG1hdGNoIGZpcnN0IGRyaXZlcgoKICAgIEphcnJvbGQgV2VuIG5vdGljZWQgdGhhdCB0aGUgZ2VuZXJpYyBQSFkgY29kZSBhbHdheXMgbWF0Y2hlcwogICAgdW5kZXIgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24uICBDaGFuZ2UgaXQgc28gdGhlIGZpcnN0IG1hdGNoCiAgICB3aW5zLCBhbmQgKm9ubHkqIHVua25vd24gUEhZcyB0cmlnZ2VyIHRoZSBnZW5lcmljIGRyaXZlcgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjY2MwOTFhYWM2MWEzOGNkOTk4ZDU3NWQ5MmY3MjMyZTI1NmQ2MzEyCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgTWF5IDggMTc6Mjc6NDMgMjAwNyAtMDUwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBDUE0gZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbiB0byA4NTYwIEFEUwoKICAgICogQWRkcyBjb2RlIHRvIG1vZGlmeSBDUE0gZnJlcXVlbmNpZXMKICAgICogQ2xlYW5zIHVwIHRoZSBjb25maWcgZmlsZSB0byAjZGVmaW5lIFRTRUMgYW5kIChmb3Igbm93KSAjdW5kZWYgRkNDCiAgICAqIEFkZHMgdGhlIE1JSSBjb21tYW5kIGZvciBhbGwgODU2MCBBRFMgY29uZmlndXJhdGlvbnMKICAgICogVXBkYXRlcyBjb25maWcgZmlsZSB0byBwcm92aWRlIGNvbnZlbmllbmNlIGNvbW1hbmRzIGZvciBib290aW5nCiAgICAgIHdpdGggYSBkZXZpY2UgdHJlZQoKICAgIFNpZ25lZC1vZmYtYnk6IFZpdGFseSBCb3JkdWcgPHZib3JkdWdAcnUubXZpc3RhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3NTA3ZDU2Y2NhZjdhYWUxYzQ3NDM0MmE5YTU1NDAxNjVjZDdlOWQ5CkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgTWF5IDggMTc6MjM6MDIgMjAwNyAtMDUwMAoKICAgIEZpeCBNYXJ2ZWxsIDg4ZTExNDUgUEhZIGluaXQgY29kZQoKICAgIEZpeCBhIGJ1ZyBpbiB0aGUgTWFydmVsbCA4OGUxMTQ1IFBIWSBpbml0IGNvZGUgaW4gdGhlIFRTRUMgZHJpdmVyCiAgICB3aGVyZSB0aGUgcmVzZXQgd2FzIGJlaW5nIGRvbmUgYWZ0ZXIgdGhlIGVycmF0YSBjb2RlIGluc3RlYWQgb2YKICAgIGJlZm9yZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPGhhaXlpbmcud2FuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDVkYzIxMGRlYzViYWNlOThhNTBiNmJhOTA1MzQ3ODkwMDkxYTliYjAKQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVsIDExIDE0OjUyOjE2IDIwMDcgLTA1MDAKCiAgICBBZGQgc2ltcGxlIGFnZW50L2VuZC1wb2ludCBjb25maWd1cmF0aW9uIGluIFBDSSBBdXRvQ29uZmlnIGZvciBQQ0lfQ0xBU1NfUFJPQ0VTU09SX1BPV0VSUEMuCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlOGI4NWYzYmE0Y2Q4OTMwZTBhMmZlYTIxMDBjODE1ZDY0MjAxNzY1CkF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1bCAxMSAxNDo1MjowOCAyMDA3IC0wNTAwCgogICAgcGNpYXV0byBzZXR1cCBicmlkZ2UKCiAgICBUaGUgUDJQIGJyaWRnZSBidXMgbnVtYmVycyBwcm9ncmFtbWVkIGludG8gdGhlIGRldmljZSBhcmUgcmVsYXRpdmUgdG8KICAgIGhvc2UtPmZpcnN0X2J1c25vLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNTcxZjQ5ZmE3MTcwMDRjYTQyNjhiNGUyNDA1N2VmYzdiZjlmOTg3YgpBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKdWwgMTEgMTQ6NTI6MDEgMjAwNyAtMDUwMAoKICAgIFN1cHBvcnQgUENJZSBleHRlbmRlZCBjb25maWcgcmVnaXN0ZXJzCgogICAgRlNMIFBDSWUgYmxvY2sgaGFzIGV4dGVuZGVkIGNmZyByZWdpc3RlcnMgaW4gdGhlIDEwMCBhbmQgNDAwIHJhbmdlLgogICAgRm9yIGV4YW1wbGUsIHRvIHJlYWQgdGhlIExUU1NNIHJlZ2lzdGVyOiBwY2kgZGlzcGxheSA8YnVzbj4uMCA0MDQgMQoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYmE1ZmViMTI1ODFiYjI5MTJjZTMwMWU0ODY2YjcxZjg0NmU5ZmMwNwpBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKdWwgMTEgMTQ6NTE6NDggMjAwNyAtMDUwMAoKICAgIE1pbm9yIGltcHJvdmVtZW50cyB0byBkcml2ZXJzL3BjaV9hdXRvLmMKCiAgICAtIE1ha2UgcGNpYXV0b197cHJlLHBvc3R9c2Nhbl9zZXR1cF9icmlkZ2Ugbm9uLXN0YXRpYwogICAgLSBBZGRlZCBwaHlzaWNhbCBhZGRyZXNzIGRpc3BsYXkgaW4gZGVidWcgbWVzc2FnZXMuCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0MGU4MWFkZGFiN2JiNzRkMjBkZGY2ODFjZTliYWJjODgwYTgyOGVlCkF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1bCAxMSAxNDo1MTozNSAyMDA3IC0wNTAwCgogICAgU3RhcnQgcGNpIGhvc2Ugc2NhbiBmcm9tIGhvc2UtPmN1cnJlbnRfYnVzbm8uCgogICAgRW5zdXJlIGhvc2UtPmN1cnJlbnRfYnVzbm8gaXMgbm90IGxlc3MgdGhhbiBmaXJzdF9idXNuby4gIFRoaXMgZml4ZXMKICAgIGJyb2tlbiBib2FyZCBjb2RlIHdoaWNoIGxlYXZlcyBjdXJyZW50X2J1c25vPTAgd2hlbiBmaXJzdF9idXNubyBpcwogICAgZ3JlYXRlciB0aGFuIDAgZm9yIHRoZSBjYXNlcyB3aXRoIG11bHRpcGxlIGNvbnRyb2xsZXJzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzg2NWIxZmI3ODQzYTA4YWQ0OWE2MzE5YTM2NDE1NzUyMjc2ZmY0OApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEp1bCAxMSAxMjoxMzo1MyAyMDA3ICswMjAwCgogICAgRml4IHNvbWUgY29tcGlsZSBwcm9ibGVtcyBpbnRyb2R1Y2VkIGJ5IHRoZSBsYXRlc3QgQ0ZHX0NNRF94eHggY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmYTFkZjMwODkyNmE2ZjcwZTM1MDRjNTc1MTRlZjI3YWMzMWZkMTNhCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIEp1bCAxMSAyMDoxMTowNyAyMDA3ICswMjAwCgogICAgQ00xLlFQMTogU3VwcG9ydCBmb3IgdGhlIFNjaGluZGxlciBDTTEuUVAxIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBpb3RyIEtydXN6eW5za2kgPHBwa0BzZW1paGFsZi5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDk2ZTFkNzViZTgxOTNjYTc5ZTQyMTVhMzY4YmY5ZDdmMjM2MjQ1MGYKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVdlZCBKdWwgMTEgMTg6Mzk6MTEgMjAwNyArMDIwMAoKICAgIFtQQ1M0NDBFUF0JLSBTaG93IG9uIHRoZSBESUFHIExFRHMsIGlmIHRoZSBTSEExIGNoZWNrIGZhaWxlZAoJCS0gbm93IHRoZSBGbGFzaCBTVCBNMjlXMDQwQiBpcyBzdXBwb3J0ZWQgKG5vdCB0ZXN0ZWQpCgkJLSBmaXggdGhlICJsZWQiIGNvbW1hbmQKCQktIGZpeCBjb21waWxlIGVycm9yLCBpZiBCVUlMRF9ESVIgaXMgdXNlZAoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IGU5NTE0NzUxY2ZhNWNjZTYxZWE2OTlmYTBkM2ViMzc4OThhNWVlYjUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVN1biBKdWwgOCAxMzo0NDoyNyAyMDA3ICswMjAwCgogICAgRml4IG1hbGxvYyBwcm9ibGVtIGludHJvZHVjZWQgd2l0aCB0aGUgcmVsb2NhdGlvbiBmaXh1cCBmb3IgdGhlIFBQQyBwbGF0Zm9ybQoKICAgIFRoZSByZWxvY2F0aW9uIGZpeHVwIGRpZG4ndCBoYW5kbGUgdGhlIG1hbGxvYyBwb2ludGVyIGluaXRpYWxpemF0aW9uCiAgICBjb3JyZWN0bHkuIFRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBwcm9ibGVtLiBUZXN0ZWQgc3VjY2Vzc2Z1bGx5IG9uIDR4eC4KICAgIFRoZSByZWxvY2F0aW9uIGZpeHVwIHBhdGNoZXMgZm9yIDR4eCB3aWxsIGZvbGxvdyBzb29uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwZGNhODc0ZGI2MjcxOGU0MTI1MzY1OWU2MGYzYTFkZTdlYjQxOGNlCkF1dGhvcjogVHNpQ2h1bmcgPHRjbGlld0BHb2t1Lihub25lKT4KRGF0ZToJVHVlIEp1bCAxMCAxNTo0NTo0MyAyMDA3IC0wNTAwCgogICAgQ2FjaGUgdXBkYXRlIGFuZCBhZGRlZCBDRkdfVU5JRllfQ0FDSEUKCiAgICBFbmFibGVkIGNhY2hlIGluIGNwdV9pbml0X2YoKSBmb3IgZmFzdGVyIGZsYXNoIHRvIG1lbSBhbGxvY2F0aW9uLiBVcGRhdGVkIGNhY2hlIGhhbmRsaW5nIGluIHN0YXJ0LlMuIEFwcGxpZWQgY2FjaGUgaW52YWxpZGF0ZSBpbiBmZWNfc2VuZCgpIGFuZCBmZWNfcmVjdigpLiBBZGRlZCBDRkdfVU5JRllfQ0FDSEUgZm9yIENGIFYzIG9ubHkuCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgPHRjbGlld0BHb2t1Lihub25lKT4KCmNvbW1pdCA1MmIwMTc2MDRhOGY0ZDRhNzk1ODgwZWY2ZTc4NjFkN2YyZjFiMDA1CkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVsIDUgMjM6MzY6MTYgMjAwNyAtMDUwMAoKICAgIFVwZGF0ZSBoZWFkZXIgZmlsZS4gSW5jbHVkZSBkdGltZXJfaW50cl9zZXR1cCgpLiBDaGFuZ2VkIHRpbWVyIGRpdmlkZXIgdG8gZ2xvYmFsIGRlZmluZS4KCiAgICBJbmNsdWRlIGltbWFwLmggYW5kIHRpbWVyLmguIE1vdmVkIGR0aW1lciBpbnRlcnJ1cHQgc2V0dXAgdG8gZHRpbWVyX2ludHJfc2V0dXAoKSBmcm9tIGNwdS9tY2Y1MzJ4L2ludGVycnVwdHMuYy4gQ2hhbmdlZCAoQ0ZHX0NMSyAvMTAwMDAwMCkgLTEgPDwgOCB0byBDRkdfVElNRVJfUFJFU0NBTEVSCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDVjZGMwN2M3ZWY4ZjA4ZWE1NWQzYzQ3ZWQ5MjIxZDkxYWE2ZDVmYWMKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgNSAyMzozMToyNSAyMDA3IC0wNTAwCgogICAgVXBkYXRlIGhlYWRlciBmaWxlcwoKICAgIEluY2x1ZGUgaW1tYXAuaCBhbmQgcmVuYW1lZCBtY2ZydGMuaCB0byBydGMuaAoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyODcwZTk4YWM4ZTU1NTNlOTE4N2IxMmE0N2U1ZjQ2YmFiYjUzOTkwCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVsIDUgMjM6Mjk6MjEgMjAwNyAtMDUwMAoKICAgIEFkZCBtY2ZmZWNfaW5pdGlhbGl6ZSgpCgogICAgQWRkZWQgbWNmZmVjX2luaXRpYWxpemUoKSBpbiBldGhfaW5pdGlhbGl6ZSgpCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ1YTI1YmZkMGM1MmY4YTNmYTEzNzIxNmJjOTRkMzJmOTBiZWRjNWQKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgNSAyMzoyNzo0MCAyMDA3IC0wNTAwCgogICAgVXBkYXRlIGhlYWRlciBmaWxlIGFuZCBjbGVhbiB1cAoKICAgIEluY2x1ZGUgaW1tYXAuaAoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwY2VlOWM2NjMxODYwMmM4NTZhODk5YWU1ZmE3NTc5Y2NiYTY0NDNhCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVsIDUgMjM6MjM6MTUgMjAwNyAtMDUwMAoKICAgIE5ldyB1YXJ0IHN0cnVjdHVyZSBhbmQgZGVmaW5lcwoKICAgIFNlcGVyYXRlZCBmcm9tIG1jZnVhcnQuaAoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhOTBlNzlkZThkOTllOWM5ZDY5ZDYwYmZmZjlmMjRjMzM3MTY1OTAwCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVsIDUgMjM6MjI6MzEgMjAwNyAtMDUwMAoKICAgIE5ldyB0aW1lciBzdHJ1Y3R1cmUgYW5kIGRlZmluZXMKCiAgICBTZXBlcmF0ZWQgZnJvbSBtY2Z0aW1lci5oCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGUwNGFjYjJlYmE0NzgyNDg5NDE3MjQwZWZmNzZlMjBlMTc2YWVjMTAKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgNSAyMzoyMTowOSAyMDA3IC0wNTAwCgogICAgUmVuYW1lIG1jZnJ0YyB0byBydGMKCiAgICBTaW5jZSBpdCBpcyBhbHJlYWR5IGluIG02OGsgZm9sZGVyLCB1bi1uZWNlc3NhcnkgdG8gcGFkIG1jZi4gUmVwbGFjZWQgaW1tYXBfNTMyOS5oIGFuZCBtNTMyOS5oIHRvIGltbWFwLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMmJkODA2ZmU0ZmMyMzk1OGI4Zjc4Nzc4MTk5ZTdhNmUzZjhmNmFkNQpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1bCA1IDIzOjE3OjM2IDIwMDcgLTA1MDAKCiAgICBSZW5hbWUgbWNmc2VyaWFsLmMuIFVwZGF0ZSBpbmNsdWRlIGhlYWRlcgoKICAgIFJlbmFtZWQgbWNmc2VyaWFsLmMgdG8gbWNmdWFydC5jLiBNb2RpZmllZCBNYWtlZmlsZSBmb3IgbWNmdWFydC5vIGZyb20gbWNmc2VyaWFsLm8uIFJlcGxhY2UgaW1tYXBfNTMyOS5oIGFuZCBtNTMyOS5oIHRvIGltbWFwLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjIyMDhmYmMyZWI5ZGUzZjQyODViZmFhMDIxYzZlYmFlMTZjOWIwZQpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1bCA1IDIzOjEzOjU4IDIwMDcgLTA1MDAKCiAgICBIZWFkZXIgZmlsZSB1cGRhdGUsIGNsZWFuIHVwIGFuZCBjYWNoZSBoYW5kbGluZwoKICAgIFJlcGxhY2VkIGltbWFwXzUzMjkuaCBhbmQgbTUzMjkuaCB3aXRoIGltbWFwLmguIEluY2x1ZGVkIGNhY2hlX2ludmFsaWQuCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDJlM2YyNWFlOTA4MmRhYTlmNWQxODFkYjQ1ZGZiYzJlNTJjZTBmOTcKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgNSAyMzoxMDo0MCAyMDA3IC0wNTAwCgogICAgQ3JlYXRlIGludGVycnVwdHMuYyBhbmQgbW9kaWZ5IE1ha2VmaWxlCgogICAgaW50ZXJydXB0X2luaXQoKSBhbmQgZHRpbWVyX2ludHJfc2V0dXAoKSBhcmUgcGxhY2VkIGluIGludGVycnVwdHMuYy4gQWRkZWQgaW50ZXJydXB0cy5vIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGRkZDEwNGYxZWQ2NTVlZGE1MGMwNmJhNjM2MjM3YTgzZWQ5NDNmMzQKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgNSAyMzowNjo1NSAyMDA3IC0wNTAwCgogICAgRW5hYmxlIEljYWNoZQoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiOWJmM2RlMzc3YjJiYWU3MGM5ODNjOWI5N2ZlYWU5MTQ5OTllNzM1CkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVsIDUgMjM6MDU6MzEgMjAwNyAtMDUwMAoKICAgIFVwZGF0ZSBoZWFkZXIgZmlsZSBhbmQgc29tZSBjbGVhbiB1cAoKICAgIFJlcGxhY2VkIGltbWFwXzUzMjkuaCBhbmQgbTUzMjkuaCB3aXRoIGltbWFwLmguIFJlbW92ZWQgd2hpdGVzcGFjZXMuCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDg0YTAxNWI1MmVjODIwYTVhZTE3MzcxN2Q3ODUxNmRlNzMxYzg5YzIKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgNSAyMzowMzoyOCAyMDA3IC0wNTAwCgogICAgVXBkYXRlIGhlYWRlciBmaWxlIGFuZCBlbmFibGUgaWNhY2hlCgogICAgUmVwbGFjZWQgaW1tYXBfNTMyOS5oIGFuZCBtNTMyOS5oIHdpdGggaW1tYXAuaC4gRW5hYmxlZCBpY2FjaGVfZW5hYmxlKCkgaW4gY3B1X2luaXRfcigpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3YTE3ZTc1OWM3YThiNThlOTEwZGFmNTRkZjYxMWU5NGZjOGNhMDc0CkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVsIDUgMjM6MDE6MjIgMjAwNyAtMDUwMAoKICAgIFVwZGF0ZSBoZWFkZXIgZmlsZSBhbmQgcmVtb3ZlZCBpbnRlcnJ1cHRfaW5pdCgpCgogICAgUmVwbGFjZSBpbW1hcF81MzI5LmggYW5kIG01MzI5Lmggd2l0aCBpbW1hcC5oLiBSZW1vdmVkIGludGVycnVwdF9pbml0KCkgYW5kIHBsYWNlZCBpdCBpbiBpbnRlcnJ1cHRzLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgM2I2MzU0OTJjOTViZDBkNmUwOGY5M2Y2OTk4MjFjYmExZjYwMmE2NApBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1bCA1IDIyOjU3OjQ2IDIwMDcgLTA1MDAKCiAgICBVcGRhdGUgZm9yIGZsYXNoLm8gYW5kIG1paS5vCgogICAgUmVtb3ZlZCBmbGFzaC5vIGFuZCBhZGRlZCBtaWkubwoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjNWRlZDI3NWQ4MzllNGZmNzlmNDE3MThkNTBhODM1ZDk4OWY1N2JjCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVsIDUgMjI6NTY6MTkgMjAwNyAtMDUwMAoKICAgIE1JSSBmdW5jdGlvbnMgY2FsbHMuCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQyN2M4MTQxMDQ1NjBlMjliZGExNDk1NWM2NzcwMzI0NWFhYWE1YjQKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgNSAyMjo1NDo0MiAyMDA3IC0wNTAwCgogICAgUmVtb3ZlZCBNSUkgZnVuY3Rpb25zIGFuZCByZXBsYWNlZCBpbW1hcF81MzI5LmggYW5kIG01MzI5Lmggd2l0aCBpbW1hcC5oLgoKICAgIFRoZSByZW1vdmVkIE1JSSByb3V0aW5lcyB3aWxsIGJlIHBsYWNlZCBpbiBtaWkuYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMDFhNzkzZmRhMDljNjNkZjVhNDk2ZjA5ZGMxYzdjYjI2ZTY3NTFhMgpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1bCA1IDIyOjUxOjA1IDIwMDcgLTA1MDAKCiAgICBEdXBsaWNhdGUgY29kZQoKICAgIFRoZXJlIGlzIGEgQ29tbW9uIEZsYXNoIEludGVyZmFjZSBEcml2ZXIgZXhpc3RlZC4gVG8gdXNlIHRoZSBDRkkgZHJpdmVyLCBkZWZpbmUgQ0ZHX0ZMQVNIX0NGSSBpbiBjb25maWd1cmF0aW9uIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDI3NDQzNTRhODQzN2I4Zjc4ZGIxNzhlMzA2NjAyMTU2ODhiZmY1NzAKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgNSAyMjo0NjozOCAyMDA3IC0wNTAwCgogICAgU2VwZXJhdGUgb2xkIHN0cnVjdHVyZSBkZWZpbmVzIGFuZCBuZXcgc3RydWN0dXJlIGRlZmluZXMKCiAgICBSZW1vdmVkIG5ldyB1YXJ0IHN0cnVjdHVyZSBhbmQgZGVmaW5lcyB0byB1YXJ0LmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMmJkNTg2MDhkYmNmZjg4OTBjYTlhMGM1OWU4NjFhYzI0ZjhiYjIzMApBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1bCA1IDIyOjQ1OjAxIDIwMDcgLTA1MDAKCiAgICBTZXBlcmF0ZSBvbGQgc3RydWN0dXJlIGRlZmluZXMgYW5kIG5ldyBzdHJ1Y3R1cmUgZGVmaW5lcwoKICAgIE5ldyB0aW1lciBzdHJ1Y3R1cmUgYW5kIGRlZmluZXMgd2lsbCBtb3ZlIHRvIG5ldyB0aW1lci5oCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDhjZDVjZDZkZTRmZjkyZTAzOTc4MzM4ZWQ3YWViM2NlN2I3Yjk3ODQKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgNSAyMjo0MjoyMyAyMDA3IC0wNTAwCgogICAgQ2xlYW4gdXAKCiAgICBSZW1vdmVkIHdoaXRlc3BhY2UKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNTE0ODcxZjU2NWRkOGJkMTEyMWU0YTNhYzE2NjVhNzkwZTIwYjhmMgpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1bCA1IDIyOjQxOjI0IDIwMDcgLTA1MDAKCiAgICBDbGVhbiB1cAoKICAgIFJlcGxhY2VkIHdoaXRlc3BhY2Ugd2l0aCB0YWJzCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ4ZGJmZWFiYzdhZmZmZTMwNjA5YTQ0ODlmMTBjMjJjYjY3ZWY3ZGQKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgNSAyMjozOTowNyAyMDA3IC0wNTAwCgogICAgQ3JlYXRlIG5ldyBoZWFkZXIgZmlsZSBhbmQgbW92ZSBwZXJpcGhlcmFscyBiYXNlIGFkZHJlc3MgZnJvbSBjb25maWdzIGZpbGUgdG8gbmV3IGhlYWRlciBmaWxlLgoKICAgIENyZWF0ZSBuZXcgaGVhZGVyIGZpbGUgdG8gaW5jbHVkZSBpbW1hcF81eHh4LmggYW5kIG01eHh4LmggYW5kIHRvIHNoYXJlIGFtb25nIGRyaXZlcnMgd2l0aG91dCB1cGRhdGUgaW4gZHJpdmVyIGZpbGUgZWFjaCBwcm9jZXNzb3IgaXMgYWRkZWQuIE1vdmVkIHBlcmlwaGVyYWxzIGJhc2UgYWRkcmVzcyBhbmQgZGVmaW5lcyBmcm9tIGNvbmZpZ3MgZmlsZSB0byBpbW1hcC5oLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiZTI5NmUzMWM0NDExZjk2ZDljYjNkMmFmYzhmY2IwMDY4NjdhYmZhCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVsIDUgMjI6MjQ6NTggMjAwNyAtMDUwMAoKICAgIFJldmVydCBmaWxlIG1vZGUKCiAgICBDaGFuZ2VkIE1BS0VBTEwgZmlsZSBtb2RlIHRvIGV4ZWN1dGFibGUsIHJlbW92ZWQgZXhlY3V0YWJsZSBmaWxlIG1vZGUgZnJvbSBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiM2FmZjBjYjllY2YyMzZkN2U4YzkzNzYxZGQxZGFkZjY4MzdhNTgyCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEp1bCAxMCAxMToxOTo1MCAyMDA3IC0wNTAwCgogICAgZGlzay8gZG9jLyBsaWJfKi8gYW5kIHRvb2xzLzogUmVtb3ZlIGxpbmdlcmluZyByZWZlcmVuY2VzIHRvIENGR19DTURfKiBzeW1ib2xzLgoKICAgIEZpeGVkIHNvbWUgYnJva2VuIGluc3RhbmNlcyBvZiAiI2lmZGVmIENNRF9DRkdfSURFIiB0b28uCiAgICBUaG9zZSBhbHdheXMgZXZhbHVhdGVkIFRSVUUsIGFuZCB0aHVzIHdlcmUgYWx3YXlzIGNvbXBpbGVkCiAgICBldmVuIHdoZW4gSURFIHJlYWxseSB3YXNuJ3QgZGVmaW5lZC93YW50ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkZGI1ZDg2ZjAyMTViY2I2YzI5MzUxMGM1MGViMDUwZTkyODgzYjdhCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEp1bCAxMCAxMToxMzoyMSAyMDA3IC0wNTAwCgogICAgZHJpdmVycy86IFJlbW92ZSBsaW5nZXJpbmcgcmVmZXJlbmNlcyB0byBDRkdfQ01EXyogc3ltYm9scy4KCiAgICBGaXhlZCBzb21lIGJyb2tlbiBpbnN0YW5jZXMgb2YgIiNpZmRlZiBDTURfQ0ZHX0lERSIgdG9vLgogICAgVGhvc2UgYWx3YXlzIGV2YWx1YXRlZCBUUlVFLCBhbmQgdGh1cyB3ZXJlIGFsd2F5cyBjb21waWxlZAogICAgZXZlbiB3aGVuIElERSByZWFsbHkgd2Fzbid0IGRlZmluZWQvd2FudGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjQwYTdmM2UzODg4YjQyYTQzNjc0YjA5OWU1NDcwMDIyYzhjNTQ0YwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdWwgMTAgMTE6MDc6NTYgMjAwNyAtMDUwMAoKICAgIGZzLzogUmVtb3ZlIGxpbmdlcmluZyByZWZlcmVuY2VzIHRvIENGR19DTURfKiBzeW1ib2xzLgoKICAgIEZpeGVkIHNvbWUgYnJva2VuIGluc3RhbmNlcyBvZiAiI2lmZGVmIENNRF9DRkdfSURFIiB0b28uCiAgICBUaG9zZSBhbHdheXMgZXZhbHVhdGVkIFRSVUUsIGFuZCB0aHVzIHdlcmUgYWx3YXlzIGNvbXBpbGVkCiAgICBldmVuIHdoZW4gSURFIHJlYWxseSB3YXNuJ3QgZGVmaW5lZC93YW50ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2MTBmMmU5YzI4YTljMTAxZTA5ZmExYjc4MTQzY2Y1ZjAwZWQxNTkzCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEp1bCAxMCAxMTowNTowMiAyMDA3IC0wNTAwCgogICAgbmV0LzogUmVtb3ZlIGxpbmdlcmluZyByZWZlcmVuY2VzIHRvIENGR19DTURfKiBzeW1ib2xzLgoKICAgIEZpeGVkIHNvbWUgYnJva2VuIGluc3RhbmNlcyBvZiAiI2lmZGVmIENNRF9DRkdfSURFIiB0b28uCiAgICBUaG9zZSBhbHdheXMgZXZhbHVhdGVkIFRSVUUsIGFuZCB0aHVzIHdlcmUgYWx3YXlzIGNvbXBpbGVkCiAgICBldmVuIHdoZW4gSURFIHJlYWxseSB3YXNuJ3QgZGVmaW5lZC93YW50ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5MDI1MzE3ODgzNzYwNDZkYTIxMmFmZDE2NjFjZmZiNjJmM2RhYTFjCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEp1bCAxMCAxMTowMjo0NCAyMDA3IC0wNTAwCgogICAgY29tbW9uLzogUmVtb3ZlIGxpbmdlcmluZyByZWZlcmVuY2VzIHRvIENGR19DTURfKiBzeW1ib2xzLgoKICAgIEZpeGVkIHNvbWUgYnJva2VuIGluc3RhbmNlcyBvZiAiI2lmZGVmIENNRF9DRkdfSURFIiB0b28uCiAgICBUaG9zZSBhbHdheXMgZXZhbHVhdGVkIFRSVUUsIGFuZCB0aHVzIHdlcmUgYWx3YXlzIGNvbXBpbGVkCiAgICBldmVuIHdoZW4gSURFIHJlYWxseSB3YXNuJ3QgZGVmaW5lZC93YW50ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkMzliNTc0MTU4MzhjNzNmYjBhMzdlY2E4NGRlM2M2OGJhOTkwNTg2CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEp1bCAxMCAxMDo0ODoyMiAyMDA3IC0wNTAwCgogICAgYm9hcmQvW2otel0qOiBSZW1vdmUgbGluZ2VyaW5nIHJlZmVyZW5jZXMgdG8gQ0ZHX0NNRF8qIHN5bWJvbHMuCgogICAgRml4ZWQgc29tZSBicm9rZW4gaW5zdGFuY2VzIG9mICIjaWZkZWYgQ01EX0NGR19JREUiIHRvby4KICAgIFRob3NlIGFsd2F5cyBldmFsdWF0ZWQgVFJVRSwgYW5kIHRodXMgd2VyZSBhbHdheXMgY29tcGlsZWQKICAgIGV2ZW4gd2hlbiBJREUgcmVhbGx5IHdhc24ndCBkZWZpbmVkL3dhbnRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDc3YTMxODU0NWQ1N2FlZmE4NDQ3NTI0NjViOTRjN2UwOWEzZjI2ZDAKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSnVsIDEwIDEwOjM5OjEwIDIwMDcgLTA1MDAKCiAgICBib2FyZC9bQS1aYS1pXSo6IFJlbW92ZSBsaW5nZXJpbmcgcmVmZXJlbmNlcyB0byBDRkdfQ01EXyogc3ltYm9scy4KCiAgICBGaXhlZCBzb21lIGJyb2tlbiBpbnN0YW5jZXMgb2YgIiNpZmRlZiBDTURfQ0ZHX0lERSIgdG9vLgogICAgVGhvc2UgYWx3YXlzIGV2YWx1YXRlZCBUUlVFLCBhbmQgdGh1cyB3ZXJlIGFsd2F5cyBjb21waWxlZAogICAgZXZlbiB3aGVuIElERSByZWFsbHkgd2Fzbid0IGRlZmluZWQvd2FudGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMDY4YjYwYTBlYjdlNzNiMjQzY2E1NTM5OWYyYTdkZjc2ZTJjM2YzZApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdWwgMTAgMTA6Mjc6MzkgMjAwNyAtMDUwMAoKICAgIGNwdS8gcnRjLyBpbmNsdWRlLzogUmVtb3ZlIGxpbmdlcmluZyByZWZlcmVuY2VzIHRvIENGR19DTURfKiBzeW1ib2xzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMDc5YTEzNmMzNTg4ODE0Nzg0NTYxZDZlNDg1Njk3MGVlODJkNmUyYQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdWwgMTAgMTA6MTI6MTAgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlncy9bcC16XSogKyBtaXNjOiBDbGVhbnVwIEJPT1RQIGFuZCBsaW5nZXJpbmcgQ0ZHX0NNRF8qLgoKICAgIEV4cGxpY2l0bHkgYWRkIGluIGRlZmF1bHQgQ09ORklHX0JPT1RQXyogb3B0aW9ucyB3aGVyZSBjbWRfY29uZmRlZnMuaAogICAgdXNlZCB0byBiZSBpbmNsdWRlZCBidXQgQ09ORklHX0JPT1RQX01BU0sgd2FzIG5vdCBkZWZpbmVkLgoKICAgIFJlbW92ZSBsaW5nZXJpbmcgcmVmZXJlbmNlcyB0byBDRkdfQ01EXyogc3ltYm9scy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDdmNWMwMTU3NzQwMGM3NGNjNWJhYzc0ZjQxZGQwZDNjNzlkZjYyM2MKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSnVsIDEwIDA5OjM4OjAyIDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3MvW2ctb10qOiBDbGVhbnVwIEJPT1RQIGFuZCBsaW5nZXJpbmcgQ0ZHX0NNRF8qLgoKICAgIEV4cGxpY2l0bHkgYWRkIGluIGRlZmF1bHQgQ09ORklHX0JPT1RQXyogb3B0aW9ucyB3aGVyZSBjbWRfY29uZmRlZnMuaAogICAgdXNlZCB0byBiZSBpbmNsdWRlZCBidXQgQ09ORklHX0JPT1RQX01BU0sgd2FzIG5vdCBkZWZpbmVkLgoKICAgIFJlbW92ZSBsaW5nZXJpbmcgcmVmZXJlbmNlcyB0byBDRkdfQ01EXyogc3ltYm9scy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDgwZmY0Zjk5Yjg0YjY0ZWRjYTNmZDEwZGEzNjVlYzE0OTNiZTFjOTUKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSnVsIDEwIDA5OjI5OjAxIDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3MvW2EtZV0qOiBDbGVhbnVwIEJPT1RQIGFuZCBsaW5nZXJpbmcgQ0ZHX0NNRF8qLgoKICAgIEV4cGxpY2l0bHkgYWRkIGluIGRlZmF1bHQgQ09ORklHX0JPT1RQXyogb3B0aW9ucyB3aGVyZSBjbWRfY29uZmRlZnMuaAogICAgdXNlZCB0byBiZSBpbmNsdWRlZCBidXQgQ09ORklHX0JPT1RQX01BU0sgd2FzIG5vdCBkZWZpbmVkLgoKICAgIFJlbW92ZSBsaW5nZXJpbmcgcmVmZXJlbmNlcyB0byBDRkdfQ01EXyogc3ltYm9scy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGExYWEwYmI1MDJlMjVmZDU5OGI1ZTBjY2RmYjJjMTc0OTIxZDcxNGEKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSnVsIDEwIDA5OjIyOjIzIDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3MvW1AtWl0qOiBDbGVhbnVwIEJPT1RQIGFuZCBsaW5nZXJpbmcgQ0ZHX0NNRF8qLgoKICAgIEV4cGxpY2l0bHkgYWRkIGluIGRlZmF1bHQgQ09ORklHX0JPT1RQXyogb3B0aW9ucyB3aGVyZSBjbWRfY29uZmRlZnMuaAogICAgdXNlZCB0byBiZSBpbmNsdWRlZCBidXQgQ09ORklHX0JPT1RQX01BU0sgd2FzIG5vdCBkZWZpbmVkLgoKICAgIFJlbW92ZSBsaW5nZXJpbmcgcmVmZXJlbmNlcyB0byBDRkdfQ01EXyogc3ltYm9scy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDY1OWUyZjY3MzYyMzJhMDhhY2NhODc4NWMyMDZlMmI0ZDljZDA3ZDcKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSnVsIDEwIDA5OjEwOjQ5IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3MvW0otT10qOiBDbGVhbnVwIEJPT1RQIGFuZCBsaW5nZXJpbmcgQ0ZHX0NNRF8qLgoKICAgIEV4cGxpY2l0bHkgYWRkIGluIGRlZmF1bHQgQ09ORklHX0JPT1RQXyogb3B0aW9ucyB3aGVyZSBjbWRfY29uZmRlZnMuaAogICAgdXNlZCB0byBiZSBpbmNsdWRlZCBidXQgQ09ORklHX0JPT1RQX01BU0sgd2FzIG5vdCBkZWZpbmVkLgoKICAgIFJlbW92ZSBsaW5nZXJpbmcgcmVmZXJlbmNlcyB0byBDRkdfQ01EXyogc3ltYm9scy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDExNzk5NDM0YzVmZjE1YTYxMjU3N2JiMWFkMWY0ZWExYTA1OTVlNGIKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSnVsIDEwIDA5OjAyOjU3IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3MvW0EtSV0qOiBDbGVhbnVwIEJPT1RQIGFuZCBsaW5nZXJpbmcgQ0ZHX0NNRF8qLgoKICAgIEV4cGxpY2l0bHkgYWRkIGluIGRlZmF1bHQgQ09ORklHX0JPT1RQXyogb3B0aW9ucyB3aGVyZSBjbWRfY29uZmRlZnMuaAogICAgdXNlZCB0byBiZSBpbmNsdWRlZCBidXQgQ09ORklHX0JPT1RQX01BU0sgd2FzIG5vdCBkZWZpbmVkLgoKICAgIFJlbW92ZSBsaW5nZXJpbmcgcmVmZXJlbmNlcyB0byBDRkdfQ01EXyogc3ltYm9scy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFmZTgwZDc5YzVjNGU1MmQzNDEwYTdhYjRiODUxNWRhMDk1Y2RhYjMKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDkgMjI6MDg6MzQgMjAwNyAtMDUwMAoKICAgIEZpbmFsbHkgcmV0aXJlIGNtZF9jb25mZGVmcy5oIGFuZCBDT05GSUdfQk9PVFBfTUFTSyEKCiAgICBBbGwgb2YgdGhlIGNob2ljZXMgZm9yIENPTkZJR19CT09UUF8gYXJlIG5vdyBkb2N1bWVudGVkIGluCiAgICB0aGUgUkVBRE1FIGZpbGUuICBZb3UgbXVzdCBub3cgaW5kaXZpZHVhbGx5IHNlbGVjdCBleGFjdGx5CiAgICB0aGUgc2V0IHRoYXQgeW91IHdhbnQgdXNpbmcgYSBzZXJpZXMgb2YKCSNkZWZpbmUgQ09ORklHX0JPT1RQXzx4PgogICAgc3RhdGVtZW50cyBpbiB0aGUgYm9hcmQgcG9ydCBjb25maWcgZmlsZXMgbm93LgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDNiOGMxYTc0M2RjZDMxNjI1Yzk5ZTZhNDQ1OTBmMjA3ZWIwMDAyOApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdWwgOSAyMTo1NzozMSAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzL1ttLXpdKjogRGlyZWN0bHkgdXNlIENPTkZJR19CT09UUF8qIHN5bWJvbHMgcmF0aGVyIHRoYW4gQ09ORklHX0JPT1RQX01BU0suCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyZmQ5MGNlNTc1YjAyZDE4OWNiZjQ0M2M4NTMwOWJjZDAwMWFhMzkzCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEp1bCA5IDIxOjQ4OjI2IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3MvW2EtbV0qOiBEaXJlY3RseSB1c2UgQ09ORklHX0JPT1RQXyogc3ltYm9scyByYXRoZXIgdGhhbiBDT05GSUdfQk9PVFBfTUFTSy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDM3ZDRiYjcwNTg2NjU5ZGVkZWYxNjU4Y2UxYmVkMDcxYmUwOThhZWMKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDkgMjE6Mzg6MDIgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlncy9bVC1aXSo6IERpcmVjdGx5IHVzZSBDT05GSUdfQk9PVFBfKiBzeW1ib2xzIHJhdGhlciB0aGFuIENPTkZJR19CT09UUF9NQVNLLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTgyMjVlOGRkMTk1MGJkNmRiZjM1MDExZTQzNmRiN2Y0NzRjMTg3ZApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdWwgOSAyMTozMToyNCAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzL1tQLVNdKjogRGlyZWN0bHkgdXNlIENPTkZJR19CT09UUF8qIHN5bWJvbHMgcmF0aGVyIHRoYW4gQ09ORklHX0JPT1RQX01BU0suCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3YmUwNDRlNGVhNjQ0YjBlZjFjNDg2ZGFkYzFhNGMyNjY1YjQzNzRkCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEp1bCA5IDIxOjI0OjE5IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3MvW0gtTl0qOiBEaXJlY3RseSB1c2UgQ09ORklHX0JPT1RQXyogc3ltYm9scyByYXRoZXIgdGhhbiBDT05GSUdfQk9PVFBfTUFTSy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDVkMmViZTFiM2VmMDA1NWM2NjFiYjFhMGQyNTJiZjI1MjM4MDA2OWYKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDkgMjE6MTY6NTMgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlncy9bQS1HXSo6IERpcmVjdGx5IHVzZSBDT05GSUdfQk9PVFBfKiBzeW1ib2xzIHJhdGhlciB0aGFuIENPTkZJR19CT09UUF9NQVNLLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjU1ZjdmOGQ4M2YzNjAyMWFiMWYwZTNkNzM4ZjVkOGM4MDgzYTdlMwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdWwgOSAxOToxMjozMCAyMDA3IC0wNTAwCgogICAgUmV0aXJlIENPTkZJR19DT01NQU5EUyBmaW5hbGx5LgogICAgU3RyaXAgb2xkIENGR19DTURfKiBzeW1ib2xzIG91dC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGI1NTAxZjdkNzIwZmVkOTlhYjBiNDJjODNmNWRlYTUyODY4Y2UwMDcKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDkgMTk6MTA6MDMgMjAwNyAtMDUwMAoKICAgIFVwZGF0ZSBSRUFETUUuKiB0byByZWZlcmVuY2UgbmV3IENPTkZJR19DTURfKiBuYW1lcyBub3cuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0NDMxMjgzYzdlNmQ1NGFlMTgwZDQ2NmU1MWJmMmQ5NzQ3MWEwYWQ5CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEp1bCA5IDE5OjA2OjAwIDIwMDcgLTA1MDAKCiAgICBjcHUvbSo6IFJlbW92ZSBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIENPTkZJR19DT01NQU5EUwoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgM2ExZWQxZTFmOTIyYzQxOWJiNzFmN2RmNDk0OWQ3ODNhZGUzNjlmYQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdWwgOSAxODo1NzoyMiAyMDA3IC0wNTAwCgogICAgY3B1L1s3YS1sbi16XSo6IFJlbW92ZSBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIENPTkZJR19DT01NQU5EUwoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYWIzYWJjYmFiZDg0MDkyOGZiMWViNTEyMjExOGNhNDY2YjVlNTAxMwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdWwgOSAxODo0NToxNiAyMDA3IC0wNTAwCgogICAgYm9hcmQvW3Etel0qOiBSZW1vdmUgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byBDT05GSUdfQ09NTUFORFMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDNmZTAwMTA5YTVmMTJkZTU1YjZlMjViMWY5OGRmYzI0YmM5MDkwYzkKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDkgMTg6Mzg6MzkgMjAwNyAtMDUwMAoKICAgIGJvYXJkL1ttLXBdKjogUmVtb3ZlIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gQ09ORklHX0NPTU1BTkRTCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjNTA4YTRjZWZkOGE5NTNmYzY0OTU3NjUwNTA2YTAzNWU2ZTNkOWQxCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEp1bCA5IDE4OjMxOjI4IDIwMDcgLTA1MDAKCiAgICBib2FyZC9bZi1sXSo6IFJlbW92ZSBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIENPTkZJR19DT01NQU5EUwoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjkzMDcyNjJmOGE5ZjNiNWM5ZTE1YTYwNjdlYWRjMTc0MDcxNDZmNgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdWwgOSAxODoyNDo1NSAyMDA3IC0wNTAwCgogICAgYm9hcmQvW2QtZV0qOiBSZW1vdmUgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byBDT05GSUdfQ09NTUFORFMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGZjZWMyZWI5M2UxMjY0MDAwMDk3MjkzMjhlNzk3ZjEyYmM5NGYxZmQKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDkgMTg6MTk6MDkgMjAwNyAtMDUwMAoKICAgIGJvYXJkL1tBLVphLWNdKjogUmVtb3ZlIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gQ09ORklHX0NPTU1BTkRTCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhNTkzODE0ZjJiZTBjOWNkYzMxMzNjZDU1MGIxNjdiOGE5ODgzMjhmCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEp1bCA5IDE4OjEwOjUwIDIwMDcgLTA1MDAKCiAgICBydGMvOiBSZW1vdmUgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byBDT05GSUdfQ09NTUFORFMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDY3MzUwNTY4ZjlkNDZlNjZjMjE4MjlmMzUxM2IzZGIwY2FlYjk0OGIKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDkgMTg6MDU6MzggMjAwNyAtMDUwMAoKICAgIGxpYl97YXJtLGF2cjMyLGJsYWNrZmluLGdlbmVyaWMsaTM4Nn0vOiBSZW1vdmUgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byBDT05GSUdfQ09NTUFORFMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDdkZWY2YjM0ZjkxMGYwOGQ3ZWYwYTE0NjQ2ZGEwNjc3MTkyMzdjYTIKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDkgMTg6MDI6MTEgMjAwNyAtMDUwMAoKICAgIGxpYl97bTY4ayxtaWNyb2JsYXplLG1pcHMscHBjfS86IFJlbW92ZSBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIENPTkZJR19DT01NQU5EUwoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZGQ2MGQxMjIzYjk5YTg4YTcyMTZmM2UwNDFmZTQwNjM0YWQ0YzJiYgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdWwgOSAxNzo1Njo1MCAyMDA3IC0wNTAwCgogICAgZnMvOiBSZW1vdmUgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byBDT05GSUdfQ09NTUFORFMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGM5MTg5OGJiYzUwNWFmZjNlMTJhODA3YWY4OGU3NmRhMThlZmI3ZWUKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDkgMTc6NDY6MDkgMjAwNyAtMDUwMAoKICAgIHRvb2xzLzogUmVtb3ZlIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gQ09ORklHX0NPTU1BTkRTCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2NDNkMWFiMjM5NjA5NTBiNTJlMGEyODAzYzJkM2VhNGM1NThmYTAxCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEp1bCA5IDE3OjQ1OjE0IDIwMDcgLTA1MDAKCiAgICBuZXQvOiBSZW1vdmUgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byBDT05GSUdfQ09NTUFORFMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGNiNTFjMGJmODhmOTVhMWJjYTY4MzI0YjAxMjZmOGVlZDhiNDMyNzMKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDkgMTc6Mzk6NDIgMjAwNyAtMDUwMAoKICAgIGRyaXZlcnMvW24tel0qOiBSZW1vdmUgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byBDT05GSUdfQ09NTUFORFMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDA3ZDM4YTE3ZTk2NGFlYzRjNzgyN2YwZWU5YTU4M2JjOGNjMWFkNmIKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDkgMTc6MzA6MDEgMjAwNyAtMDUwMAoKICAgIGRyaXZlcnMvW2EtbV0qOiBSZW1vdmUgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byBDT05GSUdfQ09NTUFORFMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGNkZTVjNjRkMTdjZjQ4MzRhYTdiNWMzNzNmMjg4YmM3ZGFkMjdiMjkKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDkgMTc6MjI6MzcgMjAwNyAtMDUwMAoKICAgIGRpc2svOiBSZW1vdmUgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byBDT05GSUdfQ09NTUFORFMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDYzOTIyMWM3NmM4ODIxNWJkNTVhZjgzYWQxNzRmYzMwZDE5NDBmOGYKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDkgMTc6MTU6NDkgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvOiBSZW1vdmUgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byBDT05GSUdfQ09NTUFORFMKICAgIE1vc3RseSByZW1vdmVkIGZyb20gY29tbWVudHMgaGVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRlZjIxOGY2ZmRmOGQ3NDdmNDU4OWRhNTI1MmIwMDRlN2QyYzI4NzYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgSnVsIDEwIDAwOjAxOjI4IDIwMDcgKzAyMDAKCiAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cDsgdXBkYXRlIENIQU5HRUxPRy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGM4NjAzY2ZiZDQ1NzMzNzlhNjA3NmM5YzIwODU0NWJhMmJiZjAxOWEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBKdWwgOSAxMTowMDoyNCAyMDA3ICswMjAwCgogICAgU21hbGwgY29kaW5nIHN0eWxlIGNsZWFudXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMGY5MmM3ZTdjOWE2Mjc1NWIxNDU3ZDNjNDZmOTNjOGMxZjZjMTlmYwpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglNb24gSnVsIDkgMTA6MTA6MDggMjAwNyArMDIwMAoKICAgIE1pZ3JhdGUgZXNkIDQwNUVQIGJvYXJkcyB0byBuZXcgTkFORCBzdWJzeXN0ZW0KCiAgICBSZW1vdmUgdW51c2VkIENGR19OQU5EX0xFR0FDWSBkZWZpbmUKCiAgICBUaGVzZSBib2FyZHMgdG8gbm90IGhhdmUgTkFORC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCBiZDg0ZWU0YzIwMjBjM2E2ODYxZjRiYjJlN2VhMGZiNDlmODJlODAzCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CU1vbiBKdWwgOSAxMDoxMDowNiAyMDA3ICswMjAwCgogICAgTWlncmF0ZSBlc2QgNDA1RVAgYm9hcmRzIHRvIG5ldyBOQU5EIHN1YnN5c3RlbQoKICAgIE1pZ3JhdGUgZXNkIDQwNUVQIGJvYXJkcyB0byBuZXcgTkFORCBzdWJzeXN0ZW0KCiAgICAtY2xlYW51cAogICAgLXVzZSBjb3JyZWN0IGlvIGFjY2Vzc29ycyAoaW4vb3V0X2JlMzIoKSkKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCBlMDlmN2FiNTc0OWMzNDVmOTI0ZGEyNzJiZWEwNTIxYTczYWY1YjExCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CU1vbiBKdWwgOSAxMDoxMDowNCAyMDA3ICswMjAwCgogICAgTWlncmF0ZSBlc2QgNDA1RVAgYm9hcmRzIHRvIG5ldyBOQU5EIHN1YnN5c3RlbQoKICAgIFRoaXMgcGF0Y2ggcHJlcGFyZXMgdGhlIG1pZ3JhdGlvbiBmcm9tIHRoZSBsZWdhY3kgTkFORCBkcml2ZXIKICAgIHRvIFUtQm9vdCdzIG5ldyBOQU5EIHN1YnN5c3RlbSBmb3IgZXNkIGJvYXJkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCBjMzUxN2Y5MTlkMGY2MTY1MGNmMzAyN2ZkNGZhZjBmNjMxMTQyZjZjCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIEp1bCA4IDE4OjEwOjA4IDIwMDcgLTA1MDAKCiAgICBjb21tb24vKiBub24tY21kKjogUmVtb3ZlIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gQ09ORklHX0NPTU1BTkRTCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmZDliY2FhMzViZTY0ZmU0MWE0MjIzZmRiNmVjZGJhZDUyNDcwYjM5CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIEp1bCA4IDE4OjA1OjM5IDIwMDcgLTA1MDAKCiAgICBjb21tb24vY21kX1twLXhdKjogUmVtb3ZlIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gQ09ORklHX0NPTU1BTkRTLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYzc2ZmU0NzQyNWFmYzdkNWQ2NzBmZjA1Mzk4MjNjODVkNjVkOWM0MgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVN1biBKdWwgOCAxODowMjoyMyAyMDA3IC0wNTAwCgogICAgY29tbW9uL2NtZF9baS1uXSo6IFJlbW92ZSBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIENPTkZJR19DT01NQU5EUy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGJhYTI2ZGI0MTEzNjc5YjgwOTcwZmY0NDdkOTFjYzEwMjE3NzQyYTYKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglTdW4gSnVsIDggMTc6NTE6MzkgMjAwNyAtMDUwMAoKICAgIGNvbW1vbi9jbWRfW2FmXSo6IFJlbW92ZSBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIENPTkZJR19DT01NQU5EUy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGFmMDc1ZWU5NmU1MmRkYTdiNmJjYTZjOTM3NTg4YWVhYWVjNWYyY2QKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglTdW4gSnVsIDggMTc6MDI6MDEgMjAwNyAtMDUwMAoKICAgIENsZWFyIHVwIGNvbmZ1c2lvbiBvdmVyIHRoZSBDTURfUE9TVCBhbmQgUE9TVF9ESUFHIG1lc3MuCgogICAgRm9yIHNvbWUgcmVhc29uLCBDT05GSUdfUE9TVCBwZXJtZWF0ZWQgYXMgQ09ORklHX0NNRF9QT1NUX0RJQUcKICAgIHdoZW4gaXQgcmVhbGx5IG1lYW5zIGp1c3QgQ09ORklHX0NNRF9ESUFHLglUaGVyZSBpcyBubyBDTURfUE9TVC4KICAgIENsZWFyIHRoaXMgbWVzcyB1cCBzb21lLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjM2MzE0ODcxMDVhNTdhYjdjYmFkZmMyNmVmYmFmOTY3NjI3NTAxOApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVN1biBKdWwgOCAxNTo0NTowOCAyMDA3IC0wNTAwCgogICAgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gdGhlIG9sZCBjbWRfY29uZmRlZnMuaCBpbmNsdWRlIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhMjJkNGRhOTVlMjAwNDliNGRhYTFjMmEwMjJmNjFlOGE3MmYyZmI2CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIEp1bCA4IDE1OjQyOjU5IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IENhdGNoIHNvbWUgQ09ORklHX0NNRF8qIGNvbnZlcnNpb24gc3RyYWdnbGVycy4KCiAgICBVc2UgbmV3IENPTkZJR19DTURfKiBpbiBsd21vbjUuaCBib2FyZCBjb25maWcgZmlsZS4KICAgIEZpeCBDT05GSUdfQ01EXyogdHlwbyBicmFpbmRhbWFnZSBpbiBvbWFwMTUxMGlubi5oCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhNTU2MjkwMTY2MWJkNDI4ZjdlNWZlYjMzM2Y3OTYzNzJjYjgxMDE5CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIEp1bCA4IDE1OjMxOjU3IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgW1RVVldaWVpdKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmZTdmNzgyZDViOGM2NGEwMTk1YzY4YzMxYTBhMTFkNGY2NDEzNTVlCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIEp1bCA4IDE1OjAyOjQ0IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgUyogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZTlhMGY4ZjE1YzExZjMzNzk2N2FhMDYwMGFkNmU4YWYzMzAzN2Y1MApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVN1biBKdWwgOCAxNToxMjo0MCAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIFIqIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDEyYWE5ZmQyM2Q3MjRiZDZhYjg4ZTFiYWEwZGIzNTEzM2EyNzMwM2YKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglTdW4gSnVsIDggMTQ6NTU6MDcgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBRKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhY2YwMjY5Nzc5NDIyZjNlMTQ3ZDJkZGZiNDk5YzlmNmZmMTBhZDVlCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIEp1bCA4IDE0OjQ5OjQ0IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgUCogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZTE4YTEwNjFhODYzMGNiNjc5OTVmZGY5OWFmZDNmYjUwZDFiMTg3ZApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVN1biBKdWwgOCAxNDoyMTo0MyAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIFtOT10qIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDgzNTNlMTM5YmZhZDkwNTljNTRmNWIyNDIxZjFhMzA5MGUxNWEyZTIKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglTdW4gSnVsIDggMTQ6MTQ6MTcgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBNKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzNDhmMjU4ZjI0MjUzNDMzZTRhMjMwMmEwYmJjZWI2NzQwYTY3MjQ2CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIEp1bCA4IDEzOjQ2OjE4IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgW0lKS0xdKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2YzRmNGRhOWJmYzlmOTQwM2Y1NGZjZTY3OGVkMDM2NGI3Yzg2YTZhCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIEp1bCA4IDEwOjA5OjM1IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgSCogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjBhMDg3NmI1MTA2YjM0MjIwZTQ1OWMyMDhiYmY2NDgwNzMzMDZjMApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVNhdCBKdWwgNyAyMTowNDoyNiAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIEYqIGFuZCBHKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkY2FhNzE1NjI4MjZhMjQ2NmU4OTRjODY4ZDEzMjUwOWRjZGE4NDQ0CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU2F0IEp1bCA3IDIwOjU2OjA1IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgRSogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgM2MzMjI3ZjNjNzM3NTAyMzExYjI1YjcyMDg0NTczOTAxY2JiZjE3ZApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVNhdCBKdWwgNyAyMDo0MDo0MyAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIEQqIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ5Y2Y3ZThlZTdlZjk0M2ZkZmU4NjZjZTI4NDEwYjBiZmJmNmEyNmMKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVsIDUgMTk6NTI6MzUgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBDKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkZThiMmE2ZTMzMjk4ZGNkYjEwYmRkYTQ4ZGIyNWU1M2MzMDg5ZWJhCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1bCA1IDE5OjMyOjA3IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgQiogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNDk4ZmY5YTIyODQ4NWJkNGI5ZjIzZDA2NmJhZGEyNjhmOWFkZDFkZApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgNSAxOToxMzo1MiAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIEEqIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaW5jZSBBRFM4NjAuaCBpbmNsdWRlcyAiYm9hcmQvZmFkcy9mYWRzLmgiIHdpdGggcmFtaWZpY2F0aW9ucwogICAgb24gdGhlIENPTkZJR19DT01NQU5EIHRyZWF0bWVudCwgaXQgdG9vIGhhcyB0byBiZSBhZGp1c3RlZCB0bwogICAgZXhjbHVkZSBhbHJlYWR5IGNvbmZpZ3VyZWQgY29tbWFuZHMgaW4gdGhpcyBzYW1lIGNvbW1pdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDEwZTAzODkzMmYyMmVlODBlYmQ1M2RlMzEyNTMxZTcwZTY1OTBhMmYKQXV0aG9yOiBUaG9tYXMgS25vYmxvY2ggPGtub2Jsb2NoQHNpZW1lbnMuY29tPgpEYXRlOglGcmkgSnVsIDYgMTQ6NTg6MzkgMjAwNyArMDIwMAoKICAgIFtOQU5EXSBCYWQgYmxvY2sgc2tpcHBpbmcgZm9yIGNvbW1hbmQgbmJvb3QKCiAgICBUaGUgb2xkIGltcGxlbWVudGF0aW9uIG9mIGNvbW1hbmQgbmJvb3QgZG9lcyBub3Qgc3VwcG9ydCByZWFkaW5nIHRoZSBpbWFnZSBmcm9tCiAgICBOQU5EIGZsYXNoIHdpdGggc2tpcHBpbmcgb2YgYmFkIGJsb2Nrcy4gVGhlIHBhdGNoIGltcGxlbWVudHMgYSBuZXcgdmVyc2lvbiBvZgogICAgdGhlIG5ib290IGNvbW1hbmQ6IGJ5IGNhbGxpbmcgbmJvb3QuamZmczIgZnJvbSB0aGUgdS1ib290IGNvbW1hbmQgbGluZSB0aGUKICAgIGNvbW1hbmQgd2lsbCBsb2FkIHRoZSBpbWFnZSBmcm9tIE5BTkQgZmxhc2ggd2l0aCByZXNwZWN0IHRvIGJhZCBibG9ja3MgKGJ5IHVzaW5nCiAgICBuYW5kX3JlYWRfb3B0cygpKS4gVGhpcyBpcyBzaW1pbGFyIHRvIGUuZy4gdGhlIE5BTkQgcmVhZCBjb21tYW5kOiAibmFuZAogICAgcmVhZC5qZmZzMiAuLi4iLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBLbm9ibG9jaCA8a25vYmxvY2hAc2llbWVucy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMzM0MDQzZjYwMWE5MGFjNTNlNWVjYzg0NmZiYjczYTFlZjM4Y2IxZgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEp1bCA2IDEyOjI2OjUxIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBsd21vbjUgZGVmYXVsdCBlbnZpcm9ubWVudAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1ZDE4NzQzMGEwNTVkNjJmMTdjYTg0ZDc1ZTcyNDU0MzlkMWY3ZTc1CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVsIDYgMTE6NDg6MjQgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogVXBkYXRlIGx3bW9uNSBib2FyZAoKICAgIEFkZCB1bmxvY2s9eWVzIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGRlZmF1bHQgdmFyaWFibGVzIHRvIHVubG9jawogICAgdGhlIENGSSBmbGFzaCBieSBkZWZhdWx0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2YjBhMTc0YTFlNmY1NWUxZjVhMWZiYjIyM2NkYWQ3NjQ1YTQ2NDZlCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVsIDYgMDk6NDU6NDcgMjAwNyArMDIwMAoKICAgIEZpeCBwcm9ibGVtIHdpdGggZ2V0L3NldGRjciBjb21tYW5kcyBpbnRyb2R1Y2VkIGJ5IGNmZyBwYXRjaGVzCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGYxMTUyZjhjMjhkYjRhMjIwODdjMjFjNjE4YTNmN2JhYTQ4ZTlhNGYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgSnVsIDYgMDI6NTA6MTkgMjAwNyArMDIwMAoKICAgIENvZGUgY2xlYW51cCBhbmQgZGVmYXVsdCBjb25maWcgdXBkYXRlIGZvciBTVEMgR1AzIFNTQSBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGU0ZGJlMWIyMTVmNWM2YzQ2MmU3NjkwOWQyNDBiZDk2NDcyYjg0ZGUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDUgMTc6NTY6MjcgMjAwNyArMDIwMAoKICAgIEZpeGluZyBzb21lIHR5cG9zIGV0Yy4gaW50cm9kdWNlZCBtYWlubHkgYnkgY2ZnIHBhdGNoZXMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBiNmI0Njg0NTQ2ODA5Zjg5YzhiYWM3Mjg2M2NhNDliNWZkOGFjMGNkCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IEp1bCA1IDExOjEyOjE2IDIwMDcgKzAyMDAKCiAgICBNaW5vciBjb2Rpbmcgc3R5bGUgY2xlYW51cC4gVXBkYXRlIENIQU5HRUxPRy4KCmNvbW1pdCBkY2EzYjNkNmQ2Mzk2YjY3ZTVlODRhZjUzNDUyMTY0OTIzYzczNDQzCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJV2VkIEp1bCA0IDIyOjMzOjQ2IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgW3Ytel0qIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDZjMThlYjk4MDRiNTI1ZjNlNGYzYmIzZDAxNGRkNjlhMjAwZDlmYTcKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgSnVsIDQgMjI6MzM6MzggMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyB0KiBhbmQgdSogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNDZkYTFlOTZiN2RiMTRmNGZjZDJjOTI1NDRlN2MwODYyMDI0YmM3NgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CVdlZCBKdWwgNCAyMjozMzozMCAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIHMqIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDkwY2MzZWI2ZDJiZTg1NmQ5ZGRkODE0MzZkZTljZjM0M2JjNmI1YzgKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgSnVsIDQgMjI6MzM6MjMgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBxKiBhbmQgciogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjZhMzQ1NjBkNTZhOWRmNWJjMmFlMjM1MjVkOTIyOTczNjEzNDc1NwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CVdlZCBKdWwgNCAyMjozMzoxNyAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIHAqIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGE1Y2IyMzA5MmE3ZDMxNDkwYTMzZDRlYzg3MTQ2OGI2M2JhYmZhM2MKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgSnVsIDQgMjI6MzM6MTMgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBvKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5MjlhMmJmZDE0MjczNzAwM2E4ZmMzMmUxYjg2ZTFmMmMxODUwMjU3CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJV2VkIEp1bCA0IDIyOjMzOjA3IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgbiogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNWRjMTFhNTExOTYwZDQ5MGY3ZjAxZmZkNzQ2ZWRmZTYyNzdmOTliMApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CVdlZCBKdWwgNCAyMjozMzowMSAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIG0qIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDliYmIxYzA4MjBjMWZiZDM4MTFhYjZlZTRiYTBmNmM2Zjc2YjI3ZTQKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgSnVsIDQgMjI6MzI6NTcgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBsKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiYzIzNGMxMjlmYTA0ZmI5ZmEzMzUzMDkzMGU1Y2JjNjA4NGNkNDdhCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJV2VkIEp1bCA0IDIyOjMyOjUxIDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgaiogYW5kIGsqIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFkMmM2YmM0OTE5NjlmOGQ4ZmIzNGM4ZTMwZThiZWE3YTJhZjljMzEKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgSnVsIDQgMjI6MzI6MzIgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBpKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0OGQ1ZDEwMmEyZjJlNjE5YzkyMDUwYjlhZWRiYjY5Njg5MTg1YmMwCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJV2VkIEp1bCA0IDIyOjMyOjI1IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgaCogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNzJlYjBlZmFlZDcwNDhhZmNjNjFmYzZmMDA4NWM0OTM5NGI1ZGMzNgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CVdlZCBKdWwgNCAyMjozMjoxOSAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIGcqIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFiZWMzZDMwMDJkM2JiYmFlNmYyNDY4YTBmNzM3NmRiMTEyMGQzM2UKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgSnVsIDQgMjI6MzI6MTAgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBlKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhYjk5OWJhMWIzMWViZTc4ZGQxNjM3NDM5NGE1NWQ3YzZlNWFhNmU0CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJV2VkIEp1bCA0IDIyOjMyOjAzIDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgZCogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzdlNGYyNGI4N2ZhMjU1YWU0NTZkMTkzYjdjZDIzYzE4ZGQxZDU2YgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CVdlZCBKdWwgNCAyMjozMTo1NiAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIGMqIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGJhMjM1MWY5ZDFlODQxYmQwMGVhNmRhZDFlM2MxNmQwMjU5YWQyNjQKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgSnVsIDQgMjI6MzE6NDkgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBiKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwYjM2MWM5MTY2MTdhZmY3OWU2NDdiNDBmMGU0MzM2MWUwYmJhY2NmCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJV2VkIEp1bCA0IDIyOjMxOjQyIDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgYSogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjczMGNkYTgyZTM2MmRmNmEyMmY0YzU5YzBhOWI5N2U4ODViMTAxNApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CVdlZCBKdWwgNCAyMjozMTozNSAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiBtcGM1eHggYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDc5NGNmZWZlYWQ1ZmMxNzdjZjRmNDExNjRlODAzODJlOWM5NDg0YQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CVdlZCBKdWwgNCAyMjozMToxNSAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIDUyMDAgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZWYwZGY1MmFiNDllZWE0YTMwYzE1MDg3ZmQyN2Q1NGMxZDk0NmYyYwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CVdlZCBKdWwgNCAyMjozMTowNyAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiBTVHggYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgODY2ZTMwODliZmM4MjZiYjRkYzc0NjM3ZjhhYWQ4N2EzYmFiNzlmYwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CVdlZCBKdWwgNCAyMjozMDo1OCAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiBzYmMqIGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDI2OTQ2OTBlMjg1YWNhYTM0OTIyZjU1ZjRiNWFlMDMwZGE2MGM1NWEKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgSnVsIDQgMjI6MzA6NTAgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gVFFNIGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFjYzRjNDU4MzI5NzY1YjU4ZTU4NGExOTgyMWU3OTZiM2MxMGU5NzYKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgSnVsIDQgMjI6MzA6MjggMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gODJ4eCBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4ZWE1NDk5YWZkYWJhMGFjZjYwOTIzZGQ5OTAwMWMzOTlkNGE3YzhlCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJV2VkIEp1bCA0IDIyOjMwOjA2IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIDgzeHggYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjQ0ODk2MjE1YTA5YzYwZmE0MGNhZTkwNmY3ZWQyMDdiYmMyYzQ5MgpBdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CkRhdGU6CVRodSBKdWwgNSAwODoxNzozNyAyMDA3ICswMjAwCgogICAgTWVyZ2VkIFBPU1QgZnJhbWV3b3JrIHdpdGggdGhlIGN1cnJlbnQgVE9ULgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Cgpjb21taXQgYjI0NjI5ZmEzNzcyMTRkNjNiYjQwZDEzNjBlMzU0YjZkM2U0YWY1NgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CVdlZCBKdW4gMTMgMTM6MjM6MTUgMjAwNyAtMDUwMAoKICAgIG1wYzg2eHg6IFJlbW92ZSBvbGQgQ0ZHX0NNRF8qIHJlZmVyZW5jZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0NjE3NWQ5NzY0ZGExMjliYjRmZDM0MWNkMjU1NGRjN2Q1NWY1YjJhCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJV2VkIEp1biAxMyAxMzoyMjo1NCAyMDA3IC0wNTAwCgogICAgQWRkIE1QQzg1NjhNRFMgdG8gTUFLRUFMTCA4NXh4IHRhcmdldC4KCiAgICBJdCB3YXMgbWlzc2luZyBmcm9tIHRoZSBvcmlnaW5hbCBwb3J0IHN1Ym1pc3Npb24uCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyODM1ZTUxOGM5NjllNTEyNGJhMTE3NGVlZjNlODM3NWUxMmZhN2Q1CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJV2VkIEp1biAxMyAxMzoyMjowOCAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiA4NXh4IGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDU2YjMwNGFjMjA5MTY4OTUwNjA4OGE5YWU2N2Y2M2ZkNjMwMGNmMTYKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgSnVuIDEzIDEzOjIxOjM3IDIwMDcgLTA1MDAKCiAgICBGaXggI2lmIHR5cG8gaW4gQ09ORklHX0NNRF8qIGNoYW5nZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmNzgwYjgzMzE2ZDlhZjFmNjFkNzFjYzg4YjE5MTdiMzg3YjliOTk1CkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1c2dpZ2VyQGdteC5jaD4KRGF0ZToJV2VkIEp1biAyNyAxODoxMTozOCAyMDA3ICswMjAwCgogICAgcmVzdWJtaXQ6IHBwYzR4eDogUmVtb3ZlIHNlcXVvaWEvc2VxdWlvYS5oLiBDbGVhbnVwIHBwYzQ0MC5oIGZvciBQUEM0NDBFUFgKCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5lc3RhbC5jb20+Cgpjb21taXQgMDRlNmMzOGI3NjZlYWEyZjMyODc1NjE1NjNjOWUyMTVlMGMzYTBkNApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEp1bCA0IDEwOjA2OjMwIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBsd21vbjUgYm9hcmQKCiAgICAtIEFkZCBvcHRpb25hbCBFQ0MgZ2VuZXJhdGlvbiByb3V0aW5lIHRvIHByZXNlcnZlIGV4aXN0aW5nCiAgICAgIFJBTSB2YWx1ZXMuIFRoaXMgaXMgbmVlZGVkIGZvciB0aGUgTGludXggbG9nLWJ1ZmZlciBzdXBwb3J0CiAgICAtIEFkZCBvcHRpb25hbCBERFIyIHNldHVwIHdpdGggQ0w9NAogICAgLSBHUElPNTAgbm90IHVzZWQgYW55bW9yZQogICAgLSBMaW1lIHJlZ2lzdGVyIHNldHVwIGFkZGVkCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDY4MTBhMzQ2NzdkYmM0NDYzMzRmNWU0NTFmMTY4MjQyNmRkMzNiNDkKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBKdWwgMyAwMDoxNzoyOCAyMDA3IC0wNjAwCgogICAgRml4IE1ha2VmaWxlIHRvIHVzZSAkKE1LQ09ORklHKSBtYWNybyBmb3IgYWxsIGJvYXJkIHBvcnRzCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDkwYjFiMmQ2OWI5Mzk2ZmYyZjAxMTY1ZWJjMTZjOWE1OTRlYjU5MjYKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBKdWwgMyAwMDoxNzoyOCAyMDA3IC0wNjAwCgogICAgRml4IE1ha2VmaWxlIHRvIHVzZSAkKE1LQ09ORklHKSBtYWNybyBmb3IgYWxsIGJvYXJkIHBvcnRzCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDA1NzAwNGY0YTQ4NjM1NTRkNTZjYzU2MjY4YmZhN2M3ZDk3MzhlMjcKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBKdWwgMyAwMDozNDo0OSAyMDA3IC0wNjAwCgogICAgQ29ycmVjdCBmaXh1cCByZWxvY2F0aW9uIGZvciBtcGM4M3h4CgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDVhZjYxYjJmNGI4MzhhMDVmNzliZTI3NGYzZTVhNjZlZGQyZDljOTYKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBKdWwgMyAwMDozNDo0NCAyMDA3IC0wNjAwCgogICAgQ29ycmVjdCBmaXh1cCByZWxvY2F0aW9uIGZvciBtcGM4MjYwCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IGYzYTUyZmUwNTkyMzkzNWRiODY5ODVkYWY5NDM4ZTJmNzBhYzM5YWEKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBKdWwgMyAwMDozNDozOSAyMDA3IC0wNjAwCgogICAgQ29ycmVjdCBmaXh1cCByZWxvY2F0aW9uIGZvciBtcGM4MjR4CgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IGE4NWRkMjU0YzA1NzdmY2ExMzYyN2M0NmU5M2ZjMmFkNGM0ZjFmMDAKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBKdWwgMyAwMDozNDozNCAyMDA3IC0wNjAwCgogICAgQ29ycmVjdCBmaXh1cCByZWxvY2F0aW9uIGZvciBtcGM4MjIwCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDZmNzU3NmIyMGVjZjBkMDQwYzNhYzNiMDMyYjVjYmM4NjBlMzhhOTAKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBKdWwgMyAwMDozNDoyOSAyMDA3IC0wNjAwCgogICAgQ29ycmVjdCBmaXh1cCByZWxvY2F0aW9uIGZvciBNUEM1eHh4CgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDM2NDljZDk5YmE4MTViNjYwMTg2ODczNTc2NTYwMmYwMGVmMzY5MmIKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBKdWwgMyAwMDozNDoyNCAyMDA3IC0wNjAwCgogICAgQ29ycmVjdCByZWxvY2F0aW9uIGZpeHVwIGZvciBtcGM1eHgKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgZjgyYjNiNjMwNGI2MjBlZjdlMjhiZmFhMWVhODg3YTJhZDJmYTMyNQpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIEp1bCAzIDAwOjM0OjE5IDIwMDcgLTA2MDAKCiAgICBEb24ndCBzZXQgZ2QtPnJlbG9jX29mZiBpZiByZWxvY2F0aW9uIG9mIC5maXh1cCB3b3JrcyBjb3JyZWN0bHkKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgZTFhNjE0NGMzMmRjN2RlNzNiY2RkMzM5OTVkZTAxNDhjYmQwYmQyOApBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIEp1bCAzIDAwOjM0OjE0IDIwMDcgLTA2MDAKCiAgICBSZW1vdmUgb2Jzb2xldGUgbXBjODN4eCBsaW5rZXIgc2NyaXB0cwoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCAxN2UzMmZjMzkwOGJmNzA4OWQzZjE2ZmM4MmExYzNhZTY3NGRkNjViCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglUdWUgSnVsIDMgMDA6MzQ6MDkgMjAwNyAtMDYwMAoKICAgIENvbnNvbGlkYXRlIG1wYzgyNjAgbGlua2VyIHNjcmlwdHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgYWY3ZDM4YjM5MzY5MGQ3ZWVhZjQxOGFjODVhMWU4MzFhNTBkNWZkMApBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIEp1bCAzIDAwOjM0OjA0IDIwMDcgLTA2MDAKCiAgICBSZW1vdmUgb2Jzb2xldGUgbXBjODI0eCBsaW5rZXIgc2NyaXB0cwoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCBmOTRhM2FlY2ViYzQwY2EwOTM5YzdkNjZkMDEwMDA5Y2Y1MWJlOWUyCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglUdWUgSnVsIDMgMDA6MzM6NTkgMjAwNyAtMDYwMAoKICAgIFJlbW92ZSBvYnNvbGV0ZSBtcGM4MjR4IGxpbmtlciBzY3JpcHRzICgzIG9mIDQpCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IGE3MWMwODRmM2FjN2ZlZGYxNDQ1MzdkYjJiMmRhNDczMjMwNjg4MzMKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBKdWwgMyAwMDozMzo1MyAyMDA3IC0wNjAwCgogICAgUmVtb3ZlIG9ic29sZXRlIG1wYzgyNHggbGlua2VyIHNjcmlwdHMgKDIgb2YgNCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgZjY3MGExNTQ2OGQxMzY1MjQxZDQwMDIyYjk0MDhlMTAwNDE4MWY1ZQpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIEp1bCAzIDAwOjMzOjQ4IDIwMDcgLTA2MDAKCiAgICBSZW1vdmUgb2Jzb2xldGUgbXBjODI0eCBsaW5rZXIgc2NyaXB0cyAoMSBvZiA0KQoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCAwOTU1NWJkNDVhMDRjMGU1NGYxNzI1MjhkMjFiYzE4ODk2NTUwZDI4CkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglUdWUgSnVsIDMgMDA6MzM6NDMgMjAwNyAtMDYwMAoKICAgIFJlbW92ZSBvYnNvbGV0ZSBtcGM4MjIwIGxpbmtlciBzY3JpcHRzCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDVlZmI5OTJmMDQ2ZTUxMjI1YzkzZDUyZjgwZmVjYmU0MzNhYmQ3ODkKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBKdWwgMyAwMDozMzozOCAyMDA3IC0wNjAwCgogICAgUmVtb3ZlIG9ic29sZXRlIG1wYzV4eHggbGlua2VyIHNjcmlwdHMgKDMgb2YgMykKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgMDdjMTNkZmVmNjViMzE2NDdlNjlkOGI2MWRhYTFlZWM1OThhZGQxYQpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIEp1bCAzIDAwOjMzOjMzIDIwMDcgLTA2MDAKCiAgICBSZW1vdmUgb2Jzb2xldGUgbXBjNXh4eCBsaW5rZXIgc2NyaXB0cyAoMiBvZiAzKQoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCBiNGY2NzUxM2E2MjRjZTg1ODY2YzY2YzU3NWJkMmQ5ZDc5NzdkN2YwCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglUdWUgSnVsIDMgMDA6MzM6MjggMjAwNyAtMDYwMAoKICAgIFJlbW92ZSBvYnNvbGV0ZSBtcGM1eHh4IGxpbmtlciBzY3JpcHRzICgxIG9mIDMpCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IGI3ZDhlMDVmODY3NTI0OWI1ZjIwOGFhNzNiYWJlZWQzODRhNDUxOWQKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBKdWwgMyAwMDozMzoyMyAyMDA3IC0wNjAwCgogICAgUmVtb3ZlIG9ic29sZXRlIG1wYzV4eCBsaW5rZXIgc2NyaXB0cwoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCA0MTZhMGI2ZDQwZjZlYmEzYTJmYzU0NzI1M2MxNmJkYTI4ZDkyMmY3CkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglUdWUgSnVsIDMgMDA6MzM6MTggMjAwNyAtMDYwMAoKICAgIENvbnNvbGlkYXRlIG1wYzgzeHggbGlua2VyIHNjcmlwdHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgNWZjNTkxNzViOTI4ODNlZDVkMjY2NmEwNGU2YmM0OWU3MGE0YTM2NQpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIEp1bCAzIDAwOjMzOjEzIDIwMDcgLTA2MDAKCiAgICBDb25zb2xpZGF0ZSBtcGM4MjYwIGxpbmtlciBzY3JpcHRzCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDczN2Y5ZWIwMmQ3MzM1ZGYyYjNlNGQ3YTRkMzM0ODc4NGQxZGEyMDcKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBKdWwgMyAwMDozMzowOCAyMDA3IC0wNjAwCgogICAgQ29uc29saWRhdGUgbXBjODI0eCBsaW5rZXIgc2NyaXB0cwoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCA5Yzc1N2I3ODlhNTlhODU1ZGI1N2I0NDhkZDgyNTMyOWM0ZTljNGEwCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglUdWUgSnVsIDMgMDA6MzM6MDMgMjAwNyAtMDYwMAoKICAgIENvbnNvbGlkYXRlIG1wYzgyMjAgbGlua2VyIHNjcmlwdHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgZDE4MWM5YTE1Y2Q0MTg2M2ZlMjQ4NDBkMTc4NDg0MjlmMjdkM2M4YwpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIEp1bCAzIDAwOjMyOjU4IDIwMDcgLTA2MDAKCiAgICBDb25zb2xpZGF0ZSBtcGM1eHh4IGxpbmtlciBzY3JpcHRzCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDI4N2FjOTI0YWRiNzI5MWJlYmU1MDg2NjUyYTM2MmEzMGFiMjhiMTMKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBKdWwgMyAwMDozMjo1MyAyMDA3IC0wNjAwCgogICAgQ29uc29saWRhdGUgbXBjNXh4IGxpbmtlciBzY3JpcHRzCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDUyYjg3MDRkMDI0NWU1ODlmODZkNDYyZTllYzI1YWViN2VjYmJiZGQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgSnVsIDQgMDA6NDM6NTMgMjAwNyArMDIwMAoKICAgIEZpeCBhIGZldyBmaWxlIHBlcm1pc3Npb24gcHJvYmxlbXMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA3OGUwY2YyZGU3YmU3ZjFlYWVlYjYyMmViNjFmZDUwZTRkNWUyMDVjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEp1bCA0IDAwOjM4OjM4IDIwMDcgKzAyMDAKCiAgICBNaW5vciBjb2Rpbmcgc3R5bGUgY2xlYW51cC4gUmVidWlsZCBDSEFOR0VMT0cgZmlsZS4KCmNvbW1pdCAyZjljMTllNDk2YWNiNmJiNTBkOTI5OWUxYWFiMzc3NjI1ZDQ4YzM4CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJTW9uIEp1biAxMSAxOTowMzo0NCAyMDA3IC0wNTAwCgogICAgY29uZmlncy8gbXBjODZ4eDogUmV3cml0ZSBjb21tYW5kIGxpbmUgb3B0aW9ucyB1c2luZyBuZXcgQ09ORklHX0NNRC0qIHN0eWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjAyYWQzYjMzZDljZWVmODNkYmFiNDZiZTY4NjQ2ZDY0NWQ2MzdlZQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CU1vbiBKdW4gMTEgMTk6MDM6MzkgMjAwNyAtMDUwMAoKICAgIFJFQURNRTogUmV3cml0ZSBjb21tYW5kIGxpbmUgY29uZmlnIHRvIHVzZSBDT05GSUdfQ01EXyogbmFtZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3MmEwNzRjZWM2OGU1YmFkNjBkNjMyMDZjMDUwOTc0ZTA4YWZkODA0CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJTW9uIEp1biAxMSAxOTowMzozNCAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS8gbm9uLWNvbmZpZzogQXVnbWVudCBDT05GSUdfQ09NTUFORFMgdGVzdHMgd2l0aCBkZWZpbmVkKENPTkZJR19DTURfKikuCgogICAgVGhpcyBpcyBhIGNvbXBhdGliaWxpdHkgc3RlcCB0aGF0IGFsbG93cyBib3RoIHRoZSBvbGRlciBmb3JtCiAgICBhbmQgdGhlIG5ldyBmb3JtIHRvIGNvLWV4aXN0IGZvciBhIHdoaWxlIHVudGlsIHRoZSBvbGRlciBjYW4KICAgIGJlIHJlbW92ZWQgZW50aXJlbHkuCgogICAgQWxsIHRyYW5zZm9ybWF0aW9ucyBhcmUgb2YgdGhlIGZvcm06CiAgICBCZWZvcmU6CgkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkKICAgIEFmdGVyOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpIHx8IGRlZmluZWQoQ09ORklHX0NNRF9BVVRPU0NSSVBUKQoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNWZjZjU0M2UwYjY2MjhjNzZmZjQ4NzA1YjFiMDU2NmJmZDExNTA3YgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CU1vbiBKdW4gMTEgMTk6MDM6MjggMjAwNyAtMDUwMAoKICAgIHRvb2xzLyA6IEF1Z21lbnQgQ09ORklHX0NPTU1BTkRTIHRlc3RzIHdpdGggZGVmaW5lZChDT05GSUdfQ01EXyopLgoKICAgIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IHN0ZXAgdGhhdCBhbGxvd3MgYm90aCB0aGUgb2xkZXIgZm9ybQogICAgYW5kIHRoZSBuZXcgZm9ybSB0byBjby1leGlzdCBmb3IgYSB3aGlsZSB1bnRpbCB0aGUgb2xkZXIgY2FuCiAgICBiZSByZW1vdmVkIGVudGlyZWx5LgoKICAgIEFsbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIG9mIHRoZSBmb3JtOgogICAgQmVmb3JlOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpCiAgICBBZnRlcjoKCSNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9BVVRPU0NSSVBUKSB8fCBkZWZpbmVkKENPTkZJR19DTURfQVVUT1NDUklQVCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDkxMDdlYmUwZDM1MjQyMDg5NWFiNjliNzE1Njk3YmRlYmM4Y2FmNTAKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglNb24gSnVuIDExIDE5OjAzOjIzIDIwMDcgLTA1MDAKCiAgICBib2FyZC9bay16XSo6IEF1Z21lbnQgQ09ORklHX0NPTU1BTkRTIHRlc3RzIHdpdGggZGVmaW5lZChDT05GSUdfQ01EXyopLgoKICAgIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IHN0ZXAgdGhhdCBhbGxvd3MgYm90aCB0aGUgb2xkZXIgZm9ybQogICAgYW5kIHRoZSBuZXcgZm9ybSB0byBjby1leGlzdCBmb3IgYSB3aGlsZSB1bnRpbCB0aGUgb2xkZXIgY2FuCiAgICBiZSByZW1vdmVkIGVudGlyZWx5LgoKICAgIEFsbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIG9mIHRoZSBmb3JtOgogICAgQmVmb3JlOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpCiAgICBBZnRlcjoKCSNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9BVVRPU0NSSVBUKSB8fCBkZWZpbmVkKENPTkZJR19DTURfQVVUT1NDUklQVCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDVlMzc4MDAzZDU5MmVhODI4ZWM2OWQ2ZGVmY2Q0ZGU3OTA5NmRkNWMKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglNb24gSnVuIDExIDE5OjAzOjE5IDIwMDcgLTA1MDAKCiAgICBib2FyZC9bTWEtaV0qOiBBdWdtZW50IENPTkZJR19DT01NQU5EUyB0ZXN0cyB3aXRoIGRlZmluZWQoQ09ORklHX0NNRF8qKS4KCiAgICBUaGlzIGlzIGEgY29tcGF0aWJpbGl0eSBzdGVwIHRoYXQgYWxsb3dzIGJvdGggdGhlIG9sZGVyIGZvcm0KICAgIGFuZCB0aGUgbmV3IGZvcm0gdG8gY28tZXhpc3QgZm9yIGEgd2hpbGUgdW50aWwgdGhlIG9sZGVyIGNhbgogICAgYmUgcmVtb3ZlZCBlbnRpcmVseS4KCiAgICBBbGwgdHJhbnNmb3JtYXRpb25zIGFyZSBvZiB0aGUgZm9ybToKICAgIEJlZm9yZToKCSNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9BVVRPU0NSSVBUKQogICAgQWZ0ZXI6CgkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkgfHwgZGVmaW5lZChDT05GSUdfQ01EX0FVVE9TQ1JJUFQpCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3MzcxODQxMTRlYzljOWUwYWI5NGQ2NzEzNTM2MTI2MDczYmQyNDcyCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJTW9uIEp1biAxMSAxOTowMzoxNSAyMDA3IC0wNTAwCgogICAgY3B1LyBub24tbXBjKjogQXVnbWVudCBDT05GSUdfQ09NTUFORFMgdGVzdHMgd2l0aCBkZWZpbmVkKENPTkZJR19DTURfKikuCgogICAgVGhpcyBpcyBhIGNvbXBhdGliaWxpdHkgc3RlcCB0aGF0IGFsbG93cyBib3RoIHRoZSBvbGRlciBmb3JtCiAgICBhbmQgdGhlIG5ldyBmb3JtIHRvIGNvLWV4aXN0IGZvciBhIHdoaWxlIHVudGlsIHRoZSBvbGRlciBjYW4KICAgIGJlIHJlbW92ZWQgZW50aXJlbHkuCgogICAgQWxsIHRyYW5zZm9ybWF0aW9ucyBhcmUgb2YgdGhlIGZvcm06CiAgICBCZWZvcmU6CgkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkKICAgIEFmdGVyOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpIHx8IGRlZmluZWQoQ09ORklHX0NNRF9BVVRPU0NSSVBUKQoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjQ4MDcwZmU1ZmU0NDBkZmI1ZWU1MjY4YzkyMGRlNzBlNDhlYTMyNwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CU1vbiBKdW4gMTEgMTk6MDM6MDggMjAwNyAtMDUwMAoKICAgIGNwdS9tcGMqLyA6IEF1Z21lbnQgQ09ORklHX0NPTU1BTkRTIHRlc3RzIHdpdGggZGVmaW5lZChDT05GSUdfQ01EXyopLgoKICAgIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IHN0ZXAgdGhhdCBhbGxvd3MgYm90aCB0aGUgb2xkZXIgZm9ybQogICAgYW5kIHRoZSBuZXcgZm9ybSB0byBjby1leGlzdCBmb3IgYSB3aGlsZSB1bnRpbCB0aGUgb2xkZXIgY2FuCiAgICBiZSByZW1vdmVkIGVudGlyZWx5LgoKICAgIEFsbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIG9mIHRoZSBmb3JtOgogICAgQmVmb3JlOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpCiAgICBBZnRlcjoKCSNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9BVVRPU0NSSVBUKSB8fCBkZWZpbmVkKENPTkZJR19DTURfQVVUT1NDUklQVCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDBjNTA1ZGIwYTBkYzFmNjcwYjEzY2UzYjRkM2ZiZjFlYzViM2NiZDIKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglNb24gSnVuIDExIDE5OjAzOjAzIDIwMDcgLTA1MDAKCiAgICBsaWJfKi86IEF1Z21lbnQgQ09ORklHX0NPTU1BTkRTIHRlc3RzIHdpdGggZGVmaW5lZChDT05GSUdfQ01EXyopLgoKICAgIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IHN0ZXAgdGhhdCBhbGxvd3MgYm90aCB0aGUgb2xkZXIgZm9ybQogICAgYW5kIHRoZSBuZXcgZm9ybSB0byBjby1leGlzdCBmb3IgYSB3aGlsZSB1bnRpbCB0aGUgb2xkZXIgY2FuCiAgICBiZSByZW1vdmVkIGVudGlyZWx5LgoKICAgIEFsbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIG9mIHRoZSBmb3JtOgogICAgQmVmb3JlOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpCiAgICBBZnRlcjoKCSNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9BVVRPU0NSSVBUKSB8fCBkZWZpbmVkKENPTkZJR19DTURfQVVUT1NDUklQVCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDczZjAzMjAyMWVjNWYxM2NkYThmYWE0ZTM0YjZkZTgwOTYwZWI4NmYKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglNb24gSnVuIDExIDE5OjAyOjU4IDIwMDcgLTA1MDAKCiAgICBsaWJfcHBjLzogQXVnbWVudCBDT05GSUdfQ09NTUFORFMgdGVzdHMgd2l0aCBkZWZpbmVkKENPTkZJR19DTURfKikuCgogICAgVGhpcyBpcyBhIGNvbXBhdGliaWxpdHkgc3RlcCB0aGF0IGFsbG93cyBib3RoIHRoZSBvbGRlciBmb3JtCiAgICBhbmQgdGhlIG5ldyBmb3JtIHRvIGNvLWV4aXN0IGZvciBhIHdoaWxlIHVudGlsIHRoZSBvbGRlciBjYW4KICAgIGJlIHJlbW92ZWQgZW50aXJlbHkuCgogICAgQWxsIHRyYW5zZm9ybWF0aW9ucyBhcmUgb2YgdGhlIGZvcm06CiAgICBCZWZvcmU6CgkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkKICAgIEFmdGVyOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpIHx8IGRlZmluZWQoQ09ORklHX0NNRF9BVVRPU0NSSVBUKQoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOThiNzkwMDNjMjFjMjU3ODIwNjAwMzI1NmRlNGU3ODFkNmIzNmNhOApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CU1vbiBKdW4gMTEgMTk6MDI6NTMgMjAwNyAtMDUwMAoKICAgIHJ0Yy86IEF1Z21lbnQgQ09ORklHX0NPTU1BTkRTIHRlc3RzIHdpdGggZGVmaW5lZChDT05GSUdfQ01EXyopLgoKICAgIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IHN0ZXAgdGhhdCBhbGxvd3MgYm90aCB0aGUgb2xkZXIgZm9ybQogICAgYW5kIHRoZSBuZXcgZm9ybSB0byBjby1leGlzdCBmb3IgYSB3aGlsZSB1bnRpbCB0aGUgb2xkZXIgY2FuCiAgICBiZSByZW1vdmVkIGVudGlyZWx5LgoKICAgIEFsbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIG9mIHRoZSBmb3JtOgogICAgQmVmb3JlOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpCiAgICBBZnRlcjoKCSNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9BVVRPU0NSSVBUKSB8fCBkZWZpbmVkKENPTkZJR19DTURfQVVUT1NDUklQVCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDZlMjExNWFjYjZhODkyZDUzYTY4ODFiZjI1M2FlNDFkM2RmMzkxNTYKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglNb24gSnVuIDExIDE5OjAyOjQ5IDIwMDcgLTA1MDAKCiAgICBuZXQvOiBBdWdtZW50IENPTkZJR19DT01NQU5EUyB0ZXN0cyB3aXRoIGRlZmluZWQoQ09ORklHX0NNRF8qKS4KCiAgICBUaGlzIGlzIGEgY29tcGF0aWJpbGl0eSBzdGVwIHRoYXQgYWxsb3dzIGJvdGggdGhlIG9sZGVyIGZvcm0KICAgIGFuZCB0aGUgbmV3IGZvcm0gdG8gY28tZXhpc3QgZm9yIGEgd2hpbGUgdW50aWwgdGhlIG9sZGVyIGNhbgogICAgYmUgcmVtb3ZlZCBlbnRpcmVseS4KCiAgICBBbGwgdHJhbnNmb3JtYXRpb25zIGFyZSBvZiB0aGUgZm9ybToKICAgIEJlZm9yZToKCSNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9BVVRPU0NSSVBUKQogICAgQWZ0ZXI6CgkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkgfHwgZGVmaW5lZChDT05GSUdfQ01EX0FVVE9TQ1JJUFQpCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0NWNkYjliNzJjOTQ2NTVjNzMwOGI0NjRhMjY2NjA1N2MwYjI4NmUwCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJTW9uIEp1biAxMSAxOTowMjozNCAyMDA3IC0wNTAwCgogICAgZGlzay86IEF1Z21lbnQgQ09ORklHX0NPTU1BTkRTIHRlc3RzIHdpdGggZGVmaW5lZChDT05GSUdfQ01EXyopLgoKICAgIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IHN0ZXAgdGhhdCBhbGxvd3MgYm90aCB0aGUgb2xkZXIgZm9ybQogICAgYW5kIHRoZSBuZXcgZm9ybSB0byBjby1leGlzdCBmb3IgYSB3aGlsZSB1bnRpbCB0aGUgb2xkZXIgY2FuCiAgICBiZSByZW1vdmVkIGVudGlyZWx5LgoKICAgIEFsbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIG9mIHRoZSBmb3JtOgogICAgQmVmb3JlOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpCiAgICBBZnRlcjoKCSNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9BVVRPU0NSSVBUKSB8fCBkZWZpbmVkKENPTkZJR19DTURfQVVUT1NDUklQVCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRlMTA5YWU5ODI5NGE1Y2E3ZmY4NDhiNzY1MmM3YmZkNDAyM2E5NGEKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglNb24gSnVuIDExIDE5OjAyOjIwIDIwMDcgLTA1MDAKCiAgICBmcy86IEF1Z21lbnQgQ09ORklHX0NPTU1BTkRTIHRlc3RzIHdpdGggZGVmaW5lZChDT05GSUdfQ01EXyopLgoKICAgIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IHN0ZXAgdGhhdCBhbGxvd3MgYm90aCB0aGUgb2xkZXIgZm9ybQogICAgYW5kIHRoZSBuZXcgZm9ybSB0byBjby1leGlzdCBmb3IgYSB3aGlsZSB1bnRpbCB0aGUgb2xkZXIgY2FuCiAgICBiZSByZW1vdmVkIGVudGlyZWx5LgoKICAgIEFsbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIG9mIHRoZSBmb3JtOgogICAgQmVmb3JlOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpCiAgICBBZnRlcjoKCSNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9BVVRPU0NSSVBUKSB8fCBkZWZpbmVkKENPTkZJR19DTURfQVVUT1NDUklQVCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGQ1YmU0M2RlOTNmZjkwNWM0NjVlNTA5ZDQ1YTMxNjRlZjQ4ZDI2ZTcKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglNb24gSnVuIDExIDE5OjAyOjEwIDIwMDcgLTA1MDAKCiAgICBkcml2ZXJzLzogQXVnbWVudCBDT05GSUdfQ09NTUFORFMgdGVzdHMgd2l0aCBkZWZpbmVkKENPTkZJR19DTURfKikuCgogICAgVGhpcyBpcyBhIGNvbXBhdGliaWxpdHkgc3RlcCB0aGF0IGFsbG93cyBib3RoIHRoZSBvbGRlciBmb3JtCiAgICBhbmQgdGhlIG5ldyBmb3JtIHRvIGNvLWV4aXN0IGZvciBhIHdoaWxlIHVudGlsIHRoZSBvbGRlciBjYW4KICAgIGJlIHJlbW92ZWQgZW50aXJlbHkuCgogICAgQWxsIHRyYW5zZm9ybWF0aW9ucyBhcmUgb2YgdGhlIGZvcm06CiAgICBCZWZvcmU6CgkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkKICAgIEFmdGVyOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpIHx8IGRlZmluZWQoQ09ORklHX0NNRF9BVVRPU0NSSVBUKQoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjQ1Mzk2MGQ0ZmRiODdiMzk3MGQ5NjExOWI5MGRmMmVkMDI0ZmM0YQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CU1vbiBKdW4gMTEgMTk6MDI6MDUgMjAwNyAtMDUwMAoKICAgIGNvbW1vbi8gbm9uLWNtZDogQXVnbWVudCBDT05GSUdfQ09NTUFORFMgdGVzdHMgd2l0aCBkZWZpbmVkKENPTkZJR19DTURfKikuCgogICAgVGhpcyBpcyBhIGNvbXBhdGliaWxpdHkgc3RlcCB0aGF0IGFsbG93cyBib3RoIHRoZSBvbGRlciBmb3JtCiAgICBhbmQgdGhlIG5ldyBmb3JtIHRvIGNvLWV4aXN0IGZvciBhIHdoaWxlIHVudGlsIHRoZSBvbGRlciBjYW4KICAgIGJlIHJlbW92ZWQgZW50aXJlbHkuCgogICAgQWxsIHRyYW5zZm9ybWF0aW9ucyBhcmUgb2YgdGhlIGZvcm06CiAgICBCZWZvcmU6CgkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkKICAgIEFmdGVyOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpIHx8IGRlZmluZWQoQ09ORklHX0NNRF9BVVRPU0NSSVBUKQoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjVjNDUwYjQ3YTYyNjU5ZDUyMmNmYThmNGZhMWU0ZTVjNjBkY2NkMApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CU1vbiBKdW4gMTEgMTk6MDE6NTQgMjAwNyAtMDUwMAoKICAgIGNvbW1vbi9jbWRfW2ktel0qIDogQXVnbWVudCBDT05GSUdfQ09NTUFORFMgdGVzdHMgd2l0aCBkZWZpbmVkKENPTkZJR19DTURfKikuCgogICAgVGhpcyBpcyBhIGNvbXBhdGliaWxpdHkgc3RlcCB0aGF0IGFsbG93cyBib3RoIHRoZSBvbGRlciBmb3JtCiAgICBhbmQgdGhlIG5ldyBmb3JtIHRvIGNvLWV4aXN0IGZvciBhIHdoaWxlIHVudGlsIHRoZSBvbGRlciBjYW4KICAgIGJlIHJlbW92ZWQgZW50aXJlbHkuCgogICAgQWxsIHRyYW5zZm9ybWF0aW9ucyBhcmUgb2YgdGhlIGZvcm06CiAgICBCZWZvcmU6CgkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkKICAgIEFmdGVyOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpIHx8IGRlZmluZWQoQ09ORklHX0NNRF9BVVRPU0NSSVBUKQoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYTc2YWRjODE0MmMxZDk1NjM4NWExMDllMGI3MGY5MzE5ZWRlNGQ2NgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CU1vbiBKdW4gMTEgMTk6MDE6NDMgMjAwNyAtMDUwMAoKICAgIGNvbW1vbi9jbWRfW2EtZl0qIDogQXVnbWVudCBDT05GSUdfQ09NTUFORFMgdGVzdHMgd2l0aCBkZWZpbmVkKENPTkZJR19DTURfKikuCgogICAgVGhpcyBpcyBhIGNvbXBhdGliaWxpdHkgc3RlcCB0aGF0IGFsbG93cyBib3RoIHRoZSBvbGRlciBmb3JtCiAgICBhbmQgdGhlIG5ldyBmb3JtIHRvIGNvLWV4aXN0IGZvciBhIHdoaWxlIHVudGlsIHRoZSBvbGRlciBjYW4KICAgIGJlIHJlbW92ZWQgZW50aXJlbHkuCgogICAgQWxsIHRyYW5zZm9ybWF0aW9ucyBhcmUgb2YgdGhlIGZvcm06CiAgICBCZWZvcmU6CgkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkKICAgIEFmdGVyOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpIHx8IGRlZmluZWQoQ09ORklHX0NNRF9BVVRPU0NSSVBUKQoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZWM2M2IxMGI2MWZkNjgyMzhkNGMxNWMxY2QwNGMwYjM4MjI4ZTJjMQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CU1vbiBKdW4gMTEgMTk6MDE6MzQgMjAwNyAtMDUwMAoKICAgIEludHJvZHVjZSBpbml0aWFsIHZlcnNpb25zIG9mIG5ldyBDb21tYW5kIENvbmZpZyBmaWxlcy4KCiAgICBEZXJpdmUgdGhyZWUgbmV3IGZpbGVzIGZyb20gY21kX2NvbmZkZWZzLmg6Cgljb25maWdfYm9vdHAuaCAtIEhhcyBCT09UUCByZWxhdGVkIGNvbmZpZyBvcHRpb25zLCBub3QgY29tbWFuZHMKCWNvbmZpZ19jbWRfYWxsLmggLSBIYXMgYSBDT05GSUdfQ01EXyogZGVmaW5pdGlvbiBmb3IgZXZlcnkgY29tbWFuZAoJY29uZmlnX2NtZF9kZWZhdWx0LmggLSBIYXMgYSBDT05GSUdfQ01EXyogZGVmaW5pdGlvbiBmb3IgZGVmYXVsdCBjbWRzLgoKICAgIEZvciBub3csIGluY2x1ZGUgImNvbmZpZ19ib290cC5oIiBmb3IgY29tcGF0YWJpbGl0eSB1bnRpbCBhbGwKICAgIHVzZXJzIG9mIGl0IGRpcmVjdGx5IGluY2x1ZGUgaXQgcHJvcGVybHkuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxZjJhMDU4OTg2NTg5MDBkYzU3MTc3NjFlMjdhYmYyMDUyZTY3ZTEzCkF1dGhvcjogTXVzaHRhcSBLaGFuIDxtdXNodGFxa185MjFAeWFob28uY28uaW4+CkRhdGU6CVNhdCBKdW4gMzAgMTg6NTA6NDggMjAwNyArMDIwMAoKICAgIEZpeCBTLUFUQSBzdXBwb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IG11c2h0YXEga2hhbiA8bXVzaHRhcWtfOTIxQHlhaG9vLmNvLmluPgoKY29tbWl0IGE1ZDcxZTI5MGYzNjczMjY5YmU4ZWVmYjRlYzQ0ZjUzNDEyZjk0NjEKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAcG9sbHV4LmRlbnguZGU+CkRhdGU6CU1vbiBKdW4gMjUgMTk6MTE6MzcgMjAwNyArMDIwMAoKICAgIFtQQ1M0NDBFUF0JZ2V0IHJpZCBvZiBDT05GSUdfUFBDNHh4X1VTRV9TUERfRERSX0lOSVRfSEFORwoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IGExYmQ2MjAwZWNjZDNhMDIwNDBhOTU1ZDVmNDNkM2VlMWZjOWY5M2IKQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5lc3RhbC5jb20+CkRhdGU6CU1vbiBKdW4gMjUgMTc6MDM6MTMgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogUFBDNDQwRVB4IEVtaXQgRERSMCByZWdpc3RlcnMgb24gbWFjaGluZSBjaGVjayBpbnRlcnJ1cHQKCiAgICBUaGlzIHBhdGNoIHByaW50cyB0aGUgRERSIHN0YXR1cyByZWdpc3RlcnMgdXBvbiBtYWNoaW5lIGNoZWNrCiAgICBpbnRlcnJ1cHQgb24gdGhlIDQ0MEVQeC9HUnguIFRoaXMgY2FuIGJlIHVzZWZ1bCBlc3BlY2lhbGx5IHdoZW4KICAgIEVDQyBzdXBwb3J0IGlzIGVuYWJsZWQuCgogICAgSSBhZGRlZCBzb21lIHNtYWxsIGNoYW5nZXMgdG8gdGhlIG9yaWdpbmFsIHBhdGNoIGZyb20gTmlrbGF1cyB0bwogICAgbWFrZSBpdCBjb21waWxlIGNsZWFuLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmVzdGFsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4MDcwMThmYjdmYWNlYjQyOWNlMGNiNDdiYWEyMDczNzQ2YjMzYTRlCkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXN0YWwuY29tPgpEYXRlOglNb24gSnVuIDI1IDE2OjUwOjU1IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBPPWJ1aWxkaXIgYnVpbGRzCgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgcHJvYmxlbSB0byBhc3NlbWJsZSBjcHUvcHBjNHh4L3N0YXJ0LlMKICAgIGV4cGVyaWVuY2VkIGxhc3Qgd2VlayB3aGVyZSBidWlsZGluZyBmYWlsZWQgaGF2aW5nIHNwZWNpZmllZAogICAgTz0uLi9idWlsZC5zZXF1b2lhLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmVzdGFsLmNvbT4KCmNvbW1pdCA0NjZmZmYxYTdiYjVmZTc2NGEwNjQ1MDYyNmY2MDk4MjE5ZjQ0NmI4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gSnVuIDI1IDE1OjU3OjM5IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBwY2lfcHJlX2luaXQoKSBmb3IgNDA1IGJvYXJkcwoKICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgQ0ZHX1BDSV9QUkVfSU5JVCBvcHRpb24gY29tcGxldGVseSwgc2luY2UKICAgIGl0J3Mgbm90IG5lZWRlZCBhbnltb3JlIHdpdGggdGhlIHBhdGNoIGZyb20gTWF0dGhpYXMgRnVjaHMgd2l0aAogICAgdGhlICJ3ZWFrIiBwY2lfcHJlX2luaXQoKSBpbXBsZW1lbnRhdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNmYzNWM1MzE2NjIxM2MyNGE1YTBlMjM5MGVkODYxMTM2ZmY3Mzg3MApBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglTdW4gSnVuIDI0IDE3OjQxOjIxIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IE1haW50ZW5hbmNlIHBhdGNoIGZvciBlc2QncyBDUENJNDA1IGRlcml2YXRzCgogICAgLWFkZCBwY2lfcHJlX2luaXQoKSBmb3IgcGNpIGludGVycnVwdCBmaXh1cCBjb2RlCiAgICAtZGlzYWJsZSBwaHkgc2xlZXAgbW9kZSB2aWEgcmVzZXRfcGh5KCkgZnVuY3Rpb24KICAgIC11c2UgY29ycmVjdCBpbyBhY2Nlc3NvcnMKICAgIC1jbGVhbnVwCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgNWExYzlmZjBjNDQzMDViNTdjYjRkOGY5MzY5YmJhOTBiY2YwZTFmOApBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglTdW4gSnVuIDI0IDE3OjIzOjQxIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBwY2lfcHJlX2luaXQoKSBmb3IgNDA1IGJvYXJkcwoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBjYWxsaW5nIGEgcGxhdHRmb3JtIGRlcGVuZGFudAogICAgcGNpX3ByZV9pbml0KCkgZnVuY3Rpb24gZm9yIDQwNSBib2FyZHMuIFRoaXMgY2FuIGJlIHVzZWQgdG8KICAgIG1vdmUgdGhlIGN1cnJlbnQgcGNpXzQwNWdwX2ZpeHVwX2lycSgpIGZ1bmN0aW9uIGludG8gdGhlCiAgICBib2FyZCBjb2RlLgoKICAgIFRoaXMgcGF0Y2ggYWxzbyBtYWtlcyB0aGUgQ0ZHX1BDSV9QUkVfSU5JVCBkZWZpbmUgb2Jzb2xldGUuCiAgICBBIGRlZmF1bHQgZnVuY3Rpb24gd2l0aCAnd2VhaycgYXR0cmlidXRlIGlzIHVzZWQgd2hlbgogICAgYSBib2FyZCBzcGVjaWZpYyBwY2lfcHJlX2luaXQoKSBpcyBub3QgaW1wbGVtZW50ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgMTYzNmQxYzg1MjljMDA2ZDEwNjI4N2NmYmMyMGNkMGEyNDZmZTFjYgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBKdW4gMjIgMjM6NTk6MDAgMjAwNyArMDIwMAoKICAgIENvZGluZyBzdHlsa2UgY2xlYW51cDsgcmVidWlsZCBDSEFOR0VMT0cKCmNvbW1pdCAyZGM2NDQ1MWI0YzA4ZmZkNjE5MzcyYWJmZGMyNTA2YTJlMjM2M2I5CkF1dGhvcjogSWdvciBMaXNpdHNpbiA8aWdvckBlbWNyYWZ0LmNvbT4KRGF0ZToJV2VkIEFwciAxOCAxNDo1NToxOSAyMDA3ICswNDAwCgogICAgQWRhcHQgbG9nIGJ1ZmZlciBjb2RlIHRvIHN1cHBvcnQgTGludXggMi42CgogICAgQSBuZXcgZW52aXJvbm1lbnQgdmFyaWFibGUsICJsb2d2ZXJzaW9uIiwgc2VsZWN0cyB0aGUgbG9nIGJ1ZmZlcgogICAgYmVoYXZpb3VyLiBJZiBpdCBpcyBub3Qgc2V0IG9yIHNldCB0byBhIHZhbHVlIG90aGVyIHRoYW4gMiwgdGhlbiB0aGUKICAgIG9sZCwgTGludXggMi40LjQsIGJlaGF2aW91ciBpcyBzZWxlY3RlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBJZ29yIExpc2l0c2luIDxpZ29yQGVtY3JhZnQuY29tPgogICAgLS0KCmNvbW1pdCBhMTFlMDY5NjVlYzkxMjcwYzUxODUzNDA3ZmYxMjYxZDNjNzQwMzg2CkF1dGhvcjogSWdvciBMaXNpdHNpbiA8aWdvckBlbWNyYWZ0LmNvbT4KRGF0ZToJV2VkIE1hciAyOCAxOTowNjoxOSAyMDA3ICswNDAwCgogICAgRXh0ZW5kIFBPU1Qgc3VwcG9ydCBmb3IgUFBDNDQwCgogICAgQWRkZWQgbWVtb3J5LCBDUFUsIFVBUlQsIEkyQyBhbmQgU1BSIFBPU1QgdGVzdHMgZm9yIFBQQzQ0MC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBJZ29yIExpc2l0c2luIDxpZ29yQGVtY3JhZnQuY29tPgogICAgLS0KCmNvbW1pdCA1NjZhNDk0ZjU5MmFlM2IzYzA3ODVkOTBkNGUxYmE0NTU3NDg4MGM0CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQHBvbGx1eC5kZW54LmRlPgpEYXRlOglGcmkgSnVuIDIyIDE5OjExOjU0IDIwMDcgKzAyMDAKCiAgICBbUENTNDQwRVBdCSAgICB1cGdyYWRlIHRoZSBQQ1M0NDBFUCBib2FyZDoKCQkgICAgLSBTaG93IG9uIHRoZSBTdGF0dXMgTEVEcywgc29tZSBTdGF0ZXMgb2YgdGhlIGJvYXJkLgoJCSAgICAtIEdldCB0aGUgTUFDIGFkZHJlc3NlcyBmcm9tIHRoZSBFRVByb20KCQkgICAgLSB1c2UgUFJFQk9PVAoJCSAgICAtIHVzZSB0aGUgQ0Ygb24gdGhlIGJvYXJkLgoJCSAgICAtIGNoZWNrIHRoZSBVLUJvb3QgaW1hZ2UgaW4gdGhlIEZsYXNoIHdpdGggYSBTSEExCgkJICAgICAgY2hlY2tzdW0uCgkJICAgIC0gdXNlIGR5bmFtaWMgVExCIGVudHJpZXMgZ2VuZXJhdGlvbiBmb3IgdGhlIFNEUkFNCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgM2ExZjVjODFiMGI5NTU3ODE3YTc4OWJlY2U4Mzk5MDU1ODFjMjIwNQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEp1biAyMiAxNjo1ODo0MCAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBGaXggcHJvYmxlbSB3aXRoIGV4dGVuZGVkIHByb2dyYW1fdGxiKCkgZnVudGlvbgoKICAgIFRoZSByZWNlbnRseSBleHRlbmRlZCBwcm9ncmFtX3RsYigpIGZ1bmN0aW9uIGhhZCBhIHByb2JsZW0gd2hlbgogICAgbXVsdGlwbGUgVExCJ3MgaGFkIHRvIGJlIHNldHVwIChmb3IgZXhhbXBsZSB3aXRoIDUxMk1CIG9mIFNEUkFNKS4gVGhlCiAgICB2aXJ0dWFsIGFkZHJlc3Mgd2FzIG5vdCBpbmNyZW1lbnRlZC4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGlzc3VlCiAgICBhbmQgaXMgdGVzdGVkIG9uIEthdG1haSB3aXRoIDUxMk1CIFNEUkFNLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwMjAzMmU4ZjE0NzUxYTFhNzUxYjA5MjQwYTRmMWNmOWY4YTIwNzdmCkF1dGhvcjogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KRGF0ZToJRnJpIEp1biAyMiAxNDo1ODowNCAyMDA3ICswMjAwCgogICAgW3BwY10gRml4IGJ1aWxkIGJyZWFrYWdlIGZvciBhbGwgbm9uLTR4eCBQb3dlclBDIHZhcmlhbnRzLgoKICAgIC0gYWRhcHQgdG8gdGhlIG1vcmUgZ2VuZXJpYyBFWENFUFRJT05fUFJPTE9HIGFuZCBDUklUX0VYQ0VQVElPTiBtYWNyb3MKICAgIC0gbWlub3IgNHh4IGNsZWFudXAKCmNvbW1pdCBkNjc3YjMyODU1ZjU3N2FlMjY5MGRjZDY0YTE3MmNkZDcwNmUwZmZjCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglGcmkgSnVuIDIyIDEwOjM0OjEyIDIwMDcgKzAyMDAKCiAgICBbcGF0Y2hdIGFkZCBuYW5kX2luaXQoKSBwcm90b3R5cGUgdG8gbmFuZC5oCgogICAgc2luY2UgbmFuZF9pbml0KCkgaXMgZXhwZWN0ZWQgdG8gYmUgY2FsbGVkIGJ5IG90aGVyIHBhcnRzIG9mIHUtYm9vdCwgdGhlcmUKICAgIHNob3VsZCBiZSBhIHByb3RvdHlwZSBmb3IgaXQgaW4gbmFuZC5oCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDgzYjRjZmEzZDYyOWRmZjAyNjQzNjYyNjNjNWU5NGQ5YTUwYWQ4MGIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgSnVuIDIwIDE4OjE0OjI0IDIwMDcgKzAyMDAKCiAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cC4gUmVmcmVzaCBDSEFOR0VMT0cuCgpjb21taXQgYjNmOWVjODZlMzg4MjA3ZmQwM2RjZGY3YjE0NWI5ZWQwODBiZjAyNApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEp1biAxOSAxNzoyMjo0NCAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBBZGQgYm9vdHN0cmFwIGNvbW1hbmQgZm9yIEFNQ0MgU2VxdW9pYSAoNDQwRVB4KSBldmFsIGJvYXJkCgogICAgVGhpcyBwYXRjaCBhZGRzIGEgYm9hcmQgY29tbWFuZCB0byBjb25maWd1cmUgdGhlIEkyQyBib290c3RyYXAgRUVQUk9NCiAgICB2YWx1ZXMuIFJpZ2h0IG5vdyA1MzMgYW5kIDY2N01IeiBhcmUgc3VwcG9ydGVkIGZvciBib290aW5nIGVpdGhlciB2aWEgTk9SCiAgICBvciBOQU5EIEZMQVNILiBIZXJlIHRoZSB1c2FnZToKCiAgICA9PiBib290c3RyYXAgNTMzIG5vcgk7dG8gY29uZmlndXJlIHRoZSBib2FyZCBmb3IgNTMzTUh6IE5PUiBib290aW5nCiAgICA9PiBib290c3RyYXAgNjY3IG5hbmQJO3RvIGNvbmZpZ3VyZSB0aGUgYm9hcmQgZm9yIDY2N01IeiBOTkFORCBib290aW5nCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGRmOGEyNGNkZDMwMTUxNTA1Y2Y1N2JiZWU1Mjg5ZTkxYmY1M2JkMWIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBKdW4gMTkgMTY6NDI6MzEgMjAwNyArMDIwMAoKICAgIFtwcGM0eHhdIEZpeCBwcm9ibGVtIHdpdGggTkFORCBib290aW5nIG9uIEFNQ0MgQWNhZGlhCgogICAgVGhlIGxhdGVzdCBjaGFuZ2VzIHNob3dlZCBhIHByb2JsZW0gd2l0aCB0aGUgbG9jYXRpb24gb2YgdGhlIE5BTkQtU1BMCiAgICBpbWFnZSBpbiB0aGUgT0NNIGFuZCB0aGUgaW5pdC1kYXRhIGFyZWEgKGluY2wuIGNhY2hlKS4gVGhpcyBwYXRjaAogICAgZml4ZXMgdGhpcyBwcm9ibGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4NmJhOTllMzQxOTQzOTQwNTJkMjRjMDRkYzQwZDEyNjNkMjlhMjZmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgSnVuIDE5IDE2OjQwOjU4IDIwMDcgKzAyMDAKCiAgICBbcHBjNHh4XSBDaGFuZ2UgYm9hcmQvYW1jYy9hY2FkaWEvY3ByLmMgdG8gcGxsLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOGU1ODVmMDJmODJjMTdjYzY2Y2QyMjlkYmYwZmQzMDY2YmJiZjY1OApBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdW4gMTggMTM6NTA6MTMgMjAwNyAtMDUwMAoKICAgIEFkZGVkIE01MzI5QUZFRSBhbmQgTTUzMjlCRkVFIFBsYXRmb3JtcwoKICAgIEFkZGVkIGJvYXJkL2ZyZWVzY2FsZS9tNTMyOWV2YiwgY3B1L21jZjUzMngsIGRyaXZlcnMvbmV0LAogICAgZHJpdmVycy9zZXJpYWwsICBpbW1hcF81MzI5LmgsIG01MzI5LmgsIG1jZnJ0Yy5oLAogICAgaW5jbHVkZS9jb25maWdzL001MzI5RVZCLmgsIGxpYl9tNjhrL2ludGVycnVwdHMuYywgYW5kCiAgICBydGMvbWNmcnRjLmMKCiAgICBNb2RpZmllZCBDUkVESVRTLCBNQUtFRklMRSwgTWFrZWZpbGUsIFJFQURNRSwgY29tbW9uL2NtZF9iZGluZm8uYywKICAgIGNvbW1vbi9jbWRfbWlpLmMsIGluY2x1ZGUvYXNtLW02OGsvYnl0ZW9yZGVyLmgsIGluY2x1ZGUvYXNtLW02OGsvZmVjLmgsCiAgICBpbmNsdWRlL2FzbS1tNjhrL2lvLmgsIGluY2x1ZGUvYXNtLW02OGsvbWNmdGltZXIuaCwKICAgIGluY2x1ZGUvYXNtLW02OGsvbWNmdWFydC5oLCBpbmNsdWRlL2FzbS1tNjhrL3B0cmFjZS5oLAogICAgaW5jbHVkZS9hc20tbTY4ay91LWJvb3QuaCwgbGliX202OGsvTWFrZWZpbGUsIGxpYl9tNjhrL2JvYXJkLmMsCiAgICBsaWJfbTY4ay90aW1lLmMsIG5ldC9ldGguYyBhbmQgcnRjL01ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwOTMxNzJmMDhkNmFmYjNmMzRkOGEyZjI2ZWUwZWU4NzQyNjFjZjI3CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglTdW4gSnVuIDE3IDE5OjA0OjExIDIwMDcgKzAyMDAKCiAgICBbZml4XSBlbWFpbCByZXBhcmF0aW9uCgpjb21taXQgMzY2NmFmZmZlN2JhZjg1OWM2YWUwY2UyYmViYmM4YWI3ZTUxMmRkYwpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJU3VuIEp1biAxNyAxOTowMzoyMSAyMDA3ICswMjAwCgogICAgW0ZJWF0gZml4IG1pY3JvYmxhemUgZmlsZSBwZXJtaXRpc3Npb24KCmNvbW1pdCBlNzM4NDZiN2NmMWUyOWFlNjM1YmY5YmI1NTcwMjY5NjYzZGYyZWU1CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVuIDE1IDExOjMzOjQxIDIwMDcgKzAyMDAKCiAgICBbcHBjNHh4XSBDaGFuZ2UgbHdtb241IHBvcnQgdG8gd29yayB3aXRoIHJlY2VudCA0NDAgZXhjZXB0aW9uIHJld29yawoKICAgIE5vdyBDT05GSUdfNDQwIGhhcyB0byBiZSBkZWZpbmVkIGluIGFsbCBQUEM0NDAgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlZmEzNWNmMTJkOTE0ZDRjYWJhOTQyYWNkNWE2YzQ1ZjIxN2RlMzAyCkF1dGhvcjogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBKdW4gMTUgMTE6MTk6MjggMjAwNyArMDIwMAoKICAgIHBwYzR4eDogQ2xlYW4gdXAgNDQwIGV4Y2VwdGlvbnMgaGFuZGxpbmcKCiAgICAtIEludHJvZHVjZWQgZGVkaWNhdGVkIHN3aXRjaGVzIGZvciBidWlsZGluZyA0NDAgYW5kIDQwNSBpbWFnZXMgcmVxdWlyZWQKICAgICAgZm9yIDQ0MC1zcGVjaWZpYyBtYWNoaW5lIGluc3RydWN0aW9ucyBsaWtlICdyZm1jaScgZXRjLgoKICAgIC0gRXhjZXB0aW9uIHZlY3RvcnMgbW92ZWQgdG8gdGhlIHByb3BlciBsb2NhdGlvbiAoX3N0YXJ0IG1vdmVkIGF3YXkgZnJvbQogICAgICB0aGUgY3JpdGljYWwgZXhjZXB0aW9uIGhhbmRsZXIgc3BhY2UsIHdoaWNoIGl0IG9jY3VwaWVkKQoKICAgIC0gQ3JpdGljYWxJbnB1dCBub3cgc2VydmljZWQgKHdpdGggZGVmYXVsdCBoYW5kbGVyKQoKICAgIC0gTWFjaGluZUNoZWNrIHByb3Blcmx5IHNlcnZpY2VkIChhZGRlZCBhIGRlZGljYXRlZCBoYW5kbGVyIGFuZCByZXR1cm4KICAgICAgc3Vicm91dGluZSkKCiAgICAtIE92ZXJhbGwgY2xlYW51cCBvZiBleGNlcHRpb25zIGRlY2xhcmVkIHdpdGggU1REX0VYQ0VQVElPTiBtYWNybyAodW51c2VkLAogICAgICB1bmhhbmRsZWQgYW5kIHRob3NlIG5vdCByZWxldmFudCBmb3IgNHh4IHdlcmUgZWxpbWluYXRlZCkKCiAgICAtIEVsaW1pbmF0ZWQgTGludXggbGVmdG92ZXJzLCByZW1vdmVkIGRlYWQgY29kZQoKICAgIFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBiNzY1ZmZiNzczZjVhM2NkNWFhOTRlYzc2YjZhMDUyNzZiOGNkNWIyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVuIDE1IDA4OjE4OjAxIDIwMDcgKzAyMDAKCiAgICBbcHBjNHh4XSBBZGQgaW5pdGlhbCBsd21vbjUgYm9hcmQgc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBpbml0aWFsIHN1cHBvcnQgZm9yIHRoZSBMaWViaGVyciBsd21vbjUgYm9hcmQgZXVxaXBwZWQKICAgIHdpdGggYW4gQU1DQyA0NDBFUHggUG93ZXJQQy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODVmNzM3Mzc2ZDVmZjNkNWYwZDQ1YThiNjU3Njg2MzI2ZDE3NTMwNwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEp1biAxNSAwNzozOTo0MyAyMDA3ICswMjAwCgogICAgW3BwYzR4eF0gRXh0ZW5kIDQ0eCBHUElPIHNldHVwIHdpdGggZGVmYXVsdCBvdXRwdXQgc3RhdGUKCiAgICBUaGUgYm9hcmQgY29uZmlnIGFycmF5IENGR180NDBfR1BJT19UQUJMRSBmb3IgdGhlIHBwYzQ0MCBHUElPIHNldHVwCiAgICBpcyBleHRlbmRlZCB3aXRoIHRoZSBkZWZhdWx0IEdQSU8gb3V0cHV0IHN0YXRlIChsZXZlbCkuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGRiY2EyMDg1MThlNWU3ZjAxYTY0MjA1ODhkMWNkNmU2MGRiNzRjMmIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBKdW4gMTQgMTE6MTQ6MzIgMjAwNyArMDIwMAoKICAgIFtwcGM0eHhdIEV4dGVuZCBwcm9ncmFtX3RsYigpIHdpdGggdmlydHVhbCAmIHBoeXNpY2FsIGFkZHJlc3NlcwoKICAgIE5vdyBwcm9ncmFtX3RsYigpIGFsbG93cyB0byBwcm9ncmFtIGEgVExCIChvciBtdWx0aXBsZSkgd2l0aAogICAgZGlmZmVyZW50IHZpcnR1YWwgYW5kIHBoeXNpY2FsIGFkZHJlc3Nlcy4gV2l0aCB0aGlzIGNoYW5nZSwgbm93IG9uZQogICAgcGh5c2ljYWwgcmVnaW9uIChlLmcuIFNEUkFNKSBjYW4gYmUgbWFwcGVkIDIgdGltZXMsIG9uY2Ugd2l0aCBjYWNoZXMKICAgIGRpYWJsZWQgYW5kIG9uY2Ugd2l0aCBjYWNoZXMgZW5hYmxlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOTkxMjEyMWY3ZWQ4MDRlYTU4ZmQ2MmYzZjIzMGI1ZGNmYzM1N2Q4OApBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglXZWQgTWF5IDIzIDE5OjAyOjQxIDIwMDcgKzAyMDAKCiAgICBDaGFuZ2UgJ3JlcGVhdGFibGUnIGF0dHJpYnV0ZSBvZiBzb21lIGNvbW1hbmRzIHRvIHNlbnNpYmxlIHZhbHVlcy4KCiAgICBNb3N0IHByb21pbmVudGx5IHRoaXMgY2hhbmdlcyAnZXJhc2UnIHRvIGJlIG5vbi1yZXBlYXRhYmxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgoKY29tbWl0IDVhZmIyMDIwOTNmNmEwMDE3OTdkYjkyY2Y2OTViOTNhNzBlYTlhYjQKQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KRGF0ZToJV2VkIE1heSAyMyAxODo0Nzo0OCAyMDA3ICswMjAwCgogICAgRml4ICdydW4nIG5vdCB0byBjb250aW51ZSBhZnRlciBpbnRlcnJ1cHRlZCBjb21tYW5kCgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgOWI3NDY0YTJjODg2MTRlMTA2MWY1MDljNDg5MzBhM2QyNDBkMWEzNQpBdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdW4gMTEgMTU6MTQ6MjQgMjAwNyArMDIwMAoKICAgIFVTQjogVGhpcyBwYXRjaCBmaXggcmVhZGwgaW4gb2hjaSBzd2FwIHJlZyBhY2Nlc3MuCgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4Zjg0MTZmYWRhOWZhZjk0YjlhOTJmMjFmZTYwMDA2NDNjYjUyMWQ1CkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJRnJpIEp1biA4IDE0OjUyOjIyIDIwMDcgKzAyMDAKCiAgICBUUU01MjAwOiBBZGQgRmxhdCBEZXZpY2UgVHJlZSBzdXBwb3J0LCB1cGRhdGUgZGVmYXVsdCBlbnYuIGFjY29yZGluZ2x5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEphbiBXcm9iZWwgPHdyckBzZW1paGFsZi5jb20+CiAgICBBY2tlZC1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KCmNvbW1pdCA5MDQ1ZjMzYzAyM2Y2OTg2NjBhMmU0NWQxYjIxOTRjMDcxMWFiZWJjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIEp1biA4IDEwOjI0OjU4IDIwMDcgKzAyMDAKCiAgICBGaXggY29uZmlnIHByb2JsZW1zIG9uIFNDMyBib2FyZDsgbWFrZSBpZGVfcmVzZXRfdGltZW91dCB3b3JrLgoKY29tbWl0IGZiYTNmYjA0NDliOGE1NDU0MmFlZDFlNzI5ZGU3NmU3ZjVhMmZmMWIKQXV0aG9yOiBCZW5vw650IE1vbmluIDxibW9uaW5AYWRlbmVvLmV1PgpEYXRlOglGcmkgSnVuIDggMDk6NTU6MjQgMjAwNyArMDIwMAoKICAgIFtQQVRDSF0gZml4IGdwaW8gc2V0dGluZyB3aGVuIHVzaW5nIENGR180NDBfR1BJT19UQUJMRQoKICAgIFNldCB0aGUgY29ycmVjdCB2YWx1ZSBpbiBHUElPeF9UQ1Igd2hlbiBjb25maWd1cmluZyB0aGUgZ3BpbwogICAgd2l0aCBDRkdfNDQwX0dQSU9fVEFCTEUuCgogICAgU2lnbmVkLW9mZi1ieTogQmVub2l0IE1vbmluIDxibW9uaW5AYWRlbmVvLmV1PgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGY1MzllZGMwNzZjZmU1MmJmZjkxOWRkNTEyYmE4ZDdhZjBlMjIwOTIKQXV0aG9yOiBWYWRpbSBCZW5kZWJ1cnkgPHZiZW5kZWJAZ29vZ2xlLmNvbT4KRGF0ZToJVGh1IE1heSAyNCAxNTo1MjoyNSAyMDA3IC0wNzAwCgogICAgY29zbWV0aWMgY2hhbmdlcyB0byBiY201NzB4IGRyaXZlcgoKICAgIFRoaXMgaXMgYSBjb3NtZXRpYyBvbmx5IGNoYW5nZXMgc3VibWlzc2lvbi4KICAgIEl0IGFmZmVjdHMgZmlsZXMgcmVsZXZhbnQgdG8gYmNtNTcweCBkcml2ZXIuCiAgICB0aGUgY29tbWFuZHMgdXNlZCB0byBnZW5lcmF0ZSB0aGlzIGNoYW5nZSB3YXMKCiAgICBjZCBkcml2ZXJzCiAgICBMaW5kZW50IC1wY3MgLWw4MCAgYmNtNTcweC5jICAgYmNtNTcweF9sbS5oICAgYmNtNTcweF9tbS5oCXRpZ29uMy5jICB0aWdvbjMuaAoKICAgIFRoZSBCTVcgdGFyZ2V0ICh0aGUgb25seSBvbmUgdXNpbmcgdGhpcyBjaGlwIHNvIGZhcikgYnVpbGRzIGNsZWFubHksIHRoZQogICAgYGJlZm9yZSBhbmQgYWZ0ZXInIGdlbmVyYXRlZCBvYmplY3QgZmlsZXMgZm9yIGRyaXZlcnMvYmNtNTcweC5jIGFuZAogICAgZHJpdmVycy90aWdvbjMubyBhcmUgaWRlbnRpY2FsIGFzIHJlcG9ydGVkIGJ5IG9iamR1bXAgLWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBWYWRpbSBCZW5kZWJ1cnkgPHZiZW5kZWJAZ29vZ2xlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJ3YXJyZW5AcXN0cmVhbXMuY29tPgoKY29tbWl0IDcyNTY3MWNjZDJjZDA0YzllYmM1MGM5ZTVhOTRkZDhjYmFkZTY2YjcKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgSnVuIDYgMTY6MjY6NTYgMjAwNyArMDIwMAoKICAgIENvZGluZyBTdHlsZSBjbGVhbnVwOyBnZW5lcmF0ZSBuZXcgQ0hBTkdFTE9HIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAxOWQ3NjNjMzVlMGI1NTY4ZWFmMGI4YWRiZjdhNjhjY2ZlN2ZhMjQzCkF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KRGF0ZToJV2VkIEp1biA2IDExOjQ5OjQ0IDIwMDcgKzAyMDAKCiAgICBUUkFCLCBVU0I6IHVwZGF0ZSB0cmFiIGJvYXJkIGNvbmZpZ3VyYXRpb24gZm9yIHVzZSBvZiBnZW5lcmljIG9oY2kgZHJpdmVyCgpjb21taXQgZGFjZTQ1YWNkMWMxMzU3ZGFhOTMyMjA5OWQwN2M5YTllMDhiMDAyNApBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CVdlZCBKdW4gNiAxMTo0OTo0MyAyMDA3ICswMjAwCgogICAgVVNCOiBvaGNpIGZpeGVzIGFuZCBjbGVhbnVwIGZvciBwcGM0eHggYW5kIHlvc2VtaXRlIGJvYXJkLgoKY29tbWl0IDcyNjU3NTcwYjYxNjM1Yzc0ZmEwYzNmMGU5ZTdkMDY3MWE5ZDA4ZGYKQXV0aG9yOiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgpEYXRlOglXZWQgSnVuIDYgMTE6NDk6NDMgMjAwNyArMDIwMAoKICAgIFVTQjogb2hjaSBmaXhlcyBhbmQgY2xlYW51cCBmb3IgbXBjNXh4eCBhbmQgSWNlQ3ViZSBib2FyZCBjb25maWcKCmNvbW1pdCBmYzQzYmU0NzhmMmFhMzdjZTM4YWNkODUzNTUwMzg4NjZlNDE2MmFmCkF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KRGF0ZToJV2VkIEp1biA2IDExOjQ5OjM1IDIwMDcgKzAyMDAKCiAgICBVU0IvT0hDSTogZW5kaWFubmVzcyBjbGVhbnVwIGluIHRoZSBnZW5lcmljIG9oY2kgZHJpdmVyCgpjb21taXQgYzQ0MGJmZTZkNmQ5MmQ2NjQ3OGE3ZTg0NDAyYjMxZjQ4NDEzNjE3YgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEp1biA2IDExOjQyOjEzIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBOQU5EIGJvb3Rpbmcgc3VwcG9ydCBmb3IgQU1DQyBBY2FkaWEgKDQwNUVaKSBldmFsIGJvYXJkCgogICAgVGhpcyBwYXRjaCBhZGRzIE5BTkQgYm9vdGluZyBzdXBwb3J0IGZvciB0aGUgQU1DQyBBY2FkaWEgZXZhbCBib2FyZC4KCiAgICBQbGVhc2UgbWFrZSBzdXJlIHRvIGNvbmZpZ3VyZSBqdW1wZXIgSjcgdG8gcG9zaXRpb24gMi0zIHdoZW4gYm9vdGluZwogICAgZnJvbSBOT1IsIGFuZCB0byBwb3NpdGlvbiAxLTIgd2hlbiBib290aW5nIGZvciBOQU5ELgoKICAgIEkgYWxzbyBhZGRlZCBhIGJvYXJkIGNvbW1hbmQgdG8gY29uZmlndXJlIHRoZSBJMkMgYm9vdHN0cmFwIEVFUFJPTQogICAgdmFsdWVzLiBSaWdodCBub3cgb25seSAyNjdNSHogaXMgc3VwcG9ydCBmb3IgYm9vdGluZyBlaXRoZXIgdmlhIE5PUgogICAgb3IgTkFORCBGTEFTSC4gSGVyZSB0aGUgdXNhZ2U6CgogICAgPT4gYm9vdHN0cmFwIDI2NyBub3IJO3RvIGNvbmZpZ3VyZSB0aGUgYm9hcmQgZm9yIDI2N01IeiBOT1IgYm9vdGluZwogICAgPT4gYm9vdHN0cmFwIDI2NyBuYW5kCTt0byBjb25maWd1cmUgdGhlIGJvYXJkIGZvciAyNjdNSHogTk5BTkQgYm9vdGluZwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxODEzNTEyNWY5MDk5NDhiODVkMWQ2ODgxYWI0YWMwZWZiNGExYzU4CkF1dGhvcjogUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAbGludXguaXQ+CkRhdGU6CVdlZCBKdW4gNiAxMDowODoxNCAyMDA3ICswMjAwCgogICAgRmlsZXMgaW5jbHVkZS9saW51eC9ieXRlb3JkZXIve2JpZyxsaXR0bGV9X2VuZGlhbi5oIGRlZmluZQogICAgX19CSUdfRU5ESUFOIGFuZCBfX0xJVFRMRV9FTkRJQU4uCgogICAgU2lnbmVkLW9mZi1ieTogUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAbGludXguaXQ+Cgpjb21taXQgYTgxZDFjMGI4NWIxM2U5ZDQ1ZjJkODdkZTk2YTUxYTZlMGVmMGY4MgpBdXRob3I6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKdW4gNiAxMDowODoxNCAyMDA3ICswMjAwCgogICAgQWRkIFVTQiBQQ0ktT0hDSSwgVVNCIGtleWJvYXJkIGFuZCBldmVudCBwb2xsIHN1cHBvcnQgdG8gdGhlCiAgICBNUEM4NjQxSFBDTiBib2FyZCBjb25maWcgZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRkYWUxNGNlOGZiZGYzODAwMTdkYzU0ZjE3MjIxOGU3ZDJhY2M4ODkKQXV0aG9yOiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDYgMTA6MDg6MTQgMjAwNyArMDIwMAoKICAgIFVTQiBQQ0ktT0hDSSwgaW50ZXJydXB0IHBpcGUgYW5kIHVzYiBldmVudCBwb2xsIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZGVkIFVTQiBQQ0ktT0hDSSBjaGlwcyBzdXBwb3J0LCBpbnRlcnJ1cHQgcGlwZSBzdXBwb3J0CiAgICBhbmQgdXNiIGV2ZW50IHBvbGwgc3VwcG9ydC4gRm9yIHN1cHBvcnRpbmcgdGhlIFVTQiBpbnRlcnJ1cHQgcGlwZSwgdGhlCiAgICBnbG9iZSB1cmJfcHJpdiBpcyBtb3ZlZCB0byBwdXJiIGluIGVkIHN0cnVjdC4gTm93LCB3ZSBjYW4gcHJvY2VzcwogICAgc2V2ZXJhbCB1cmJzIGF0IG9uZSB0aW1lLiBUaGUgaW50ZXJydXB0IHBpcGUgc3VwcG9ydCBjb2RlcyBhcmUgcG9ydGVkCiAgICBmcm9tIExpbnV4IGtlcm5lbCAyLjQuCgogICAgU2lnbmVkLW9mZi1ieTogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmZGNmYWExYjAyMjY4YjI4OTllMzc0YjM1YWRmOTM2YzkxMWE0N2ViCkF1dGhvcjogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1biA2IDEwOjA4OjEzIDIwMDcgKzAyMDAKCiAgICBVU0IgZXZlbnQgcG9sbCBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBhZGRzIFVTQiBldmVudCBwb2xsIHN1cHBvcnQsIHdoaWNoIGNvdWxkIGJlIHVzZWQgaW4gdXNia2JkCiAgICBhbmQgb3RoZXIgdXNiIGRldmljZXMgZHJpdmVyIHdoZW4gdGhlIGFzeW5jaHJvbm91cyBpbnRlcnJ1cHQKICAgIHByb2Nlc3NpbmcgaXMgc3VwcG9ydGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20KCmNvbW1pdCA5YTFkMDBmYTQ3YzFlMDVlM2ZkYjYwYjMzMjEzYWY0ZTE4ZDRjMThlCkF1dGhvcjogUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAbGludXguaXQ+CkRhdGU6CVdlZCBKdW4gNiAxMDowODoxMiAyMDA3ICswMjAwCgogICAgSVNQMTE2eDogZGVsYXkgZm9yIGNyYXBweSBVU0Iga2V5cwoKICAgIFVzaW5nIHNvbWUgKHZlcnkpIHNsb3cgVVNCIGtleXMgY2F1c2UgdGhlIFVTQiBob3N0IGNvbnRyb2xsZXIgYnVmZmVycwogICAgYXJlIG5vdCByZWFkeSB0byBiZSByZWFkIGJ5IHRoZSBDUFUgc28gd2UgbmVlZCBhbiBleHRyYSBkZWxheSBiZWZvcmUKICAgIHJlYWRpbmcgdGhlIFVTQiBzdG9yYWdlIGRhdGEuCgogICAgU2lnbmVkLW9mZi1ieTogUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAbGludXguaXQ+Cgpjb21taXQgMDk0NDQxNDM2NzBjOWMyMjQzY2I3YWJhOWY3MGIzNzEzZDMzYmVkMQpBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CVdlZCBKdW4gNiAxMDowODoxMiAyMDA3ICswMjAwCgogICAgQ2hhbmdlIGR1cGxpY2F0ZSB1c2JfY3B1X2luaXRfZmFpbCB0byB1c2JfYm9hcmRfaW5pdF9mYWlsCgogICAgVGhhbmtzIHRvIExpZXcgVHNpIENodW5nIDxUc2ktY2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPiBmb3IgcG9pbnRpbmcKICAgIHRoaXMgb3V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgMzI5MjJjZGM0NzBmZGZkMzliZWEwYzFjNGY1ODJkM2ZiMzQwNDIxZQpBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdW4gNSAxMjozMDo1MiAyMDA3IC0wNTAwCgogICAgbXBjODY0MSBpbWFnZSBzaXplIGNsZWFudXAKCiAgICBlNjAwIGRvZXMgbm90IGhhdmUgYSBib290cGcgcmVzdHJpY3Rpb24uCiAgICBNb3ZlIHRoZSB2ZXJzaW9uIHN0cmluZyB0byBiZWdpbm5pbmcgb2YgaW1hZ2UgYXQgZmZmMDAwMDAuCiAgICBSZXNldHZlYy5TIGlzIG5vdCBuZWVkZWQuCiAgICBVcGRhdGUgZmxhc2ggY29weSBpbnN0cnVjdGlvbnMuCiAgICBBZGQgdGZ0cGZsYXNoIGVudiB2YXJpYWJsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGUzY2JlMWY5M2M1NzIyZjhlYmJhZDQ2OGUzMGMwNjlhMmI1MTEwOTcKQXV0aG9yOiBCZW5vw650IE1vbmluIDxibW9uaW5AYWRlbmVvLmV1PgpEYXRlOglNb24gSnVuIDQgMDg6MzY6MDUgMjAwNyArMDIwMAoKICAgIFtQQVRDSF0gRml4IHBwYzR4eCBib290c3RyYXAgbGV0dGVyIGRpc3BsYXllZCBvbiBzdGFydHVwCgogICAgVGhlIGF0dGFjaGVkIHBhdGNoIGlzIG1haW5seSBjb3NtZXRpYywgYWxsb3dpbmcgdS1ib290IHRvCiAgICBkaXNwbGF5IHRoZSBjb3JyZWN0IGJvb3RzdHJhcCBvcHRpb24gbGV0dGVyIGFjY29yZGluZyB0byB0aGUKICAgIGRhdGFzaGVldHMuCgogICAgVGhlIG9yaWdpbmFsIHBhdGNoIHdhcyBleHRlbmRlZCB3aXRoIDQwNUVaIHN1cHBvcnQgYnkgU3RlZmFuCiAgICBSb2VzZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW5vaXQgTW9uaW4gPGJtb25pbkBhZGVuZW8uZXU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNWIxMzEzZmIyNzU4ZmZjZThiNjI0NDU3Zjc3N2Q4Y2M2NzA5NjA4ZApBdXRob3I6IE5pa2l0YSBWLiBZb3VzaGNoZW5rbyA8eW91c2hAZGViaWFuLm9yZz4KRGF0ZToJV2VkIE1heSAyMyAxMjo0NToxOSAyMDA3ICswNDAwCgogICAgZml4IGNvbXBpbGF0aW9uIHByb2JsZW0gZm9yIG1wYzgzNDlpdHggQ0ZHX1JBTUJPT1QKCiAgICBDdXJyZW50IGluY2x1ZGUvY29uZmlncy9NUEM4MzQ5SVRYLmggZG9lcyBjb250YWluIHNvbWUgc3VwcG9ydCBmb3IgYnVpbGRpbmcKICAgIGltYWdlIHRoYXQgd2lsbCBiZSBzdGFydGVkIGZyb20gbWVtb3J5ICh3aXRob3V0IHB1dHRpbmcgaW4gaW50byBmbGFzaCkuCiAgICBJdCBjb3VsZCBiZSB0cmlnZ2VyZWQgYnkgYnVpbGRpbmcgd2l0aCBURVhUX0JBU0Ugc2V0IHRvIGEgbG93IHZhbHVlLgoKICAgIEhvd2V2ZXIsIHRoaXMgc3VwcG9ydCBpcyBpbmNvbXBsZXRlOiB1c2luZyBvZiBsb3cgVEVYVF9CQVNFIGNhdXNlcwogICAgZGVmaW5pbmcgY29uZmlndXJhdGlvbiBtYWNyb3MgaW4gaW5jb25zaXN0ZW50IHdheSwgd2hpY2ggbGF0ZXIgbGVhZHMKICAgIHRvIGNvbXBpbGF0aW9uIGVycm9ycy4gSW4gcGFydGljdWxhci4gZmxhc2ggc3VwcG9ydCBpcyBiZWluZyBkaXNhYmxlZCwKICAgIGJ1dCB0aGVuIGZsYXNoIHN0cnVjdHVyZXMgZ2V0IHJlZmVyZW5jZWQuCgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGlzLCBtYWtpbmcgaXQgcG9zc2libGUgdG8gYnVpbGQgd2l0aCBsb3cgVEVYVF9CQVNFLgoKICAgIFNpZ25lZC1PZmYtQnk6IE5pa2l0YSBZb3VzaGNoZW5rbyA8eW91c2hAZGViaWFuLm9yZz4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDhhMzY0ZjA5NzBkZTQ5OTQ5ZDYzNWU2MGFjY2Y0NjNjNjQ0M2VmOGMKQXV0aG9yOiBOaWtpdGEgVi4gWW91c2hjaGVua28gPHlvdXNoQGRlYmlhbi5vcmc+CkRhdGU6CVdlZCBNYXkgMjMgMTI6NDU6MjUgMjAwNyArMDQwMAoKICAgIGFkZCBtaXNzaW5nICdjb25zb2xlJyB2YXIgdG8gZGVmYXVsdCBtcGM4MzQ5aXR4IGNvbmZpZwoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMThkMTU2ZWIzN2M5MGZhZGM4ZWM3YTgxYTNiODkxNzYxNjFmODViNwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEp1biAxIDE2OjE4OjE3IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBtaXNzaW5nIGZpbGUgZm9yIEJhbWJvbyBOQU5EIGJvb3Rpbmcgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxNTVhOTY0NzhhMDg4MWU2ZGE5NmNiYmJjZjM0OTUyZDZhM2IxYjRiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVuIDEgMTU6NTg6MTkgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogVW5kbyBTZXF1b2lhIHBhdGNoIGZvciBkeW5hbWljIEVCQyBzcGVlZCBzdXBwb3J0IG9mIDgzTUh6CgogICAgVGhpcyBwYXRjaCB1bmRvZXMgdGhlIHBhdGNoIGJ5IEplZmYgTWFubiB3aXRoIGNvbW1pdC1pZCBhZGE0Njk3ZC4gQXMKICAgIHN1Z2dlc3RlZCBieSBBTUNDIGl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byBkeW5hbWljYWxseSBjaGFuZ2UgdGhlIEVCQwogICAgc3BlZWQgYWZ0ZXIgYm9vdHVwLiBTbyB3ZSB1bmRvIHRoaXMgY2hhbmdlIHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDlkOTA5NjA0M2U4ZjcxM2Q0YmYxNzQzZDMyZTE0NTllNmExMTY0NGIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBKdW4gMSAxNToyOTowNCAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgU2VxdW9pYSBOQU5EIGJvb3Rpbmcgc3VwcG9ydCB3aXRoIEVDQwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjZjk1OWM3ZDY2ODc1NjdjMzA4ZTM2NmU5NTgxZTFhNWFmZjVjYzViCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVuIDEgMTU6Mjc6MTEgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogQWRkIE5BTkQgYm9vdGluZyBzdXBwb3J0IGZvciBBTUNDIEJhbWJvbyAoNDQwRVApIGV2YWwgYm9hcmQKCiAgICBUaGlzIHBhdGNoIGFkZHMgTkFORCBib290aW5nIHN1cHBvcnQgZm9yIHRoZSBBTUNDIEJhbWJvbyBldmFsIGJvYXJkLgogICAgU2luY2UgdGhlIE5BTkQtU1BMIGJvb3QgaW1hZ2UgaXMgbGltaXRlZCB0byA0a2J5dGVzLCB0aGlzIHZlcnNpb24KICAgIG9ubHkgc3VwcG9ydHMgdGhlIG9uYm9hcmQgNjRNQnl0ZXMgb2YgRERSLiBUaGUgRElNTSBtb2R1bGVzIGNhbid0IGJlCiAgICBzdXBwb3J0ZWQsIHNpbmNlIHRoZSBzZXR1cCBjb2RlIGZvciBJMkMgRElNTSBhdXRvZGV0ZWN0aW9uIGFuZAogICAgY29uZmlndXJhdGlvbiBpcyB0b28gYmlnIGZvciB0aGlzIE5BTkQgYm9vdGxvYWRlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNDJiZTU2ZjUzYzhiMTA3ODY4ZTYxMjVjODUyNGFlODQyOTNlOTVhNwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEp1biAxIDE1OjIzOjA0IDIwMDcgKzAyMDAKCiAgICBOQU5EOiBBZGQgRUNDIHN1cHBvcnQgdG8gTkFORCBib290aW5nIHN1cHBvcnQgaW4gbmFuZF9zcGwvbmFuZF9ib290LmMKCiAgICBUaGUgVS1Cb290IE5BTkQgYm9vdGluZyBzdXBwb3J0IGlzIG5vdyBleHRlbmRlZCB0byBzdXBwb3J0IEVDQwogICAgdXBvbiBsb2FkaW5nIG9mIHRoZSBOQU5EIFUtQm9vdCBpbWFnZS4KCiAgICBUZXN0ZWQgb24gQU1DQyBTZXF1b2lhICg0NDBFUHgpIGFuZCBCYW1ib28gKDQ0MEVQKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYTQ3MWRiMDdmYmI2NWE4NDFmZmM5ZjRmMTEyNTYyYjk0NTIzMGY5OApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEp1biAxIDE1OjE5OjI5IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFByZXBhcmUgQmFtYm9vIHBvcnQgZm9yIE5BTkQgYm9vdGluZyBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCB1cGRhdGVzIHRoZSAibm9ybWFsIiBCYW1ib28gTk9SIGJvb3RpbmcgcG9ydCwgc28KICAgIHRoYXQgaXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBjb21pbmcgc29vbiBOQU5EIGJvb3RpbmcKICAgIEJhbWJvbyBwb3J0LgoKICAgIEl0IGFsc28gZW5hYmxlcyB0aGUgMm5kIE5BTkQgZmxhc2ggb24gdGhlIEJhbWJvby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNTNhZDAyMTAzZmI4YmU0MTM4YTk5MzdhOGFiOTFmY2RmZjdiNDk4NwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEp1biAxIDE1OjE2OjU4IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBpbl9iZTMyKCkgZnVuY3Rpb25zIGFuZCBmcmllbmRzIHRvIGxhdGVzdCBMaW51eCB2ZXJzaW9uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDkxZGEwOWNmYmNlMGMxZGUwNWQ2ZDg0YWE4MzYzZDY2NmZhN2VhM2MKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBKdW4gMSAxNToxNToxMiAyMDA3ICswMjAwCgogICAgTkFORDogQWRkIGhhcmR3YXJlIEVDQyBzdXBwb3J0IHRvIHRoZSBQUEM0eHggTkFORCBkcml2ZXIgbmRmYy5jCgogICAgVGhpcyBwYXRjaCBhZGRzIGhhcmR3YXJlIEVDQyBzdXBwb3J0IHRvIHRoZSBOREZDIGRyaXZlci4gSXQgYWxzbwogICAgY2hhbmdlcyB0aGUgcmVnaXN0ZXIgYWNjZXNzIGZyb20gdXNpbmcgdGhlICJzaW1wbGUiIGluMzIvb3V0MzIKICAgIGZ1bmN0aW9ucyB0byB0aGUgaW5fYmUzMi9vdXRfYmUzMiBmdW5jdGlvbnMsIHdoaWNoIG1ha2Ugc3VyZQogICAgdGhhdCB0aGUgYWNjZXNzIGlzIGNvcnJlY3RseSBzeW5jZWQuIFRoaXMgaXMgdGhlIG9ubHkgcmVjb21tZW5kZWQKICAgIGFjY2VzcyB0byBTb0MgcmVnaXN0ZXJzIGluIHRoZSBjdXJyZW50IExpbnV4IGtlcm5lbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMTdiNWU4NjIyODdjY2E3NmYxOWRjZjhiNzQxZTYxYTdkMDY2MTdmMgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEp1biAxIDE1OjEyOjE1IDIwMDcgKzAyMDAKCiAgICBOQU5EOiBVcGRhdGUgbmFuZF9lY2MuYyB0byBsYXRlc3QgTGludXggdmVyc2lvbgoKICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyB0aGUgbmFuZF9lY2MgY29kZSB0byB0aGUgbGF0ZXN0IExpbnV4IHZlcnNpb24uCiAgICBUaGUgbWFpbiByZWFzb24gZm9yIHRoaXMgaXMgdGhlIG1vcmUgY29tcGFjdCBjb2RlLiBUaGlzIG1ha2VzCiAgICBpdCBwb3NzaWJsZSB0byBpbmNsdWRlIHRoZSBFQ0MgY29kZSBpbnRvIHRoZSBOQU5EIGJvb3Rsb2FkZXIKICAgIGltYWdlIChOQU5EX1NQTCkgZm9yIFBQQzR4eC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZDJkNDMyNzYwZDIxOTlkMGU4NTU4ZmRkOWQxNzg5YjgxMzFhYmNmNwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEp1biAxIDE1OjA5OjUwIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IDQ0eCBERFIgZHJpdmVyIGNvZGUgY2xlYW51cCBhbmQgc21hbGwgZml4IGZvciBCYW1ib28KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZTRiYmVkMjgwM2EyYWQwNTIxYzczNjJmNWQzZTA2NWY5OWFiYWVkYwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEp1biAxIDEzOjQ1OjI0IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IENoYW5nZSBMdWFuIGNvbmZpZyBmaWxlIHRvIHN1cHBvcnQgRUNDCgogICAgV2l0aCB0aGUgdXBkYXRlZCA0NHggRERSMiBkcml2ZXIgdGhlIEx1YW4gYm9hcmQgbm93IHN1cHBvcnRzCiAgICBFQ0MgZ2VuZXJhdGlvbiBhbmQgY2hlY2tpbmcuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDcxODdkYjczNDkxYzhkZTBmYjU2ZWZiNWU1MTM0YmE1ZWM0NDMwODkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBKdW4gMSAxMzo0NTowMCAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgNDR4X3NwZF9kZHIyIGNvZGUgKDQ0MFNQLzQ0MFNQZSkKCiAgICBBZGQgY29uZmlnIG9wdGlvbiBmb3IgMTgwIGRlZ3JlZSBhZHZhbmNlIGNsb2NrIGNvbnRyb2wgYXMgbmVlZGVkCiAgICBmb3IgdGhlIEFNQ0MgTHVhbiBldmFsIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlZTE1Mjk4MzhhYmJmYWEzNWYxNGUzZmZiZWFhYmE2OTMxNTk0NzVmCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IE1heSAzMSAxNzoyMDowOSAyMDA3ICswMjAwCgogICAgQWRkIHN1cHBvcnQgZm9yIFNUWCBHUDNTU0EgKHN0eHNzYSkgQm9hcmQgd2l0aCA0IE1pQiBmbGFzaC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDcwNDkyODhmYjFmMTZmMWIzMTcxNDAyMjZjZGViZDA3YmQ0MTYzOTUKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglTdW4gTWF5IDI3IDE3OjI2OjQ2IDIwMDcgKzAyMDAKCiAgICBNb3Rpb24tUFJPOiBDb2RlIGNsZWFudXAsIGZpeCBvZiBhIHR5cG8gaW4gT0ZfU1RET1VUX1BBVEguCgogICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KCmNvbW1pdCA0NTIwZmQ0ZDJjNDUwZGE0OTYzNzIxNmFhMGU1MzczOWI2MWM2MGFjCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJU3VuIE1heSAyNyAxNzowNjozNiAyMDA3ICswMjAwCgogICAgTW90aW9uLVBSTzogQWRkIHN1cHBvcnQgZm9yIHJlZHVuZGFudCBlbnZpcm9ubWVudC4KCiAgICBFbmFibGUgcmVkdW5kYW50IGVudmlyb25tZW50LCBhZGQgYSBNVEQgcGFydGl0aW9uIGZvciBpdDsgYWxzbyBhZGQgZW52LgogICAgdmFyaWFibGUgY29tbWFuZCBmb3IgcGFzc2luZyBNVEQgcGFydGl0aW9ucyB0byB0aGUga2VybmVsIGNvbW1hbmQgbGluZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQaW90ciBLcnVzenluc2tpIDxwcGtAc2VtaWhhbGYuY29tPgogICAgQWNrZWQtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgYTI2ZWFiZWVjMzE3NDZmMDZkMzA5MTAzNjkwODkyODA1Njk2ZTM0NApBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVN1biBNYXkgMjcgMTc6MDU6MTEgMjAwNyArMDIwMAoKICAgIE1vdGlvbi1QUk86IENoYW5nZSBtYXhpbXVtIGNvbnNvbGUgYnVmZmVyIHNpemUgZnJvbSAyNTYgdG8gMTAyNCBieXRlcy4KCiAgICBBbGxvdyBwYXNzaW5nIGxvbmdlciBjb21tYW5kIGxpbmUgdG8gdGhlIGtlcm5lbCAtIHVzZWZ1bCBlc3BlY2lhbGx5CiAgICBmb3IgcGFzc2luZyBNVEQgcGFydGl0aW9uIGxheW91dC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQaW90ciBLcnVzenluc2tpIDxwcGtAc2VtaWhhbGYuY29tPgogICAgQWNrZWQtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgOTE2MGI5NmY3MTQ4M2ExMTZkZTgxYzY4OTg1ZThlZTMwNmQzNjc2NApBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVN1biBNYXkgMjcgMTc6MDQ6MTggMjAwNyArMDIwMAoKICAgIEZpeDogQWRkIG1pc3NpbmcgTlVMTCB0ZXJtaW5hdGlvbiBpbiBzdHJpbmdzIGV4cGFuZGVkIGJ5IG1hY3JvcyBwYXJzZXIuCgogICAgU2lnbmVkLW9mZi1ieTogUGlvdHIgS3J1c3p5bnNraSA8cHBrQHNlbWloYWxmLmNvbT4KICAgIEFja2VkLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDYzMGVjODRhZWY3MjI4ZmMxZGJmYjM4ZGVjNzg1NDE0MDNhNzg2Y2QKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglTdW4gTWF5IDI3IDE3OjAzOjM3IDIwMDcgKzAyMDAKCiAgICBNb3Rpb24tUFJPOiBVcGRhdGUgRUVQUk9NJ3MgcGFnZSB3cml0ZSBiaXRzIGFuZCB3cml0ZSBkZWxheS4KCiAgICBDaGFuZ2UgRUVQUk9NIGNvbmZpZ3VyYXRpb24gYWNjb3JkaW5nIHRvIHRoZSBkYXRhc2hlZXQ6ICJUaGUgMjRDMDFBIGFuZCAyNEMwMkEKICAgIGhhdmUgYSBwYWdlIHdyaXRlIGNhcGFiaWxpdHkgb2YgdHdvIGJ5dGVzIiwgYW5kICJUaGlzIGRldmljZSBvZmZlcnMgZmFzdCAoMW1zKQogICAgYnl0ZSB3cml0ZSIuIEFkZCAzbXMgb2YgZXh0cmEgZGVsYXkuCgogICAgU2lnbmVkLW9mZi1ieTogUGlvdHIgS3J1c3p5bnNraSA8cHBrQHNlbWloYWxmLmNvbT4KICAgIEFja2VkLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IGMwMDEyNWUwN2MxZWJjMTI1YmFiNDBlMWUxOGJjZWVkOGJlMGMxNjIKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglTdW4gTWF5IDI3IDE2OjU4OjQ1IDIwMDcgKzAyMDAKCiAgICBNUEM1WFhYLCBNb3Rpb24tUFJPOiBGaXggUEhZIGluaXRpYWxpemF0aW9uIHByb2JsZW0uCgogICAgQWZ0ZXIgYmVpbmcgcmVzZXQgaW4gbXBjNXh4eF9mZWNfaW5pdF9waHkoKSwgUEhZIGdvZXMgaW50byBGWCBtb2RlLCBpbiB3aGljaAogICAgbmV0d29ya2luZyBkb2VzIG5vdCBmdW5jdGlvbi4gVGhpcyBjb21taXQgc3dpdGNoZXMgUEhZIHRvIFRYIG1vZGUgYnkgY2xlYXJpbmcKICAgIHRoZSBGWF9TRUwgYml0IG9mIE1vZGUgQ29udHJvbCBSZWdpc3Rlci4gSXQgYWxzbyByZXZlcnNlcyBjb21taXQKICAgIDAwODg2MWEyZjNlZjJjMDYyNzQ0ZDczMzc4N2M3ZTUzMGExYjg3NjEsIGkuZS4sIGEgdGVtcG9yYXJ5IHdvcmthcm91bmQuCgogICAgU2lnbmVkLW9mZi1ieTogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+CiAgICBBY2tlZC1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KCmNvbW1pdCA5M2I3OGY1MzRhNmU3MDhiNGNmMWE0ZmZiNGQ4NDM4YzY3YTAwN2RiCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJU3VuIE1heSAyNyAxNjo1NzoxNSAyMDA3ICswMjAwCgogICAgTW90aW9uLVBSTzogQWRkIHN1cHBvcnQgZm9yIHRoZSB0ZW1wZXJhdHVyZSBzZW5zb3IuCgogICAgU2lnbmVkLW9mZi1ieTogUGlvdHIgS3J1c3p5bnNraSA8cHBrQHNlbWloYWxmLmNvbT4KICAgIEFja2VkLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IGM3NWU2Mzk2MzBjYzEzMmRjMTljZDFlY2RhNTkyMmMwZGIwYmZiYmEKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglTdW4gTWF5IDI3IDE2OjU1OjIzIDIwMDcgKzAyMDAKCiAgICBNb3Rpb24tUFJPOiBBZGQgZGlzcGxheWluZyBvZiBDUExEIHJldmlzaW9uIGluZm9ybWF0aW9uIGR1cmluZyBib290LgoKICAgIFNpZ25lZC1vZmYtYnk6IEphbiBXcm9iZWwgPHdyckBzZW1paGFsZi5jb20+CiAgICBBY2tlZC1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KCmNvbW1pdCBjOTk1MTJkNmJkMzk3M2YwMWNhMmZjNDg5NmQ4MjliNDZlNjhmMTUwCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJU3VuIE1heSAyNyAxNjo1Mzo0MyAyMDA3ICswMjAwCgogICAgTVBDNXh4eDogQ2hhbmdlIG5hbWVzIG9mIGRlZmluZXMgcmVsYXRlZCB0byBJUEIgYW5kIFBDSSBjbG9ja3MuCgogICAgQm90aCBDRkdfUENJU1BFRURfNjYgYW5kIENGR19JUEJTUEVFRF8xMzMgYXJlIG1pc25hbWVkLCBhcyBkZWZpbmluZwogICAgdGhlbSBkb2VzIG5vdCBjYXVzZSBQQ0kgb3IgSVBCIGNsb2NrcyB0byBydW4gYXQgdGhlIHNwZWNpZmllZCBzcGVlZC4KICAgIEluc3RlYWQsIHRoZXkgY29uZmlndXJlIGRpdmlzb3JzIHVzZWQgdG8gY2FsY3VsYXRlIHNhaWQgY2xvY2tzLiBUaGlzCiAgICBwYXRjaCByZW5hbWVzIHRoZSBkZWZpbmVzIGFjY29yZGluZyB0byB0aGVpciByZWFsIGZ1bmN0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgogICAgQWNrZWQtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgYTExYzBiODVkYzM2NjRiYjNjMWU3ODExMzcxMTg3MzBjOGY2MTlhYgpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVN1biBNYXkgMjcgMTY6NTE6NDggMjAwNyArMDIwMAoKICAgIE1vdGlvbi1QUk86IEFkZCBMRUQgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYW4gV3JvYmVsIDx3cnJAc2VtaWhhbGYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KICAgIEFja2VkLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDdlYmI0NDc5YjA3ZmYyOTRlYjRkNzZlNDIwNzUzYTAzNDlmN2M5M2IKQXV0aG9yOiBVbGYgU2FtdWVsc3NvbiA8dWxmQGF0bWVsLmNvbT4KRGF0ZToJVGh1IE1heSAyNCAxMjoxMjo0NyAyMDA3ICswMjAwCgogICAgW1BBVENIXVtOQU5EXSBEZWZpbmUgdGhlIFZlbmRvciBJZCBmb3IgTWljcm9uIE5BTkQgRmxhc2gKCiAgICBTaWduZWQtb2ZmLWJ5OiBVbGYgU2FtdWVsc3NvbiA8dWxmQGF0bWVsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkNzU2ODk0NzIyYzg4OGQwOWE5ZmExZGY4MzIzNzUzNzcyZDNkY2NlCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgTWF5IDI0IDA5OjQ5OjAwIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBzbWFsbCA0MDVFWiBPQ00gaW5pdGlsaXphdGlvbiBidWcgaW4gc3RhcnQuUwoKICAgIEFzIHBvaW50ZWQgb3V0IGJ5IEJydWNlIEFkbGVyIDxicnVjZS5hZGxlckBhY20ub3JnPiB0aGlzIHBhdGNoCiAgICBmaXhlcyBhIHNtYWxsIGJ1ZyBpbiB0aGUgNDA1RVogT0NNIGluaXRpYWxpemF0aW9uLiBUaGFua3MgZm9yCiAgICBzcG90dGluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNWQ0YTE3OTAxM2Q1OWE3NjQ0NjQ2MmUxZWIwYTk2OWZiYTYzZWI4MQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE1heSAyNCAwODoyMjowOSAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgQU1DQyBBY2FkaWEgc3VwcG9ydCBmb3IgYm9hcmQgcmV2aXNpb24gMS4xCgogICAgVGhpcyBwYXRjaCB1cGRhdGVzIHRoZSBBY2FkaWEgKDQwNUVaKSBzdXBwb3J0IGZvciB0aGUgbmV3IDEuMSBib2FyZAogICAgcmV2aXNpb24uIEl0IGFsc28gYWRkcyBzdXBwb3J0IGZvciBOQU5EIEZMQVNIIHZpYSB0aGUgNHh4IE5ERkMuCgogICAgUGxlYXNlIG5vdGUgdGhhdCB0aGUganVtcGVyIEo3IG11c3QgYmUgaW4gcG9zaXRpb24gMi0zIGZvciB0aGlzCiAgICBOQU5EIHN1cHBvcnQuIFBvc2l0aW9uIDEtMiBpcyBmb3IgTkFORCBib290aW5nIG9ubHkuIE5BTkQgYm9vdGluZwogICAgc3VwcG9ydCB3aWxsIGZvbGxvdyBsYXRlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODIyZDU1MzY1YmI1NTdlMDg0ZDBlMzM2MjVhNmRlZGNjODY2MTEwYgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXkgMjMgMTQ6MDk6NDYgMjAwNyAtMDUwMAoKICAgIEFkZCBMSVNUXzg2eHggTUFLRUFMTCB0YXJnZXQgZm9yIFBvd2VyUEMgYnVpbGRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOWYwMDc3YWJkNjlmN2E3Yzc1NmE5MTViOTYxMDM3MzAyYmUzZTZmMgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIE1heSAyMiAxMjo0ODowOSAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBVc2UgZG8geyAuLi4gfSB3aGlsZSAoMCkgZm9yIENQUiAmIFNEUiBhY2Nlc3MgbWFjcm9zCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDZmM2RmYzEzOWE4MzhiMDg0MWMxNTFlZmUwMGFkNDdkYjIzNjZlNzkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXkgMjIgMTI6NDY6MTAgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogQWRkIDQwNSBzdXBwb3J0IHRvIDR4eCBOQU5EIGRyaXZlciBuZGZjLmMKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgNDA1IFBQQydzIHRvIHRoZSA0eHggTkFORCBkcml2ZXIKICAgIG5kZmMuYy4gVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIG5ldyBBTUNDIDQwNUVaLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxMDYwM2Q3Njc2NzQyNmJlODAzZGFkZDRmYjY4OGI5N2ViNjk0ODFjCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gTWF5IDIxIDA3OjQxOjIyIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBwcm9ibGVtIGluIDQwNUVaIE9DTSBpbml0aWFsaXphdGlvbgoKICAgIEFzIHNwb3R0ZWQgYnkgQnJ1Y2UgQWRsZXIgdGhpcyBwYXRjaCBmaXhlcyBhbiBpbml0aWFsaXphdGlvbiBwcm9ibGVtCiAgICBmb3IgdGhlIDQwNUVaIE9DTS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgM2UzYjk1NjkwNmViYTllNGFkNzkzMTU4MWVjZWRhYWQxMGVjY2NlOApBdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+CkRhdGU6CUZyaSBNYXkgMTggMTY6NDc6MDMgMjAwNyArMDEwMAoKICAgIFJlZHVjZSBsaW5lIGxlbmd0aHMgdG8gODAgY2hhcmFjdGVycyBtYXguCgpjb21taXQgOTNlZjQ1YzlkZGZkZDlmYzE3YzRlNzRiZDhlMmYyNDU2NTgwZWI3MgpBdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+CkRhdGU6CUZyaSBNYXkgMTggMTQ6MzQ6MDcgMjAwNyArMDEwMAoKICAgIE1ha2VmaWxlIHBlcm1pc3Npb25zCgpjb21taXQgMTQ0M2EzMTQ1N2Q2OGY3ZThmMGI5NDAzZTk4MzJlYzFlNzlkYzU5ZApBdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+CkRhdGU6CUZyaSBNYXkgMTggMTQ6MzM6MTEgMjAwNyArMDEwMAoKICAgIE1ha2VmaWxlIHBlcm1pc3Npb25zCgpjb21taXQgMjU1YTM1NzdjODQ4NzA2NDQxZGFlZTAxNzQ1NDNlZmUyMDVhNzdmOApBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXkgMTYgMTY6NTI6MTkgMjAwNyAtMDUwMAoKICAgIFJlZHVjZSBDT05GSUdfTVBDOFlYWF9UU0VDeCB0byBDT05GSUdfVFNFQ3gKCiAgICBGb3IgYWxsIHByYWN0aWNhbCB1LWJvb3QgcHVycG9zZXMsIFRTRUNzIGRvbid0IGRpZmZlciB0aHJvdWdob3V0IHRoZQogICAgbXBjOFszNTZdeHggZmFtaWxpZXM7IHJlZHVjZSBDT05GSUdfTVBDOFlYWF9UU0VDeCB0byBDT05GSUdfVFNFQ3guCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3MDEyNGMyNjAyYWUyZDRjNWQzZGJhMDViNDgyZDkxNTQ4MjQyZGU4CkF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CVdlZCBNYXkgMTYgMTQ6NDk6MTIgMjAwNyArMDIwMAoKICAgIEZpeCBjb21waWxlIHByb2JsZW0gY2F1c2UgbXkgTWljcm9ibGF6ZSBtZXJnZQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgoKY29tbWl0IGFkYTQ2OTdkMDIzMGQ2ZGE1NTI4Njc3NzdmOThhNjdlYzNiYTI1NzkKQXV0aG9yOiBKZWZmcmV5IE1hbm4gPG1hbm5qQGVtYmVkZGVkcGxhbmV0LmNvbT4KRGF0ZToJV2VkIE1heSAxNiAxMzoyMzoxMCAyMDA3ICswMjAwCgogICAgW1BBVENIXSBSdW4gbmV3IHNlcXVvaWEgYm9hcmRzIHdpdGggYW4gRUJDIHNwZWVkIG9mIDgzTUh6CgogICAgQmVjYXVzZSB0aGUgU2VxdW9pYSBib2FyZCBkb2VzIG5vdCBib290IHdpdGggYW4gRUJDIGZhc3RlciB0aGFuIDY2TUh6LAogICAgdGhlIGNsb2NrIGRpdmlkZXIgYXJlIGNoYW5nZWQgYWZ0ZXIgdGhlIGluaXRpYWwgYm9vdCBwcm9jZXNzLgoKICAgIFRoaXMgYWxsb3dzIGZvciBtYXhpbXVtIGNsb2NraW5nIHNwZWVkcyAgdG8gYmUgYWNoaWV2ZWQgb24gbmV3ZXIgYm9hcmRzLgogICAgU2VxdW9pYSBib2FyZHMgd2l0aCA2NjYuNjYgTUh6IHByb2Nlc3NvcnMgcmVxdWlyZSB0aGF0IHRoZSBFQkMgZGl2aWRlcgogICAgYmUgc2V0IHRvIDMgaW4gb3JkZXIgdG8gc3RhcnQgdGhlIGluaXRpYWwgYm9vdCBwcm9jZXNzIGF0IGEgc2xvd2VyIEVCQwogICAgc3BlZWQuIEFmdGVyIHRoZSBpbml0aWFsIGJvb3QgcHJvY2VzcywgdGhlIGRpdmlkZXIgY2FuIGJlIHNldCBiYWNrIHRvIDIsCiAgICB3aGljaCB3aWxsIGNhdXNlIHRoZSBib2FyZHMgdG8gcnVuIGF0IDgzLjMzM01Iei4gVGhpcyBpcyBiYWNrd2FyZAogICAgY29tcGF0aWJsZSB3aXRoIGJvYXJkcyB3aXRoIDUzMy4zMyBNSHogcHJvY2Vzc29ycywgYXMgdGhlc2UgYm9hcmRzIHdpbGwKICAgIGFscmVhZHkgYmUgc2V0IHdpdGggYW4gRUJDIGRpdmlkZXIgb2YgMi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWZmcmV5IE1hbm4gPG1hbm5qQGVtYmVkZGVkcGxhbmV0LmNvbT4KCmNvbW1pdCBhNzY3NmVhNzczMmYzYzU5NjgwNTA3OWZlZDdlNWM5ZmFjNjUyY2ZjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIE1heSAxNiAwMToxNjo1MyAyMDA3ICswMjAwCgogICAgTWlub3IgQ29kaW5nIFN0eWxlIGNsZWFudXAsIHVwZGF0ZSBDSEFOR0VMT0cuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBkNjJmNjRjYzIzYTk0MGVhZmU3MTJjNzc2YjMyNDllNDE2MDc1M2QxCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIE1heSAxNiAwMDoxMzozMyAyMDA3ICswMjAwCgogICAgQ29kaW5nIFN0eWxlIENsZWFudXAsIG5ldyBDSEFOR0VMT0cKCmNvbW1pdCAzMTYyZWI4MzY5MDNjOGIyNDdmZGM3NDcwZGQzOWJmYTY5OTZmNDk1CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIE1heSAxNSAyMzozODowNSAyMDA3ICswMjAwCgogICAgTWlub3IgY29kaW5nIHN0eWxlIGNsZWFudXAuCgpjb21taXQgNjZkOWRiZWMxY2MyN2Q2Mzk4ZWU2Y2Y4NDYzOWRiZTE0OTcxMjUxZQpBdXRob3I6IG11c2h0YXEga2hhbiA8bXVzaHRhcV9rQHByb2NzeXMuY29tPgpEYXRlOglGcmkgQXByIDIwIDE0OjIzOjAyIDIwMDcgKzA1MzAKCiAgICBBZGQgZHJpdmVyIGZvciBTLUFUQS1jb250cm9sbGVyIG9uIEludGVsIHByb2Nlc3NvcnMgd2l0aCBTb3V0aAogICAgQnJpZGdlLCBJQ0gtNSwgSUNILTYgYW5kIElDSC03LgoKICAgIEltcGxlbWVudGF0aW9uOgoKICAgIDEuIENvZGUgaXMgZGl2aWRlZCBpbiB0byB0d28gZmlsZXMuIEFsbCBmdW5jdGlvbnMsIHdoaWNoIGFyZQogICAgICAgY29udHJvbGxlciBzcGVjaWZpYyBhcmUga2VwdCBpbiAiZHJpdmVycy9hdGFfcGlpeC5jIiBmaWxlIGFuZAogICAgICAgZnVuY3Rpb25zLCB3aGljaCBhcmUgbm90IGNvbnRyb2xsZXIgc3BlY2lmaWMsIGFyZSBrZXB0IGluCiAgICAgICAiY29tbW9uL2NtZF9zYXRhLmMiIGZpbGUuCgogICAgMi4gUmVhZGluZyBhbmQgV3JpdGluZyBmcm9tIHRoZSBTLUFUQSBkcml2ZSBpcyBkb25lIHVzaW5nIFBJTyBtZXRob2QuCgogICAgMy4gRHJpdmVyIGNhbiBiZSBjb25maWd1cmVkIGZvciA0OC1iaXQgYWRkcmVzc2luZyBieSBkZWZpbmluZyBtYWNybwogICAgICAgQ09ORklHX0xCQTQ4LCBpZiB0aGlzIG1hY3JvIGlzIG5vdCBkZWZpbmVkIGRyaXZlciB1c2VzIHRoZSAyOC1iaXQKICAgICAgIGFkZHJlc3NpbmcuCgogICAgNC4gUy1BVEEgcmVhZCBmdW5jdGlvbiBpcyBob29rZWQgdG8gdGhlIEZpbGUgc3lzdGVtLCBjb21tYW5kcyBsaWtlCiAgICAgICBleHQybHMgYW5kIGV4dDJsb2FkIGZpbGUgY2FuIGJlIHVzZWQuIFRoaXMgaGFzIGJlZW4gdGVzdGVkLgoKICAgIDUuIFUtQm9vdCBjb21tYW5kICJTQVRBX2luaXQiIGlzIGFkZGVkLCB3aGljaCBpbml0aWFsaXplcyB0aGUgUy1BVEEKICAgICAgIGNvbnRyb2xsZXIgYW5kIGlkZW50aWZpZXMgdGhlIFMtQVRBIGRyaXZlcyBjb25uZWN0ZWQgdG8gaXQuCgogICAgNi4gVS1Cb290IGNvbW1hbmQgInNhdGEiIGlzIGFkZGVkLCB3aGljaCBpcyB1c2VkIHRvIHJlYWQvd3JpdGUsIHByaW50CiAgICAgICBwYXJ0aXRpb24gdGFibGUgYW5kIGdldCBpbmZvIGFib3V0IHRoZSBkcml2ZXMgcHJlc2VudC4gVGhpcyBJIGhhdmUKICAgICAgIGltcGxlbWVudGVkIGluIHNhbWUgd2F5IGFzICJpZGUiIGNvbW1hbmQgaXMgaW1wbGVtZW50ZWQgaW4gVS1Cb290LgoKICAgIDcuIFRoaXMgZHJpdmVyIGlzIGZvciBTLUFUQSBpbiBuYXRpdmUgbW9kZS4KCiAgICA4LiBUaGlzIGRyaXZlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBOYXRpdmUgY29tbWFuZCBxdWV1aW5nIGFuZAogICAgICAgSG90LXBsdWdnaW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IE11c2h0YXEgS2hhbiA8bXVzaHRhcV9rQHByb2NzeXMuY29tPgoKY29tbWl0IDY0NGU2ZmI0ZWI4YmU5MGVhMDRiYTM0YjY0M2E4YmYwMTlkNjgwZTAKQXV0aG9yOiBtdXNodGFxIGtoYW4gPG11c2h0YXFfa0Bwcm9jc3lzLmNvbT4KRGF0ZToJTW9uIEFwciAzMCAxNTo1NzoyMiAyMDA3ICswNTMwCgogICAgRml4ZXMgYnVnIGNsZWFyaW5nIHRoZSBic3Mgc2VjdGlvbiBmb3IgaTM4NgoKICAgIEhpLAogICAgVGhlcmUgaXMgYSBidWcgaW4gdGhlIGNvZGUgb2YgY2xlYXJpbmcgdGhlIGJzcyBzZWN0aW9uIGZvciBwcm9jZXNzb3IKICAgIGkzODYuKEZpbGU6IGNwdS9pMzg2L3N0YXJ0LlMpCiAgICBJbiB0aGUgY29kZSwgYnNzX3N0YXJ0IGFkZHIgKHN0YXJ0aW5nIGFkZHIgb2YgYnNzIHNlY3Rpb24pIGlzIHB1dCBpbnRvCiAgICB0aGUgcmVnaXN0ZXIgJWVheCwgYnV0IHRoZSBjb2RlIHdoaWNoIGNsZWFycyB0aGUgYnNzIHNlY3Rpb24gcmVmZXJzIHRvCiAgICB0aGUgYWRkciBwb2ludGVkIGJ5ICVlZGkuCgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGJ1ZyBieSBwdXR0aW5nIGJzc19zdGFydCBpbnRvICVlZGkgcmVnaXN0ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTXVzaHRhcSBLaGFuIDxtdXNodGFxX2tAcHJvY3N5cy5jb20+Cgpjb21taXQgYzMyNDNjZjdiNDkwMDU3Mjc3ZDYxYWNmZmU0YWQwOTQ2ZjllYjRhNApBdXRob3I6IEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+CkRhdGU6CU1vbiBBcHIgMzAgMTY6NDc6MjggMjAwNyAtMDUwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBCQ001NDY0IFF1YWQgUGh5CgogICAgQWRkZWQgc3VwcG9ydCBmb3IgQnJvYWRjb20ncyBCQ001NDY0IFF1YWQgUGh5CgogICAgU2lnbmVkLW9mZi1ieTogSm9lIEhhbW1hbiA8am9lLmhhbW1hbkBlbWJlZGRlZHNwZWNpYWx0aWVzLmNvbT4KCmNvbW1pdCAxYjMwNWJkYzc1NGM4NDY4ZTFkNWQ4NThmNWRjZjhhN2EwYTRiYjdhCkF1dGhvcjogWmFuZyBSb3ktcjYxOTExIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE1heSA5IDA4OjEwOjU3IDIwMDcgKzA4MDAKCiAgICBTZWFyY2ggdGhlIGV4Y2VwdGlvbiB0YWJsZSB3aXRoIGxpbmVhciBhbGdvcml0aG0KCiAgICBTZWFyY2ggdGhlIGV4Y2VwdGlvbiB0YWJsZSB3aXRoIGxpbmVhciBhbGdvcml0aG0gaW5zdGVhZCBvZgogICAgYmlzZWN0aW5nIGFsZ29yaXRobS4KICAgIEJlY2F1c2UgdGhlIGV4Y2VwdGlvbiB0YWJsZSBtaWdodCBiZSB1bnNvcnRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNWRmYWE1MGViODE5Njg2YmZiYTE5MjdlOGM1YjhhNzBhNGQ2NWZkMwpBdXRob3I6IEF1YnJleS5MaSA8YXVicmV5LmFkaUBnbWFpbC5jb20+CkRhdGU6CU1vbiBNYXkgMTQgMTE6NDc6MzUgMjAwNyArMDgwMAoKICAgIEZpeCBjb21waWxhdGlvbiBpc3N1ZXMgb24gTUFDT1NYCgogICAgU2luZ2VkLW9mZi1ieTogTWFyYyBIb2ZmbWFuIDxNYXJjLkhvZmZtYW5AYW5hbG9nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEF1YnJleSBMaSA8YXVicmV5LmFkaUBnbWFpbC5jb20+Cgpjb21taXQgNTZmZDcxNjI5ODVjNDEyMzE3YmJmNzYzYTIyNWZiYTIzYzY0ZmQzMQpBdXRob3I6IFN0ZXBoZW4gV2lsbGlhbXMgPHN0ZXZlQGljYXJ1cy5jb20+CkRhdGU6CVR1ZSBNYXkgMTUgMDc6NTU6NDIgMjAwNyAtMDcwMAoKICAgIEZpeCBmb3IgY29tcGlsZSBvZiBKU0UgdGFyZ2V0CgogICAgVGhlIGF0dGFjaGVkIHBhdGNoIGZpeGVzIHRoZSBjb21waWxlIG9mIHRoZSBKU0UgYm9hcmQgaW4gdGhlCiAgICBkZW54IGdpdCBhcyBvZiAxNCBtYXkgMjAwNy4gSXQgaXMgYW4gZXh0cmVtZWx5IHNpbXBsZSBwYXRjaCwKICAgIGl0IGp1c3QgYWRkcyB0aGUgbWlzc2luZyBkZWZpbmUgb2YgQ0ZHX1NZU1RFTUFDRV9XSURUSC4KCiAgICAgRml4IHRvIGNvbXBpbGUgSlNFIGFnYWluc3QgMjAwNzA1MTQgZ2l0IG9mIHUtYm9vdAoKY29tbWl0IDY5ZGYzYzRkYTBjOTMwMTdjY2ViMjVhMzY2ZTc5NDU3MGJkMGVkOTgKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAcmFodXRlLihub25lKT4KRGF0ZToJU3VuIE1heSAxMyAyMTowMTowMyAyMDA3ICswOTAwCgogICAgc2g6IE1TNzc1MFNFIHN1cHBvcnQuCgogICAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHRoZSBIaXRhY2hpIE1TNzc1MFNFLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCAwYjEzNWNmYzJlNTI0ZGMyNDliNzUwNTdiNTVkZDRjYzA5ODQyZTI3CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QHJhaHV0ZS4obm9uZSk+CkRhdGU6CVN1biBNYXkgMTMgMjA6NTg6MDAgMjAwNyArMDkwMAoKICAgIHNoOiBGaXJzdCBzdXBwb3J0IGNvZGUgb2YgU3VwZXJILgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCA2MTkzNjY2N2U4NmEyNTBhZTEyZmQyZGMxODlkMzU4OGYwYTU5ZTBiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgTWF5IDExIDEyOjAxOjQ5IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBtdGNwci9tZmNwciBhY2Nlc3MgbWFjcm9zCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDM0M2M0OGJkODQ2MDZjNDAyNWM4YTdjNzI2M2ZkYTQ2NWQ2ZTI4NGMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBNYXkgMTEgMTI6MDE6MDYgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogU2V0IGJkLT5iaV9wY2lfYnVzZnJlcSBvbiA0NDBFUHgvR1J4IHRvbwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3ZDk4YmE3NzBhN2VhZWZhMjljZTkyN2YzMWEwOTU2ZGY4NWJmNjUwCkF1dGhvcjogUGlvdHIgS3J1c3p5bnNraSA8cHBrQHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IE1heSAxMCAxNjo1NTo1MiAyMDA3ICswMjAwCgogICAgW01vdGlvbi1QUk9dIEFkZCBNVEQgYW5kIEpGRlMyIHN1cHBvcnQsIGFsc28gYWRkIGRlZmF1bHQgcGFydGl0aW9uCiAgICBkZWZpbml0aW9uLgoKY29tbWl0IDY1ZmI2YTY3NmU4MjFmOTU3MGEyYTM3NmRjMjA0YmY2MTFjZTVmODEKQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgpEYXRlOglXZWQgTWF5IDkgMTE6NDI6NDQgMjAwNyArMDEwMAoKICAgIEFkZCB0aGUgYm9hcmQgZGlyZWN0b3J5IGZvciBTTU40MgoKY29tbWl0IDE2MDEzMWJmOTY1Nzg1NDE5NjI2ZGY2YzM4ODcyOWZlMGI1OTc5OTIKQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgpEYXRlOglXZWQgTWF5IDkgMTE6NDE6NTggMjAwNyArMDEwMAoKICAgIEFkZCB0aGUgZmlsZXMgZm9yIHRoZSBTTU40MiBib2FyZAoKY29tbWl0IDVjNmQyYjVhNTAwZjhjNDk2NzBkZTg5MTAxNTBiNzhhNDFmNzgxZmMKQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgpEYXRlOglXZWQgTWF5IDkgMTE6NDA6MzQgMjAwNyArMDEwMAoKICAgIFJlbW92ZSB0aGUgZGVsZXRlZCBmaWxlcyBmb3IgdGhlIFNNTjQyIHBhdGNoCgpjb21taXQgYjBkOGY1YmYwZDIxNWFkYzk0MjRjYjIyOGIyNDg0ZGJmMDdmNzc2MQpBdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+CkRhdGU6CVdlZCBNYXkgOSAxMTozNzo1NiAyMDA3ICswMTAwCgogICAgTmV3IGJvYXJkIFNNTjQyIGJyYW5jaAoKY29tbWl0IDI5ZjNiZTBjYWYwNzk5Y2E2Yjg5ZGZkOTgyNGMxNTYxOWE1MDAwMGYKQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgpEYXRlOglXZWQgTWF5IDkgMTA6MjQ6MzggMjAwNyArMDEwMAoKICAgIE1ha2VmaWxlIHBlcm1pc3Npb25zCgpjb21taXQgYjg0Mjg5YjU5NTczMWU4ODUxZGY0NmU4OTM4NDVjYzEzMjJjOWI5YgpBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBNYXkgOCAxNDoxNzowNyAyMDA3IC0wNTAwCgogICAgODY0MWhwY246IEZpeCBNYWtlZmlsZSBhZnRlciBtb3ZpbmcgcGl4aXMgdG8gYm9hcmQvZnJlZXNjYWxlLgoKICAgIFRoZSBPQkpUUkVFICE9IFNSQ1RSRUUgYnVpbGQgc2NlbmFyaW8gd2FzIGJyb2tlbi4KICAgIFRoaXMgZml4ZXMgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZTY5ZjY2YzZlYmU4MmJiYmQxZGE3NjZiYzRlZGE0MGVjN2VlNWFmMQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJVHVlIE1heSA4IDE1OjU3OjQzIDIwMDcgKzAyMDAKCiAgICBhZGQ6IHJlYWRpbmcgc3BlY2lhbCBwdXJwb3NlIHJlZ2lzdGVycwoKY29tbWl0IDFhNTBmMTY0YmViMDY1ZjM2MGZiZGRiNzYwMjk2MDdkNmIwOTk2OTgKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CVR1ZSBNYXkgOCAxNDo1Mjo1MiAyMDA3ICswMjAwCgogICAgYWRkOiBNaWNyb2JsYXplIFY1IGV4Y2VwdGlvbiBoYW5kbGluZwoKY29tbWl0IGFiODc0ZDUwNDdlNWQzMGRiYzFlNTE3ZmYyNjA4M2VmZmZhOThlY2IKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CVR1ZSBNYXkgOCAxNDozOToxMSAyMDA3ICswMjAwCgogICAgYWRkOiBGU0wgY29udHJvbCByZWFkIGFuZCB3cml0ZQoKY29tbWl0IGRlMWRlMDJhN2NiZjA1ZTZiNjNlMGQ4ZmZjNjI0ZjEyNDkzZjZiYTMKQXV0aG9yOiBQaW90ciBLcnVzenluc2tpIDxwcGtAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgTWF5IDggMTM6MDU6NDQgMjAwNyArMDIwMAoKICAgIFtNb3Rpb24tUFJPXSBBZGQgc3VwcG9ydCBmb3IgSTJDLCBFRVBST00gYW5kIFJUQy4KCmNvbW1pdCBmYTVjMmJhMTIzYjFiZjg4NDU1YmZjMjFkYjVlNzg2Y2EwNDUwMjlkCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJVHVlIE1heSA4IDEwOjIzOjU2IDIwMDcgKzAyMDAKCiAgICBbTW90aW9uLVBST10gQWRkIEFUQSBzdXBwb3J0LiBBZGQgQ0YtYm9vdGluZyBjb21tYW5kcyB0byB0aGUgZGVmYXVsdAogICAgZW52aXJvbm1lbnQuCgpjb21taXQgMDYyNDFkNTBhM2FiMWIyMGEwYjA4YmFlZWFmZmNhYTIzYWU0YjgzOQpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVR1ZSBNYXkgOCAwOTozOToxMiAyMDA3ICswMjAwCgogICAgW01vdGlvbi1QUk9dIENoYW5nZSBJUEIgY2xvY2sgZnJlcXVlbmN5IGZyb20gNTBNSHogdG8gMTAwTUh6LiBUaGlzCiAgICBlbGltaW5hdGVzIG5ldHdvcmtpbmcgcHJvYmxlbXMgaW4gTGludXggKHRpbWVvdXRzKS4KCmNvbW1pdCAxZjEzNjljMzRiNjI5YmU5NDcwMjY4NGQ0MWQzZmRkZjBmNjE5M2U3CkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJVHVlIE1heSA4IDA5OjIxOjU3IDIwMDcgKzAyMDAKCiAgICBbTW90aW9uLVBST10gRW5hYmxlIEZsYXQgRGV2aWNlIFRyZWUgc3VwcG9ydCBhbmQgbW9kaWZ5IGRlZmF1bHQgZW52aXJvbm1lbnQKICAgIHRvIGFsbG93IGJvb3Rpbmcgb2YgRkRULWV4cGVjdGluZyBrZXJuZWxzLgoKY29tbWl0IGZiMDVmNmRhMzVlYTFjMTVjNTUzYWJlNmYyM2Y2NTZiZjE4ZGM1ZGIKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CU1vbiBNYXkgNyAyMzo1ODozMSAyMDA3ICswMjAwCgogICAgbmV3OiBVU0VfTVNSX0lOVFIgc3VwcG9ydAoKY29tbWl0IDAwODg2MWEyZjNlZjJjMDYyNzQ0ZDczMzc4N2M3ZTUzMGExYjg3NjEKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglNb24gTWF5IDcgMjI6MzY6MTUgMjAwNyArMDIwMAoKICAgIFtNUEM1eHh4XSBUaGVyZSBhcmUgbmV0d29ya2luZyBwcm9ibGVtcyBvbiB0aGUgTW90aW9uLVBSTyBib2FyZCB3aXRoCiAgICBjdXJyZW50IFBIWSBpbml0YWxpemF0aW9uIGNvZGUgKHRmdHAgdGltZW91dHMgYWxsIHRoZSB0aW1lKS4gVGhpcyBjb21taXQKICAgIHRlbXBvcmFyaWx5IGRpc2FibGVzIFBIWSBpbml0YWxpemF0aW9uIHNlcXVlbmNlIHRvIG1ha2UgdGhlIG5ldHdvcmtpbmcKICAgIG9wZXJhdGlvbmFsLCB1bnRpbCBhIGZpeCBpcyBmb3VuZC4KCmNvbW1pdCBhYmNhOTAxODY5YzM3NjBiNmM1ZmVjYjgyNWRiNmMxZDkxYTc4YTkzCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIE1heSA3IDIyOjEwOjM2IDIwMDcgKzAyMDAKCiAgICBHZXQgcmlkIG9mIGR1cGxpY2F0ZWQgZmlsZSAoc2VlIGluY2x1ZGUvY29uZmlncy9zYmM4NTYwLmggaW5zdGVhZCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDIwN2I3YjJjOWQ5NzUyZTBmNjQ3OGMzMGMyOWI3MDg3ZjZlNmNiYjYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gTWF5IDcgMjI6MDc6MDggMjAwNyArMDIwMAoKICAgIEdldCByaWQgb2YgZHVwbGljYXRlZCBmaWxlIChzZWUgZG9jL1JFQURNRS5TQkM4NTYwIGluc3RlYWQpCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBhN2JhYzdlOWI1N2JhOTQ4MDUxYmViMTllYzViZTNhNzVjZTc1MzgzCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglNb24gTWF5IDcgMTk6NDM6MTAgMjAwNyArMDIwMAoKICAgIGZpeDogcmVhZCBhbmQgd3JpdGUgTVNSIC0gcmVwYWlyIG51bWJlciBvZiBwYXJhbWV0ZXJzCgpjb21taXQgMTkzYjRhM2JiM2FjYWRkZjc5OGRhOGRlMGRhMDVkOTRiYTg3NzRlZQpBdXRob3I6IEplZmZyZXkgTWFubiA8bWFubmpAZW1iZWRkZWRwbGFuZXQuY29tPgpEYXRlOglNb24gTWF5IDcgMTk6NDI6NDkgMjAwNyArMDIwMAoKICAgIFtQQVRDSF0gcHBjNHh4OiBGaXggQ09ORklHX1NZU19DTEtfRlJFUSBkZWZpbml0aW9uIGluIFNlcXVvaWEgY29uZmlnIGZpbGUKCiAgICBBICczJyBnb3QgY3V0IG9mZiBpbiB0aGUgZm9ybWF0dGluZyBvZiB0aGUgbGFzdCBwYXRjaCB0byBhdXRvbWF0aWNhbGx5CiAgICBjaGFuZ2UgdGhlIGNsb2NrIHNwZWVkIG9mIHRoZSBzeXN0ZW0gY2xvY2sgb24gc2VxdW9pYSBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWZmcmV5IE1hbm4gPG1hbm5qQGVtYmVkZGVkcGxhbmV0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxOWJmMWZiYWQ3ZjE5ZDVhMTIwYmU5YjFkYWYxMzZlMDUyZmNhYjM5CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglNb24gTWF5IDcgMTk6MzM6NTEgMjAwNyArMDIwMAoKICAgIG5ldzogZnNsIGludGVycnVwdCBzdXBwb3J0CiAgICBGU0xfSGFzX2RhdGEgaXMgY29ubmVjdGVkIHRvIElOVEMuCgpjb21taXQgNzkyMDMyYmFhN2Q2MjVlMzRjOTgxYWI2ZGY1MjE5MTFiZDhkYzg2MQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJTW9uIE1heSA3IDE5OjMwOjEyIDIwMDcgKzAyMDAKCiAgICBmaXg6IGludGVycnVwdCBoYW5kbGVyCiAgICByZW1vdmUgYXNtIGNvZGUKCmNvbW1pdCBmM2YwMDFhMzQxZWYxODVkMGYxMzg0MWJlNWI1ZGMzMzk1YWFjYzMxCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglNb24gTWF5IDcgMTk6MjU6MDggMjAwNyArMDIwMAoKICAgIGZpeDogcmVtb3ZlIGFzbSBjb2RlCgpjb21taXQgZmI3YzJkYmVmMDJjOWY2ZjhkN2IwNGVjNGMyYmZiOTE0MThiOWMwMQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJTW9uIE1heSA3IDE5OjEyOjQzIDIwMDcgKzAyMDAKCiAgICBmaXg6IGNsZWFuIGludGVycnVwdAoKY29tbWl0IDQyZWZlZDYxMzBjOGZjZjdkYTg4MTM4NWI1NDI3MDY1ZDI4MDE3NTcKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CU1vbiBNYXkgNyAxNzoyMjoyNSAyMDA3ICswMjAwCgogICAgZml4OiBpbnRlcnJ1cHQgaGFuZGxlciBmb3IgbXVsdGlwbGUgc291cmNlcwoKY29tbWl0IDQ4ZmJkM2E0Y2RhYmJlYmMxZGViZDdlZWQ3M2MwMGMyY2FmOTE0ZjYKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CU1vbiBNYXkgNyAxNzoxMTowOSAyMDA3ICswMjAwCgogICAgbmV3OiBhZGQgd3JpdGluZyB0byBtc3IgcmVnaXN0ZXIKCmNvbW1pdCAzYTYxOWRkN2JlZDAzZThiNGQyMmEzOTExZjkwZmQxMmFmNTM3NmMyCkF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KRGF0ZToJTW9uIE1heSA3IDE2OjQzOjU2IDIwMDcgKzAyMDAKCiAgICBGaXggYW4gYW5jaWVudCBDSEFOR0VMT0cgY29uZmxpY3QKCmNvbW1pdCBhYzRjZDU5ZDU5YzliZjNmODljYjdhMzQ0YWJmODE4NGQ2NzhmNTYyCkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU2F0IE1heSA1IDA4OjEyOjMwIDIwMDcgKzAyMDAKCiAgICA1eHh4OiB3cml0ZSBNQUMgYWRkcmVzcyB0byBtYWMtYWRkcmVzcyBhbmQgbG9jYWwtbWFjLWFkZHJlc3MKCiAgICBTb21lIGRldmljZSB0cmVlcyBoYXZlIGEgbWFjLWFkZHJlc3MgcHJvcGVydHksIHNvbWUgaGF2ZSBsb2NhbC1tYWMtYWRkcmVzcywKICAgIGFuZCBzb21lIGhhdmUgYm90aC4gIFRvIHN1cHBvcnQgYWxsIG9mIHRoZXNlIGRldmljZSB0cmVlcywgZnRwX2NwdV9zZXR1cCgpCiAgICBzaG91bGQgd3JpdGUgdGhlIE1BQyBhZGRyZXNzIHRvIG1hYy1hZGRyZXNzIGFuZCBsb2NhbC1tYWMtYWRkcmVzcywgaWYgdGhleQogICAgZXhpc3QuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgYTlkODdlMjcwN2RjYjI0OWY2YmI3ZjdmZjdlMDBhY2Q4Y2RhOWZkMgpBdXRob3I6IEdyemVnb3J6IFdpYW5lY2tpIDxncnplZ29yei53aWFuZWNraUBnbWFpbC5jb20+CkRhdGU6CVN1biBBcHIgMjkgMTQ6MDE6NTQgMjAwNyArMDIwMAoKICAgIFtQQVRDSF0gVXNlIFBWUiB0byBkaXN0aW5ndWlzaCBNUEM1MjAwQiBmcm9tIE1QQzUyMDAgaW4gYm9vdCBtZXNzYWdlCgogICAgTVBDNTIwMEIgc3lzdGVtcyBhcmUgaW5jb3JyZWN0bHkgcmVwb3J0ZWQgYXMgTVBDNTIwMCBpbiBVLUJvb3Qgc3RhcnQtdXAKICAgIG1lc3NhZ2UuIFVzZSBQVlIgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUgdHdvIHZhcmlhbnRzLCBhbmQgcHJpbnQgcHJvcGVyIENQVQogICAgaW5mb3JtYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogR3J6ZWdvcnogV2lhbmVja2kgPGdyemVnb3J6LndpYW5lY2tpQGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgNGVjNWJkNTVlZDFmZmE5MWE3NzRhZjI5ODc2OTYyMWY0ZmJiMThjMQpBdXRob3I6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KRGF0ZToJV2VkIEFwciAyNSAxNjowMToyNiAyMDA3ICswMjAwCgogICAgW1BBVENIXSBzaW1wbGlmeSBzaWxlbnQgY29uc29sZQoKICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYjc1OThhNDNmMmI0MjFhNzEzZDgxMzVlOThhNDJjMzdkOWViOWRmMApBdXRob3I6IFNlcmdlaSBTaHR5bHlvdiA8c3NodHlseW92QHJ1Lm12aXN0YS5jb20+CkRhdGU6CU1vbiBBcHIgMjMgMTU6MzA6MzkgMjAwNyArMDIwMAoKICAgIFtQQVRDSF0gQXZvaWQgYXNzaWduaW5nIFBDSSByZXNvdXJjZXMgZnJvbSB6ZXJvIGFkZHJlc3MKCiAgICBJZiBhIFBDSSBJREUgY2FyZCBoYXBwZW5zIHRvIGdldCBhIHplcm8gYWRkcmVzcyBhc3NpZ25lZCB0byBpdCwgdGhlIExpbnV4IElERQogICAgY29yZSBjb21wbGFpbnMgYW5kIElERSBkcml2ZXJzIGZhaWxzIHRvIHdvcmsuICBBbHNvLCBhc3NpZ25pbmcgemVybyB0byBhIEJBUgogICAgd2FzIGlsbGVnYWwgYWNjb3JkaW5nIHRvIFBDSSAyLjEgKHRoZSBsYXRlciByZXZpc2lvbnMgc2VlbSB0byBoYXZlIGV4Y2x1ZGVkIHRoZQogICAgc2VudGVuY2UgYWJvdXQgIjAiIGJlaW5nIGNvbnNpZGVyZWQgYW4gaW52YWxpZCBhZGRyZXNzKSAtLSBzbywgdXNlIGEgcmVhc29uYWJsZQogICAgc3RhcnRpbmcgdmFsdWUgb2YgMHgxMDAwICh0aGF0J3Mgd2hhdCB0aGUgbW9zdCBMaW51eCBhcmNocyBhcmUgdXNpbmcpLgoKICAgIEFsdGVybmF0aXZlbHksIG9uZSBtaWdodCBoYXZlIGZpeGVkIHRoZSBjYWxscyB0byBwY2lfc2V0X3JlZ2lvbigpIGluZGl2aWR1YWxseQogICAgKHNvbWUgY29kZSBldmVuIHNlZW1zIHRvIGhhdmUgdGFrZW4gY2FyZSBvZiB0aGlzIGlzc3VlKSBidXQgdGhhdCB3b3VsZCBoYXZlCiAgICBiZWVuIGEgbG90IG1vcmUgd29yay4gOi0pCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFNodHlseW92IDxzc2h0eWx5b3ZAcnUubXZpc3RhLmNvbT4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOWZmZDQ1MWFmZWIwOGU1YmU3ZGRhZTY4MDQ4N2VjOTYyYjJiY2EyNQpBdXRob3I6IEplZmZyZXkgTWFubiA8bWFubmpAZW1iZWRkZWRwbGFuZXQuY29tPgpEYXRlOglNb24gQXByIDIzIDE0OjAwOjExIDIwMDcgKzAyMDAKCiAgICBbcGF0Y2hdIHNldGVudiguLi4pIGNhbiBkZWxldGUgZW52aXJvbm1lbnRhbHZhcmlhYmxlcwoKICAgIHVwZGF0ZSBzZXRlbnYoKSBmdW5jdGlvbiBzbyB0aGF0IGVudGVyaW5nIGEgTlVMTCB2YWx1ZSBmb3IgdGhlCiAgICB2YXJpYWJsZSdzIHZhbHVlIHdpbGwgZGVsZXRlIHRoZSBlbnZpcm9ubWVudGFsIHZhcmlhYmxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVmZnJleSBNYW5uIDxtYW5uakBlbWJlZGRlZHBsYW5ldC5jb20+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGViZDBhMGFlMDVhNDQ3NjljNGUyNzQ1OGFkNGU5ZjM0MzgyNTA0NDMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBBcHIgMjMgMTM6NTQ6MjQgMjAwNyArMDIwMAoKICAgIFtwYXRjaF0gdXNlIHVuc2lnbmVkIGNoYXIgaW4gc21jOTExMTEgZHJpdmVyIGZvciBtYWMKCiAgICB0aGUgdl9tYWMgdmFyaWFibGUgaW4gdGhlIHNtYzkxMTExIGRyaXZlciBpcyBkZWNsYXJlZCBhcyBhIHNpZ25lZCBjaGFyIC4uLgogICAgdGhpcyBjYXVzZXMgcHJvYmxlbXMgd2hlbiBvbmUgb2YgdGhlIGJ5dGVzIGluIHRoZSBNQUMgaXMgInNpZ25lZCIgbGlrZSAweEUwCiAgICBiZWNhdXNlIHdoZW4gaXQgZ2V0cyBwcmludGVkIG91dCwgeW91IGdldCBhIGRpc3BsYXkgbGlrZToKICAgIDB4RkZGRkZGRTAgYW5kIHRoYXQncyBubyBnb29kCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGZmYzUwZjliYjE5NDM0M2M2MzAzNTE3YTUxNzcwODQ1N2E1ZWI2YjgKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CVNhdCBNYXkgNSAxODo1NDo0MiAyMDA3ICswMjAwCgogICAgbmV3OiBGU0wgYW5kIE1TUiBzdXBwb3J0ICMyCgpjb21taXQgZjdlMmUwZWIwNjY4MTM2MzA1Zjc4YmI5YzIxYmU3OWI0OGEzNDI0NwpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJU2F0IE1heSA1IDE4OjI3OjE2IDIwMDcgKzAyMDAKCiAgICBuZXc6IEZTTCBhbmQgTVNSIHN1cHBvcnQKCmNvbW1pdCAyZjE1Mjc4YzJlYjkxMWM2NjhiNGZlNTYyMTMwYjc4Y2Y1NTRkMTM5CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IE1heSA1IDE4OjIzOjExIDIwMDcgKzAyMDAKCiAgICBDb2Rpbmcgc3R5bGtlIGNsZWFudXA7IHVwZGF0ZSBDSEFOR0VMT0cuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA4ODVlYzg5YjY0OGE4OTlhMmYzMjM5M2ZkM2ZmZDlmNzIzNGM0NDAyCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IE1heSA1IDE4OjA1OjAyIDIwMDcgKzAyMDAKCiAgICBBZGQgU1RYIEdQMyBTU0EgYm9hcmQgdG8gTUFLRUFMTCBzY3JpcHQ7IHVwZGF0ZSBDSEFOR0VMT0cuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1NDk5NjQ1YjNmZTE3YTU0OGFmOWRmYzQ3OWNhNmUyNDU1ZjE3OWEyCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IE1heSA1IDE3OjE1OjUwIDIwMDcgKzAyMDAKCiAgICBNYWtlICJmaWxlIiBjb21tYW5kIGhhcHB5IHdpdGggc29tZSBjb25maWcubWsgZmlsZXM7IHVwZGF0ZSBDSEFOR0VMT0cKCmNvbW1pdCBlM2I4Yzc4YmMyNDg5YzI3YWUwMjA5ODZlZjBlYWNhNjg0ODY2Y2VmCkF1dGhvcjogSmVmZnJleSBNYW5uIDxtYW5uakBlbWJlZGRlZHBsYW5ldC5jb20+CkRhdGU6CVNhdCBNYXkgNSAwODozMjoxNCAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBEZXRlY3QgaWYgdGhlIHN5c2NsayBvbiBTZXF1b2lhIGlzIDMzIG9yIDMzLjMzMyBNSHoKCiAgICBUaGUgQU1DQyBTZWNxdW9pYSBib2FyZCBoYXMgYmVlbiBjaGFuZ2VkIGluIGEgbmV3IHJldmlzaW9uIGZyb20gdXNpbmcgYQogICAgMzMuMDAwIE1IeiBjbG9jayB0byBhIDMzLjMzMyBNSHogc3lzdGVtIGNsb2NrLiBBIGJpdCBpbiB0aGUgQ1BMRAogICAgaW5kaWNhdGVzIHRoZSBkaWZmZXJlbmNlLiBUaGlzIHBhdGNoIHJlYWRzIHRoYXQgYml0IGFuZCB1c2VzIHRoZSBjb3JyZWN0CiAgICBjbG9jayBzcGVlZCBmb3IgdGhlIGJvYXJkLiBUaGlzIGNvZGUgaXMgYmFja3dhcmQgY29tcGF0YWJsZSB3aWxsIGFsbAogICAgcHJpb3IgYm9hcmRzLiBBbGwgcHJpb3IgYm9hcmRzIHdpbGwgYmUgcmVhZCBhcyAzMy4wMDAuCgogICAgU2lnbmVkLW9mZi1ieTogSmVmZnJleSBNYW5uIDxtYW5uakBlbWJlZGRlZHBsYW5ldC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZjU0NGZmNjY1NmZjYTI2M2VkMWViZTM5ODk5YjZkOTVkYTY3YzhiOApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IE1heSA1IDA4OjI5OjAxIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFNlcXVvaWE6IFJlbW92ZSBjcHUvcHBjNHh4L3NwZWVkLmMgZnJvbSBOQU5EIGJvb3RpbmcKCiAgICBVc2luZyBjcHUvcHBjNHh4L3NwZWVkLmMgdG8gY2FsY3VsYXRlIHRoZSBidXMgZnJlcXVlbmN5IGlzIHRvbyBiaWcKICAgIGZvciB0aGUgNGsgTkFORCBib290IGltYWdlIHNvIGRlZmluZSBidXNfZnJlcXVlbmN5IHRvIDEzM01IeiBoZXJlCiAgICB3aGljaCBpcyBzYXZlIGZvciB0aGUgcmVmcmVzaCBjb3VudGVyIHNldHVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyZjU1MGFiOTc2NDA1MzAwZjViMDdiZjI4OTA4MDA4NDBkMGFhMDVmCkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU2F0IE1heSA1IDA4OjEyOjMwIDIwMDcgKzAyMDAKCiAgICA1eHh4OiB3cml0ZSBNQUMgYWRkcmVzcyB0byBtYWMtYWRkcmVzcyBhbmQgbG9jYWwtbWFjLWFkZHJlc3MKCiAgICBTb21lIGRldmljZSB0cmVlcyBoYXZlIGEgbWFjLWFkZHJlc3MgcHJvcGVydHksIHNvbWUgaGF2ZSBsb2NhbC1tYWMtYWRkcmVzcywKICAgIGFuZCBzb21lIGhhdmUgYm90aC4gIFRvIHN1cHBvcnQgYWxsIG9mIHRoZXNlIGRldmljZSB0cmVlcywgZnRwX2NwdV9zZXR1cCgpCiAgICBzaG91bGQgd3JpdGUgdGhlIE1BQyBhZGRyZXNzIHRvIG1hYy1hZGRyZXNzIGFuZCBsb2NhbC1tYWMtYWRkcmVzcywgaWYgdGhleQogICAgZXhpc3QuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgYTc5ODg2NTkwNTkzYmExZDY2N2M4NDBjYWE0OTQwYzYxNjM5ZjE4ZgpBdXRob3I6IFRob21hcyBLbm9ibG9jaCA8a25vYmxvY2hAc2llbWVucy5jb20+CkRhdGU6CVNhdCBNYXkgNSAwNzowNDo0MiAyMDA3ICswMjAwCgogICAgTkFORDogV3JvbmcgY2FsY3VsYXRpb24gb2YgcGFnZSBudW1iZXIgaW4gbmFuZF9ibG9ja19iYWQoKQoKICAgIEluIGNhc2UgdGhhdCB0aGVyZSBpcyBubyBtZW1vcnkgYmFzZWQgYmFkIGJsb2NrIHRhYmxlIGF2YWlsYWJsZSB0aGUKICAgIGZ1bmN0aW9uIG5hbmRfYmxvY2tfY2hlY2tiYWQoKSBpbiBkcml2ZXJzL210ZC9uYW5kL25hbmRfYmFzZS5jIHdpbGwgY2FsbAogICAgbmFuZF9ibG9ja19iYWQoKSBkaXJlY3RseS4gV2hlbiBwYXJhbWV0ZXIgJ2dldGNoaXAnIGlzIHNldCB0byB6ZXJvLAogICAgbmFuZF9ibG9ja19iYWQoKSB3aWxsIG5vdCByaWdodCBzaGlmdCB0aGUgb2Zmc2V0IHRvIGNhbGN1bGF0ZSB0aGUKICAgIGNvcnJlY3QgcGFnZSBudW1iZXIuCgogICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIEtub2Jsb2NoIDxrbm9ibG9jaEBzaWVtZW5zLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5ODc3ZDdkY2QxZWViZTYxYWE1ZDhiOGZmZTljMDQ4ZWE0MjZlNmY2CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIE1heSA0IDEwOjAyOjMzIDIwMDcgKzAyMDAKCiAgICBGaXggaW5pdHJkIGxlbmd0aCBjb3JydXB0aW9uIGluIGJvb3RtIGNvbW1hbmQuCgogICAgV2hlbiB1c2luZyBGRFQgSW1hZ2VzLCB0aGUgbGVuZ3RoIG9mIGFuIGluaXRhbCByYW1kaXNrIHdhcwogICAgb3ZlcndyaXR0ZW4gKGJ1ZyBpbnRyb2R1Y2VkIGJ5IGNvbW1pdCA4N2E0NDljOCwgMjIgQXVnIDIwMDYpLgoKICAgIFBhdGNoZXMgYnkgVGltdXIgVGFiaSAmIEpvaG5zIERhbmllbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDA2OGFhYjY2MGJjMzkxMmI5MzBiZTU1NDBlNmIzZjNmZDZhZDNjOTYKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTWF5IDMgMTk6NDM6NTIgMjAwNyAtMDUwMAoKICAgIG1wYzgzeHg6IGZpeCB0cml2aWFsIGVycm9yIGluIE1BS0VBTEwKCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGM2NGE4OWQ2Y2U4NTg0YjlmYzY0ZjRlODVkYTllY2FjM2NmYzJjMmEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgTWF5IDMgMTY6MzQ6NDEgMjAwNyArMDIwMAoKICAgIFVwZGF0ZSBib2FyZCBjb25maWd1cmF0aW9uIGZvciBTVFggR1AzU1NBIGJvYXJkOgoKICAgIEVuYWJsZSBodXNoIHNoZWxsLCBlbnZpcm9ubWVudCBpbiBmbGFzaCByYXRoZXIgaW4gRUVQUk9NLAogICAgbW9yZSB1c2VyLWZyaWVuZGx5IGRlZmF1bHQgZW52aXJvbm1lbnQsIGV0Yy4KICAgIFRoZSBzaW1wbGUgRUVQUk9NIGVudmlyb25tZW50IGNhbiBiZSBzZWxlY3RlZCBlYXNpbHkgaW4gdGhlIGJvYXJkCiAgICBjb25maWcgZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDJjNmZiMTk5ZGM1NzU2ZmM3MmY0OWQxZjRkZTEwNWUwODkwNDlkNjUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgQXByIDI0IDE0OjM3OjQ5IDIwMDcgKzAyMDAKCiAgICBDbGVhbnVwIFNUWCBHUDNTU0EgY29kZTsgZml4IGJ1aWxkIGFuZCBjb21waWxlIHByb2JsZW1zLgoKY29tbWl0IDM1MTcxZGMwNGUwMjhlY2FjYzIzYWQ5MTZhNjYyOTU0NzI1NTVkYmYKQXV0aG9yOiBEYW4gTWFsZWsgPGRhbkBlbWJlZGRlZGFsbGV5LmNvbT4KRGF0ZToJRnJpIEphbiA1IDA5OjE1OjM0IDIwMDcgKzAxMDAKCiAgICBBZGQgc3VwcG9ydCBmb3IgU1RYIEdQM1NTQSAoc3R4c3NhKSBCb2FyZAoKICAgIFNpZ25lZC1vZmYtYnkgRGFuIE1hbGVrLCA8ZGFuQGVtYmVkZGVkYWxsZXkuY29tPgoKY29tbWl0IGYyMTM0ZjhlOWViMDA2YmRjZDcyOWU4OWYzMDljMDdiMmZhNDUxODAKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJV2VkIE1heSAyIDEzOjMxOjUzIDIwMDcgKzAyMDAKCiAgICBtYWNiOiBEb24ndCByZXN0YXJ0IGF1dG9uZWdvdGlhdGlvbiBpZiB3ZSBhbHJlYWR5IGhhdmUgbGluawoKICAgIFJld29yayBtYWNiX3BoeV9pbml0IHNvIHRoYXQgaXQgZG9lc24ndCBhdHRlbXB0IHRvIHJlLW5lZ290aWF0ZSBpZiB0aGUKICAgIGxpbmsgaXMgYWxyZWFkeSB1cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCAwNGZjYjVkMzhiYzkwNzc5Y2Q5YTcxMGQ2MDcwMjA3NTk4NmYwZTI5CkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVdlZCBNYXkgMiAxMzoyMjozOCAyMDA3ICswMjAwCgogICAgbWFjYjogSW50cm9kdWNlIGEgZmV3IGJhcnJpZXJzIHdoZW4gZGVhbGluZyB3aXRoIERNQSBkZXNjcmlwdG9ycwoKICAgIFRoZXJlIHdlcmUgYSBmZXcgdGhlb3JldGljYWwgcG9zc2liaWxpdGllcyB0aGF0IHRoZSBjb21waWxlciBtaWdodAogICAgb3B0aW1pemUgYXdheSBETUEgZGVzY3JpcHRvciByZWFkcyBhbmQvb3Igd3JpdGVzIGFuZCB0aHVzIGNhdXNlCiAgICBzeW5jaHJvbml6YXRpb24gcHJvYmxlbXMgd2l0aCB0aGUgaGFyZHdhcmUuIEluc2VydCBiYXJyaWVycyB3aGVyZQogICAgd2UgZGVwZW5kIG9uIHJlYWRzL3dyaXRlcyBhY3R1YWxseSBoaXR0aW5nIG1lbW9yeS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBmZmE2MjFhMGQxMmExY2NkODFjOTM2YzU2N2Y4OTE3YTIxMzc4N2E4CkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglTYXQgRmViIDI0IDAxOjA4OjEzIDIwMDcgLTA2MDAKCiAgICBDbGVhbmVkIHVwIHNvbWUgODV4eCBQQ0kgYnVncwoKICAgICogQ2xlYW5lZCB1cCB0aGUgQ0RTIFBDSSBDb25maWcgVGFibGVzIGFuZCBhZGRlZCBOVUxMIGVudHJpZXMgdG8KICAgICAgdGhlIGVuZAogICAgKiBGaXhlZCBQQ0llIExBV0JBUiBhc3NpZ25lbXQgdG8gdXNlIHRoZSBjcHUtcmVsYXRpdmUgYWRkcmVzcwogICAgKiBGaXhlZCA4NXh4IFBDSSBjb2RlIHRvIGFzc2lnbiBwb3dhciByZWdpb24gc2l6ZXMgYmFzZWQgb24gdGhlCiAgICAgIGNvbmZpZyB2YWx1ZXMgKHJhdGhlciB0aGFuIGhhcmQtY29kaW5nIHRoZW0pCiAgICAqIEZpeGVkIHRoZSA4NTQ4IENEUyBQQ0kyIElPIHRvIG9uY2UgYWdhaW4gaGF2ZSAwIGFzIHRoZSBiYXNlIGFkZHJlc3MKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjc0MzEwNTk4OGZjNDRkNWIwZDMwMzg4Yzc5MDYwNzgzNWFhZTdhNgpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEFwciAyMyAwMjo1NDoyNSAyMDA3IC0wNTAwCgogICAgQWRkIHN1cHBvcnQgZm9yIHRoZSA4NTY4IE1EUyBib2FyZAoKICAgIFRoaXMgaW5jbHVkZWQgc29tZSBjaGFuZ2VzIHRvIGNvbW1vbiBmaWxlczoKICAgICogQWRkIDg1NjggcHJvY2Vzc29yIFNWUiB0byB2YXJpb3VzIHBsYWNlcwogICAgKiBBZGQgc3VwcG9ydCBmb3Igc2V0dGluZyB0aGUgcWUgYnVzLWZyZXF1ZW5jeSB2YWx1ZSBpbiB0aGUgZHRzCiAgICAqIEFkZCB0aGUgODU2OE1EUyB0YXJnZXQgdG8gdGhlIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGFmMWMyYjg0YmYyN2M4NTY1YmFkZGM4MmQxYWJiOTM3MDBkMTBlMmUKQXV0aG9yOiBEYXZpZCBVcGRlZ3JhZmYgPGRhdmVAY3JheS5jb20+CkRhdGU6CUZyaSBBcHIgMjAgMTQ6MzQ6NDggMjAwNyAtMDUwMAoKICAgIEFkZCBzdXBwb3J0IGZvciB0cmVhdGluZyB1bmtub3duIFBIWXMgYXMgZ2VuZXJpYyBQSFlzLgoKICAgIFdoZW4gYnJpbmdpbmcgdXAgdS1ib290IG9uIG5ldyBib2FyZHMsIFBIWSBzdXBwb3J0IHNvbWV0aW1lcyBnZXRzCiAgICBuZWdsZWN0ZWQuCU1vc3QgUEhZcyBkb24ndCByZWFsbHkgbmVlZCBhbnkgc3BlY2lhbCBzdXBwb3J0LAogICAgdGhvdWdoLiAgQnkgYWRkaW5nIGEgZ2VuZXJpYyBlbnRyeSB0aGF0IGFsd2F5cyBtYXRjaGVzIGlmIG5vdGhpbmcKICAgIGVsc2UgZG9lcywgd2UgY2FuIHByb3ZpZGUgc3VwcG9ydCBmb3IgInVuc3VwcG9ydGVkIiBQSFlzIGZvciB0aGUKICAgIHRzZWMuCgogICAgVGhlIGdlbmVyaWMgUEhZIGRyaXZlciBzdXBwb3J0cyBtb3N0IFBIWXMsIGluY2x1ZGluZyBnaWdhYml0LgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIFVwZGVncmFmZiA8ZGF2ZUBjcmF5LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhNzVhZjliZmQ4ZmZmMDQ5OWVmZGJiOTA2MDFjZWM1YTJhZmVmMTE3CkF1dGhvcjogSmFtZXMgWWFuZyA8SmFtZXMuWWFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgRmViIDcgMTU6Mjg6MDQgMjAwNyAtMDYwMAoKICAgIENvbmRpdGlvbmFsaXplIDg2NDEgUmV2MS4wIE1DTSB3b3JrYXJvdW5kcwoKICAgIFNpZ25lZC1vZmYtYnk6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjY0NzAyYjdmYzhmOGRmMzlkMzFhZGQ3NzBkZjZlMzcyZjllOWNlMwpBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBBcHIgMzAgMTM6NTk6NTAgMjAwNyAtMDUwMAoKICAgIEZpeCBtZW1vcnkgaW5pdGlhbGl6YXRpb24gb24gTVBDODM0OUUtbUlUWAoKICAgIERlZmluZSBDRkdfRERSX1NEUkFNX0NMS19DTlRMIGZvciB0aGUgTVBDODM0OUUtbUlUWCBhbmQgTVBDODM0OUUtbUlUWC1HUC4KICAgIFRoaXMgYWxsb3dzIGRkci0+c2RyYW1fY2xrX2NudGwgdG8gYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuICBUaGlzIGlzIG5lY2Vzc2FyeQogICAgb24gc29tZSBJVFggYm9hcmRzLCBub3RhYmx5IHRob3NlIHdpdGggYSByZXZpc2lvbiAzLjEgQ1BVLgoKICAgIEFsc28gY2hhbmdlIHNwZF9zZHJhbSgpIGluIGNwdS9tcGM4M3h4L3NwZF9zZHJhbS5jIHRvIG5vdCB3cml0ZSBhbnl0aGluZyBpbnRvCiAgICBkZHItPnNkcmFtX2Nsa19jbnRsIGlmIENGR19ERFJfU0RSQU1fQ0xLX0NOVEwgaXMgbm90IGRlZmluZWQuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBNaWNoYWVsIEJlbmVkaWN0IDxNQmVuZWRpY3RAdHdhY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1NGIyZDQzNGFlOWQwMTc4NzkzNmYzNGZlMTc1OWNmM2Q3NjI0YWUzCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEFwciAzMCAxNToyNjoyMSAyMDA3IC0wNTAwCgogICAgbXBjODN4eDogcmVwbGFjZSBlbGFib3JhdGUgYm9vdHRpbWUgdmVyYm9zaXR5IHdpdGggJ2Nsb2NrcycgY29tbWFuZAoKICAgIGFuZCBmaXggQ1BVOiB0byBhbGlnbiB3aXRoIEJvYXJkOiBkaXNwbGF5IHRleHQuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjMWFiODI2NjlkOTUyNTk5OGMzNGU4MDJhMTJjYWQ2NjI3MjNmMjJhCkF1dGhvcjogSmFtZXMgWWFuZyA8SmFtZXMuWWFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgTWFyIDE2IDEzOjAyOjUzIDIwMDcgLTA1MDAKCiAgICBSZXdyb3RlIHBpY29zX3RvX2NsaygpIHRvIGF2b2lkIHJvdW5kaW5nIGVycm9ycy4KICAgIENsYXJpZmllZCB0aGF0IGNvbnZlcnNpb24gaXMgdG8gRFJBTSBjbG9ja3MgcmF0aGVyIHRoYW4gcGxhdGZvcm0gY2xvY2tzLgogICAgTWFkZSBmdW5jdGlvbiBzdGF0aWMgdG8gc3BkX3NkcmFtLmMuCgogICAgU2lnbmVkLW9mZi1ieTogSmFtZXMgWWFuZyA8SmFtZXMuWWFuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4YjM5NTAxZDI4NzU0ZTcyNzI2Y2U3ZmIwMjMxMGU1NmRiZGYxMTZhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTdW4gQXByIDI5IDE0OjEzOjAxIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEJhbWJvbzogVXNlIGN1cnJlbnQgTkFORCBkcml2ZXIgYW5kICpub3QqIHRoZSBsZWdhY3kgZHJpdmVyCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDg2NGFhNmE2YTQ2NmZjYjkyYmYzMmIxZDdkYmE3OWNkNzA5YjUyYzkKQXV0aG9yOiBHcnplZ29yeiBXaWFuZWNraSA8Z3J6ZWdvcnoud2lhbmVja2lAZ21haWwuY29tPgpEYXRlOglTdW4gQXByIDI5IDE0OjAxOjU0IDIwMDcgKzAyMDAKCiAgICBbUEFUQ0hdIFVzZSBQVlIgdG8gZGlzdGluZ3Vpc2ggTVBDNTIwMEIgZnJvbSBNUEM1MjAwIGluIGJvb3QgbWVzc2FnZQoKICAgIE1QQzUyMDBCIHN5c3RlbXMgYXJlIGluY29ycmVjdGx5IHJlcG9ydGVkIGFzIE1QQzUyMDAgaW4gVS1Cb290IHN0YXJ0LXVwCiAgICBtZXNzYWdlLiBVc2UgUFZSIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlIHR3byB2YXJpYW50cywgYW5kIHByaW50IHByb3BlciBDUFUKICAgIGluZm9ybWF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IFdpYW5lY2tpIDxncnplZ29yei53aWFuZWNraUBnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDVjNWQzMjQyOTM1Y2YzNTQzYWYwMTE0MjYyNzQ5NDQzNDgzNGNmOTgKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXByIDI1IDEyOjM0OjM4IDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBtaW5vciBmaXh1cHMgZm9yIDgzMTNyZGIgaW50cm9kdWN0aW9uCgpjb21taXQgYWRhNGQ0MDA5MWY2ZWQ0YTRmMDA0MGUwOGQyMGRiMjE5NjdlNGE2NwpBdXRob3I6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KRGF0ZToJV2VkIEFwciAyNSAxNjowMToyNiAyMDA3ICswMjAwCgogICAgW1BBVENIXSBzaW1wbGlmeSBzaWxlbnQgY29uc29sZQoKICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMTQ0ODc2YTM4MGY1NzU2ZjU3NDEyY2FmNzRjMWQ2ZGMyMDFkZDc5NgpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJVHVlIEFwciAyNCAyMzowMTowMiAyMDA3ICswMjAwCgogICAgW1BBVENIXSBNVEQgcGFydGl0aW9uIHN1cHBvcnQsIEpGRlMyIHN1cHBvcnQKCmNvbW1pdCAzN2VkNmNkZDQxNTkxOTViZmFkNjhkOGEyMzdmNmFkZGE4ZjQ4MmNiCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVR1ZSBBcHIgMjQgMTQ6MDM6NDUgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogc2V0dXAgNDQwRVB4L0dSeCBaTUlJL1JHTUlJIGJyaWRnZSBkZXBlbmRpbmcgb24gUEZDIHJlZ2lzdGVyIGNvbnRlbnQuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgNjZlZDZjY2EzZjM0MGY3YThhMDZkOTI3MmFlMmVmOGU5NmYwMjczZApBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEFwciAyMyAwMjozNzo0NyAyMDA3IC0wNTAwCgogICAgUmV3b3JrZWQgODV4eCBzcGVlZCBkZXRlY3Rpb24gY29kZQoKICAgIENoYW5nZWQgdGhlIGNvZGUgdG8gcmVhZCB0aGUgcmVnaXN0ZXJzIGFuZCBjYWxjdWxhdGUgdGhlIGNsb2NrCiAgICByYXRlcywgcmF0aGVyIHRoYW4gdXNpbmcgYSAic3dpdGNoIiBzdGF0ZW1lbnQuCgogICAgSWRlYSBmcm9tIEFuZHJldyBLbG9zc25lciA8YW5kcmV3QGNlc2Eub3BidS54ZXJveC5jb20+CgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDgxZjQ4MWNhNzA4ZWQ2YTU2YmY5YzQxMGUzMTkxZGJhZDU4MWM1NjUKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBBcHIgMjMgMDI6MjQ6MjggMjAwNyAtMDUwMAoKICAgIEVuYWJsZSA4NTQ0IHN1cHBvcnQKCiAgICAqIEFkZCBzdXBwb3J0IHRvIHRoZSBNYWtlZmlsZQogICAgKiBBZGQgODU0NCBjb25maWd1cmF0aW9uIHN1cHBvcnQgdG8gdGhlIHRzZWMgZHJpdmVyCiAgICAqIEFkZCA4NTQ0IFNWUiBudW1iZXJzIHRvIHByb2Nlc3Nvci5oCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMGQ4YzNhMjA5NmVhZmY4ZDdkZTg5ZDQ1ZTlhZjRkNGIwZDQ4NjhmZQpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEZlYiAyMyAxNzoxMjoyNSAyMDA3IC0wNjAwCgogICAgU3VwcG9ydCAxRyBzaXplIG9uIDg1NDgKCiAgICBlNTAwdjIgYW5kIG5ld2VyIGNvcmVzIHN1cHBvcnQgMUcgcGFnZSBzaXplcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ1Y2VmNjEyY2M2MDFkMmQxYzg5MGZiYmQ3Y2RjOTYwOWExODlhNDYKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBGZWIgMjMgMTc6MTE6MTYgMjAwNyAtMDYwMAoKICAgIENoYW5nZWQgQk9PS0VfUEFHRVNaX25HQiB0byBCT09LRV9QQUdFU1pfbkcKCiAgICBUaGUgb3RoZXIgcGFnZXN6IGNvbnN0YW50cyB1c2Ugb25lIGxldHRlciB0byBzcGVjaWZ5IG9yZGVyIG9mCiAgICBtYWduaXR1ZGUuCUFsc28gY2hhbmdlIHRoZSBvbmUgcmVmZXJlbmNlIHRvIGl0IGluIG1wYzg1NDhjZHMvaW5pdC5TCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFmOWEzMThjZWExNDI3MmVkZDEwZDYzNzM5ZTJkMzI2YzkwZjQzMGUKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBGZWIgMjMgMTY6Mjg6NDYgMjAwNyAtMDYwMAoKICAgIE9ubHkgc2V0IGRkcmlvb3ZjciBmb3IgODU0OCByZXYxLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTM0M2RiZjg1YmMwMzAzM2YyMTAyZDhlODU0MzU2N2MyYzFhZDJkMgpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU2F0IEZlYiAyNCAwMToxNjo0NSAyMDA3IC0wNjAwCgogICAgVHdlYWsgRERSIEVDQyBlcnJvciBjb3VudGVyCgogICAgRW5hYmxlIHNpbmdsZS1iaXQgZXJyb3IgY291bnRlciB3aGVuIG1lbW9yeSB3YXMgY2xlYXJlZCBieSBkZHIgY29udHJvbGxlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDg1ZTdjN2E0NWUzZGQ5YzdjZTNlNzIyMzUyYmE2MGY4ZGYxYTdhNGIKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gRmViIDEyIDEzOjM0OjU1IDIwMDcgLTA2MDAKCiAgICA4NXh4OiB3cml0ZSBNQUMgYWRkcmVzcyB0byBtYWMtYWRkcmVzcyBhbmQgbG9jYWwtbWFjLWFkZHJlc3MKCiAgICBTb21lIGRldmljZSB0cmVlcyBoYXZlIGEgbWFjLWFkZHJlc3MgcHJvcGVydHksIHNvbWUgaGF2ZSBsb2NhbC1tYWMtYWRkcmVzcywKICAgIGFuZCBzb21lIGhhdmUgYm90aC4gIFRvIHN1cHBvcnQgYWxsIG9mIHRoZXNlIGRldmljZSB0cmVlcywgZnRwX2NwdV9zZXR1cCgpCiAgICBzaG91bGQgd3JpdGUgdGhlIE1BQyBhZGRyZXNzIHRvIG1hYy1hZGRyZXNzIGFuZCBsb2NhbC1tYWMtYWRkcmVzcywgaWYgdGhleQogICAgZXhpc3QuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwM2I4MWI0OGVlYzBhZDI0OWVjOTdhNGFlMTZjMzZmYTJlMDE0ZmY0CkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXByIDIzIDAxOjQ0OjQ0IDIwMDcgLTA1MDAKCiAgICBTb21lIDg1eHggY3B1IGNsZWFudXBzCgogICAgKiBDbGVhbmVkIHVwIHRoZSBUU1JbV0lTXSBjbGVhcmluZwogICAgKiBDbGVhbmVkIHVwIERNQSBpbml0aWFsaXphdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxNTFkNWQ5OTJlYWI4YzQ5N2IyNGM4MTZjNzNkYzFhZDhiZmZiNGViCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXByIDIzIDAxOjMyOjIyIDIwMDcgLTA1MDAKCiAgICBBZGQgY3B1IHN1cHBvcnQgZm9yIHRoZSA4NTQ0CgogICAgUmVjb2duaXplIG5ldyBTVlIgdmFsdWVzLCBhbmQgYWRkIGEgZmV3IHJlZ2lzdGVyIGRlZmluaXRpb25zCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDI1ZDgzZDdmNGFjNjU3MjcxODJkOGRkYWY3YmE0MmZhNzRjZjY1YWUKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXByIDExIDE2OjUxOjAyIDIwMDcgLTA1MDAKCiAgICBBZGQgTVBDODU0NERTIGJhc2ljIHBvcnQgYm9hcmQgZmlsZXMuCgogICAgQWRkIGJvYXJkIHBvcnQgdW5kZXIgbmV3IGJvYXJkL2ZyZWVzY2FsZSBkaXJlY3RvcnkKICAgIHN0cnVjdHVyZSBhbmQgcmV1c2UgZXhpc3RpbmcgUElYSVMgRlBHQSBzdXBwb3J0IHRoZXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDBjZGU0YjAwZmM3MzkzYjg5ZjM3OWQ4M2E5ZDQzNmRjYjEzMzRiZmEKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXByIDExIDE2OjUwOjU3IDIwMDcgLTA1MDAKCiAgICBBZGQgTVBDODU0NERTIG1haW4gY29uZmlndXJhdGlvbiBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDM2MmRkODMwNzdhYzA0YzAyOTZiY2EzZTgyNGVjMmZiM2Q0NGQ5ZDYKQXV0aG9yOiBTZXJnZWkgU2h0eWx5b3YgPHNzaHR5bHlvdkBydS5tdmlzdGEuY29tPgpEYXRlOglXZWQgRGVjIDI3IDIyOjA3OjE1IDIwMDYgKzAzMDAKCiAgICBGaXggUENJIEkvTyBzcGFjZSBtYXBwaW5nIG9uIEZyZWVzY2FsZSBNUEM4NXgwQURTCgogICAgVGhlIFBDSSBJL08gc3BhY2UgbWFwcGluZyBmb3IgRnJlZXNjYWxlIE1QQzg1NDBBRFMgYm9hcmQgd2FzIGJyb2tlbiBieSBjb21taXQKICAgIDUyYzdhNjhiOGQ1ODdlYmNmNWE2YjA1MWI1OGIzZDNmZmEzNzdkZGMgd2hpY2ggZmFpbGVkIHRvIHVwZGF0ZSB0aGUgI2RlZmluZSdzCiAgICBkZXNjcmliaW5nIHRoZSBsb2NhbCBhZGRyZXNzIHdpbmRvdyB1c2VkIGZvciB0aGUgUENJIEkvTyBzcGFjZSBhY2Nlc3NlcyAtLSBmaXgKICAgIHRoaXMgYW5kIGNhcnJ5IG92ZXIgdGhlIG5lY2Vzc2FyeSBjaGFuZ2VzIGludG8gdGhlIE1QQzg1NjBBRFMgY29kZSBzaW5jZSB0aGUKICAgIFBDSSBJL08gc3BhY2UgbWFwcGluZyB3YXMgYWxzbyBicm9rZW4gZm9yIHRoaXMgYm9hcmQgKGJ5IHRoZSBlYXJsaWVyIGNvbW1pdAogICAgMDg3NDU0NjA5ZTQ3Mjk1NDQzYWY3OTNhMjgyY2RkY2Q5MWE1ZjQ5YykuCUFkZCB0aGUgY29tbWVudHMgY2xhcmlmeWluZyBob3cKICAgIHRoZSBQQ0kgSS9PIHNwYWNlIG11c3QgYmUgbWFwcGVkIHRvIGFsbCB0aGUgTVBDODV4eCBib2FyZCBjb25maWcuIGhlYWRlcnMuCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFNodHlseW92IDxzc2h0eWx5b3ZAcnUubXZpc3RhLmNvbT4KCiAgICAgYm9hcmQvbXBjODU0MGFkcy9pbml0LlMJICB8ICAgIDQgKystLQogICAgIGJvYXJkL21wYzg1NjBhZHMvaW5pdC5TCSAgfCAgICA0ICsrLS0KICAgICBpbmNsdWRlL2NvbmZpZ3MvTVBDODU0MEFEUy5oIHwgICAgNSArKy0tLQogICAgIGluY2x1ZGUvY29uZmlncy9NUEM4NTQxQ0RTLmggfCAgICAyICstCiAgICAgaW5jbHVkZS9jb25maWdzL01QQzg1NDhDRFMuaCB8ICAgIDIgKy0KICAgICBpbmNsdWRlL2NvbmZpZ3MvTVBDODU2MEFEUy5oIHwgICAgOCArKysrLS0tLQogICAgIDYgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpjb21taXQgOTY2MjljYmFiZGI3MjdkNGE1ZTYyNTQyZGVlZmMwMWQ0OThkYjZkYwpBdXRob3I6IFphbmcgUm95LXI2MTkxMSA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBEZWMgNSAxNjo0MjozMCAyMDA2ICswODAwCgogICAgdS1ib290OiBGaXggZTUwMCB2MiBjb3JlIHJlc2V0IGJ1ZwoKICAgIFRoZSBmb2xsb3dpbmcgcGF0Y2ggZml4ZXMgdGhlIGU1MDAgdjIgY29yZSByZXNldCBidWcuCiAgICBGb3IgZTUwMCB2MiBjb3JlLCBhIG5ldyByZXNldCBjb250cm9sIHJlZ2lzdGVyIGlzIGFkZGVkIHRvIHJlc2V0IHRoZQogICAgcHJvY2Vzc29yLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2MzI0N2E1YWNkNTgwMzJlNmNmMzNmNTI1YmMzOTIzYjQ2N2JhYzg4CkF1dGhvcjogWmFuZyBSb3ktcjYxOTExIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIERlYyAyMCAxMTowMTowMCAyMDA2ICswODAwCgogICAgdS1ib290OiB2MjogUmVtb3ZlIHRoZSBmaXhlZCBUTEIgYW5kIExBVyBlbnRyeW51Ym1lcgoKICAgIFJlbW92ZSB0aGUgZml4ZWQgVExCIGFuZCBMQVcgZW50cnkgbnVibWVyLiBVc2UgYWN0dWFsbHkgVExCIGFuZCBMQVcKICAgIGVudHJ5IG51bWJlciB0byBjb250cm9sIHRoZSBsb29wLiAgVGhpcyBjYW4gcmVkdWNlIHRoZSBwb3RlbnRpYWwgcmlzawogICAgZm9yIHRoZSA4NXh4IHByb2Nlc3NvciBpbmNyZWFzaW5nIGl0cyBUTEIgYWRuIExBVyBlbnRyeSBudW1iZXIuCgogICAgU2lnbmVkLW9mZi1ieTogU3dhcnRob3V0IEVkd2FyZCA8c3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMGIxOTM0YmExMmZkNDA4ZmNjM2I4YmQ5ZjRiMDQ4NjRjNDJhNDJiZgpBdXRob3I6IFphbmcgUm95LXI2MTkxMSA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBEZWMgMTggMTc6MDE6MDQgMjAwNiArMDgwMAoKICAgIHUtYm9vdDogRml4IHRoZSA4NXh4Y2RzIHRzZWMgYnVnCgogICAgRml4IHRoZSA4NXh4Y2RzIHRzZWMgYnVnLgogICAgV2hlbiBlbmFibGUgUENJLCB0c2VjLm8gc2hvdWxkIGJlIGFkZGVkIHRvIHUtYm9vdC5sZHMgdG8gbWFrZSB0c2VjIHdvcmsuCgogICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDczMzdiMjM3ZmZjNGFhZjFiOTQ2NzAyNGZlNDcyYTg4MGQ4NTI1OTgKQXV0aG9yOiBaYW5nIFJveS1yNjE5MTEgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgRGVjIDE1IDE0OjQzOjMxIDIwMDYgKzA4MDAKCiAgICB1LWJvb3Q6IEZpeCBDUFUyIGVycmF0YSBvbiBNUEM4NTQ4Q0RTIGJvYXJkCgogICAgVGhpcyBwYXRjaCBhcHBseSB3b3JrYXJvdW5kIG9mIENQVTIgZXJyYXRhIG9uIE1QQzg1NDhDRFMgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTpFYm9ueSBaaHUgPGVib255LnpodUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDM5YjE4YzRmM2UwYjZkMGRjMDBmNGU2OGJhZDJkYTM3NjZjODVmMDkKQXV0aG9yOiBlYm9ueS56aHVAZnJlZXNjYWxlLmNvbSA8ZWJvbnkuemh1QGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBEZWMgMTggMTY6MjU6MTUgMjAwNiArMDgwMAoKICAgIHUtYm9vdDogRGlzYWJsZXMgTVBDODU0OENEUyAyVF9USU1JTkcgZm9yIEREUiBieSBkZWZhdWx0CgogICAgVGhpcyBwYXRjaCBkaXNhYmxlcyBNUEM4NTQ4Q0RTIDJUX1RJTUlORyBmb3IgRERSIGJ5IGRlZmF1bHQuCgogICAgU2lnbmVkLW9mZi1ieTpFYm9ueSBaaHUgPGVib255LnpodUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQxZmI3ZTBmMWVjOWI5MWJkYWUyNTY1YmFiNWYyZTNlZTE1MDM5YzcKQXV0aG9yOiBaYW5nIFJveS1yNjE5MTEgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgRGVjIDE0IDE0OjE0OjU1IDIwMDYgKzA4MDAKCiAgICB1LWJvb3Q6IEVuYWJsZSBQQ0kgZnVuY3Rpb24gYW5kIGFkZCBQRVggJiByYXBpZGlvIG1lbW9yeSBtYXAgb24gTVBDODU0OENEUyBib2FyZAoKICAgIEVuYWJsZSBQQ0kgZnVuY3Rpb24gYW5kIGFkZCBQRVggJiByYXBpZGlvIG1lbW9yeSBtYXAgb24gTVBDODU0OENEUwogICAgYm9hcmQuCiAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTZiOGEwNTQzMmYzNDZmMzY0OTM1MzVjODUzMjBiNzBlYzljN2MxYgpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXByIDE2IDE0OjU0OjE1IDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBBZGQgTVBDODMxM0VSREIgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0OWVhM2I2ZWFmZTYwNjI4NWFlNGQ1YzM3ODAyNjE1M2RkZTUzMjAwCkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBBcHIgMTYgMTQ6MzQ6MjEgMjAwNyAtMDUwMAoKICAgIG1wYzgzeHg6IEFkZCBnZW5lcmljIFBDSSBzZXR1cCBjb2RlLgoKICAgIEJvYXJkIGNvZGUgY2FuIG5vdyByZXF1ZXN0IHRoZSBnZW5lcmljIHNldHVwIGNvZGUgcmF0aGVyIHRoYW4gaGF2aW5nIHRvCiAgICBjb3B5LWFuZC1wYXN0ZSBpdCBmb3IgdGhlbXNlbHZlcy4gIEJvYXJkcyBzaG91bGQgYmUgY29udmVydGVkIHRvIHVzZSB0aGlzCiAgICBvbmNlIHRoZXkncmUgdGVzdGVkIHdpdGggaXQuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgN2M5OGU1MTkzZTkzZGY2YjliNjUxODUxZDU0YjYzOGE2MWViYjBlYQpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXByIDE2IDE0OjM0OjE5IDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBBZGQgODMxeCBzdXBwb3J0IHRvIHNwZWVkLmMuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMGYyNTMyODNhMzJkOTFlMDY4NDRkN2Y4N2Y5YjMzZjRmNGZiY2U4ZgpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXByIDE2IDE0OjM0OjE4IDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBBZGQgODMxeCBzdXBwb3J0IHRvIGdsb2JhbF9kYXRhLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5NWU3ZWY4OTdlNTQ1OTFlNjE1ZmMxYjQ1OGI3NGMyODZmZTFmYjA2CkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBBcHIgMTYgMTQ6MzQ6MTYgMjAwNyAtMDUwMAoKICAgIG1wYzgzeHg6IENoYW5nZSBQVlJfODN4eCB0byBQVlJfRTMwMEMxLTMsIGFuZCB1cGRhdGUgY2hlY2tjcHUoKS4KCiAgICBSYXRoZXIgdGhhbiBtaXNsZWFkaW5nbHkgZGVmaW5lIFBWUl84M3h4IGFzIHRoZSBzcGVjaWZpYyB0eXBlIG9mIDgzeHgKICAgIGJlaW5nIGJ1aWx0IGZvciwgdGhlIFBWUiBvZiBlYWNoIGNvcmUgcmV2aXNpb24gaXMgZGVmaW5lZC4gY2hlY2tjcHUoKSBub3cKICAgIHByaW50cyB0aGUgY29yZSB0aGF0IGl0IGRldGVjdHMsIHJhdGhlciB0aGFuIGFib3J0aW5nIGlmIGl0IGRvZXNuJ3QgZmluZAogICAgd2hhdCBpdCB0aGlua3MgaXQgd2FudHMuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYTM1YjBjNDk1MGQ4NGNmOWUzYTllMzJiOTE2MTM1OTU2ZDFhYzYzNgpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXByIDE2IDE0OjM0OjE1IDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBSZWNvZ25pemUgU1BSIHZhbHVlcyBmb3IgTVBDODMxMSBhbmQgTVBDODMxMy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkODdjNTdiMjAxYjQ1NzJkMTZmMWI2NDI5OThmYWEwMGM5OTEyYjE2CkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBBcHIgMTYgMTQ6MzE6NTUgMjAwNyAtMDUwMAoKICAgIG1wYzgzeHg6IEFkZCByZWdpc3RlciBkZWZpbml0aW9ucyBmb3IgTVBDODMxeC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3ZmM0YzcxYTE0M2JlODY2NmQ3MDgwM2ZiMjVhZTYwMzc5Yzk1NjIyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gQXByIDIzIDE1OjM5OjU5IDIwMDcgKzAyMDAKCiAgICBGaXggZmlsZSBtb2RlCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDM4MjU3OTg4YWJmZTc0ZDQ1OWNhMmFkNzQ4YjEwOWNhMDRlNGVmZTEKQXV0aG9yOiBTZXJnZWkgU2h0eWx5b3YgPHNzaHR5bHlvdkBydS5tdmlzdGEuY29tPgpEYXRlOglNb24gQXByIDIzIDE1OjMwOjM5IDIwMDcgKzAyMDAKCiAgICBbUEFUQ0hdIEF2b2lkIGFzc2lnbmluZyBQQ0kgcmVzb3VyY2VzIGZyb20gemVybyBhZGRyZXNzCgogICAgSWYgYSBQQ0kgSURFIGNhcmQgaGFwcGVucyB0byBnZXQgYSB6ZXJvIGFkZHJlc3MgYXNzaWduZWQgdG8gaXQsIHRoZSBMaW51eCBJREUKICAgIGNvcmUgY29tcGxhaW5zIGFuZCBJREUgZHJpdmVycyBmYWlscyB0byB3b3JrLiAgQWxzbywgYXNzaWduaW5nIHplcm8gdG8gYSBCQVIKICAgIHdhcyBpbGxlZ2FsIGFjY29yZGluZyB0byBQQ0kgMi4xICh0aGUgbGF0ZXIgcmV2aXNpb25zIHNlZW0gdG8gaGF2ZSBleGNsdWRlZCB0aGUKICAgIHNlbnRlbmNlIGFib3V0ICIwIiBiZWluZyBjb25zaWRlcmVkIGFuIGludmFsaWQgYWRkcmVzcykgLS0gc28sIHVzZSBhIHJlYXNvbmFibGUKICAgIHN0YXJ0aW5nIHZhbHVlIG9mIDB4MTAwMCAodGhhdCdzIHdoYXQgdGhlIG1vc3QgTGludXggYXJjaHMgYXJlIHVzaW5nKS4KCiAgICBBbHRlcm5hdGl2ZWx5LCBvbmUgbWlnaHQgaGF2ZSBmaXhlZCB0aGUgY2FsbHMgdG8gcGNpX3NldF9yZWdpb24oKSBpbmRpdmlkdWFsbHkKICAgIChzb21lIGNvZGUgZXZlbiBzZWVtcyB0byBoYXZlIHRha2VuIGNhcmUgb2YgdGhpcyBpc3N1ZSkgYnV0IHRoYXQgd291bGQgaGF2ZQogICAgYmVlbiBhIGxvdCBtb3JlIHdvcmsuIDotKQoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBTaHR5bHlvdiA8c3NodHlseW92QHJ1Lm12aXN0YS5jb20+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGFmYjkwM2EyZWI5NDM2YmFhOTI3MGNjYzBjMjcwODJkODY0OTdkODkKQXV0aG9yOiBKZWZmcmV5IE1hbm4gPG1hbm5qQGVtYmVkZGVkcGxhbmV0LmNvbT4KRGF0ZToJTW9uIEFwciAyMyAxNDowMDoxMSAyMDA3ICswMjAwCgogICAgW3BhdGNoXSBzZXRlbnYoLi4uKSBjYW4gZGVsZXRlIGVudmlyb25tZW50YWx2YXJpYWJsZXMKCiAgICB1cGRhdGUgc2V0ZW52KCkgZnVuY3Rpb24gc28gdGhhdCBlbnRlcmluZyBhIE5VTEwgdmFsdWUgZm9yIHRoZQogICAgdmFyaWFibGUncyB2YWx1ZSB3aWxsIGRlbGV0ZSB0aGUgZW52aXJvbm1lbnRhbCB2YXJpYWJsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplZmZyZXkgTWFubiA8bWFubmpAZW1iZWRkZWRwbGFuZXQuY29tPgogICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzNmYxMDRlNWNhYTc0N2Q1NjhlZmYyNmIzNjk1NjVhZjU3YzJmZmE2CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gQXByIDIzIDEzOjU0OjI0IDIwMDcgKzAyMDAKCiAgICBbcGF0Y2hdIHVzZSB1bnNpZ25lZCBjaGFyIGluIHNtYzkxMTExIGRyaXZlciBmb3IgbWFjCgogICAgdGhlIHZfbWFjIHZhcmlhYmxlIGluIHRoZSBzbWM5MTExMSBkcml2ZXIgaXMgZGVjbGFyZWQgYXMgYSBzaWduZWQgY2hhciAuLi4KICAgIHRoaXMgY2F1c2VzIHByb2JsZW1zIHdoZW4gb25lIG9mIHRoZSBieXRlcyBpbiB0aGUgTUFDIGlzICJzaWduZWQiIGxpa2UgMHhFMAogICAgYmVjYXVzZSB3aGVuIGl0IGdldHMgcHJpbnRlZCBvdXQsIHlvdSBnZXQgYSBkaXNwbGF5IGxpa2U6CiAgICAweEZGRkZGRkUwIGFuZCB0aGF0J3Mgbm8gZ29vZAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBkOThjMDg4NWFkNjE3ZmNjZjIxZTdjMjZlZjhjYjcyOGZiZmIyNDU5CkF1dGhvcjogUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAZW5uZWVubmUuY29tPgpEYXRlOglNb24gQXByIDIzIDEzOjEwOjUyIDIwMDcgKzAyMDAKCiAgICBVU0I6IChBbm90aGVyKSBkZWxheSBmb3IgY3JhcHB5IFVTQiBrZXlzLgoKICAgIFNvbWUgVVNCIGtleXMgYXJlIHNsb3cgaW4gZ2l2aW5nIGJhY2sgYW4gYW5zd2VyIHdoZW4gdGhlIFJvb3QgSFVCCiAgICBlbmFibGVzIHBvd2VyIGxpbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJvZG9sZm8gR2lvbWV0dGkgPGdpb21ldHRpQGxpbnV4Lml0PgoKY29tbWl0IDMyM2JmYThmNDM2ZGMzYmM1NzE4N2M5YjE0ODhiYzMxNDZmZjE1MjIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBBcHIgMjMgMTI6MDA6MjIgMjAwNyArMDIwMAoKICAgIFJlbW92ZSBCT0FSRExJQlMgdXNhZ2UgY29tcGxldGVseQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzMjU1NjQ0Mzg0MGYxMjcxNzBlNGJhYThiZGQ1YjU2NzAzOWY2YzM2CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglTYXQgQXByIDIxIDIxOjA3OjIyIDIwMDcgKzAyMDAKCiAgICBbUEFUQ0hdIFN5c3RlbUFDRSBzdXBwb3J0IGZvciBNaWNyb2JsYXplCgpjb21taXQgMDY0MzYzMWFhMTAzNmNkNzQ2YmY1ZDE1ZjVhMzRiYzdiYzAxZWE0ZgpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJU2F0IEFwciAyMSAyMTowMjo0MCAyMDA3ICswMjAwCgogICAgMTZiaXQgcmVhZC93cml0ZSBsaXR0bGUgZW5kaWFuCgpjb21taXQgOWQxZDZhMzRkMjZjNTkzM2JjMDk3Y2U3M2M5MzQ4Zjk1NTczY2RkNApBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJU2F0IEFwciAyMSAyMDo1MzozMSAyMDA3ICswMjAwCgogICAgQ2hhbmdlIE1MNDAxIHBhcmFtZXRlcnMgLSBYaWxpbnggQlNQCgpjb21taXQgMmUzNDNiOWE1N2YzMmUxYmQwOGMzNWM5OTc2OTEwMzMzZmI0ZTEzZApBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBGZWIgMjggMDU6Mzc6MjkgMjAwNyAtMDYwMAoKICAgIG1wYzg2NDFocGNuOiBGaXggTEFXIGFuZCBUTEIgc2V0dXAgdG8gdXNlIHRoZSBJT19QSFlTICNkZWZpbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNzljYjQ3MzkxZWViZWY4NWFjYWRiM2Y2OTYxZWY2YzU1Y2FjZTZhYwpBdXRob3I6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBKYW4gMTkgMTA6NDI6MzcgMjAwNyArMDgwMAoKICAgIEVuYWJsZSBMQVdzIGZvciBNUEM4NjQxIFBDSS1FeDIuCgogICAgU2lnbmVkLW9mZi1ieTogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYmQ3ODUxY2UxZTFmMTQwNjY1YjUyMDAyNmFiZjEwNDI5NjhiMTEwMgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBBcHIgMjAgMTQ6MTI6MjYgMjAwNyAtMDUwMAoKICAgIG1wYzg2eHg7IFdyaXRlIE1BQyBhZGRyZXNzIHRvIG1hYy1hZGRyZXNzIGFuZCBsb2NhbC1tYWMtYWRkcmVzcwoKICAgIFNvbWUgZGV2aWNlIHRyZWVzIGhhdmUgYSBtYWMtYWRkcmVzcyBwcm9wZXJ0eSwgc29tZSBoYXZlIGxvY2FsLW1hYy1hZGRyZXNzLAogICAgYW5kIHNvbWUgaGF2ZSBib3RoLiAgVG8gc3VwcG9ydCBhbGwgb2YgdGhlc2UgZGV2aWNlIHRyZWVzLCBmdHBfY3B1X3NldHVwKCkKICAgIHNob3VsZCB3cml0ZSB0aGUgTUFDIGFkZHJlc3MgdG8gbWFjLWFkZHJlc3MgYW5kIGxvY2FsLW1hYy1hZGRyZXNzLCBpZiB0aGV5CiAgICBleGlzdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3ZGJkZjI4YjhiZDg1NWE4NTMwZGMzMjkyZTQ5ODI1NzVhMTk3MDYwCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEFwciAyMCAxNDoxMTozOCAyMDA3IC0wNTAwCgogICAgbXBjODZ4eDogcHJvdGVjdCBtZW1jcHkgdG8gYmFkIGFkZHJlc3MgaWYgYSBtYWMtYWRkcmVzcyBpcyBtaXNzaW5nIGZyb20gZHQKCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxNGRhNWY3Njc1YmJiNDI3YzQ2OWUzZjQ1MDA2ZTAyN2I2ZTIxZGI5CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIEFwciAyMCAxNzo0MzoyOCAyMDA3ICswMjAwCgogICAgQ2xlYW51cCBjb21waWxlciB3YXJuaW5ncywgdXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNjkyMzU2NWRiMTJhZjM0ZmQ1ZTAyZDM1NGVlNjVhOGM3OGFjNDYwZgpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglGcmkgQXByIDIwIDEyOjAxOjQ3IDIwMDcgKzAyMDAKCiAgICBGaXggYnJlYWthZ2Ugb2YgTkM2NTAgYm9hcmQgd2l0aCByZXNwZWN0IHRvIG5hbmQgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KCmNvbW1pdCAzOWYyM2NkOTA5NDc2MzlhYzI3OGExOGZmMjc3ZWM3ODZiNWFjMTY3CkF1dGhvcjogRG9tZW4gUHVuY2VyIDxkb21lbi5wdW5jZXJAdGVsYXJnby5jb20+CkRhdGU6CUZyaSBBcHIgMjAgMTE6MTM6MTYgMjAwNyArMDIwMAoKICAgIFtSRkMgUEFUQ0hdIGljZWN1YmUvbGl0ZTUyMDBiOiBmaXggT0ZfVEJDTEsgKHRpbWViYXNlLWZyZXF1ZW5jeSkgY2FsY3VsYXRpb24KCiAgICBHMiBjb3JlIHJlZmVyZW5jZSBtYW51YWwgc2F5cyBkZWNyZW1lbnRlciBhbmQgdGltZSBiYXNlCiAgICBhcmUgZGVjcmVhc2luZy9pbmNyZWFzaW5nIG9uY2UgZXZlcnkgNCBidXMgY2xvY2sgY3ljbGVzLgogICAgTGV0cyBmaXggaXQsIHNvIHRpbWUgaW4gTGludXggd29uJ3QgcnVuIHR3aWNlIGFzIGZhc3QKCiAgICBTaWduZWQtb2ZmLWJ5OiBEb21lbiBQdW5jZXIgPGRvbWVuLnB1bmNlckB0ZWxhcmdvLmNvbT4KICAgIEFja2VkLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgNzY1MWY4YmRiYmEwM2JiMGI0ZjI0MWUyZDJjNGNiNjViMjMwYmQ1NgpBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CVRodSBBcHIgMTkgMjM6MTQ6MzkgMjAwNyAtMDQwMAoKICAgIEZpeCBzZXJpb3VzIHBvaW50ZXIgYnVnIHdpdGggYm9vdG0gYW5kIHJlc2VydmUgbWFwLgoKICAgIFdoYXQgd2FzIHN1cHBvc2UgdG8gYmUgYSBzdGFjayB2YXJpYWJsZSB3YXMgZGVjbGFyZWQgYXMgYSBwb2ludGVyLAogICAgICBvdmVyd3JpdGluZyByYW5kb20gbWVtb3J5LgogICAgQWxzbyBtb3ZlZCB0aGUgbGliZmR0LmEgcmVxdWlyZW1lbnQgaW50byB0aGUgbWFpbiBNYWtlZmlsZS4gIFRoYXQgaXMKICAgICAgVGhlIFUtQm9vdCBXYXkuCgpjb21taXQgZDIxNjg2MjYzNTc0ZTk1Y2IzZTllOWIwNDk2Zjk2OGIxYjg5N2ZkYgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEFwciAxOSAwOTo1Mzo1MiAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBGaXggY2hpcCBzZWxlY3QgdGltaW5nIGZvciBTeXNBQ0UgYWNjZXNzIG9uIEFNQ0MgS2F0bWFpCgogICAgUHJldmlvdXMgdmVyc2lvbnMgdXNlZCBmdWxsIHdhaXQgc3RhdGVzIGZvciB0aGUgY2hpcCBzZWxlY3QgIzEgd2hpY2gKICAgIGlzIGNvbm5lY3RlZCB0byB0aGUgWGlsaW5peCBTeXN0ZW1BQ0UgY29udHJvbGxlciBvbiB0aGUgQU1DQyBLYXRtYWkKICAgIGV2YWx1YXRpb24gYm9hcmQuIFRoaXMgbGVhZHMgdG8gcmVhbGx5IHNsb3cgYWNjZXNzIGFuZCB0aGVyZWZvcmUgbG93CiAgICBwZXJmb3JtYW5jZS4gVGhpcyBwYXRjaCBub3cgc2V0cyB1cCB0aGUgY2hpcCBzZWxlY3QgYSBsb3QgZmFzdGVyCiAgICByZXN1bHRpbmcgaW4gbXVjaCBiZXR0ZXIgcmVhZC93cml0ZSBwZXJmb3JtYW5jZSBvZiB0aGUgTGludXggZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzNzgzNzgyOGQ4OTA4NDg3OWJlZTJmMmI4YzdjNjhkNDY5NTk0MGRmCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEFwciAxOCAxNzo0OToyOSAyMDA3ICswMjAwCgogICAgQ2xlbmF1cCwgdXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZmQwOTRjNjM3OWUyZWY4YTRkMGNlYjU2NDBiMjRjYjBjOGQwNDQ0OQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBBcHIgMTggMTc6MjA6NTggMjAwNyArMDIwMAoKICAgIFVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDJhMjZlYzQ3MzJlZmQ3YTMwOGQwYmJjOTc3MTRjMWQ3NWVmMTE3M2IKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgQXByIDE4IDE3OjA3OjI2IDIwMDcgKzAyMDAKCiAgICBDbGVhbnVwLCB1cGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnZW5kLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1ZjZjNzMyYWZmZWE5NjQ3NzYyZDI3YTQ2MTdhMmFlNjRjNTJkY2ViCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEFwciAxOCAxNjoxNzo0NiAyMDA3ICswMjAwCgogICAgVXBkYXRlIENIQU5HRUxPRwoKY29tbWl0IGFkNGViNTU1NjcxZDk3Zjk2ZGM1NmVhYjU1MTAzYjFmODY4NzRiMDEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgQXByIDE4IDE0OjMwOjM5IDIwMDcgKzAyMDAKCiAgICBNQ0MyMDAgYm9hcmQ6IHJlbW92ZSB3YXJuaW5nIHdoaWNoIGlzIG9ic29sZXRlIGFmdGVyIFBTb0MgZmlybXdhcmUgY2hhbmdlcwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMzc0N2EzZjAxMGIyYjE0NDJkZWMzZTg3MWM2OTc4OGI2MDE3YWFhZQpBdXRob3I6IERvbWVuIFB1bmNlciA8ZG9tZW4ucHVuY2VyQHRlbGFyZ28uY29tPgpEYXRlOglXZWQgQXByIDE4IDEyOjExOjA1IDIwMDcgKzAyMDAKCiAgICBbUEFUQ0hdIGljZWN1YmUvbGl0ZTUyMDBiOiBkb2N1bWVudCB3YWtldXAgZnJvbSBsb3ctcG93ZXIgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IERvbWVuIFB1bmNlciA8ZG9tZW4ucHVuY2VyQHRlbGFyZ28uY29tPgoKY29tbWl0IGU2NzMyMjZmZjlkNmFhOTFiNDdjZWFjNzRiOGMxMzc3MGIwNmJiMzcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBBcHIgMTggMTI6MDc6NDcgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogVXBkYXRlIEFjYWRpYSB0byBub3Qgc2V0dXAgUExMIHdoZW4gYm9vdGluZyB2aWEgYm9vdHN0cmFwIEVFUFJPTQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5MGU2ZjQxY2YwOWZjOThmNmNjYjUxMGUxODNkNTNhYjg1NDZjZjJmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgQXByIDE4IDEyOjA1OjU5IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBvdXRwdXQgZm9yIGJvb3Ryb20gbG9jYXRpb24gdG8gNDA1RVogcG9ydHMKCiAgICBOb3cgNDA1RVogcG9ydHMgYWxzbyBzaG93IHVwb24gYm9vdHVwIGZyb20gd2hpY2ggYm9vdCBkZXZpY2UKICAgIHRoZXkgYXJlIGNvbmZpZ3VyZWQgdG8gYm9vdDoKCiAgICBVLUJvb3QgMS4yLjAtZ2QzODMyZThmLWRpcnR5IChBcHIgMTggMjAwNyAtIDA3OjQ3OjA1KQoKICAgIENQVTogICBBTUNDIFBvd2VyUEMgNDA1RVogUmV2LiBBIGF0IDE5OS45OTkgTUh6IChQTEI9MTMzLCBPUEI9NjYsIEVCQz02NiBNSHopCgkgICBCb290c3RyYXAgT3B0aW9uIEUgLSBCb290IFJPTSBMb2NhdGlvbiBFQkMgKDMyIGJpdHMpCgkgICAxNiBrQiBJLUNhY2hlIDE2IGtCIEQtQ2FjaGUKICAgIEJvYXJkOiBBY2FkaWEgLSBBTUNDIFBQQzQwNUVaIEV2YWx1YXRpb24gQm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOWMwMGRmYjBiZjg5YzhjMjNlOGFmNWI1YmRmNDljZjY2ZDc2OWY4NQpBdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+CkRhdGU6CVR1ZSBBcHIgMTcgMTM6MzA6MzMgMjAwNyArMDEwMAoKICAgIE1vdmUgcHBlYXJzZSB0byBBUk0gYm9hcmQgbGlzdAogICAgQWRkIEtvbnN0YW50aW4gS2xldHNjaGtlIGZvciBzY2I5MzI4LgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KCmNvbW1pdCBkMzgzMmU4ZmUxYjIxNGVjNjI0MjRlYWMzNmNmZGE5ZmM1NmQyMWIzCkF1dGhvcjogRG9tZW4gUHVuY2VyIDxkb21lbi5wdW5jZXJAdGVsYXJnby5jb20+CkRhdGU6CU1vbiBBcHIgMTYgMTQ6MDA6MTMgMjAwNyArMDIwMAoKICAgIFtQQVRDSF0gaWNlY3ViZS9saXRlNTIwMGI6IHdha2V1cCBmcm9tIGxvdy1wb3dlciBzdXBwb3J0CgogICAgVS1Cb290IHBhcnQgb2YgTGl0ZTUyMDBiIGxvdyBwb3dlciBtb2RlIHN1cHBvcnQuCiAgICBQdXRzIFNEUkFNIG91dCBvZiBzZWxmLXJlZnJlc2ggYW5kIHRyYW5zZmVycyBjb250cm9sIHRvCiAgICBhZGRyZXNzIHNhdmVkIGF0IHBoeXNpY2FsIDB4MC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEb21lbiBQdW5jZXIgPGRvbWVuLnB1bmNlckB0ZWxhcmdvLmNvbT4KICAgIEFja2VkLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgZjM1YTUzZmM3YjBjNzlmY2ZlN2JkYzAxMTYzYzRiMzRhYWJhMTQ2MApBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CVN1biBBcHIgMTUgMTM6NTQ6MjYgMjAwNyAtMDQwMAoKICAgIEZpeCB0aGUgZnRfY3B1X3NldHVwKCkgcHJvcGVydHkgc2V0dGluZ3MuCgogICAgVXNlICJzZXR0ZXIiIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIGZsYWdzLCBjbGVhbmVyIGFuZCBtb3JlIGZsZXhpYmxlLgogICAgSXQgYWxzbyBmaXhlcyB0aGUgcHJvYmxlbSBub3RlZCBieSBUaW11ciBUYWJpIHRoYXQgdGhlIGV0aGVybmV0IE1BQwogICAgYWRkcmVzc2VzIHdlcmUgYWxsIGJlaW5nIHNldCBpbmNvcnJlY3RseSB0byB0aGUgc2FtZSBNQUMgYWRkcmVzcy4KCmNvbW1pdCBjMjhhYmI5YzYxNGY2NWNlMjA5NmNjNGE2NmZjODg2Yzc3ZDBlNWE0CkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJU2F0IEFwciAxNCAyMjo1MToyNCAyMDA3IC0wNDAwCgogICAgSW1wcm92ZSB0aGUgYm9vdG0gY29tbWFuZCBmb3IgQ09ORklHX09GX0xJQkZEVAoKICAgIEluIGJvb3RtLCBjcmVhdGUgdGhlICIvY2hvc2VuIiBub2RlIG9ubHkgaWYgaXQgZG9lc24ndCBhbHJlYWR5IGV4aXN0CiAgICAgIChiZXR0ZXIgbWF0Y2hlcyB0aGUgcHJldmlvdXMgYmVoYXZpb3IpLgogICAgVXBkYXRlIGZvciBwcm9wZXIgcmVzZXJ2ZWQgbWVtb3J5IG1hcCBoYW5kbGluZyBmb3IgaW5pdHJkLgoKY29tbWl0IDNmOWYwOGNmOTFjOGE2OTQ5YTVkNzhhMThiZDNkOGRmN2I4NmQ4ODgKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglTYXQgQXByIDE0IDIyOjQ2OjQxIDIwMDcgLTA0MDAKCiAgICBBZGQgc29tZSB1dGlsaXRpZXMgdG8gbWFuaXB1bGF0ZSB0aGUgcmVzZXJ2ZWQgbWVtb3J5IG1hcC4KCmNvbW1pdCA4MDQ4Y2RkNTZmMDRhNzU2ZWVlYTQ5NTFmNDAyYmY1Y2MzMzc4NWRiCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IEFwciAxNCAyMToxNjo1NCAyMDA3ICswMjAwCgogICAgVXBkYXRlIENIQU5HRUxPRwoKY29tbWl0IDhlNjg3NTE4M2NkY2E5MWMxMzQ0MDhkMTE5ZDRhYmNkNDhlZjY4NTYKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJU3VuIERlYyAxNyAxODo1Njo0NiAyMDA2ICswMTAwCgogICAgQVZSMzI6IEVuYWJsZSBNTUMgc3VwcG9ydAoKICAgIFNldCB1cCB0aGUgcG9ydG11eCBmb3IgdGhlIE1NQyBpbnRlcmZhY2UgYW5kIGVuYWJsZSB0aGUgTU1DIGRyaXZlcgogICAgYWxvbmcgd2l0aCBzdXBwb3J0IGZvciBET1MgcGFydGl0aW9ucywgZXh0MiBhbmQgRkFUIGZpbGVzeXN0ZW1zLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGZjMjZjOTdiYjZkZjQxYjRhOTU2NjJjMzQwNTRmZTkxMjM4N2JmMzgKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJRnJpIEphbiAyMCAxMDowMzo1MyAyMDA2ICswMTAwCgogICAgQXRtZWwgTUNJIGRyaXZlcgoKICAgIERyaXZlciBmb3IgdGhlIEF0bWVsIE1DSSBjb250cm9sbGVyIChNTUMgaW50ZXJmYWNlKSBmb3IgQVQzMkFQIENQVXMuCgogICAgVGhlIEFUOTEgQVJNLWJhc2VkIENQVXMgdXNlIGJhc2ljYWxseSB0aGUgc2FtZSBoYXJkd2FyZSwgc28gaXQgc2hvdWxkCiAgICBiZSBwb3NzaWJsZSB0byBzaGFyZSB0aGlzIGRyaXZlciwgYnV0IG5vIGVmZm9ydCBoYXMgYmVlbiBtYWRlIHNvIGZhci4KCiAgICBIYXJkd2FyZSBkb2N1bWVudGF0aW9uIGNhbiBiZSBmb3VuZCBpbiB0aGUgQVQzMkFQNzAwMCBkYXRhIHNoZWV0LAogICAgd2hpY2ggY2FuIGJlIGRvd25sb2FkZWQgZnJvbQoKICAgIGh0dHA6Ly93d3cuYXRtZWwuY29tL2R5bi9wcm9kdWN0cy9kYXRhc2hlZXRzLmFzcD9mYW1pbHlfaWQ9NjgyCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgMDVmZGFiMWVmNmExMGQwNDlhNTAwMjFhODZmMTIyNmY0NDRkOWI5ZgpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglTdW4gRGVjIDE3IDE4OjU1OjM3IDIwMDYgKzAxMDAKCiAgICBBVlIzMjogQWRkIGNsayBhbmQgZ3BpbyBpbmZyYXN0cnVjdHVyZSBmb3IgbW1jaQoKICAgIEltcGxlbWVudCBmdW5jdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBtbWNpIHBpbnMsIGFzIHdlbGwgYXMKICAgIGZ1bmN0aW9ucyBmb3IgZ2V0dGluZyB0aGUgY2xvY2sgcmF0ZSBvZiB0aGUgbW1jaSBjb250cm9sbGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDdmYWMzZjY5ZTlmMDVjNWU1MzI2NjgxOTc2YzM1ZDEyOTMyNGM0ZGUKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJU3VuIERlYyAxNyAxODo1Mzo1NiAyMDA2ICswMTAwCgogICAgRW5hYmxlIHBhcnRpdGlvbiBzdXBwb3J0IHdpdGggTU1DCgogICAgSW5jbHVkZSBpbXBsZW1lbnRhdGlvbnMgb2YgaW5pdF9wYXJ0KCkgYW5kIGdldF9wYXJ0aXRpb25faW5mbygpIHdoZW4KICAgIENPTkZJR19NTUMgaXMgc2V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDlhMjRmNDc3YTFlZDViYjBmNzQzNzdjOTg1ZDc1NGViYmZhNDQ4NzIKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJU3VuIERlYyAxNyAxNzoxNDozMCAyMDA2ICswMTAwCgogICAgQVZSMzI6IEVuYWJsZSBuZXR3b3JraW5nCgogICAgSW1wbGVtZW50IE1BQ0IgaW5pdGlhbGl6YXRpb24gZm9yIEFWUjMyIGFuZCBBVFNUSzEwMDAsIGFuZCB0dXJuCiAgICBldmVyeXRoaW5nIG9uLCBpbmNsdWRpbmcgdGhlIE1BQ0IgZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDVjMWZlMWZmZmZkMTc1MGE3ZTQ3ZTVhMmUyY2Q2MDBjMDBlNGYwMDkKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJRnJpIEphbiAyMCAxMDowMzozNCAyMDA2ICswMTAwCgogICAgQXRtZWwgTUFDQiBldGhlcm5ldCBkcml2ZXIKCiAgICBEcml2ZXIgZm9yIHRoZSBBdG1lbCBNQUNCIG9uLWNoaXAgZXRoZXJuZXQgY29udHJvbGxlci4KCiAgICBUaGlzIGRyaXZlciBoYXMgYmVlbiB0ZXN0ZWQgb24gdGhlIEFUU1RLMTAwMCBib2FyZCB3aXRoIGEgQVQzMkFQNzAwMAogICAgQ1BVLiBJdCBzaG91bGQgcHJvYmFibHkgd29yayBvbiBBVDkxU0FNOTI2eCBhcyB3ZWxsIHdpdGggc29tZSBtaW5vcgogICAgbW9kaWZpY2F0aW9ucy4KCiAgICBIYXJkd2FyZSBkb2N1bWVudGF0aW9uIGNhbiBiZSBmb3VuZCBpbiB0aGUgQVQzMkFQNzAwMCBkYXRhIHNoZWV0LAogICAgd2hpY2ggY2FuIGJlIGRvd25sb2FkZWQgZnJvbQoKICAgIGh0dHA6Ly93d3cuYXRtZWwuY29tL2R5bi9wcm9kdWN0cy9kYXRhc2hlZXRzLmFzcD9mYW1pbHlfaWQ9NjgyCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgYjRlYzljMmQ0M2Q4OTQ3MjliYjYzM2JmZGJkZmE5NWE5NjJjMTU1NgpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglTdW4gRGVjIDE3IDE2OjU2OjE0IDIwMDYgKzAxMDAKCiAgICBBVlIzMjogQWRkIGNsayBhbmQgZ3BpbyBpbmZyYXN0cnVjdHVyZSBmb3IgbWFjYjAgYW5kIG1hY2IxCgogICAgSW1wbGVtZW50IGZ1bmN0aW9ucyBmb3IgY29uZmlndXJpbmcgdGhlIG1hY2IwIGFuZCBtYWNiMSBwaW5zLCBhcwogICAgd2VsbCBhcyBmdW5jdGlvbnMgZm9yIGdldHRpbmcgdGhlIGNsb2NrIHJhdGUgb2YgdGhlIHZhcmlvdXMKICAgIGJ1c3NlcyB0aGUgbWFjYiBldGhlcm5ldCBjb250cm9sbGVycyBhcmUgY29ubmVjdGVkIHRvLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGQ1YWNiOTViMTZhMGE3NGM2NDM1MjQzNDJjMzQzN2U3NjU0MjZkMDUKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJU3VuIERlYyAxNyAxNTozOToxNSAyMDA2ICswMTAwCgogICAgQVZSMzI6IEltcGxlbWVudCBzaW1wbGUgRE1BIG1lbW9yeSBhbGxvY2F0b3IKCiAgICBJbXBsZW1lbnQgZG1hX2FsbG9jX2NvaGVyZW50KCkgd2hpY2ggcmV0dXJucyBjYWNoZS1hbGlnbmVkCiAgICB1bmNhY2hlYWJsZSBtZW1vcnkuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgOTE5NzViMGZlYTc3M2M5ZTY4MWZlYThjZjMzNDk2NjlmMjc2ODVlZQpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglTdW4gRGVjIDE3IDE1OjQ2OjAyIDIwMDYgKzAxMDAKCiAgICBJbXBvcnQgPGxpbnV4L21paS5oPiBmcm9tIHRoZSBMaW51eCBrZXJuZWwKCiAgICBJbnN0ZWFkIG9mIGNyZWF0aW5nIHlldCBhbm90aGVyIHNldCBvZiBNSUkgcmVnaXN0ZXIgZGVmaW5pdGlvbnMKICAgIGluIHRoZSBtYWNiIGRyaXZlciwgaGVyZSdzIGEgY29tcGxldGUgc2V0IG9mIGRlZmluaXRpb25zIGZvciBldmVyeW9uZQogICAgdG8gdXNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDFiODA0YjIyOTU1NmE0ZDg2MmRhOTNjMGVjOTRlNzk0MTkzNjRiMmMKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJV2VkIE1hciAyMSAxOTo0NzozNiAyMDA3ICswMTAwCgogICAgQVZSMzI6IEluY2x1ZGUgbW9yZSBjb21tYW5kcyBmb3IgQVRTVEsxMDAwCgogICAgSW5jbHVkZSB0aGUgaW1pLCBpbWxzIGFuZCBqZmZzIGNvbW1hbmRzIHNldHMgYnkgZGVmYXVsdCBvbiBBVFNUSzEwMDAuCiAgICBBbHNvIGRlZmluZSBDT05GSUdfQk9PVEFSR1MgdG8gc29tZXRoaW5nIG1vcmUgdXNlZnVsLCBkZWZpbmUKICAgIENPTkZJR19CT09UQ09NTUFORCBhbmQgZW5hYmxlIGF1dG9ib290IGJ5IGRlZmF1bHQuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgOWMwZGViNWFlM2VhMDE4OWYyZTA4YWMyOWVmMTMxNmYxZmI4NTQ4ZApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglXZWQgTWFyIDIxIDE5OjQ0OjQ4IDIwMDcgKzAxMDAKCiAgICBBVlIzMjogUHJvdmlkZSBhIGRlZmluaXRpb24gb2Ygc3RydWN0IHN0YXQKCiAgICBDb3B5IHRoZSBkZWZpbml0aW9uIG9mIHN0cnVjdCBzdGF0IGZyb20gdGhlIExpbnV4IGtlcm5lbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCAxMmYwOTljMDgxNjdhN2E1MWFlZWU2MjNiYzE2ZGFmZDA4NDEyNzFjCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVN1biBEZWMgMTcgMTQ6NDY6MDYgMjAwNiArMDEwMAoKICAgIEFWUjMyOiBVc2UgaW5pdGRyYW0oKSBpbnN0ZWFkIG9mIGJvYXJkX2luaXRfbWVtb3JpZXMoKQoKICAgIENvbmZvcm0gdG8gdGhlICJzdGFuZGFyZCIgaW50ZXJmYWNlIGFuZCB1c2UgaW5pdGRyYW0oKSBpbnN0ZWFkIG9mCiAgICBib2FyZF9pbml0X21lbW9yaWVzKCkgb24gQVZSMzIuIFRoaXMgZW5hYmxlcyB1cyB0byBnZXQgcmlkIG9mIHRoZQogICAgc2RyYW1fc2l6ZSBtZW1iZXIgb2YgdGhlIGdsb2JhbF9kYXRhIHN0cnVjdCBhcyB3ZWxsLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDFmNGYyMTIxYzI2ODUxODJlYjg3ZmE5YTliNzk5ZDE5MTczODdhMWMKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJTW9uIE5vdiAyMCAxNTo1MzoxMCAyMDA2ICswMTAwCgogICAgQVZSMzI6IFJlbG9jYXRlIHUtYm9vdCB0byBTRFJBTQoKICAgIFJlbG9jYXRlIHRoZSB1LWJvb3QgaW1hZ2UgaW50byBTRFJBTSBsaWtlIGV2ZXJ5b25lIGVsc2UgZG9lcy4gVGhpcwogICAgbWVhbnMgdGhhdCB3ZSBjYW4gaGFuZGxlIG11Y2ggbGFyZ2VyIC5kYXRhIGFuZCAuYnNzIHRoYW4gd2UgdXNlZCB0by4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBkZjU0OGQzYzNlMmJiYzQwMjU4NzEzMTY3ODU5ZmZjMmNlOTlhOTAwCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVN1biBOb3YgMTkgMTg6MDY6NTMgMjAwNiArMDEwMAoKICAgIEFWUjMyOiBSZXNvdXJjZSBtYW5hZ2VtZW50IHJld3JpdGUKCiAgICBSZXdyaXRlIHRoZSByZXNvdXJjZSBtYW5hZ2VtZW50IGNvZGUgKGkuZS4gSS9PIG1lbW9yeSwgY2xvY2sgZ2F0aW5nLAogICAgZ3Bpbykgc28gaXQgZG9lc24ndCBkZXBlbmQgb24gYW55IGdsb2JhbCBzdGF0ZS4gVGhpcyBpcyBuZWNlc3NhcnkKICAgIGJlY2F1c2UgdGhpcyBjb2RlIGlzIGhlYXZpbHkgdXNlZCBiZWZvcmUgcmVsb2NhdGlvbiB0byBSQU0sIHNvIHdlCiAgICBjYW4ndCB3cml0ZSB0byBhbnkgZ2xvYmFsIHZhcmlhYmxlcy4KCiAgICBBcyBhbiBhZGRlZCBib251cywgdGhpcyBtYWtlcyB1LWJvb3QncyBtZW1vcnkgZm9vdHByaW50IGEgYml0IHNtYWxsZXIsCiAgICBhbHRob3VnaCBzb21lIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gbGVmdCBvdXQ7IGFsbCBjbG9ja3MgYXJlIGVuYWJsZWQKICAgIGFsbCB0aGUgdGltZSwgYW5kIHRoZXJlJ3Mgbm8gY2hlY2tpbmcgZm9yIGdwaW8gbGluZSBjb25mbGljdHMuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgMDNkMWUxMzY1Nzk2Y2QxNWQxNzI2ZThhNTFmZDhiNWJlNTBiMmZlOQpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglTYXQgTm92IDE4IDE4OjAxOjEzIDIwMDYgKzAxMDAKCiAgICBBVlIzMjogQ2xlYW4gdXAgbWVtb3J5LW1hcC5oIGZvciBhdDMyYXA3MDAwCgogICAgQ29udmVydCBzcGFjZXMgdG8gdGFicyAobXVzdCBoYXZlIG1pc3NlZCB0aGlzIG9uZSBsYXN0IHRpbWUgYXJvdW5kKSwKICAgIHNvcnQgdGhlIGVudHJpZXMgYnkgYWRkcmVzcyBhbmQgZ3JvdXAgdGhlbSB0b2dldGhlciBieSBidXMKICAgIGNvbm5lY3Rpdml0eS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCAyOGM2OTllZjY5ZjRiNmNkZjI1MmU0NzQ3YjdiNTkwMDI4YTg4OTgxCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVNhdCBOb3YgMTggMTc6MzI6MzEgMjAwNiArMDEwMAoKICAgIEFWUjMyOiBCdWlsZCBwb3NpdGlvbi1pbmRlcGVuZGVudCB1LWJvb3QKCiAgICBBZGQgLWZQSUMgLW1uby1pbml0LWdvdCB0byB0aGUgYXZyMzItc3BlY2lmaWMgQ0ZMQUdTIHRvIG1ha2UgdS1ib290CiAgICBwb3NpdGlvbiBpbmRlcGVuZGVudC4gVGhpcyB3aWxsIG1ha2UgcmVsb2NhdGlvbiBhIGxvdCBlYXNpZXIuCgogICAgLW1uby1pbml0LWdvdCBtZWFucyB0aGF0IGdjYyBzaG91bGRuJ3QgZW1pdCBjb2RlIHRvIGxvYWQgdGhlIEdPVAogICAgYWRkcmVzcyBpbnRvIHI2IGluIGV2ZXJ5IGZ1bmN0aW9uIHByb2xvZ3VlLiBXZSBkbyBpdCBvbmNlIGFuZCBmb3IKICAgIGFsbCBpbiB0aGUgZWFybHkgc3RhcnR1cCBhc3NlbWJseSBjb2RlLCBzbyBlbmFibGluZyB0aGlzIG9wdGlvbgogICAgbWFrZXMgdS1ib290IGEgYml0IGZhc3RlciBhbmQgc21hbGxlci4KCiAgICBUaGUgYXNzZW1ibHkgcGFydHMgaGF2ZSBhbHdheXMgYmVlbiBwb3NpdGlvbi1pbmRlcGVuZGVudCwgc28gbm8gY29kZQogICAgY2hhbmdlcyBzaG91bGQgYmUgbmVjZXNzYXJ5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDUzNzRiMzZkZTkxZDAwNmQxZGY5NTM2MjU5ZmE5ZjY2YjAxYWEzYWEKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJU2F0IE5vdiAxOCAxNzoyNDozMSAyMDA2ICswMTAwCgogICAgQVZSMzI6IFVzZSBhdnIzMi1saW51eC0gY3Jvc3MtY29tcGlsYXRpb24gcHJlZml4IGJ5IGRlZmF1bHQKCiAgICBJdCBkb2Vzbid0IHJlYWxseSBtYXR0ZXIgd2hpY2ggdG9vbGNoYWluIHlvdSB1c2UgdG8gY29tcGlsZSB1LWJvb3QsCiAgICBidXQgdGhlIGF2cjMyLWxpbnV4IG9uZSBpcyBwcm9iYWJseSB3aGF0IG1vc3QgcGVvcGxlIGhhdmUgaW5zdGFsbGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGM4NDFiZWVkZGViZWNlMDAzOWU3MjRmYjI3ZjRkMWEzOWVlMWM2YjYKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJU2F0IE5vdiAxOCAxNzoxNTozMCAyMDA2ICswMTAwCgogICAgQVZSMzI6IFNwbGl0IHN0YXJ0X3VfYm9vdCBpbnRvIGJvYXJkX2luaXRfZiBhbmQgYm9hcmRfaW5pdF9yCgogICAgU3BsaXQgdGhlIGF2cjMyIGluaXRpYWxpemF0aW9uIGNvZGUgaW50byBhIGZ1bmN0aW9uIHRvIHJ1biBiZWZvcmUKICAgIHJlbG9jYXRpb24sIGJvYXJkX2luaXRfZiBhbmQgYSBmdW5jdGlvbiB0byBydW4gYWZ0ZXIgcmVsb2NhdGlvbiwKICAgIGJvYXJkX2luaXRfci4gRm9yIG5vdywgYm9hcmRfaW5pdF9mIHNpbXBseSBjYWxscyBib2FyZF9pbml0X3IKICAgIGF0IHRoZSBlbmQuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgMzc0MDMwMDVjZmU2YmIxMzk2NGQ0NTBmNmE0OGEwYjBmMmY3MDE3ZQpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0Bwb2xsdXguZGVueC5kZT4KRGF0ZToJU2F0IEFwciAxNCAwNToyNjo0OCAyMDA3ICswMjAwCgogICAgW0ZpeF0JU2V0IHRoZSBMRUQgc3RhdHVzIHJlZ2lzdGVyIG9uIHRoZSBVQzEwMSBmb3IgdGhlIExYVDk3MSBQSFkuCgkgICAgY2xlYXIgdGhlIERpc3BsYXkgYWZ0ZXIgcmVzZXQuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgNzg4Mjc1MWM3OGI3ZWNhYmZkNDliMGVmZjhkZTI3NjYxYzcxZjE2YwpBdXRob3I6IERlbmlzIFBldGVyIDxkLnBldGVyQG1wbC5jaD4KRGF0ZToJRnJpIEFwciAxMyAwOToxMzozMyAyMDA3ICswMjAwCgogICAgW1BBVENIXSBGaXggYnVncyBpbiBjbWRfaWRlLmMgYW5kIGNtZF9zY3NpLmMKCiAgICBGaXggYnVnIGludHJvZHVjZWQgYnkgIkZpeCBnZXRfcGFydGl0aW9uX2luZm8oKSBwYXJhbWV0ZXIgZXJyb3IgaW4gYWxsCiAgICBvdGhlciBjYWxscyIgZnJvbSAyMDA1LTAzLTA0IGluIGNtZF9pZGUuYyBhbmQgY21kX3Njc2kuYywgd2hpY2ggcHJldmVudGVkCiAgICB0byB1c2UgZGlza2Jvb3Qgb3Igc2NzaWJvb3QgZm9ybSBhbm90aGVyIGRldmljZSB0aGFuIDAuCgogICAgU2lnbmVkLW9mZi1ieTogRGVuaXMgUGV0ZXIgPGQucGV0ZXJAbXBsLmNoPgoKY29tbWl0IDBiOTQ1MDRkMjJlNzBmNTM3YzE3YTBkMzhjODdlZGI2ZTM3MDk3N2QKQXV0aG9yOiBHcmVnIExvcHAgPGxvcHBAcG9ib3guY29tPgpEYXRlOglGcmkgQXByIDEzIDA4OjAyOjI0IDIwMDcgKzAyMDAKCiAgICBbUEFUQ0hdIEZpeCB1c2Ugb2YgInZvaWQgKiIgZm9yIGJsb2NrIGRldiByZWFkL3dyaXRlIGJ1ZmZlciBwb2ludGVycwoKICAgIFNpZ25lZC1vZi1ieTogR3JlZyBMb3BwIDxsb3BwQHBvYm94LmNvbT4KICAgIEFja2VkLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgNmZiZjI2MWY4ZGYyOTRlNTg5Y2ZhZGViZWJlNTQ2OGUzYzBmMjllOQpBdXRob3I6IFhpZSBYaWFvYm8gPHI2MzA2MUBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgTWFyIDkgMTk6MDg6MjUgMjAwNyArMDgwMAoKICAgIEZpeCB0d28gYnVncyBmb3IgTVBDODN4eCBERFIyIGNvbnRyb2xsZXIgU1BEIEluaXQKCiAgICBUaGVyZSBhcmUgYSBmZXcgYnVncyBpbiB0aGUgY3B1L21wYzgzeHgvc3BkX3NkcmFtLmMKICAgIHRoZSBmaXJzdCBidWcgaXMgdGhhdCB0aGUgcGljb3NfdG9fY2xrIHJvdXRpbmUgaW50cm9kdWNlcyBhIGh1Z2UKICAgIHJvdW5kaW5nIGVycm9yIGluIDgzeHguCiAgICB0aGUgc2Vjb25kIGJ1ZyBpcyB0aGF0IHRoZSBtb2RlIHJlZ2lzdGVyIHdyaXRlIHJlY292ZXJ5IGZpZWxkIGlzCiAgICB0V1ItMSwgbm90IHRXUiA+PiAxLgoKY29tbWl0IDJhZDNhYmEwMWQzN2I3MmU3Yzk1N2IwN2UxMDJmY2NkNjRmZTZkMTMKQXV0aG9yOiBKZWZmcmV5IE1hbm4gPG1hbm5qQGVtYmVkZGVkcGxhbmV0LmNvbT4KRGF0ZToJVGh1IEFwciAxMiAxNDoxNTo1OSAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBGaXggaTJjIGRpdmlzb3IgY2FsY3VsYXJpb24gZm9yIFBQQzR4eAoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgY2hhbmdlcyB0aGUgaTJjX2luaXQoLi4uKSBmdW5jdGlvbiB0byB1c2UgdGhlIGZ1bmN0aW9uCiAgICBnZXRfT1BCX2ZyZXEoKSByYXRoZXIgdGhhbiBjYWxjdWxhdGluZyB0aGUgT1BCIHNwZWVkIGJ5CiAgICBzeXNJbmZvLmZyZXFQTEIvc3lzSW5mby5wbGxPcGJEaXYuIFRoZSBnZXRfT1BCX2ZyZXEoKSBmdW5jdGlvbiBpcwogICAgc3BlY2lmaWMgcGVyIHByb2Nlc3Nvci4gVGhlIHByaW9yIG1ldGhvZCB3YXMgbm90IGFuZCBzbyB3YXMgY2FsY3VsYXRpbmcKICAgIHRoZSB3cm9uZyBzcGVlZCBmb3Igc29tZSBQUEM0eHggcHJvY2Vzc29ycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWZmcmV5IE1hbm4gPG1hbm5qQGVtYmVkZGVkcGxhbmV0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2YzliYTkxOTM3NWRiOTc3YWFhZDkxNDZiZjMyMGM3YWZkMDdhZTdhCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEFwciAxMSAxNzoyNTowMSAyMDA3ICswMjAwCgogICAgVXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNTEwNTZkZDk4NjNlNmExYmMzNjNhZmJiZTE3NzVjNThjZDk2NzQxOApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBBcHIgMTEgMTc6MjI6NTUgMjAwNyArMDIwMAoKICAgIFVwZGF0ZSBmb3IgU0MzIGJvYXJkCgogICAgKiBNYWtlIElERSB0aW1lb3V0IGNvbmZpZ3VyYWJsZSB0aHJvdWdoIGlkZV9yZXNldF90aW1lb3V0IHZhcmlhYmxlLgogICAgKiBVc2UgTmV3bGluZSBhcyAicGFzc3dvcmQiIHN0cmluZwogICAgKiBVc2UganVzdCBhIHNpbmdsZSBwYXJ0aXRpb24gaW4gTkFORCBmbGFzaAoKY29tbWl0IDNkOThiODU4MDBjODBkYzY4MjI3YzhmMTBiZjVjOTM0NTZkNmQwNTQKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPGhhaXlpbmcud2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSmFuIDIyIDEyOjM3OjMwIDIwMDcgLTA2MDAKCiAgICBBZGQgUElYSVMgRlBHQSBzdXBwb3J0IGZvciBNUEM4NjQxSFBDTiBib2FyZC4KCiAgICBNb3ZlIHRoZSA4NjQxSFBDTidzIFBJWElTIGNvZGUgdG8gdGhlIG5ldyBkaXJlY3RvcnkKICAgIGJvYXJkL2ZyZWVzY2FsZS9jb21tb24vIGFzIGl0IHdpbGwgYmUgc2hhcmVkIGJ5CiAgICBmdXR1cmUgYm9hcmRzIG5vdCBpbiB0aGUgc2FtZSBwcm9jZXNzb3IgZmFtaWx5LgoKICAgIFdyaXRlIGEgInBpeGlzX3Jlc2V0IiBjb21tYW5kIHRoYXQgdXRpbGl6ZXMgdGhlIEZQR0EKICAgIHJlc2V0IHNlcXVlbmNlciB0byBzdXBwb3J0IGFsdGVybmF0ZSBzb2Z0LXJlc2V0IG9wdGlvbnMKICAgIHN1Y2ggYXMgdXNpbmcgdGhlICJhbHRlcm5hdGUiIGZsYXNoIGJhbmssIGVuYWJsaW5nCiAgICB0aGUgd2F0Y2ggZG9nLCBvciBjaG9vc2luZyBkaWZmZXJlbnQgQ1BVIGZyZXF1ZW5jaWVzLgoKICAgIEFkZCBkb2N1bWVudGF0aW9uIGZvciB0aGUgcGl4aXNfcmVzZXQgdG8gUkVBRE1FLm1wYzg2NDFocGNuLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8aGFpeWluZy53YW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDY0ZGJiZDQwYzU4MzQ5YjY0ZjQzZmQzM2RiYjVjYTBhZGI2N2Q2NDIKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglGcmkgQXByIDYgMTQ6MTk6NDMgMjAwNyAtMDQwMAoKICAgIE1vdmVkIGZkdCBjb21tYW5kIHN1cHBvcnQgY29kZSB0byBmZHRfc3VwcG9ydC5jCgogICAgLi4uaW4gcHJlcGFyYXRpb24gZm9yIGltcHJvdmluZyB0aGUgYm9vdG0gY29tbWFuZCdzIGhhbmRsaW5nIG9mIGZkdCBibG9icy4KICAgIEFsc28gY2xlYW5lZCB1cCBzb21lIGNvZGluZyBzbG9wcGluZXNzLgoKY29tbWl0IDY2NzlmOTI5OTUzNGU0ODhhMTcxYTliYjhmOWJiODkxZGUyNDdhYWIKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglGcmkgQXByIDYgMTQ6MTc6MTQgMjAwNyAtMDQwMAoKICAgIGxpYmZkdDogTWFrZSBmZHRfY2hlY2tfaGVhZGVyKCkgcHVibGljCgogICAgQ2hhbmdlZCBfZmR0X2NoZWNrX2hlYWRlcigpIHRvIGZkdF9jaGVja19oZWFkZXIoKSBhbmQgbWFkZSBpdCBwYXJ0IG9mCiAgICB0aGUgaW50ZXJmYWNlIC0gaXQgaXMgYSB1c2VmdWwgcm91dGluZS4KCiAgICBBbHNvIGRpZCBzb21lIGFzdGhldGljcyBjbGVhbnVwIHRvIHRoZSBpbmNsdWRlIGZpbGVzIChoZWFkZXJzKS4KCmNvbW1pdCBjMDcwN2NlNjU2Nzc2NTBiNWNlYWIwNTAwZWU1MGFlNTE2OGFmZWYyCkF1dGhvcjogQXVicmV5IExpIDxhdWJyZXkuYWRpQGdtYWlsLmNvbT4KRGF0ZToJVGh1IEFwciA1IDE4OjM0OjA2IDIwMDcgKzA4MDAKCiAgICBbQmxhY2tmaW5dW1BBVENIXSBLaWxsIG9mZiBhIGJ1bmNoIG9mIGNvbW1vbiBsb2NhbCBwcm90b3R5cGVzCgpjb21taXQgN2I3ZTMwYWE2NGJiNjY1N2ExYmZkMzJmZGJkYmZlYjU2MWU2YTQ4ZApBdXRob3I6IEF1YnJleSBMaSA8YXVicmV5LmFkaUBnbWFpbC5jb20+CkRhdGU6CVRodSBBcHIgNSAxODozMzowNCAyMDA3ICswODAwCgogICAgW0JsYWNrZmluXVtQQVRDSF0gRml4IGR5bmFtaWMgQ1BMQiBnZW5lcmF0aW9uIGlzc3VlCgpjb21taXQgMDQ0NWUzYTI2NDI1MWQ3NWIxYmU0NWVmNzEzYzcwNzI2YTI5NTJmMApBdXRob3I6IEF1YnJleSBMaSA8YXVicmV5LmFkaUBnbWFpbC5jb20+CkRhdGU6CVRodSBBcHIgNSAxODozMTo0NyAyMDA3ICswODAwCgogICAgW0JsYWNrZmluXVtQQVRDSF0gbWluaW9yIGNsZWFudXAKCmNvbW1pdCAxNTVmZDc2NjU3Mzk4MTA5MGU2MzhiNDkzZDU4NTc1NjIxNTE4NjJlCkF1dGhvcjogQXVicmV5IExpIDxhdWJyZXkuYWRpQGdtYWlsLmNvbT4KRGF0ZToJVGh1IEFwciA1IDE4OjMxOjE4IDIwMDcgKzA4MDAKCiAgICBbQmxhY2tmaW5dW1BBVENIXSBGaXggY29weXJpZ2h0IGFuZCB1cGRhdGUgbGljZW5zZQoKY29tbWl0IDlmZDQzN2JiZDc1ZDI4MmY4OTllMWRhNTBiZTIwYTJiZjM4NDUwYmMKQXV0aG9yOiBBdWJyZXkgTGkgPGF1YnJleS5hZGlAZ21haWwuY29tPgpEYXRlOglUaHUgQXByIDUgMTg6MzA6MjUgMjAwNyArMDgwMAoKICAgIFtCbGFja2Zpbl1bUEFUQ0hdIEFkZCBCRjUzNyBFTUFDIGRyaXZlciBpbml0aWFsaXphdGlvbgoKY29tbWl0IDg4OTI1NmU4NjA0ZTBjNjhkYjFkODY2ZDcyMDg5NGRmZmVkZTlkZjYKQXV0aG9yOiBBdWJyZXkgTGkgPGF1YnJleS5hZGlAZ21haWwuY29tPgpEYXRlOglUaHUgQXByIDUgMTg6Mjk6NTUgMjAwNyArMDgwMAoKICAgIFtCbGFja2Zpbl1bUEFUQ0hdIGNhbGwgcmVhbCB0aGUgc3lzdGVtIHN5bmNocm9uaXplIGluc3RydWN0aW9uCgpjb21taXQgZTBkZjFjOTIxYjc4ODI4OTU2NGU0YzFlZTcxMjBhNmE5Y2QzYWIwNQpBdXRob3I6IEF1YnJleSBMaSA8YXVicmV5LmFkaUBnbWFpbC5jb20+CkRhdGU6CVRodSBBcHIgNSAxODoyOToxNyAyMDA3ICswODAwCgogICAgW0JsYWNrZmluXVtQQVRDSF0gcmVtb3ZlIGFzbS9wYWdlLmggYXMgd2UgZG8gbm90IGFjdHVhbGx5IHVzZS93YW50IGFueSBvZiB0aGVzZSBkZWZpbml0aW9ucyBub3IgZG9lcyBhbnkgb3RoZXIgYXJjaCBpbmNsdWRlIGl0Cgpjb21taXQgZGZlZWFiMmNkNjgwZGYwNDdlNjhlNzIzYjI0NmFkZjZmMzNiYjU1NgpBdXRob3I6IEF1YnJleSBMaSA8YXVicmV5LmFkaUBnbWFpbC5jb20+CkRhdGU6CVRodSBBcHIgNSAxODoyODozNCAyMDA3ICswODAwCgogICAgW0JsYWNrZmluXVtQQVRDSF06IGZpeCBmbGFzaCB1bmFsaWduZWQgY29weSBpc3N1ZQoKY29tbWl0IDQ0M2ZlYjc0MDU4NGU0MDZlZmEyMDNhZjkwOWZlMjkyNjYwOGU4ZDUKQXV0aG9yOiBJZ29yIE1hcm5hdCA8bWFybnlAcmFtYmxlci5ydT4KRGF0ZToJV2VkIE1hciAyMSAwOTo1NTowMSAyMDA3ICswMzAwCgogICAgVXBkYXRlIHVzYWdlIG9mICduYycgaW4gUkVBRE1FLk5ldENvbnNvbGUKCiAgICBBZGRlZCBpbmZvcm1hdGlvbiBhYm91dCB1c2FnZSBvZiBOZXRDb25zb2xlIG9uIHN5c3RlbXMgd2hlcmUgdGhlIC1sIGFuZCAtcAogICAgc3dpdGNoZXMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBJZ29yIE1hcm5hdCA8bWFybnlAcmFtYmxlci5ydT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJ3YXJyZW5AcXN0cmVhbXMuY29tPgoKY29tbWl0IDMxYzk4YTg4MjI4MDIxYjMxNGM4OWViYjgxMDRmYjY0NzNkYTQ0NzEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgQXByIDQgMDI6MDk6MzAgMjAwNyArMDIwMAoKICAgIE1pbm9yIGNvZGluZyBzdHlsZSBjbGVhbnVwLgoKY29tbWl0IDk0YWJkN2MwNTgzZWJlMDFlNzk5YjI1ZjQ1MTIwMWRlZWFhYjU1MGQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgQXByIDQgMDE6NDk6MTUgMjAwNyArMDIwMAoKICAgIE1pbm9yIGNsZWFudXAuCgpjb21taXQgODIyYWYzNTFhZDJiYWJjN2Q5OTAzMzM2MWE1ZmNhY2QzMGY2YmM3OApBdXRob3I6IFJvZG9sZm8gR2lvbWV0dGkgPGdpb21ldHRpQGVubmVlbm5lLmNvbT4KRGF0ZToJVHVlIEFwciAzIDE0OjI3OjE4IDIwMDcgKzAyMDAKCiAgICBTdXBwb3J0IGZvciB0aGUgUGhpbGlwcyBJU1AxMTZ4IEhDRCAoSG9zdCBDb250cm9sbGVyIERyaXZlcikKCiAgICBTaWduZWQtb2ZmLWJ5OiBSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBlbm5lZW5uZS5jb20+Cgpjb21taXQgZWRmNTg1MWJlNmMxN2MwMzFkNGY3MWRkNWIwYTEyMDQwYjdjNTBjOApBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CVR1ZSBBcHIgMyAxNDoyNzowOCAyMDA3ICswMjAwCgogICAgVVNCOiBjbGVhbnVwIG1vbmFoYW5zIHVzYiBzdXBwb3J0LiBSZW1vdmUgZGVhZCBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgYTY1YzU3NjhlNTUzNzUzMGJkMTc4MGFmM2QzZmRkYzMxMTNhMTYzYwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIEFwciAyIDEwOjA5OjMwIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IENoYW5nZSBTeXNBQ0UgYWRkcmVzcyBvbiBLYXRtYWkKCiAgICBXaXRoIHRoaXMgbmV3IGJhc2UgYWRkcmVzcyBvZiB0aGUgWGlsaW54IFN5c3RlbUFDRSBjb250cm9sbGVyCiAgICB0aGUgTGludXggZHJpdmVyIHdpbGwgYmUgZWFzaWVyIHRvIGFkYXB0LCBzaW5jZSBpdCBjYW4gbm93IGJlCiAgICBtYXBwZWQgdmlhIHRoZSAibm9ybWFsIiBpb3JlbWFwKCkgY2FsbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYWVhMDNjNGU4YzNhMjFjZTQzZDNmYWY0OGE2ZTZkNDc0YzhiZGY3MwpBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CVNhdCBNYXIgMzEgMTQ6MzA6NTMgMjAwNyAtMDQwMAoKICAgIEZpeCBzb21lIG1pbm9yIHdoaXRlc3BhY2UgdmlvbGF0aW9ucy4KCmNvbW1pdCAyMTNiZjhjODIyZGU4ZWVjYWY2OTg2MDY4NDQ2OWNkYWJhMmU5ZTZhCkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJU2F0IE1hciAzMSAxMjoyMzo1MSAyMDA3IC0wNDAwCgogICAgQWRkIGEgZmxhdHRlbmVkIGRldmljZSB0cmVlIChmZHQpIGNvbW1hbmQgKDIgb2YgMikKCiAgICBNb2RpZmljYXRpb25zIHRvIHRoZSBleGlzdGluZyBjb2RlIHRvIHN1cHBvcnQgdGhlIG5ldyBmZHQgY29tbWFuZC4KCmNvbW1pdCA3ODFlMDllZTZlM2UzZTM5MmFiMzYyYzFmMGVmMTA2OGFkYzc2ZTNlCkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJU2F0IE1hciAzMSAxMjoyMjoxMCAyMDA3IC0wNDAwCgogICAgQWRkIGEgZmxhdHRlbmVkIGRldmljZSB0cmVlIChmZHQpIGNvbW1hbmQgKDEgb2YgMikKCiAgICBUaGUgZmR0IGNvbW1hbmQgdXNlcyBEYXZpZCBHaWJzb24ncyBsaWJmZHQgbGlicmFyeSB0byBtYW5pcHVsYXRlIGFzIHdlbGwKICAgIGFzIHByaW50IHRoZSBmbGF0dGVuZWQgZGV2aWNlIHRyZWUuICBUaGlzIHBhdGNoIGlzIHRoZSBuZXcgY29tbWFuZCwKICAgIHRoZSBzZWNvbmQgcGFydCBpcyB0aGUgbW9kaWZpY2F0aW9ucyB0byB0aGUgZXhpc3RpbmcgY29kZS4KCmNvbW1pdCAzYWYwZDU4N2Q5M2UwYmU1Zjk2ZTFiMzBmYTQxZTY2MmY4YjA4MDNlCkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJU2F0IE1hciAzMSAxMjoxMzo0MyAyMDA3IC0wNDAwCgogICAgbGliZmR0OiBFbmhhbmNlZCBhbmQgcHVibGlzaGVkIGZkdF9uZXh0X3RhZygpCgogICAgRW5oYW5jZWQgdGhlIGZvcm1lcmx5IHByaXZhdGUgZnVuY3Rpb24gX2ZkdF9uZXh0X3RhZygpIHRvIGFsbG93IHN0ZXBwaW5nCiAgICAgIHRocm91Z2ggdGhlIHRyZWUsIHVzZWQgdG8gcHJvZHVjZSBhIGh1bWFuLXJlYWRhYmxlIGR1bXAsIGFuZCBtYWRlCiAgICAgIGl0IHBhcnQgb2YgdGhlIHB1Ymxpc2hlZCBpbnRlcmZhY2UuCiAgICBBbHNvIGFkZGVkIHNvbWUgY29tbWVudHMuCgpjb21taXQgZmEzYTc0Y2VjNzNkZmQwNmE1YWUzNWE5YTMzNjgyMDAyNzNhYWE3MQpBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CVNhdCBNYXIgMzEgMTI6MDU6MzkgMjAwNyAtMDQwMAoKICAgIGxpYmZkdDogQ3VzdG9taXphdGlvbnMgZm9yIHVzZSBieSB1LWJvb3QuCgogICAgQ2hhbmdlcyB0byBEYXZpZCBHaWJzb24ncyBvcmlnaW5hbCBzb3VyY2UgdG8gZml0IGludG8gdS1ib290J3MKICAgIGVudmlyb25tZW50LiAgTm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2VzLgoKY29tbWl0IDM1NzQ4MTc3YzY0YTRhODNhMDAwNTdlOTNiYjMzZTQwMjc4YTJhOTYKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglTYXQgTWFyIDMxIDEyOjAwOjU2IDIwMDcgLTA0MDAKCiAgICBsaWJmZHQ6IEltcG9ydCBsaWJmZHQgc291cmNlICgyIG9mIDIpCgogICAgVGhpcyBhZGRzIHRoZSBhcHBsaWNhYmxlIGxpYmZkdCBzb3VyY2UgZmlsZXMgKHVubW9kaWZpZWQpIGFuZCBhIFJFQURNRQogICAgdG8gZXhwbGFpbiB3aGVyZSB0aGUgc291cmNlIGNhbWUgZnJvbS4KCmNvbW1pdCA3Y2Q1ZGEwZmU4NzdlNzE3MWE0Y2RkNDQ4ODBiY2U3ODMxMzI4NzFhCkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJU2F0IE1hciAzMSAxMTo1OTo1OSAyMDA3IC0wNDAwCgogICAgbGliZmR0OiBJbXBvcnQgbGliZmR0IHNvdXJjZSAoMSBvZiAyKQoKICAgIFRoaXMgYWRkcyB0aGUgYXBwbGljYWJsZSBsaWJmZHQgc291cmNlIGZpbGVzICh1bm1vZGlmaWVkKSBhbmQgYSBSRUFETUUKICAgIHRvIGV4cGxhaW4gd2hlcmUgdGhlIHNvdXJjZSBjYW1lIGZyb20uCgpjb21taXQgZGE2ZWJjMWJjMDgyY2JlM2I2YmJkZTA3OWNhZmUwOWY3ZWJiYWQ0YgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IE1hciAzMSAxMzoxNjoyMyAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgS2F0bWFpIGJvb3RzdHJhcCBjb21tYW5kCgogICAgTm93IHRoZSBERFIyIGZyZXF1ZW5jeSBpcyBhbHNvIDIqUExCIGZyZXF1ZW5jeSB3aGVuIDE2Nk1IeiBQTEIKICAgIGlzIHNlbGVjdGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjYWJlZTc1NmE2NTMyOTg2NzI5NDc3YzNjYzFlYTE2ZWY4NTE3YWQyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgTWFyIDMxIDEzOjE1OjA2IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSA0NHhfc3BkX2RkcjIgY29kZSAoNDQwU1AvNDQwU1BlKQoKICAgIEFkZGl0aW9uYWwgUkFNIGluZm9ybWF0aW9uIGlzIG5vdyBwcmludGVkIHVwb24gcG93ZXJ1cCwgbGlrZQogICAgRERSMiBmcmVxdWVuY3kgYW5kIENBUyBsYXRlbmN5LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2MDcyMzgwMzQzMWFjNzVjYWQwODU2OTA3ODllNDMzZDVhYjkxNzRlCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgTWFyIDMxIDA4OjQ4OjM2IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IENoYW5nZSBZdWNjYSBjb25maWcgZmlsZSB0byBzdXBwb3J0IEVDQwoKICAgIFdpdGggdGhlIHVwZGF0ZWQgNDR4IEREUjIgZHJpdmVyIHRoZSBZdWNjYSBib2FyZCBub3cgc3VwcG9ydHMKICAgIEVDQyBnZW5lcmF0aW9uIGFuZCBjaGVja2luZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNDkwZTU3MzBjNjc0YjIwZDcwOGI3ODNhMmM1ZmZkNzIwOGY4Mzg3MwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IE1hciAzMSAwODo0NzozNCAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBGaXggImJvb3RzdHJhcCIgY29tbWFuZCBmb3IgS2F0bWFpIGJvYXJkCgogICAgVGhlIGJvYXJkIHNwZWNpZmljICJib290c3RyYXAiIGNvbW1hbmQgaXMgbm93IGZpeGVkIGFuZCBjYW4KICAgIGJlIHVzZWQgZm9yIHRoZSBBTUNDIEthdG1haSBib2FyZCB0byBjb25maWd1cmUgZGlmZmVyZW50CiAgICBDUFUvUExCL09QQiBmcmVxdWVuY2llcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOTRmNTQ3MDNjM2E3NzZlYzIzZTQyN2NhMmExNmUwYTc5YTVkNTBjMQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IE1hciAzMSAwODo0NjowOCAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgNDR4X3NwZF9kZHIyIGNvZGUgKDQ0MFNQLzQ0MFNQZSkKCiAgICBGaXggYSBidWcgaW4gdGhlIGF1dG8gY2FsaWJyYXRpb24gcm91dGluZS4gVGhpcyBkcml2ZXIgbm93IHJ1bnMKICAgIG1vcmUgcmVsaWFibGUgd2l0aCB0aGUgdGVzdGVkIG1vZHVsZXMuIEl0J3MgYWxzbyB0ZXN0ZWQgd2l0aAogICAgMTY3TUh6IFBMQiBmcmVxdWVuY3kgKDY2N01IeiBERFIyIGZyZXF1ZW5jeSkgb24gdGhlIEthdG1haS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMzQyY2QwOTdiZTFlN2FmZmU4MmY0MmFiM2RhMjIwOTU5YTY5OWU2NApBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJRnJpIE1hciAzMCAyMjo1MjowOSAyMDA3ICswMjAwCgogICAgW1BBVENIXSBDbGVhbiBpbmNsdWRlIGRlcGVuZGVuY2UKCmNvbW1pdCA2ZjkzNDIxMGZiMjkzZmRlMmNmYjQyNTFjNmQ5NmZkYzU4YjZhOTA2CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglGcmkgTWFyIDMwIDIyOjQyOjQ1IDIwMDcgKzAyMDAKCiAgICBbQ0xFQU5dIFJlbW92ZSBpbmVmZmljaWVudCBTdXpha3UgY29kZQoKY29tbWl0IDQzMGYxYjBmOWE2NzBjMmYxM2VhYTUyZTY2YTEwZGI5NmRkMzY0N2QKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBNYXIgMjggMTU6MDM6MTYgMjAwNyArMDIwMAoKICAgIE1lcmdlIHNvbWUgQU1DQyBtYWtlIHRhcmdldHMgdG8ga2VlcCB0aGUgdG9wLWxldmVsIE1ha2VmaWxlIHNtYWxsZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMGM3NWM5ZDg0MzA3YTlmMWNiZTFmZjBjNGQ4OTM3ZWUzYTk2NDc1ZQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE1hciAyOCAxNDo1MjoxMiAyMDA3ICswMjAwCgogICAgaTJjOiBFbmFibGUgIm9sZCIgaTJjIGNvbW1hbmRzIGV2ZW4gd2hlbiBDT05GSUdfSTJDX0NNRF9UUkVFIGlzIGRlZmluZWQKCiAgICBUaGUgIm9sZCIgaTJjIGNvbW1hbmRzIChpcHJvYmUsIGltZC4uLikgYXJlIG5vdyBjb21waWxlZCBpbiBhZ2FpbiwKICAgIGV2ZW4gd2hlbiB0aGUgaTJjIGNvbW1hbmQgdHJlZSBpcyBlbmFibGVkIHZpYSB0aGUgQ09ORklHX0kyQ19DTURfVFJFRQogICAgY29uZmlnIG9wdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNWRhMDQ4YWRmNDRiZWE1ZTNiOTQwODBkMDI5MDNjMmUzZmU3YWE0YQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJVHVlIE1hciAyNyAwMDozMjoxNiAyMDA3ICswMjAwCgogICAgUEFUQ0g6IFJlc29sdmUgR1BMIGxpY2Vuc2UgcHJvYmxlbQoKY29tbWl0IGFlMDBiYjRiMjk0NGRjNjRhNDg1ZWQ3MmExOTc1NGIxMWFmN2MyMjMKQXV0aG9yOiBSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBlbm5lZW5uZS5jb20+CkRhdGU6CU1vbiBNYXIgMjYgMTI6MDM6MzYgMjAwNyArMDIwMAoKICAgIFBYQTogcHhhMjd4IFVTQiBPSENJIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBsaW51eC5pdD4KCmNvbW1pdCBhZTc5ZjYwNjc3YzIwODMyNjUzNTY0N2RjYmQ1YzNlYzQwZGJjYjBiCkF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KRGF0ZToJTW9uIE1hciAyNiAxMToyMTowNSAyMDA3ICswMjAwCgogICAgVVNCOiByZW1vdmUgdGhlIFMzQzI0WDBfbWVyZ2UgI2RlZmluZSwgd2hpY2ggd2FzIGludHJvZHVjZWQgd2hpbGUKICAgIG1lcmdpbmcgT0hDSSBkcml2ZXJzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgMTc5ODA0OTUyMmY1OTQwMTNhZWEyOTQ1N2Q0Njc5NDI5OGM2YWUxNQpBdXRob3I6IE1pY2hhbCBTaW1layA8cm9vdEBtb25zdHIuZXU+CkRhdGU6CU1vbiBNYXIgMjYgMDE6Mzk6MDcgMjAwNyArMDIwMAoKICAgIFN1cHBvcnQgZm9yIFhVUFYyUCBib2FyZAogICAgUmVzZXQgc3VwcG9ydAogICAgQlNQIGF1dG9jb25maWcgc3VwcG9ydAoKY29tbWl0IDBkOTc0ZDUyOTczNDk1MDRhMmRkZmEwOTMxNGJlNTczYjVkZjMyMGEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVNhdCBNYXIgMjQgMTU6NTc6MDkgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gQWRkIDR4eCBHUElPIGZ1bmN0aW9ucwoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzb21lIDR4eCBHUElPIGZ1bmN0aW9ucy4gSXQgYWxzbyBtb3ZlcyBzb21lIG9mIHRoZQogICAgY29tbW9uIGNvZGUgYW5kIGRlZmluZXMgaW50byBhIGNvbW1vbiA0eHggR1BJTyBoZWFkZXIgZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMmRiNjMzNjU4YmJmMzY2YWIwYzhkYWQ3YTA3MjdlMWZiMmFlNmIxMQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IE1hciAyNCAxNTo1NTo1OCAyMDA3ICswMTAwCgogICAgW1BBVENIXSBTbWFsbCBTZXF1b2lhIGNsZWFudXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgM2NiODZmM2U0MGQyYTgwMzU2MTc3NDM0YTk5Zjc1YmM4YmFhOWNhZgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IE1hciAyNCAxNTo0NTozNCAyMDA3ICswMTAwCgogICAgW1BBVENIXSBDbGVhbiB1cCA0MEVaL0FjYWRpYSBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBjbGVhbnMgdXAgYWxsIHRoZSBvcGVuIGlzc3VlIG9mIHRoZSBwcmVsaW1pbmFyeQogICAgQWNhZGlhIHN1cHBvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDZlYjFkZjgzNTE5MWQ4Y2U0YjgxZDVhZjQwZmE4ZTBmYmU3OGU5OTcKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgRGVjIDEyIDExOjAyOjIwIDIwMDYgLTA2MDAKCiAgICBGaXggODY0MUhQQ04gcHJvYmxlbSB3aXRoIGxkIHZlcnNpb24gMi4xNgoKICAgIChEb3Qgb3V0c2lkZSBzZWN0aW9ucyBwcm9ibGVtKS4KCiAgICBUaGlzIGZpeCBpcyBpbiB0aGUgc3Bpcml0IG9mIDgwN2Q1ZDczMTkzMzBlMzM2YWIzNGE1NjIzYzVlMGQ3M2I4N2Q1NDAuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5OTY0YTRkZDBkNGVmNWEwMzdmZWJhZWJmMWFhNDk0YjFhNzI5OTFjCkF1dGhvcjogSGFpeWluZyBXYW5nIDxoYWl5aW5nLndhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IERlYyA3IDEwOjM1OjU1IDIwMDYgLTA2MDAKCiAgICBTZXQgUmV2IDIueCA4Nnh4IFBJQyBpbiBtaXhlZCBtb2RlLgoKICAgIFByZXZlbnQgZmFsc2UgaW50ZXJydXB0IGZyb20gaGFuZ2luZyBMaW51eCBhcyBNU1JbRUVdIGlzIHNldAogICAgdG8gZW5hYmxlIGludGVycnVwdHMgYnkgY2hhbmdpbmcgdGhlIFBJQyBvdXQgb2YgdGhlIGRlZmF1bHQKICAgIHBhc3MgdGhyb3VnaCBtb2RlIGludG8gbWl4ZWQgbW9kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPGhhaXlpbmcud2FuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1YTU4YTczY2ViMGE0MDU5YzQyZWY2NGNlZGJjMWE0NWUwYWFhMDBlCkF1dGhvcjogSmFzb24gSmluIDxqYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IERlYyA3IDEwOjMyOjM1IDIwMDYgLTA2MDAKCiAgICBBZGQgZmxhc2ggY21kIGZ1bmN0aW9uIHRvIDg2NDFIUENOIHJhbWJvb3QKCiAgICBBbHNvIGZpeGVzIHNvbWUgY29tbW1hbmQgZm9yIDg2NDEgSFBDTiByYW1ib290IGNhc2UuCgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxqYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMmNjY2VhY2MwNGIwMDlkOTIzYWZiN2MyNjE4OWJhMmY4YTJhNWQ0NgpBdXRob3I6IEVkIFN3YXJ0aG91dCA8ZWQuc3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBEZWMgNyAxMDozNDoxNCAyMDA2IC0wNjAwCgogICAgQWRkIHN1cHBvcnQgZm9yIDg2NDEgUmV2IDIgc2lsaWNvbi4KCiAgICBXaXRob3V0IHRoaXMgcGF0Y2gsIEkgYW0gdW5hYmxlIHRvIGdldCB0byB0aGUgcHJvbXB0IG9uIHJldiAyIHNpbGljb24uCiAgICBPbmx5IHNldCBkZHJpb292Y3IgZm9yIHJldjEuCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0PGVkLnN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0NGJhNDY0Yjk5MDAxZjhiZDFjNDU2YTFlOWQ1OTcyNjI1MmY3MDdhCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IE1hciAyMiAwMDoxMzoxMiAyMDA3ICswMTAwCgogICAgQ29kZSBjbGVhbnVwIC8gcmUtaW5zZXJ0IHByZXZpb3VzIENvcHlyaWdodCBlbnRyaWVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMmE4ZGZlMDgzNTlhMWI2NjM0MThiMmZhYTFkYTFkN2JjZTM0ZDMwMgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBNYXIgMjEgMjM6MjY6MTUgMjAwNyArMDEwMAoKICAgIENvZGUgY2xlYW51cC4gVXBkYXRlIENIQU5HRUxPRwoKY29tbWl0IGU2NjE1ZWNmNGVhZjRkZDUyNjk2OTM0YWVkOGY1YzY0NzRjZmQyODYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBNYXIgMjEgMTQ6NTQ6MjkgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogRml4IGZpbGUgbW9kZSBvZiBpbmNsdWRlL2NvbmZpZ3MvYWNhZGlhLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZDVmNDYxNGM5MzUwZDkzMzNlNTc1MTAwZmIyNTBhYWI3NzRkMDI1OApBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CVdlZCBNYXIgMjEgMTQ6NDE6NDYgMjAwNyArMDEwMAoKICAgIFNQQzE5MjA6IGZpeCBzbWFsbCBjbG9jayByb3V0aW5nIGJ1ZwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgMTZjMGNjMWM4MjA4MWE0OTNhYjg3YzUxOTgwYjI4MzM2Y2UxYmNlOApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE1hciAyMSAxMzozOTo1NyAyMDA3ICswMTAwCgogICAgW1BBVENIXSBBZGQgQU1DQyBBY2FkaWEgKDQwNUVaKSBldmFsIGJvYXJkIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIG5ldyBBTUNDIEFjYWRpYSBldmFsIGJvYXJkLgoKICAgIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBBY2FkaWEvNDA1RVogc3VwcG9ydCBpcyBzdGlsbCBpbiBhIGJldGEgc3RhZ2UuCiAgICBTdGlsbCBsb3QncyBvZiBjbGVhbnVwIG5lZWRlZCBidXQgd2UgbmVlZCBhIHByZWxpbWluYXJ5IHJlbGVhc2Ugbm93LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlMDFiZDIxOGIwMGFmNzM0OTkzMzFhMWE3MDE2MjVhODUyY2QyODZmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDIxIDEzOjM4OjU5IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIEFkZCBBTUNDIFBQQzQwNUVaIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIG5ldyBBTUNDIDQwNUVaIFBQQy4gSXQgaXMgaW4KICAgIHByZXBhcmF0aW9uIGZvciB0aGUgQU1DQyBBY2FkaWEgYm9hcmQgc3VwcG9ydC4KCiAgICBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgQWNhZGlhLzQwNUVaIHN1cHBvcnQgaXMgc3RpbGwgaW4gYSBiZXRhIHN0YWdlLgogICAgU3RpbGwgbG90J3Mgb2YgY2xlYW51cCBuZWVkZWQgYnV0IHdlIG5lZWQgYSBwcmVsaW1pbmFyeSByZWxlYXNlIG5vdy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDdlODJjYjJlMjg0YTg5M2RmNjY5M2YyYTEzMzdhYjJjNDdiZjZhMQpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0Bwb2xsdXguZGVueC5kZT4KRGF0ZToJV2VkIE1hciAyMSAwODo0NToxNyAyMDA3ICswMTAwCgogICAgW1BBVENIXSBUUU04MjcyOiBkb250IGNoYW5nZSB0aGUgYml0cyBnaXZlbiBmcm9tIHRoZSBIUkNXCgkJICAgICBmb3IgdGhlIFNJVU1DUiBhbmQgQkNSIFJlZ2lzdGVyLgoJCSAgICAgRml4IHRoZSBjYWxjdWxhdGlvbiBmb3IgdGhlIEVFcHJvbSBTaXplCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgNjU0NTg5ODczZGJhZmNmMTA0ZGZmMTMzY2UwZDAzYTQ1MDZlOWNjMwpBdXRob3I6IEF1YnJleSBMaSA8YXVicmV5LmFkaUBnbWFpbC5jb20+CkRhdGU6CVR1ZSBNYXIgMjAgMTg6MTY6MjQgMjAwNyArMDgwMAoKICAgIFtCbGFja2Zpbl1bUEFUQ0hdIEFkZCBCRjU2MSBFWktJVCBib2FyZCBzdXBwb3J0Cgpjb21taXQgYTYxNTRmZDFjZmQwMjBmNmRhODUyN2UwMzY1YjEwMjBhMTFhNzFkMApBdXRob3I6IEF1YnJleSBMaSA8YXVicmV5LmFkaUBnbWFpbC5jb20+CkRhdGU6CU1vbiBNYXIgMTkgMjI6NTU6NTggMjAwNyArMDgwMAoKICAgIFtCbGFja2Zpbl1bUEFUQ0hdIG1pbm9yIGNsZWFudXAKCmNvbW1pdCAzODliNmJiNTBmNzQ1YmY1MDM4Y2UwMzAzMDBkOGE4NTEyZTk2Zjc5CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIE1hciAxOSAxMzoxMDowOCAyMDA3ICswMTAwCgogICAgUmVtb3ZlIG9ic29sZXRlZCBQT1NUIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgOGU3MDliYmIyNjM2YjU2NzBhOGYyYjU3NWUxMzhlYjFmNTU3NzNmNgpBdXRob3I6IEF1YnJleSBMaSA8YXVicmV5LmFkaUBnbWFpbC5jb20+CkRhdGU6CU1vbiBNYXIgMTkgMDE6MjY6MTEgMjAwNyArMDgwMAoKICAgIFtQQVRDSF0gQWRkIGZsYXNoIGNoaXAgTTI5VzMyMEVUL0Igc3VwcG9ydAoKY29tbWl0IDI2YmY3ZGVjYTM2NGE1YjMzZjM5ZThmMTRkZGQzZjQwODEzNDUwMTUKQXV0aG9yOiBBdWJyZXkgTGkgPGF1YnJleS5hZGlAZ21haWwuY29tPgpEYXRlOglNb24gTWFyIDE5IDAxOjI0OjUyIDIwMDcgKzA4MDAKCiAgICBbQmxhY2tmaW5dW1BBVENIXSBBZGQgQkY1Mzcgc3RhbXAgYm9hcmQgc3VwcG9ydAoKY29tbWl0IDg0MjNlNWUzMWE3MjM1ZDA1YTQ4MjYyNzMxNWZiMTFkNDljMTdiZDcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBNYXIgMTYgMjE6MTE6NDIgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gVXNlIGR5bmFtaWMgU0RSQU0gVExCIHNldHVwIG9uIEFNQ0MgRWJvbnkgZXZhbCBib2FyZAoKICAgIERlZmluZSBDT05GSUdfUFJPR19TRFJBTV9UTEIgc28gdGhhdCB0aGUgVExCIGVudHJpZXMgZm9yIHRoZQogICAgRERSIG1lbW9yeSBhcmUgZHluYW1pY2FsbHkgcHJvZ3JhbW1lZCBtYXRjaGluZyB0aGUgdG90YWwgc2l6ZQogICAgb2YgdGhlIGVxdWlwcGVkIG1lbW9yeSAoRElNTSBtb2R1bGVzKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNzZkMTQ2NmY5MThiODgxY2RhMmQyNTkyNTQ3NjFlNzM4ODUwOTNjMgpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUdWUgTWFyIDEzIDEzOjM4OjA1IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIHJlbmFtZWQgZW52aXJvbm1lbnQgdmFyaWFibGUgJ2FkZGNvbicgdG8gJ2FkZGNvbnMnIGZvciBQQ0k0MDUKCSAgICBib2FyZHMgaW4gdGVybXMgb2YgdW5pZmljYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgYTcwOTBiOTkzZDNkNGQyMjIxYWMzZjMzZTZjYjFkMWIyY2NjNmJmMApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXIgMTMgMTY6MDU6NTUgMjAwNyArMDEwMAoKICAgIE1ha2UgU0MzIGJvYXJkIGJ1aWxkIHdpdGggJ21ha2UgTz0nOyB1c2UgJ2FkZGNvbnMnIGNvbnNpc3RlbnRseQogICAgKFNDMyBhbmQgSnVwaXRlciB1c2VkIHRvIHVzZSAnYWRkY29uJyBpbnN0ZWFkKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIHdkQGRlbnguZGUKCmNvbW1pdCA4NTAyZTMwYTI4ZTQ5MmM3NTZlYTJkN2RmMGFjZTAyNjM4OGZjZTRiCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQHBvbGx1eC5kZW54LmRlPgpEYXRlOglUdWUgTWFyIDEzIDA5OjQwOjU5IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIHVwZGF0ZSBib2FyZCBjb25maWcgZm9yIGp1cGl0ZXIgQm9hcmQ6CgkgICAgYWRkZWQgSHVzaCBTaGVsbCwKCQkgIENPTkZJR19DTURMSU5FX0VESVRJTkcsCgkJICBDRkdfRU5WX0FERFJfUkVEVU5EIGFjdGl2YXRlZAoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDBkOTNkZTExNDQ5MzkwYTU5ODRiMDIzNmMzNjEyZTUwZjZkYmI3ZTgKQXV0aG9yOiBBdWJyZXkgTGkgPGF1YnJleS5hZGlAZ21haWwuY29tPgpEYXRlOglNb24gTWFyIDEyIDEyOjExOjU1IDIwMDcgKzA4MDAKCiAgICBbQmxhY2tmaW5dW1BBVENIXSBtaW5vciBjbGVhbnVwCgpjb21taXQgYmZhNTc1NGE1ODQ3N2FjOTE3ZDIxNTI3Y2QwZjA3OWQ4N2NmMTg4ZQpBdXRob3I6IEF1YnJleSBMaSA8YXVicmV5LmFkaUBnbWFpbC5jb20+CkRhdGU6CU1vbiBNYXIgMTIgMDE6NDI6MDYgMjAwNyArMDgwMAoKICAgIFtCbGFja2Zpbl1bUEFUQ0hdIEZpeCBCVUlMRF9ESVIgb3B0aW9uIG9mIE1BS0VBTEwgYnVpbGRpbmcgaXNzdWUKCmNvbW1pdCA4NDQwYmIxNDU4MWEyOTQzNzVjMzRiOTFiNDI1MTJmOTc1M2QxMTMwCkF1dGhvcjogQXVicmV5IExpIDxhdWJyZXkuYWRpQGdtYWlsLmNvbT4KRGF0ZToJTW9uIE1hciAxMiAwMDoyNToxNCAyMDA3ICswODAwCgogICAgW0JsYWNrZmluXVtQQVRDSF0gY29kZSBjbGVhbnVwCgpjb21taXQgY2ZjNjcxMTZhNzA2ZmQxOGI4ZjZhOWMxMWExNjc1M2M1NjI2ZDY4OQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJU3VuIE1hciAxMSAxMzo0ODoyNCAyMDA3ICswMTAwCgogICAgW01pY3JvYmxhemVdW1BBVENIXSBwYXJ0IDIKICAgIHRpbWVyIHN1cHBvcnQKICAgIGludGVycnVwdCBjb250cm9sbGVyIHN1cHBvcnQKICAgIGZsYXNoIHN1cHBvcnQKICAgIGV0aGVybmV0IHN1cHBvcnQKICAgIGNhY2hlIHN1cHBvcnQKICAgIGJvYXJkIGluZm9ybWF0aW9uIHN1cHBvcnQKICAgIGVudiBzdXBwb3J0CiAgICBib290aW5nIGltYWdlIHN1cHBvcnQKCiAgICBhZGRpbmcgc3VwcG9ydCBmb3IgWGlsaW54IE1MNDAxCgpjb21taXQgNzYzMTZhMzE4ZGU5MWY2MTg0ZTdjMjJhMTBlMDJkMjc1YWRlMjQ0MQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJU3VuIE1hciAxMSAxMzo0Mjo1OCAyMDA3ICswMTAwCgogICAgW01pY3JvYmxhemVdW1BBVENIXQogICAgdGltZXIgc3VwcG9ydAogICAgaW50ZXJydXB0IGNvbnRyb2xsZXIgc3VwcG9ydAogICAgZmxhc2ggc3VwcG9ydAogICAgZXRoZXJuZXQgc3VwcG9ydAogICAgY2FjaGUgc3VwcG9ydAogICAgYm9hcmQgaW5mb3JtYXRpb24gc3VwcG9ydAogICAgZW52IHN1cHBvcnQKICAgIGJvb3RpbmcgaW1hZ2Ugc3VwcG9ydAoKICAgIGFkZGluZyBzdXBwb3J0IGZvciBYaWxpbnggTUw0MDEKCmNvbW1pdCA4ZGIxM2Q2MzE1NzgxMWM4MzlkMTVhMzEzZDlmMmQyZjVmZDEwYWYzCkF1dGhvcjogQXVicmV5IExpIDxhdWJyZXkuYWRpQGdtYWlsLmNvbT4KRGF0ZToJU2F0IE1hciAxMCAyMzo0OToyOSAyMDA3ICswODAwCgogICAgW0JsYWNrZmluXVtQQVRDSF0gY29kZSBjbGVhbnVwCgpjb21taXQgZWYyNmEwOGZlZjkyOGI3YmMxMWFlMmMxMDllNjM4ZGMzYTAxNmQ5MQpBdXRob3I6IEF1YnJleS5MaSA8YXVicmV5LmFkaUBnbWFpbC5jb20+CkRhdGU6CUZyaSBNYXIgOSAxMzo0MDo1NiAyMDA3ICswODAwCgogICAgW0JsYWNrZmluXVtQQVRDSC0yLzJdIENvbW1vbiBmaWxlcyBjaGFuZ2VkIHRvIHN1cHBvcnQgYmY1MzMgcGxhdGZvcm0KCmNvbW1pdCAzZjA2MDZhZDBiNTYzOWY3ZjIyODQ4ZmU1YjQ1NzRlNzU0ZDA0NzBmCkF1dGhvcjogQXVicmV5LkxpIDxhdWJyZXkuYWRpQGdtYWlsLmNvbT4KRGF0ZToJRnJpIE1hciA5IDEzOjM4OjQ0IDIwMDcgKzA4MDAKCiAgICBbQmxhY2tmaW5dUEFUQ0gtMS8yXTogUmVtb3ZlIG9ic29sZXRlIGJsYWNrZmluIHBvcnQgYW5kIGFkZCBiZjUzMyBwbGF0Zm9ybSBzdXBwb3J0Cgpjb21taXQgOTkyNDIzYWI0M2MyYmNmNmI3MDQ4NTNiZDAwYWY3NzQ1MDkxNWUyMApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE1hciA4IDIzOjAwOjA4IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IEZpeCBmaWxlIG1vZGUgb2Ygc2VxdW9pYS5jCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGViOTJmNjEzNTU2ODAwZjc0ODM2NjZkYjA5ZDlhMjM3YWQ5MTFkNGEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJVGh1IE1hciA4IDIyOjUyOjUxIDIwMDcgKzAxMDAKCiAgICBNaW5vciBjbGVhbnVwLgoKY29tbWl0IDhjZTE2ZjU1YzdiOTc1MmFmM2Q4YmVkODQ1MjFhZWM1MzM3ZTJkZTEKQXV0aG9yOiBKb2huIE90a2VuIGpvaG5Ac29mdGFkdmFuY2VzLmNvbSA8am9obkBzb2Z0YWR2YW5jZXMuY29tPgpEYXRlOglUaHUgTWFyIDggMDk6Mzk6NDggMjAwNyAtMDYwMAoKICAgIHBwYzR4eDogQ2xlYXIgU2VxdW9pYS9SYWluaWVyIHNlY3VyaXR5IGVuZ2luZSByZXNldCBiaXRzCgogICAgU2lnbmVkLW9mZi1ieTogSm9obiBPdGtlbiBqb2huQHNvZnRhZHZhbmNlcy5jb20gPGpvaG5Ac29mdGFkdmFuY2VzLmNvbT4KCmNvbW1pdCA2NTBhMzMwZGQyNTM5MTMwYzhjMzI0NzkxZTJmOWY3NWFlZDc5ZDRlCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVRodSBNYXIgOCAxNjoyNjo1MiAyMDA3ICswMTAwCgogICAgW1BBVENIXSBJMkM6IGFkZCBzb21lIG1vcmUgU1BEIGVlcHJvbSBkZWNvZGluZyBmb3IgRERSMiBtb2R1bGVzCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgZDlmYzcwMzI0Njg0MGM0YjI2OGRlYmY0OGMzMzRiYTU1YzU5N2RjMApBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUaHUgTWFyIDggMTY6MjU6NDcgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gSTJDOiBkaXNhYmxlIGZsYXQgaTJjIGNvbW1hbmRzIHdoZW4gQ09ORklHX0kyQ19DTURfVFJFRSBpcyBkZWZpbmVkCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgY2VkNWI5MDI5MDQzMzk3MzQ4Y2RjODhlMGNmY2Q2YjFmNjI5MjUwYgpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUaHUgTWFyIDggMTY6MjM6MTEgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gNHh4OiBhbGxvdyBDT05GSUdfSTJDX0NNRF9UUkVFIHdpdGhvdXQgQ09ORklHX0kyQ19NVUxUSV9CVVMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCBkOGE4ZWE1YzQ3NmQzNzAwNmZjN2Y4NWI3ZjkwMzE0Mjc5NWM4YjE0CkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVRodSBNYXIgOCAxNjoyMDozMiAyMDA3ICswMTAwCgogICAgW1BBVENIXSBJMkM6IEFkZCBtaXNzaW5nIGRlZmF1bHQgQ0ZHX1NQRF9CVVNfTlVNCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgZjlmYzZhNTg1MmE2MzM1ODQwODgyZmEyMTExOTI1MDEwZWVhMWFiZQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglXZWQgTWFyIDcgMTU6MzI6MDEgMjAwNyArMDEwMAoKICAgIGZpeGVkIGV0aGVybmV0IHBoeSBjb25maWd1cmF0aW9uIGZvciBwbHU0MDUgYm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCA3NjkxMDRjOTM1NjU5NGRlYjIwOTJlMjA0YTM5YzA1YjMzMjAyZDZjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVRodSBNYXIgOCAyMTo0OToyNyAyMDA3ICswMTAwCgogICAgTWlub3IgY2xlYW51cAoKY29tbWl0IDAwY2RiNGNlNWUxYjQyMjQ4ZTdlNjUyMmFkMGRhMzQyMWI5ODhhZmEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBNYXIgOCAxMDoxMzoxNiAyMDA3ICswMTAwCgogICAgW1BBVENIXSBVcGRhdGUgQU1DQyBMdWFuIDQ0MFNQIGV2YWwgYm9hcmQgc3VwcG9ydAoKICAgIFRoZSBBTUNDIEx1YW4gbm93IHVzZXMgdGhlIGNvbW1vbiA0NDBTUChlKSBERFIgU1BEIGNvZGUgZm9yIEREUgogICAgaW5pdGl0aWFsaXppdGlvbi4gVGhpcyBpbmNsdWRlcyBERFIgYXV0byBjYWxpYnJhdGlvbiBhbmQgc3VwcG9ydAogICAgZm9yIGRpZmZlcmVudCBESU1NIG1vZHVsZXMsIGluc3RlYWQgb2YgdGhlIGZpeGVkIHNldHVwIHVzZWQgaW4KICAgIHRoZSBlYXJsaWVyIHZlcnNpb24uCgogICAgVGhpcyBwYXRjaCBhbHNvIGVuYWJsZXMgdGhlIGNhY2hlIGluIEZMQVNIIGZvciB0aGUgc3RhcnR1cAogICAgcGhhc2Ugb2YgVS1Cb290ICh3aGlsZSBydW5uaW5nIGZyb20gRkxBU0gpLiBBZnRlciByZWxvY2F0aW5nIHRvCiAgICBTRFJBTSB0aGUgY2FjaGUgaXMgZGlzYWJsZWQgYWdhaW4uIFRoaXMgd2lsbCBzcGVlZCB1cCB0aGUgYm9vdAogICAgcHJvY2VzcywgZXNwZWNpYWxseSB0aGUgU0RSQU0gc2V0dXAsIHNpbmNlIHRoZXJlIGFyZSBzb21lIGxvb3BzCiAgICBmb3IgbWVtb3J5IHRlc3RpbmcgKGF1dG8gY2FsaWJyYXRpb24pLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyZjVkZjQ3MzUxOTEwYTI5MzZjNzc0MWNmMTExODU1ODI5MjAwOTQzCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgTWFyIDggMTA6MTA6MTggMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gVXBkYXRlIEFNQ0MgWXVjY2EgNDQwU1BlIGV2YWwgYm9hcmQgc3VwcG9ydAoKICAgIFRoZSBBTUNDIFl1Y2NhIG5vdyB1c2VzIHRoZSBjb21tb24gNDQwU1AoZSkgRERSIFNQRCBjb2RlIGZvciBERFIKICAgIGluaXRpdGlhbGl6aXRpb24uIFRoaXMgaW5jbHVkZXMgRERSIGF1dG8gY2FsaWJyYXRpb24gYW5kIHN1cHBvcnQKICAgIGZvciBkaWZmZXJlbnQgRElNTSBtb2R1bGVzLCBpbnN0ZWFkIG9mIHRoZSBmaXhlZCBzZXR1cCB1c2VkIGluCiAgICB0aGUgZWFybGllciB2ZXJzaW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyNzIxYTY4YTllYTkxZjFlNDk0NjQ5Y2U2OGIyNTc3MjYxZjU3OGUyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgTWFyIDggMTA6MDc6MTggMjAwNyArMDEwMAoKICAgIHBwYzR4eDogU21hbGwgQU1DQyBLYXRtYWkgNDQwU1BlIHVwZGF0ZQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkZjI5NDQ5NzQ3OWIxZGNhNmRkODYzMThiMmE5MTJmNzJmZWRlMGRmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgTWFyIDggMTA6MDY6MDkgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogVXBkYXRlIDQ0MFNQLzQ0MFNQZSBERFIgU1BEIHNldHVwIGNvZGUgdG8gc3VwcG9ydCA0NDBTUAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4Mzg1MzE3OGJkMzZiY2E2ZjBmOGYxMzMxNDc2NjIwYzg0YTU4N2ZjCkF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE1hciA3IDEyOjE0OjUwIDIwMDcgLTA2MDAKCiAgICBuZXQgLSBTdXBwb3J0IHBpbmcgcmVwbHkgd2hlbiBwcm9jZXNzaW5nIG5ldC1sb29wCgogICAgQWRkIElDTVBfRUNIT19SRVFVRVNUIHBhY2tldCBzdXBwb3J0IGJ5IHJlc3BvbmRpbmcgd2l0aCBhIElDTVBfRUNIT19SRVBMWS4KCiAgICBUaGlzIHBlcm1pdHMgdGhlIHBpbmcgY29tbWFuZCB0byB0ZXN0IHRoZSBwaHkgaW50ZXJmYWNlIHdoZW4gdGhlIHBoeQogICAgaXMgcHV0IGluIGxvb3BiYWNrIG1vZGUgKHR5cGljYWxseSBieSBzZXR0aW5nIHJlZ2lzdGVyIDAgYml0IDE0KS4KCiAgICBJdCBhbHNvIGFsbG93cyB0aGUgcG9ydCB0byByZXNwb25kIHRvIGFuIGV4dGVybmFsIHBpbmcgd2hlbiB1LWJvb3QgaXMKICAgIHByb2Nlc3Npbmcgc29tZSBvdGhlciBuZXQgY29tbWFuZCAoc3VjaCBhcyB0ZnRwKS4gIFRoaXMgaXMgdXNlZnVsIHdoZW4KICAgIHRmdHAgYXBwZWFycyB0byBoYW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxid2FycmVuQHFzdHJlYW1zLmNvbT4KCmNvbW1pdCBmYTFhZWYxNWJjZDQ3NzM2Njg3YmUxYWY1NDQ1MDZlOTBmYmE1NDVkCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDcgMTY6NDM6MDAgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gVXNlIGR5bmFtaWMgU0RSQU0gVExCIHNldHVwIG9uIEFNQ0MgT2NvdGVhIGV2YWwgYm9hcmQKCiAgICBEZWZpbmUgQ09ORklHX1BST0dfU0RSQU1fVExCIHNvIHRoYXQgdGhlIFRMQiBlbnRyaWVzIGZvciB0aGUKICAgIEREUiBtZW1vcnkgYXJlIGR5bmFtaWNhbGx5IHByb2dyYW1tZWQgbWF0Y2hpbmcgdGhlIHRvdGFsIHNpemUKICAgIG9mIHRoZSBlcXVpcHBlZCBtZW1vcnkgKERJTU0gbW9kdWxlcykuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGUyZWJlNjk2ODE4OTM5ZTJiOTc0NjI4YmU5YzkyMWVhM2ZlOWRlMTMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBNYXIgNyAxNjozOTozNiAyMDA3ICswMTAwCgogICAgW1BBVENIXSBGaXggQU1DQyA0NHggU1BEIFNEUkFNIGluaXQgY29kZSB0byBzdXBwb3J0IDIgRElNTSdzCgogICAgVGhpcyBwYXRjaCBmaXhlcyBhIHByb2JsZW0gdGhhdCBvY2N1cnMgd2hlbiAyIERJTU0ncyBhcmUKICAgIHVzZWQuIFRoaXMgcHJvYmxlbSB3YXMgZmlyc3Qgc3BvdHRlZCBhbmQgZml4ZWQgYnkgR2VyYWxkIEphY2tzb24KICAgIDxnZXJhbGQuamFja3NvbkByZWFvbml4c2VjdXJpdHkuY29tPiBidXQgdGhpcyBwYXRjaCBmaXhlcyB0aGUKICAgIHByb2JsZW0gaW4gYSBsaXR0bGUgbW9yZSBjbGV2ZXIgd2F5LgoKICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIHRoZSBuaWNlIGZ1bmN0aW9uYWxpdHkgdG8gZHluYW1pY2FsbHkKICAgIGNyZWF0ZSB0aGUgVExCIGVudHJpZXMgZm9yIHRoZSBTRFJBTSAodGxiLmMpLiBTbyB3ZSBzaG91bGQKICAgIG5ldmVyIHJ1biBpbnRvIHN1Y2ggcHJvYmxlbXMgd2l0aCB3cm9uZyAodG9vIHNob3J0KSBUTEIKICAgIGluaXRpYWxpemF0aW9uIGFnYWluIG9uIHRoZXNlIHBsYXRmb3Jtcy4KCiAgICBBcyB0aGlzIGZlYXR1cmUgaXMgbmV3IHRvIHRoZSAib2xkIiA0NHggU1BEIEREUiBkcml2ZXIsIGl0CiAgICBoYXMgdG8gYmUgZW5hYmxlZCB2aWEgdGhlIENPTkZJR19QUk9HX1NEUkFNX1RMQiBkZWZpbmUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDM5MjE4NDMzOTgzNDE3YjlkZjA4Nzk3NmE3OWUzZjgwZGQ1ZTgzZDYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDcgMTY6MzM6NDQgMjAwNyArMDEwMAoKICAgIFVDMTAxOiBmaXggY29tcGlsZXIgd2FybmluZ3MKCmNvbW1pdCA4ZDdlMjczMjIyMWJjMmQ2NGRmMTRmNzAwYzY0YzIzZTBhNGMzZGNlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVdlZCBNYXIgNyAxNjoxOTo0NiAyMDA3ICswMTAwCgogICAgSE1JMTAwMTogZml4IGJ1aWxkIGVycm9yLCBjbGVhbnVwIGNvbXBpbGVyIHdhcm5pbmdzLgoKY29tbWl0IGFkNWJiNDUxYWRlNTUyYzQ0YmVmOTExOWQ5MDc5MjllYmMyYzEyNmYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJVHVlIE1hciA2IDE4OjA4OjQzIDIwMDcgKzAxMDAKCiAgICBSZXN0cnVjdHVyZSBQT1NUIGRpcmVjdG9yeSB0byBzdXBwb3J0IG9mIG90aGVyIENQVXMsIGJvYXJkcywgZXRjLgoKY29tbWl0IGE1Mjg0ZWZkMTI1OTY3Njc1YjJlOWM2ZWY3Yjk1ODMyMjY4YWQzNjAKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJVHVlIE1hciA2IDE4OjAxOjQ3IDIwMDcgKzAxMDAKCiAgICBGaXggSE9TVEFSQ0ggaGFuZGxpbmcuCiAgICBQYXRjaCBieSBNaWtlIEZyeXNpbmdlciwgTWFyIDA1IDIwMDcKCmNvbW1pdCAwN2I3YjAwMzdhYWM1MTAyOTM5OTE3ZDdjYmU1NjFiNWMwZDVhYTQ0CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgTWFyIDYgMDc6NDc6MDQgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gU3BlZWQgb3B0aW1pemF0aW9uIG9mIEFNQ0MgU2VxdW9pYS9SYWluaWVyIEREUjIgc2V0dXAKCiAgICBBcyBwcm92aWRlZCBieSB0aGUgQU1DQyBhcHBsaWNhdGlvbnMgdGVhbSwgdGhpcyBwYXRjaCBvcHRpbWl6ZXMgdGhlCiAgICBERFIyIHNldHVwIGZvciAxNjZNSHogYnVzIHNwZWVkLiBUaGUgdmFsdWVzIHByb3ZpZGVkIGFyZSBhbHNvIHNhdmUKICAgIHRvIHVzZSBvbiBhICJub3JtYWwiIDEzM01IeiBQTEIgYnVzIHN5c3RlbS4gT25seSB0aGUgcmVmcmVzaCBjb3VudGVyCiAgICBzZXR1cCBoYXMgdG8gYmUgYWRqdXN0ZWQgYXMgZG9uZSBpbiB0aGlzIHBhdGNoLgoKICAgIEZvciB0aGlzIHRoZSBOQU5EIGJvb3RpbmcgdmVyc2lvbiBoYWQgdG8gaW5jbHVkZSB0aGUgInNwZWVkLmMiIGZpbGUKICAgIGZyb20gdGhlIGNwdS9wcGM0eHggZGlyZWN0b3J5LiBXaXRoIHRoaXMgYWRkaXRpb24gdGhlIE5BTkQgU1BMIGltYWdlCiAgICB3aWxsIGp1c3QgZml0IGludG8gdGhlIDRrYnl0ZXMgb2YgcHJvZ3JhbSBzcGFjZS4gZ2NjIHZlcnNpb24gNC54IGFzCiAgICBwcm92aWRlZCB3aXRoIEVMREsgNC54IGlzIG5lZWRlZCB0byBnZW5lcmF0ZSB0aGlzIG9wdGltaXplZCBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2NDdkM2MzZWVkMGRhMWQxNTA1ZWVjYWJlMGIwZmFiOTZmOTU2ZTY4CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVN1biBNYXIgNCAwMTozNjowNSAyMDA3ICswMTAwCgogICAgU29tZSBjb2RlIGNsZWFudXAuCgpjb21taXQgNzgxZTAyNmM4YWE2ZjdlOWViNWYwZTcyY2M0ZDIwOTcxMjE5YjE0OApBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBGZWIgMjggMDA6MDI6MDQgMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IGZpeCBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnZnRfZ2V0X3Byb3AnIHdhcm5pbmdzCgogICAgKGNoZXJyeSBwaWNrZWQgZnJvbSBjNWJmMTNiMDIyODRjMzIwNGE3MjM1NjZhOWJhYjcwMGU1MDU5NjU5IGNvbW1pdCkKCmNvbW1pdCA0ZmVhYjRkZTdiZmMyY2IyZmVkMzZhZDc2ZjkzYzNhNjk2NTliYmFmCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIEZlYiAyNyAyMzo1MTo0MiAyMDA3IC0wNjAwCgogICAgbXBjODN4eDogRml4IGNvbmZpZyBvZiBBcmJpdGVyLCBTeXN0ZW0gUHJpb3JpdHksIGFuZCBDbG9jayBNb2RlCgogICAgVGhlIGNvbmZpZyB2YWx1ZSBmb3I6CiAgICAqIENGR19BQ1JfUElQRV9ERVAKICAgICogQ0ZHX0FDUl9SUFRDTlQKICAgICogQ0ZHX1NQQ1JfVFNFQzFFUAogICAgKiBDRkdfU1BDUl9UU0VDMkVQCiAgICAqIENGR19TQ0NSX1RTRUMxQ00KICAgICogQ0ZHX1NDQ1JfVFNFQzJDTQoKICAgIFdlcmUgbm90IGJlaW5nIHVzZWQgd2hlbiBzZXR0aW5nIHRoZSBhcHByb3ByaWF0ZSByZWdpc3RlcgoKICAgIEFkZGVkOgogICAgKiBDRkdfU0NDUl9VU0JNUEhDTQogICAgKiBDRkdfU0NDUl9VU0JEUkNNCiAgICAqIENGR19TQ0NSX1BDSUNNCiAgICAqIENGR19TQ0NSX0VOQ0NNCgogICAgVG8gYWxsb3cgZnVsbCBjb25maWcgb2YgdGhlIFNDQ1IuCgogICAgQWxzbyByZW1vdmVkIHJhbmRvbSBDRkdfU0NDUiBzZXR0aW5ncyBpbiBNUEM4MzQ5RU1EUywgVFFNODM0eCwgYW5kIHNiYzgzNDkKICAgIHRoYXQgd2VyZSBqdXN0IGJvZ3VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZDUxYjNjZjM3MWNkNDQxMDMwNDYwZWYxOWQzNmIyOTI0YzM2MWIxYQpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBGZWIgMjIgMjA6MDY6NTcgMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IHVwZGF0ZSBbbG9jYWwtXW1hYy1hZGRyZXNzIHByb3BlcnRpZXMgb24gVUVDIGJhc2VkIGRldmljZXMKCiAgICA4MzYwIGFuZCA4MzJ4IHdlcmVuJ3QgdXBkYXRpbmcgdGhlaXIgW2xvY2FsLV1tYWMtYWRkcmVzcwogICAgcHJvcGVydGllcy4gVGhpcyBwYXRjaCBmaXhlcyB0aGF0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjFmNGY5MTJhY2JlNjA3NzZjNWUwMGRmMWVjOTQwOTRjZTY3Mjk1NwpBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBGZWIgMTMgMTA6NDE6NDIgMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IHdyaXRlIE1BQyBhZGRyZXNzIHRvIG1hYy1hZGRyZXNzIGFuZCBsb2NhbC1tYWMtYWRkcmVzcwoKICAgIFNvbWUgZGV2aWNlIHRyZWVzIGhhdmUgYSBtYWMtYWRkcmVzcyBwcm9wZXJ0eSwgc29tZSBoYXZlIGxvY2FsLW1hYy1hZGRyZXNzLAogICAgYW5kIHNvbWUgaGF2ZSBib3RoLiAgVG8gc3VwcG9ydCBhbGwgb2YgdGhlc2UgZGV2aWNlIHRyZWVzLCB0aGlzIHBhdGNoCiAgICB1cGRhdGVzIGZ0cF9jcHVfc2V0dXAoKSB0byB3cml0ZSB0aGUgTUFDIGFkZHJlc3MgdG8gbWFjLWFkZHJlc3MgaWYgaXQgZXhpc3RzLgogICAgVGhpcyBmdW5jdGlvbiBhbHJlYWR5IHVwZGF0ZXMgbG9jYWwtbWFjLWFkZHJlc3MuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyMmQ3MWE3MWY1N2ZkNWQzOGIyN2FjMzg0OGU1MGQ3OTAzNjBhNTk4CkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEZlYiAyNyAxODo0MTowOCAyMDA3IC0wNjAwCgogICAgbXBjODN4eDogYWRkIGNvbW1hbmQgbGluZSBlZGl0aW5nIGJ5IGRlZmF1bHQKCmNvbW1pdCAzZmMwYmQxNTkxMDNiNTM2ZTFjNTRjNmY0NDU3YTA5YjNhYmE2NmNhCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEZlYiAxNCAxOTo1MDo1MyAyMDA3IC0wNjAwCgogICAgbXBjODN4eDogRGlzYWJsZSBHMVRYQ0xLLCBHMlRYQ0xLIGgvdyBidWZmZXJzCgogICAgRGlzYWJsZSBHMVRYQ0xLLCBHMlRYQ0xLIGgvdyBidWZmZXJzLiBUaGlzIHBhdGNoCiAgICBmaXhlcyBhIG5ldHdvcmtpbmcgdGltZW91dCBpc3N1ZSB3aXRoIE1QQzgzNjBFQSAoUmV2LjIpIFBCcy4KCiAgICBWZXJpZmllZCBvbiBSZXYuIDEuMSwgUmV2LiAxLjIsIGFuZCBSZXYuIDIuMCBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEVtaWxpYW4gTWVkdmUgPEVtaWxpYW4uTWVkdmVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkNjE4NTNjZjI0NzJlMGI4YmNiZDEzMTQ2MWE5M2QxYzQ5ZmYwYzFmCkF1dGhvcjogWGllIFhpYW9ibyA8cjYzMDYxQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBGZWIgMTQgMTg6Mjc6MTcgMjAwNyArMDgwMAoKICAgIG1wYzgzeHg6IEFkZCBERFIyIGNvbnRyb2xsZXIgZml4ZWQvU1BEIEluaXQgZm9yIE1QQzgzeHgKCiAgICBUaGUgY29kZSBzdXBwbHkgZml4ZWQgYW5kIFNQRCBpbml0aWFsaXphdGlvbiBmb3IgTVBDODN4eCBERFIyIENvbnRyb2xsZXIuCiAgICBpdCBwYXNzIEREUi9ERFIyIGNvbXBsaWFuY2UgdGVzdHMuCgogICAgU2lnbmVkLW9mZi1ieTogWGllIFhpYW9ibyA8WC5YaWVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiMTEwZjQwYmQxODBjNmI1NjAyNzY1ODliZWVkZjc1M2U5N2M0NmNlCkF1dGhvcjogWGllIFhpYW9ibyA8cjYzMDYxQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBGZWIgMTQgMTg6Mjc6MDYgMjAwNyArMDgwMAoKICAgIG1wYzgzeHg6IEFkZCB0aGUgY3B1IHNwZWNpZmljIGNvZGUgZm9yIE1QQzgzNjBFIHJldjIuMCBNRFMKCiAgICBNUEM4MzYwRSByZXYyLjAgaGF2ZSBuZXcgc3ByaWRyLGFuZCBQVlIgdmFsdWUsCiAgICBUaGUgTURTIGJvYXJkIGZvciBNUEM4MzYwRSByZXYyLjAgaGFzIDMyTSBieXRlcyBGbGFzaCBhbmQgMjU2TSBERFIyIERJTU0uCgogICAgU2lnbmVkLW9mZi1ieTogWGllIFhpYW9ibyA8WC5YaWVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4ZDE3MmMwZjBkODU5OThhMjU2YTk1Yjc0NTlhNTQwM2EzMDM4MGVkCkF1dGhvcjogWGllIFhpYW9ibyA8cjYzMDYxQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBGZWIgMTQgMTg6MjY6NDQgMjAwNyArMDgwMAoKICAgIG1wYzgzeHg6IEFkZCB0aGUgY3B1IGFuZCBib2FyZCBzcGVjaWZpYyBjb2RlIGZvciBNUEM4MzQ5RSByZXYzLjEgTURTCgogICAgTVBDODM0OUUgcmV2My4xIGhhdmUgbmV3IHNwcmlkcixhbmQgUFZSIHZhbHVlLAogICAgVGhlIE1EUyBib2FyZCBmb3IgTVBDODM0OUUgcmV2My4xIGhhcyAzMk0gYnl0ZXMgRmxhc2ggYW5kIDI1Nk0gRERSMiBESU1NLgoKICAgIFNpZ25lZC1vZmYtYnk6IFhpZSBYaWFvYm88WC5YaWVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmNmY1ZjcwOWU1YzhlNDU2NGM0ZGZlZWNmZGYyMjc5MjQ0ZjljODNiCkF1dGhvcjogSm9ha2ltIFRqZXJubHVuZCA8am9ha2ltLnRqZXJubHVuZEB0cmFuc21vZGUuc2U+CkRhdGU6CVdlZCBKYW4gMzEgMTE6MDQ6MTkgMjAwNyArMDEwMAoKICAgIG1wYzgzeHg6IEZpeCBlbXB0eSBpMmMgcmVhZHMvd3JpdGVzIGluIGZzbF9pMmMuYwoKICAgIEZpeCBlbXB0eSBpMmMgcmVhZHMvd3JpdGVzLCBpMmNfd3JpdGUoMHg1MCwgMHgwMCwgMCwgTlVMTCwgMCkKICAgIHdoaWNoIGlzIHVzZWQgdG8gc2UgaWYgYW4gc2xhdmUgd2lsbCBBQ0sgYWZ0ZXIgcmVjZWl2aW5nIGl0cyBhZGRyZXNzLgoKICAgIENvcnJlY3QgaTJjIHByb2JpbmcgdG8gdXNlIHRoaXMgbWV0aG9kIGFzIHRoZSBvbGQgbWV0aG9kIGNvdWxkIHVwc2V0CiAgICBhIHNsYXZlIGFzIGl0IHdyb3RlIGEgZGF0YSBieXRlIHRvIGl0LgoKICAgIEFkZCBhIHNtYWxsIGRlbGF5IGluIGkyY19pbml0KCkgdG8gbGV0IHRoZSBjb250cm9sbGVyCiAgICBzaHV0ZG93biBhbnkgb25nb2luZyBJMkMgYWN0aXZpdHkuCgogICAgU2lnbmVkLW9mZi1ieTogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+Cgpjb21taXQgN2E3OGYxNDhkNmE3Mjk4ZTRmZmFjZTY4MGRjN2VhY2Q4NzdiMWFiYQpBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKYW4gMzEgMTU6NTQ6MjkgMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IEFkZCBzdXBwb3J0IGZvciB0aGUgTVBDODM0OUUtbUlUWC1HUAoKICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgTVBDODM0OUUtbUlUWC1HUCwgYSBzdHJpcHBlZC1kb3duIHZlcnNpb24gb2YgdGhlCiAgICBNUEM4MzQ5RS1tSVRYLiAgQm9udXMgZmVhdHVyZXMgaW5jbHVkZSBzdXBwb3J0IGZvciBsb3ctYm9vdCAoQk1TIGJpdCBpbgogICAgSFJDVyBpcyAwKSBmb3IgdGhlIElUWCBhbmQgYSBSRUFETUUgZm9yIHRoZSBJVFggYW5kIHRoZSBJVFgtR1AuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmYWIxNjgwN2FkYWQzNTBmNjE4MDI0MzUwYzY5NTAxNjVjMjQ3YzcyCkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEphbiAzMSAxNTo1NDoyMCAyMDA3IC0wNjAwCgogICAgbXBjODN4eDogRGVsZXRlIHNkcmFtX2luaXQoKSBmb3IgTVBDODM0OUUtbUlUWAoKICAgIFRoZXJlIGlzIG5vIFNEUkFNIG9uIGFueSBvZiB0aGUgODM0OSBJVFggdmFyaWFudHMsIHNvIGZ1bmN0aW9uIHNkcmFtX2luaXQoKQogICAgbmV2ZXIgZG9lcyBhbnl0aGluZy4gIFRoaXMgcGF0Y2ggZGVsZXRlcyBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGE4N2M4NTZlYjQxMWI5MzY1OTM3ZDBkNGI5YzIxZTQ2YWRiZTFjMTQKQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSmFuIDE5IDEwOjQzOjI2IDIwMDcgKzA4MDAKCiAgICBtcGM4M3h4OiBGaXggdGhlIExBVzEvMyBidWcKCiAgICBUaGUgcGF0Y2ggc29sdmVzIHRoZSBhbGlnbm1lbnQgcHJvYmxlbSBvZiB0aGUgbG9jYWwgYnVzIGFjY2VzcyB3aW5kb3dzIHRvCiAgICByZW5kZXIgYWNjZXNzaWJsZSB0aGUgbWVtb3J5IGJhbmsgYW5kIFBIWSByZWdpc3RlcnMgb2YgVVBDIDEgKHN0YXJ0aW5nIGF0CiAgICAweGY4MDEgMDAwMCkuIFdoYXQgd2UgYWN0dWFsbHkgZGlkIHdhcyB0byBhZGp1c3QgdGhlIHNpemVzIG9mIHRoZSBidXMKICAgIGFjY2VzcyB3aW5kb3dzIHNvIHRoYXQgdGhlIGJhc2UgYWRkcmVzcyBhbGlnbm1lbnQgcmVxdWlyZW1lbnQgd291bGQgYmUgbWV0LgoKICAgIFNpZ25lZC1vZmYtYnk6IENoZXJlamkgTWFyaWFuIDxtYXJpYW4uY2hlcmVqaUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogR3JpZGlzaCBTaGxvbWkgPGdyaWRpc2hAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTdjNGIzOTdkY2UyMzZhNzMxOGIzMDQ2NjdiZjg5ZTU5ZDA4YjE3YwpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKYW4gMzAgMTY6MTU6MzEgMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IGRvbid0IGhhbmcgaWYgd2F0Y2hkb2cgY29uZmlndXJlZCBvbiA4MzYwLCA4MzJ4CgogICAgZG9uJ3QgaGFuZyBpZiB3YXRjaGRvZyBjb25maWd1cmVkIG9uIDgzNjAsIDgzMngKCiAgICBUaGUgd2F0Y2hkb2cgcHJvZ3JhbW1pbmcgbW9kZWwgaXMgdGhlIHNhbWUgYWNyb3NzIGFsbCA4M3h4IGRldmljZXM7CiAgICBtYWtlIHRoZSBjb2RlIHJlZmxlY3QgdGhhdC4KCmNvbW1pdCBiNzAwNDc0Nzg1NzBlMzcxY2U3MjIzYmUzNDJjZTk4YWZlYTBmN2Q2CkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEphbiAzMCAxNjoxNToyMSAyMDA3IC0wNjAwCgogICAgbXBjODN4eDogcHJvdGVjdCBtZW1jcHkgdG8gYmFkIGFkZHJlc3MgaWYgYSBsb2NhbC1tYWMtYWRkcmVzcyBpcyBtaXNzaW5nIGZyb20gZHQKCiAgICBwcm90ZWN0IG1lbWNweSB0byBiYWQgYWRkcmVzcyBpZiBhIGxvY2FsLW1hYy1hZGRyZXNzIGlzIG1pc3NpbmcgZnJvbSBkdAoKY29tbWl0IDY3NTJlZDA4OGM3NWMyNmE4OWI3MGM0NmI3MzI2YTRjZDYwMTVmMjkKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSmFuIDMwIDE2OjE1OjA0IDIwMDcgLTA2MDAKCiAgICBtcGM4M3h4OiBtYWtlIDgzNjAgZGVmYXVsdCBlbnZpcm9ubWVudCBmZHQgYmUgODM2MCAobm90IDgzNDkpCgogICAgbWFrZSA4MzYwIGRlZmF1bHQgZW52aXJvbm1lbnQgZmR0IGJlIDgzNjAgKG5vdCA4MzQ5KQoKY29tbWl0IGEyODg5OWM5MTAwMjRhMDIyNjMzMWRmMDcyMDdiMTAzOGMzMDBjOTMKQXV0aG9yOiBFbWlsaWFuIE1lZHZlIDxFbWlsaWFuLk1lZHZlQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKYW4gMzAgMTY6MTQ6NTAgMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IEZpeCBhbHRlcm5hdGluZyB0eCBlcnJvciAvIHR4IGJ1ZmZlciBub3QgcmVhZHkgYnVnIGluIFFFIFVFQwoKICAgIFRoZSBwcm9ibGVtIGlzIG5vdCBnY2M0IGJ1dCB0aGUgY29kZSBpdHNlbGYuIFRoZSBCRF9TVEFUVVMoKSBtYWNybyBjYW4ndAogICAgYmUgdXNlZCBmb3IgYnVzeS13YWl0aW5nIHNpbmNlIGl0IHN0cmlwcyB0aGUgJ3ZvbGF0aWxlJyBwcm9wZXJ0eSBmcm9tCiAgICB0aGUgYmQgdmFyaWFibGUuIGdjYzMgd2FzIHdvcmtpbmcgYnkgcHVyZSBsdWNrLgoKICAgIFRoaXMgaXMgYSBmb2xsb3cgb24gcGF0Y2ggdG8gIkZpeCB0aGUgVUVDIGRyaXZlciBidWcgb2YgUUUiCgpjb21taXQgM2U3OGEzMWNmZTNkMzAyMmY0NmY2N2ViODhlMTI4MWQ1Y2MyZWI4OQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBKYW4gMzAgMTQ6MDg6MzAgMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IFJlcGxhY2UgQ09ORklHX01QQzgzNDkgYW5kIHVzZSBDT05GSUdfTVBDODM0WCBpbnN0ZWFkCgogICAgVGhlIGNvZGUgdGhhdCBpcyBpZmRlZidkIHdpdGggQ09ORklHX01QQzgzNDkgaXMgYWN0dWFsbHkgYXBwbGljYWJsZSB0byBhbGwKICAgIE1QQzgzNFggY2xhc3MgcHJvY2Vzc29ycy4gIENoYW5nZSB0aGUgcHJvdGVjdGlvbnMgZnJvbSBDT05GSUdfTVBDODM0OSB0bwogICAgQ09ORklHX01QQzgzNFggc28gdGhleSBhcmUgbW9yZSBnZW5lcmljLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYWUyNDZkYzZjMTkzN2MyOTEwMTRlYWRkOTBiNmQ0OGM0MzhjN2NiMApBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKYW4gMjUgMTM6NDA6NTUgMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IGFkZCBNUEM4MzJYRU1EUyBhbmQgc2JjODM0OSB0byBNQUtFQUxMCgpjb21taXQgNGRlY2Q4NGU4ZjA0Mjc5YzVjZmZmN2Y4ZTkwNzQ2NWVmOGQ4YTNmYgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKYW4gMjQgMTc6MTg6MzcgMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IHNvcnQgTWFrZWZpbGUgdGFyZ2V0cwoKICAgIHJlb3JkZXJlZCB0YXJnZXRzIGFscGhhYmV0aWNhbGx5Cgpjb21taXQgOTFlMjU3Njk3NzFjMTE2NGVkNjNmZmNhMGFkZDQ5ZjkzNGFlMzM0MwpBdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgpEYXRlOglUdWUgSmFuIDE2IDExOjM4OjE0IDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBVLUJvb3Qgc3VwcG9ydCBmb3IgV2luZCBSaXZlciBTQkM4MzQ5CgogICAgSSd2ZSByZWRvbmUgdGhlIFNCQzgzNDkgc3VwcG9ydCB0byBtYXRjaCBnaXQtY3VycmVudCwgd2hpY2gKICAgIGluY29ycG9yYXRlcyBhbGwgdGhlIE1QQzgzNHggdXBkYXRlcyBmcm9tIEZyZWVzY2FsZSBzaW5jZSB0aGUgMS4xLjYKICAgIHJlbGVhc2UsICBpbmNsdWRpbmcgdGhlIEREUiBjaGFuZ2VzLgoKICAgIEkndmUga2VwdCBhbGwgdGhlIFNCQzgzNDkgZmlsZXMgYXMgcGFyYWxsZWwgYXMgcG9zc2libGUgdG8gdGhlCiAgICBNUEM4MzQ5RU1EUyBvbmVzIGZvciBlYXNlIG9mIG1haW50ZW5hbmNlIGFuZCB0byBhbGxvdyBmb3IgZWFzeQogICAgaW5zcGVjdGlvbiBvZiB3aGF0IHdhcyBjaGFuZ2VkIHRvIHN1cHBvcnQgdGhpcyBib2FyZC4gIEhlbmNlIHRoZSBTQkM4MzQ5CiAgICBVLUJvb3QgaGFzIEZEVCBzdXBwb3J0IGFuZCBldmVyeXRoaW5nIGVsc2UgdGhhdCB0aGUgTVBDODM0OUVNRFMgaGFzLgoKICAgIEZvcnR1bmF0ZWx5IHRoZSBGcmVlc2NhbGUgdXBkYXRlcyBhZGRlZCBzdXBwb3J0IGZvciBib2FyZHMgdXNpbmcgQ1MwLAogICAgYnV0IEkgaGFkIHRvIGNoYW5nZSBzcGRfc2RyYW0uYyB0byBhbGxvdyBmb3IgYm9hcmQgc3BlY2lmaWMgc2V0dGluZ3MgZm9yCiAgICB0aGUgc2RyYW1fY2xrX2NudGwgKGl0IGlzL3dhcyBoYXJkIGNvZGVkIHRvIHplcm8sIGFuZCB0aGF0IHJlbWFpbnMgdGhlCiAgICBkZWZhdWx0IGlmIHRoZSBib2FyZCBkb2Vzbid0IHNwZWNpZnkgYSB2YWx1ZS4pCgogICAgSG9wZWZ1bGx5IHRoaXMgc2hvdWxkIGJlIG1lcmdlYWJsZSBhcy1pcyBhbmQgcmVxdWlyZSBubyB3aGl0ZXNwYWNlCiAgICBjbGVhbnVwcyBvciBzaW1pbGFyLCBidXQgaWYgc29tZXRoaW5nIGRvZXNuJ3QgbWVhc3VyZSB1cCB0aGVuIGxldCBtZQogICAga25vdyBhbmQgSSdsbCBmaXggaXQuCgogICAgVGhhbmtzLAogICAgUGF1bC4KCmNvbW1pdCAwNTAzMWRiNDU2YWIyMjdmM2UzNzUyZjM3YjliODEyYjY1YmI4M2FkCkF1dGhvcjogU2FtIFNvbmcgPHNhbXNvbmdzaHVAeWFob28uY29tLmNuPgpEYXRlOglUaHUgRGVjIDE0IDE5OjAzOjIxIDIwMDYgKzA4MDAKCiAgICBtcGM4M3h4OiBSZW1vdmUgYSByZWR1bmRhbnQgc2VtaWNvbG9uIGluIG1wYzgzNDlpdHguYwoKICAgIEEgcmVkdW5kYW50IHNlbWljb2xvbiBleGlzdGVkIGluIG1wYzgzNDlpdHguYwogICAgc2hvdWxkIGJlIHJlbW92ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogU2FtIFNvbmcgPHNhbXNvbmdzaHVAeWFob28uY29tLmNuPgoKY29tbWl0IGYzNWYzNTgyNDFjNTQ5YmUzZjc1Y2ZlMmVhYTY0MjkxNDI3NWI3YmEKQXV0aG9yOiBKZXJyeSBWYW4gQmFyZW4gPGdlcmFsZC52YW5iYXJlbkBjb21jYXN0Lm5ldD4KRGF0ZToJV2VkIERlYyA2IDIxOjIzOjU1IDIwMDYgLTA1MDAKCiAgICBtcGM4M3h4OiBQdXQgdGhlIHZlcnNpb24gKGFuZCBtYWdpYykgYWZ0ZXIgdGhlIEhSQ1cuCgogICAgUHV0IHRoZSB2ZXJzaW9uIChhbmQgbWFnaWMpIGFmdGVyIHRoZSBIUkNXLiAgVGhpcyBwdXRzIGl0IGluIGEgZml4ZWQKICAgIGxvY2F0aW9uIGluIGZsYXNoLCBub3QgYXQgdGhlIHN0YXJ0IG9mIGZsYXNoIGJ1dCBhcyBjbG9zZSBhcyB3ZSBjYW4gZ2V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEplcnJ5IFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCA0OGFlY2Q5NjkxNzFhNmU5OWE1NWZhZTA0OTMzODU3Nzg3ZjlhNWJkCkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgRGVjIDcgMjE6MTQ6NTEgMjAwNiArMDgwMAoKICAgIG1wYzgzeHg6IEFkZCB0aGUgTVBDODMyWEVNRFMgYm9hcmQgcmVhZG1lCgogICAgQWRkIHRoZSBNUEM4MzJYRU1EUyBib2FyZCByZWFkbWUKCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDI0YzNhY2EzZjEzNThiMTEzZDMyMTVhZGI1NDMzYjE1NmU5OWY3MmIKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBEZWMgNyAyMToxMzoxNSAyMDA2ICswODAwCgogICAgbXBjODN4eDogQWRkIHN1cHBvcnQgZm9yIHRoZSBNUEM4MzJYRU1EUyBib2FyZAoKICAgIFRoaXMgcGF0Y2ggc3VwcG9ydHMgRFVBUlQsIEVUSDMvNCBhbmQgUENJIGV0Yy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGUwODAzMTNjMzIzMjJlMTVhYjVhMThlYjg5NmEyNTI4NThjNTcyODQKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBEZWMgNyAyMToxMTo1OCAyMDA2ICswODAwCgogICAgbXBjODN4eDogc3RyZWFtbGluZSB0aGUgODN4eCBpbW1yIGhlYWQgZmlsZQoKICAgIEZvciBiZXR0ZXIgZm9ybWF0IGFuZCBzdHlsZSwgSSBzdHJlYW1saW5lZCB0aGUgODN4eCBoZWFkIGZpbGVzLAogICAgaW5jbHVkaW5nIGltbWFwXzgzeHguaCBhbmQgbXBjODN4eC5oLiBJbiB0aGUgb2xkIGhlYWQgZmlsZXMsIDEpCiAgICBkdXBsaWNhdGVkIG1hY3JvIGRlZmluaXRpb24gYXBwZWFyIGluIHRoZSBib3RoIGZpbGVzOyAyKSB0aGUgc3RydWN0dXJlCiAgICBvZiBRRSBpbW1yIGlzIGR1cGxpY2F0ZWQgaW4gdGhlIGltbWFwXzgzeHguaCBhbmQgaW1tYXBfcWUuaDsgMykgVGhlCiAgICBtYWNybyBkZWZpbml0aW9uIHB1dCBpbnNpZGUgdGhlIGVhY2ggc3RydWN0dXJlLiBTbywgSSBjbGVhbmVkIHVwIHRoZQogICAgc3RydWN0dXJlIG9mIFFFIGltbXIgZnJvbSBpbW1hcF84M3h4LmgsIGRlbGV0ZWQgdGhlIGR1cGxpY2F0ZWQgc3R1ZmYgYW5kCiAgICBtb3ZlZCB0aGUgbWFjcm8gZGVmaW5pdGlvbiB0byBtcGM4M3h4LmgsIEp1c3QgbGlrZSBNUEM4MjYwLgoKICAgIENIQU5HRUxPRwoKICAgICpzdHJlYW1saW5lIHRoZSA4M3h4IGltbXIgaGVhZCBmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkZGQwMjQ5MmY0M2RiNTQwOGY1YWI5ZjgyM2IwYmE1Nzk2ZTI4ZWYwCkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgRGVjIDYgMTE6Mzg6MTcgMjAwNiArMDgwMAoKICAgIG1wYzgzeHg6IEZpeCB0aGUgVUVDIGRyaXZlciBidWcgb2YgUUUKCiAgICBUaGUgcGF0Y2ggcHJldmVudHMgdGhlIEdDQyB0b29sIGNoYWluIGZyb20gc3RyaXBpbmcgdXNlZnVsIGNvZGUgZm9yCiAgICBvcHRpbWl6YXRpb24uIEl0IHdpbGwgbWFrZSBVRUMgZXRoZXJuZXQgZHJpdmVyIHdvcmthYmxlLCBPdGhlcndpc2UgdGhlCiAgICBVRUMgd2lsbCBmYWlsIGluIHR4IHdoZW4geW91IGFyZSB1c2luZyBnY2M0LnguIGJ1dCB0aGUgZHJpdmVyIGNhbiB3b3JrCiAgICB3aGVuIHVzaW5nIGdjYzMuNC4zLgoKICAgIENIQU5HRUxPRwoKICAgICpQcmV2ZW50IHRoZSBHQ0MgZnJvbSBzdHJpcGluZyBjb2RlIGZvciBvcHRpbWl6YXRpb24sIE90aGVyd2lzZSB0aGUgVUVDCiAgICB3aWxsIHR4IGZhaWxlZCB3aGVuIHlvdSBhcmUgdXNpbmcgZ2NjNC54LgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYmE1OGU0YzlhOWE5MTdjZTc5NWRkMTZkNGVjOGQ1MTVmOWY3YWEzNQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE1hciAxIDIxOjExOjM2IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIFVwZGF0ZSBBTUNDIEthdG1haSA0NDBTUGUgZXZhbCBib2FyZCBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCB1cGRhdGVzIHRoZSByZWNlbnRseSBhZGRlZCBLYXRtYWkgYm9hcmQgc3VwcG9ydC4gVGhlIGJpZ2dlc3QKICAgIGNoYW5nZSBpcyB0aGUgc3VwcG9ydCBvZiBFQ0MgRElNTSBtb2R1bGVzIGluIHRoZSA0NDBTUChlKSBTUEQgRERSMgogICAgZHJpdmVyLgoKICAgIFBsZWFzZSBub3RlLCB0aGF0IHN0aWxsIHNvbWUgcHJvYmxlbXMgYXJlIGxlZnQgd2l0aCBzb21lIG1lbW9yeQogICAgY29uZmlndXJhdGlvbnMuIFNlZSB0aGUgZHJpdmVyIGZvciBtb3JlIGRldGFpbHMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDhjMTIwNDVhM2IwNmM1YjY2NzVkM2ZlMDJmYmM5ZjU0NTk4ODEyOWEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBNYXIgMSAwNzowMzoyNSAyMDA3ICswMTAwCgogICAgW1BBVENIXSBJMkM6IEFkZCBtaXNzaW5nIGRlZmF1bHQgQ0ZHX1JUQ19CVVNfTlVNICYgQ0ZHX0RUVF9CVVNfTlVNCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGNjYmM3MDM2NjQ4ZTQ2NTY5N2NhMjk4YmE1MWUwZTc2ZGRhMzUyYTAKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJV2VkIEZlYiAyOCAwMToyODo1MyAyMDA3ICswMTAwCgogICAgU0MzOiBmaXggdHlwbyBpbiBkZWZhdWx0IGVudmlyb25tZW50Cgpjb21taXQgZTM0NDU2OGIxYjQ2YWY4NWVjMzJkODE1NTg2ZjkxYmMxMTVkNjIyMwpBdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CkRhdGU6CVR1ZSBGZWIgMjcgMjA6MTU6MzAgMjAwNyArMDMwMAoKICAgIE1DQzIwMDogRml4ZXMgZm9yIHVwZGF0ZSBwcm9jZWR1cmUKCiAgICAtIGZpeCBsb2dpYyBlcnJvciBpbiBpbWFnZSB0eXBlIGhhbmRsaW5nCiAgICAtIG1ha2Ugc3VyZSBmaWxlIHN5c3RlbSBpbWFnZXMgKGNyYW1mcyBldGMuKSBnZXQgc3RvcmVkIGluIGZsYXNoCiAgICAgIHdpdGggaW1hZ2UgaGVhZGVyIHN0cmlwcGVkIHNvIHRoZXkgY2FuIGJlIG1vdW50ZWQgdGhyb3VnaCBNVEQKCmNvbW1pdCA3NDM1NzExNDViMzcxODI3NTdkNGU2ODhhNzc4NjBiMzZlZTc3NTczCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVR1ZSBGZWIgMjcgMTQ6MjY6MDQgMjAwNyArMDEwMAoKICAgIE1pbm9yIGNvZGUgY2xlYW51cC4KCmNvbW1pdCA2MzhkZDE0NThiYmRjMmE1NWQ0YjllMjVjNWM0ZTFmODM4YTVkYzcyCkF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KRGF0ZToJVHVlIEZlYiAyNyAxMjo0MDoxNiAyMDA3ICswMzAwCgogICAgTUNDMjAwIHVwZGF0ZSAtIGFkZCBMQ0QgUHJvZ3Jlc3MgSW5kaWNhdG9yCgpjb21taXQgNmM3Y2FjOGM0ZmNlMGVhMmJmOGUxNWVkODY1OGQ4Nzk3NDE1NWI0NApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEZlYiAyMiAwNzo0MzozNCAyMDA3ICswMTAwCgogICAgW1BBVENIXSBnZXRfZGV2KCkgbm93IHVuY29uZGl0aW9uYWxseSB1c2VzIG1hbnVhbCByZWxvY2F0aW9uCgogICAgU2luY2UgdGhlIHJlbG9jYXRpb24gZml4IGlzIG5vdCBpbmNsdWRlZCB5ZXQgYW5kIHdlJ3JlIG5vdCBzdXJlIGhvdwogICAgaXQgd2lsbCBiZSBhZGRlZCwgdGhpcyBwYXRjaCByZW1vdmVzIGNvZGUgdGhhdCByZXF1aXJlZCByZWxvY2F0aW9uCiAgICB0byBiZSBmaXhlZCBmb3Igbm93LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4Mjc0ZWMwYmQwMWQyZmViMmM3ZjA5NWViYTc4ZDQyZWEwMDk3OThiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgRmViIDIyIDA3OjQwOjIzIDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIENoYW5nZSBzeXN0ZW1hY2UgZHJpdmVyIHRvIHNlbGVjdCA4ICYgMTZiaXQgbW9kZQoKICAgIEFzIHN1Z2dlc3RlZCBieSBHcmFudCBMaWtlbHkgdGhpcyBwYXRjaCBlbmFibGVzIHRoZSBYaWxpbnggU3lzdGVtQUNFCiAgICBkcml2ZXIgdG8gc2VsZWN0IDggb3IgMTZiaXQgbW9kZSB1cG9uIHN0YXJ0dXAuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDNhMTk3YjJmZTQ5ZDZmYTAzOTc4ZTYwYWYyMzk0ZWZlOWM3MGI1MjcKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgRmViIDIxIDE2OjUyOjMxIDIwMDcgKzAxMDAKCiAgICBbUEFUQ0ggdjNdIEFkZCBzeW5jIHRvIGVuc3VyZSBmbGFzaF93cml0ZV9jbWQgaXMgZnVsbHkgZmluaXNoZWQKCiAgICBTb21lIENQVXMgbGlrZSBQUEMsIEJMQUNLRklOIG5lZWQgc3luYygpIHRvIGVuc3VyZSBjZmkgZmxhc2ggd3JpdGUgY29tbWFuZAogICAgaXMgZnVsbHkgZmluaXNoZWQuIFRoZSBzeW5jKCkgaXMgZGVmaW5lZCBpbiBlYWNoIENQVSdzIGlvLmggZmlsZS4gRm9yCiAgICB0aG9zZSBDUFVzIHdoaWNoIGRvIG5vdCBuZWVkIHN5bmMgZm9yIG5vdywgYSBkdW1teSBzeW5jKCkgaXMgZGVmaW5lZCBpbgogICAgdGhlaXIgaW8uaCBhcyB3ZWxsLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZGEwNDk5NWM3ZGM2NzcyMDEzYTlhMGRjNWM3NjdmMTkwYzQwMjQ3OApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEZlYiAyMSAxMzo0NDozNCAyMDA3ICswMTAwCgogICAgW1BBVENIXSBGaXggcHJvYmxlbSBpbiBzeXN0ZW1hY2UgZHJpdmVyIChhY2Vfd3JpdGV3IGluc3RlYWQgb2YgYWNlX3dyaXRlKQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3NTFiYjU3MTA3ZDc4OTc4YWUwOGU2OTdjM2RlYmE4MTZmNWJlMDkxCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgRmViIDIwIDEzOjIxOjU3IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIEZpeCByZWxvY2F0aW9uIHByb2JsZW0gd2l0aCAibmV3IiBnZXRfZGV2KCkgZnVuY3Rpb24KCiAgICBUaGlzIHBhdGNoIGVuYWJsZXMgdGhlICJuZXciIGdldF9kZXYoKSBmdW5jdGlvbiBmb3IgYmxvY2sgZGV2aWNlcwogICAgaW50cm9kdWNlZCBieSBHcmFudCBMaWtlbHkgdG8gYmUgdXNlZCBvbiBzeXN0ZW1zIHRoYXQgc3RpbGwgc3VmZmVyCiAgICBmcm9tIHRoZSByZWxvY2F0aW9uIHByb2JsZW1zIChtYW51YWwgcmVsb2NhdGlvbiBuZWVkZSBiZWNhdXNlIG9mCiAgICBwcm9ibGVtcyB3aXRoIGxpbmtlciBzY3JpcHQpLgoKICAgIEhvcGVmdWxseSB3ZSBjYW4gcmVzb2x2ZSB0aGlzIHJlbG9jYXRpb24gaXNzdWUgc29vbiBmb3IgYWxsIHBsYXRmb3JtCiAgICBzbyB3ZSBkb24ndCBuZWVkIHRoaXMgYWRkaXRpb25hbCBjb2RlIGFueW1vcmUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGQ5M2UyMjEyZjk2MjY2OGIzZGNlMDkxZmY1ZWRjMzNmMjM0N2ZlMzcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBGZWIgMjAgMTM6MTc6NDIgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gVXBkYXRlIFN5c3RlbUFDRSBkcml2ZXIgZm9yIDE2Yml0IGFjY2VzcwoKICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBzb21lIHByb2JsZW1zIHdoZW4gdGhlIFhpbGlueCBTeXN0ZW1BQ0UgZHJpdmVyCiAgICBpcyB1c2VkIHdpdGggMTZiaXQgYWNjZXNzIG9uIGFuIGJpZyBlbmRpYW4gcGxhdGZvcm0gKGxpa2UgdGhlCiAgICBBTUNDIEthdG1haSkuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDg3NGJiN2I4OGZlOWI0NjQ4ZTEyODhhMzg3YWYyZTMxMDE0YTcyZjMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBGZWIgMjAgMTM6MTU6NDAgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gQ2xlYW4gdXAgS2F0bWFpICg0NDBTUGUpIGxpbmtlciBzY3JpcHQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNDc0NWFjYWExYTYwM2I2N2Y2YjliNzk3MDM2NWViYWRkN2Q2NTg2ZgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEZlYiAyMCAxMDo1NzowOCAyMDA3ICswMTAwCgogICAgW1BBVENIXSBBZGQgc3VwcG9ydCBmb3IgdGhlIEFNQ0MgS2F0bWFpICg0NDBTUGUpIGV2YWwgYm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMGRjMDE4ZWNlMTNlZmZjNjg5ZTQ3NDc5ZWE5ZWJmMWM5OGE1MDdmNQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEZlYiAyMCAxMDo1MToyNiAyMDA3ICswMTAwCgogICAgW1BBVENIXSBJMkM6IEFkZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBJMkMgYnVzc2VzIGZvciBSVEMgJiBEVFQKCiAgICBUaGlzIHBhdGNoIHN3aXRjaGVzIHRvIHRoZSBkZXNpcmVkIEkyQyBidXMgd2hlbiB0aGUgZGF0ZS9kdHQKICAgIGNvbW1hbmRzIGFyZSBjYWxsZWQuIFRoaXMgY2FuIGJlIGNvbmZpZ3VyZWQgdXNpbmcgdGhlCiAgICBDRkdfUlRDX0JVU19OVU0gYW5kL29yIENGR19EVFRfQlVTX05VTSBkZWZpbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0MDM3ZWQzYjYzOTIzY2ZjZWMyN2Y3ODRhODkwNTdjM2NiYWJjZWRiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgRmViIDIwIDEwOjQzOjM0IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIFBQQzR4eDogQWRkIDQ0MFNQKGUpIEREUjIgU1BEIERJTU0gc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgRERSMiBjb250cm9sbGVyIHVzZWQgb24gdGhlCiAgICA0NDBTUCBhbmQgNDQwU1BlLiBJdCBpcyB0ZXN0ZWQgb24gdGhlIEthdG1haSAoNDQwU1BlKSBldmFsCiAgICBib2FyZCBhbmQgd29ya3MgZmluZSB3aXRoIHRoZSBmb2xsb3dpbmcgRElNTSBtb2R1bGVzOgoKICAgIC0gQ29yc2FpciBDTTJYNTEyLTU0MDBDNCAoNTEyTUJ5dGUgcGVyIERJTU0pCiAgICAtIEtpbmdzdG9uIFZhbHVlUkFNIEtWUjY2N0QyTjUvNTEyICg1MTJNQnl0ZSBwZXIgRElNTSkKICAgIC0gS2luZ3N0b24gVmFsdWVSQU0gS1ZSNjY3RDJONUsyLzJHICgxR0J5dGUgcGVyIERJTU0pCgogICAgVGhpcyBwYXRjaCBhbHNvIGFkZHMgdGhlIG5pY2UgZnVuY3Rpb25hbGl0eSB0byBkeW5hbWljYWxseQogICAgY3JlYXRlIHRoZSBUTEIgZW50cmllcyBmb3IgdGhlIFNEUkFNICh0bGIuYykuIFNvIHdlIHNob3VsZAogICAgbmV2ZXIgcnVuIGludG8gc3VjaCBwcm9ibGVtcyB3aXRoIHdyb25nICh0b28gc2hvcnQpIFRMQgogICAgaW5pdGlhbGl6YXRpb24gYWdhaW4gb24gdGhlc2UgcGxhdGZvcm1zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzNmQ4MzBjOTgzMDM3OTA0NWY1ZGFhOWY1NDJhYzFjOTkwYzcwMDY4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgRmViIDIwIDEwOjM1OjQyIDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIFBQQzR4eDogU3BsaXQgNHh4IFNQRCBTRFJBTSBpbml0IHJvdXRpbmVzIGludG8gMiBmaWxlcwoKICAgIFNpbmNlIHRoZSBleGlzdGluZyA0eHggU1BEIFNEUkFNIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzIGZvciB0aGUKICAgIDQwNSBTRFJBTSBjb250cm9sbGVyIGFuZCB0aGUgNDQwIEREUiBjb250cm9sbGVyIGRvbid0IGhhdmUgbXVjaCBpbgogICAgY29tbW9uIHRoaXMgcGF0Y2ggc3BsaXRzIGJvdGggZHJpdmVycyBpbnRvIGRpZmZlcmVudCBmaWxlcy4KCiAgICBUaGlzIGlzIGluIHByZXBhcmF0aW9uIGZvciB0aGUgNDQwIEREUjIgY29udHJvbGxlciBzdXBwb3J0ICg0NDBTUC9lKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNzliMmQwYmIyZWFlMDk2MDI0NDhmN2E3Y2I1NjUzMGQyZjMxZTZjNgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEZlYiAyMCAxMDoyNzowOCAyMDA3ICswMTAwCgogICAgW1BBVENIXSBQUEM0eHg6IEFkZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBJMkMgYnVzc2VzCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIG11bHRpcGxlIEkyQyBidXNzZXMgb24gdGhlIFBQQzR4eAogICAgcGxhdGZvcm1zLiBEZWZpbmUgQ09ORklHX0kyQ19NVUxUSV9CVVMgaW4gdGhlIGJvYXJkIGNvbmZpZyBmaWxlCiAgICB0byBtYWtlIHVzZSBvZiB0aGlzIGZlYXR1cmUuCgogICAgSXQgYWxzbyBtZXJnZXMgdGhlIDQwNSBhbmQgNDQwIGkyYyBoZWFkZXIgZmlsZXMgaW50byBvbmUgY29tbW9uCiAgICBmaWxlIDR4eF9pMmMuaC4KCiAgICBBbHNvIHRoZSA0eHggaTJjIHJlc2V0IHByb2NlZHVyZSBpcyByZXdvcmtlZCBzaW5jZSBJIGV4cGVyaWVuY2VkCiAgICBzb21lIHByb2JsZW1zIHdpdGggdGhlIGZpcnN0IGFjY2VzcyBvbiB0aGUgNDQwU1BlIEthdG1haSBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZWI4NjdhNzYyMzhmYjM4ZTk1MmMzNzg3MWIxNmQwZDdmZDYxYzk1ZgpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIEZlYiAyMCAwOTowNTo0NSAyMDA3ICswMTAwCgogICAgW1BBVENIIDlfOV0gVXNlICJ2b2lkICoiIG5vdCAidW5zaWduZWQgbG9uZyAqIiBmb3IgYmxvY2sgZGV2IHJlYWRfd3JpdGUgYnVmZmVyIHBvaW50ZXJzCgogICAgQmxvY2sgZGV2aWNlIHJlYWQvd3JpdGUgaXMgYW5vbnltb3VzIGRhdGE7IHRoZXJlIGlzIG5vIG5lZWQgdG8gdXNlIGEKICAgIHR5cGVkIHBvaW50ZXIuICB2b2lkICogaXMgZmluZS4gIEFsc28gYWRkIGEgaG9vayBmb3IgYmxvY2tfcmVhZCBmdW5jdGlvbnMKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgNTM3NThmYTIwZTkzNWNjODdlZWIwNTE5ZWQzNjVkZjc1M2E2ZjI4OQpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIEZlYiAyMCAwOTowNTozOCAyMDA3ICswMTAwCgogICAgW1BBVENIIDhfOV0gQWRkIGJsb2NrX3dyaXRlIGhvb2sgdG8gYmxvY2tfZGV2X2Rlc2NfdAoKICAgIFByZXBhcmF0aW9uIGZvciBmdXR1cmUgcGF0Y2hlcyB3aGljaCBzdXBwb3J0IGJsb2NrIGRldmljZSB3cml0aW5nCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IGY0ODUyZWJlNmNhOTQ2YTUwOTY2N2ViNjhiZTQyMDI2ZjgzN2JlNzYKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBGZWIgMjAgMDk6MDU6MzEgMjAwNyArMDEwMAoKICAgIFtQQVRDSCA3XzldIFJlcGxhY2UgYWNlX3JlYWR3X2FjZV93cml0ZWIgZnVuY3Rpb25zIHdpdGggbWFjcm9zCgogICAgUmVnaXN0ZXIgcmVhZC93cml0ZSBkb2VzIG5vdCBuZWVkIHRvIGJlIHdyYXBwZWQgaW4gYSBmdWxsIGZ1bmN0aW9uLiAgVGhlCiAgICBwYXRjaCByZXBsYWNlcyB0aGVtIHdpdGggbWFjcm9zLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCAzYThjZTlhZjZmY2I1NzQ0YTc4NTFiNDQ0MGMwNzY4OGFjYzQwODQ0CkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglUdWUgRmViIDIwIDA5OjA1OjIzIDIwMDcgKzAxMDAKCiAgICBbUEFUQ0ggNl85XSBNb3ZlIGNvbW1vbl9jbWRfYWNlLmMgdG8gZHJpdmVyc19zeXN0ZW1hY2UuYwoKICAgIFRoZSBjb2RlIGluIHRoaXMgZmlsZSBpcyBub3QgYSBjb21tYW5kOyBpdCBpcyBhIGRldmljZSBkcml2ZXIuICBQdXQgaXQgaW4KICAgIHRoZSBjb3JyZWN0IHBsYWNlLglUaGVyZSBhcmUgemVybyBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhpcyBwYXRjaCwgaXQKICAgIG9ubHkgbW92ZXMgdGhlIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDk4NDYxOGYzZTc3OTRjNzgzZWM4ZDE1MTFlNzRjNmVlMmQ2OWJmZTQKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBGZWIgMjAgMDk6MDU6MTYgMjAwNyArMDEwMAoKICAgIFtQQVRDSCA1XzldIFdoaXRlc3BhY2UgZml4dXAgb24gY29tbW9uX2NtZF9hY2UuYyAodXNpbmcgTGluZGVudCkKCiAgICBUaGlzIHBhdGNoIGlzIGluIHByZXBhcmF0aW9uIG9mIGFkZGl0aW9uYWwgY2hhbmdlcyB0byB0aGUgc3lzYWNlIGRyaXZlci4KICAgIE1heSBhcyB3ZWxsIHRha2UgdGhpcyBvcHBvcnR1bml0eSB0byBmaXh1cCB0aGUgaW5jb25zaXN0ZW50IHdoaXRlc3BhY2Ugc2luY2UKICAgIHRoaXMgZmlsZSBpcyBhYm91dCB0byB1bmRlcmdvIG1ham9yIGNoYW5nZXMgYW55d2F5LgoKICAgIFRoZXJlIGFyZSB6ZXJvIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGlzIHBhdGNoLiAgSXQgb25seSBjbGVhbnMgdXAgdGhlCiAgICB0aGUgd2hpdGVzcGFjZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgODBiYTk4MWQ5NDA0NzFmZTdlNTM5ZTY0ZmEzZDJiZDgwMDAyYmVkYQpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIEZlYiAyMCAwOTowNTowNyAyMDA3ICswMTAwCgogICAgW1BBVENIIDRfNF0gUmVtb3ZlIGxvY2FsIGltcGxlbWVudGF0aW9uIG9mIGlzcHJpbnQoKSBpbiBmdF9idWlsZC5jCgogICAgaXNwcmludCBpcyBhbHJlYWR5IGRlZmluZWQgaW4gY3R5cGUuYwoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCBjOTVjNDI4MGQ3NTFjYTA3OGMyZmY1ODIyOGQyZjJiNDRjY2YwNjAwCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglUdWUgRmViIDIwIDA5OjA1OjAwIDIwMDcgKzAxMDAKCiAgICBbUEFUQ0ggM185XSBNb3ZlIGJ1ZmZlciBwcmludCBjb2RlIGZyb20gbWQgY29tbWFuZCB0byBjb21tb24gZnVuY3Rpb24KCiAgICBQcmludGluZyBhIGJ1ZmZlciBpcyBhIGRhcm4gdXNlZnVsIHRoaW5nLiAgTW92ZSB0aGUgYnVmZmVyIHByaW50IGNvZGUKICAgIGludG8gcHJpbnRfYnVmZmVyKCkgaW4gbGliX2dlbmVyaWMvCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDk5YjBmMGZkM2ZiZjI1NzJhZTFhNzcyM2RkOTBjZmZjOGU4NTEzMGEKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBGZWIgMjAgMDk6MDQ6NTIgMjAwNyArMDEwMAoKICAgIFtQQVRDSCAyXzRdIFVzZSBjb25maWcuaCwgbm90IHhwYXJhbWV0ZXJzLmgsIGZvciB4aWxpbnggdGFyZ2V0cwoKICAgIENoYW5nZSB0aGUgeGlsaW54IGRldmljZSBkcml2ZXJzIGFuZCBib2FyZCBjb2RlIHRvIGluY2x1ZGUgY29uZmlnLmgKICAgIGluc3RlYWQgb2YgeHBhcmFtZXRlcnMuaCBkaXJlY3RseS4JY29uZmlnLmggYWx3YXlzIGluY2x1ZGVzIHRoZQogICAgY29ycmVjdCB4cGFyYW1ldGVycyBmaWxlLiAgVGhpcyBjaGFuZ2UgcmVkdWNlcyB0aGUgcG9zaWJpbGl0eSBvZgogICAgaW5jbHVkaW5nIHRoZSB3cm9uZyBmaWxlIHdoZW4gYWRkaW5nIGEgbmV3IHhpbGlueCBib2FyZCBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDczNWRkOTdiMWIyMGU3NzdkMDU5YzdiMzg5ZmU5ZDcwY2QzZjgwYzcKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBGZWIgMjAgMDk6MDQ6MzQgMjAwNyArMDEwMAoKICAgIFtQQVRDSCAxXzRdIE1lcmdlIGNvbW1vbiBnZXRfZGV2KCkgcm91dGluZXMgZm9yIGJsb2NrIGRldmljZXMKCiAgICBFYWNoIG9mIHRoZSBmaWxlc3lzdGVtIGRyaXZlcnMgZHVwbGljYXRlIHRoZSBnZXRfZGV2IHJvdXRpbmUuICBUaGlzIGNoYW5nZQogICAgbWVyZ2VzIHRoZW0gaW50byBhIHNpbmdsZSBmdW5jdGlvbiBpbiBwYXJ0LmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgZjVmY2MzYzIwYjY1NTU0ZTk4YTE2NTU0MmMzNmVlMGM2MTBhMmQ4MQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgpEYXRlOglNb24gRmViIDE5IDIzOjA5OjUxIDIwMDcgKzAxMDAKCiAgICBNQ0MyMDA6IFNvZnR3YXJlIFVwZGF0ZXI6IGFsbG93IGJvdGggInJhbWRpc2siIGFuZCAiZmlsZXN5c3RlbSIgdHlwZXMKICAgIGFzIHJvb3QgZmlsZSBzeXN0ZW0gaW1hZ2VzLgoKY29tbWl0IDQ4OWM2OTZhZTcyMTEyMTg5NjFkMTU5ZTQzZTcyMmQ3NGMzNmZjYmMKQXV0aG9yOiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgpEYXRlOglXZWQgRmViIDE0IDE0OjMwOjI4IDIwMDcgKzAzMDAKCiAgICBNQ0MyMDA6IEV4dGVuc2lvbnMgdG8gU29mdHdhcmUgVXBkYXRlIE1lY2hhbmlzbQoKICAgIFVwZGF0ZSAvIGV4dGVuZCBTb2Z0d2FyZSBVcGRhdGUgTWVjaGFuaXNtIGZvciBNQ0MyMDAgYm9hcmQ6CgogICAgLSBBZGQgc3VwcG9ydCBmb3Igcm9vdGZzIGltYWdlIGFkZGVkLiBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGVzCiAgICAgICJyb290ZnNfc3QiIGFuZCAicm9vdGZzX25kIiBjYW4gYmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdAogICAgICB2YWx1ZXMgb2YgdGhlIGltYWdlIHN0YXJ0IGFuZCBlbmQuCiAgICAtIFJlbW92ZSBleGNlc3NpdmUga2V5IGNoZWNrIGNvZGUuCiAgICAtIENvZGUgY2xlYW51cC4KCmNvbW1pdCA0YmUyM2ExMmYyM2YxMzcyNjM0ZWRjMzIxNTEzN2IwOTc2OGI3OTQ5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gRmViIDE5IDA4OjIzOjE1IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIFVwZGF0ZSBTZXF1b2lhIEVCQyBjb25maWd1cmF0aW9uIChOT1IgRkxBU0gpCgogICAgQXMgc3BvdHRlZCBieSBNYXR0aGlhcyBGdWNocywgdGhlIFJFQURZIGlucHV0IHNob3VsZCBub3QgYmUKICAgIGVuYWJsZWQgZm9yIHRoZSBOT1IgRkxBU0ggb24gdGhlIFNlcXVvaWEgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDI2MDVlOTBiZjY3NmQ0ODEyM2FmZTU3MTlhODQ2ZDJiNTJiMjRhYWMKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAcG9sbHV4LmRlbnguZGU+CkRhdGU6CUZyaSBGZWIgMTYgMDc6NTc6NDIgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGp1cGl0ZXIgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgNDk3ZDAxMmU1YmUwMTk0ZTEwODQwNzNkMDA4MWViMWE4NDQ3OTZiMgpBdXRob3I6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBwb2xsdXguZGVueC5kZT4KRGF0ZToJTW9uIEZlYiAxMiAxMzoxMTo1MCAyMDA3ICswMTAwCgogICAgTFBDMjI5MjogcGF0Y2ggZnJvbSBTaWVtZW5zLgoKY29tbWl0IGIwYjFhOTIwYWViZWFkMGQ0NDE0NmU3MzY3NmFlOWQ4MGZmZmM4ZTIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVNhdCBGZWIgMTAgMDg6NDk6MzEgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gQWRkIG1pc3NpbmcgcDNteC5oIGZpbGUgdG8gcmVwb3NpdG9yeSAodXBzKQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1M2Q0YTQ5ODNmYjliM2FlNWY3YjJmMTBjNTk5YWNhMmIxYjQwMzRhCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJRnJpIEZlYiA5IDEwOjQ1OjQyIDIwMDcgKzAxMDAKCiAgICBbTW90aW9uLVBST10gUHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgdGhlIE1vdGlvbi1QUk8gYm9hcmQuCgpjb21taXQgNWE3NTNmOThjNmEwMWJkMWM2MWE5YTNmOTVlODMyOWEzNWY2Mjk5NApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEZlYiA3IDE2OjUxOjA4IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIFVwZGF0ZSBzb21lIEFNQ0MgNHh4IGJvYXJkIGNvbmZpZyBmaWxlcyAoc2V0IGluaXRyZF9oaWdoKQoKICAgIFNvbWUgYm9hcmRzIHRoYXQgY2FuIGhhdmUgbW9yZSB0aGFuIDc2OE1CeXRlcyBvZiBTRFJBTSBuZWVkIHRvCiAgICBzZXQgImluaXRyZF9oaWdoIiwgc28gdGhhdCB0aGUgaW5pdHJkIGNhbiBiZSBhY2Nlc3NlZCBieSB0aGUKICAgIExpbnV4IGtlcm5lbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNzM3MmNhNjgyMjc5MzBkMDNjZmZhNTQ4MzEwNTI0Y2FkNWI5NjczMwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEZlYiAyIDEyOjQ0OjIyIDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIENvcnJlY3RseSBkaXNwbGF5IFBDSSBhcmJpdGVyIGVuLS9kaXNhYmxlZCBvbiBzb21lIDR4eCBib2FyZHMKCiAgICBQcmV2aW91c2x5IHRoZSBzdHJhcHBpbmcgRENSL1NEUiB3YXMgcmVhZCB0byBkZXRlcm1pbmUgaWYgdGhlIGludGVybmFsIFBDSQogICAgYXJiaXRlciBpcyBlbmFibGVkIG9yIG5vdC4gVGhpcyBzdHJhcHBpbmcgYml0IGNhbiBiZSBvdmVycmlkZGVuLCBzbyBub3cKICAgIHRoZSBjdXJyZW50IHN0YXR1cyBpcyByZWFkIGZyb20gdGhlIGNvcnJlY3QgRENSL1NEUiByZWdpc3Rlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMmFhNTRmNjUxYTQyZDE5ODY3MzMxOGYwN2EyMGM4OWE0M2U0ZDE5NwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEZlYiAyIDEyOjQyOjA4IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIENoYW5nZSBjb25maWd1cmF0aW9uIG91dHB1dCBvZiBTeWNhbW9yZSwgWWVsbG93c3RvbmUgJiBSYWluaWVyCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDIzNzQ0ZDZiNWJmMTc1OTJlYjZhMGVmNGYzMThmNjA4OWY1NTk5M2IKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBGZWIgMSAxMzoyMjo0MSAyMDA3ICswMTAwCgogICAgW1BBVENIXSBSZW1vdmUgUENJLVBOUCBjb25maWd1cmF0aW9uIGZyb20gU2VxdW9pYS9SYWluaWVyIGNvbmZpZyBmaWxlCgogICAgV2hlbiBQQ0kgUE5QIGlzIGVuYWJsZWQgdGhlIHBjaSBwbnAgY29uZmlndXJhdGlvbiByb3V0aW5lIGlzIGNhbGxlZAogICAgd2hpY2ggc2V0cyB0aGUgUENJX0NBQ0hFX1NJWkVfTElORSB0byA4LiBUaGlzIHNlZW1zIHRvIGdlbmVyYXRlIHNvbWUKICAgIHByb2JsZW1zIHdpdGggc29tZSBQQ0kgY2FyZHMuIEZvciBub3cgZGlzYWJsZSB0aGUgUENJIFBOUCBjb25maWd1cmF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyOTAyZmFkYWRlM2JlNzY1OTQ2N2U4ZDA3NDA0OGM2YjcwNjhmNWMwCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDMxIDE2OjU2OjEwIDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIFVwZGF0ZSA0NDBFUHgvNDQwR1J4IGNwdSBkZXRlY3Rpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZDVlYTI4N2IwMmE2OTQ1YzM5Nzc0MTBlMzY0YTg3OWRkMWE1NTVjOApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEphbiAzMSAxNjozODowNCAyMDA3ICswMTAwCgogICAgW1BBVENIXSBVcGRhdGUgZXNkIGNwY2k1MjAwIGZpbGVzCgogICAgU2lnbmVkLW9mZi1ieTogUmVpbmhhcmQgQXJsdCA8cmVpbmhhcmQuYXJsdEBlc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDhiN2QxZjBhYjdkN2M0ZmUzMTYwYmJmNzRhN2U5NjkwZDlmM2EzYWIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBKYW4gMzEgMTY6Mzc6MzQgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gQWRkIHN1cHBvcnQgZm9yIGVzZCBtZWNwNTIwMCBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IFJlaW5oYXJkIEFybHQgPHJlaW5oYXJkLmFybHRAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCA3MWE0ZTVmZGE4YjYwMDQ0YWI5ZjQ2MDY5ZmExY2ZhMjZiZGQwN2ZmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDMxIDEyOjM4OjUwIDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIFJlbW92ZSB1bm5lY2Nlc3NhcnkgeWVsbG93c3RvbmUgYm9hcmQgY29uZmlnIGZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZTgwMjU5NGI2ZmExYjE2NjMwODgyMGMyNzZiOTZkYzBkN2NjNzMxYwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEphbiAzMCAxNzowNjoxMCAyMDA3ICswMTAwCgogICAgW1BBVENIXSBVcGRhdGUgU2VxdW9pYSAoNDQwRVB4KSBjb25maWcgZmlsZQoKICAgIFRoZSBjb25maWcgZmlsZSBub3cgaGFuZGxlcyB0aGUgMm5kIHRhcmdldCwgdGhlIFJhaW5pZXIgKDQ0MEdSeCkKICAgIGV2YWx1YXRpb24gYm9hcmQgYmV0dGVyLiBBZGRpdGlvbmFsbHkgdGhlIFBQQyBpbnB1dCBjbG9jayB3YXMKICAgIGFkanVzdGVkIHRvIG1hdGNoIHRoZSBjb3JyZWN0IHZhbHVlIG9mIDMzLjAgTUh6LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3MDAyMDBjNjdlNzNiODM3NTE0MThhYmU3ODE1ODQwZGNhOGZkNmNiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgSmFuIDMwIDE3OjA0OjE5IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIE1lcmdlIFlvc2VtaXRlICYgWWVsbG93c3RvbmUgYm9hcmQgcG9ydHMKCiAgICBOb3cgdGhlIEFNQ0MgZXZhbCBib2FyZHMgWW9zZW1pdGUgKDQ0MEVQKSBhbmQgWWVsbG93c3RvbmUgKDQ0MEdSKQogICAgc2hhcmUgb25lIGNvbmZpZyBmaWxlIGFuZCBhbGwgYm9hcmQgc3BlY2lmaWMgZmlsZXMuIFRoaXMgd2F5IHdlCiAgICBkb24ndCBoYXZlIHRvIG1haW50YWluIHR3byBkaWZmZXJlbnQgc2V0cyBvZiBmaWxlcyBmb3IgbmVhcmx5CiAgICBpZGVudGljYWwgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxYmJmNWVhZTMyMmY1ZjFmNjQyN2VjYzNhYzEzYTBjYjdkYmE4YWQ2CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgSmFuIDMwIDE1OjAxOjQ5IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIFVwZGF0ZSBQcm9kcml2ZSBTQ1BVIChQRE5CMyB2YXJpYW50KSBib2FyZAoKICAgIFNDUFUgZG9lc24ndCB1c2UgcmVkdW5kYW50IGVudmlyb25tZW50IGluIGZsYXNoLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2MzA0NDMwZWQ2NDJlYThmYTE1YzllNWFmOTY1YWMyZTAzM2VlYzQ1CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgSmFuIDMwIDEyOjUxOjA3IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIGFscHI6IFVwZGF0ZSBhbHByIGJvYXJkIGNvbmZpZyBmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGY4ZGI4NGYxMzJiMWUzMzVmMjBmOTYxMzhhMWYwOWVkOTdiMDg2NjQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJVHVlIEphbiAzMCAwMDo1MDo0MCAyMDA3ICswMTAwCgogICAgTFBDMjI5MiBTT0RJTU0gcG9ydCBjb2Rpbmcgc3R5bGUgY2xlYW51cC4KCmNvbW1pdCA2YmQyNDQ3ZWU0N2VlMjNjMThkMmIzYzdjY2Q1YTIwZjc2MjZmNWIzCkF1dGhvcjogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQHBvbGx1eC5kZW54LmRlPgpEYXRlOglXZWQgSmFuIDI0IDEyOjE2OjU2IDIwMDcgKzAxMDAKCiAgICBBZGQgcG9ydCBmb3IgdGhlIGxwYzIyOTJzb2RpbW0gZXZhbHVhdGlvbiBib2FyZCBmcm9tIEVtYmVkZGVkQXJ0aXN0cwoKY29tbWl0IDJkYWYwNDZiYTYyN2Y4NWY0NDE5NTgxNTc3ODE0MDAzOTYzNjI0NGUKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgSmFuIDIzIDE3OjIyOjA2IDIwMDcgKzAxMDAKCiAgICBbaURNUl0gQWRkIE1URCBhbmQgSkZGUzIgc3VwcG9ydCwgYWxzbyBhZGQgZGVmYXVsdCBwYXJ0aXRpb24gZGVmaW5pdGlvbi4KCmNvbW1pdCBmN2RiMzMxMDFmYmM5YzhmMGExMDczOGNlODcwMzQ4NzVhMTdhZWI5CkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJVHVlIEphbiAyMyAxNDoyMToxNCAyMDA3ICswMTAwCgogICAgW2lETVJdIEZsYXNoIGRyaXZlciBvbiBpbml0aWFsaXNhdGlvbiB3cml0ZS1wcm90ZWN0cyBzb21lIHNlY3RvcnMsCiAgICBjdXJyZW50bHkgc2VjdG9ycyAwLTMuIFNlY3RvciAzIGRvZXMgbm90IG5lZWQgdG8gYmUgcHJvdGVjdGVkLCB0aG91Z2gKICAgIChVLWJvb3Qgb2NjdXBpZXMgc2VjdG9ycyAwLTEgYW5kIHRoZSBlbnZpcm9ubWVudCBzZWN0b3IgMikuIFRoaXMgY29tbWl0CiAgICBmaXhlcyB0aGlzLCBpLmUuLCBvbmx5IHNlY3RvcnMgMC0yIGFyZSBwcm90ZWN0ZWQuCgpjb21taXQgMGVkNDdiYjExOWNkMmM0YzE2ZWRiMjU0ODc4OTE0OGY5ZTZkYzlkZQpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVR1ZSBKYW4gMjMgMTQ6MTE6MjIgMjAwNyArMDEwMAoKICAgIFtpRE1SXSBVc2luZyBNSUktcmVsYXRlZCBjb21tYW5kcyBvbiBpRFJNIGJvYXJkIGRvZXNuJ3Qgd29yayBub3cgKGUuZy4sCiAgICAibWlpIGRldmljZSIgcmVzdWx0cyBpbiAiVW5leHBlY3RlZCBleGNlcHRpb24iKS4gRml4aW5nIHRoaXMgcHJvcGVybHkKICAgIHJlcXVpcmVzIHNvbWUgY2xlYW4tdXAgaW4gdGhlIEZFQyBkcml2ZXJzIGluZnJhc3RydWN0dXJlIGZvciBDb2xkRmlyZSwgc28KICAgIHRoaXMgY29tbWl0IGRpc2FibGVzIE1JSSBjb21tYWRzIGZvciBub3cuCgpjb21taXQgMzYzZDFkOGY5Yzk5YjYzZGFlZjgxZjU5ODVjYWIzZmMwMGVkZGU1YwpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVR1ZSBKYW4gMjMgMTM6MjU6MjIgMjAwNyArMDEwMAoKICAgIFtDb2xkRmlyZSBNQ0Y1MjcxIGZhbWlseV0gQWRkIENQVSBkZXRlY3Rpb24gYmFzZWQgb24gdGhlIHZhbHVlIG9mIENoaXAKICAgIElkZW50aWZpY2F0aW9uIFJlZ2lzdGVyIChDSVIpLgoKY29tbWl0IGZkZWYzODg3NTg1MDY3NjVkNGQ2YTcxNTVjOGYxNTg0YzYzZmY1ODEKQXV0aG9yOiByb3kgemFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKYW4gMjIgMTM6MTk6MjEgMjAwNyArMDgwMAoKICAgIHVzZSAgQ0ZHX1dSSVRFX1NXQVBQRURfREFUQSBkZWZpbmUgaW5zdGVhZCBvZiBkZWZpbmUgQ0ZHX0ZMQVNIX0NGSV9TV0FQCiAgICBUaGUgcGF0Y2ggYnkgSGVpa28gU2Nob2NoZXIgPGhzQHBvbGx1eC5kZW54LmRlPiBvbiBKYW4sIDE5LCAyMDA3CiAgICBmaXhlcyBjZmlfZHJpdmVyIGJ1ZyBmb3IgbXBjNzQ0OGhwYzIgYm9hcmQuIFRoZSBkZWZhdWx0IGNmaV9kcml2ZXIgY2FuIHN1cHBvcnQKICAgIG1wYzc0NDhocGMyIGJvYXJkLgoKY29tbWl0IGE0MDEyMzk2NjQ1NTMzYWVmMjE4MzU0ZWViYTc1NGRmZjBkZWFjZTgKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJRnJpIEphbiAxOSAyMzowODozOSAyMDA3ICswMTAwCgogICAgTWlub3IgY29kZSBjbGVhbnVwLgoKY29tbWl0IGY1MzliN2JhN2Q3ZWY2ZGQxODdjODIwOTYwOTAwMWNiMWNkOTVlMzkKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAcG9sbHV4LmRlbnguZGU+CkRhdGU6CUZyaSBKYW4gMTkgMTk6NTc6MTAgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gU0MzIGJvYXJkOiBhZGRlZCBDRkdfQ01EX0FVVE9TQ1JJUFQuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgZDBiNmUxNDA4N2RkZDg3ODlmMjI0YTQ4ZTFkMzNmMmE1ZGY0ZDE2NwpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0Bwb2xsdXguZGVueC5kZT4KRGF0ZToJRnJpIEphbiAxOSAxODowNToyNiAyMDA3ICswMTAwCgogICAgW1BBVENIXSBDRkk6IGRlZmluZSBDRkdfV1JJVEVfU1dBUFBFRF9EQVRBIGZvciB0aGUgQ0ZJLUZsYXNoIGRyaXZlcgoJCSBpZiB5b3UgbXVzdCBzd2FwIHRoZSBieXRlcyBiZXR3ZWVuIHJlYWRpbmcvd3JpdGluZy4KCQkgKE5lZWRlZCBmb3IgdGhlIFNDMyBib2FyZCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCA5ZDhkNWE1YmZiNjQ3NjhmMjlhMGNiNDdmYzM3Y2Q2ZjRjNDBlMjc2CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgSmFuIDE4IDE2OjA1OjQ3IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIEFkZCBzdXBwb3J0IGZvciBQcm9kcml2ZSBTQ1BVIChQRE5CMyB2YXJpYW50KSBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwMDU3ZDc1OGUzZTg3NGNiZTdmMjQ3NDVkMGNjZThjMWNiNmMyMDdlCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgSmFuIDE4IDExOjU0OjUyIDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIFVwZGF0ZSBQcm9kcml2ZSBQM014IHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMzQxNjdhMzZjMjllZTk0NmI3Mjc0NjVkYjVjMDE0NzQ2YTA4ZTk3OApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEphbiAxOCAxMTo0ODoxMCAyMDA3ICswMTAwCgogICAgW1BBVENIXSBBZGQgbWlzc2luZyBUYWlzaGFuIGNvbmZpZyBmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGNiNDgyMDcyNWU5ZmM0MDljNWNiYzhlODMwNTRhNmVkNTIyZDIxMTEKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVRodSBKYW4gMTggMTE6Mjg6NTEgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gRml4OiBDb21waWxlcndhcm5pbmdzIGZvciBTQzMgYm9hcmQuCgkJIFRoZSBFQkMgQ29uZmlndXJhdGlvbiBSZWdpc3RlciBpcyBub3cgYnkgQ0ZHX0VCQ19DRkcgZGVmaW5hYmxlCgkJIEFkZGVkIEpGRlMyIHN1cHBvcnQgZm9yIHRoZSBTQzMgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgNWZiNjkyY2FlNTdkMTcxMGM4ZjUyYTQyN2NmN2YzOWEzNzM4M2ZjZApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEphbiAxOCAxMDoyNTozNCAyMDA3ICswMTAwCgogICAgW1BBVENIXSBBZGQgc3VwcG9ydCBmb3IgQU1DQyBUYWlzaGFuIFBQQzQ0MEdYIGV2YWwgYm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNmQzZTAxMDcyMzVhYTBlNmE2ZGNiNzdmOTg4NDQ5NzI4MGJmODVhZApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgpEYXRlOglUdWUgSmFuIDE2IDE4OjMwOjUwIDIwMDcgKzAxMDAKCiAgICBSYW5hbWUgc29saWRjYXJkMyBpbnRvIHNjMzsgYWRkIHJlZHVuZGFudCBlbnYgZm9yIHNjMwoKY29tbWl0IDFiYmJiZGQyMGZjZWM5OTMzNjk3MDAwZGNmNTVmZjc5NzI2MjI1OTYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJVHVlIEphbiAxNiAxMjo0NjozNSAyMDA3ICswMTAwCgogICAgVXBkYXRlIGRlZmF1bHQgZW52aXJvbm1lbnQgZm9yIFNvbGlkY2FyZDMKCmNvbW1pdCA1YTVjNTY5ODZhOWNjZjcxNjQyYzhiNjM3NGViMTg0ODdiMTVmZWNkCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gSmFuIDE1IDA5OjQ2OjI5IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIEZpeCA0NDBTUGUgcmV2IEIgZGV0ZWN0aW9uIGZyb20gcHJldmlvdXMgcGF0Y2gKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYTQ0M2QzMTQxMGM1NzFlZThmOTcwZGE4MTlhNDRkNjk4ZmRkNmIxZgpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0Bwb2xsdXguZGVueC5kZT4KRGF0ZToJU3VuIEphbiAxNCAxMzozNTozMSAyMDA3ICswMTAwCgoJW0ZJWF0gY29ycmVjdCBJMkMgV3JpdGVzIGZvciB0aGUgTE04MSBTZW5zb3IuCgoJU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgMGJiYTU0NTI4MzVmMTlhNjEyMDRlZGNkYTNhNTgxMTJmZDhlMjIwOApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgpEYXRlOglTYXQgSmFuIDEzIDExOjE3OjEwIDIwMDcgKzAxMDAKCiAgICBVbmRvIGNvbW1pdCAzMDMzZWJiMjogcmVzZXQgY29tbWFuZCBkb2VzIG5vdCB0YWtlIGFueSBhcmd1bWVudHMKCiAgICBIYWl5aW5nIFdhbmcncyBtb2RpZmljYXRpb24gdG8gdGhlIHJlc2V0IGNvbW1hbmQgd2FzIGJyb2tlbiwgdW5kbyBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDk1OTgxNzc4Y2ZmMDAzOGZkOTk0MTA0NGQ2YTNlZGE4MTBlMzMyNTgKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVNhdCBKYW4gMTMgMDg6MDE6MDMgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gVXBkYXRlIDQ0MFNQKGUpIGNwdSByZXZpc2lvbnMKCiAgICBBbHNvIGRpc3BsYXkgZW5hYmxlZC9kaXNhYmxlZCBSQUlEIDYgc3VwcG9ydCBmb3IgNDQwU1AvNDQwU1BlIFBQQydzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3N2RkYzViOWFmYjMyNTI2MmZkODg3NTJiYTQzMGExZGRlZDFmMGM3CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgSmFuIDEzIDA3OjU5OjU2IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIFVwZGF0ZSBZZWxsb3dzdG9uZSAoNDQwR1IpIHRvIGRpc3BsYXkgYm9hcmQgcmV2IGFuZCBQQ0kgYnVzIHNwZWVkCgogICAgTm93IHRoZSBib2FyZCByZXZpc2lvbiBhbmQgdGhlIGN1cnJlbnQgUENJIGJ1cyBzcGVlZCBhcmUgcHJpbnRlZCBhZnRlcgogICAgdGhlIGJvYXJkIG1lc3NhZ2UuCgogICAgQWxzbyB0aGUgRUJDIGluaXRpYWxpc2luZyBpcyBub3cgZG9uZSB2aWEgZGVmaW5lcyBpbiB0aGUgYm9hcmQgY29uZmlnCiAgICBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzNmFkZmYzNjJjMmMwMTQxZmY4YTgxMGQ0MmE3ZTQ3OGY3NzkxMzBmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgSmFuIDEzIDA3OjU5OjE5IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIFVwZGF0ZSBZb3NlbWl0ZSAoNDQwRVApIHRvIGRpc3BsYXkgYm9hcmQgcmV2IGFuZCBQQ0kgYnVzIHNwZWVkCgogICAgTm93IHRoZSBib2FyZCByZXZpc2lvbiBhbmQgdGhlIGN1cnJlbnQgUENJIGJ1cyBzcGVlZCBhcmUgcHJpbnRlZCBhZnRlcgogICAgdGhlIGJvYXJkIG1lc3NhZ2UuCgogICAgQWxzbyB0aGUgRUJDIGluaXRpYWxpc2luZyBpcyBub3cgZG9uZSB2aWEgZGVmaW5lcyBpbiB0aGUgYm9hcmQgY29uZmlnCiAgICBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlMGI5ZWE4YzhhMjk0ZGU2YTUzNTBhZTYzODg3OWQyNGI1YjcwOWQ2CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgSmFuIDEzIDA3OjU3OjUxIDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIFVwZGF0ZSBTZXF1b2lhICg0NDBFUHgpIHRvIGRpc3BsYXkgYm9hcmQgcmV2IGFuZCBQQ0kgYnVzIHNwZWVkCgogICAgTm93IHRoZSBib2FyZCByZXZpc2lvbiBhbmQgdGhlIGN1cnJlbnQgUENJIGJ1cyBzcGVlZCBhcmUgcHJpbnRlZCBhZnRlcgogICAgdGhlIGJvYXJkIG1lc3NhZ2UuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGNhNDNiYTE4ZTkxMDIwNmVmODA2M2U0YjIyZDI4MjYzMGJmZjNmZDIKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVRodSBKYW4gMTEgMTU6NDQ6NDQgMjAwNyArMDEwMAoKCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBTT0xJRENBUkQgSUlJIGJvYXJkIGZyb20gRXVyb2Rlc2lnbgoKCVNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDZhYmFlZTQyNjIxYzA3ZTgxYTJjZDE4OWFkNDM2OGI1ZThjNTAyODAKQXV0aG9yOiBSZWluaGFyZCBUaGllcyA8UmVpbmhhcmQuVGhpZXNAd2ViLmRlPgpEYXRlOglXZWQgSmFuIDEwIDE0OjQxOjE0IDIwMDcgKzAxMDAKCiAgICBBZGp1c3RlZCBkZWZhdWx0IGVudmlyb25tZW50IGZvciBjYW01MjAwIGJvYXJkLgoKY29tbWl0IGJhYjVhOTBkNGNjYzFhNDZhODEyN2I4NjdmYTU5MDI4Y2M2MjNhZDkKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJV2VkIEphbiAxMCAxNTozNTo1MiAyMDA3ICswMTAwCgogICAgVXBkYXRlIENIQU5HRUxPRwoKY29tbWl0IDc4N2ZhMTU4NjBhNTc4MzNlNTBiZDMwNTU1MDc5YTljZDRlNTE5YjgKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJV2VkIEphbiAxMCAwMToyODozOSAyMDA3ICswMTAwCgogICAgRml4IGF1dG9fdXBkYXRlIGZvciBNQ0MyMDAgYm9hcmQuCgogICAgVGhlIGludm9jYXRpb24gb2YgZG9fYXV0b191cGRhdGUoKSBpcyBtb3ZlZCB0byB0aGUgZW5kIG9mIHRoZQogICAgbWlzY19pbml0X3IoKSBmdW5jdGlvbiwgYWZ0ZXIgdGhlIGZsYXNoIG1hcHBpbmdzIGhhdmUgYmVlbgogICAgaW5pdGlhbGl6ZWQuIFBsZWFzZSBmaW5kIGF0dGFjaGVkIGEgcGF0Y2ggdGhhdCBpbXBsZW1lbnRzIHRoYXQKICAgIGNoYW5nZS4KCiAgICBBbHNvIGNvcnJlY3QgdGhlIGRlY29kaW5nIG9mIHRoZSBrZXlwYWQgc3RhdHVzLiBXaXRoIHRoaXMgdXBkYXRlLCB0aGUKICAgIGtleSB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgdXBkYXRlIGlzIENvbHVtbiAyLCBSb3cgMi4KCmNvbW1pdCBkOTM4NGRlMmY1NzEwNDZlNzEwODFiYWUyMmI0OWUzZDVjYTJlM2Q1CkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIEphbiAxMCAwMDoyNjoxNSAyMDA3ICswMTAwCgogICAgQ0FNNTIwMCBmbGFzaCBkcml2ZXIgbW9kaWZpY2F0aW9uczoKICAgIC0gdXNlIENGSSBkcml2ZXIgKHJlcGxhY2VzIGN1c3RvbSBmbGFzaCBkcml2ZXIpIGZvciBtYWluICdjYW01MjAwJyB0YXJnZXQKICAgIC0gYWRkIHNlY29uZCBidWlsZCB0YXJnZXQgJ2NhbTUyMDBfbmlvc2ZsYXNoJyB3aGljaCBzdGlsbCB1c2VzIGN1c3RvbSBkcml2ZXIKCmNvbW1pdCA2N2ZlYTAyMmZhOTU3ZjU5NjUzYjUyMzhjNzQ5NmY4MGE2YjcwNDMyCkF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KRGF0ZToJVHVlIEphbiA5IDE2OjAyOjQ4IDIwMDcgKzAxMDAKCiAgICBTUEMxOTIwOiBjbGVhbnVwIG1lbW9yeSBjb250b2xsZXIgc2V0dXAKCmNvbW1pdCA4ZmMyMTAyZmFhMjM1OTNjODAzODE0MzdjMDlmNzc0NWExNGRlYjQwCkF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KRGF0ZToJVHVlIEphbiA5IDE0OjU3OjE0IDIwMDcgKzAxMDAKCiAgICBGaXggdGhlIGNwdSBzcGVlZCBzZXR1cCB0byB3b3JrIHdpdGggYWxsIGJvYXJkcy4KCmNvbW1pdCA5Mjk1YWNiNzc0ODFjZjA5OWVmOWI0MGUxZmEyZDE0NWIzYzc0OTBjCkF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KRGF0ZToJVHVlIEphbiA5IDE0OjU3OjEzIDIwMDcgKzAxMDAKCiAgICBTUEMxOTIwOiBhZGQgc3VwcG9ydCBmb3IgdGhlIEZNMThMMDggUmFtdHJvbiBGUkFNCgpjb21taXQgMzhjY2QyZmRmMzM2NGE1M2ZlODBlOWIzNjUzMDNlY2RhZmM5ZTIyMwpBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CVR1ZSBKYW4gOSAxNDo1NzoxMyAyMDA3ICswMTAwCgogICAgU1BDMTkyMDogdXBkYXRlIHRoZSBIUEkgcmVnaXN0ZXIgYWRkcmVzc2VzIHRvIHdvcmsgd2l0aCB0aGUgc2Vjb25kCiAgICBnZW5lcmF0aW9uIG9mIGhhcmR3YXJlCgpjb21taXQgNTkyMWU1MzEzZmMzZWFkZDQyNzcwYzJiOTliYWRkN2ZhZTVlY2YxZQpBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGNyZWFtbmV0LmRlPgpEYXRlOglUdWUgSmFuIDkgMTQ6NTc6MTMgMjAwNyArMDEwMAoKICAgIE1pc2NlbGxhbmlvdXMgc3BjMTkyMCByZWxhdGVkIGNsZWFudXBzCgpjb21taXQgZTRjMmQzN2FkYzhiYjFiZjY5ZGNmNjAwY2JjNmM3NWY5MTZhNjEyMApBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CVR1ZSBKYW4gOSAxNDo1NzoxMiAyMDA3ICswMTAwCgogICAgU1BDMTkyMCBHTy9OT0dPIGxlZCBzaG91bGQgYmUgc2V0IHRvIGNvbG9yIHJlZCBpbiBVLUJvb3QKCmNvbW1pdCAwYmU2MjcyOGFhYzQ1OWJhMjY4ZDZkNzUyZWQ0OWVjMGUyYmM3MzQ4CkF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAY3JlYW1uZXQuZGU+CkRhdGU6CVR1ZSBKYW4gOSAxNDo1NzoxMiAyMDA3ICswMTAwCgogICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBEUzMyMzEgUlRDCgpjb21taXQgODEzOTU2N2I2MGQ2Nzg1ODRiMDVmMDcxOGE2ODFmMjA0N2M1ZTE0ZgpBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGNyZWFtbmV0LmRlPgpEYXRlOglUdWUgSmFuIDkgMTQ6NTc6MTEgMjAwNyArMDEwMAoKICAgIFNNQzEgdXNlcyBleHRlcm5hbCBDTEs0IGluc3RlYWQgb2YgQlJHIG9uIHNwYzE5MjAKCmNvbW1pdCBkOGQ5ZGUxYTAyZmJkODgwYjYxM2Q2MDcxNDNkMWY1NzM0MmFmZmM3CkF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAY3JlYW1uZXQuZGU+CkRhdGU6CVR1ZSBKYW4gOSAxNDo1NzoxMCAyMDA3ICswMTAwCgogICAgVXBkYXRlIHRoZSBTUEMxOTIwIENNQiBQTEQgZHJpdmVyCgpjb21taXQgM2YzNGY4NjkxNjI3NTBlNWU5OTlmZDE0MGY4ODRmNWRlOTUyYmNmZQpBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGNyZWFtbmV0LmRlPgpEYXRlOglUdWUgSmFuIDkgMTQ6NTc6MTAgMjAwNyArMDEwMAoKICAgIEFkZCAvIGVuYWJsZSBJMkMgc3VwcG9ydCBvbiB0aGUgc3BjMTkyMCBib2FyZAoKY29tbWl0IGQyODcwN2RiY2UxZTlhYzIwMTdhZDA1MWRhNDEzM2JmMjJiNDIwNGYKQXV0aG9yOiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BjcmVhbW5ldC5kZT4KRGF0ZToJVHVlIEphbiA5IDE0OjU3OjEwIDIwMDcgKzAxMDAKCiAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIHRtczMyMDY3MXggaG9zdCBwb3J0IGludGVyZmFjZSAoSFBJKQoKY29tbWl0IGY0ZWI1NDUyOWJiMzY2NGMzYTU2MmU0ODhiNDYwZmUwNzVmNzlkNjcKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJU3VuIEphbiA3IDAwOjEzOjExIDIwMDcgKzAxMDAKCiAgICBQcmVwYXJlIGZvciByZWxlYXNlIDEuMi4wCgpjb21taXQgZjA3YWU3YTlkYWVmMjdhM2QwMjEzYTRmM2ZlMzlkNTM0MjE3M2MwMgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IEphbiA2IDE1OjU4OjA5IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIDQ0eDogRml4IHByb2JsZW0gd2l0aCBERFIgY29udHJvbGxlciBzZXR1cCAocmVmcmVzaCByYXRlKQoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBwcm9ibGVtIHdpdGggYW4gaW5jb3JyZWN0IHNldHVwIGZvciB0aGUgcmVmcmVzaAogICAgdGltZXIgb2YgdGhlIDQ0eCBERFIgY29udHJvbGxlciBpbiB0aGUgZmlsZSBjcHUvcHBjNHh4L3NkcmFtLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZjE2YzFkYTk1NzdmMDZjNWZjMDg2NTFhNDA2NTUzNzQwN2RlNDYzNQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IEphbiA2IDE1OjU2OjEzIDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIFVwZGF0ZSBBTFBSIGJvYXJkIGZpbGVzCgogICAgVGhpcyB1cGRhdGUgYnJpbmdzIHRoZSBBTFBSIGJvYXJkIHN1cHBvcnQgdG8gdGhlIG5ld2VzdCB2ZXJzaW9uLgogICAgSXQgYWxzbyBmaXhlcyBhIHByb2JsZW0gd2l0aCB0aGUgTkFORCBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGNkMWQ5MzdmOTAyNTBhMzI5ODhjMzdiMmI0YWY4MzY0ZDI1ZGU4ZWQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBKYW4gNSAxMTo0NjowNSAyMDA3ICswMTAwCgogICAgW1BBVENIXSBuYW5kOiBGaXggcHJvYmxlbSB3aXRoIG9vYnNpemUgY2FsY3VsYXRpb24KCiAgICBIZXJlIHRoZSBkZXNjcmlwdGlvbiBmcm9tIEJyaWFuIEJyZWxzZm9yZCA8QnJpYW5fQnJlbHNmb3JkQGRlbGwuY29tPjoKCiAgICBUaGUgSHluaXggcGFydCByZXR1cm5zIGEgMHgxZCBpbiB0aGUgNHRoIElEIGJ5dGUuIFRoZSBTYW1zdW5nIHBhcnQKICAgIHJldHVybnMgYSAweDE1LiBJbiB0aGUgY29kZSBmcmFnbWVudCBiZWxvdyBiaXRzIFsxOjBdIGRldGVybWluZSB0aGUKICAgIHBhZ2Ugc2l6ZSwgaXQgaXMgQU5EZWQgdmlhICIoZXh0aWQgJiAweDMpIiB0aGVuIHNoaWZ0ZWQgb3V0LiBUaGUKICAgIG5leHQgZmllbGQgaXMgYWxzbyBBTkRlZCB3aXRoIDB4My4gSG93ZXZlciB0aGlzIGlzIGEgb25lIGJpdCBmaWVsZAogICAgYXMgZGVmaW5lZCBpbiB0aGUgSHluaXggYW5kIFNhbXN1bmcgcGFydHMgaW4gdGhlIDR0aCBJRCBieXRlIHRoYXQKICAgIGRldGVybWlucyB0aGUgb29ic2l6ZSwgbm90IGEgdHdvIGJpdCBmaWVsZC4gSXQgd29ya3Mgb24gU2Ftc3VuZyBhcwogICAgYml0c1szOjJdIGFyZSAwMS4gSG93ZXZlciBmb3IgdGhlIEh5bml4IHRoZXJlIGlzIGEgMTEgaW4gdGhlc2UgdHdvCiAgICBiaXRzLCBzbyB0aGUgb29iIHNpemUgZ2V0cyBtZXNzZWQgdXAuCgogICAgSSBjaGVja2VkIHRoZSBjb3JyZWN0IGxpbnV4IGNvZGUgYW5kIHRoZSBzdWdnZXN0ZWQgZml4IGZyb20gQnJpYW4gaXMKICAgIGFsc28gYXZhaWxhYmxlIGluIHRoZSBsaW51eCBuYW5kIG10ZCBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGE3OGJjNDQzYWU1YTRhOGJhODc1OTA1ODdkNWUzNWJmNWE3ODdiMmUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBKYW4gNSAxMDo0MDozNiAyMDA3ICswMTAwCgogICAgW1BBVENIXSBDbGVhciBQTEI0QTBfQUNSW1dSUF0gb24gU2VxdW9pYSAoNDQwRVB4KQoKICAgIFRoaXMgZml4IHdpbGwgbWFrZSB0aGUgTUFMIGJ1cnN0IGRpc2FibGluZyBwYXRjaCBmb3IgdGhlIExpbnV4CiAgICBFTUFDIGRyaXZlciBvYnNvbGV0ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDIzODg5ODM4MjgyYjYyMzdiNDAxNjY0ZjIyZGQyMmRmYmEyYzA2NgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEphbiA1IDEwOjM4OjA1IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIEFkZCBERFIyIG9wdGltaXphdGlvbiBjb2RlIGZvciBTZXF1b2lhICg0NDBFUHgpIGJvYXJkCgogICAgVGhpcyBjb2RlIHdpbGwgb3B0aW1pemUgdGhlIEREUjIgY29udHJvbGxlciBzZXR1cCBvbiBhIGJvYXJkIHNwZWNpZmljCiAgICBiYXNpcy4KCiAgICBOb3RlOiBUaGlzIGNvZGUgZG9lc24ndCB3b3JrIHJpZ2h0IG5vdyBvbiB0aGUgTkFORCBib290aW5nIGltYWdlIGZvciB0aGUKICAgIFNlcXVvaWEgYm9hcmQsIHNpbmNlIGl0IGRvZXNuJ3QgZml0IGludG8gdGhlIDRrQnl0ZXMgZm9yIHRoZSBTUEwgaW1hZ2UuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGNjZTRhY2JiNjgzOTg2MzRiOGQwMTFlZDdiYjBkMTIyNjljODQyMzAKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgRGVjIDI4IDE5OjA4OjIxIDIwMDYgKzAxMDAKCiAgICBGZXcgVjM4QiBjaGFuZ2VzOgogICAgICAtIGZpeCBhIHR5cG8gaW4gVjM4QiBjb25maWcgZmlsZQogICAgICAtIG1vdmUgd2F0Y2hkb2cgaW5pdGlhbGlzYXRpb24gZWFybGllciBpbiB0aGUgYm9vdCBwcm9jZXNzCiAgICAgIC0gYWRkICJ3ZHQ9b2ZmIiB0byBkZWZhdWx0IGtlcm5lbCBjb21tYW5kIGxpbmUgKGRpc2FibGVzIGtlcm5lbCB3YXRjaGRvZykKCmNvbW1pdCA5MmViNzI5YmFkODc2NzI1YWVlYTkwOGQyYWRkYmEwODAwNjIwODQwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVdlZCBEZWMgMjcgMDE6MjY6MTMgMjAwNiArMDEwMAoKICAgIEZpeCBidWcgaW4gYWRhcHRpb24gb2YgU3RlZmFubyBCYWJpYydzIENGSSBkcml2ZXIgcGF0Y2guCgpjb21taXQgOWMwZjQyZWNmZTI1ZjdmZmNlOGVjN2E4MTVmMDM4NjRkNzIzZmZlMwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgpEYXRlOglTdW4gRGVjIDI0IDAxOjQyOjU3IDIwMDYgKzAxMDAKCiAgICBNaW5vciBjb2RlIGNsZWFudXAuCgpjb21taXQgZDc4NGZkYjA1OTAwYWRhMzY4NmQ1Nzc4NzgzZTFmYjMyOGU5ZmI2NgpBdXRob3I6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgpEYXRlOglUdWUgRGVjIDEyIDAwOjIyOjQyIDIwMDYgKzAxMDAKCiAgICBGaXggY2ZpIGZhaWx1cmUgd2l0aCBTcGFuc2lvbiBGbGFzaCAoU3BhbnNpb24gRmxhc2ggRGV2aWNlcyBoYXZlIGEgZGlmZmVyZW50IG9mZnNldCB0byBnbyBpbnRvIENGSSBtb2RlKQoKY29tbWl0IDFiM2MzNjBjMjM1ZGM2ODRlYzA2YzJkNWYxODNmMGEyODJjZTQ1ZTIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBEZWMgMjIgMTQ6Mjk6NDAgMjAwNiArMDEwMAoKICAgIFtQQVRDSF0gRml4IHNlcXVvaWEgZmxhc2ggYXV0b2RldGVjdGlvbiAoZmluYWxseSBjb3JyZWN0KQoKICAgIE5vdyAzMk1CeXRlIGFuZCA2NE1CeXRlIEZMQVNIIGlzIGtub3cgdG8gd29yayBhbmQgb3RoZXIKICAgIGNvbmZpZ3VyYXRpb25zIHNob3VsZCB3b3JrIHRvby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODJlNTIzNmE4YjcxOTU0MzY0M2ZkMjZkNTgyNzkzOGFiMmI5NDgxOApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgpEYXRlOglGcmkgRGVjIDIyIDEwOjMwOjI2IDIwMDYgKzAxMDAKCiAgICBNaW5vciBjb2RlIGNsZWFudXA7IHVwZGF0ZSBDSEFOR0VMT0cuCgpjb21taXQgZmEyMzA0NDU2NDA5MWYwNWQ5Njk1YmViN2I1YjlhOTMxZTdmNDFhNApBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0Bwb2xsdXguZGVueC5kZT4KRGF0ZToJVGh1IERlYyAyMSAxNzoxNzowMiAyMDA2ICswMTAwCgogICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIFRRTTgyNzIgYm9hcmQgZnJvbSBUUQoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDZkZWRmM2Q0OWRkMTRjM2JmNTQxYzhlY2VlN2ZmYWFjNWYwZTFkNmMKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVRodSBEZWMgMjEgMTY6MTQ6NDggMjAwNiArMDEwMAoKICAgIFtQQVRDSF0gQWRkIHN1cHBvcnQgZm9yIHRoZSBVQzEwMSBib2FyZCBmcm9tIE1BTi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBjODRiYWQwZWY2MGU3MDU1YWIwYmQ0OWI5MzA2OTUwOWNlY2MzODJhCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIERlYyAyMCAwMDoyOTo0MyAyMDA2ICswMTAwCgogICAgRml4IHRvIG1ha2UgdGhlIGJhdWRyYXRlIGNoYW5nZXMgaW1tZWRpYXRlIGZvciB0aGUgTUNGNTJ4MiBmYW1pbHkuCgpjb21taXQgZGFhNmU0MThiY2MwYzcxNzc1MmU4ZGU5MzljMjEzYzc5MDI4NjA5NgpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBEZWMgMjAgMDA6Mjc6MzIgMjAwNiArMDEwMAoKICAgIFByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIHRoZSBpRE1SIGJvYXJkIChDb2xkRmlyZSkuCgpjb21taXQgY2RiOTdhNjY3ODgyNmY4NWU3YzY5ZWFlNmExYzExM2QwMzRjOWIxMApBdXRob3I6IEFuZHJlaSBTYWZyb25vdiA8c2Fmcm9ub3ZAcG9sbHV4LmRlbnguZGU+CkRhdGU6CUZyaSBEZWMgOCAxNjoyMzowOCAyMDA2ICswMTAwCgogICAgYXV0b21hdGljIHVwZGF0ZSBtZWNoYW5pc20KCmNvbW1pdCA5ZDI3YjNhMDY4NWZmOTlmYzQ3Nzk4M2YzMTVjMDRkNDlmNjU3YThhCkF1dGhvcjogcm95IHphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gRGVjIDQgMTc6NTY6NTkgMjAwNiArMDgwMAoKICAgIFNsaWdodCBjb2RlIGNsZWFuIHVwLgogICAgQWRkIGNvbW1lbnRzLCBkZWxldGUgZHVwbGljYXRlIGRlZmluZSBhbmQgcmVtb3ZlIHNwYWNlcy4KICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0ZGJjZDY5ZTNlMjc3NmVhMzM0NTkwZDU3NjhlMzY5MmM1ZmFlNWMxCkF1dGhvcjogcm95IHphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gRGVjIDQgMTc6NTQ6MjEgMjAwNiArMDgwMAoKICAgIEludHJvZHVjZSBQTExfQ0ZHWzA6NF0gdGFibGUgZm9yIHByb2Nlc3NvciA3NDQ4Lzc0NDdBLzc0NTUvNzQ1Ny4gVGhlIG9yaWdpbmFsCiAgICBtdWx0aXBsaWVyIHRhYmxlIGNhbiBub3QgcmVmZWN0IHRoZSByZWFsIFBMTCBjbG9jayBiZWhhdmlvciBvZiB0aGVzZQogICAgcHJvY2Vzc29ycy4gUGxlYXNlIHJlZmVyIHRvIHRoZSBoYXJkd2FyZSBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxlZAogICAgaW5mb3JtYXRpb24gb2YgdGhlIGNvcnJlc3BvbmRpbmcgcHJvY2Vzc29ycy4KICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0ZWZlMjBjOTU3OTAxMWQ5OTg3ZjYyZWQ3ZDM1ZWU4Y2RjMWNmMGUwCkF1dGhvcjogcm95IHphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gRGVjIDQgMTQ6NDY6MjMgMjAwNiArMDgwMAoKICAgIFJlbW92ZSB0aGUgc3RhdGljIE1BQyBhZGRyZXNzLCBpcCBhZGRyZXNzLCBzZXJ2ZXIgaXAsIG5ldG1hc2sgYW5kCiAgICBnYXRld2F5IGlwIGZvciBuZXR3b3JrIHNldHRpbmcuCiAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNmYxMmM2MWNmMzFlZDczZDcyZGRmY2ZjNzEyYTg1NGEzYTE3N2FhZgpBdXRob3I6IHJveSB6YW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIERlYyA0IDE0OjMzOjA4IDIwMDYgKzA4MDAKCiAgICBSZW1vdmUgdGhlIGR1cGxpY2F0ZSBtZW1vcnkgdGVzdCBjb2RlIGZvciBtcGM3NDRpaHBjMiBib2FyZC4KICAgIElmIGEgbWVtb3J5IHRlc3QgaXMgbmVlZGVkLCBwbGVhc2UgdXNlIHRoZSBmdW5jdGlvbnMgaW4KICAgIHBvc3QvbWVtb3J5LmMgb3IgbWVtdGVzdCBjb21tYW5kLgogICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGM5YzFlZWVkN2RkMTkzZmE2NWZiMTk0NjU0MTMyMDQwZDQ5ZDRkM2EKQXV0aG9yOiByb3kgemFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBEZWMgMSAxOTowMToyNSAyMDA2ICswODAwCgogICAgRml4IHRoZSBleGNlcHRpb24gb2NjdXJpbmcgaW4gUkFNIHRhYmxlIHNlYXJjaCBpc3N1ZS4KICAgIFRoZSBvcmlnaW5hbCBzZWFyY2hfb25lX3RhYmxlKCkgZnVuY3Rpb24gY29kZSBjYW4gb25seSBwcm9jZXNzZXMgdGhlIHNlYXJjaAogICAgZm9yIHRoZSBleGNlcHRpb24gb2NjdXJyaW5nIGluIEZMQVNIL1JPTSwgYmVjYXVzZSB0aGUgZXhjZXB0aW9uIGFuZCBmaXh1cAogICAgdGFibGUgdXN1YWxseSBsb2NhdGUgaW4gRkxBU0guIElmIHRoZSBleGNlcHRpb24gYWRkcmVzcyBpcyBhbHNvIGluCiAgICBGTEFTSCwgaXQgd2lsbCBiZSBPSy4KICAgIElmIHRoZSBleGNlcHRpb24gb2NjdXJzIGluIFJBTSwgYWZ0ZXIgdGhlIHUtYm9vdCByZWxvY2F0aW9uLCBhCiAgICByZWxvY2F0aW9uIG9mZnNldCBzaG91bGQgYmUgYWRkZWQuCgogICAgY2xlYW4gdXAgdGhlIGNvZGUgaW4gY3B1Lzc0eHhfN3h4L2NwdS5jCgogICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGVlMzExMjE0ZTBkMjE2ZjkwNGZlZWEyNjk1OTlkMDkzNGJmNzFmMjMKQXV0aG9yOiByb3kgemFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBEZWMgMSAxMTo0NzozNiAyMDA2ICswODAwCgogICAgQ2xlYW4gdXAgdGhlIGNvZGUgYWNjb3JkaW5nIHRvIGNvZGVzdHlsZToKICAgICgxKSByZW1vdmUgc29tZSBDKysgY29tbWVudHMuCiAgICAoMikgcmVtb3ZlIHRyYWlsaW5nIHdoaXRlIHNwYWNlLgogICAgKDMpIHJlbW92ZSB0cmFpbGluZyBlbXB0eSBsaW5lLgogICAgKDQpIEluZGVudGF0aW9uIGJ5IHRhYmxlLgogICAgKDUpIHJlbW92ZSB7fSBpbiBvbmUgbGluZSBjb25kaXRpb24uCiAgICAoNikgYWRkIHNwYWNlIGJlZm9yZSAnKCcgaW4gZnVuY3Rpb24gY2FsbC4KICAgIFJlbW92ZSBzb21lIHdlaXJkIHByaW50ZiAoKSBvdXRwdXQuCiAgICBBZGQgbmVjZXNzYXJ5IGNvbW1lbnRzLgogICAgTW9kaWZpZWQgTWFrZWZpbGUgdG8gc3VwcG9ydCBidWlsZGluZyBpbiBhIHNlcGFyYXRlIGRpcmVjdG9yeS4KCmNvbW1pdCBkZDUyMGJmMzE0YzdhZGQ0MTgzYzUxOTE2OTIxODBmNTc2Zjk2YjYwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVRodSBOb3YgMzAgMTg6MDI6MjAgMjAwNiArMDEwMAoKICAgIENvZGUgY2xlYW51cC4KCmNvbW1pdCA4ZDlhODYxMGI4MjU2MzMxMTMyMjI3ZTllNjU4NWM2YmQ1NzQyNzg3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVRodSBOb3YgMzAgMDE6NTQ6MDcgMjAwNiArMDEwMAoKICAgIENvZGUgY2xlYW51cC4gVXBkYXRlIENIQU5HRUxPRy4KCmNvbW1pdCA3MjZlOTBhYWNmMGIxZWNiMGU3MDU1YmU1NzQ2MjJmYmUzZTQ1MGJhCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglXZWQgTm92IDI5IDE2OjIzOjQyIDIwMDYgKzAxMDAKCiAgICBbUEFUQ0hdIFtNUEM1Mnh4XSBVc2UgSVBCIGJ1cyBmcmVxdWVuY3kgZm9yIFNPQyBwZXJpcGhlcmFscwoKICAgIFRoZSBzb2Mgbm9kZSBvZiB0aGUgbXBjNTJ4eCBuZWVkcyB0byBiZSBsb2FkZWQgd2l0aCB0aGUgSVBCIGJ1cyBmcmVxdWVuY3ksCiAgICBub3QgdGhlIFhMQiBmcmVxdWVuY3kuCgogICAgVGhpcyBwYXRjaCBkZXBlbmRzIG9uIHRoZSBwcmV2aW91cyBwYXRjaGVzIGZvciBNUEM1Mnh4IGRldmljZSB0cmVlIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CiAgICBTaWduZWQtb2ZmLWJ5OiBTeWx2YWluIE11bmF1dCA8dG50QDI0NnROdC5jb20+Cgpjb21taXQgMWVhYzJhNzE0MTdiNjY3NWIxMWFhY2U3MjEwMmEyZTdmZGU4ZjVjNgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE5vdiAyOSAxNTo0MjozNyAyMDA2ICswMTAwCgogICAgW1BBVENIXSBBZGQgc3VwcG9ydCBmb3IgUHJvZHJpdmUgUDNNNzUwICYgUDNNNzQ0OCAoUDNNeCkgYm9hcmRzCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBQcm9kcml2ZSBQM003NTAgKFBQQzc1MCAmIE1WNjQ0NjApCiAgICBhbmQgdGhlIFAzTTc0NDggKE1QQzc0NDggJiBNVjY0NDYwKSBQTUMgbW9kdWxlcy4gQm90aCBtb2R1bGVzIGFyZQogICAgcXVpdGUgc2ltaWxhciBhbmQgc2hhcmUgdGhlIHNhbWUgYm9hcmQgZGlyZWN0b3J5ICJwcm9kcml2ZS9wM214IgogICAgYW5kIHRoZSBzYW1lIGNvbmZpZyBmaWxlICJwM214LmgiLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxYmRkNDY4MzJhZWI1NjlmNWUwNGIxZjIwZjY0MzE4NTI1YjY1MjVhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgTm92IDI5IDEyOjUzOjE1IDIwMDYgKzAxMDAKCiAgICBbUEFUQ0hdIGNvbW1vbi9jbWRfZWxmLmM6IEVuYWJsZSBsb2FkYWRkciBhcyBwYXJhbWV0ZXIgaW4gYm9vdHZ4IGNvbW1hbmQKCiAgICBJbiB0aGUgYm9vdHZ4IGNvbW1hbmQgdGhlIGxvYWQgYWRkcmVzcyB3YXMgb25seSByZWFkIGZyb20gdGhlIGVudgogICAgdmFyaWFibGUgImxvYWRhZGRyIiBhbmQgbm90IG9wdGlvbmFsbHkgcGFzc2VkIGFzIHBhcmFtdGVyIGFzIGRlc2NyaWJlZAogICAgaW4gdGhlIGhlbHAuIFRoaXMgaXMgZml4ZWQgd2l0aCB0aGlzIHBhdGNoLiBUaGUgYmVoYXZpb3VyIGlzIG5vdyB0aGUKICAgIHNhbWUgYXMgaW4gdGhlIGJvb3RlbGYgY29tbWFuZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNGUyNmYxMDc0YzNhYzFiZDhmZDA5NGYwZGM0YTFjNGEwYjE1YTU5MgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE5vdiAyOSAxMjowMzo1NyAyMDA2ICswMTAwCgogICAgW1BBVENIXSBpbmNsdWRlL3BwYzQ0MC5oIG1pbm9yIGVycm9yIGFmZmVjdGluZyBpbnRlcnJ1cHRzCgogICAgRml4ZWQgaW5jbHVkZS9wcGM0NDAuYyBmb3IgVUlDIGFkZHJlc3MgQnVnCgogICAgQ29ycmVjdHMgYnVnIGFmZmVjdGluZyB0aGUgYWRkcmVzc2VzIGZvciB0aGUgdW5pdmVyc2FsIGludGVycnVwdAogICAgY29udHJvbGxlciBVSUMyIGFuZCBVSUMzIG9uIHRoZSBQUEM0NDAgRXB4LCBHUngsIGFuZCBTUEUgY2hpcHMuCgogICAgU2lnbmVkLW9mZi1ieTogSmVmZiBNYW5uIDxtYW5uakBlbWJlZGRlZHBsYW5ldC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMTkzOWQ5Njk0NDNjY2YzMTZjYWIyYmYzMmFiMTAyN2Q0ZGI1YmExYQpBdXRob3I6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgpEYXRlOglUdWUgTm92IDI4IDE2OjE3OjI3IDIwMDYgLTA2MDAKCiAgICBNYWtlIGZzbC1pMmMgbm90IGNvbmZsaWN0IHdpdGggU09GVCBJMkMKCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDE0MTk4YmY3NjhmZGM5NThlM2MxYWZkMjQwNGU1MjYyMjA4ZTk4ZDcKQXV0aG9yOiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KRGF0ZToJVHVlIE5vdiAyOCAxNjoxNzoxOCAyMDA2IC0wNjAwCgogICAgRml4IEkyQyBtYXN0ZXIgYWRkcmVzcyBpbml0aWFsaXphdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGNmM2QwNDVlNTFjYThkY2M2Y2Y3NTk4MjcxNDA4NjFkNmFjMjVjMDQKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgTm92IDI4IDIzOjMxOjE5IDIwMDYgLTA2MDAKCiAgICBBc3NpZ24gbWFpbnRhaW5lcnMgZm9yIG1wYzgzNDllbWRzIGFuZCBtcGM4MzYwZW1kcwoKICAgIERhdmUgZm9yIG1wYzgzNjBlbWRzLCBhbmQgbWUgZm9yIG1wYzgzNDllbWRzLgoKY29tbWl0IDFhYTkzNGM4MWI3N2YyMDgwZDNjYTRiMjI2ZWFiNjdiMTdhMzM5NjEKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgTm92IDI4IDIzOjI4OjMzIDIwMDYgLTA2MDAKCiAgICBFbGltaW5hdGUgZ2NjIDQgJ3VzZWQgdW5pbml0aWFsaXplZCcgd2FybmluZ3MgaW4gZHJpdmVycy9xZS91Y2NmLmMKCiAgICBnaXZlIGluaXRpYWwgdmFsdWVzIGZvciByZWdfbnVtLCBzaGlmdCwgcF9jbXh1Y3IgaW4gdWNjX3NldF9jbGtfc3JjCiAgICBzaW5jZSB0aGV5IGFyZSBwYXNzZWQgYnkgcmVmZXJlbmNlIHRvIHVjY19nZXRfY214dWNyX3JlZyBhbmQgYXNzaWduZWQuCgpjb21taXQgZTg1N2E1YmRiMzk1NGI4OTZjMDkyMGNiOWQ4ZDJiMWI5YzEwN2NlNQpBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBOb3YgMjggMTI6MDk6MzUgMjAwNiAtMDYwMAoKICAgIG1wYzgzeHg6IE1pc2NlbGxhbmVvdXMgY29kZSBzdHlsZSBmaXhlcwoKICAgIEltcGxlbWVudCB2YXJpb3VzIGNvZGUgc3R5bGUgZml4ZXMgYW5kIHNpbWlsYXIgY2hhbmdlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGU1OTU4MWM1NmFiNWQ2ZTAyMDdkZGFjM2IyYzFkNTVjYjM2ZWM3MDYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBOb3YgMjggMTc6NTU6NDkgMjAwNiArMDEwMAoKICAgIFtQQVRDSF0gRW5hYmxlIHRoZSBJY2VDdWJlL2xpdGU1MjAwIHZhcmlhbnRzIHRvIHBhc3MgYSBkZXZpY2UgdHJlZSB0byBMaW51eC4KCiAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGNvZGUgYW5kIGNvbmZpZ3VyYXRpb24gbmVjZXNzYXJ5IHRvIGJvb3Qgd2l0aCBhbgogICAgYXJjaC9wb3dlcnBjIExpbnV4IGtlcm5lbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBnbWFpbC5jb20+CiAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlNzMyZmFlYzk1YTgzY2I0NjhiNDg1MGFlODA3YzgzMDFkZGU4ZjZhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgTm92IDI4IDE2OjA5OjI0IDIwMDYgKzAxMDAKCiAgICBbUEFUQ0hdIFBQQzR4eDogNDQwU1AgUmV2LiBDIGRldGVjdGlvbiBhZGRlZAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlN2YzZTlmZjAxZmJkN2ZhNzJlYjQyYTk2NzVmYmVkNmJjNDczNmIwCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgTm92IDI4IDExOjA0OjQ1IDIwMDYgKzAxMDAKCiAgICBbUEFUQ0hdIG5hbmQ6IEZpeCBwYXRjaCBtZXJnZSBwcm9ibGVtCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDU4ZTNiMTRjMThlZDMyODhjZWVmOGQwODY5NDZkYmYzZGY2NGNjZjIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBOb3YgMjggMTE6MDQ6NDUgMjAwNiArMDEwMAoKICAgIFtQQVRDSF0gbmFuZDogRml4IHBhdGNoIG1lcmdlIHByb2JsZW0KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNGY0YjYwMmVjNzUyNGEwMzJiZGYzYzZkMjhjN2Y1MjVhNGE2N2VhYQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgpEYXRlOglNb24gTm92IDI3IDIyOjUzOjUzIDIwMDYgKzAxMDAKCiAgICBVcGRhdGUgQ0hBTkdFTE9HCgpjb21taXQgZjZlNDk1ZjU0Y2RiOGZlMzQwYjljMDNkZWFiNDBhZDc0NmQ1MmZhZQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE5vdiAyNyAxNzo0MzoyNSAyMDA2ICswMTAwCgogICAgW1BBVENIXSA0eHhfZW5ldC5jOiBDb3JyZWN0IHRoZSBzZXR0aW5nIG9mIHptaWlmZXIgcmVnaXN0ZXIKCiAgICBQYXRjaCBiZWxvdyBjb3JyZWN0cyB0aGUgc2V0dGluZyBvZiB0aGUgem1paWZlciByZWdpc3RlciwgaXQgd2FzCiAgICBvdmVyd3JpdHRpbmcgdGhlIHJlZ2lzdGVyIHJhdGhlciB0aGFuIE9SaW5nIHRoZSBzZXR0aW5ncy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOZWlsIFdpbHNvbiA8TldpbHNvbkBhaXJzcGFuLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkMWE3MjU0NTI5NjgwMGI3ZTIxOWY5MzEwNGFkNTgzNmYwMDAzZDY2CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gTm92IDI3IDE3OjM0OjEwIDIwMDYgKzAxMDAKCiAgICBbUEFUQ0hdIFNlbGVjdCBOQU5EIGVtYmVkZGVkIGVudmlyb25tZW50IGZyb20gYm9hcmQgY29uZmlndXJhdGlvbgoKICAgIFRoZSBjdXJyZW50IE5BTkQgQm9vdGxvYWRlciBzZXR1cCBmb3JjZXMgdGhlIGVudmlyb25tZW50CiAgICB2YXJpYWJsZXMgdG8gYmUgaW4gbGluZSB3aXRoIHRoZSBib290bG9hZGVyLiBUaGlzIGNoYW5nZQogICAgZW5hYmxlcyB0aGUgY29uZmlndXJhdGlvbiB0byBiZSBtYWRlIGluIHRoZSBib2FyZCBpbmNsdWRlCiAgICBmaWxlIGluc3RlYWQgc28gdGhhdCBpdCBjYW4gYmUgaW5kaXZpZHVhbGx5IGVuYWJsZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTmljayBTcGVuY2UgPG5pY2suc3BlbmNlQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMTU3ODQ4NjI4NTdjM2MyMjE0NDk4ZGVmY2ZlZDg0ZmYxMzdmYjgxZQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE5vdiAyNyAxNzoyMjoxOSAyMDA2ICswMTAwCgogICAgW1BBVENIXSBuYW5kX3dhaXQoKSB0aW1lb3V0IGZpeGVzCgogICAgVHdvIGZpeGVzIGZvciB0aGUgbmFuZF93YWl0KCkgZnVuY3Rpb24gaW4KICAgIGRyaXZlcnMvbmFuZC9uYW5kX2Jhc2UuYzoKCiAgICAxLiBVc2UgY29ycmVjdCB0aW1lb3V0cy4gVGhlIG9yaWdpbmFsIHRpbWVvdXRzIGluIExpbnV4CiAgICBzb3VyY2UgYXJlIDQwMG1zIGFuZCAyMG1zIG5vdCA0MHMgYW5kIDIwcwoKICAgIDIuIFJldHVybiBjb3JyZWN0IGVycm9yIHZhbHVlIGluIGNhc2Ugb2YgdGltZW91dC4gMCBpcwogICAgaW50ZXJwcmV0ZWQgYXMgT0suCgogICAgU2lnbmVkLW9mZi1ieTogUnVpIFNvdXNhIDxydWkuc291c2FAbGFwb3N0ZS5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZGE1NTUzYjA5NWJmMDRmNGYxMDlhZDdlNTY1ZGFlM2FiYTQ3YjIzMApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE5vdiAyNyAxNzowNDowNiAyMDA2ICswMTAwCgogICAgW1BBVENIXSBBbGxvdyBDT05GSUdfT0ZfRkxBVF9UUkVFIHRvIGJvb3QgYSBub24tYXJjaC9wb3dlcnBjIGtlcm5lbAoKICAgIFRoaXMgcGF0Y2ggYWxsb3dzIGFuIGFyY2gvcHBjIGtlcm5lbCB0byBiZSBib290ZWQgYnkganVzdCBwYXNzaW5nIDEgb3IgMgogICAgYXJndW1lbnRzIHRvIGJvb3RtLiAgSXQgcmVtb3ZlcyB0aGUgZ2V0ZW52KCJkaXNhYmxlX29mIikgdGVzdCB0aGF0IHVzZWQKICAgIHRvIGJlIHVzZWQgZm9yIHRoaXMgcHVycG9zZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CiAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhOTM5OGUwMTg1OTM3ODJjNWZhN2QwNzQxOTU1ZmMxMjU2YjM0YzFlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CU1vbiBOb3YgMjcgMTU6MzI6NDIgMjAwNiArMDEwMAoKICAgIE1pbm9yIGNvZGUgY2xlYW51cC4gVXBkYXRlIENIQU5HRUxPRy4KCmNvbW1pdCAxNzI5YjkyY2RlNTc1NDc2Njg0YmZmZTgxOWQwYjc3OTFiNTdiZmYyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gTm92IDI3IDE0OjUyOjA0IDIwMDYgKzAxMDAKCiAgICBbUEFUQ0hdIDR4eDogRml4IHByb2JsZW0gd2l0aCBib2FyZCBzcGVjaWZpYyByZXNldCBjb2RlIChub3cgZm9yIHJlYWwpCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGNjNWVlOGE5MmEwZTNjYTZmNzI3YWY3MWI4ZmQyMDY0NjBjN2FmZDcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBOb3YgMjcgMTQ6NDk6NTEgMjAwNiArMDEwMAoKICAgIFtQQVRDSF0gYWxwcjogcmVtb3ZlIHVudXNlZCBib2FyZCBzcGVjaWZpYyBmbGFzaCBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMWY5NGQxNjJlMmI1ZjBlZGMyOGQ5ZmIxMTQ4MjUwMmM0NGQyMThlMQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE5vdiAyNyAxNDo0ODo0MSAyMDA2ICswMTAwCgogICAgW1BBVENIXSA0eHg6IEZpeCBwcm9ibGVtIHdpdGggYm9hcmQgc3BlY2lmaWMgcmVzZXQgY29kZQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlYzBjMmVjNzI1YWVjOTUyNGExNzdhNzdjZTc1NTU5ZTY0NGE5MzFhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gTm92IDI3IDE0OjQ2OjA2IDIwMDYgKzAxMDAKCiAgICBbUEFUQ0hdIFJlbW92ZSB0ZXN0aW5nIDR4eCBlbmV0IFBIWSBzZXR1cAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxYzJjZTIyNjIwNjk1MTBmMzFjN2QzZmQ3ZWZkM2Q1OGI4YzBjMTQ4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gTm92IDI3IDE0OjEyOjE3IDIwMDYgKzAxMDAKCiAgICBbUEFUQ0hdIFVwZGF0ZSBQcm9kcml2ZSBBTFBSIGJvYXJkIHN1cHBvcnQgKDQ0MEdYKQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1OGI0ODU3NzY2OThjM2Q3MWVjNWEyMTVlMzkyMTIzYjRjMTVhZmEzCkF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KRGF0ZToJTW9uIE5vdiAyNyAxMTo1MToyMSAyMDA2ICswMTAwCgogICAgQWRkIGEgc21hbGwgUkVBRE1FIHdpdGggaW5mb3JtYXRpb24gb24gdGhlIGdlbmVyaWMgb2hjaSBkcml2ZXIuCgpjb21taXQgYWUzYjc3MGU0ZWFlOGU5OGI2ZTllMjk2NjJlMThjNDdmZGYwMTcxZgpBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CU1vbiBOb3YgMjcgMTE6NDY6NDYgMjAwNiArMDEwMAoKICAgIEZpeCBzb21lIGVuZGlhbm5lc3MgaXNzdWVzIHJlbGF0ZWQgdG8gdGhlIGdlbmVyaWMgb2hjaSBkcml2ZXIKCmNvbW1pdCA3YjU5YjNjN2E4Y2UyZTRiNTY3YWJmOTljMWNkNjY3YmYzNWI5NDE4CkF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KRGF0ZToJTW9uIE5vdiAyNyAxMTo0NDo1OCAyMDA2ICswMTAwCgogICAgSW50cm9kdWNlZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gQ09ORklHX1VTQl9PSENJX05FVyBpbiBvcmRlciB0byBiZSBhYmxlCiAgICB0byBjaG9vc2UgYmV0d2VlbiB0aGUgb2xkIGFuZCB0aGUgZ2VuZXJpYyBPSENJIGRyaXZlcnMuCgpjb21taXQgNTNlMzM2ZTlmZmM1MTAzNWJkYzRlNTg2NzYzMWIzMzc4NzYxYjRkZgpBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CU1vbiBOb3YgMjcgMTE6NDM6MDkgMjAwNiArMDEwMAoKICAgIE1vZGlmaWVkIHRoZSBtcGM1eHh4IGFuZCB0aGUgcHBjNHh4IGNwdSB0byB1c2UgdGhlIGdlbmVyaWMgT0hDSSBkcml2ZXIKICAgIGFuZCBhZGFwdGVkIGJvYXJkIGNvbmZpZ3MgVFFNNTIwMCBhbmQgeW9zZW1pdGUgYWNjb3JkaW5nbHkuIFRoaXMgY29tbWl0CiAgICBhbHNvIG1ha2VzIHRoZSBtYXhpbXVtIG51bWJlciBvZiByb290IGh1YiBwb3J0cyBjb25maWd1cmFibGUKICAgIChDRkdfVVNCX09IQ0lfTUFYX1JPT1RfUE9SVFMpLgoKY29tbWl0IDc4ZDYyMGViYjU4NzFkMjUyMjcwZGVkZmFkNjBjNjU2ODk5M2I3ODAKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBhdGxhcy5kZW54LmRlPgpEYXRlOglUaHUgTm92IDIzIDIyOjU4OjU4IDIwMDYgKzAxMDAKCiAgICBVcGRhdGVzIGZvciBUUU01MjAwIG1vZHVsZXM6CiAgICAtIGZpeCBvZmYtYnktb25lIGVycm9yIGluIGJvYXJkL3RxbTUyMDAvY2FtNTIwMF9mbGFzaC5jIGVycm9yIG1lc3NhZ2UKICAgIC0gc2ltcGxpZnkgInVkYXRlIiBkZWZpbml0aW9ucwoKY29tbWl0IDIwNTMyODMzMDRlZWRkZjI1MGQxMDllNjc5MWViNmZhNGNhZDE0ZjcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBOb3YgMjIgMTM6MjA6NTAgMjAwNiArMDEwMAoKICAgIFtQQVRDSF0gUFBDNHh4IHN0YXJ0LlM6IEZpeCBmb3IgcHJvY2Vzc29yIGVycmF0YQoKICAgIEZpeGVkIGNwdS9wcGM0eHgvc3RhcnQuUyBmb3IgNDQwRVB4IEVycmF0YTogZnVydGhlciBjb3JyZWN0cyBQUEM0NDBFUHgKICAgIGVycmF0YSAxLjEyOiA0NDBfMzMgYnkgbW92aW5nIHBhdGNoIHVwIGluIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogSmVmZiBNYW5uIDxtYW5uakBlbWJlZGRlZHBsYW5ldC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNGVmNjI1MTQwM2Y2Mzc4NDEwMDBlMGZlZjllODMyYWEwMTMzOTgyMgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE5vdiAyMCAyMDozOTo1MiAyMDA2ICswMTAwCgogICAgW1BBVENIXSBVcGRhdGUgQU1DQyBTZXF1b2lhIGNvbmZpZyBmaWxlIHRvIHN1cHBvcnQgNjRNQnl0ZSBOT1IgRkxBU0gKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZTRiYmQ4ZGExNjRiOTc2ZDM4NjE2YmQ5YzY5YzVlODZlMTkzY2RmMApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgpEYXRlOglNb24gTm92IDIwIDEwOjI4OjMwIDIwMDYgKzAxMDAKCiAgICBVcGRhdGUgQ0hBTkdFTE9HCgpjb21taXQgMjYwNDIxYTIxZTkzNGE2OGQzMWZiNjEyNWIwZmJkMjYzMWE4Y2EyMApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE5vdiAxMyAxMzo1NToyNCAyMDA2ICswMTAwCgogICAgW1BBVENIXSBDRkkgZHJpdmVyIEFNRCBDb21tYW5kIFNldCBUb3AgYm9vdCBnZW9tZXRyeSByZXZlcnNhbCwgZXRjLiBbVXBkYXRlZF0KCiAgICAgICAqIEFkZHMgc3VwcG9ydCBmb3IgQU1EIGNvbW1hbmQgc2V0IFRvcCBCb290IGZsYXNoIGdlb21ldHJ5IHJldmVyc2FsCiAgICAgICAqIEFkZHMgc3VwcG9ydCBmb3IgcmVhZGluZyBKRURFQyBNYW51ZmFjdHVyZXIgSUQgYW5kIERldmljZSBJRAogICAgICAgKiBBZGRzIHN1cHBvcnQgZm9yIGRpc3BsYXlpbmcgY29tbWFuZCBzZXQsIG1hbnVmYWN0dXJlciBpZCBhbmQKCSBkZXZpY2UgaWRzIChmbGluZm8pCiAgICAgICAqIE1ha2VzIGZsaW5mbyBvdXRwdXQgdG8gYmUgY29uc2lzdGVudCB3aGVuIENGR19GTEFTSF9FTVBUWV9JTkZPIGRlZmluZWQKICAgICAgICogUmVtb3ZlcyBvdXRkYXRlZCBjaGFuZ2UgaGlzdG9yeSAocmVmZXIgdG8gZ2l0IGxvZyBpbnN0ZWFkKQoKICAgIFNpZ25lZC1vZmYtYnk6IFRvbHVuYXkgT3JrdW4gPGxpc3RtZW1iZXJAb3JrdW4udXM+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYjIxYjUxMWQ0YzUwNDA4ZjQ4NTNmNDZmMDZiNjAxMjcyMTk2MjIzZgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgpEYXRlOglTdW4gTm92IDEyIDIxOjEzOjIzIDIwMDYgKzAxMDAKCiAgICBVcGRhdGUgQ0hBTkdFTE9HCgpjb21taXQgY2UzZjFhNDBjNTA3YWZiYWIwNmM1ZWI1OGNjZGM2NzEzZWRhMzI0NQpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVNhdCBOb3YgMTEgMjI6NDg6MjIgMjAwNiArMDEwMAoKICAgIERpc2FibGUgdGhlIHdhdGNoZG9nIGluIHRoZSBkZWZhdWx0IGNvbmZpZyBmb3IgdGhlIFYzOEIgYm9hcmQuCgpjb21taXQgNDRhNDdlNmRiMjY5NDg0MTIxMWYxYzhmZGJhZmQzNjk5MmU5Y2QxYQpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVNhdCBOb3YgMTEgMjI6NDM6MDAgMjAwNiArMDEwMAoKICAgIENoYW5nZSB0aGUgR1BJTyBwaW4gbXVsdGlwbGV4aW5nIGNvbmZpZ3VyYXRpb24gZm9yIFYzOEIuIFRoZSBVU0IgR1BJTyBwaW4KICAgIGdyb3VwIGlzIGVuYWJsZWQgZm9yIFVTQiBlYXJsaWVyIChpbiBjcHVfaW5pdF9mKCkgaW5zdGVhZCBvZgogICAgdXNiX2xvd2xldmVsX2luaXQoKSkuCgpjb21taXQgOTE2NTBiM2U0ZGU2ODgwMzhkNGY3MTI3OWM0NDg1OGUzZTJjNjg3MApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgpEYXRlOglNb24gTm92IDYgMTc6MDY6MzYgMjAwNiArMDEwMAoKICAgIFNlcXVlbnRpYWwgYWNjZXNzZXMgdG8gbm9uLWV4aXN0ZW50IG1lbW9yeSBtdXN0IGJlIHN5bmNocm9uaXplZCwKICAgIGF0IGxlYXN0IG9uIEcyIGNvcmVzLgoKICAgIFRoaXMgZml4ZXMgZ2V0X3JhbV9zaXplKCkgcHJvYmxlbXMgb24gTVBDNTIwMCBSZXYuIEIgYm9hcmRzLgoKY29tbWl0IGJlNWU2MTgxNWQ1YTFmYWMyOTBjZTljMGVmMDljYjZhOGU0Mjg4ZmEKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgTm92IDMgMTk6MTU6MDAgMjAwNiAtMDYwMAoKICAgIG1wYzgzeHg6IFVwZGF0ZSA4M3h4IHRvIHVzZSBmc2xfaTJjLmMKCiAgICBVcGRhdGUgdGhlIDgzeHggdHJlZSB0byB1c2UgSTJDIHN1cHBvcnQgaW4gZHJpdmVycy9mc2xfaTJjLmMuICBEZWxldGUKICAgIGNwdS9tcGM4M3h4L2kyYy5jLCBpbmNsdWRlL2FzbS1wcGMvaTJjLmgsIGFuZCBhbGwgcmVmZXJlbmNlcyB0byB0aG9zZSBmaWxlcy4KICAgIEFkZGVkIG11bHRpcGxlIEkyQyBidXMgc3VwcG9ydCB0byBmc2xfaTJjLmMuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkMjM5ZDc0YjFjOTM3OTg0YmM1MTkwODNhOGU3ZGUzNzNhMzkwZjA2CkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE5vdiAzIDEyOjAwOjI4IDIwMDYgLTA2MDAKCiAgICBtcGM4M3h4OiBSZXBsYWNlIENGR19JTU1SQkFSIHdpdGggQ0ZHX0lNTVIKCiAgICBSZXBsYWNlIGFsbCBpbnN0YW5jZXMgb2YgQ0ZHX0lNTVJCQVIgd2l0aCBDRkdfSU1NUiwgc28gdGhhdCB0aGUgODN4eAogICAgdHJlZSBtYXRjaGVzIHRoZSBvdGhlciA4eHh4IHRyZWVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjdmYjJlNzAzZWM5Njg4NTQxNDE2OTYyNzI0YWRmZjcwYTczMjJjYgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBOb3YgMiAxOTo0NzoxMSAyMDA2IC0wNjAwCgogICAgbXBjODN4eDogTGluZGVudCBhbmQgY2xlYW4gdXAgY3B1L21wYzgzeHgvc3BlZWQuYwoKY29tbWl0IDkwZjMwYTcxMGEzYzYxOWI1NDA1ODYwYTY4NmM0ZGRmYzQ5NWQ0YjYKQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTm92IDIgMTg6MDU6NTAgMjAwNiAtMDYwMAoKICAgIG1wYzgzeHg6IEZpeCB0aGUgaW5jb3JyZWN0IGRjYnogb3BlcmF0aW9uCgogICAgVGhlIDgzNHggcmV2MS54IHNpbGljb24gaGFzIG9uZSBDUFU1IGVycmF0YS4KCiAgICBUaGUgaXNzdWUgaXMgd2hlbiB0aGUgZGF0YSBjYWNoZSBsb2NrZWQgd2l0aAogICAgSElEMFtETE9DS10sIHRoZSBkY2J6IGluc3RydWN0aW9uIGxvb2tzIGxpa2Ugbm8tb3AgaW5zdC4KCiAgICBUaGUgcmlnaHQgYmVoYXZpb3Igb2YgdGhlIGRhdGEgY2FjaGUgaXMgd2hlbiB0aGUgZGF0YSBjYWNoZQogICAgTG9ja2VkIHdpdGggSElEMFtETE9DS10sIHRoZSBkY2J6IGluc3RydWN0aW9uIGFsbG9jYXRlcwogICAgbmV3IHRhZ3MgaW4gY2FjaGUuCgogICAgVGhlIDgzNHggcmV2My4wIGFuZCBsYXRlciBhbmQgODM2MCBoYXZlIG5vdCB0aGlzIGJ1ZyBpbnNpZGUuCgogICAgU28sIHdoZW4gODM0eCByZXYzLjAvODM2MCBhcmUgd29ya2luZyB3aXRoIEVDQywgdGhlIGRjYnoKICAgIGluc3RydWN0aW9uIHdpbGwgY29ycnVwdCB0aGUgc3RhY2sgaW4gY2FjaGUsIHRoZSBwcm9jZXNzb3Igd2lsbAogICAgY2hlY2tzdG9wIHJlc2V0LgoKICAgIEhvd2V2ZXIsIHRoZSA4MzR4IHJldjEueCBjYW4gd29yayB3aXRoIEVDQyB3aXRoIHRoZXNlIGNvZGUsCiAgICBiZWNhdXNlIHRoZSBzaWxsaWNvbiBoYXMgdGhpcyBjYWNoZSBidWcuIFRoZSBkY2J6IHdpbGwgbm90CiAgICBjb3JydXB0IHRoZSBzdGFjayBpbiBjYWNoZS4KICAgIFJlYWxseSwgaXQgaXMgdGhlIGZhdWx0IGNvZGUgcnVubmluZyBvbiBmYXVsdCBzaWxsaWNvbi4KCiAgICBUaGlzIHBhdGNoIGZpeCB0aGUgaW5jb3JyZWN0IGRjYnogb3BlcmF0aW9uLiBJbnN0ZWFkIG9mCiAgICBDUFUgRlAgd3JpdGluZyB0byBpbml0aWFsaXNlIHRoZSBFQ0MuCgogICAgQ0hBTkdFTE9HOgogICAgKiBGaXggdGhlIGluY29ycmVjdCBkY2J6IG9wZXJhdGlvbiBpbnN0ZWFkIG9mIENQVSBGUAogICAgd3JpdGluZyB0byBpbml0aWFsaXNlIHRoZSBFQ0MgbWVtb3J5LiBPdGhlcndpc2UsIGl0CiAgICB3aWxsIGNvcnJ1cHQgdGhlIHN0YWNrIGluIGNhY2hlLCBUaGUgcHJvY2Vzc29yIHdpbGwgY2hlY2tzdG9wCiAgICByZXNldC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGJmMGI1NDJkNjc3M2E1YTFjYmNlNzc2OTFmMDA5YjA2ZDlhZWI1N2QKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTm92IDEgMDA6MTA6NDAgMjAwNiAtMDYwMAoKICAgIG1wYzgzeHg6IGFkZCBPRl9GTEFUX1RSRUUgYml0cyB0byA4M3h4IGJvYXJkcwoKICAgIGFkZCBmdF9wY2lfc2V0dXAsIE9GX0NQVSwgT0ZfU09DLCBPRl9UQkNMSywgYW5kCiAgICBTVERPVVRfUEFUSCBjb25maWd1cmF0aW9uIGJpdHMgdG8gbXBjODM0OWVtZHMsCiAgICBtcGM4MzQ5aXR4LCBhbmQgbXBjODM2MGVtZHMgYm9hcmQgY29kZS4KCiAgICByZWRvIGVudmlyb25tZW50IHRvIHVzZSBib290bSB3aXRoIHRoZSBmZHRhZGRyCiAgICBmb3IgYm9vdGluZyBBUkNIPXBvd2VycGMga2VybmVscyBieSBkZWZhdWx0LAogICAgYW5kIHByb3ZpZGUgZGVmYXVsdCBmZHRhZGRyIHZhbHVlcy4KCmNvbW1pdCA0ODA0MTM2NWIzNDIwNTg5YWQ0NjRlYmM3NzUyZTAwNTM1MzhiNzI5CkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE5vdiAxIDAwOjA3OjI1IDIwMDYgLTA2MDAKCiAgICBtcGM4M3h4OiBjaGFuZ2UgZnQgY29kZSB0byBtb2RpZnkgbG9jYWwtbWFjLWFkZHJlc3MgcHJvcGVydHkKCiAgICBVcGRhdGUgODN4eCBPRiBjb2RlIHRvIHVwZGF0ZSBsb2NhbC1tYWMtYWRkcmVzcyBwcm9wZXJ0aWVzCiAgICBmb3IgZXRoZXJuZXQgaW5zdGVhZCBvZiB0aGUgb2Jzb2xldGUgJ2FkZHJlc3MnIHByb3BlcnR5LgoKY29tbWl0IDljYTg4MGEyNTA4NzBhN2Q1NTc1NDI5MWI1NTkxZDJiNWZlODliNTQKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgT2N0IDMxIDIxOjIzOjE2IDIwMDYgLTA2MDAKCiAgICBtcGM4M3h4OiBGaXggZHVhbCBJMkMgc3VwcG9ydCBmb3IgdGhlIE1QQzgzNDlJVFgsIE1QQzgzNDlFTURTLCBUUU04MzR4LCBhbmQgTVBDODM2MEVNRFMKCiAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyBhbiBpbXByb3ZlZCBJMkMgc2V0X3NwZWVkKCksIHdoaWNoIGhhbmRsZXMgYWxsIGNsb2NrCiAgICBmcmVxdWVuY2llcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGFjNGI1NjIyY2UwNTBiNWVlMWUxNTRiOThkZjYzMGQ3Nzg2NjE2MzIKQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgT2N0IDMxIDE5OjU0OjU5IDIwMDYgLTA2MDAKCiAgICBtcGM4M3h4OiBhZGQgdGhlIFJFQURNRS5tcGM4MzYwZW1kcwoKICAgIGFkZCBkb2MvUkVBRE1FLm1wYzgzNjBlbWRzIHRvIGFjY29tcGFueSB0aGUgbmV3IGJvYXJkIHN1cHBvcnQKCmNvbW1pdCA3NzM3ZDVjNjU4YzYwNmY5OTlkZmJlM2U4NmIwZmVkNDllNWM1MGVmCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE5vdiAzIDEyOjExOjE1IDIwMDYgLTA2MDAKCiAgICBtcGM4M3h4OiBhZGQgUUUgZXRoZXJuZXQgc3VwcG9ydAoKICAgIHRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgUVVJQ0MgRW5naW5lIGJhc2VkIFVDQyBnaWdhYml0IGV0aGVybmV0IGRldmljZS4KCmNvbW1pdCA1ZjgyMDQzOTRlMzliYmU4Y2Q5ZjA4YjhmOGQxNDViNmMwMWY3YzczCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE5vdiAzIDE5OjMzOjQ0IDIwMDYgLTA2MDAKCiAgICBtcGM4M3h4OiBBZGQgTVBDODM2MEVNRFMgYmFzaWMgYm9hcmQgc3VwcG9ydAoKICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgRnJlZXNjYWxlIE1QQzgzNjBFTURTIGJvYXJkLgogICAgSW5jbHVkZXMgRERSLCBEVUFSVCwgTG9jYWwgQnVzLCBQQ0kuCgpjb21taXQgMjM4OTJlNDkzNTJkZTc0ZjdmYWMzNmZmOTBiYjFiZTE0M2QxOTVlMwpBdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBPY3QgMzEgMTk6MzA6NDAgMjAwNiAtMDYwMAoKICAgIG1wYzgzeHg6IGFkZCB0aGUgUVVJQ0MgRW5naW5lIChRRSkgaW1tYXAgZmlsZQoKICAgIGNvbW1vbiBRRSBpbW1hcCBmaWxlLiAgQWxzbyByZXF1aXJlZCBmb3IgODM2MC4KCmNvbW1pdCBiNzAxNjUyYTQ5OTJiZGNjNjJmYjFhNjAzOGE4NWJlZWY5ZTU1ZGE0CkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE9jdCAzMSAxOToyNTozOCAyMDA2IC0wNjAwCgogICAgbXBjODN4eDogQWRkIDgzNjAgc3BlY2lmaWNzIHRvIDgzeHggaW1tYXAKCiAgICBNYWlubHkgYWRkIFFFIGRldmljZSBkZXBlbmRlbmNpZXMsIHdpdGggYXBwcm9wcmlhdGUgODM2MCBwcm90ZWN0aW9uLgogICAgTGluZGVudCBhbHNvIHJ1bi4KCmNvbW1pdCA5ODg4MzMzMjRhN2ZkYTQ4MmM4YWMzY2EyM2ViNTM5ZjgyMzJlNDA0CkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE9jdCAzMSAxOToxNDo0MSAyMDA2IC0wNjAwCgogICAgbXBjODN4eDogRml4IFBDSSwgVVNCLCBib290YXJncyBmb3IgTVBDODM0OUUtbUlUWAoKICAgIFBSRVJFUVVJU0lURSBQQVRDSEVTOgoKICAgICogVGhpcyBwYXRjaCBjYW4gb25seSBiZSBhcHBsaWVkIGFmdGVyIHRoZSBmb2xsb3dpbmcgcGF0Y2hlcyBoYXZlIGJlZW4gYXBwbGllZDoKCiAgICAgIDEpIEROWCMyMDA2MDkyMTQyMDAwMDE1ICJBZGQgc3VwcG9ydCBmb3IgdGhlIE1QQzgzNDlFLW1JVFggIDEvMiIKICAgICAgMikgRE5YIzIwMDYwOTIxNDIwMDAwMjQgIkFkZCBzdXBwb3J0IGZvciB0aGUgTVBDODM0OUUtbUlUWCAgMi8yIgoKICAgIENIQU5HRUxPRzoKCiAgICAqIEZvciB0aGUgODM0OUUtbUlUWCwgZml4IHNvbWUgc2l6ZSB2YWx1ZXMgaW4gcGNpX2luaXRfYm9hcmQoKSwgZW5hYmxlCiAgICAgIHRoZSBjbG9jayBmb3IgdGhlIDJuZCBVU0IgYm9hcmQgKExpbnV4IGtlcm5lbCB3aWxsIGhhbmcgb3RoZXJ3aXNlKSwKICAgICAgYW5kIGZpeCB0aGUgQ09ORklHX0JPT1RBUkdTIG1hY3JvLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMmFkNmI1MTNiMzEwNzBiZDBjMDAzNzkyZWQxYzNlN2Y1ZDc0MDM1NwpBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBPY3QgMzEgMTg6NDQ6NDIgMjAwNiAtMDYwMAoKICAgIG1wYzgzeHg6IEFkZCBzdXBwb3J0IGZvciB0aGUgTVBDODM0OUUtbUlUWAoKICAgIFBSRVJFUVVJU0lURSBQQVRDSEVTOgoKICAgICogVGhpcyBwYXRjaCBjYW4gb25seSBiZSBhcHBsaWVkIGFmdGVyIHRoZSBmb2xsb3dpbmcgcGF0Y2hlcyBoYXZlIGJlZW4gYXBwbGllZDoKCiAgICAgIDEpIEROWCMyMDA2MDkwNzQyMDAwMDI0ICJBZGQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgSTJDIGJ1c2VzIgogICAgICAyKSBETlgjMjAwNjA5MDc0MjAwMDAzMyAiTXVsdGktYnVzIEkyQyBpbXBsZW1lbnRhdGlvbiBvZiBNUEM4MzR4IgogICAgICAzKSBETlgjMjAwNjA5MTI0MjAwMDA0MSAiQWRkaXRpb25hbCBNUEM4MzQ5IHN1cHBvcnQgZm9yIG11bHRpYnVzIGkyYyIKICAgICAgNCkgRE5YIzIwMDYwOTEyNDIwMDAwNzggIkFkZCBzdXBwb3J0IGZvciB2YXJpYWJsZSBmbGFzaCBtZW1vcnkgc2l6ZXMgb24gODN4eCBzeXN0ZW1zIgogICAgICA1KSBETlgjMjAwNjA5MTI0MjAwMDA2OSAiQWRkIHN1cHBvcnQgZm9yIEVycmF0YSBERFI2IG9uIE1QQyA4MzR4IHN5c3RlbXMiCgogICAgQ0hBTkdFTE9HOgoKICAgICogQWRkIHN1cHBvcnQgZm9yIHRoZSBGcmVlc2NhbGUgTVBDODM0OUUtbUlUWCByZWZlcmVuY2UgZGVzaWduIHBsYXRmb3JtLgogICAgICBUaGUgc2Vjb25kIFRTRUMgKFZpdGVzc2UgNzM4NSBzd2l0Y2gpIGlzIG5vdCBzdXBwb3J0ZWQgYXQgdGhpcyB0aW1lLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTgzZGE2ZDliNDQ2Y2MxMjEyMzQ1NTg0NGFkMTE4N2UyMzc1NjI2ZgpBdXRob3I6IEJlbiBXYXJyZW4gPGJ3YXJyZW5AcXN0cmVhbXMuY29tPgpEYXRlOglUdWUgU2VwIDEyIDEwOjE1OjUzIDIwMDYgLTA0MDAKCiAgICBBZGRpdGlvbmFsIE1QQzgzNDkgc3VwcG9ydCBmb3IgbXVsdGlidXMgaTJjCgogICAgSGVsbG8sCgogICAgSGVyZSBpcyBhIHBhdGNoIGZvciBhIGZpbGUgdGhhdCB3YXMgYWNjaWRlbnRhbGx5IGxlZnQgb3V0IG9mIGEgcHJldmlvdXMKICAgIGF0dGVtcHQuCgogICAgSXQgYWNjb21wYW5pZXMgdGhlIHBhdGNoIHdpdGggdGlja2V0IEROWCMyMDA2MDkwNzQyMDAwMDI0CgogICAgQ0hBTkdFTE9HOgoJICAgIENoYW5nZSBQQ0kgaW5pdGlhbGl6YXRpb24gdG8gdXNlIG5ldyBtdWx0aS1idXMgSTJDIEFQSS4KCiAgICByZWdhcmRzLAogICAgQmVuCgpjb21taXQgYjI0ZjExOWQ2NzJiNzA5ZDE1M2ZmMmFjMDkxZDRhYTYzZWM2ODc3ZApBdXRob3I6IEJlbiBXYXJyZW4gPGJ3YXJyZW5AcXN0cmVhbXMuY29tPgpEYXRlOglUaHUgU2VwIDcgMTY6NTE6MDQgMjAwNiAtMDQwMAoKICAgIE11bHRpLWJ1cyBJMkMgaW1wbGVtZW50YXRpb24gb2YgTVBDODM0eAoKICAgIEhlbGxvLAoKICAgIEF0dGFjaGVkIGlzIGEgcGF0Y2ggaW1wbGVtZW50aW5nIG11bHRpcGxlIEkyQyBidXNlcyBvbiB0aGUgTVBDODM0eCBDUFUKICAgIGZhbWlseSBhbmQgdGhlIE1QQzgzNDlFTURTIGJvYXJkIGluIHBhcnRpY3VsYXIuCiAgICBUaGlzIHBhdGNoIHJlcXVpcmVzIFBhdGNoIDEgKEFkZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBJMkMgYnVzZXMpLgogICAgVGVzdGluZyB3YXMgcGVyZm9ybWVkIG9uIGEgNTMzTUh6IGJvYXJkLgoKICAgIC8qKiogTm90ZTogVGhpcyBwYXRjaCByZXBsYWNlcyB0aWNrZXQgRE5YIzIwMDYwODMwNDIwMDAwMjcgKioqLwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJ3YXJyZW5AcXN0cmVhbXMuY29tPgoKICAgIENIQU5HRUxPRzoKCSAgICBJbXBsZW1lbnRlZCBkcml2ZXItbGV2ZWwgY29kZSB0byBzdXBwb3J0IHR3byBJMkMgYnVzZXMgb24gdGhlCiAgICBNUEM4MzR4IENQVSBmYW1pbHkgYW5kIHRoZSBNUEM4MzQ5RU1EUyBib2FyZC4gIEF2YWlsYWJsZSBJMkMgYnVzIHNwZWVkcwogICAgYXJlIDUwa0h6LCAxMDBrSHogYW5kIDQwMGtIeiBvbiBlYWNoIGJ1cy4KCiAgICByZWdhcmRzLAogICAgQmVuCgpjb21taXQgYmI5OWFkNmQ4MjU3YmY4MjhmMTUwZDQwZjUwN2IzMGQ4MGE0YTdhZQpBdXRob3I6IEJlbiBXYXJyZW4gPGJ3YXJyZW5AcXN0cmVhbXMuY29tPgpEYXRlOglUaHUgU2VwIDcgMTY6NTA6NTQgMjAwNiAtMDQwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBJMkMgYnVzZXMKCiAgICBIZWxsbywKCiAgICBBdHRhY2hlZCBpcyBhIHBhdGNoIHByb3ZpZGluZyBzdXBwb3J0IGZvciBtdWx0aXBsZSBJMkMgYnVzZXMgYXQgdGhlCiAgICBjb21tYW5kIGxldmVsLiAgVGhlIHNlY29uZCBwYXJ0IG9mIHRoZSBwYXRjaCBpbmNsdWRlcyBhbiBpbXBsZW1lbnRhdGlvbgogICAgZm9yIHRoZSBNUEM4MzR4IENQVSBhbmQgTVBDODM0OUVNRFMgYm9hcmQuCgogICAgLyoqKiBOb3RlOiBUaGlzIHBhdGNoIHJlcGxhY2VzIHRpY2tldCBETlgjMjAwNjA4MzA0MjAwMDAxOCAqKiovCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YndhcnJlbkBxc3RyZWFtcy5jb20+CgogICAgT3ZlcnZpZXc6CgogICAgMS4gSW5jbHVkZSBuZXcgJ2kyYycgY29tbWFuZCAoYmFzZWQgb24gVVNCIGltcGxlbWVudGF0aW9uKSB1c2luZwogICAgQ09ORklHX0kyQ19DTURfVFJFRS4KCiAgICAyLiBBbGxvdyBtdWx0aXBsZSBidXNlcyBieSBkZWZpbmluZyBDT05GSUdfSTJDX01VTFRJX0JVUy4gIE5vdGUgdGhhdAogICAgdGhlIGNvbW1hbmRzIHRvIGNoYW5nZSBidXMgbnVtYmVyIGFuZCBzcGVlZCBhcmUgb25seSBhdmFpbGFibGUgdW5kZXIgdGhlCiAgICBuZXcgJ2kyYycgY29tbWFuZCBtZW50aW9uZWQgaW4gdGhlIGZpcnN0IGJ1bGxldC4KCiAgICAzLiBUaGUgb3B0aW9uIENGR19JMkNfTk9QUk9CRVMgaGFzIGJlZW4gZXhwYW5kZWQgdG8gd29yayBpbiBtdWx0aS1idXMKICAgIHN5c3RlbXMuICBXaGVuIENPTkZJR19JMkNfTVVMVElfQlVTIGlzIHVzZWQsIHRoaXMgb3B0aW9uIHRha2VzIHRoZSBmb3JtCiAgICBvZiBhbiBhcnJheSBvZiBidXMtZGV2aWNlIHBhaXJzLiAgT3RoZXJ3aXNlLCBpdCBpcyBhbiBhcnJheSBvZiB1Y2hhci4KCiAgICBDSEFOR0VMT0c6CgkgICAgQWRkZWQgbmV3ICdpMmMnIG1hc3RlciBjb21tYW5kIGZvciBhbGwgSTJDIGludGVyYWN0aW9uLiAgVGhpcyBpcwogICAgY29uZGl0aW9uYWxseSBjb21waWxlZCB3aXRoIENPTkZJR19JMkNfQ01EX1RSRUUuICBOZXcgY29tbWFuZHMgYWRkZWQgZm9yCiAgICBzZXR0aW5nIEkyQyBidXMgc3BlZWQgYXMgd2VsbCBhcyBjaGFuZ2luZyB0aGUgYWN0aXZlIGJ1cyBpZiB0aGUgYm9hcmQKICAgIGhhcyBtb3JlIHRoYW4gb25lIChjb25kaXRpb25hbGx5IGNvbXBpbGVkIHdpdGgKICAgIENPTkZJR19JMkNfTVVMVElfQlVTKS4gIFVwZGF0ZWQgTk9QUk9CRSBsb2dpYyB0byBoYW5kbGUgbXVsdGlwbGUgYnVzZXMuCiAgICBVcGRhdGVkIFJFQURNRS4KCiAgICByZWdhcmRzLAogICAgQmVuCgpjb21taXQgYmVkODVjYWY4NzI3MTRlYmY1MzAxMzk2N2E2OTVjOWQ2M2FjZmM2OApBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBPY3QgMzEgMTg6MTM6MzYgMjAwNiAtMDYwMAoKICAgIG1wYzgzeHg6IEFkZCBzdXBwb3J0IGZvciBFcnJhdGEgRERSNiBvbiBNUEMgODM0eCBzeXN0ZW1zCgogICAgQ0hBTkdFTE9HOgoKICAgICogRXJyYXRhIEREUjYsIHdoaWNoIGFmZmVjdHMgYWxsIGN1cnJlbnQgTVBDIDgzNHggcHJvY2Vzc29ycywgbGlzdHMgY2hhbmdlcwogICAgICByZXF1aXJlZCB0byBtYWludGFpbiBjb21wYXRpYmlsaXR5IHdpdGggdmFyaW91cyB0eXBlcyBvZiBERFIgbWVtb3J5LiAgVGhpcwogICAgICBwYXRjaCBpbXBsZW1lbnRzIHRob3NlIGNoYW5nZXMuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhZmQ2ZTQ3MGY2Mzk4ODMwMDJjN2M1OWQ1NjI2OTBhNWNiMGY0ODY1CkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE9jdCAyNSAxODo0NToyMyAyMDA2IC0wNTAwCgogICAgbXBjODN4eDogZml4IFRRTSBidWlsZCBieSBkZWZpbmluZyBhIENGR19GTEFTSF9TSVpFIGZvciBpdAoKY29tbWl0IDMxMDY4YjdjNGFiZWVmY2IyYzhmZDRmYmVjY2M4ZWM2YzZkMDQ3NWEKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDIyIDE3OjA3OjAwIDIwMDYgLTA1MDAKCiAgICBtcGM4M3h4OiBBZGQgc3VwcG9ydCBmb3IgdmFyaWFibGUgZmxhc2ggbWVtb3J5IHNpemVzIG9uIDgzeHggc3lzdGVtcwoKICAgIENIQU5HRUxPRzoKCiAgICAqIE9uIDgzeHggc3lzdGVtcywgdXNlIHRoZSBDRkdfRkxBU0hfU0laRSBtYWNybyB0byBwcm9ncmFtIHRoZSBMQkMgbG9jYWwgYWNjZXNzCiAgICAgICB3aW5kb3cgcmVnaXN0ZXJzLCBpbnN0ZWFkIG9mIHVzaW5nIGEgaGFyZC1jb2RlZCB2YWx1ZSBvZiA4TUIuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyZmMzNGFlNjZlNzNmYTc4NDFkMWEwMDZkYzFiNWRjYmMxZjc4OTY1CkF1dGhvcjogVGFueWEgSmlhbmcgPHRhbnlhLmppYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBBdWcgMyAxODozODoxMyAyMDA2ICswODAwCgogICAgbXBjODN4eDogVW5pZmllZCBUUU04MzR4IHZhcmlhYmxlIG5hbWVzIHdpdGggODN4eCBhbmQgY29uc29saWRhdGVkIG1hY3JvcwoKICAgIFVuaWZpZWQgVFFNODM0eCB2YXJpYWJsZSBuYW1lcyB3aXRoIDgzeHggYW5kIGNvbnNvbGlkYXRlZCBtYWNybwogICAgaW4gcHJlcGFyYXRpb24gZm9yIHRoZSA4MzYwIGFuZCBvdGhlciB1cGNvbWluZyA4M3h4IGRldmljZXMuCgogICAgU2lnbmVkLW9mZi1ieTogVGFueWEgSmlhbmcgPHRhbnlhLmppYW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjZlZGE3ZjgwY2NjMTNkNjU4MDIwMjY4YzUwN2Q3MTczY2YyZThhYQpBdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBPY3QgMjUgMTQ6NDE6MjEgMjAwNiAtMDUwMAoKICAgIG1wYzgzeHg6IENoYW5nZWQgdG8gdW5pZmllZCBtcHg4M3h4IG5hbWVzIGFuZCBhZGRlZCBjb21tb24gODN4eCBjaGFuZ2VzCgogICAgSW5jb3Jwb3JhdGVkIHRoZSBjb21tb24gdW5pZmllZCB2YXJpYWJsZSBuYW1lcyBhbmQgdGhlIGNoYW5nZXMgaW4gcHJlcGFyYXRpb24KICAgIGZvciByZWxlYXNpbmcgbXBjODM2MCBwYXRjaGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzg5NGM0NmMyN2M2NDg5MWY5M2FjMDRlZGRlODZhOWZhOTc1OGQ5MgpBdXRob3I6IFRhbnlhIEppYW5nIDx0YW55YS5qaWFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXVnIDMgMTg6MzY6MDIgMjAwNiArMDgwMAoKICAgIG1wYzgzeHg6IEZpeCBtaXNzaW5nIGJ1aWxkIGZvciBtcGM4MzQ5ZW1kcyBwY2kuYwoKICAgIE1ha2UgcGNpIGJ1aWxkIGZvciBtcGM4MzQ5ZW1kcwoKICAgIFNpZ25lZC1vZmYtYnk6IFRhbnlhIEppYW5nIDx0YW55YS5qaWFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDA5YTgxZmY3NDBiMjlkZWVhMWUyYWIwOGEzYzJhYzEzNmMyZTYyMTkKQXV0aG9yOiBUYW55YSBKaWFuZyA8dGFueWEuamlhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEF1ZyAzIDE4OjM5OjQ5IDIwMDYgKzA4MDAKCiAgICBtcGM4M3h4OiBSZW1vdmVkIHVudXNlZCBmaWxlIHJlc2V0dmVjLlMgZm9yIG1wYzgzeHggY3B1CgogICAgUmVtb3ZlZCB1bnVzZWQgZmlsZSByZXNldHZlYy5TIGZvciBtcGM4M3h4IGNwdQoKICAgIFNpZ25lZC1vZmYtYnk6IFRhbnlhIEppYW5nIDx0YW55YS5qaWFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDA0Zjg5OWZjNDY1YzNlNDRmMmI1NWVjYzcwNjE4ZjU2OTZmYzBkZGYKQXV0aG9yOiBOaWNrIFNwZW5jZSA8Tmljay5TcGVuY2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU2F0IFNlcCAzMCAwMDozMjo1OSAyMDA2IC0wNzAwCgogICAgTkFORCBGbGFzaCB2ZXJpZnkgYWNyb3NzIGJsb2NrIGJvdW5kYXJpZXMKCiAgICBUaGlzIHBhdGNoIGFkZHJlc3NlcyBhIHByb2JsZW0gd2hlbiBDT05GSUdfTVREX05BTkRfVkVSSUZZX1dSSVRFIGlzCiAgICBkZWZpbmVkCiAgICBhbmQgdGhlIHdyaXRlIGNyb3NzZXMgYSBibG9jayBib3VuZGFyeS4gVGhlIHBvaW50ZXIgdG8gdGhlIHZlcmlmaWNhdGlvbgogICAgYnVmZmVyIChidWZzdGFydCkgaXMgbm90IGJlaW5nIHVwZGF0ZWQgdG8gcmVmbGVjdCB0aGUgc3RhcnRpbmcgb2YgdGhlCiAgICBuZXcKICAgIGJsb2NrIHNvIHRoZSB2ZXJpZmljYXRpb24gb2YgdGhlIHNlY29uZCBibG9jayBmYWlscy4KCiAgICBDSEFOR0VMT0c6CgogICAgKiBGaXggTkFORCBGTEFTSCBwYWdlIHZlcmlmaWNhdGlvbiBhY3Jvc3MgYmxvY2sgYm91bmRhcmllcwoKY29tbWl0IGY0ODRkYzc5MWEzOTMyNTM3MjEzYzQzYzY1NGNjMTI5NWM2NGI4NGMKQXV0aG9yOiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IFNlcCA3IDA3OjM5OjQ2IDIwMDYgLTA3MDAKCiAgICBBZGRlZCBSR01JSSBzdXBwb3J0IHRvIHRoZSBUU0VDcyBhbmQgTWFydmVsbCA4ODExMTEgUGh5CgogICAgQWRkZWQgYSBwaHkgaW5pdGlhbGl6YXRpb24gdG8gYWRqdXN0IHRoZSBSR01JSSBSWCBhbmQgVFggdGltaW5nCiAgICBBbHdheXMgc2V0IHRoZSBSMTAwIGJpdCBpbiAxMDAgQmFzZVQgbW9kZSByZWdhcmRsZXNzIG9mIHRoZSBUU0VDIG1vZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0ODMxYzhiOGE5Nzc5OWRhNzc5MjNkNmJiYjRjMjYwYzBkNDU1MjFjCkF1dGhvcjogcm95IHphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgTm92IDMgMTM6MTA6MDAgMjAwNiArMDgwMAoKICAgIFJlbW92ZSBzb21lIHVudXNlZCBDRkcgZGVmaW5lLgogICAgdW5kZWYgQ0ZHX0RSQU1fVEVTVAoKY29tbWl0IDk5YzA5YzRkZWMzNGY3N2MyNDNiZjUxYmVhNTMyZTNmMzM5NDEwYWQKQXV0aG9yOiByb3kgemFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBOb3YgMyAxMzowNzozNiAyMDA2ICswODAwCgogICAgQ2hhbmdlIHRoZSBURVhUX0JBU0UgZnJvbSAweEZGRjAwMDAwIHRvIDB4RkYwMDAwMDAuCiAgICBCb3RoIHdvcmsuIDB4RkYwMDAwMDAgc2VlbXMgbW9yZSByZWFzb25hYmxlLgoKY29tbWl0IGM1OTIwMDQ0MzA3MjM1MzA0NGFhNGJmNzM3YTVhNjBmOWE5YWYyMzEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJVGh1IE5vdiAyIDE1OjE1OjAxIDIwMDYgKzAxMDAKCiAgICBSZWxlYXNlIFUtQm9vdCAxLjEuNgoKY29tbWl0IGMxZmJlNDEwM2EwZDZjODk1N2Y5MTJhZjkwMmQ3MDViYTY3ODM2ZjIKQXV0aG9yOiByb3kgemFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBOb3YgMiAxOToxNDo0OCAyMDA2ICswODAwCgogICAgVGhpcyBwYXRjaCBjb21lcyBmcm9tIFl1bGkncyBwb3N0ZWQgcGF0Y2ggb24gOC84LzIwMDYKICAgIHRpdGxlZCAiQ0ZJIERyaXZlciBMaXR0bGUtRW5kaWFuIHdyaXRlIElzc3VlIi4KCiAgICBodHRwOi8vc291cmNlZm9yZ2UubmV0L21haWxhcmNoaXZlL21lc3NhZ2UucGhwP21zZ19pZD0zNjMxMTk5OQoKICAgIElmIHRoYXQgcGF0Y2ggYXBwbGllZCwgcGxlYXNlIGRpc2NhcmQgdGhpcyBvbmUuCiAgICBVbnRpbCBub3cgLCBJIGRvIG5vdCBzZWUgaGlzIHBhdGNoIGlzIGFwcGxpZWQuIFNvIHBsZWFzZSBhcHBseSB0aGlzIG9uZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZdWxpIEJhcmNvaGVuIDx5dWxpQGFyYWJlbGxhc3cuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGI4MjVmMTU4ZTQ0OWUxZTljZjc0YzA4ZTU3Mjk1NWUxMjIzOTRjOTYKQXV0aG9yOiByb3kgemFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBOb3YgMiAxOToxMjozMSAyMDA2ICswODAwCgogICAgVHNpMTA4IG9uIGNoaXAgaTJjIHN1cHBvcnQuCgogICAgVGhlIGkyYyAgSW50ZXJmYWNlIHByb3ZpZGVzIGEgbWFzdGVyLW9ubHksIHNlcmlhbCBpbnRlcmZhY2UgdGhhdCBjYW4gYmUKICAgIHVzZWQgZm9yIGluaXRpYWxpemluZyBUc2kxMDgvVHNpMTA5IHJlZ2lzdGVycyBmcm9tIGFuIEVFUFJPTSBhZnRlciBhCiAgICBkZXZpY2UgcmVzZXQuCgogICAgU2lnbmVkLW9mZi1ieTogQWxleGFuZHJlIEJvdW5pbmUgPGFsZXhhbmRyZWJAdHVuZHJhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5MjI2ZTdkNmYwOWI5YTFhYzA3NGNkOTE4YzgxMjI1YTQ2ODliYmE4CkF1dGhvcjogcm95IHphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTm92IDIgMTk6MTE6MDYgMjAwNiArMDgwMAoKICAgIFRzaTEwOCBvbiBjaGlwIHBjaSBjb250cm9sbGVyIHN1cHBvcnQuCgogICAgSWYgdGhlcmUgaXMgbm8gcGNpIGNhcmQsIHRoZSB0c2kxMDgvMTA5IHBjaSBjb25maWd1cmUgcmVhZCB3aWxsCiAgICBjYXVzZSBhIG1hY2hpbmUgY2hlY2sgZXhjZXB0aW9uIHRvIHRoZSBwcm9jZXNzb3IuIFBDSSBlcnJvciBzaG91bGQKICAgIGFsc28gYmUgY2xlYXJlZCBhZnRlciB0aGUgcmVhZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kcmUgQm91bmluZSA8YWxleGFuZHJlYkB0dW5kcmEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGQxOTI3Y2VlOTc3MTI2ZTU0N2NlZWJhMjNlNGY5NzhmMzc3Y2ZiOGYKQXV0aG9yOiByb3kgemFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBOb3YgMiAxOTowODo1NSAyMDA2ICswODAwCgogICAgVHVuZHJhIHRzaTEwOCBvbiBjaGlwIEV0aGVybmV0IGNvbnRyb2xsZXIgc3VwcG9ydC4KCiAgICBUaGUgZm9sbG93aW5nIGlzIGEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIEV0aGVybmV0IGNvbnRyb2xsZXI6CiAgICBUaGUgVHNpMTA4LzkgRXRoZXJuZXQgQ29udHJvbGxlciBjb25uZWN0cyBTd2l0Y2ggRmFicmljIHRvIHR3byBpbmRlcGVuZGVudAogICAgR2lnYWJpdCBFdGhlcm5ldCBwb3J0cyxFMCBhbmQgRTEuICBJdCB1c2VzIGEgc2luZ2xlIE1hbmFnZW1lbnQgaW50ZXJmYWNlCiAgICB0byBtYW5hZ2UgdGhlIHR3byBwaHlzaWNhbCBjb25uZWN0aW9uIGRldmljZXMgKFBIWXMpLiAgRWFjaCBFdGhlcm5ldCBwb3J0CiAgICBoYXMgaXRzIG93biBzdGF0aXN0aWNzIG1vbml0b3IgdGhhdCB0cmFja3MgYW5kIHJlcG9ydHMga2V5IGludGVyZmFjZQogICAgc3RhdGlzdGljcy4gIEVhY2ggcG9ydCBzdXBwb3J0cyBhIDI1Ni1lbnRyeSBoYXNoIHRhYmxlIGZvciBhZGRyZXNzCiAgICBmaWx0ZXJpbmcuCUluIGFkZGl0aW9uLCBlYWNoIHBvcnQgaXMgYnJpZGdlZCB0byB0aGUgU3dpdGNoIEZhYnJpYwogICAgdGhyb3VnaCBhIDItS2J5dGUgdHJhbnNtaXQgRklGTyBhbmQgYSA0LUtieXRlIFJlY2VpdmUgRklGTy4KCiAgICBFYWNoIEV0aGVybmV0IHBvcnQgYWxzbyBoYXMgYSBwYWlyIG9mIGludGVybmFsIEV0aGVybmV0IERNQSBjaGFubmVscyB0bwogICAgc3VwcG9ydCB0aGUgdHJhbnNtaXQgYW5kIHJlY2VpdmUgZGF0YSBmbG93cy4gIFRoZSBFdGhlcm5ldCBETUEgY2hhbm5lbHMKICAgIHVzZSBkZXNjcmlwdG9ycyBzZXQgdXAgaW4gbWVtb3J5LCB0aGUgbWVtb3J5IG1hcCBvZiB0aGUgZGV2aWNlLCBhbmQKICAgIGFjY2VzcyB2aWEgdGhlIFN3aXRjaCBGYWJyaWMuICBUaGUgRXRoZXJuZXQgQ29udHJvbGxlcj9zIERNQSBhcmJpdGVyCiAgICBoYW5kbGVzIGFyYml0cmF0aW9uIGZvciB0aGUgU3dpdGNoIEZhYnJpYy4JVGhlIENvbnRyb2xsZXIgYWxzbwogICAgaGFzIGEgcmVnaXN0ZXIgYnVzaW50ZXJmYWNlIGZvciByZWdpc3RlciBhY2Nlc3NlcyBhbmQgc3RhdHVzIG1vbml0b3IKICAgIGNvbnRyb2wuCgogICAgVGhlIFBNRCAoUGh5c2ljYWwgTWVkaWEgRGV2aWNlKSBpbnRlcmZhY2Ugb3BlcmF0ZXMgaW4gTUlJLCBHTUlJLCBvciBUQkkKICAgIG1vZGVzLiAgVGhlIE1JSSBtb2RlIGlzIHVzZWQgZm9yIGNvbm5lY3Rpbmcgd2l0aCAxMCBvciAxMDAgTWJpdC9zIFBNRHMuCiAgICBUaGUgR01JSSBhbmQgVEJJIG1vZGVzIGFyZSB1c2VkIHRvIGNvbm5lY3Qgd2l0aCBHaWdhYml0IFBNRHMuICBJbnRlcm5hbAogICAgZGF0YSBmbG93cyB0byBhbmQgZnJvbSB0aGUgRXRoZXJuZXQgQ29udHJvbGxlciB0aHJvdWdoIHRoZSBTd2l0Y2ggRmFicmljLgoKICAgIEVhY2ggRXRoZXJuZXQgcG9ydCB1c2VzIGl0cyB0cmFuc21pdCBhbmQgcmVjZWl2ZSBETUEgY2hhbm5lbHMgdG8gbWFuYWdlCiAgICBkYXRhIGZsb3dzIHRocm91Z2ggYnVmZmVyIGRlc2NyaXB0b3JzIHRoYXQgYXJlIHByZWRlZmluZWQgYnkgdGhlCiAgICBzeXN0ZW0gKHRoZSBkZXNjcmlwdG9ycyBjYW4gZXhpc3QgYW55d2hlcmUgaW4gdGhlIHN5c3RlbSBtZW1vcnkgbWFwKS4KICAgIFRoZXNlIGRlc2NyaXB0b3JzIGFyZSBkYXRhIHN0cnVjdHVyZXMgdGhhdCBwb2ludCB0byBidWZmZXJzIGZpbGxlZAogICAgd2l0aCBkYXRhIHJlYWR5IHRvIHRyYW5zbWl0IG92ZXIgRXRoZXJuZXQsIG9yIHRoZXkgcG9pbnQgdG8gZW1wdHkKICAgIGJ1ZmZlcnMgcmVhZHkgdG8gcmVjZWl2ZSBkYXRhIGZyb20gRXRoZXJuZXQuCgogICAgU2lnbmVkLW9mZi1ieTogQWxleGFuZHJlIEJvdW5pbmUgPGFsZXhhbmRyZWJAdHVuZHJhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3OGFhMGMzNDI3ZjNlY2RlYjM0YWFiZmJiZTJkZDIzYjZhZDhmNDBlCkF1dGhvcjogcm95IHphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTm92IDIgMTk6MDE6MzMgMjAwNiArMDgwMAoKICAgIFR1bmRyYSB0c2kxMDggaGVhZGVyIGZpbGUuCgogICAgVGhlIFR1bmRyYSBTZW1pY29uZHVjdG9yIENvcnBvcmF0aW9uIChUdW5kcmEpIFRzaTEwOCBpcyBhIGhvc3QgYnJpZGdlIGZvcgogICAgUG93ZXJQQyBwcm9jZXNzb3JzIHRoYXQgb2ZmZXJzIG51bWVyb3VzIHN5c3RlbSBpbnRlcmNvbm5lY3Qgb3B0aW9ucyBmb3IKICAgIGVtYmVkZGVkIGFwcGxpY2F0aW9uIGRlc2lnbmVycy4gVGhlIFRzaTEwOCBjYW4gaW50ZXJjb25uZWN0IDYweCBvcgogICAgTVBYIHByb2Nlc3NvcnMgdG8gUENJL1ggcGVyaXBoZXJhbHMsIEREUjItNDAwIG1lbW9yeSwgR2lnYWJpdCBFdGhlcm5ldCwKICAgIGFuZCBGbGFzaC4gUHJvdmlkZWQgdGhlIG1hY3JvIGRlZmluZSBmb3IgdHNpMTA4IGNoaXAuCgogICAgU2lnbmVkLW9mZi1ieTogQWxleGFuZHJlIEJvdW5pbmUgPGFsZXhhbmRyZWJAdHVuZHJhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4N2M0ZGIwOTY5OWM2Yjg5MTc2YjMxMDA0YWZjYjgzZWIxNTg1ZDQ3CkF1dGhvcjogcm95IHphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTm92IDIgMTg6NTk6MTUgMjAwNiArMDgwMAoKICAgIEFkZCAgbXBjNzQ0OGhwYzIgIChtcGM3NDQ4ICsgdHNpMTA4KSAgYm9hcmQgYXNzb2NpYXRlZCBjb2RlIHN1cHBvcnQuCiAgICBtcGM3NDQ4aHBjMiBib2FyZCBzdXBwb3J0IGhpZ2ggbGV2ZWwgY29kZTp0c2kxMDggaW5pdCArIG1wYzc0NDhocGMyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRyZSBCb3VuaW5lIDxhbGV4YW5kcmViQHR1bmRyYS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjc4MDFiOGFiMTFjNjFiNTc3ZTQ1NzQyYTUxNWJiM2IyM2I4MDI0MQpBdXRob3I6IHJveSB6YW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE5vdiAyIDE4OjU3OjIxIDIwMDYgKzA4MDAKCiAgICBBZGQgIG1wYzc0NDhocGMyICAobXBjNzQ0OCArIHRzaTEwOCkgIGJvYXJkIGFzc29jaWF0ZWQgY29kZSBzdXBwb3J0LgogICAgTWFrZSAsY29uZmlnLm1rIGFuZCBsaW5rIGZpbGUgZm9yIHRoZSBtcGM3NDQ4aHBjMiBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kcmUgQm91bmluZSA8YWxleGFuZHJlYkB0dW5kcmEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGM2NDExYzBjM2JiYzc5ZjliYThhZWY1ODI5NmE0MmQ4ZjlkOGEwYTYKQXV0aG9yOiByb3kgemFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBOb3YgMiAxODo1NTowNCAyMDA2ICswODAwCgogICAgQWRkICBtcGM3NDQ4aHBjMiAgKG1wYzc0NDggKyB0c2kxMDgpICBib2FyZCBhc3NvY2lhdGVkIGNvZGUgc3VwcG9ydC4KICAgIFRoZSBtcGM3NDQ4aHBjMiBib2FyZCBzdXBwb3J0IGhlYWRlciBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRyZSBCb3VuaW5lIDxhbGV4YW5kcmViQHR1bmRyYS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjI1YmI1ZGRiNTBiMjQzZjkzMTI2MmNhOGM0Njk1NjQwOTQ3MTkxNwpBdXRob3I6IHJveSB6YW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE5vdiAyIDE4OjUyOjIxIDIwMDYgKzA4MDAKCiAgICBBZGQgIG1wYzc0NDhocGMyICAobXBjNzQ0OCArIHRzaTEwOCkgIGJvYXJkIGFzc29jaWF0ZWQgY29kZSBzdXBwb3J0LgogICAgVGhlIG1wYzc0NDhocGMyIGJvYXJkIHN1cHBvcnQgbG93IGxldmVsIGFzc2VtYmxlIGxhbmd1YWdlIGluaXQgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kcmUgQm91bmluZSA8YWxleGFuZHJlYkB0dW5kcmEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRjNTI3ODNiM2QwMjRlMTUzYzQ5NzJiOTczMzJlMzE0YmMzYmRjNDYKQXV0aG9yOiByb3kgemFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBOb3YgMiAxODo0OTo1MSAyMDA2ICswODAwCgogICAgR2VuZXJhbCBjb2RlIG1vZGlmaWNhdGlvbiBmb3IgbXBjNzQ0OGhwYzIgYm9hcmQgc3VwcG9ydC4KICAgIDEuIEFkZCA3NDQ3QSBhbmQgNzQ0OCBwcm9jZXNzb3Igc3VwcG9ydC4KICAgIDIuIEFkZCB0aGUgZm9sbG93aW5nIGZsYWdzLgoKICAgIENGR19DT05GSUdfQlVTX0NMSyA6IElmIHRoZSA3NHh4IGJ1cyBmcmVxdWVuY3kgY2FuIGJlIGNvbmZpZ3VyZWQgZHluYW1pY2FsbHkKICAgIChzdWNoIGFzIGJ5IHN3aXRjaCBvbiBib2FyZCksIHRoaXMgZmxhZyBzaG91bGQgYmUgc2V0LgoKICAgIENGR19FWENFUFRJT05fQUZURVJfUkVMT0NBVEU6IElmIGFuIGV4Y2VwdGlvbiBvY2N1cnMgYWZ0ZXIgdGhlIHUtYm9vdAogICAgcmVsb2NhdGVzIHRvIFJBTSwgdGhpcyBmbGFnIHNob3VsZCBiZSBzZXQuCgogICAgQ0ZHX1NFUklBTF9IQU5HX0lOX0VYQ0VQVElPTjogSWYgdGhlIHByaW50IG91dCBmdW5jdGlvbiB3aWxsIGNhdXNlIHRoZQogICAgc3lzdGVtIGhhbmcgaW4gZXhjZXB0aW9uLCB0aGlzIGZsYWcgc2hvdWxkIGJlIHNldC4KCiAgICBUaGVyZSBpcyBhIGRlc2lnbiBpc3N1ZSBmb3IgdHNpMTA4LzEwOSBwY2kgY29uZmlndXJlICByZWFkLiBXaGVuIHBjaSBzY2FuCiAgICB0aGUgc2xvdHMsIGlmIHRoZXJlIGlzIG5vIHBjaSBjYXJkLCB0aGUgdHNpMTA4Lzkgd2lsbCBjYXVzZSBhIG1hY2hpbmUKICAgIGNoZWNrIGV4Y2VwdGlvbiBmb3IgbXBjNzQ0OCBwcm9jZXNzb3IuCgogICAgU2lnbmVkLW9mZi1ieTogQWxleGFuZHJlIEJvdW5pbmUgPGFsZXhhbmRyZWJAdHVuZHJhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2OTM2NmJmNDJmMjJkNjdlZmNlOGRhM2Y4YzQwYTQzZDRhM2MyNjk1CkF1dGhvcjogcm95IHphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTm92IDIgMTg6MzQ6NDcgMjAwNiArMDgwMAoKICAgIEFkZCBSRUFETUUgZmlsZSBmb3IgbXBjNzQ0OGhwYzIgYm9hcmQuCiAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjU3MjFiNWNlYzJiZTRiY2U3OWNmYWRlMTdlYzhmNmFhMWU2NzUyNgpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBOb3YgMSAwMjowNDozOCAyMDA2ICswMTAwCgogICAgRmluaXNoIHVwIHN1cHBvcnQgZm9yIE1hcmVsVjM4QiBib2FyZAogICAgIC0gYWRkIHdhdGNoZG9nIHN1cHBvcnQKICAgICAtIGVuYWJsZSBHUElPX1dLVVBfNyBwaW4gZm9yIGlucHV0CiAgICAgLSBjb2RlIGNsZWFudXAKCmNvbW1pdCBmZmExNTBiYzkwYzk0M2NhMjY1MTcwYmQxYmUzZjI5MzY3NGRkNWM3CkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIE5vdiAxIDAxOjQ1OjQ2IDIwMDYgKzAxMDAKCiAgICAtIEZpeCBpc3N1ZXMgcmVsYXRlZCB0byB0aGUgdXNlIG9mIEVMREsgNCB3aGVuIGNvbXBpbGluZyBmb3IgTWFyZWxWMzhCOgoJICAqIHJlbW92ZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZyBldGhhZGRyLmMKCSAgKiBhZGp1c3QgbGlua2VyIHNjcmlwdCAoZml4ZXMgYSBjcmFzaCByZXN1bHRpbmcgZnJvbSBpbmNvcnJlY3QKCSAgZGVmaW5pdGlvbiBvZiBfX3VfYm9vdF9jbWRfc3RhcnQpCiAgICAtIFNvbWUgTWFyZWxWMzhCIGNvZGUgY2xlYW51cC4KCmNvbW1pdCBkYWU4MGYzY2FmOTc1NGE2ZGQzZGRmM2NmOTAzZDBjNDZjYmQ0Mzg1CkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIE5vdiAxIDAxOjM4OjE2IDIwMDYgKzAxMDAKCiAgICAtIEFkZCBNUEM1WFhYIHJlZ2lzdGVyIGRlZmluaXRpb24gTVBDNVhYWF9XVV9HUElPX0RBVEFfSSBhbmQgY2hhbmdlIHRoZQogICAgICBNUEM1WFhYX1dVX0dQSU9fREFUQSBtYWNybyB0byBNUEM1WFhYX1dVX0dQSU9fREFUQV9PIChwZXIgTVBDNTIwMCBVc2VyJ3MKICAgICAgTWFudWFsKS4gUmVwbGFjZSB0aGUgdXNlcyBvZiBNUEM1WFhYX1dVX0dQSU9fREFUQSB3aXRoCiAgICAgIE1QQzVYWFhfV1VfR1BJT19EQVRBX08gZm9yIGFmZmVjdGVkIGJvYXJkcy4KCiAgICAtIEFkZCBkZWZpbnRpb25zIGZvciBzb21lIE1QQzVYWFggR1BJTyBwaW5zLgoKY29tbWl0IDgyZDljOWVjMjlhMWJlYzFiMDNiYTYxNjQyNWViYWVkMjMxMDcyYzgKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgTm92IDEgMDE6MzQ6MjkgMjAwNiArMDEwMAoKICAgIENoYW5nZWQgTWFyZWxWMzhCIGJvYXJkIG1ha2UgdGFyZ2V0IHRvIGxvd2VyY2FzZS4gQ29uZmlnIGZpbGUgY2xlYW51cC4KCmNvbW1pdCAxOTU0YmU2ZTljOTQyMWI0NWQwYTlkMDViMTAzNTZhY2M3NTYzMTUwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVN1biBPY3QgMjkgMDE6MDM6NTEgMjAwNiArMDIwMAoKICAgIEF1dG9tYXRpY2FsbHkgYWRqdXN0IEFSRkxBR1Mgc28gIm1ha2UgLXMiIGlzIHJlYWxseSBzaWxlbnQuCgpjb21taXQgZmFlNjg0ZTg5ODQ0ODU2MzgzYmRmMTAxNDQwODg5NTU3ZGYzZTZiMQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IE9jdCAyOCAxNjo0NTowMCAyMDA2ICswMjAwCgogICAgW1BBVENIXSBvbWFwOTI1LmM6IFJlbW92ZSB1bnVzZWQgZnVuY3Rpb25zCgogICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDEyNjU1ODE1MDJhYjhlYThjMDhlOGVkYmU5YmY2NGZiZDYyZmQ3NzYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVNhdCBPY3QgMjggMTc6MTI6NTggMjAwNiArMDIwMAoKICAgIFtQQVRDSF0gQWRkIHNvbWUgbWlzc2luZyBtYWNodHlwZXMgZm9yIG5ldHN0YXIgJiB2b2ljZWJsdWUgYm9hcmRzCgogICAgVXNlIE1BQ0hfVFlQRV9ORVRTVEFSIGFuZCBNQUNIX1RZUEVfVk9JQ0VCTFVFIGRlZmluZXMgaW5zdGVhZCBvZgogICAgbnVtYmVycyBpbiBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4NTZmMDU0NDEwY2VmNTJkODY4ZmViMzMwMTY4YjJhNGM0MDkxMzI4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgT2N0IDI4IDE1OjU1OjUyIDIwMDYgKzAyMDAKCiAgICBbUEFUQ0hdIE5BTkQ6IFBhcnRpdGlvbiBuYW1lIHN1cHBvcnQgYWRkZWQgdG8gTkFORCBzdWJzeXN0ZW0KCiAgICBjaHBhcnQsIG5ib290IGFuZCBOQU5EIHN1YnN5c3RlbSByZWxhdGVkIGNvbW1hbmRzIG5vdyBhY2NlcHQgYWxzbyBwYXJ0aXRpb24KICAgIG5hbWUgdG8gc3BlY2lmeSBvZmZzZXQuCgogICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDA3YTY5YTE4YzJlY2ZkYTkwNDIzMWZkZjIzZTI1MjNlYTc3OTJlYjYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJU2F0IE9jdCAyOCAwMjoyOTo0NCAyMDA2ICswMjAwCgogICAgVXBkYXRlIENIQU5HRUxPRy4KCmNvbW1pdCAyNzUxYTk1YWJkMWI5NjkxMTA4MWMzNTdlOTZhMTJmYTk3YjQwZGVlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVNhdCBPY3QgMjggMDI6Mjk6MTQgMjAwNiArMDIwMAoKICAgIEVuYWJsZSBjb21tYW5kbGluZSBlZGl0aW5nIGFuZCBodXNoIHNoZWxsIG9uIGFsbCBUUU0gYm9hcmRzLgoKY29tbWl0IDgwNzhmMWE1ZjYzYTczOWI4NTMzNDc4ZjZjMmI2MmZiMWUyZjc5ZDcKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJU2F0IE9jdCAyOCAwMjoyODowMiAyMDA2ICswMjAwCgogICAgUkVBRE1FIHNheXMgQ0ZHX0FVVE9fQ09NUExFVEUsIGJ1dCBvY2RlIHVzZXMgQ09ORklHX0FVVE9fQ09NUExFVEUKCmNvbW1pdCA0NzFhN2JlN2EwNDJlOTVlNDQwZjVkZTk2OWM5NzY1MjE0YWU4ZDZlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IE9jdCAyOCAwMToxNDozMiAyMDA2ICswMjAwCgogICAgQ2hlY2sgZm9yIGlsbGVnYWwgY2hhcmFjdGVyICc9JyBpbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lcy4KCiAgICBNYWtlIHN1cmUgdGhlIHN0cmluZyBwYXNzZWQgYXMgdmFyaWFibGUgbmFtZSBkb2VzIG5vdCBjb250YWluIGEgJz0nCiAgICBjaGFyYWN0ZXIuIFRoaXMgbm90IG9ubHkgcHJldmVudHMgdGhlIGNvbW1vbiBlcnJvciBvciB0eXBpbmcKICAgICJzZXRlbnYgZm9vPWJhciIgaW5zdGVhZCBvZiAic2V0ZW52IGZvbyBiYXIiLCBidXQgKG1vcmUgaW1wb3J0YW50bHkpCiAgICBhbHNvIGNsb3NlcyBhIGJhY2tkb29yIHdoaWNoIGFsbG93ZWQgdG8gZGVsZXRlIHdyaXRlLXByb3RlY3RlZAogICAgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBmb3IgZXhhbXBsZSBieSB1c2luZyAic2V0ZW52IGV0aGFkZHI9Ii4KCmNvbW1pdCAxOTk3M2I2YWQ5ODYzYTU2ZjVjNWZiY2ZkOTBlMjBhYjI0OTBhMmMyCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVNhdCBPY3QgMjggMDA6Mzg6MzkgMjAwNiArMDIwMAoKICAgIE1pbm9yIGNvZGUgY2xlYW51cC4KCmNvbW1pdCBlMTE4ODdhNzdkODEwNzc0MTZhMmQxYzVlMDM1NDkxNmZlZThjMDM0CkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVRodSBPY3QgMjYgMTc6NTU6MzEgMjAwNiArMDIwMAoKICAgIERvbid0IHBhc3MgYW55IGRlYnVnIG9wdGlvbnMgZGlyZWN0bHkgdG8gdGhlIGFzc2VtYmxlcgoKICAgIFdoZW4gcGFzc2luZyB0aGUgLWcgb3B0aW9uIHRvIGdjYywgZ2NjIGF1dG9tYXRpY2FsbHkgc2VsZWN0cyBhCiAgICBzdWl0YWJsZSAtLWc8Zm9ybWF0PiBvcHRpb24gdG8gcGFzcyBvbiB0byB0aGUgYXNzZW1ibGVyLgogICAgVGh1cywgdGhlcmUncyBubyBwb2ludCBpbiBmb3JjaW5nIGEgc3BlY2lmaWMgZGVidWcgb3B0aW9uIG9uIHRoZQogICAgYXNzZW1ibGVyIHVzaW5nIHRoZSAtV2EgbWVjaGFuaXNtLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGVhMDhmZjZlMTRmOWViYjhjMDdjZmE3OWM1MWVmNTQwZWIwODczOTMKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgT2N0IDI3IDA3OjQ3OjIyIDIwMDYgLTA1MDAKCiAgICBNUEM4Nnh4OiBDbGVhbmVkIHVwIHVudXNlZCBhbmQgY29uZGl0aW9uYWxseSB1c2VkIGxvY2FsIHZhcmlhYmxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGQzODkzNmNkYWU0NmJmZDI2MjNmZjgzZjZjZTliNjE2ZDM2YWIwZjkKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJRnJpIE9jdCAyNyAxMTo1NToyMSAyMDA2ICswMjAwCgogICAgRml4ICJhciIgZmxhZ3MgaW4gc29tZSBNYWtlZmlsZXMgdG8gYWxsb3cgZm9yIHNpbGVudCAibWFrZSAtcyIKCmNvbW1pdCA0NjUzZjkxYzEzZWQ1MWMyMWNjNGMzODU1NzQ1ZDY5YTNmYjE4MTdmCkF1dGhvcjogQmVuIFdhcnJlbiA8YndhcnJlbkBxc3RyZWFtcy5jb20+CkRhdGU6CVRodSBPY3QgMjYgMTQ6Mzg6MjUgMjAwNiAtMDQwMAoKICAgIEZpeCBUU0VDIGRyaXZlciAobm93IGZvciByZWFsKTogYXZvaWQgY3Jhc2hlcyBpZiBQSFkgaXMgbm90IGF0dGFjaGVkCiAgICB0byBhIFRTRUMgKGUuZy4gYSBzd2l0Y2ggaXMgY29ubmVjdGVkIHZpYSBSTUlJKSBvcgogICAgaWYgdGhlIFBIWSBpcyBkZWZlY3RpdmUvaW5jb3JyZWN0bHkgY29uZmlndXJlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxid2FycmVuQHFzdHJlYW1zLmNvbT4KCmNvbW1pdCBiOTg1YjVkNmU0ZmI4OGY1MDhmN2FhMGYxMjZjMmUyN2FkYTJiOTk5CkF1dGhvcjogQmVuIFdhcnJlbiA8YndhcnJlbkBxc3RyZWFtcy5jb20+CkRhdGU6CVRodSBPY3QgMjYgMTQ6Mzg6MjUgMjAwNiAtMDQwMAoKICAgIEZpeCBUU0VDIGRyaXZlcjogYXZvaWQgY3Jhc2hlcyBpZiBQSFkgaXMgbm90IGF0dGFjaGVkCiAgICB0byBhIFRTRUMgKGUuZy4gYSBzd2l0Y2ggaXMgY29ubmVjdGVkIHZpYSBSTUlJKSBvcgogICAgaWYgdGhlIFBIWSBpcyBkZWZlY3RpdmUvaW5jb3JyZWN0bHkgY29uZmlndXJlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxid2FycmVuQHFzdHJlYW1zLmNvbT4KCmNvbW1pdCAyYjJhNDBiZWJiZjE4MjI1MDZlODBlNjMxZDcyNTNlNjBmMGUwZmU2CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVRodSBPY3QgMjYgMTY6MjQ6MzEgMjAwNiArMDIwMAoKICAgIENvZGUgY2xlYW51cC4KCmNvbW1pdCA1ZTNiMGJjMTlmMDdlZDI3N2Q4NTMyNGFkMDQyNzY0MmM4OTgxYmFmCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVdlZCBPY3QgMjUgMTU6NDg6NTkgMjAwNiArMDIwMAoKICAgIEZpbmlzaCB1cCBzdXBwb3J0IGZvciB0aGUgQVRTVEsxMDAwL0FUU1RLMTAwMiBib2FyZHMKCiAgICBBZGQgYXRzdGsxMDAyX2NvbmZpZyB0YXJnZXQgdG8gTWFrZWZpbGUgYW5kIG1vdmUgdGhlIEFWUjMyIHNlY3Rpb24KICAgIGRvd24gYmVsb3cgQmxhY2tmaW4gc28gdGhhdCBpdCBkb2Vzbid0IGVuZCB1cCBpbiB0aGUgbWlkZGxlIG9mCiAgICBNSVBTLgoKICAgIERyb3AgdGhlIGF1dG9nZW5lcmF0ZWQgbGlua2VyIHNjcmlwdCB0aGluZyBmb3Igbm93LiBXaWxsIGhhdmUgdG8KICAgIHJldmlzaXQgaG93IHRvIGhhbmRsZSBjaGlwcyB3aXRoIGRpZmZlcmVudCBmbGFzaCBhbmQgUkFNIGxheW91dAogICAgbGF0ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgYzc2Zjk1MWE3NDdjZmI4N2JhODI2ZWY0NWI1YWVhODJkNWI1ZGJiNApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBPY3QgMjQgMjM6NDc6MzcgMjAwNiAtMDUwMAoKICAgIEFkZGVkIHN1cHBvcnQgZm9yIE11bHRpLUltYWdlIGZpbGVzIHRoYXQgY29udGFpbiBhIGRldmljZSB0cmVlCgogICAgSWYgYSBNdWx0aS1JbWFnZSBmaWxlIGNvbnRhaW5zIGEgdGhpcmQgaW1hZ2Ugd2UgdHJ5IHRvIHVzZSBpdCBhcyBhCiAgICBkZXZpY2UgdHJlZS4gIFRoZSBkZXZpY2UgdHJlZSBpbWFnZSBpcyBhc3N1bWVkIHRvIGJlIHVuY29tcHJlc3NlZCBpbiB0aGUKICAgIGltYWdlIGZpbGUuICBXZSBhdXRvbWF0aWNhbGx5IGFsbG9jYXRlIHNwYWNlIGZvciB0aGUgZGV2aWNlIHRyZWUgaW4gbWVtb3J5CiAgICBhbmQgcHJvdmlkZSBhbiA4ayBwYWQgdG8gYWxsb3cgbW9yZSB0aGFuIGEgcmVhc29uYWJsZSBhbW91bnQgb2YgZ3Jvd3RoLgoKICAgIEFkZGl0aW9uYWxseSwgYSBkZXZpY2UgdHJlZSB0aGF0IHdhcyBjb250YWluZWQgaW4gZmxhc2ggd2lsbCBub3cgYXV0b21hdGljYWxseQogICAgZ2V0IGNvcGllZCB0byBzeXN0ZW0gbWVtb3J5IGFzIHBhcnQgb2YgYm9vdC4gIFByZXZpb3VzbHkgYW4gZXJyb3Igd2FzCiAgICByZXBvcnRlZCBpZiBvbmUgdHJpZWQgdG8gYm9vdCBhIGRldmljZSB0cmVlIHRoYXQgd2FzIGluIGZsYXNoLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgN2M1MmM0Yjk0M2ZmNTJiYmU4Nzk2YTdlMmQzZTQ3NmNlYWYzZjUxMgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBPY3QgMjQgMjE6MzU6NTUgMjAwNiArMDIwMAoKICAgIFN3aXRjaCB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBDSEFOR0VMT0cgZmlsZS4KICAgICh1c2UgIm1ha2UgQ0hBTkdFTE9HIiB0byB1cGRhdGUgaXQgZnJvbSB0aW1lIHRvIHRpbWUpCgpjb21taXQgN2FkZTBjNjM0YTk3OWMzMmZhOTFhNzRlOGY1Nzc1ZjI0NjUxZmJlNgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIE9jdCAyNCAxODowNjo0OCAyMDA2ICswMjAwCgogICAgRml4IGJ1ZyBpbiBQUEM0NDAgTkFORCBkcml2ZXIgY3B1L3BwYzR4eC9uZGZjLmMKICAgIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMjQgT2N0IDIwMDYKCmNvbW1pdCA4YWUzYjcxM2IyMjg2ZTBjMzIxM2I3ODAyMDYyZTRjMTU5OTAxMGRlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVR1ZSBPY3QgMjQgMTc6MjQ6NTUgMjAwNiArMDIwMAoKICAgIE1lcmdlIHdpdGggL2hvbWUvd2QvZ2l0L3UtYm9vdC9tYXN0ZXIKCmNvbW1pdCA0N2E2OTg5YzEwNjg1ZDJhYjNlZmNmOTUyMjhjZTUwZDJhNDk2ZDNlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVR1ZSBPY3QgMjQgMTU6MzI6NTcgMjAwNiArMDIwMAoKICAgIENvZGUgY2xlYW51cAoKY29tbWl0IDNhNzhlM2U3NWI2MzNlY2I2NDEzMTE0ZmZkMTFlMmYwMDBjNGYxMWUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJVHVlIE9jdCAyNCAxNDo1MTozNiAyMDA2ICswMjAwCgogICAgTW92ZSBhdHN0azEwMDAgZmlsZXMgaW50byB2ZW5kb3Igc3BlY2lmaWMgZGlyZWN0b3J5LgogICAgUGF0Y2ggYnkgSGFhdmFyZCBTa2lubmVtb2VuLCAxMiBTZXAgMjAwNgoKY29tbWl0IDZjY2VjNDQ5MmU3NzQyOGZkNmVhZmQzZGZlOTRmYmRmMDhlOTFkMzcKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJVHVlIE9jdCAyNCAxNDo0MjozNyAyMDA2ICswMjAwCgogICAgQWRkIEFUU1RLMTAwMCBhbmQgQVRTVEsxMDAyIGJvYXJkIHN1cHBvcnQKICAgIFBhdGNoIGJ5IEhhYXZhcmQgU2tpbm5lbW9lbiwgMDYgU2VwIDIwMDYKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEFUU1RLMTAwMCB3aXRoIHRoZSBBVFNUSzEwMDIgQ1BVCiAgICBkYXVnaHRlcmJvYXJkLgoKICAgIEFUU1RLMTAwMCBpcyBhIGZ1bGwtZmVhdHVyZWQgZGV2ZWxvcG1lbnQgYm9hcmQgZm9yIEFUMzJBUCBDUFVzLiBJdAogICAgaGFzIHR3byBldGhlcm5ldCBwb3J0cywgYSBoaWdoIHF1YWxpdHkgUVZHQSBMQ0QgcGFuZWwsIGEgbG91ZHNwZWFrZXIsCiAgICBhbmQgY29ubmVjdG9ycyBmb3IgVVNBUlQsIFBTLzIsIFZHQSwgVVNCLCBNTUMvU0QgY2FyZHMgYW5kCiAgICBDb21wYWN0Rmxhc2ggY2FyZHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2Ugc2VlIHRoaXMgcGFnZToKCiAgICBodHRwOi8vd3d3LmF0bWVsLmNvbS9keW4vcHJvZHVjdHMvdG9vbHMuYXNwP2ZhbWlseV9pZD02ODIKCiAgICBUaGUgQVRTVEsxMDAyIGlzIGEgZGF1Z2h0ZXJib2FyZCBmb3IgdGhlIEFUU1RLMTAwMCBzdXBwb3J0aW5nIHRoZQogICAgQVQzMkFQNzAwMCBjaGlwLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGY5M2FlNzg4YzM2NDBmY2RlNWRiMzgzNDcxZDQ1NTQ4ZmY0MDYwZDAKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJVHVlIE9jdCAyNCAxNDozMToyNCAyMDA2ICswMjAwCgogICAgQWRkIGNvbW1vbiBzZXJpYWwgZHJpdmVyIGZvciBBdG1lbCBBVDMyIGFuZCBBVDkxIGNoaXBzCiAgICBQYXRjaCBieSBIYWF2YXJkIFNraW5uZW1vZW4sIDA2IFNlcCAyMDA2CgogICAgVGhpcyBpcyBhIGZpcnN0IGF0dGVtcHQgYXQgY3JlYXRpbmcgYSBjb21tb24gc2VyaWFsIGRyaXZlciBmb3IgQXRtZWwKICAgIGNoaXBzLiBGb3Igbm93LCBpdCBzdXBwb3J0cyB0aGUgQVQzMkFQNzAwMCBBVlIzMiBjaGlwLCBidXQgaXQgc2hvdWxkCiAgICBiZSBwb3NzaWJsZSB0byBzdXBwb3J0IEFUOTFSTTkyMDAgYW5kIG90aGVyIEFSTS1iYXNlZCBjaGlwcyB3aXRoIHNvbWUKICAgIG1pbm9yIG1vZGlmaWNhdGlvbnMuCgogICAgVGhlcmUncyBub3RoaW5nIGZ1bmRhbWVudGFsbHkgQVZSMzItc3BlY2lmaWMgaW4gdGhpcyBkcml2ZXIsIGJ1dCBpdAogICAgZG9lcyB1c2Ugc29tZSBmZWF0dXJlcyB3aGljaCBhcmUgY3VycmVudGx5IG9ubHkgZGVmaW5lZCBmb3IgdGhlCiAgICBBVDMyQVAgQ1BVIHBvcnQ6CiAgICAgICogcG1fZ2V0X2Nsb2NrX2ZyZXE6IE9idGFpbiB0aGUgY2xvY2sgZnJlcXVlbmN5IG9mIGEgZ2l2ZW4gZG9tYWluCiAgICAgICogZ2QtPmNvbnNvbGVfdWFydDogQSAic3RydWN0IGRldmljZSIgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dAoJcmVnaXN0ZXIgbWFwcGluZ3MsIGdwaW8gcmVzb3VyY2VzIGFuZCBjbG9ja3MgYXNzb2NpYXRlZCB3aXRoIHRoZQoJVUFSVCBkZXZpY2UuCgogICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlc2UgZmVhdHVyZXMsIHBsZWFzZSBzZWUgdGhlICJBVDMyQVAKICAgIENQVSIgcGF0Y2guCgpjb21taXQgNzJhMDg3ZTA0NzA1YzI2Y2FkOTgyODc5ZWJkMDZiNTI4MWJmODI1YQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgpEYXRlOglUdWUgT2N0IDI0IDE0OjI3OjM1IDIwMDYgKzAyMDAKCiAgICBBZGQgQVQzMkFQIENQVSBhbmQgQVQzMkFQNzAwMCBTb0Mgc3VwcG9ydAogICAgUGF0Y2ggYnkgSGFhdmFyZCBTa2lubmVtb2VuLCAwNiBTZXAgMjAwNgoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgQVQzMkFQIENQVSBmYW1pbHkgYW5kIHRoZSBBVDMyQVA3MDAwCiAgICBjaGlwLCB3aGljaCBpcyB0aGUgZmlyc3QgY2hpcCBpbXBsZW1lbnRpbmcgdGhlIEFWUjMyIGFyY2hpdGVjdHVyZS4KCiAgICBUaGUgQVQzMkFQIENQVSBjb3JlIGlzIGEgaGlnaC1wZXJmb3JtYW5jZSBpbXBsZW1lbnRhdGlvbiBmZWF0dXJpbmcgYQogICAgNy1zdGFnZSBwaXBlbGluZSwgc2VwYXJhdGUgaW5zdHJ1Y3Rpb24tIGFuZCBkYXRhIGNhY2hlcywgYW5kIGEgTU1VLgogICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSBzZWUgdGhlICJBVlIzMiBBUCBUZWNobmljYWwgUmVmZXJlbmNlIjoKCiAgICBodHRwOi8vd3d3LmF0bWVsLmNvbS9keW4vcmVzb3VyY2VzL3Byb2RfZG9jdW1lbnRzL2RvYzMyMDAxLnBkZgoKICAgIEluIGFkZGl0aW9uIHRvIHRoaXMsIHRoZSBBVDMyQVA3MDAwIGNoaXAgY29tZXMgd2l0aCBhIGxhcmdlIHNldCBvZgogICAgaW50ZWdyYXRlZCBwZXJpcGhlcmFscywgbWFueSBvZiB3aGljaCBhcmUgc2hhcmVkIHdpdGggdGhlIEFUOTEgc2VyaWVzCiAgICBvZiBBUk0tYmFzZWQgbWljcm9jb250cm9sbGVycyBmcm9tIEF0bWVsLiBGdWxsIGRhdGEgc2hlZXQgaXMKICAgIGF2YWlsYWJsZSBoZXJlOgoKICAgIGh0dHA6Ly93d3cuYXRtZWwuY29tL2R5bi9yZXNvdXJjZXMvcHJvZF9kb2N1bWVudHMvZG9jMzIwMDMucGRmCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgN2I2NGZlZjMzYzY2YmU2NDg4MjZjMGZmOTc1ODI5OGVmMTNkMDYwNApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgpEYXRlOglUdWUgT2N0IDI0IDE0OjIxOjE2IDIwMDYgKzAyMDAKCiAgICBBZGQgQVZSMzIgYXJjaGl0ZWN0dXJlIHN1cHBvcnQKICAgIFBhdGNoIGJ5IEhhYXZhcmQgU2tpbm5lbW9lbiwgNiBTZXAgMjAwNiAxNjoyMzowMiArMDIwMAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBjb21tb24gaW5mcmFzdHJ1Y3R1cmUgY29kZSBmb3IgdGhlIEF0bWVsIEFWUjMyCiAgICBhcmNoaXRlY3R1cmUuIFNlZSBkb2MvUkVBRE1FLkFWUjMyIGZvciBkZXRhaWxzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDJkYTJkOWE0NzY2MDYzYjk4NDhmM2EzNWFkNjAyNTQ5OWNmODcyNjUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJVHVlIE9jdCAyNCAxMzo1NzozMyAyMDA2ICswMjAwCgogICAgVXNlIC1nIGluc3RlYWQgb2YgLWdzdGFicyBpbiBBRkxBR1NfREVCVUcKICAgIFBhdGNoIGJ5IEhhYXZhcmQgU2tpbm5lbW9lbiwgMzAgQXVnIDIwMDYKCiAgICBJbiBjb25maWcubWssIC1XYSwtZ3N0YWJzIGlzIHVuY29uZGl0aW9uYWxseSBhcHBlbmRlZCB0byBBRkxBR1Mgbm8KICAgIG1hdHRlciB3aGF0IHRoZSB0YXJnZXQncyBwcmVmZXJyZWQgZGVidWdnaW5nIGZvcm1hdCBpcy4gVGhpcyBwYXRjaAogICAgc2ltcGx5IHJlcGxhY2VzIC1nc3RhYnMgd2l0aCAtZywgc28gdGhhdCB0aGUgZGVmYXVsdCBkZWJ1Z2dpbmcgZm9ybWF0CiAgICBmb3IgdGhlIGFyY2hpdGVjdHVyZSBpcyB1c2VkLgoKY29tbWl0IDk2NTgyOTg3MjE2OWMyOTk2MDIzODQwZDk4ZTFkODVhZDE0OGQ2MjkKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJVHVlIE9jdCAyNCAxMzo1NToxOCAyMDA2ICswMjAwCgogICAgRml4L3dvcmthcm91bmQgYnJva2VuIGRlcGVuZGVuY3kgaGFuZGxpbmcgd2l0aCBtYWtlIDMuODEKICAgIEJhc2VkIG9uIHBhdGNoIGJ5IEhhYXZhcmQgU2tpbm5lbW9lbiwgMjkgQXVnIDIwMDYgMTE6MjA6MzkgKzAyMDAKCmNvbW1pdCA4MzE4ZmJmOGNjMzA0MThiNjIxZWE5ZjM5Yjg0YjRjMWEwOGYwMDNhCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJTW9uIE9jdCAyMyAyMjoxNzowNSAyMDA2ICswMjAwCgogICAgRml4IHNlcXVvaWEgc2VwYXJhdGUgb2JqZWN0IGRpcmVjb3J5IGJ1aWxkaW5nIHByb2JsZW1zLgoKY29tbWl0IDNkZmE5Y2ZkY2VlNzhiMzBkYTM0MzIzMThiMzI4MjFmZmFiZTk3NGIKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgT2N0IDIwIDE3OjE2OjM1IDIwMDYgLTA1MDAKCiAgICBVc2UgZ2VuZXJpYyBJMkMgcmVnaXN0ZXIgYmxvY2sgb24gODV4eCBhbmQgODZ4eC4KCiAgICBSZXBsYWNlIHByaXZhdGUgSU1NQVAgSTJDIHN0cnVjdHVyZXMgd2l0aCBnZW5lcmljIHJlZyBibG9jawogICAgYW5kIGFsbG93IDg2eHggdG8gaGF2ZSBtdWx0aXBsZSBJMkMgZGV2aWNlIGJ1c3Nlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGY1MDEyODI3ZGYxMWNhMGM5YmUxZGY1ZjhiMTUzZTE4OGRjMmZhN2MKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgT2N0IDIwIDE1OjU0OjM0IDIwMDYgLTA1MDAKCiAgICBGaXggY29tcGlsYXRpb24gd2FybmluZ3Mgb24gYSBmZXcgODV4eCBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyMDQ3NjcyNjg0Y2Y4NWNiNmY5NmExZmJjOTkzMTgwYWFhZjE5YTk5CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE9jdCAyMCAxNTo1MDoxNSAyMDA2IC0wNTAwCgogICAgQ29udmVydGVkIGFsbCA4NXh4IGJvYXJkcyB0byB1c2UgYSBjb21tb24gRlNMIEkyQyBkcml2ZXIuCiAgICBJbnRyb2R1Y2VkIENPRklHX0ZTTF9JMkMgdG8gc2VsZWN0IHRoZSBjb21tb24gRlNMIEkyQyBkcml2ZXIuCiAgICBBbmQgcmVtb3ZlZCBoYXJkIGkyYyBwYXRoIGZyb20gYSBmZXcgdS1ib290LmxkcyBzY2lwdHMgdG9vLgogICAgTWlub3Igd2hpdGVzcGFjZSBjbGVhbnVwcyBhbG9uZyB0aGUgd2F5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNGQ0NWY2OWUzNjJiMDU4OTJjOWU5MmE3OTA3ZTU4MjA5OTU2MTJhYQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBPY3QgMTkgMTI6MDI6MjQgMjAwNiAtMDUwMAoKICAgIFJld3JpdGUgYSBzZXJpZXMgb2YgZ290byBzdGF0ZW1lbnRzIGFzIGEgc2VxdWVuY2VzIG9mCiAgICBjb25kaXRpb25hbCBleHByZXNzaW9ucyBpbnN0ZWFkLgoKICAgIFVzZSBjb25zaXN0ZW50IHJldHVybiBjb2RlIDAvLTEgZm9yIGdvb2QvYmFkIGluZGljYXRvcnMuCgogICAgSW5jbHVkZSBvbmUgZmV3ZXIgZmlsZSBpZiB0aGUgZHJpdmVyIGlzbid0IHVzZWQgYXQgYWxsLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNzIzN2MwMzNiMDJmZTI5NTg4MDQzNWYxZWI4MDgxOWEwYzk4NzUzMgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBPY3QgMTkgMTE6MDI6MTYgMjAwNiAtMDUwMAoKICAgIE1vdmVkIGkyYyBkcml2ZXIgb3V0IG9mIGNwdS9tcGM4Nnh4L2kyYy5jIGludG8gZHJpdmVycy9mc2xfaTJjLmMKCiAgICBpbiBhbiBlZmZvcnQgdG8gYmVnaW4gdG8gdW5pZnkgdGhlIHVtcHRlZW4gRlNMIEkyQyBkcml2ZXJzIHRoYXQKICAgIGFyZSBhbGwgb3RoZXJ3aXNlIHZlcnkgc2ltaWxhci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDEzYTdmY2RmMzdmNmVhOTQyOWFlMDRjOWRmNjdmODkzMzY0Y2ZlNGIKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgT2N0IDE5IDExOjMzOjUyIDIwMDYgLTA1MDAKCiAgICAqIEZpeCBhIGJ1bmNoIG9mIGNvbXBpbGVyIHdhcm5pbmdzIGZvciBnY2MgNC4wCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhZjllMWY1YjllNmY5Y2U4MTBmNWU4YmYyOTYxYzk1NDJhNTg2NWMyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgT2N0IDE3IDA2OjE0OjMxIDIwMDYgKzAyMDAKCiAgICBBZGQgbW9uaXRvciBmdW5jdGlvbnMgZm9yIGluZGlyZWN0IGFjY2VzcyB0byBQUEM0NDAgRENSJ3MKICAgIFBhdGNoIGJ5IExlb25pZCBCYXJ5dWRpbiwgMTIgT2N0IDIwMDYKCmNvbW1pdCA1ZjMyNDlhMGExNjhlNDQ2YTRjYzk2NjliMmJjZTBiYzQ1NmYwYTA5CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE9jdCAxMyAxNjo0Nzo1MyAyMDA2IC0wNTAwCgogICAgRml4ZWQgbGVhZGluZyB3aGl0ZXNwYWNlIGlzc3Vlcy4KICAgIFJlbW92ZWQgc3B1cmlvdXMgTEFXQVIgdGhpbmcuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwZWU5MGNiNzdlMDFkNmU4Y2NkMzdlMWJkOTY2Nzg1OTc4NzVjMzkxCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE9jdCAxMiAxMDo0MjozNiAyMDA2IC0wNTAwCgogICAgUmVtb3ZlIHVubmVlZGVkIGluY2x1ZGUgZmlsZXMgYW5kIGxvY2FsIHZhcmlhYmxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMWVhZjNhNWZmNDk2MGE0NmYzYTkwNjM1NjhiYTJhZjc4ODNmMDdjNQpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIE9jdCAxMCAwMDoyMzozMiAyMDA2IC0wNjAwCgogICAgRml4IHBvc3NpYmxlIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgY29tcGlsZXIgd2FybmluZy4KCiAgICBXaGVuIENPTkZJR19PRl9GTEFHX1RSRUUgaXMgc2V0LCB0aGUgY29tcGlsZXIgY29tcGxhaW5zIHRoYXQgJ2xlbicgaW4KICAgIGRvX2Jvb3RtX2xpbnV4KCkgbWF5IGJlIHVuaW5pdGlhbGl6ZWQuICBUaGVyZSBpcyBubyBwb3NzaWJpbGl0eSBpbiB0aGUKICAgIGN1cnJlbnQgY29kZSB0aGF0IGxlbiB3aWxsIGdldCB1c2VkIHVuaW5pdGlhbGl6ZWQsIGJ1dCB0aGlzIGZpeCBmb2xsb3dzCiAgICB0aGUgZXhpc3RpbmcgY29udmVudGlvbiBvZiBzZXR0aW5nIGJvdGggbGVuIGFuZCBkYXRhIHRvIHplcm8gYXQgdGhlIHNhbWUKICAgIHRpbWUuCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDczNzZlYjg3YWFhNjAxZjcyOGY5YjhlNWU5Y2QyNzExYTY3ZjUyOWUKQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgT2N0IDExIDE1OjEzOjAxIDIwMDYgLTA1MDAKCiAgICAqIEZpeCBhIGJ1bmNoIG9mIGNvbXBpbGVyIHdhcm5pbmdzIGZvciBnY2MgNC4wCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiZjY1MWJhYTM2NWU1NDQ3MjQ2YWFkNmE2MzNjY2Q2NjdjZjI0YTM5CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE9jdCAxMSAxMDoxMDo0MyAyMDA2IC0wNTAwCgogICAgTW92ZSAiYXIiIGZsYWdzIHRvIGNvbmZpZy5tayB0byBhbGxvdyBmb3Igc2lsZW50ICJtYWtlIC1zIgoKY29tbWl0IDFmZDU2OTlhNGEyNGY1YzFkYWIxYjMyZjQ4MGJhY2UxZWJiOWZjM2UKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgT2N0IDEwIDE3OjE5OjAzIDIwMDYgLTA1MDAKCiAgICBDb2Rpbmcgc3R5bGUgY2hhbmdlcyB0byByZW1vdmUgbG9jYWwgdmFyaWJsZSBibG9ja3MKICAgIGFuZCByZWZvcm1hdCBhIGJpdCBuaWNlci4KCmNvbW1pdCA4YjI4M2RiYjNhMDhkMWI4ZDQwNmJjMTVmMTE5ZTA4MWIzZTI2MDZhCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE9jdCAxMCAxNzoxNjowNCAyMDA2IC0wNTAwCgogICAgRml4IHdoaXRlc3BhY2UgaXNzdWVzLgoKY29tbWl0IDdiMzgyYjcxMjVmMjM5N2NjZTYzMjUzZGY2MmYxODNlM2RmYTI3NzAKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgT2N0IDEwIDE3OjE0OjQ1IDIwMDYgLTA1MDAKCiAgICBGaXggd2hpdGVzcGFjZSBpc3N1ZXMuCgpjb21taXQgZTEwMzkwZGRkNzM2YjBkYWQxNTI4ZWVjNGIwZmUzNWMwODI3MTM5YQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBPY3QgMTAgMTc6MDY6NTMgMjAwNiAtMDUwMAoKICAgIEZpeCB3aGl0ZXNwYWNlIGlzc3Vlcy4KCmNvbW1pdCA4OTg3NWU5NmJhM2YwMjMxNTdiZjUwZDVmOGUzM2JmMjU0OTY0YTc2CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE9jdCAxMCAxNzowMzo0MyAyMDA2IC0wNTAwCgogICAgUmFuIGxpbmRlbnQgYW5kIGNsZWFuZWQgdXAgd2hpdGVzcGFjZSBpc3N1ZXMuCiAgICBGb3JtYXQgZm9yIDgwLWNvbHVtbnMgdG9vLgoKY29tbWl0IDMzMzk2MWFlNzA5NWZjNjZkOGEwNDFmY2UxYWM5ZWU4NzNiMDlkODYKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgT2N0IDEwIDE3OjAyOjIyIDIwMDYgLTA1MDAKCiAgICBGaXggd2hpdGVzcGFjZSBhbmQgODAtY29sIGlzc3Vlcy4KCmNvbW1pdCA1YzkxMmNiMWMzMTI2NmM2NmNhNTliMzZmOWI2Zjg3Mjk2NDIxZDc1CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgT2N0IDcgMTE6MzY6NTEgMjAwNiArMDIwMAoKICAgIENGR19OQU5EX1FVSUVUX1RFU1QgYWRkZWQgdG8gbm90IHdhcm4gdXBvbiBtaXNzaW5nIE5BTkQgZGV2aWNlCiAgICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDA3IE9jdCAyMDA2Cgpjb21taXQgNWJjNTI4ZmE0ZGE3NTFkNDcyMzk3YjMwODEzNzIzOGE2NDY1YWZkMgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IE9jdCA3IDExOjM1OjI1IDIwMDYgKzAyMDAKCiAgICBVcGRhdGUgQUxQUiBjb2RlIChOQU5EIHN1cHBvcnQgd29ya2luZyBub3cpCiAgICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDA3IE9jdCAyMDA2Cgpjb21taXQgNzdkNTAzNDg0N2QzMjg3NTNiODBjNDZiODNmOTYwYTE0YTI2ZjQwZQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IE9jdCA3IDExOjMzOjAzIDIwMDYgKzAyMDAKCiAgICBSZW1vdmUgY29tcGlsZSB3YXJuaW5ncyBpbiBmcGdhIGNvZGUKICAgIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMDcgT2N0IDIwMDYKCmNvbW1pdCBmMzQ0Mzg2N2U5MGQyOTc5YTdkZDFjNjViMGQ1Mzc3NzdlMWY5ODUwCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgT2N0IDcgMTE6MzA6NTIgMjAwNiArMDIwMAoKICAgIEFkZCBDT05GSUdfQk9BUkRfUkVTRVQgdG8gY29uZmlndXJlIGJvYXJkIHNwZWNpZmljIHJlc2V0IGZ1bmN0aW9uCiAgICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDA3IE9jdCAyMDA2Cgpjb21taXQgZjU1ZGYxODE4N2U3YTQ1Y2I3M2ZlYzQzNzBkMTIxMzVlNjY5MWFlMQpBdXRob3I6IEpvaG4gVHJhaWxsIDxqb2huLnRyYWlsbEBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgU2VwIDI5IDA4OjIzOjEyIDIwMDYgKzAxMDAKCiAgICBGaXggbWlzc2luZyB0Q3ljbGUvbW9kZnJlcSBjYWxjdWxhdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFRyYWlsbCA8am9obi50cmFpbGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4MjcyZGMyZjU4ZjI0NzNkODk5NWZjYzliOTE2NDQwY2ZiYTA4MGYwCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgU2VwIDEzIDEwOjMzOjM1IDIwMDYgLTA1MDAKCiAgICBVcGRhdGVkIGNvbmZpZyBoZWFkZXJzIHRvIGFkZCBkZWZhdWx0IEZEVC1iYXNlZCBib290aW5nCgpjb21taXQgMDlmM2UwOWU5ZWJjZmE3OTE5Y2E4OTMxYTRiNTUwNGZhZGQxZjFkMwpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIFNlcCAxMyAxMDozNDoxOCAyMDA2IC0wNTAwCgogICAgQWRkIHN1cHBvcnQgZm9yIGVUU0VDIDMgJiA0IG9uIDg1NDggQ0RTCgogICAgKiBBZGRlZCBzdXBwb3J0IGZvciB1c2luZyBlVFNFQyAzIGFuZCBlVFNFQyA0IG9uIHRoZSA4NTQ4IENEUy4KICAgICAgVGhpcyB3aWxsIG9ubHkgd29yayBvbiByZXYgMS4zIGJvYXJkcyAoYnV0IGRvZXNuJ3QgYnJlYWsgb2xkZXIgYm9hcmRzKQogICAgKiBDbGVhbmVkIHVwIHNvbWUgY29tbWVudHMgdG8gcmVmbGVjdCB0aGUgZXhwYW5kZWQgcm9sZSBvZiB0c2VjCiAgICAgIGluIG90aGVyIHN5c3RlbXMKCmNvbW1pdCAwODRkNjQ4YjEwOWM4OTg0ZjgzNjc0MDQzYzFhN2ZhMzg4NWVmODAxCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgU2VwIDEzIDEwOjMzOjU2IDIwMDYgLTA1MDAKCiAgICBBZGRlZCBjb2RlIHRvIHN1cHBvcnQgMi42LjE4IFBDSSBjaGFuZ2VzIGluIHUtYm9vdAoKICAgICogQWRkZWQgY29kZSB0byBzd2l6emxlIHRoZSBJUlEgbWFwIGZvciB0aGUgUENJCgpjb21taXQgYWZiZGM2NDlmODc1MWU0ZjRmMWE2ZjUyN2VkZmUxMzk3NzNmMmMxNQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBTZXAgMTkgMDk6MzQ6MTAgMjAwNiAtMDUwMAoKICAgIE1vZGlmaWVkIG1ha2VmaWxlIGZvciBuZXcgYnVpbGQgbWVjaGFuaXNtLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDE0YmE2YTc5OGJlYjc1M2U3YTg2NDUwMDQxNGZjYzJkMTk4YjhiYwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBTZXAgMTQgMDg6NDA6MzYgMjAwNiAtMDUwMAoKICAgIEhhbmRsZSA4Nnh4IFNWUiB2YWx1ZXMgYWNjb3JkaW5nIHRvIHRoZSBuZXcgUmVmZXJlbmNlIE1hbnVhbC4KICAgIEJvdGggODY0MSBhbmQgODY0MUQgaGF2ZSBTVlIgPT0gMHg4MDkwLCBhbmQgYXJlIGRpc3Rpbmd1aXNoZWQKICAgIGJ5IHRoZSBieXRlIGluIGJpdHMgMTYtMjMgaW5zdGVhZC4KICAgIFRoYW5rcyB0byBKYXNvbiBKaW4gZm9yIG5vdGljaW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgODhjOGY0OTIxZmM0N2ZiMGViMjM4NGIxNjU4NmYxYmQ3ZjI3NWJlNwpBdXRob3I6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBBdWcgMjggMTQ6MjU6MzEgMjAwNiArMDgwMAoKICAgIEZpeGVkIGFuIE9GLXRyZWUgb2ZmLWJ5LW9uZSBidWcgd2hlbiBhZGRpbmcgYSBuZXcgcHJvcGVydHkgbmFtZS4KICAgIFRoaXMgYnVnIHdpbGwgY2F1c2UgdGhlIGtlcm5lbCBib290aW5nIHRvIHBhdXNlIGEgbG9uZyB0aW1lLgoKICAgIFNpZ25lZC1vZmYtYnk6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+CiAgICAoY2hlcnJ5IHBpY2tlZCBmcm9tIDJmMTU3NzZjY2M2ZGMzMjM3N2Q4YmE5NjUyYjhmNTgwNTljMjdjNmQgY29tbWl0KQoKY29tbWl0IDliZmY3YTY5YTg4NWFkZWJiZDJiZDQ1OTkwNDk0ZWM0Y2Y5OThhMzAKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDI5IDExOjA1OjA5IDIwMDYgLTA1MDAKCiAgICBSZW1vdmUgdHJhaWxpbmcgZW1wdHkgbGluZXMuCgpjb21taXQgY2Q2ZDczZDViODk1YTU5MzVhYzRmZGUwYTM1NjI4ODE0MmE1ODRlMApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBBdWcgMjkgMDk6NDg6NDkgMjAwNiAtMDUwMAoKICAgIFJlbW92ZSBib2d1cyBtc3luYyBhbmQgdXNlIHZvbGF0aWxlIGFzbS4KCmNvbW1pdCA3NzhkNDUwNDljZTU5MjdiNjViM2ZmMWQ4ZTY2OTJiNjU0YmRkNDllCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEF1ZyAyOSAwODoxNzoxNCAyMDA2IC0wNTAwCgogICAgQWRkIG15c2VsZiBhcyBtYWludGFpbmVyIGZvciBNUEM4NjQxSFBDTi4KCmNvbW1pdCAyZjE1Nzc2Y2NjNmRjMzIzNzdkOGJhOTY1MmI4ZjU4MDU5YzI3YzZkCkF1dGhvcjogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEF1ZyAyOCAxNDoyNTozMSAyMDA2ICswODAwCgogICAgRml4ZWQgYW4gT0YtdHJlZSBvZmYtYnktb25lIGJ1ZyB3aGVuIGFkZGluZyBhIG5ldyBwcm9wZXJ0eSBuYW1lLgogICAgVGhpcyBidWcgd2lsbCBjYXVzZSB0aGUga2VybmVsIGJvb3RpbmcgdG8gcGF1c2UgYSBsb25nIHRpbWUuCgogICAgU2lnbmVkLW9mZi1ieTogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1NTY3ODA2YjY3ZDBhZTgzNDkzYWE4ODIzYWQzYjZjOTE0ZjU4MWQ3CkF1dGhvcjogSGFpeWluZyBXYW5nIDxoYWl5aW5nLndhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEF1ZyAyNSAxNDozODozNCAyMDA2IC0wNDAwCgogICAgQ2hhbmdlIHJhbWRpc2thZGRyIGFuZCBkdGJhZGRyCiAgICBSZW1vdmUgUEVYIGZsdWZmIGNvbW1hbmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8aGFpeWluZy53YW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGIyYjc4NDIxZDlkYjQ5YzIxYTgyMWFmOGExOWMyMWMxZjdkZmIyOWUKQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDIzIDEzOjMyOjQ1IDIwMDYgLTA1MDAKCiAgICAqIEFub3RoZXIgc21hbGwgZml4IGZvciBib290aW5nIHdpdGggZGlzYWJsZV9vZgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNGE3Y2MwZjIxOTE4ZTZlY2YwN2VkNTcwNzVkNjdkZjJjNGExMjk5YwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMjMgMTE6MDQ6NDMgMjAwNiAtMDUwMAoKICAgIENsZWFudXAgYW5kIGxpbmRlbnQgbmV3IEFIQ0kgZHJpdmVyLgoKY29tbWl0IGRhYmY5ZWY4YzEwYjRkZWFkNWVmMjEwNmVmNzQyYjFjMDZiNTQyZGUKQXV0aG9yOiBKaW4gWmhlbmd4aW9uZyA8amFzb25AYnVzLmFwLmZyZWVzY2FsZS5uZXQ+CkRhdGU6CVdlZCBBdWcgMjMgMTk6MTU6MTIgMjAwNiArMDgwMAoKICAgIEFkZCBBSENJIGRlZmluZSBhbmQgc2F0YSBzdXBwb3J0IGZvciBNUEM4NjQxSFBDTiBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5Okphc29uIEppbjxqYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0NzgyYWM4MGIwMmYwZDAxYWZkMzA5ZTIyMDBkZDNjNzAzN2YyYmE0CkF1dGhvcjogSmluIFpoZW5neGlvbmcgPGphc29uQGJ1cy5hcC5mcmVlc2NhbGUubmV0PgpEYXRlOglXZWQgQXVnIDIzIDE5OjEwOjQ0IDIwMDYgKzA4MDAKCiAgICBBZGQgQUhDSSBzdXBwb3J0IHRvIHUtYm9vdAoKICAgIEFkZCBBSENJIHN1cHBvcnQgaW4gdS1ib290LCBlbmFibGUgdGhlIHNhdGEgZGlzayBjb250cm9sbGVycyB3aGljaAogICAgZm9sbG93aW5nIHRoZSBBSENJIHByb3RvY29sLgoKICAgIFNpZ25lZC1vZmYtYnk6SmFzb24gSmluPGphc29uLmppbkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGQ4ZWEyYWNmNWYxMzdjYWU5OTQxN2RmNGY1NzNkMDM2ZWUzODQ2NjgKQXV0aG9yOiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDIzIDE3OjU0OjMyIDIwMDYgKzA4MDAKCiAgICBBZGQgZHRiIGJvb3QtdXAgcGFyYW1ldGVyIHRvIGRlZmF1bHQgYm9vdCBjb21tYW5kcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGI5Mzc3NWMyMDM2Yjk5YmFhMzkwZWE0MjVjNDc3MTg5NWJiYzYzYzQKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDIyIDE4OjI2OjA4IDIwMDYgLTA1MDAKCiAgICBDbGVhbnVwIGV2ZW4gbW9yZSBwb29ybHkgaW50cm9kdWNlZCB3aGl0ZXNwYWNlLgoKY29tbWl0IGFlNjI0MTY4NWNiY2YwYzc5YTM2MzY1MzBkMmNlYWIxZmIyOTFhOTQKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDIyIDE4OjA3OjAwIDIwMDYgLTA1MDAKCiAgICBDbGVhbnVwIG1vcmUgcG9vcmx5IGludHJvZHVjZWQgd2hpdGVzcGFjZS4KCmNvbW1pdCAyYzMzZThhMWM1MzViM2FlOTFjZjBiMjg0NDgwNjAwYmYzZjU3YzU3CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEF1ZyAyMiAxNzo1NDowNSAyMDA2IC0wNTAwCgogICAgQ2xlYW51cCBwb29ybHkgaW50cm9kdWNlZCB3aGl0ZXNwYWNlLgoKY29tbWl0IDgwZTk1NWM3ZGQ5OGY0YjRmZDIzYzIxMTNjYWY3NWVkMmI3N2I1YjMKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDIyIDEyOjI1OjI3IDIwMDYgLTA1MDAKCiAgICBHZW5lcmFsIGluZGVudCBhbmQgd2hpdGVzcGFjZSBjbGVhbnVwcy4KCmNvbW1pdCBmZmZmM2FlNTZmNTg0MmNhMzY3OWU0Y2U3OTIyYjgxOWE4N2FhZDlmCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEF1ZyAyMiAxMjowNjoxOCAyMDA2IC0wNTAwCgogICAgR2VuZXJhbCBpbmRlbnQgYW5kIHdoaXRlc3BhY2UgY2xlYW51cHMuCgpjb21taXQgNDFhMGU4YjMwNGQzZmY1NWZlMjdhMjMwNTA3YWFjNzk2ODQwMTZhYwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBBdWcgMjIgMTA6NDI6MjEgMjAwNiAtMDUwMAoKICAgIENsZWFudXAgY29tcGlsZXIgd2FybmluZ3MuCgpjb21taXQgNWRlNjJjNDdhODYyOGIzZGE0ZDczZjdjMDcwMjdmMzJhMzM0MmQ0MApBdXRob3I6IE1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBBdWcgMjIgMDk6MzE6NTkgMjAwNiAtMDUwMAoKICAgIEZpeCBkaXNhYmxlX29mIGJvb3RpbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDg3YTQ0OWM4YWMzOTY0MjBjYjI0MjYwZjcxN2VhOWU2ZmFhODIwNDcKQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDIyIDA5OjIzOjU1IDIwMDYgLTA1MDAKCiAgICBTdXBwb3J0IGZvciBGRFQgaW4gdUltYWdlIGZvcm1hdCwgZXJyb3Igd2hlbiB1c2luZyBGRFQgZnJvbSBmbGFzaAoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNzVjMjk5YzM4MzY5ZDAxYWRkZDVlMDU0YjhhMTYyMTdiNzBmNGE4NgpBdXRob3I6IEhhaXlpbmcgV2FuZyA8aGFpeWluZy53YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBBdWcgMTUgMTU6MTI6NTUgMjAwNiAtMDQwMAoKICAgIFVubG9jayBjYWNoZSBiZWZvcmUga2VybmVsIHN0YXJ0cyB1cCBmb3IgTVBDODZ4eAoKY29tbWl0IDY3MjU2Njc4ZjAwYzA5YjBhN2YxOWU4NjJlNWMxODQ3NTUzZDMxYmMKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPGhhaXlpbmcud2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDE1IDE1OjEzOjE1IDIwMDYgLTA0MDAKCiAgICBDb3B5IEdsb2JhbCBEYXRhIFBvaW50ZXIgdG8gcjI5IGZvciBERUNMQVJFX0dMT0JBTF9EQVRBX1BUUgoKY29tbWl0IDFjOGY2ZDhmYjAyOGYxNTYwOTRkMDVmMmQxNDI5OGU2NDc5MzY0YWMKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPGhhaXlpbmcud2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDE1IDE1OjEyOjU1IDIwMDYgLTA0MDAKCiAgICBVbmxvY2sgY2FjaGUgYmVmb3JlIGtlcm5lbCBzdGFydHMgdXAgZm9yIE1QQzg2eHgKCmNvbW1pdCAwZDljY2M1NWVkZjlhN2YzYzViMmI2MjYzNTgwYTZlYThkNzAyYTA0CkF1dGhvcjogSGFpeWluZyBXYW5nIDxoYWl5aW5nLndhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEF1ZyAxNSAxNToxMzoxNSAyMDA2IC0wNDAwCgogICAgQ29weSBHbG9iYWwgRGF0YSBQb2ludGVyIHRvIHIyOSBmb3IgREVDTEFSRV9HTE9CQUxfREFUQV9QVFIKCmNvbW1pdCA4NmM4ZTE3ZjI1ZTk3MmE3ZTI3Mjk1MGEwNzM1ZmFkODRlMDgyYjg4CkF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEF1ZyAxNiAxMzo1OTo0NyAyMDA2IC0wNTAwCgogICAgKiBGaXggZGlzYWJsZV9vZiBib290aW5nCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyNWM3NTFlOWFkYzg2ZTIyZmUzYjViNDdjZjI4MDYzNzliNTc1ZGI3CkF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEF1ZyAxNiAxMDo1NDowOSAyMDA2IC0wNTAwCgogICAgKiBTdXBwb3J0IGZvciBGRFQgaW4gdUltYWdlIGZvcm1hdCwgZXJyb3Igd2hlbiB1c2luZyBGRFQgZnJvbSBmbGFzaAoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgODk5NjIwYzJkNjZkNGVlZjNiMmEwMDM0ZDA2MmU3MWQ0NWQ4ODZjOQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEF1ZyAxNSAxNDoyMjozNSAyMDA2ICswMjAwCgogICAgQWRkIGluaXRpYWwgc3VwcG9ydCBmb3IgdGhlIEFMUFIgYm9hcmQgZnJvbSBQcm9kcml2ZQogICAgTkFORCBuZWVkcyBzb21lIGFkZGl0aW9uYWwgdGVzdGluZwogICAgUGF0Y2ggYnkgSGVpa28gU2Nob2NoZXIsIDE1IEF1ZyAyMDA2Cgpjb21taXQgZjBmZjQ2OTJmZjMzNzJkZWM1NTA3NGE4ZWI0NDQ5NDNhYjA5NWFiYgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEF1ZyAxNSAxNDoxNTo1MSAyMDA2ICswMjAwCgogICAgQWRkIEZQR0EgQWx0ZXJhIEN5Y2xvbmUgMiBzdXBwb3J0CiAgICBQYXRjaCBieSBIZWlrbyBTY2hvY2hlciwgMTUgQXVnIDIwMDYKCmNvbW1pdCBmZWNmMWM3ZTRkZTFiMjc3OWVkYzE4NzQyYjkxYzIyYmRjMzJiNjhiCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEF1ZyAxNCAxNTozMzozOCAyMDA2IC0wNTAwCgogICAgRml4IEJBVDAgdG8gYWN0dWFsbHkgYmUgY2FjaGVhYmxlLCBub24tZ3VhcmRlZCBhcyBkb2N1bWVudGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNDBiYzgzNTU5ZGI1NzQ1NjgxOTA5ZmQ3MzgyYWU1MDk1NjdlMTE2ZApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgOSAxNTozMjoxNiAyMDA2IC0wNTAwCgogICAgUmVtb3ZlZCBNUEM4NjQxSFBDTiBEVFMgc291cmNlIGZpbGUgZnJvbSBidWlsZC4KICAgIEl0IGlzIG5vIGxvbmdlciBsaW5rZWQgaW50byBVLUJvb3Q7IGl0cyBzb3VyY2VzIGFyZQogICAgbm93IGxvY2F0ZWQgaW4gdGhlIGtlcm5lbCB0cmVlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzRjM2MwZTAxZGJmMWY4Y2MyYmQwOGRlOTJmMmI4OWJhODQ5MjFlYgpBdXRob3I6IE1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKdW4gMjggMTA6NDc6MDMgMjAwNiAtMDUwMAoKICAgICogU3dpdGNoZWQgZGVmYXVsdCBQQ0kgc3BlZWQgZm9yIDg1NDAgQURTIGJhY2sgdG8gMzNNSHoKCiAgICAqIEFkZGVkIGNvbW1lbnRzIGFuZCBhIHByaW50ZiB0byB3YXJuIHRoYXQgUENJLVggd29uJ3QKICAgICAgd29yayBhdCAzM01IegogICAgICBQYXRjaCBieSBBbmR5IEZsZW1pbmcgMTctTWFyLTIwMDYKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjZjNWUxMzczYjZlYTBiYjM3YTE4ZTRhZWVjZWMwMDYxM2QxY2QzOQpBdXRob3I6IE1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKdW4gMjggMTA6NDY6MzUgMjAwNiAtMDUwMAoKICAgICogRml4ZWQgYSBidWcgd2hlcmUgODU1NSBQQ0kgY29kZSB1c2VkIHRoZSBvbGQgdmFyaWFibGUgYW5kIGZ1bmN0aW9uIG5hbWVzIFBhdGNoIGJ5IEFuZHkgRmxlbWluZyAxNy1NYXItMjAwNgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiZjFkZmZmZDhjMjZmOGVjZGQ2MzBhMGFlNGM4MzRlNzUxZTRlNDUyCkF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1biAyOCAxMDo0NjoxMyAyMDA2IC0wNTAwCgogICAgKiBBZGRlZCBWSUEgY29uZmlndXJhdGlvbiB0YWJsZQoKICAgICogQWRkZWQgc3VwcG9ydCBmb3IgUENJMiBvbiBDRFMKICAgICAgUGF0Y2ggYnkgQW5keSBGbGVtaW5nIDE3LU1hci0yMDA2CgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGM4OGY5ZmU2NmI2NDI0N2U1YjZhMzg0MTBiYTMxNWNhMjU1OTZkMTYKQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDI4IDEwOjQ1OjQxIDIwMDYgLTA1MDAKCiAgICAqIEZpeGVkIFBDSSBtZW1vcnkgZGVmaW5pdGlvbnMgUGF0Y2ggYnkgQW5keSBGbGVtaW5nIDE3LU1hci0yMDA2CgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk3MDc0ZWQ5NjU1MzA5YjY0MjMxYmMyY2VlNjlmZTg1Mzk5ZjgwNTUKQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDI4IDEwOjQ1OjE3IDIwMDYgLTA1MDAKCiAgICAqIEFkZGVkIHN1cHBvcnQgZm9yIGluaXRpYWxpemluZyBzZWNvbmQgUENJIGJ1cyBvbiA4NXh4IFBhdGNoIGJ5IEFuZHkgRmxlbWluZyAxNy1NYXItMjAwNgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmMGU2ZjU3ZjcxYjNjNGZkZDEzMDI4ZWIwM2MzZjNlOTE5MjZkZGEyCkF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1biAyOCAxMDo0NDo0OSAyMDA2IC0wNTAwCgogICAgKiBBZGRlZCBQQ0ktWCAjZGVmaW5lcyBmb3IgUENJLVggaW5pdGlhbGl6YXRpb24gUGF0Y2ggYnkgQW5keSBGbGVtaW5nIG9uIDE3LU1hci0yMDA2CgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGE0ZTExNTU4YjgxMGVmMmNkZGZmZGY3YjlkODZiYzExMzA0NDE5NjAKQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDI4IDEwOjQ0OjIzIDIwMDYgLTA1MDAKCiAgICAqIE1hZGUgc3VyZSB0aGUgY29kZSB3aGljaCBkaXNhYmxlcyBwcmVmZXRjaCBmb3IgUENJIGRldmljZXMgc2V0cyB0aGUgc2l6ZSBvZiB0aGUgcHJlZmV0Y2ggcmVnaW9uIHRvIDAgUGF0Y2ggYnkgQW5keSBGbGVtaW5nIG9uIDE3LU1hci0yMDA2CgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDBlMTYzODdkYjFkNGFhY2Q1YmYzNWNiNmQ3YzE5NDI3NjVjMDM0N2IKQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDI4IDEwOjQzOjM2IDIwMDYgLTA1MDAKCiAgICAqIEFkZCBGbGF0IERldiBUcmVlIGNvbnN0cnVjdGlvbiBmb3IgTVBDODV4eCBBRFMgYW5kIENEUyBib2FyZHMgUGF0Y2ggYnkgSm9uIExvZWxpZ2VyIDE3LUphbi0yMDA2CgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4NTVlNmZiMDczZjlkMDRmZTRhN2YwNmMxMDdlY2JhYzYzNDRkZGQ0CkF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1biAyOCAxMDo0MzowMCAyMDA2IC0wNTAwCgogICAgKiBSZW1vdmVkIHRoZSBvZnRyZWUuZHRzIGZvciBzdHh4dHggaW4gbGlnaHQgb2YgdGhlIGNoYW5nZXMgdG8gdGhlIGZsYXQgZGV2aWNlIHRyZWUgaGFuZGxpbmcgY29kZSBQYXRjaCBieSBNYXR0aGV3IE1jQ2xpbnRvY2sgMjYtSnVuZS0yMDA2Cgpjb21taXQgNTQ5OGQ5MDMxMmFhZDlmNmJkYmYwNDc5ODYwMjdjMzViMDNjZDE2MwpBdXRob3I6IE1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKdW4gMjggMTA6NDI6MjQgMjAwNiAtMDUwMAoKICAgICogUGF0Y2ggdG8gbW9kaWZ5IGZ0X2J1aWxkLmMgdG8gdXBkYXRlIGZsYXQgZGV2aWNlIHRyZWVzIGluIHBsYWNlIFBhdGNoIGJ5IE1hdHRoZXcgTWNDbGludG9jayAyNi1KdW5lLTIwMDYKCmNvbW1pdCAwMjY3NzY4ZWRkYzVjYTdiYzE4NjViYzQwYzg2NjgyOWFjNWVmYmZlCkF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1biAyOCAxMDo0MTozNyAyMDA2IC0wNTAwCgogICAgKiBNb2RpZnkgYm9vdG0gY29tbWFuZCB0byBzdXBwb3J0IGJvb3Rpbmcgd2l0aCBmbGF0IGRldmljZSB0cmVlcyBQYXRjaCBieSBNYXR0aGV3IE1jQ2xpbnRvY2sgMjYtSnVuZS0yMDA2Cgpjb21taXQgOGZjOGJkMmNjNDc5YjZjZDE4OGZkZWRlNDAxMGUwZTA1Mjk3MGI4YQpBdXRob3I6IEpvaG4gVHJhaWxsIDxqb2huLnRyYWlsbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDkgMTQ6MzM6NTAgMjAwNiArMDEwMAoKICAgIEFkZCBSYXBpZGlvIHN1cHBvcnQgZm9yIHRoZSBNUEM4NjQxSFBDTgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gVHJhaWxsIDxqb2huLnRyYWlsbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDkxYTQxNGM3ZDFmYjBlYWM5MTI1OTJjZDk5NWIzMGM5ZjIzMDQ1YzkKQXV0aG9yOiBKb2huIFRyYWlsbCA8am9obi50cmFpbGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEF1ZyA4IDExOjMyOjQzIDIwMDYgKzAxMDAKCiAgICBGaXggY2FzbGF0IGNhbGN1bGF0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogSm9obiBUcmFpbGwgPGpvaG4udHJhaWxsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNzA5ZDMwNzNlNzQxNTMyNzhlNzkwNGE3MDgxOWJiZWY3ZGY1MGUxYQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBBdWcgMyAxNjoxNzo1NiAyMDA2IC0wNTAwCgogICAgQ29udmVydCB0byBtYWMtYWRkcmVzcyBpbiBldGhlcm5ldCBub2Rlcy4KCmNvbW1pdCA3MTc0OGFmODMzY2ExMDE3ZWRmMTQxNWJlMzc2MzY2ZmYyOTM3ZDE3CkF1dGhvcjogSGFpeWluZyBXYW5nIDxoYWl5aW5nLndhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEp1bCAyOCAxMjo0MTozNSAyMDA2IC0wNDAwCgogICAgQ29ycmVjdCB0aGUgaXJxIHZhbHVlIG9mIERVQVJUMgoKY29tbWl0IDljYjNlODgxNmFlNGQ4NTRlN2RjMjIxMjhjM2VlYTNkNzBiYjk4MmMKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPGhhaXlpbmcud2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSnVsIDI4IDEyOjQxOjQxIDIwMDYgLTA0MDAKCiAgICBDaGFuZ2UgdGhlIHNwYWNlIHNpemUgb2YgUEVYIElPIGluIFJFQURNRQoKY29tbWl0IDIzOWRiMzdjOTRmN2E5Mjk0MWM0NDY1ZmVjZWI4NjdjNjA5MjQxYzUKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPGhhaXlpbmcud2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSnVsIDI4IDEyOjQxOjE4IDIwMDYgLTA0MDAKCiAgICBNb3ZlIGdldF9ib2FyZF9zeXNfY2xrIHRvIGJvYXJkIGRpcmVjdG9yeQoKY29tbWl0IDQ5MjkwMGI5ODU0MzlmYmNlMWExMThhZmRlMWUzNWRlZjg3MGRiMDMKQXV0aG9yOiBKb2huIFRyYWlsbCA8am9obi50cmFpbGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEp1bCAyOCAwOTowMzo1NCAyMDA2ICswMTAwCgogICAgRml4IDg2NDFIUENOIHBvbGx1dGlvbgoKY29tbWl0IDUxNWFiOGE2MmU4NTc0ZTJiYWJjNmU4ZGNjNDM1NDRhZDIyMWM1YjIKQXV0aG9yOiBKb2huIFRyYWlsbCA8am9obi50cmFpbGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEp1bCAyOCAwODoxNjowNiAyMDA2ICswMTAwCgogICAgRml4IDg2NDFIUENOIHRpbWViYXNlCgpjb21taXQgYzg2MzYwYjgzMGYxZWVjZDdhNzIyMDg1NzVkZGU0ZjU3ODc5ZmFlYQpBdXRob3I6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBKdWwgMjggMDA6MDE6MzQgMjAwNiArMDgwMAoKICAgIEZpeGVkIE9GIGRldmljZSB0cmVlIG9mIG1wYzg2eHhocGNuIGJvYXJkLgoKICAgIFRoZSBjaGFuZ2VzIHdvcmtzIGluIHdpdGgga2VybmVsIGlycSBtYXBwaW5nIHJld29yay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGJlYTNmMjhkMjg1OTQyYmYzZjdhYjMzOWNlODUxNzhkZWQ1NDQyMjUKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPGhhaXlpbmcud2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVsIDEyIDEwOjQ4OjA1IDIwMDYgLTA0MDAKCiAgICBBZGQgc3VwcG9ydCBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyBtYWMgYWRkcmVzc2VzIHRvIG9yIGZyb20gSUQgRUVQUk9NLgoKICAgIEFkZGVkIGNvZGUgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgTWFjIGFkZHJlc3NlcyB0by9mcm9tIElEIEVFUFJPTSgweDU3KS4KICAgIFdpdGggYXR0YWNoZWQgcGF0Y2gsIHdlIGNhbiB1c2UgY29tbWFuZCAibWFjL21hYyByZWFkL21hYyBzYXZlLyIKICAgIHRvIHJlYWQgYW5kIHdyaXRlIEVFUFJPTSB1bmRlciB1LWJvb3QgcHJvbXB0LgoKICAgIFUtYm9vdCB3aWxsIGNhbGN1bGF0ZSB0aGUgY2hlY2tzdW0gb2YgRUVQUk9NIHdoaWxlIGJvb3R1cCwKICAgIGlmIGl0IGlzIHJpZ2h0LCB0aGVuIHUtYm9vdCB3aWxsIGNoZWNrIHdoZXRoZXIgdGhlIG1hYyBhZGRyZXNzCiAgICBvZiBlVFNFQzAvMS8yLzMgaXMgYXZhaWxhbGJlIChub24temVybykuCgogICAgSWYgdGhlcmUgaXMgbWFjIGFkZHJlc3MgYXZhaWxhYmUgaW4gRUVQUk9NLCB1LWJvb3Qgd2lsbCB1c2UgaXQsCiAgICBvdGhlcmV3aXNlLCB1LWJvb3Qgd2lsbCB1c2UgdGhlIG1hYyBhZGRyZXNzIGRlZmluZWQgaW4KICAgIE1QQzg2NDFIUENOLmguIFRoaXMgbWF0Y2hlcyB0aGUgcmVxdWlyZW1lbnQgdG8gc2V0IHVuaXF1ZSBtYWMgYWRkcmVzcwogICAgZm9yIGVhY2ggVFNFQyBwb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8aGFpeWluZy53YW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBZb3JrIFN1biA8eW9ya3N1bkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGZjYjI4ZTc2MzQxNWUwZTRlNjZiMGY0NTg0MmQxNTU3YWUxOThlNWUKQXV0aG9yOiBKaW4gWmhlbmd4aW9uZyA8SmFzb24uSmluQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgMTMgMTA6MzU6MTAgMjAwNiAtMDUwMAoKICAgIEZpeGVkIGluaXRyZCBpc3N1ZSBieSBkZWZpbmUgYmlnIFJBTQoKICAgIFNpZ25lZC1vZmYtYnk6SmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlNmNkMmExNzg1ZDc0ZWMzZDMwYTg2ZjFjYjM2MGJlOGRlNDc4MTUxCkF1dGhvcjogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEp1bCA3IDEwOjAxOjQ1IDIwMDYgLTA1MDAKCiAgICBXZSBtYWRlIGEgdS1ib290IHBhdGNoIHRvIGZpeCB0aGUgaGFuZyB1cCBpc3N1ZQogICAgd2hlbiBib290aW5nIGZpbGVzeXN0ZW0gZnJvbSByYW1kaXNrLgoKICAgIFNpZ25lZC1vZmYtYnk6SmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzODQzM2NjYzU4NTBlZTcwNTQ5YWYwYjJiYzViOTIwMzU1ZWY1Mzg4CkF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1biAyOCAxMDo0NzowMyAyMDA2IC0wNTAwCgogICAgKiBTd2l0Y2hlZCBkZWZhdWx0IFBDSSBzcGVlZCBmb3IgODU0MCBBRFMgYmFjayB0byAzM01IegogICAgKiBBZGRlZCBjb21tZW50cyBhbmQgYSBwcmludGYgdG8gd2FybiB0aGF0IFBDSS1YIHdvbid0CiAgICAgIHdvcmsgYXQgMzNNSHoKICAgICAgUGF0Y2ggYnkgQW5keSBGbGVtaW5nIDE3LU1hci0yMDA2CgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGU0YzJhMGViMGMzZTNmZmJmODI0ODAwMTg0ZWU0MmJkYzk5ZDViMTkKQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDI4IDEwOjQ2OjM1IDIwMDYgLTA1MDAKCiAgICAqIEZpeGVkIGEgYnVnIHdoZXJlIDg1NTUgUENJIGNvZGUgdXNlZCB0aGUgb2xkIHZhcmlhYmxlIGFuZAogICAgICBmdW5jdGlvbiBuYW1lcwogICAgICBQYXRjaCBieSBBbmR5IEZsZW1pbmcgMTctTWFyLTIwMDYKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgY2JmYzdjZTc1NmI4OGViMjZlNTUzN2JjN2I2MjVjNDQ1YzZkY2ZhYwpBdXRob3I6IE1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKdW4gMjggMTA6NDY6MTMgMjAwNiAtMDUwMAoKICAgICogQWRkZWQgVklBIGNvbmZpZ3VyYXRpb24gdGFibGUKICAgICogQWRkZWQgc3VwcG9ydCBmb3IgUENJMiBvbiBDRFMKICAgICAgUGF0Y2ggYnkgQW5keSBGbGVtaW5nIDE3LU1hci0yMDA2CgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDUyYzdhNjhiOGQ1ODdlYmNmNWE2YjA1MWI1OGIzZDNmZmEzNzdkZGMKQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDI4IDEwOjQ1OjQxIDIwMDYgLTA1MDAKCiAgICAqIEZpeGVkIFBDSSBtZW1vcnkgZGVmaW5pdGlvbnMKICAgICAgUGF0Y2ggYnkgQW5keSBGbGVtaW5nIDE3LU1hci0yMDA2CgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDA4NzQ1NDYwOWU0NzI5NTQ0M2FmNzkzYTI4MmNkZGNkOTFhNWY0OWMKQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDI4IDEwOjQ1OjE3IDIwMDYgLTA1MDAKCiAgICAqIEFkZGVkIHN1cHBvcnQgZm9yIGluaXRpYWxpemluZyBzZWNvbmQgUENJIGJ1cyBvbiA4NXh4CiAgICAgIFBhdGNoIGJ5IEFuZHkgRmxlbWluZyAxNy1NYXItMjAwNgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiNjM2YWFlYjZmZDUxNmE0NDJmYjYxMWJiZWVkZGYzMDc3YTY4N2ZiCkF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1biAyOCAxMDo0NDo0OSAyMDA2IC0wNTAwCgogICAgKiBBZGRlZCBQQ0ktWCAjZGVmaW5lcyBmb3IgUENJLVggaW5pdGlhbGl6YXRpb24KICAgICAgUGF0Y2ggYnkgQW5keSBGbGVtaW5nIG9uIDE3LU1hci0yMDA2CgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDIwYWJiYzZmZmZhMTE1NjkwMTA3Y2M5NDJjN2FiZjg0YmRjMDNhMWIKQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDI4IDEwOjQ0OjIzIDIwMDYgLTA1MDAKCiAgICAqIE1hZGUgc3VyZSB0aGUgY29kZSB3aGljaCBkaXNhYmxlcyBwcmVmZXRjaCBmb3IgUENJIGRldmljZXMKICAgICAgc2V0cyB0aGUgc2l6ZSBvZiB0aGUgcHJlZmV0Y2ggcmVnaW9uIHRvIDAKICAgICAgUGF0Y2ggYnkgQW5keSBGbGVtaW5nIG9uIDE3LU1hci0yMDA2CgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQwZDVmYTM1ZDAyZGYyMjU4MDU5M2JmMDAzOWFiMTczMzY3ZThlZjAKQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDI4IDEwOjQzOjM2IDIwMDYgLTA1MDAKCiAgICAqIEFkZCBGbGF0IERldiBUcmVlIGNvbnN0cnVjdGlvbiBmb3IgTVBDODV4eCBBRFMgYW5kIENEUyBib2FyZHMKICAgICAgUGF0Y2ggYnkgSm9uIExvZWxpZ2VyIDE3LUphbi0yMDA2CgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiZTdlOGIwY2I1YTBjNDlkYzE4MDA3NWI5NmRmMjk2YTg5M2JmMTQ2CkF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1biAyOCAxMDo0MzowMCAyMDA2IC0wNTAwCgogICAgKiBSZW1vdmVkIHRoZSBvZnRyZWUuZHRzIGZvciBzdHh4dHggaW4gbGlnaHQgb2YgdGhlIGNoYW5nZXMKICAgICAgdG8gdGhlIGZsYXQgZGV2aWNlIHRyZWUgaGFuZGxpbmcgY29kZQogICAgICBQYXRjaCBieSBNYXR0aGV3IE1jQ2xpbnRvY2sgMjYtSnVuZS0yMDA2Cgpjb21taXQgMWIzODBlYzIyNTY2NWU3Mzk1OTY3N2YzODkzZGM2NThjNTkyNWUwNQpBdXRob3I6IE1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKdW4gMjggMTA6NDI6MjQgMjAwNiAtMDUwMAoKICAgICogUGF0Y2ggdG8gbW9kaWZ5IGZ0X2J1aWxkLmMgdG8gdXBkYXRlIGZsYXQgZGV2aWNlIHRyZWVzIGluIHBsYWNlCiAgICAgIFBhdGNoIGJ5IE1hdHRoZXcgTWNDbGludG9jayAyNi1KdW5lLTIwMDYKCmNvbW1pdCA5OGE5YzRkNDY4YTk0MmEwOWViZTg5NzliZWM1MDgwMTdmM2U0NDYyCkF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1biAyOCAxMDo0MTozNyAyMDA2IC0wNTAwCgogICAgKiBNb2RpZnkgYm9vdG0gY29tbWFuZCB0byBzdXBwb3J0IGJvb3Rpbmcgd2l0aCBmbGF0IGRldmljZSB0cmVlcwogICAgICBQYXRjaCBieSBNYXR0aGV3IE1jQ2xpbnRvY2sgMjYtSnVuZS0yMDA2Cgpjb21taXQgZGEwMTJhYjY2MWZkNGFiMTY5ZGQ3YjliMzIyMDFhNGRmNjJjZjM0YQpBdXRob3I6IEppbiBaaGVuZ3hpb25nIDxKYXNvbi5KaW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1biAyOCAwODo0Mzo1NiAyMDA2IC0wNTAwCgogICAgQ2hhbmdlIElkIHRvIHN5bWJvbGljIG5hbWUgZm9yIFJUTDgxMzkKCiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGJjMDljZjNjMmJmYjhkNTRjNjU5Y2JiMzMyZjc5ZDA5NTA5ODJmZDAKQXV0aG9yOiBKaW4gWmhlbmd4aW9uZy1SNjQxODggPEphc29uLkppbkBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSnVuIDI3IDE4OjEyOjEwIDIwMDYgKzA4MDAKCiAgICBGaXggUlRMODEzOSBpbiBiaWcgZW5kaWFuCgogICAgc2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5KaW5AZnJlZXNjYWxlLmNvbT4KICAgIHNpZ25lZC1vZmYtYnk6IFdlaSBaaGFuZyA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZmNmYjlhNTc5NDdmYzIwM2I5OWZlODFhYjA1NzhmNzI4NjI2MWY5ZgpBdXRob3I6IEppbiBaaGVuZ3hpb25nLVI2NDE4OCA8SmFzb24uSmluQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdW4gMjcgMTg6MTI6MjMgMjAwNiArMDgwMAoKICAgIEZpeCBUc2VjIGJ1ZyB3aGVuIG5vIGxpbmsKCiAgICAgV2hlbiB0ZnRwIGEgbm9uLWV4aXN0IGZpbGUgZnJvbSB0aGUgdGZ0cCBzZXJ2ZXIsIHUtYm9vdCB3aWxsIGNoZWNrCiAgICAgdGhlIGxpbmsgb2YgYWxsIGV0aCBwb3J0LiBUaGUgb3JpZ2luYWwgZmlsZSB3aWxsIHJldHVybiB3cm9uZyBsaW5rCiAgICAgc3RhdGUgb24gdGhlIG5vIGxpbmsgcG9ydHMuCgogICAgc2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5KaW5AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiZDIyYzJiOTc1MTRmYmZiMGUwM2JkOWM3MmIzNDQ1ZTRkYmQ1N2UyCkF1dGhvcjogSmluIFpoZW5neGlvbmctUjY0MTg4IDxKYXNvbi5KaW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEp1biAyNyAxODoxMjowMiAyMDA2ICswODAwCgogICAgRml4IGJ1ZyBmb3IgaW9fYmFyIHNpemUgZHVyaW5nIHBjaSBzY2FuCgogICAgRHVyaW5nIHRoZSBwY2kgc2NhbiBwcm9jZXNzLCBTb21lIGRldmljZXMgcmV0dXJuIGJhcl9yZXBvbnNlIHdpdGggdGhlCiAgICBoaWdoZXN0IGJ5dGVzIDAsIHN1Y2ggYXMgdGhlIHBjaSBicmlkZ2UgaW4gdWxpMTU3NSByZXR1cm4gYmFyX3Jlc3BvbnNlCiAgICB3aXRoIDB4ZmZmZmZmLCBTbyB0aGUgYmFyX3NpemUgc2hvdWxkIGJlIG1hbnVhbGx5IHNldCB1bmRlciA2NEsuCgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxqYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmYTdkYjljMzc3YmMyMzUzYTE3YmYxZDM4MWQ2NWE2YzQxODcyOGYwCkF1dGhvcjogSmluIFpoZW5neGlvbmctUjY0MTg4IDxKYXNvbi5KaW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEp1biAyNyAxODoxMTo1NCAyMDA2ICswODAwCgogICAgRW5hYmxlIFBDSUUxIGZvciBNUEM4NjQxSFBDTiBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTlkNzBlM2E0N2FmZmI5YmFlMDQxYTJjYWVjZTdjZDUxNmUyMTNiMwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgpEYXRlOglNb24gSnVuIDI2IDExOjA2OjAwIDIwMDYgKzAyMDAKCiAgICBNb3JlIGNvZGUgY2xlYW51cAoKY29tbWl0IDY4NDYyM2NlOTJjNWZkMzJlN2RiMmQ2ZTAxNjk0NWE2N2M1ZmZhYmEKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVuIDIyIDA4OjUxOjQ2IDIwMDYgLTA1MDAKCiAgICBGaXggYnVnIGluIDg2NDFocGNuIHJlc2V0IGNvbW1hbmQgd2l0aCBubyBhcmdzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8aGFpeWluZy53YW5nQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4YmU0MjlhNWRkYmYwZWJlMmQ5NDE3NGJhNThmY2ZjN2EyNDI4NWRjCkF1dGhvcjogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEp1biAyMCAxNzo0NzoxNSAyMDA2ICswODAwCgogICAgUmV3b3JrZWQgSVJRIG1hcHBpbmcgaW4gT0YtdHJlZS4KCmNvbW1pdCAwZTRjMmExN2NhMzQwMDFlZDM2ZDI1OWYxM2NiODhhZGE0NjExYThjCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1biAxNSAyMTozMzozNyAyMDA2IC0wNTAwCgogICAgRG8gbm90IGVuYWJsZSBhZGRyZXNzIHRyYW5zbGF0aW9uIG9uIHNlY29uZGFyeSBDUFVzLgogICAgRG8gbm90IHNldCB1cCBCQVRzIG9uIHNlY29uZGFyeSBDUFVzLiAgTGV0IExpbnV4IGRvIHRoZSBuYXN0eS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDM4NmVkYTAyMjQ3MzM5NGFkOGYzNmI4NmYyYmRjOWI0Y2I4MTYyOTEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJV2VkIEp1biAxNCAxODoxNDo1NiAyMDA2ICswMjAwCgogICAgQ29kZSBjbGVhbnVwCgpjb21taXQgMTZjOGQ1ZTc2YWUwZjc4ZjM5YTYwNjA4NTc0YWRmZTBmZWI5Y2M3MApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgpEYXRlOglXZWQgSnVuIDE0IDE3OjQ1OjUzIDIwMDYgKzAyMDAKCiAgICBWYXJpb3VzIFVTQiByZWxhdGVkIHBhdGNoZXMKICAgIC0gQWRkIHN1cHBvcnQgZm9yIG1wYzh4eCBVU0IgZGV2aWNlLgogICAgLSBBZGQgc3VwcG9ydCBmb3IgQ29tbW9uIERldmljZSBDbGFzcyAtIEFic3RyYWN0IENvbnRyb2wgTW9kZWwgVVNCIGNvbnNvbGUuCiAgICAtIEFkZCBzdXBwb3J0IGZvciBmbG93IGNvbnRyb2wgaW4gVVNCIHNsYXZlIGRldmljZXMuCiAgICAtIEFkZCBzdXBwb3J0IGZvciBzd2l0Y2hpbmcgYmV0d2VlbiBnc2VyaWFsIGFuZCBjZGNfYWNtIHVzaW5nIGVudmlyb25tZW50LgogICAgLSBNaW5vciBjaGFuZ2VzIHRvIHVzYmRjb3JlX29tYXAxNTEwLmMgdXNiZGNvcmVfb21hcDE1MTAuaAogICAgLSBVcGRhdGUgdXNiY29yZSBzbGlnaHRseSB0byBlYXNlIGhvc3QgZW51bWVyYXRpb24uCiAgICAtIEZpeCBub24tcG9ydGFibGUgZW5kaWFuIHByb2JsZW1zIGluIHVzYmRjb3JlIGFuZCB1c2JkY29yZV9lcDAuCiAgICAtIEFkZCBBZGRlclVTQl9jb25maWcgYXMgYSBkZWZjb25maWcgdG8gZW5hYmxlIHVzYWdlIG9mIHRoZSBVU0IgY29uc29sZQogICAgICBieSBkZWZhdWx0IHdpdGggdGhlIEFkZGVyODd4IFUtQm9vdCBwb3J0LgogICAgUGF0Y2hlcyBieSBCcnlhbiBPJ0Rvbm9naHVlIDxib2Rvbm9naHVlQGNvZGVoZXJtaXQuaWU+LCAyOSBNYXkgMjAwNgoKY29tbWl0IDhlY2M5NzE2MThmNTYwMjlhZDk5ZDM1MTZmOGIyOTdhNmVkNTg5NzEKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgSnVuIDcgMTA6NTM6NTUgMjAwNiAtMDUwMAoKICAgIEZpeCBhIGdldF9ib2FyZF9zeXNfY2xrKCkgdXNlLWJlZm9yZS1kZWYgd2FybmluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgoKY29tbWl0IGQ5YmY0ODU4ZmNhNWFhNGQ2NTFiMjgzMjcwZjc3ZGE3MmViYWRmZDUKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgSnVuIDcgMTA6NTI6NDkgMjAwNiAtMDUwMAoKICAgIEFsbG93IERUQyBwYXRoIHRvIGJlIHBhc3NlZCBpbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgoKY29tbWl0IGM4M2FlOWVhNmQ5M2FiYmU3NTFiZjhhMzM5NjIzNmEwODRlNTZmODcKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPGhhaXlpbmcud2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSnVuIDYgMTY6NTQ6MjkgMjAwNiAtMDQwMAoKICAgIE1vZGlmeSB0aGUgSVJRIG9mIERVQVJUMgoKY29tbWl0IGM5MzRmNjU1ZjlhZWNhNzBhNWM1Zjg4YjQ2NWQ5ZTlkNTdhOGQyMmUKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgTWF5IDMxIDEzOjU1OjM1IDIwMDYgLTA1MDAKCiAgICBSZXZpZXcgY2xlYW51cHMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjYjU5NjVmYjk1Yjc3YTQ5ZjRlNmFmOTUyNDhlMGM4NDlmNGFmMDNlCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJV2VkIE1heSAzMSAxMjo0NDo0NCAyMDA2IC0wNTAwCgogICAgV2hpdGUgc3BhY2UgY2xlYW51cC4KICAgIFNvbWUgODAtY29sdW1uIGNsZWFudXBzLgogICAgQ29udmVydCBwcmludGYoKSB0byBwdXRzKCkgd2hlcmUgcG9zc2libGUuCiAgICBVc2UgI2luY2x1ZGUgInNwZF9zZHJhbS5oIiBhcyBuZWVkZWQuCiAgICBFbmhhbmNlZCByZXNldCBjb21tYW5kIHVzYWdlIG1lc3NhZ2UgYSBiaXQuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzZDVjNWJlNTQ3NDQ1ZGQzYmQyZWI3MzY4ZDgwZGYwM2VhNDM3OTcwCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJV2VkIE1heSAzMSAxMTozOTozNCAyMDA2IC0wNTAwCgogICAgUmVtb3ZlZCB1bm5lZWRlZCBsb2NhbF9idXNfaW5pdCgpIGZyb20gODY0MUhQQ04gYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0ZDNkNzI5YzE2YzM5MmQyOTgyZDMyNjZiNjU5ZDMzM2M5Mjc2OTdkCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJV2VkIE1heSAzMSAxMToyNDoyOCAyMDA2IC0wNTAwCgogICAgTW92ZWQgbXBjODY0MWhwY25fYm9hcmRfcmVzZXQoKSBvdXQgb2YgY3B1LyBpbnRvIGJvYXJkLy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGIyYTk0MWRlMDYwMzUwYWQxNTg3OGQ4MjE5ODI1ZjQ5NTBlOWJiOGUKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgTWF5IDMxIDEwOjA3OjI4IDIwMDYgLTA1MDAKCiAgICBSZW1vdmUgZGVhZCBkZWJ1ZyBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Cgpjb21taXQgMTI2YWE3MGYxMGJhM2QyMGUwYTZmNGQzMjMyODI1MDUxM2I3Nzc3MApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBNYXkgMzAgMTc6NDc6MDAgMjAwNiAtMDUwMAoKICAgIE1vdmUgbXBjODZ4eCBQSVhJUyBjb2RlIHRvIGJvYXJkIGRpcmVjdG9yeQoKICAgIEZpcnN0IGN1dCBhdCBtb3ZpbmcgdGhlIFBJWElTIHBsYXRmb3JtIGNvZGUgb3V0IG9mCiAgICB0aGUgODZ4eCBjcHUgZGlyZWN0b3J5IGFuZCBpbnRvIGJvYXJkL21wYzg2NDFocGNuCiAgICB3aGVyZSBpdCBiZWxvbmdzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZGRmODNhMmZjZWYxYTY3MGM0NWZjNTg1MTE5ZGNjMWZlMDYyYzRhOQpBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXkgMzAgMTY6NTY6MTQgMjAwNiArMDIwMAoKICAgIFN1cHBvcnQgZ2VuZXJpYyBPSENJIHN1cHBvcnQgZm9yIHRoZSBzM2MyNHgwIGNwdS4KCmNvbW1pdCAzOGNlZTEyZGNmY2MyNTczNzFjOTAxYzdlMTNlNThlY2FiMGEzNWQ4CkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE1heSAzMCAwOToxMDozMiAyMDA2IC0wNTAwCgogICAgSW1wcm92ZSAicmVzZXQiIGNvbW1hbmQncyBpbnRlcmFjdGlvbiB3aXRoIHdhdGNoZG9nLgoKCSJyZXNldCBhbHRiYW5rIiB3aWxsIHJlc2V0IGFub3RoZXIgYmFuayBXSVRIT1VUIHdhdGNoIGRvZyB0aW1lciBlbmFibGVkCgkicmVzZXQgYWx0YmFuayB3ZCIgd2lsbCByZXNldCBhbm90aGVyIGJhbmsgV0lUSCB3YXRjaCBkb2cgZW5hYmxlZAoJImRpc3dkIiB3aWxsIGRpc2FibGUgd2F0Y2ggZG9nIGFmdGVyIHUtYm9vdCBib290cyB1cCBzdWNjZXNzZnVsbHkKCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDcwMjA1ZTVhNmRkYzg1MjhiMTFkYjllYjRkM2ZhMDIwOWQ5ZmNlMmEKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgTWF5IDMwIDA4OjUxOjE5IDIwMDYgLTA1MDAKCiAgICBGaXggdHdvIFNEUkFNIHNldHVwIGJ1Z3MuCgoJRml4IEVDQyBzZXR1cCBidWcuCglFbmFibGUgMVQvMlQgYmFzZWQgb24gbnVtYmVyIG9mIERJTU1zIHByZXNlbnQuCgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkMTFmZWM1MDE1MzM0ZGViMjAxMGUzNmNlMDBiYjExOGNjNTQyOWE1CkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE1heSAyNiAxMDoyNDo0OCAyMDA2IC0wNTAwCgogICAgQWRkIGZpcnN0IGRyYWZ0IG9mIHRoZSBNUEM4NjQxSFBDTiBkb2MvUkVBRE1FLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Cgpjb21taXQgZWQ0NWQ2YzkzMGI1OTM5NzE4YTg3ZWUxMmUyNWNmOWEwNTk3OGQ0YQpBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBNYXkgMjYgMTA6MTM6MDQgMjAwNiAtMDUwMAoKICAgIEFkZGVkIHBjaUA4MDAwIGJsb2NrLgogICAgVXBkYXRlZCBldGhlcm5ldCBpbnRlcnJ1cHQgbWFwcGluZ3MgKG1vdmVkIHVwIDQ4KS4KICAgIENsZWFuZWQgdXAgYSBmZXcgY29tbWVudHMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KCmNvbW1pdCAzMDMzZWJiMjBmZDdjMzcyYzdiY2EzYzk5NTVhNDY5MmJiMjI0MGI3CkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE1heSAyNiAxMDowMToxNiAyMDA2IC0wNTAwCgogICAgQWxsb3cgYXJncyBvbiByZXNldCBjb21tYW5kLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Cgpjb21taXQgMzAxZjFhYTM4NGQwZWRjYWU2YTIyZmQ5YWRiOTMzYWQ3MTY5NWVjYwpBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXkgMjMgMTM6Mzg6MzUgMjAwNiArMDIwMAoKICAgIENoYW5nZWQgdGhlIG1wMnVzYiAoYXQ5MXJtOTIwMCkgYm9hcmQgdG8gdXNlIHRoZSBnZW5lcmljIE9IQ0kgZHJpdmVyLiBTb21lCiAgICBmaXhlcyB0byB0aGUgbGF0dGVyLgoKY29tbWl0IDI0ZTM3NjQ1ZTczNzhiMjBmYThmMjBlMjk5NmM4ZmI4ZTkwYzcwYzkKQXV0aG9yOiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgpEYXRlOglUdWUgTWF5IDIzIDEwOjMzOjExIDIwMDYgKzAyMDAKCiAgICBNb3JlIGNsZWFudXAgZm9yIHRoZSBkZWx0YSBib2FyZCBhbmQgdGhlIGdlbmVyaWMgdXNiX29oY2kgZHJpdmVyLiBBZGRlZAogICAgQ0ZHX1VTQl9CT0FSRF9JTklUIGFuZCBDRkdfVVNCX0NQVV9JTklUIGZvciBlbmFibGluZyBib2FyZCBhbmQgY3B1IHNwZWNpZmljCiAgICBpbml0aWFsaXphdGlvbiBhbmQgY2xlYW51cCBob29rcyByZXNwZWN0aXZlbHkuCgpjb21taXQgM2UzMjZlY2U5ZWJhODE4NGY1ZDQ4YWE0ZmI4Nzc2MGE4ZjZmMGYxMApBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CU1vbiBNYXkgMjIgMTY6MzM6NTQgMjAwNiArMDIwMAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBVU0Igc3RvcmFnZSBzdXBwb3J0IGZvciB0aGUgZGVsdGEgYm9hcmQuIFRoaXMgaXMgdGhlIGZpcnN0CiAgICBib2FyZCB0byBtYWtlIHVzZSBvZiBhIGdlbmVyaWMgT0hDSSBkcml2ZXIsIHRoYXQgY2FsbHMgaG9va3MgZm9yIGJvYXJkCiAgICBkZXBlbmRhbnQgaW5pdGlhbGl6YXRpb24uCgpjb21taXQgMTRlMzcwODFmZjNjYWM3ZWJlNmU5MzgzNjUyMzQyOTg1M2I2YjI5MgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CUZyaSBNYXkgMTkgMTM6Mjg6MzkgMjAwNiAtMDUwMAoKICAgIENoYW5nZSBhcmJpdHJhdGlvbiB0byByb3VuZC1yb2JpbiBmb3IgU01QIGxpbnV4LgoKY29tbWl0IDlhNjU1ODc2ZTU5OTViZTgwZjQ5MDU0ZTI1MDk1MDBlODcxZTRkM2EKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglGcmkgTWF5IDE5IDEzOjI2OjM0IDIwMDYgLTA1MDAKCiAgICBFbmFibGUgZHVhbCBERFIgY29udHJvbGxlcnMgYW5kIGludGVybGVhdmluZy4KCmNvbW1pdCA1ODZkMWQ1YWJkM2U1MjVmMWUxZDliODFlNWE2MWE0ZGE2YjJmYTNjCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJRnJpIE1heSAxOSAxMzoyMjo0NCAyMDA2IC0wNTAwCgogICAgVXBkYXRlIDg2eHggYWRkcmVzcyBtYXAgYW5kIExBV0JBUnMuCgpjb21taXQgY2NjY2U1ZDA1ODFiYjBiYTQ2MDI3OTlhNGI1MTEyZTU4ZDE1NzljYgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CUZyaSBNYXkgMTkgMTM6MTQ6MTUgMjAwNiAtMDUwMAoKICAgIFJlbW92ZSBMMiBDYWNoZSBpbnZhbGlkYXRlIHBvbGxpbmcuCgpjb21taXQgZjM1ZWM2OGZiMDY2Y2VjMGUzNjI5NGJmZTA3ZGVjMmQ0ZThhZDNhOApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CUZyaSBNYXkgMTkgMTI6MzM6MDkgMjAwNiAtMDUwMAoKICAgIEVuYWJsZSAybmQgQ1BVIGFuZCBJMkMuCgpjb21taXQgYmY2OTBkY2I1MTJkMzRjNGZjZWVjMGViMWU1YzBlODhhOWRiNWQ1NApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBNYXkgMTUgMDc6MjY6NTYgMjAwNiAtMDUwMAoKICAgIFVwZGF0ZSBpbnRlcnJ1cHQgbWFwcGluZy4KCmNvbW1pdCA2Y2ZlYTMzNDc3YjA0YjYzZWQ0NzM4NmVkMTYyOTUyOTQ4NGMzM2JhCkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE1heSAxMCAwOTozODowNiAyMDA2IC0wNTAwCgogICAgUmVtb3ZlIHVubmVlZGVkIElOSVRfUkFNX0xPQ0sgY2FjaGUgdHdpZGRsaW5nLgogICAgQ29ycmVjdGx5IHRyYWNrcyByMjkgYXMgZ2xvYmFsIGRhdGEgcG9pbnRlciBub3cuCgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkNGRkMzE3YjU4YzEyNmEyYTdlNzNmNDc2NGVjYzFhN2M5N2Y4NzZjCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE1heSAxMCAwOTozMzowNyAyMDA2IC0wNTAwCgogICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGZsYXNoLmMgZmlsZS4KCmNvbW1pdCAxOGI2YzhjZDhhZjZjYzdmMzUxODBjZWRjNGFkYjMyMzZjYzFhMWI4CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE1heSA5IDA4OjIzOjQ5IDIwMDYgLTA1MDAKCiAgICBHZXQgTVBDODY0MUhQQ04gZmxhc2ggaW1hZ2VzIHdvcmtpbmcuCgoJRW5hYmxlIHRoZSBDRkkgZHJpdmVyLgoJUmVtb3ZlIGJvZ3VzIExBV0JBUjcgY3J1ZnQuCglVc2UgY29ycmVjdCBURVhUX0JBU0UsIEZpeHVwIGxvYWQgc2NyaXB0LgoJRW5hYmxlIFNQRCBFRVBST00gZHVyaW5nIEREUiBzZXR1cC4KCVVzZSBnZW5lcmljIFJGQyAxOTE4IElQIGFkZHJlc3NlcyBieSBkZWZhdWx0LgoKY29tbWl0IDVjOWVmYjM2YTZiNTQzMTQyM2Y1Mjg4OGEwZTNiNGI1MTVmZTdlY2EKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXByIDI3IDEwOjE1OjE2IDIwMDYgLTA1MDAKCiAgICBDbGVhbnVwIHdoaXRlc3BhY2VzIGFuZCBzdHlsZSBpc3N1ZXMuCiAgICBSZW1vdmVkIC8vLXN0eWxlIGNvbW1lbnRzLgogICAgVXNlIDgwLWNvbHVtbiBsaW5lcy4KICAgIFJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlLgogICAgUmVtb3ZlIGRlYWQgY29kZSBhbmQgZGVidWcgY3J1ZnQuCgpjb21taXQgYTIzMjBhNmJmODExM2EwOTU0NGM0MmQxNjBkMTBhYzY5ZDA0OWEwMwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBBcHIgMjcgMDg6MjI6MzkgMjAwNiAtMDUwMAoKICAgIFJldmVydCBiYWQgUENJIHByZWZldGNoIGxpbWl0IGNoYW5nZS4KCmNvbW1pdCBkZWJiNzM1NGQxZWE0ZjY5NDE1NDgxOGRmNWU1YjUyM2Y1YzFjYzFkCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEFwciAyNiAxNzo1ODo1NiAyMDA2IC0wNTAwCgogICAgSW5pdGlhbCBzdXBwb3J0IGZvciBNUEM4NjQxIEhQQ04gYm9hcmQuCg==