ICA8Y2hhcHRlciBpZD0iaW5zdGFsbGluZyI+CiAgICA8dGl0bGU+SW5zdGFsbGluZyBXaW5lPC90aXRsZT4KICAgIDxwYXJhPkhvdyB0byBpbnN0YWxsIFdpbmUuLi48L3BhcmE+CgogICAgPHNlY3QxIGlkPSJyZXBsYWNlLXdpbmRvd3MiPgogICAgICA8dGl0bGU+V1dOICM1MiBGZWF0dXJlOiBSZXBsYWNpbmcgV2luZG93czwvdGl0bGU+CgogICAgICA8cGFyYT4KICAgICAgICBXcml0dGVuIGJ5IE92ZSBL5XZlbiA8ZW1haWw+b3Zla0B3aW5laHEuY29tPC9lbWFpbD4KICAgICAgPC9wYXJhPgoKICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT5JbnN0YWxsYXRpb24gT3ZlcnZpZXc8L3RpdGxlPgoKICAgICAgICA8cGFyYT4KICAgICAgICAgIEEgV2luZG93cyBpbnN0YWxsYXRpb24gY29uc2lzdHMgb2YgbWFueSBkaWZmZXJlbnQgcGFydHMuCiAgICAgICAgPC9wYXJhPgoKICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBSZWdpc3RyeS4gTWFueSBrZXlzIGFyZSBzdXBwb3NlZCB0byBleGlzdCBhbmQgY29udGFpbgogICAgICAgICAgICAgIG1lYW5pbmdmdWwgZGF0YSwgZXZlbiBpbiBhIG5ld2x5LWluc3RhbGxlZCBXaW5kb3dzLgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBEaXJlY3Rvcnkgc3RydWN0dXJlLiBBcHBsaWNhdGlvbnMgZXhwZWN0IHRvIGZpbmQgYW5kL29yCiAgICAgICAgICAgICAgaW5zdGFsbCB0aGluZ3MgaW4gc3BlY2lmaWMgcHJlZGV0ZXJtaW5lZCBsb2NhdGlvbnMuIE1vc3QKICAgICAgICAgICAgICBvZiB0aGVzZSBkaXJlY3RvcmllcyBhcmUgZXhwZWN0ZWQgdG8gZXhpc3QuIEJ1dCB1bmxpa2UKICAgICAgICAgICAgICBVbml4IGRpcmVjdG9yeSBzdHJ1Y3R1cmVzLCBtb3N0IG9mIHRoZXNlIGxvY2F0aW9ucyBhcmUKICAgICAgICAgICAgICBub3QgaGFyZGNvZGVkLCBhbmQgY2FuIGJlIHF1ZXJpZWQgdmlhIHRoZSBXaW5kb3dzIEFQSQogICAgICAgICAgICAgIGFuZCB0aGUgcmVnaXN0cnkuIFRoaXMgcGxhY2VzIGFkZGl0aW9uYWwgcmVxdWlyZW1lbnRzIG9uCiAgICAgICAgICAgICAgYSBXaW5lIGluc3RhbGxhdGlvbi4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgU3lzdGVtIERMTHMuIEluIFdpbmRvd3MsIHRoZXNlIHVzdWFsbHkgcmVzaWRlIGluIHRoZQogICAgICAgICAgICAgIDxmaWxlbmFtZT5zeXN0ZW08L2ZpbGVuYW1lPiAob3IKICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3lzdGVtMzI8L2ZpbGVuYW1lPikgZGlyZWN0b3JpZXMuIFNvbWUgV2luZG93cwogICAgICAgICAgICAgIGFwcGxpY2F0aW9ucyBjaGVjayBmb3IgdGhlaXIgZXhpc3RlbmNlIGluIHRoZXNlCiAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgYmVmb3JlIGF0dGVtcHRpbmcgdG8gbG9hZCB0aGVtLiBXaGlsZSBXaW5lCiAgICAgICAgICAgICAgaXMgYWJsZSB0byBsb2FkIGl0cyBvd24gaW50ZXJuYWwgRExMcwogICAgICAgICAgICAgICg8ZmlsZW5hbWU+LnNvPC9maWxlbmFtZT4gZmlsZXMpIHdoZW4gdGhlIGFwcGxpY2F0aW9uCiAgICAgICAgICAgICAgYXNrcyBmb3IgYSBETEwsIFdpbmUgZG9lcyBub3Qgc2ltdWxhdGUgdGhlIGV4aXN0ZW5jZSBvZgogICAgICAgICAgICAgIG5vbmV4aXN0aW5nIGZpbGVzLgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgoKICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoaWxlIHRoZSB1c2VycyBhcmUgb2YgY291cnNlIGZyZWUgdG8gc2V0IHVwIGV2ZXJ5dGhpbmcKICAgICAgICAgIHRoZW1zZWx2ZXMsIHRoZSBXaW5lIHRlYW0gd2lsbCBtYWtlIHRoZSBhdXRvbWF0ZWQgV2luZQogICAgICAgICAgaW5zdGFsbGF0aW9uIHNjcmlwdCwgPGZpbGVuYW1lPnRvb2xzL3dpbmVpbnN0YWxsPC9maWxlbmFtZT4sCiAgICAgICAgICBkbyBldmVyeXRoaW5nIHdlIGZpbmQgbmVjZXNzYXJ5IHRvIGRvOyBydW5uaW5nIHRoZQogICAgICAgICAgY29udmVudGlvbmFsIDxjb21tYW5kPmNvbmZpZ3VyZSAmJiBtYWtlIGRlcGVuZCAmJiBtYWtlICYmIG1ha2UKICAgICAgICAgICAgaW5zdGFsbDwvY29tbWFuZD4gY3ljbGUgaXMgdGh1cyBub3QgcmVjb21tZW5kZWQsIHVubGVzcwogICAgICAgICAgeW91IGtub3cgd2hhdCB5b3UncmUgZG9pbmcuIEF0IHRoZSBtb21lbnQsCiAgICAgICAgICA8ZmlsZW5hbWU+dG9vbHMvd2luZWluc3RhbGw8L2ZpbGVuYW1lPiBpcyBhYmxlIHRvIGNyZWF0ZSBhCiAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUsIGluc3RhbGwgdGhlIHJlZ2lzdHJ5LCBhbmQgY3JlYXRlIHRoZQogICAgICAgICAgZGlyZWN0b3J5IHN0cnVjdHVyZSBpdHNlbGYuCiAgICAgICAgPC9wYXJhPgogICAgICA8L3NlY3QyPgoKICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT5UaGUgUmVnaXN0cnk8L3RpdGxlPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIGRlZmF1bHQgcmVnaXN0cnkgaXMgaW4gdGhlIGZpbGUKICAgICAgICAgIDxmaWxlbmFtZT53aW5lZGVmYXVsdC5yZWc8L2ZpbGVuYW1lPi4gSXQgY29udGFpbnMgZGlyZWN0b3J5CiAgICAgICAgICBwYXRocywgY2xhc3MgSURzLCBhbmQgbW9yZTsgaXQgbXVzdCBiZSBpbnN0YWxsZWQgYmVmb3JlIG1vc3QKICAgICAgICAgIDxmaWxlbmFtZT5JTlNUQUxMLkVYRTwvZmlsZW5hbWU+IG9yCiAgICAgICAgICA8ZmlsZW5hbWU+U0VUVVAuRVhFPC9maWxlbmFtZT4gYXBwbGljYXRpb25zIHdpbGwgd29yay4gVGhlCiAgICAgICAgICByZWdpc3RyeSBpcyBjb3ZlcmVkIGluIG1vcmUgZGV0YWlsIGluIGFuIGVhcmxpZXIgYXJ0aWNsZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvc2VjdDI+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPkRpcmVjdG9yeSBTdHJ1Y3R1cmU8L3RpdGxlPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSGVyZSdzIHRoZSBmdW5kYW1lbnRhbCBsYXlvdXQgdGhhdCBXaW5kb3dzIGFwcGxpY2F0aW9ucyBhbmQKICAgICAgICAgIGluc3RhbGxlcnMgZXhwZWN0LiBXaXRob3V0IGl0LCB0aGV5IHNlbGRvbSBvcGVyYXRlCiAgICAgICAgICBjb3JyZWN0bHkuCiAgICAgICAgPC9wYXJhPgoKICAgICAgICA8aW5mb3JtYWx0YWJsZSBmcmFtZT0ibm9uZSI+CiAgICAgICAgICA8dGdyb3VwIGNvbHM9IjUiPgogICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5DOlw8L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PjwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5PjwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+Um9vdCBkaXJlY3Rvcnkgb2YgcHJpbWFyeSBkaXNrIGRyaXZlPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PjwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+V2luZG93c1w8L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PjwvZW50cnk+PGVudHJ5PjwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+V2luZG93cyBkaXJlY3RvcnksIGNvbnRhaW5pbmcgLklOSSBmaWxlcywgYWNjZXNzb3JpZXMsIGV0YzwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT48L2VudHJ5PjxlbnRyeT48L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5IHZhbGlnbj0ibWlkZGxlIj5TeXN0ZW1cPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT48L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PjxsaXRlcmFsbGF5b3V0PldpbjMueC85NS85OC9NRSBkaXJlY3RvcnkgZm9yIGNvbW1vbiBETExzCldpbk5ULzIwMDAgZGlyZWN0b3J5IGZvciBjb21tb24gMTYtYml0IERMTHM8L2xpdGVyYWxsYXlvdXQ+PC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PjwvZW50cnk+PGVudHJ5PjwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+U3lzdGVtMzJcPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT48L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5Pldpbk5ULzIwMDAgZGlyZWN0b3J5IGZvciBjb21tb24gMzItYml0IERMTHM8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+PC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5TdGFydCBNZW51XDwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+PC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5Qcm9ncmFtIGxhdW5jaGVyIGRpcmVjdG9yeSBzdHJ1Y3R1cmU8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+PC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5Qcm9ncmFtc1w8L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PlByb2dyYW0gbGF1bmNoZXIgbGlua3MgKC5MTksgZmlsZXMpIHRvIGFwcGxpY2F0aW9uczwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT48L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PlByb2dyYW0gRmlsZXNcPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT48L2VudHJ5PjxlbnRyeT48L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PkFwcGxpY2F0aW9uIGJpbmFyaWVzICguRVhFIGFuZCAuRExMIGZpbGVzKTwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICA8L3Rncm91cD4KICAgICAgICA8L2luZm9ybWFsdGFibGU+CgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBlbXVsYXRlcyBkcml2ZXMgYnkgcGxhY2luZyB0aGVpciB2aXJ0dWFsIGRyaXZlIHJvb3RzIHRvCiAgICAgICAgICB1c2VyLWNvbmZpZ3VyYWJsZSBwb2ludHMgaW4gdGhlIFVuaXggZmlsZXN5c3RlbSwgc28gaXQncwogICAgICAgICAgeW91ciBjaG9pY2Ugd2hlcmUgPG1lZGlhbGFiZWw+Qzo8L21lZGlhbGFiZWw+J3Mgcm9vdCBzaG91bGQKICAgICAgICAgIGJlICg8ZmlsZW5hbWU+dG9vbHMvd2luZWluc3RhbGw8L2ZpbGVuYW1lPiB3aWxsIGV2ZW4gYXNrCiAgICAgICAgICB5b3UpLiBJZiB5b3UgY2hvb3NlLCBzYXksIDxmaWxlbmFtZT4vdmFyL3dpbmU8L2ZpbGVuYW1lPiwgYXMKICAgICAgICAgIHRoZSByb290IG9mIHlvdXIgdmlydHVhbCBkcml2ZSA8bWVkaWFsYWJlbD5DPC9tZWRpYWxhYmVsPiwKICAgICAgICAgIHRoZW4geW91J2QgcHV0IHRoaXMgaW4geW91ciA8ZmlsZW5hbWU+d2luZS5jb25mPC9maWxlbmFtZT46CiAgICAgICAgPC9wYXJhPgoKICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CltEcml2ZSBDXQpQYXRoPS92YXIvd2luZQpUeXBlPWhkCkxhYmVsPU1TLURPUwpGaWxlc3lzdGVtPXdpbjk1CiAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KCiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaXRoIHRoaXMgY29uZmlndXJhdGlvbiwgd2hhdCB3aW5kb3dzIGFwcHMgdGhpbmsgb2YgYXMKICAgICAgICAgICJjOlx3aW5kb3dzXHN5c3RlbSIgd291bGQgbWFwIHRvCiAgICAgICAgICA8ZmlsZW5hbWU+L3Zhci93aW5lL3dpbmRvd3Mvc3lzdGVtPC9maWxlbmFtZT4gaW4gdGhlIFVOSVgKICAgICAgICAgIGZpbGVzeXN0ZW0uIE5vdGUgdGhhdCB5b3UgbmVlZCB0byBzcGVjaWZ5CiAgICAgICAgICA8bGl0ZXJhbD5GaWxlc3lzdGVtPXdpbjk1PC9saXRlcmFsPiwgTk9UCiAgICAgICAgICA8bGl0ZXJhbD5GaWxlc3lzdGVtPXVuaXg8L2xpdGVyYWw+LCB0byBtYWtlIFdpbmUgc2ltdWxhdGUgYQogICAgICAgICAgV2luZG93cy1jb21wYXRpYmxlIChjYXNlLWluc2Vuc2l0aXZlKSBmaWxlc3lzdGVtLCBvdGhlcndpc2UKICAgICAgICAgIG1vc3QgYXBwcyB3b24ndCB3b3JrLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9zZWN0Mj4KCiAgICAgIDxzZWN0Mj4KICAgICAgICA8dGl0bGU+U3lzdGVtIERMTHM8L3RpdGxlPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIFdpbmUgdGVhbSBoYXMgZGV0ZXJtaW5lZCB0aGF0IGl0IGlzIG5lY2Vzc2FyeSB0byBjcmVhdGUKICAgICAgICAgIGZha2UgRExMIGZpbGVzIHRvIHRyaWNrIG1hbnkgYXBwbGljYXRpb25zIHRoYXQgY2hlY2sgZm9yCiAgICAgICAgICBmaWxlIGV4aXN0ZW5jZSB0byBkZXRlcm1pbmUgd2hldGhlciBhIHBhcnRpY3VsYXIgZmVhdHVyZQogICAgICAgICAgKHN1Y2ggYXMgV2luc29jayBhbmQgaXRzIFRDUC9JUCBuZXR3b3JraW5nKSBpcyBhdmFpbGFibGUuIElmCiAgICAgICAgICB0aGlzIGlzIGEgcHJvYmxlbSBmb3IgeW91LCB5b3UgY2FuIGNyZWF0ZSBlbXB0eSBmaWxlcyBpbiB0aGUKICAgICAgICAgIDxmaWxlbmFtZT5zeXN0ZW08L2ZpbGVuYW1lPiBkaXJlY3RvcnkgdG8gbWFrZSB0aGUKICAgICAgICAgIGFwcGxpY2F0aW9uIHRoaW5rIGl0J3MgdGhlcmUsIGFuZCBXaW5lJ3MgYnVpbHQtaW4gRExMIHdpbGwKICAgICAgICAgIGJlIGxvYWRlZCB3aGVuIHRoZSBhcHBsaWNhdGlvbiBhY3R1YWxseSBhc2tzIGZvciBpdC4KICAgICAgICAgIChVbmZvcnR1bmF0ZWx5LCA8ZmlsZW5hbWU+dG9vbHMvd2luZWluc3RhbGw8L2ZpbGVuYW1lPiBkb2VzCiAgICAgICAgICBub3QgY3JlYXRlIHN1Y2ggZW1wdHkgZmlsZXMgaXRzZWxmLikKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBcHBsaWNhdGlvbnMgc29tZXRpbWVzIGFsc28gdHJ5IHRvIGluc3BlY3QgdGhlIHZlcnNpb24KICAgICAgICAgIHJlc291cmNlcyBmcm9tIHRoZSBwaHlzaWNhbCBmaWxlcyAoZm9yIGV4YW1wbGUsIHRvIGRldGVybWluZQogICAgICAgICAgdGhlIERpcmVjdFggdmVyc2lvbikuIEVtcHR5IGZpbGVzIHdpbGwgbm90IGRvIGluIHRoaXMgY2FzZSwKICAgICAgICAgIGl0IGlzIHJhdGhlciBuZWNlc3NhcnkgdG8gaW5zdGFsbCBmaWxlcyB3aXRoIGNvbXBsZXRlCiAgICAgICAgICB2ZXJzaW9uIHJlc291cmNlcy4gVGhpcyBwcm9ibGVtIGlzIGN1cnJlbnRseSBiZWluZyB3b3JrZWQKICAgICAgICAgIG9uLiBJbiB0aGUgbWVhbnRpbWUsIHlvdSBtYXkgc3RpbGwgbmVlZCB0byBncmFiIHNvbWUgcmVhbAogICAgICAgICAgRExMIGZpbGVzIHRvIGZvb2wgdGhlc2UgYXBwcyB3aXRoLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEFuZCB0aGVyZSBhcmUgb2YgY291cnNlIERMTHMgdGhhdCB3aW5lIGRvZXMgbm90IGN1cnJlbnRseQogICAgICAgICAgaW1wbGVtZW50IHZlcnkgd2VsbCAob3IgYXQgYWxsKS4gSWYgeW91IGRvIG5vdCBoYXZlIGEgcmVhbAogICAgICAgICAgV2luZG93cyB5b3UgY2FuIHN0ZWFsIG5lY2Vzc2FyeSBETExzIGZyb20sIHlvdSBjYW4gYWx3YXlzCiAgICAgICAgICBnZXQgc29tZSBmcm9tIGEgRExMIGFyY2hpdmUgc3VjaCBhcwogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3NvbG8uYWJhYy5jb20vZGxsYXJjaGl2ZS8iPmh0dHA6Ly9zb2xvLmFiYWMuY29tL2RsbGFyY2hpdmUvPC91bGluaz4uCiAgICAgICAgPC9wYXJhPgogICAgICA8L3NlY3QyPgogICAgPC9zZWN0MT4KCiAgICA8c2VjdDEgaWQ9Im5vLXdpbmRvd3MiPgogICAgICA8dGl0bGU+SW5zdGFsbGluZyBXaW5lIFdpdGhvdXQgV2luZG93czwvdGl0bGU+CiAgICAgIDxwYXJhPgogICAgICAgIHdyaXR0ZW4gYnkgPz8/CiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgKEV4dHJhY3RlZCBmcm9tIDxmaWxlbmFtZT53aW5lL2RvY3VtZW50YXRpb24vbm8td2luZG93czwvZmlsZW5hbWU+KQogICAgICA8L3BhcmE+CgogICAgICA8cGFyYT4KICAgICAgICBBIG1ham9yIGdvYWwgb2YgV2luZSBpcyB0byBhbGxvdyB1c2VycyB0byBydW4gV2luZG93cyBwcm9ncmFtcwogICAgICAgIHdpdGhvdXQgaGF2aW5nIHRvIGluc3RhbGwgV2luZG93cyBvbiB0aGVpciBtYWNoaW5lLiBXaW5lCiAgICAgICAgaW1wbGVtZW50cyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgbWFpbiBETEwncyB1c3VhbGx5CiAgICAgICAgcHJvdmlkZWQgd2l0aCBXaW5kb3dzLiBUaGVyZWZvcmUsIG9uY2UgV2luZSBpcyBmaW5pc2hlZCwgeW91CiAgICAgICAgd2lsbCBub3QgbmVlZCB0byBoYXZlIHdpbmRvd3MgaW5zdGFsbGVkIHRvIHVzZSBXaW5lLgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIFdpbmUgaGFzIGFscmVhZHkgbWFkZSBlbm91Z2ggcHJvZ3Jlc3MgdGhhdCBpdCBtYXkgYmUgcG9zc2libGUKICAgICAgICB0byBydW4geW91ciB0YXJnZXQgYXBwbGljYXRpb25zIHdpdGhvdXQgV2luZG93cyBpbnN0YWxsZWQuIElmCiAgICAgICAgeW91IHdhbnQgdG8gdHJ5IGl0LCBmb2xsb3cgdGhlc2Ugc3RlcHM6CiAgICAgIDwvcGFyYT4KCiAgICAgIDxvcmRlcmVkbGlzdD4KICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgQ3JlYXRlIGVtcHR5IDxmaWxlbmFtZT5DOlx3aW5kb3dzPC9maWxlbmFtZT4sCiAgICAgICAgICAgIDxmaWxlbmFtZT5DOlx3aW5kb3dzXHN5c3RlbTwvZmlsZW5hbWU+LAogICAgICAgICAgICA8ZmlsZW5hbWU+Qzpcd2luZG93c1xTdGFydCBNZW51PC9maWxlbmFtZT4sIGFuZAogICAgICAgICAgICA8ZmlsZW5hbWU+Qzpcd2luZG93c1xTdGFydCBNZW51XFByb2dyYW1zPC9maWxlbmFtZT4KICAgICAgICAgICAgZGlyZWN0b3JpZXMuIERvIG5vdCBwb2ludCBXaW5lIHRvIGEKICAgICAgICAgICAgPGZpbGVuYW1lPldpbmRvd3M8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgZnVsbCBvZiBvbGQKICAgICAgICAgICAgaW5zdGFsbGF0aW9ucyBhbmQgYSBtZXNzeSByZWdpc3RyeS4gKFdpbmUgY3JlYXRlcyBhCiAgICAgICAgICAgIHNwZWNpYWwgcmVnaXN0cnkgaW4geW91ciA8ZmlsZW5hbWUgPmhvbWU8L2ZpbGVuYW1lPgogICAgICAgICAgICBkaXJlY3RvcnksIGluIDxmaWxlbmFtZT4kSE9NRS8ud2luZS8qLnJlZzwvZmlsZW5hbWU+LgogICAgICAgICAgICBQZXJoYXBzIHlvdSBoYXZlIHRvIHJlbW92ZSB0aGVzZSBmaWxlcykuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgUG9pbnQgPG1lZGlhbGFiZWw+W0RyaXZlIENdPC9tZWRpYWxhYmVsPiBpbgogICAgICAgICAgICA8ZmlsZW5hbWU+d2luZS5jb25mPC9maWxlbmFtZT4gb3IKICAgICAgICAgICAgPGZpbGVuYW1lPi53aW5lcmM8L2ZpbGVuYW1lPiB0byB3aGVyZSB5b3Ugd2FudAogICAgICAgICAgICA8ZmlsZW5hbWU+Qzo8L2ZpbGVuYW1lPiB0byBiZS4gUmVmZXIgdG8gdGhlIFdpbmUgbWFuIHBhZ2UKICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uIFJlbWVtYmVyIHRvIHVzZQogICAgICAgICAgICA8dXNlcmlucHV0PmZpbGVzeXN0ZW09d2luOTU8L3VzZXJpbnB1dD4hCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVXNlIDxmaWxlbmFtZT50b29scy93aW5laW5zdGFsbDwvZmlsZW5hbWU+IHRvIGNvbXBpbGUgV2luZQogICAgICAgICAgICBhbmQgaW5zdGFsbCB0aGUgZGVmYXVsdCByZWdpc3RyeS4gT3IgaWYgeW91IHByZWZlciB0byBkbwogICAgICAgICAgICBpdCB5b3Vyc2VsZiwgY29tcGlsZSA8ZmlsZW5hbWU+cHJvZ3JhbXMvcmVnYXBpPC9maWxlbmFtZT4sCiAgICAgICAgICAgIGFuZCBydW46ICAgPGNvbW1hbmQ+cHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaSBzZXRWYWx1ZSAmbHQ7CiAgICAgICAgICAgIHdpbmVkZWZhdWx0LnJlZzwvY29tbWFuZD4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBSdW4gYW5kL29yIGluc3RhbGwgeW91ciBhcHBsaWNhdGlvbnMuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgPC9saXN0aXRlbT4KICAgICAgPC9vcmRlcmVkbGlzdD4KCiAgICAgIDxwYXJhPgogICAgICAgIEJlY2F1c2UgV2luZSBpcyBub3QgeWV0IGNvbXBsZXRlLCBzb21lIHByb2dyYW1zIHdpbGwgd29yawogICAgICAgIGJldHRlciB3aXRoIG5hdGl2ZSBXaW5kb3dzIERMTCdzIHRoYW4gd2l0aCBXaW5lJ3MKICAgICAgICByZXBsYWNlbWVudHMuIFdpbmUgaGFzIGJlZW4gZGVzaWduZWQgdG8gbWFrZSB0aGlzIHBvc3NpYmxlLgogICAgICAgIEhlcmUgYXJlIHNvbWUgdGlwcyBieSBKdWVyZ2VuIFNjaG1pZWQgKGFuZCBvdGhlcnMpIG9uIGhvdyB0bwogICAgICAgIHByb2NlZWQuIFRoaXMgYXNzdW1lcyB0aGF0IHlvdXIKICAgICAgICA8ZmlsZW5hbWU+Qzpcd2luZG93czwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpbiB0aGUgY29uZmlndXJhdGlvbgogICAgICAgIGZpbGUgZG9lcyBub3QgcG9pbnQgdG8gYSBuYXRpdmUgV2luZG93cyBpbnN0YWxsYXRpb24gYnV0IGlzIGluCiAgICAgICAgYSBzZXBhcmF0ZSBVbml4IGZpbGUgc3lzdGVtLiAoRm9yIGluc3RhbmNlLCA8cXVvdGU+Qzpcd2luZG93czwvcXVvdGU+IGlzCiAgICAgICAgcmVhbGx5IHN1YmRpcmVjdG9yeSA8cXVvdGU+d2luZG93czwvcXVvdGU+IGxvY2F0ZWQgaW4KICAgICAgICA8cXVvdGU+L2hvbWUvZWdvL3dpbmUvZHJpdmVzL2M8L3F1b3RlPikuCiAgICAgIDwvcGFyYT4KCiAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFJ1biB0aGUgYXBwbGljYXRpb24gd2l0aCA8cGFyYW1ldGVyPi0tZGVidWdtc2cKICAgICAgICAgICAgICArbW9kdWxlLCtmaWxlPC9wYXJhbWV0ZXI+IHRvIGZpbmQgb3V0IHdoaWNoIGZpbGVzIGFyZQogICAgICAgICAgICBuZWVkZWQuIENvcHkgdGhlIHJlcXVpcmVkIERMTCdzIG9uZSBieSBvbmUgdG8gdGhlCiAgICAgICAgICAgIDxmaWxlbmFtZT5DOlx3aW5kb3dzXHN5c3RlbTwvZmlsZW5hbWU+IGRpcmVjdG9yeS4gRG8gbm90CiAgICAgICAgICAgIGNvcHkgS0VSTkVML0tFUk5FTDMyLCBHREkvR0RJMzIsIG9yIFVTRVIvVVNFUjMyLiBUaGVzZQogICAgICAgICAgICBpbXBsZW1lbnQgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgV2luZG93cyBBUEksIGFuZAogICAgICAgICAgICB0aGUgV2luZSBpbnRlcm5hbCB2ZXJzaW9ucyBtdXN0IGJlIHVzZWQuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgRWRpdCB0aGUgPHF1b3RlPltEbGxPdmVycmlkZXNdPC9xdW90ZT4gc2VjdGlvbiBvZgogICAgICAgICAgICA8ZmlsZW5hbWU+d2luZS5jb25mPC9maWxlbmFtZT4gb3IKICAgICAgICAgICAgPGZpbGVuYW1lPi53aW5lcmM8L2ZpbGVuYW1lPiB0byBzcGVjaWZ5CiAgICAgICAgICAgIDxxdW90ZT5uYXRpdmU8L3F1b3RlPiBiZWZvcmUgPHF1b3RlPmJ1aWx0aW48L3F1b3RlPiBmb3IKICAgICAgICAgICAgdGhlIFdpbmRvd3MgRExMJ3MgeW91IHdhbnQgdG8gdXNlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbgogICAgICAgICAgICBhYm91dCB0aGlzLCBzZWUgdGhlIFdpbmUgbWFucGFnZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBOb3RlIHRoYXQgc29tZSBuZXR3b3JrIERMTCdzIGFyZSBub3QgbmVlZGVkIGV2ZW4gdGhvdWdoCiAgICAgICAgICAgIFdpbmUgaXMgbG9va2luZyBmb3IgdGhlbS4gVGhlIFdpbmRvd3MKICAgICAgICAgICAgPGZpbGVuYW1lPk1QUi5ETEw8L2ZpbGVuYW1lPiBjdXJyZW50bHkgZG9lcyBub3Qgd29yazsgeW91CiAgICAgICAgICAgIG11c3QgdXNlIHRoZSBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbi4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBDb3B5IFNIRUxML1NIRUxMMzIgYW5kIENPTURMRy9DT01ETEczMiBDT01NQ1RSTC9DT01DVEwzMgogICAgICAgICAgICBvbmx5IGFzIHBhaXJzIHRvIHlvdXIgV2luZSBkaXJlY3RvcnkgKHRoZXNlIERMTCdzIGFyZQogICAgICAgICAgICA8cXVvdGU+Y2xlYW48L3F1b3RlPiB0byB1c2UpLiAgTWFrZSBzdXJlIHlvdSBoYXZlIHRoZXNlCiAgICAgICAgICAgIHNwZWNpZmllZCBpbiB0aGUgPHF1b3RlPltEbGxQYWlyc108L3F1b3RlPiBzZWN0aW9uIG9mCiAgICAgICAgICAgIDxmaWxlbmFtZT53aW5lLmNvbmY8L2ZpbGVuYW1lPiBvciAud2luZXJjLgogICAgICAgICAgPC9wYXJhPgogICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEJlIGNvbnNpc3RlbnQ6IFVzZSBvbmx5IERMTCdzIGZyb20gdGhlIHNhbWUgV2luZG93cyB2ZXJzaW9uCiAgICAgICAgICAgIHRvZ2V0aGVyLgogICAgICAgICAgPC9wYXJhPgogICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFB1dCA8ZmlsZW5hbWU+cmVnZWRpdC5leGU8L2ZpbGVuYW1lPiBpbiB0aGUKICAgICAgICAgICAgPGZpbGVuYW1lPkM6XHdpbmRvd3M8L2ZpbGVuYW1lPiBkaXJlY3RvcnkKICAgICAgICAgICAgKDxhcHBsaWNhdGlvbj5vZmZpY2U5NTwvYXBwbGljYXRpb24+IGltcG9ydHMgYQogICAgICAgICAgICA8ZmlsZW5hbWU+Ki5yZWc8L2ZpbGVuYW1lPiBmaWxlIHdoZW4gaXQgcnVucyB3aXRoIGEgZW1wdHkKICAgICAgICAgICAgcmVnaXN0cnksIGRvbid0IGtub3cgYWJvdXQKICAgICAgICAgICAgPGFwcGxpY2F0aW9uPm9mZmljZTk3PC9hcHBsaWNhdGlvbj4pLgogICAgICAgICAgPC9wYXJhPgogICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEFsc28gYWRkIDxmaWxlbmFtZT53aW5oZWxwLmV4ZTwvZmlsZW5hbWU+IGFuZAogICAgICAgICAgICA8ZmlsZW5hbWU+d2luaGxwMzIuZXhlPC9maWxlbmFtZT4gaWYgeW91IHdhbnQgdG8gYmUgYWJsZQogICAgICAgICAgICB0byBicm93c2UgdGhyb3VnaCB5b3VyIHByb2dyYW1zJyBoZWxwIGZ1bmN0aW9uLgogICAgICAgICAgPC9wYXJhPgogICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgPC9zZWN0MT4KCiAgICA8c2VjdDEgaWQ9InZmYXQiPgogICAgICA8dGl0bGU+RGVhbGluZyBXaXRoIEZBVC9WRkFUIFBhcnRpdGlvbnM8L3RpdGxlPgogICAgICA8cGFyYT4KICAgICAgICB3cml0dGVuIGJ5IFN0ZXZlbiBFbGxpb3R0IChlbGxpb3RzbEBtaW5kc3ByaW5nLmNvbSkKICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICAoRXh0cmFjdGVkIGZyb20gPGZpbGVuYW1lPndpbmUvZG9jdW1lbnRhdGlvbi9saW51eC1mYXQtcGVybWlzc2lvbnM8L2ZpbGVuYW1lPikKICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICBUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyBob3cgRkFUIGFuZAogICAgICAgIFZGQVQgZmlsZSBzeXN0ZW0gcGVybWlzc2lvbnMgd29yayBpbiBMaW51eAogICAgICAgIHdpdGggYSBmb2N1cyBvbiBjb25maWd1cmluZyB0aGVtIGZvciBXaW5lLgogICAgICA8L3BhcmE+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPkludHJvZHVjdGlvbjwvdGl0bGU+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBMaW51eCBpcyBhYmxlIHRvIGFjY2VzcyBET1MgYW5kIFdpbmRvd3MgZmlsZSBzeXN0ZW1zIHVzaW5nCiAgICAgICAgICBlaXRoZXIgdGhlIEZBVCAob2xkZXIgOC4zIERPUyBmaWxlc3lzdGVtcykgb3IgVkZBVCAobmV3ZXIKICAgICAgICAgIFdpbmRvd3MgOTUgb3IgbGF0ZXIgbG9uZyBmaWxlbmFtZSBmaWxlc3lzdGVtcykgbW9kdWxlcy4KICAgICAgICAgIE1vdW50ZWQgRkFUIG9yIFZGQVQgZmlsZXN5c3RlbXMgcHJvdmlkZSB0aGUgcHJpbWFyeSBtZWFucwogICAgICAgICAgZm9yIHdoaWNoIGV4aXN0aW5nIGFwcGxpY2F0aW9ucyBhbmQgdGhlaXIgZGF0YSBhcmUgYWNjZXNzZWQKICAgICAgICAgIHRocm91Z2ggV2luZSBmb3IgZHVhbCBib290IChMaW51eCArIFdpbmRvd3MpIHN5c3RlbXMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBtYXBzIG1vdW50ZWQgRkFUIGZpbGVzeXN0ZW1zLCBzdWNoIGFzCiAgICAgICAgICA8ZmlsZW5hbWU+L2M8L2ZpbGVuYW1lPiwgdG8gZHJpdmVyIGxldHRlcnMsIHN1Y2ggYXMKICAgICAgICAgIDxxdW90ZT5jOjwvcXVvdGU+LCBhcyBpbmRpY2F0ZWQgYnkgdGhlCiAgICAgICAgICA8ZmlsZW5hbWU+d2luZS5jb25mPC9maWxlbmFtZT4gZmlsZS4gIFRoZSBmb2xsb3dpbmcgZXhjZXJwdAogICAgICAgICAgZnJvbSBhIDxmaWxlbmFtZT53aW5lLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGRvZXMgdGhpczoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHByb2dyYW1saXN0aW5nPgpbRHJpdmUgQ10KUGF0aD0vYwpUeXBlPWhkCiAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEFsdGhvdWdoIFZGQVQgZmlsZXN5c3RlbXMgYXJlIHByZWZlcmFibGUgdG8gRkFUIGZpbGVzeXN0ZW1zCiAgICAgICAgICBmb3IgdGhlaXIgbG9uZyBmaWxlbmFtZSBzdXBwb3J0IHRoZSB0ZXJtIDxxdW90ZT5GQVQ8L3F1b3RlPgogICAgICAgICAgd2lsbCBiZSB1c2VkIHRocm91Z2hvdXQgdGhlIHJlbWFpbmRlciBvZiB0aGlzIGRvY3VtZW50IHRvCiAgICAgICAgICByZWZlciB0byBGQVQgZmlsZXN5c3RlbXMgYW5kIHRoZWlyIGRlcml2YXRpdmVzLiBBbHNvLAogICAgICAgICAgPHF1b3RlPi9jPC9xdW90ZT4gd2lsbCBiZSB1c2VkIGFzIHRoZSBGQVQgbW91bnQgcG9pbnQgaW4KICAgICAgICAgIGV4YW1wbGVzIHRocm91Z2hvdXQgdGhpcyBkb2N1bWVudC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNb3N0IG1vZGVybiBMaW51eCBkaXN0cmlidXRpb25zIGVpdGhlciBkZXRlY3Qgb3IgYWxsb3cKICAgICAgICAgIGV4aXN0aW5nIEZBVCBmaWxlIHN5c3RlbXMgdG8gYmUgY29uZmlndXJlZCBzbyB0aGF0IGNhbiBiZQogICAgICAgICAgbW91bnRlZCwgaW4gYSBsb2NhdGlvbiBzdWNoIGFzIDxmaWxlbmFtZT4vYzwvZmlsZW5hbWU+LAogICAgICAgICAgZWl0aGVyIHBlcnNpc3RlbnRseSAob24gYm9vdHVwKSBvciBvbiBhbiBhcyBuZWVkZWQgYmFzaXMuIEluCiAgICAgICAgICBlaXRoZXIgY2FzZSwgYnkgZGVmYXVsdCwgdGhlIHBlcm1pc3Npb25zIHdpbGwgcHJvYmFibHkgYmUKICAgICAgICAgIGNvbmZpZ3VyZWQgc28gdGhhdCB0aGV5IGxvb2sgc29tZXRoaW5nIGxpa2U6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+Cjxwcm9tcHQ+fj48L3Byb21wdD48dXNlcmlucHV0PmNkIC9jPC91c2VyaW5wdXQ+Cjxwcm9tcHQ+L2M+PC9wcm9tcHQ+PHVzZXJpbnB1dD5scyAtbDwvdXNlcmlucHV0Pgo8Y29tcHV0ZXJvdXRwdXQ+LXJ3eHIteHIteCAgIDEgcm9vdCAgICAgcm9vdCAgICAgICAgICAgOTEgT2N0IDEwIDE3OjU4IGF1dG9leGVjLmJhdAotcnd4ci14ci14ICAgMSByb290ICAgICByb290ICAgICAgICAgIDI0NSBPY3QgMTAgMTc6NTggY29uZmlnLnN5cwpkcnd4ci14ci14ICA0MSByb290ICAgICByb290ICAgICAgICAxNjM4NCBEZWMgMzAgIDE5OTggd2luZG93czwvY29tcHV0ZXJvdXRwdXQ+CiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICB3aGVyZSBhbGwgdGhlIGZpbGVzIGFyZSBvd25lZCBieSAicm9vdCIsIGFyZSBpbiB0aGUgInJvb3QiCiAgICAgICAgICBncm91cCBhbmQgYXJlIG9ubHkgd3JpdGFibGUgYnkgInJvb3QiCiAgICAgICAgICAoPGxpdGVyYWw+NzU1PC9saXRlcmFsPiBwZXJtaXNzaW9ucykuIFRoaXMgaXMgcmVzdHJpY3RpdmUgaW4KICAgICAgICAgIHRoYXQgaXQgcmVxdWlyZXMgdGhhdCBXaW5lIGJlIHJ1biBhcyByb290IGluIG9yZGVyIGZvcgogICAgICAgICAgYXBwbGljYXRpb25zIHRvIGJlIGFibGUgdG8gd3JpdGUgdG8gYW55IHBhcnQgb2YgdGhlCiAgICAgICAgICBmaWxlc3lzdGVtLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZXJlIHRocmVlIG1ham9yIGFwcHJvYWNoZXMgdG8gb3ZlcmNvbWluZyB0aGUgcmVzdHJpY3RpdmUKICAgICAgICAgIHBlcm1pc3Npb25zIG1lbnRpb25lZCBpbiB0aGUgcHJldmlvdXMgcGFyYWdyYXBoOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFJ1biA8YXBwbGljYXRpb24+V2luZTwvYXBwbGljYXRpb24+IGFzIHJvb3QKICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgTW91bnQgdGhlIEZBVCBmaWxlc3lzdGVtIHdpdGggbGVzcyByZXN0cmljdGl2ZQogICAgICAgICAgICAgIHBlcm1pc3Npb25zCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFNoYWRvdyB0aGUgRkFUIGZpbGVzeXN0ZW0gYnkgY29tcGxldGVseSBvciBwYXJ0aWFsbHkKICAgICAgICAgICAgICBjb3B5aW5nIGl0CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9vcmRlcmVkbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEVhY2ggYXBwcm9hY2ggd2lsbCBiZSBkaXNjdXNzZWQgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucy4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvc2VjdDI+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPlJ1bm5pbmcgV2luZSBhcyByb290PC90aXRsZT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFJ1bm5pbmcgV2luZSBhcyByb290IGlzIHRoZSBlYXNpZXN0IGFuZCBtb3N0IHRob3JvdWdoIHdheSBvZiBnaXZpbmcKICAgICAgICAgIGFwcGxpY2F0aW9ucyB0aGF0IFdpbmUgcnVucyB1bnJlc3RyaWN0ZWQgYWNjZXNzIHRvIEZBVCBmaWxlcyBzeXN0ZW1zLgogICAgICAgICAgUnVubmluZyB3aW5lIGFzIHJvb3QgYWxzbyBhbGxvd3MgYXBwbGljYXRpb25zIHRvIGRvIHRoaW5ncyB1bnJlbGF0ZWQKICAgICAgICAgIHRvIEZBVCBmaWxlc3lzdGVtcywgc3VjaCBhcyBsaXN0ZW5pbmcgdG8gcG9ydHMgdGhhdCBhcmUgbGVzcyB0aGFuCiAgICAgICAgICAxMDI0LiAgUnVubmluZyBXaW5lIGFzIHJvb3QgaXMgZGFuZ2Vyb3VzIHNpbmNlIHRoZXJlIGlzIG5vIGxpbWl0IHRvCiAgICAgICAgICB3aGF0IHRoZSBhcHBsaWNhdGlvbiBjYW4gZG8gdG8gdGhlIHN5c3RlbS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvc2VjdDI+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPk1vdW50aW5nIEZBVCBmaWxlc3lzdGVtczwvdGl0bGU+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgRkFUIGZpbGVzeXN0ZW0gY2FuIGJlIG1vdW50ZWQgd2l0aCBwZXJtaXNzaW9ucyBsZXNzIHJlc3RyaWN0aXZlCiAgICAgICAgICB0aGFuIHRoZSBkZWZhdWx0LiAgVGhpcyBjYW4gYmUgZG9uZSBieSBlaXRoZXIgY2hhbmdpbmcgdGhlIHVzZXIgdGhhdAogICAgICAgICAgbW91bnRzIHRoZSBGQVQgZmlsZXN5c3RlbSBvciBieSBleHBsaWNpdGx5IGNoYW5naW5nIHRoZSBwZXJtaXNzaW9ucwogICAgICAgICAgdGhhdCB0aGUgRkFUIGZpbGVzeXN0ZW0gaXMgbW91bnRlZCB3aXRoLiAgVGhlIHBlcm1pc3Npb25zIGFyZQogICAgICAgICAgaW5oZXJpdGVkIGZyb20gdGhlIHByb2Nlc3MgdGhhdCBtb3VudHMgdGhlIEZBVCBmaWxlc3lzdGVtLiAgU2luY2UgdGhlCiAgICAgICAgICBwcm9jZXNzIHRoYXQgbW91bnRzIHRoZSBGQVQgZmlsZXN5c3RlbSBpcyB1c3VhbGx5IGEgc3RhcnR1cCBzY3JpcHQKICAgICAgICAgIHJ1bm5pbmcgYXMgcm9vdCB0aGUgRkFUIGZpbGVzeXN0ZW0gaW5oZXJpdHMgcm9vdCdzIHBlcm1pc3Npb25zLiAgVGhpcwogICAgICAgICAgcmVzdWx0cyBpbiB0aGUgZmlsZXMgb24gdGhlIEZBVCBmaWxlc3lzdGVtIGhhdmluZyBwZXJtaXNzaW9ucyBzaW1pbGFyCiAgICAgICAgICB0byBmaWxlcyBjcmVhdGVkIGJ5IHJvb3QuICBGb3IgZXhhbXBsZToKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KPHByb21wdD5+PjwvcHJvbXB0Pjx1c2VyaW5wdXQ+d2hvYW1pPC91c2VyaW5wdXQ+Cjxjb21wdXRlcm91dHB1dD5yb290PC9jb21wdXRlcm91dHB1dD4KPHByb21wdD5+PjwvcHJvbXB0Pjx1c2VyaW5wdXQ+dG91Y2ggcm9vdF9maWxlPC91c2VyaW5wdXQ+Cjxwcm9tcHQ+fj48L3Byb21wdD48dXNlcmlucHV0PmxzIC1sIHJvb3RfZmlsZTwvdXNlcmlucHV0Pgo8Y29tcHV0ZXJvdXRwdXQ+PC9jb21wdXRlcm91dHB1dD4tcnctci0tci0tICAgMSByb290ICAgICByb290ICAgICAgICAgICAgMCBEZWMgMTAgMDA6MjAgcm9vdF9maWxlCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICB3aGljaCBtYXRjaGVzIHRoZSBvd25lciwgZ3JvdXAgYW5kIHBlcm1pc3Npb25zIG9mIGZpbGVzIHNlZW4KICAgICAgICAgIG9uIHRoZSBGQVQgZmlsZXN5c3RlbSBleGNlcHQgZm9yIHRoZSBtaXNzaW5nICd4J3MuICBUaGUKICAgICAgICAgIHBlcm1pc3Npb25zIG9uIHRoZSBGQVQgZmlsZXN5c3RlbSBjYW4gYmUgY2hhbmdlZCBieSBjaGFuZ2luZwogICAgICAgICAgcm9vdCdzIHVtYXNrICh1bnNldCBwZXJtaXNzaW9ucyBiaXRzKS4gIEZvciBleGFtcGxlOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgo8cHJvbXB0Pn4+PC9wcm9tcHQ+PHVzZXJpbnB1dD51bW91bnQgL2M8L3VzZXJpbnB1dD4KPHByb21wdD5+PjwvcHJvbXB0Pjx1c2VyaW5wdXQ+dW1hc2s8L3VzZXJpbnB1dD4KPGNvbXB1dGVyb3V0cHV0PjAyMjwvY29tcHV0ZXJvdXRwdXQ+Cjxwcm9tcHQ+fj48L3Byb21wdD48dXNlcmlucHV0PnVtYXNrIDA3MzwvdXNlcmlucHV0Pgo8cHJvbXB0Pn4+PC9wcm9tcHQ+PHVzZXJpbnB1dD5tb3VudCAvYzwvdXNlcmlucHV0Pgo8cHJvbXB0Pn4+PC9wcm9tcHQ+PHVzZXJpbnB1dD5jZCAvYzwvdXNlcmlucHV0Pgo8cHJvbXB0Pi9jPjwvcHJvbXB0Pjx1c2VyaW5wdXQ+bHMgLWw8L3VzZXJpbnB1dD4KPGNvbXB1dGVyb3V0cHV0Pi1yd3gtLS1yLS0gICAxIHJvb3QgICAgIHJvb3QgICAgICAgICAgIDkxIE9jdCAxMCAxNzo1OCBhdXRvZXhlYy5iYXQKLXJ3eC0tLXItLSAgIDEgcm9vdCAgICAgcm9vdCAgICAgICAgICAyNDUgT2N0IDEwIDE3OjU4IGNvbmZpZy5zeXMKZHJ3eC0tLXItLSAgNDEgcm9vdCAgICAgcm9vdCAgICAgICAgMTYzODQgRGVjIDMwICAxOTk4IHdpbmRvd3M8L2NvbXB1dGVyb3V0cHV0PgogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTW91bnRpbmcgdGhlIEZBVCBmaWxlc3lzdGVtIHdpdGggYSB1bWFzayBvZgogICAgICAgICAgPGxpdGVyYWw+MDAwPC9saXRlcmFsPiBnaXZlcyBhbGwgdXNlcnMgY29tcGxldGUgY29udHJvbCBvdmVyCiAgICAgICAgICBpdC4gRXhwbGljaXRseSBzcGVjaWZ5aW5nIHRoZSBwZXJtaXNzaW9ucyBvZiB0aGUgRkFUCiAgICAgICAgICBmaWxlc3lzdGVtIHdoZW4gaXQgaXMgbW91bnRlZCBwcm92aWRlcyBhZGRpdGlvbmFsIGNvbnRyb2wuCiAgICAgICAgICBUaGVyZSBhcmUgdGhyZWUgbW91bnQgb3B0aW9ucyB0aGF0IGFyZSByZWxldmFudCB0byBGQVQKICAgICAgICAgIHBlcm1pc3Npb25zOiA8bGl0ZXJhbD51aWQ8L2xpdGVyYWw+LCA8bGl0ZXJhbD5naWQ8L2xpdGVyYWw+CiAgICAgICAgICBhbmQgPGxpdGVyYWw+dW1hc2s8L2xpdGVyYWw+LiAgVGhleSBjYW4gZWFjaCBiZSBzcGVjaWZpZWQKICAgICAgICAgIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgbWFudWFsbHkgbW91bnRlZC4gIEZvciBleGFtcGxlOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgo8cHJvbXB0Pn4+PC9wcm9tcHQ+PHVzZXJpbnB1dD51bW91bnQgL2M8L3VzZXJpbnB1dD4KPHByb21wdD5+PjwvcHJvbXB0Pjx1c2VyaW5wdXQ+bW91bnQgLW8gdWlkPTUwMCAtbyBnaWQ9NTAwIC1vIHVtYXNrPTAwMiAvYzwvdXNlcmlucHV0Pgo8cHJvbXB0Pn4+PC9wcm9tcHQ+PHVzZXJpbnB1dD5jZCAvYzwvdXNlcmlucHV0Pgo8cHJvbXB0Pi9jPjwvcHJvbXB0Pjx1c2VyaW5wdXQ+bHMgLWw8L3VzZXJpbnB1dD4KPGNvbXB1dGVyb3V0cHV0Pi1yd3hyd3hyLXggICAxIHNsZSAgICAgIHNsZSAgICAgICAgICAgIDkxIE9jdCAxMCAxNzo1OCBhdXRvZXhlYy5iYXQKLXJ3eHJ3eHIteCAgIDEgc2xlICAgICAgc2xlICAgICAgICAgICAyNDUgT2N0IDEwIDE3OjU4IGNvbmZpZy5zeXMKZHJ3eHJ3eHIteCAgNDEgc2xlICAgICAgc2xlICAgICAgICAgMTYzODQgRGVjIDMwICAxOTk4IHdpbmRvd3M8L2NvbXB1dGVyb3V0cHV0PgogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgd2hpY2ggZ2l2ZXMgInNsZSIgY29tcGxldGUgY29udHJvbCBvdmVyCiAgICAgICAgICA8ZmlsZW5hbWU+L2M8L2ZpbGVuYW1lPi4gIFRoZSBvcHRpb25zIGxpc3RlZCBhYm92ZSBjYW4gYmUKICAgICAgICAgIG1hZGUgcGVybWFuZW50IGJ5IGFkZGluZyB0aGVtIHRvIHRoZQogICAgICAgICAgPGZpbGVuYW1lPi9ldGMvZnN0YWI8L2ZpbGVuYW1lPiBmaWxlOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgo8cHJvbXB0Pn4+PC9wcm9tcHQ+PHVzZXJpbnB1dD5ncmVwIC9jIC9ldGMvZnN0YWI8L3VzZXJpbnB1dD4KPGNvbXB1dGVyb3V0cHV0Pi9kZXYvaGRhMSAgL2MgIHZmYXQgIHVpZD01MDAsZ2lkPTUwMCx1bWFzaz0wMDIsZXhlYyxkZXYsc3VpZCxydyAxIDE8L2NvbXB1dGVyb3V0cHV0PgogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTm90ZSB0aGF0IHRoZSB1bWFzayBvZiA8bGl0ZXJhbD4wMDI8L2xpdGVyYWw+IGlzIGNvbW1vbiBpbgogICAgICAgICAgdGhlIHVzZXIgcHJpdmF0ZSBncm91cCBmaWxlIHBlcm1pc3Npb24gc2NoZW1lLiAgT24gRkFUIGZpbGUKICAgICAgICAgIHN5c3RlbXMgdGhpcyB1bWFzayBhc3N1cmVzIHRoYXQgYWxsIGZpbGVzIGFyZSBmdWxseQogICAgICAgICAgYWNjZXNzaWJsZSBieSBhbGwgdXNlcnMgaW4gdGhlIHNwZWNpZmllZCBncm91cAogICAgICAgICAgKDxsaXRlcmFsPmdpZDwvbGl0ZXJhbD4pLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9zZWN0Mj4KCiAgICAgIDxzZWN0Mj4KICAgICAgICA8dGl0bGU+U2hhZG93aW5nIEZBVCBmaWxlc3lzdGVtczwvdGl0bGU+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTaGFkb3dpbmcgcHJvdmlkZXMgYSBmaW5lciBncmFudWxhcml0eSBvZiBjb250cm9sLiAgUGFydHMgb2YKICAgICAgICAgIHRoZSBvcmlnaW5hbCBGQVQgZmlsZXN5c3RlbSBjYW4gYmUgY29waWVkIHNvIHRoYXQgdGhlCiAgICAgICAgICBhcHBsaWNhdGlvbiBjYW4gc2FmZWx5IHdvcmsgd2l0aCB0aG9zZSBjb3BpZWQgcGFydHMgd2hpbGUKICAgICAgICAgIHRoZSBhcHBsaWNhdGlvbiBjb250aW51ZSB0byBkaXJlY3RseSByZWFkIHRoZSByZW1haW5pbmcKICAgICAgICAgIHBhcnRzLiAgVGhpcyBpcyBkb25lIHdpdGggc3ltYm9saWMgbGlua3MuIEZvciBleGFtcGxlLAogICAgICAgICAgY29uc2lkZXIgYSBzeXN0ZW0gd2hlcmUgYW4gYXBwbGljYXRpb24gbmFtZWQKICAgICAgICAgIDxhcHBsaWNhdGlvbj5BbkFwcDwvYXBwbGljYXRpb24+IG11c3QgYmUgYWJsZSB0byByZWFkIGFuZAogICAgICAgICAgd3JpdGUgdG8gdGhlIDxmaWxlbmFtZT5jOlx3aW5kb3dzPC9maWxlbmFtZT4gYW5kCiAgICAgICAgICA8ZmlsZW5hbWU+YzpcQW5BcHA8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcyBhcyB3ZWxsIGFzIGhhdmUKICAgICAgICAgIHJlYWQgYWNjZXNzIHRvIHRoZSBlbnRpcmUgRkFUIGZpbGVzeXN0ZW0uICBPbiB0aGlzIHN5c3RlbQogICAgICAgICAgdGhlIEZBVCBmaWxlc3lzdGVtIGhhcyBkZWZhdWx0IHBlcm1pc3Npb25zIHdoaWNoIHNob3VsZCBub3QKICAgICAgICAgIGJlIGNoYW5nZWQgZm9yIHNlY3VyaXR5IHJlYXNvbnMgb3IgY2FuIG5vdCBiZSBjaGFuZ2VkIGR1ZSB0bwogICAgICAgICAgbGFjayBvZiByb290IGFjY2Vzcy4gIE9uIHRoaXMgc3lzdGVtIGEgc2hhZG93IGRpcmVjdG9yeQogICAgICAgICAgbWlnaHQgYmUgc2V0IHVwIGluIHRoZSBmb2xsb3dpbmcgbWFubmVyOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgo8cHJvbXB0Pn4+PC9wcm9tcHQ+PHVzZXJpbnB1dD5jZCAvPC91c2VyaW5wdXQ+Cjxwcm9tcHQ+Lz48L3Byb21wdD48dXNlcmlucHV0Pm1rZGlyIGNfc2hhZG93PC91c2VyaW5wdXQ+Cjxwcm9tcHQ+Lz48L3Byb21wdD48dXNlcmlucHV0PmNkIGNfc2hhZG93PC91c2VyaW5wdXQ+Cjxwcm9tcHQ+L2Nfc2hhZG93PjwvcHJvbXB0Pjx1c2VyaW5wdXQ+bG4gLXMgL2NfLyogLjwvdXNlcmlucHV0Pgo8cHJvbXB0Pi9jX3NoYWRvdz48L3Byb21wdD48dXNlcmlucHV0PnJtIHdpbmRvd3MgQW5BcHA8L3VzZXJpbnB1dD4KPHByb21wdD4vY19zaGFkb3c+PC9wcm9tcHQ+PHVzZXJpbnB1dD5jcCAtUiAvY18ve3dpbmRvd3MsQW5BcHB9IC48L3VzZXJpbnB1dD4KPHByb21wdD4vY19zaGFkb3c+PC9wcm9tcHQ+PHVzZXJpbnB1dD5jaG1vZCAtUiA3Nzcgd2luZG93cyBBbkFwcDwvdXNlcmlucHV0Pgo8cHJvbXB0Pi9jX3NoYWRvdz48L3Byb21wdD48dXNlcmlucHV0PnBlcmwgLXAgLWkgLWUgJ3N8L2MkfC9jX3NoYWRvd3xnJyAvdXNyL2xvY2FsL2V0Yy93aW5lLmNvbmY8L3VzZXJpbnB1dD4KICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBhYm92ZSBnaXZlcyBldmVyeW9uZSBjb21wbGV0ZSByZWFkIGFuZCB3cml0ZSBhY2Nlc3MgdG8KICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+d2luZG93czwvZmlsZW5hbWU+IGFuZAogICAgICAgICAgPGZpbGVuYW1lPkFuQXBwPC9maWxlbmFtZT4gZGlyZWN0b3JpZXMgd2hpbGUgb25seSByb290IGhhcwogICAgICAgICAgd3JpdGUgYWNjZXNzIHRvIGFsbCBvdGhlciBkaXJlY3Rvcmllcy4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvc2VjdDI+ICAgIAogICAgPC9zZWN0MT4KCiAgICA8c2VjdDEgaWQ9InNjc2ktc3VwcG9ydCI+CiAgICAgIDx0aXRsZT5TQ1NJIFN1cHBvcnQ8L3RpdGxlPgogICAgICA8cGFyYT4KICAgICAgICB3cml0dGVuIGJ5IEJydWNlIE1pbG5lcjsgQWRkaXRpb25zIGJ5IEFuZHJlYXMgTW9ocgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIChFeHRyYWN0ZWQgZnJvbSA8ZmlsZW5hbWU+d2luZS9kb2N1bWVudGF0aW9uL2FzcGk8L2ZpbGVuYW1lPikKICAgICAgPC9wYXJhPgoKICAgICAgPHBhcmE+CiAgICAgICAgVGhpcyBmaWxlIGRlc2NyaWJlcyBzZXR0aW5nIHVwIHRoZSBXaW5kb3dzIEFTUEkgaW50ZXJmYWNlLgogICAgICA8L3BhcmE+CgogICAgICA8cGFyYT4KICAgICAgICA8d2FybmluZz4KICAgICAgICAgIDx0aXRsZT5XYXJuaW5nL1dhcm5pbmcvV2FybmluZyEhISEhITwvdGl0bGU+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHNjcmVlbj4KVEhJUyBNQVkgVFJBU0ggWU9VUiBTWVNURU0gSUYgVVNFRCBJTkNPUlJFQ1RMWQpUSElTIE1BWSBUUkFTSCBZT1VSIFNZU1RFTSBJRiBVU0VEIENPUlJFQ1RMWQogICAgICAgICAgICA8L3NjcmVlbj4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L3dhcm5pbmc+CiAgICAgIDwvcGFyYT4KCiAgICAgIDxwYXJhPgogICAgICAgIE5vdyB0aGF0IEkgaGF2ZSBzYWlkIHRoYXQuIEFTUEkgaXMgYSBkaXJlY3QgbGluayB0byBTQ1NJIGRldmljZXMgZnJvbQogICAgICAgIHdpbmRvd3MgcHJvZ3JhbXMuIEFTUEkganVzdCBmb3J3YXJkcyB0aGUgU0NTSSBjb21tYW5kcyB0aGF0IHByb2dyYW1zIHNlbmQKICAgICAgICB0byBpdCB0byB0aGUgU0NTSSBidXMuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgSWYgeW91IHVzZSB0aGUgd3Jvbmcgc2NzaSBkZXZpY2UgaW4geW91ciBzZXR1cCBmaWxlLCB5b3UgY2FuIHNlbmQKICAgICAgICBjb21wbGV0ZWx5IGJvZ3VzIGNvbW1hbmRzIHRvIHRoZSB3cm9uZyBkZXZpY2UgLSBBbiBleGFtcGxlIHdvdWxkIGJlCiAgICAgICAgZm9ybWF0dGluZyB5b3VyIGhhcmQgZHJpdmVzIChhc3N1bWluZyB0aGUgZGV2aWNlIGdhdmUgeW91IHBlcm1pc3Npb24gLQogICAgICAgIGlmIHlvdSdyZSBydW5uaW5nIGFzIHJvb3QsIGFsbCBiZXRzIGFyZSBvZmYpLgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIFNvIHBsZWFzZSBtYWtlIHN1cmUgdGhhdCAqKmFsbCoqIFNDU0kgZGV2aWNlcyBub3QgbmVlZGVkIGJ5IHRoZSBwcm9ncmFtIAogICAgICAgIGhhdmUgdGhlaXIgcGVybWlzc2lvbnMgc2V0IGFzIHJlc3RyaWN0ZWQgYXMgcG9zc2libGUgISAKICAgICAgPC9wYXJhPgoKICAgICAgPHBhcmE+CiAgICAgICAgQ29va2Jvb2sgZm9yIHNldHRpbmcgdXAgc2Nhbm5lcjogKEF0IGxlYXN0IGhvdyBtaW5lIGlzIHRvIHdvcmspCiAgICAgIDwvcGFyYT4KCiAgICAgIDxzZWN0Mj4KICAgICAgICA8dGl0bGU+V2luZG93cyByZXF1aXJlbWVudHM8L3RpdGxlPgogICAgICAgIDxvcmRlcmVkbGlzdD4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgVGhlIHNjYW5uZXIgc29mdHdhcmUgbmVlZHMgdG8gdXNlIHRoZSAiQWRhcHRlYyIKICAgICAgICAgICAgICBjb21wYXRpYmxlIGRyaXZlcnMgKEFTUEkpLiBBdCBsZWFzdCB3aXRoIE11c3RlaywgdGhleQogICAgICAgICAgICAgIGFsbG93IHlvdSB0aGUgY2hvaWNlIG9mIHVzaW5nIHRoZSBidWlsdGluIGNhcmQgb3IgdGhlCiAgICAgICAgICAgICAgIkFkYXB0ZWMgKEFIQSkiIGNvbXBhdGlibGUgZHJpdmVycy4gVGhpcyB3aWxsIG5vdCB3b3JrCiAgICAgICAgICAgICAgYW55IG90aGVyIHdheS4gU29mdHdhcmUgdGhhdCBhY2Nlc3NlcyB0aGUgc2Nhbm5lciB2aWEgYQogICAgICAgICAgICAgIERPUyBBU1BJIGRyaXZlciAoZS5nLiBBU1BJMkRPUykgaXMgc3VwcG9ydGVkLCB0b28uIFtBTV0KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgWW91IHByb2JhYmx5IG5lZWQgYSByZWFsIHdpbmRvd3MgaW5zdGFsbCBvZiB0aGUgc29mdHdhcmUKICAgICAgICAgICAgICB0byBzZXQgdGhlIExVTidzL1NDU0kgaWQncyB1cCBjb3JyZWN0bHkuIEknbSBub3QgZXhhY3RseQogICAgICAgICAgICAgIHN1cmUuCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9vcmRlcmVkbGlzdD4KICAgICAgPC9zZWN0Mj4KCiAgICAgIDxzZWN0Mj4KICAgICAgICA8dGl0bGU+TElOVVggcmVxdWlyZW1lbnRzOjwvdGl0bGU+CiAgICAgICAgPG9yZGVyZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBZb3VyIHNjc2kgY2FyZCBtdXN0IGJlIHN1cHBvcnRlZCB1bmRlciBsaW51eC4gVGhpcyB3aWxsCiAgICAgICAgICAgICAgbm90IHdvcmsgd2l0aCBhbiB1bmtub3duIHNjc2kgY2FyZC4gRXZlbiBmb3IgY2hlYXAnbgogICAgICAgICAgICAgIGNyYXBweSAic2Nhbm5lciBvbmx5IiBjb250cm9sbGVycyBzb21lIHNwZWNpYWwgTGludXgKICAgICAgICAgICAgICBkcml2ZXJzIGV4aXN0IG9uIHRoZSBuZXQuCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIENvbXBpbGUgZ2VuZXJpYyBzY3NpIGRyaXZlcnMgaW50byB5b3VyIGtlcm5lbC4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgTGludXggYnkgZGVmYXVsdCB1c2VzIHNtYWxsZXIgc2NzaSBidWZmZXJzIHRoYW4gV2luZG93cy4KICAgICAgICAgICAgICBUaGVyZSBpcyBhIGtlcm5lbCBidWlsZCBkZWZpbmUgPGxpdGVyYWw+U0dfQklHX0JVRkY8L2xpdGVyYWw+IChpbgogICAgICAgICAgICAgIDxmaWxlbmFtZT5zZy5oPC9maWxlbmFtZT4pIHRoYXQgaXMgYnkgZGVmYXVsdCBzZXQgdG9vCiAgICAgICAgICAgICAgbG93LiBUaGUgU0FORSBwcm9qZWN0IHJlY29tbWVuZHMKICAgICAgICAgICAgICA8bGl0ZXJhbD4xMzA1NjA8L2xpdGVyYWw+IGFuZCB0aGlzIHNlZW1zIHRvIHdvcmsganVzdAogICAgICAgICAgICAgIGZpbmUuIFRoaXMgZG9lcyByZXF1aXJlIGEga2VybmVsIHJlYnVpbGQuCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIE1ha2UgdGhlIGRldmljZXMgZm9yIHRoZSBzY2FubmVyIChnZW5lcmljIHNjc2kgZGV2aWNlcykKICAgICAgICAgICAgICAtIGxvb2sgYXQgdGhlIHNjc2kgcHJvZ3JhbW1pbmcgaG93LXRvIGZvciBkZXZpY2UKICAgICAgICAgICAgICBudW1iZXJpbmcuCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIEkgd291bGQgcmVjb21tZW5kIG1ha2luZyB0aGUgc2Nhbm5lciBkZXZpY2Ugd3JpdGFibGUgYnkKICAgICAgICAgICAgICBhIGdyb3VwLiBJIG1hZGUgYSBncm91cCBjYWxsZWQKICAgICAgICAgICAgICA8bGl0ZXJhbD5zY2FubmVyPC9saXRlcmFsPiBhbmQgYWRkZWQgbXlzZWxmIHRvIGl0LgogICAgICAgICAgICAgIFJ1bm5pbmcgYXMgcm9vdCBpbmNyZWFzZXMgeW91ciByaXNrIG9mIHNlbmRpbmcgYmFkIHNjc2kKICAgICAgICAgICAgICBjb21tYW5kcyB0byB0aGUgd3JvbmcgZGV2aWNlLiBXaXRoIGEgcmVndWxhciB1c2VyLCB5b3UKICAgICAgICAgICAgICBhcmUgYmV0dGVyIHByb3RlY3RlZC4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgQWRkIGEgc2NzaSBkZXZpY2UgZW50cnkgZm9yIHlvdXIgcGFydGljdWxhciBzY2FubmVyIHRvCiAgICAgICAgICAgICAgd2luZS5jb25mLiBUaGUgZm9ybWF0IGlzIDxsaXRlcmFsPltzY3NpCiAgICAgICAgICAgICAgICBjQ3RUZERdPC9saXRlcmFsPiB3aGVyZQogICAgICAgICAgICAgIDxsaXRlcmFsPkM9Y29udHJvbGxlcjwvbGl0ZXJhbD4sCiAgICAgICAgICAgICAgPGxpdGVyYWw+VD10YXJnZXQ8L2xpdGVyYWw+LCA8bGl0ZXJhbD5EPUxVTjwvbGl0ZXJhbD4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgSSBzZXQgbWluZSB1cCBhcyAgY29udHJvbGxlciA8bGl0ZXJhbD4wPC9saXRlcmFsPiwKICAgICAgICAgICAgICBUYXJnZXQgPGxpdGVyYWw+NjwvbGl0ZXJhbD4sIExVTiA8bGl0ZXJhbD4wPC9saXRlcmFsPi4KICAgICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CltzY3NpIGMwdDZkMF0KRGV2aWNlPS9kZXYvc2dpCiAgICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgICBZb3VycyB3aWxsIHZhcnkgd2l0aCB5b3VyIHBhcnRpY3VsYXIgU0NTSSBzZXR1cC4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L29yZGVyZWRsaXN0PgogICAgICA8L3NlY3QyPgoKICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT5HZW5lcmFsIEluZm9ybWF0aW9uPC90aXRsZT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBtdXN0ZWsgc2Nhbm5lciBJIGhhdmUgd2FzIHNoaXBwZWQgd2l0aCBhIHBhY2thZ2UKICAgICAgICAgICJpcHBsdXMiLiBUaGlzIHByb2dyYW0gdXNlcyB0aGUgVFdBSU4gZHJpdmVyIHNwZWNpZmljYXRpb24KICAgICAgICAgIHRvIGFjY2VzcyBzY2FubmVycy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICAoVFdBSU4gTUFOQUdFUikKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CmlwcGx1cy5leGUgJmx0Oy0tLT4gKFRXQUlOIElOVEVSRkFDRSkgJmx0Oy0tLT4gKFRXQUlOIERBVEEgU09VUkNFIC4gQVNQSSkgLT4gV0lOQVNQSQogICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvc2VjdDI+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPk5PVEVTL0JVR1M8L3RpdGxlPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIGJpZ2dlc3QgaXMgdGhhdCBpdCBvbmx5IHdvcmtzIHVuZGVyIGxpbnV4IGF0IHRoZSBtb21lbnQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIEFTUEkgY29kZSBoYXMgb25seSBiZWVuIHRlc3RlZCB3aXRoOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBhIE11c3RlayA4MDBTUCB3aXRoIGEgQnVzbG9naWMgY29udHJvbGxlciB1bmRlciBMaW51eCBbQk1dCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIGEgU2llbWVucyBOaXhkb3JmIDkwMzYgd2l0aCBBZGFwdGVjIEFWQS0xNTA1IHVuZGVyIExpbnV4CiAgICAgICAgICAgICAgYWNjZXNzZWQgdmlhIERPU0FTUEkuIE5vdGUgdGhhdCBJIGhhZCBjb2xvciBwcm9ibGVtcywKICAgICAgICAgICAgICB0aG91Z2ggKGJhcmVseSByZWFkYWJsZSByZXN1bHQpIFtBTV0KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgYSBGdWppdHN1IE0yNTEzQSBNTyBkcml2ZSAoNjQwTUIpIHVzaW5nIGdlbmVyaWMgc2NzaQogICAgICAgICAgICAgIGRyaXZlcnMuIEZvcm1hdHRpbmcgYW5kIGVqZWN0aW5nIHdvcmtlZCBwZXJmZWN0bHkuCiAgICAgICAgICAgICAgVGhhbmtzIHRvIFV3ZSBCb25uZXMgZm9yIGFjY2VzcyB0byB0aGUgaGFyZHdhcmUgISBbQU1dCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJIG1ha2Ugbm8gd2FycmFudHkgdG8gdGhlIGFzcGkgY29kZS4gSXQgbWFrZXMgbXkgc2Nhbm5lcgogICAgICAgICAgd29yay4gWW91ciBkZXZpY2VzIG1heSBleHBsb2RlLiBJIGhhdmUgbm8gd2F5IG9mIGRldGVybWluaW5nCiAgICAgICAgICB0aGlzLiBJIHRha2UgemVybyByZXNwb25zaWJpbGl0eSEKICAgICAgICA8L3BhcmE+CiAgICAgIDwvc2VjdDI+CiAgICA8L3NlY3QxPgoKPC9jaGFwdGVyPgoKPCEtLSBLZWVwIHRoaXMgY29tbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCkxvY2FsIHZhcmlhYmxlczoKbW9kZTogc2dtbApzZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZG9jLnNnbWwiICJib29rIiAiY2hhcHRlciIgIiIpCkVuZDoKLS0+Cg==